From 1a8be2d418a38c134e79b99a33f10655e54b438a Mon Sep 17 00:00:00 2001 From: ycy <1418827756@qq.com> Date: Wed, 15 Feb 2023 12:24:03 +0800 Subject: [PATCH 1/4] add sequence_extraction --- examples/sequence_extraction.py | 51 + openks/data/SeRI_mod/eval_pair.dat | 685 ++ openks/data/SeRI_mod/sentence_pair.dat | 1 + openks/data/SeRI_mod/test_pair.dat | 1671 ++++ openks/data/SeRI_mod/train_pair.dat | 6157 ++++++++++++ openks/models/model.py | 79 + openks/models/paddle/causality_extraction.py | 2 +- openks/models/paddle/sequence_extraction.py | 452 + requirements_rest.txt | 10 + .../site-packages/_distutils_hack/__init__.py | 132 + .../site-packages/_distutils_hack/override.py | 1 + venv/Lib/site-packages/easy_install.py | 5 + .../pip-21.3.1.dist-info/INSTALLER | 1 + .../pip-21.3.1.dist-info/LICENSE.txt | 20 + .../pip-21.3.1.dist-info/METADATA | 93 + .../site-packages/pip-21.3.1.dist-info/RECORD | 818 ++ .../site-packages/pip-21.3.1.dist-info/WHEEL | 5 + .../pip-21.3.1.dist-info/entry_points.txt | 5 + .../pip-21.3.1.dist-info/top_level.txt | 1 + .../pip-9.0.1.dist-info/DESCRIPTION.rst | 39 + .../pip-9.0.1.dist-info/INSTALLER | 1 + .../pip-9.0.1.dist-info/METADATA | 69 + .../site-packages/pip-9.0.1.dist-info/RECORD | 501 + .../site-packages/pip-9.0.1.dist-info/WHEEL | 6 + .../pip-9.0.1.dist-info/entry_points.txt | 5 + .../pip-9.0.1.dist-info/metadata.json | 1 + .../pip-9.0.1.dist-info/top_level.txt | 1 + venv/Lib/site-packages/pip/__init__.py | 13 + venv/Lib/site-packages/pip/__main__.py | 31 + .../site-packages/pip/_internal/__init__.py | 19 + .../site-packages/pip/_internal/build_env.py | 293 + venv/Lib/site-packages/pip/_internal/cache.py | 264 + .../pip/_internal/cli/__init__.py | 4 + .../pip/_internal/cli/autocompletion.py | 163 + .../pip/_internal/cli/base_command.py | 214 + .../pip/_internal/cli/cmdoptions.py | 1010 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 70 + .../pip/_internal/cli/main_parser.py | 87 + .../site-packages/pip/_internal/cli/parser.py | 292 + .../pip/_internal/cli/progress_bars.py | 250 + .../pip/_internal/cli/req_command.py | 469 + .../pip/_internal/cli/spinners.py | 157 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 127 + .../pip/_internal/commands/cache.py | 223 + .../pip/_internal/commands/check.py | 53 + .../pip/_internal/commands/completion.py | 96 + .../pip/_internal/commands/configuration.py | 266 + .../pip/_internal/commands/debug.py | 202 + .../pip/_internal/commands/download.py | 139 + .../pip/_internal/commands/freeze.py | 97 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 138 + .../pip/_internal/commands/install.py | 770 ++ .../pip/_internal/commands/list.py | 361 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 235 + .../pip/_internal/commands/uninstall.py | 105 + .../pip/_internal/commands/wheel.py | 177 + .../pip/_internal/configuration.py | 367 + .../pip/_internal/distributions/__init__.py | 21 + .../pip/_internal/distributions/base.py | 36 + .../pip/_internal/distributions/installed.py | 22 + .../pip/_internal/distributions/sdist.py | 129 + .../pip/_internal/distributions/wheel.py | 31 + .../site-packages/pip/_internal/exceptions.py | 402 + .../pip/_internal/index/__init__.py | 2 + .../pip/_internal/index/collector.py | 536 ++ .../pip/_internal/index/package_finder.py | 993 ++ .../pip/_internal/index/sources.py | 224 + .../pip/_internal/locations/__init__.py | 446 + .../pip/_internal/locations/_distutils.py | 169 + .../pip/_internal/locations/_sysconfig.py | 219 + .../pip/_internal/locations/base.py | 52 + venv/Lib/site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 51 + .../pip/_internal/metadata/base.py | 330 + .../pip/_internal/metadata/pkg_resources.py | 146 + .../pip/_internal/models/__init__.py | 2 + .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 220 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../pip/_internal/models/link.py | 288 + .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 129 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 89 + .../pip/_internal/network/__init__.py | 2 + .../pip/_internal/network/auth.py | 323 + .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 184 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 454 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../pip/_internal/operations/check.py | 149 + .../pip/_internal/operations/freeze.py | 254 + .../_internal/operations/install/__init__.py | 2 + .../operations/install/editable_legacy.py | 46 + .../_internal/operations/install/legacy.py | 125 + .../pip/_internal/operations/install/wheel.py | 738 ++ .../pip/_internal/operations/prepare.py | 632 ++ .../site-packages/pip/_internal/pyproject.py | 183 + .../pip/_internal/req/__init__.py | 94 + .../pip/_internal/req/constructors.py | 466 + .../pip/_internal/req/req_file.py | 536 ++ .../pip/_internal/req/req_install.py | 891 ++ .../pip/_internal/req/req_set.py | 189 + .../pip/_internal/req/req_tracker.py | 124 + .../pip/_internal/req/req_uninstall.py | 633 ++ .../pip/_internal/resolution/__init__.py | 0 .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../_internal/resolution/legacy/resolver.py | 467 + .../resolution/resolvelib/__init__.py | 0 .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 540 ++ .../resolution/resolvelib/factory.py | 701 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 215 + .../resolution/resolvelib/reporter.py | 68 + .../resolution/resolvelib/requirements.py | 166 + .../resolution/resolvelib/resolver.py | 251 + .../pip/_internal/self_outdated_check.py | 182 + .../pip/_internal/utils/__init__.py | 0 .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/distutils_args.py | 42 + .../pip/_internal/utils/egg_link.py | 75 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 27 + .../pip/_internal/utils/filesystem.py | 182 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 144 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 358 + .../site-packages/pip/_internal/utils/misc.py | 689 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 84 + .../pip/_internal/utils/parallel.py | 103 + .../pip/_internal/utils/pkg_resources.py | 33 + .../pip/_internal/utils/setuptools_build.py | 167 + .../pip/_internal/utils/subprocess.py | 289 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 258 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 182 + .../pip/_internal/vcs/__init__.py | 15 + .../site-packages/pip/_internal/vcs/bazaar.py | 93 + .../site-packages/pip/_internal/vcs/git.py | 513 + .../pip/_internal/vcs/mercurial.py | 153 + .../pip/_internal/vcs/subversion.py | 318 + .../pip/_internal/vcs/versioncontrol.py | 693 ++ .../pip/_internal/wheel_builder.py | 375 + .../Lib/site-packages/pip/_vendor/__init__.py | 111 + venv/Lib/site-packages/pip/_vendor/appdirs.py | 552 ++ .../pip/_vendor/cachecontrol/__init__.py | 11 + .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/cache.py | 39 + .../_vendor/cachecontrol/caches/__init__.py | 2 + .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/redis_cache.py | 33 + .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/controller.py | 376 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 188 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 12 + .../pip/_vendor/certifi/cacert.pem | 4257 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 76 + .../pip/_vendor/chardet/__init__.py | 83 + .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 107 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../pip/_vendor/chardet/cli/chardetect.py | 84 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 36 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4650 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4398 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4383 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4650 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5718 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4383 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4383 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../pip/_vendor/chardet/metadata/languages.py | 310 + .../pip/_vendor/chardet/sbcharsetprober.py | 145 + .../pip/_vendor/chardet/sbcsgroupprober.py | 83 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 258 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../pip/_vendor/distlib/__init__.py | 23 + .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 764 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 786 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 +++++ .../pip/_vendor/distlib/compat.py | 1122 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 509 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 147 + .../pip/_vendor/distlib/metadata.py | 1058 +++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 429 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 96768 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 180736 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 105984 bytes .../site-packages/pip/_vendor/distlib/util.py | 1969 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 90112 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 166400 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1053 ++ venv/Lib/site-packages/pip/_vendor/distro.py | 1386 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../pip/_vendor/html5lib/_ihatexml.py | 289 + .../pip/_vendor/html5lib/_inputstream.py | 918 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1735 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 5 + .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/datrie.py | 44 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 159 + .../pip/_vendor/html5lib/constants.py | 2946 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 916 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2795 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 343 + .../html5lib/treebuilders/etree_lxml.py | 392 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 131 + .../html5lib/treewalkers/etree_lxml.py | 215 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 44 + .../site-packages/pip/_vendor/idna/codec.py | 117 + .../site-packages/pip/_vendor/idna/compat.py | 16 + .../site-packages/pip/_vendor/idna/core.py | 409 + .../pip/_vendor/idna/idnadata.py | 2050 ++++ .../pip/_vendor/idna/intranges.py | 58 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8438 +++++++++++++++++ .../site-packages/pip/_vendor/ipaddress.py | 2425 +++++ .../pip/_vendor/lockfile/__init__.py | 347 + .../pip/_vendor/lockfile/linklockfile.py | 73 + .../pip/_vendor/lockfile/mkdirlockfile.py | 84 + .../pip/_vendor/lockfile/pidlockfile.py | 190 + .../pip/_vendor/lockfile/sqlitelockfile.py | 156 + .../pip/_vendor/lockfile/symlinklockfile.py | 70 + .../pip/_vendor/msgpack/__init__.py | 54 + .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1087 +++ .../site-packages/pip/_vendor/ordereddict.py | 127 + .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../pip/_vendor/packaging/_compat.py | 30 + .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 67 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 828 ++ .../pip/_vendor/packaging/tags.py | 484 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pep517/__init__.py | 6 + .../site-packages/pip/_vendor/pep517/build.py | 127 + .../site-packages/pip/_vendor/pep517/check.py | 207 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 51 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 171 + .../pip/_vendor/pep517/in_process/__init__.py | 17 + .../_vendor/pep517/in_process/_in_process.py | 363 + .../site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 375 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/platformdirs/__init__.py | 329 + .../pip/_vendor/platformdirs/__main__.py | 44 + .../pip/_vendor/platformdirs/android.py | 117 + .../pip/_vendor/platformdirs/api.py | 155 + .../pip/_vendor/platformdirs/macos.py | 62 + .../pip/_vendor/platformdirs/unix.py | 180 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 180 + .../pip/_vendor/progress/__init__.py | 189 + .../site-packages/pip/_vendor/progress/bar.py | 93 + .../pip/_vendor/progress/colors.py | 79 + .../pip/_vendor/progress/counter.py | 47 + .../pip/_vendor/progress/helpers.py | 91 + .../pip/_vendor/progress/spinner.py | 45 + .../site-packages/pip/_vendor/pyparsing.py | 7107 ++++++++++++++ .../site-packages/pip/_vendor/re-vendor.py | 34 + .../pip/_vendor/requests/__init__.py | 154 + .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 533 ++ .../site-packages/pip/_vendor/requests/api.py | 159 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/cacert.pem | 5616 +++++++++++ .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 76 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 127 + .../pip/_vendor/requests/help.py | 132 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 966 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/packages/__init__.py | 36 + .../requests/packages/chardet/__init__.py | 32 + .../requests/packages/chardet/big5freq.py | 925 ++ .../requests/packages/chardet/big5prober.py | 42 + .../requests/packages/chardet/chardetect.py | 80 + .../packages/chardet/chardistribution.py | 231 + .../packages/chardet/charsetgroupprober.py | 106 + .../packages/chardet/charsetprober.py | 62 + .../packages/chardet/codingstatemachine.py | 61 + .../requests/packages/chardet/compat.py | 34 + .../requests/packages/chardet/constants.py | 39 + .../requests/packages/chardet/cp949prober.py | 44 + .../requests/packages/chardet/escprober.py | 86 + .../requests/packages/chardet/escsm.py | 242 + .../requests/packages/chardet/eucjpprober.py | 90 + .../requests/packages/chardet/euckrfreq.py | 596 ++ .../requests/packages/chardet/euckrprober.py | 42 + .../requests/packages/chardet/euctwfreq.py | 428 + .../requests/packages/chardet/euctwprober.py | 41 + .../requests/packages/chardet/gb2312freq.py | 472 + .../requests/packages/chardet/gb2312prober.py | 41 + .../requests/packages/chardet/hebrewprober.py | 283 + .../requests/packages/chardet/jisfreq.py | 569 ++ .../requests/packages/chardet/jpcntx.py | 227 + .../packages/chardet/langbulgarianmodel.py | 229 + .../packages/chardet/langcyrillicmodel.py | 329 + .../packages/chardet/langgreekmodel.py | 225 + .../packages/chardet/langhebrewmodel.py | 201 + .../packages/chardet/langhungarianmodel.py | 225 + .../packages/chardet/langthaimodel.py | 200 + .../requests/packages/chardet/latin1prober.py | 139 + .../packages/chardet/mbcharsetprober.py | 86 + .../packages/chardet/mbcsgroupprober.py | 54 + .../requests/packages/chardet/mbcssm.py | 572 ++ .../packages/chardet/sbcharsetprober.py | 120 + .../packages/chardet/sbcsgroupprober.py | 69 + .../requests/packages/chardet/sjisprober.py | 91 + .../packages/chardet/universaldetector.py | 170 + .../requests/packages/chardet/utf8prober.py | 76 + .../requests/packages/urllib3/__init__.py | 96 + .../requests/packages/urllib3/_collections.py | 324 + .../requests/packages/urllib3/connection.py | 330 + .../packages/urllib3/connectionpool.py | 866 ++ .../packages/urllib3/contrib/__init__.py | 0 .../packages/urllib3/contrib/appengine.py | 231 + .../packages/urllib3/contrib/ntlmpool.py | 115 + .../packages/urllib3/contrib/pyopenssl.py | 358 + .../packages/urllib3/contrib/socks.py | 172 + .../requests/packages/urllib3/exceptions.py | 209 + .../requests/packages/urllib3/fields.py | 178 + .../requests/packages/urllib3/filepost.py | 94 + .../packages/urllib3/packages/__init__.py | 5 + .../packages/urllib3/packages/ordered_dict.py | 259 + .../requests/packages/urllib3/packages/six.py | 868 ++ .../packages/ssl_match_hostname/__init__.py | 13 + .../ssl_match_hostname/_implementation.py | 105 + .../requests/packages/urllib3/poolmanager.py | 367 + .../requests/packages/urllib3/request.py | 151 + .../requests/packages/urllib3/response.py | 530 ++ .../packages/urllib3/util/__init__.py | 46 + .../packages/urllib3/util/connection.py | 144 + .../requests/packages/urllib3/util/request.py | 72 + .../packages/urllib3/util/response.py | 74 + .../requests/packages/urllib3/util/retry.py | 300 + .../requests/packages/urllib3/util/ssl_.py | 320 + .../requests/packages/urllib3/util/timeout.py | 242 + .../requests/packages/urllib3/util/url.py | 217 + .../pip/_vendor/requests/sessions.py | 781 ++ .../pip/_vendor/requests/status_codes.py | 123 + .../pip/_vendor/requests/structures.py | 105 + .../pip/_vendor/requests/utils.py | 1013 ++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 37 + .../pip/_vendor/resolvelib/resolvers.py | 483 + .../pip/_vendor/resolvelib/structs.py | 165 + .../Lib/site-packages/pip/_vendor/retrying.py | 267 + venv/Lib/site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 517 + .../pip/_vendor/tenacity/_asyncio.py | 92 + .../pip/_vendor/tenacity/_utils.py | 68 + .../pip/_vendor/tenacity/after.py | 46 + .../pip/_vendor/tenacity/before.py | 41 + .../pip/_vendor/tenacity/before_sleep.py | 58 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 213 + .../pip/_vendor/tenacity/stop.py | 96 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 191 + .../pip/_vendor/tomli/__init__.py | 6 + .../pip/_vendor/tomli/_parser.py | 703 ++ .../site-packages/pip/_vendor/tomli/_re.py | 83 + .../pip/_vendor/urllib3/__init__.py | 85 + .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 569 ++ .../pip/_vendor/urllib3/connectionpool.py | 1078 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 511 + .../urllib3/contrib/securetransport.py | 922 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/makefile.py | 51 + .../pip/_vendor/urllib3/packages/six.py | 1077 +++ .../packages/ssl_match_hostname/__init__.py | 24 + .../ssl_match_hostname/_implementation.py | 160 + .../pip/_vendor/urllib3/poolmanager.py | 536 ++ .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 821 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../pip/_vendor/urllib3/util/connection.py | 150 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 143 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 602 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 268 + .../pip/_vendor/urllib3/util/url.py | 432 + .../pip/_vendor/urllib3/util/wait.py | 153 + venv/Lib/site-packages/pip/_vendor/vendor.txt | 22 + .../pip/_vendor/webencodings/__init__.py | 342 + .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + venv/Lib/site-packages/pip/basecommand.py | 337 + venv/Lib/site-packages/pip/baseparser.py | 293 + venv/Lib/site-packages/pip/cmdoptions.py | 633 ++ .../site-packages/pip/commands/__init__.py | 86 + venv/Lib/site-packages/pip/commands/check.py | 39 + .../site-packages/pip/commands/completion.py | 81 + .../site-packages/pip/commands/download.py | 212 + venv/Lib/site-packages/pip/commands/freeze.py | 87 + venv/Lib/site-packages/pip/commands/hash.py | 57 + venv/Lib/site-packages/pip/commands/help.py | 35 + .../Lib/site-packages/pip/commands/install.py | 437 + venv/Lib/site-packages/pip/commands/list.py | 337 + venv/Lib/site-packages/pip/commands/search.py | 133 + venv/Lib/site-packages/pip/commands/show.py | 154 + .../site-packages/pip/commands/uninstall.py | 76 + venv/Lib/site-packages/pip/commands/wheel.py | 208 + venv/Lib/site-packages/pip/compat/__init__.py | 164 + .../site-packages/pip/compat/dictconfig.py | 565 ++ venv/Lib/site-packages/pip/download.py | 906 ++ venv/Lib/site-packages/pip/exceptions.py | 244 + venv/Lib/site-packages/pip/index.py | 1102 +++ venv/Lib/site-packages/pip/locations.py | 182 + venv/Lib/site-packages/pip/models/__init__.py | 4 + venv/Lib/site-packages/pip/models/index.py | 16 + .../site-packages/pip/operations/__init__.py | 0 .../Lib/site-packages/pip/operations/check.py | 49 + .../site-packages/pip/operations/freeze.py | 132 + venv/Lib/site-packages/pip/pep425tags.py | 324 + venv/Lib/site-packages/pip/py.typed | 4 + venv/Lib/site-packages/pip/req/__init__.py | 10 + venv/Lib/site-packages/pip/req/req_file.py | 342 + venv/Lib/site-packages/pip/req/req_install.py | 1204 +++ venv/Lib/site-packages/pip/req/req_set.py | 798 ++ .../site-packages/pip/req/req_uninstall.py | 195 + venv/Lib/site-packages/pip/status_codes.py | 8 + venv/Lib/site-packages/pip/utils/__init__.py | 852 ++ venv/Lib/site-packages/pip/utils/appdirs.py | 248 + venv/Lib/site-packages/pip/utils/build.py | 42 + .../site-packages/pip/utils/deprecation.py | 76 + venv/Lib/site-packages/pip/utils/encoding.py | 31 + .../Lib/site-packages/pip/utils/filesystem.py | 28 + venv/Lib/site-packages/pip/utils/glibc.py | 81 + venv/Lib/site-packages/pip/utils/hashes.py | 92 + venv/Lib/site-packages/pip/utils/logging.py | 130 + venv/Lib/site-packages/pip/utils/outdated.py | 162 + venv/Lib/site-packages/pip/utils/packaging.py | 63 + .../pip/utils/setuptools_build.py | 8 + venv/Lib/site-packages/pip/utils/ui.py | 344 + venv/Lib/site-packages/pip/vcs/__init__.py | 366 + venv/Lib/site-packages/pip/vcs/bazaar.py | 116 + venv/Lib/site-packages/pip/vcs/git.py | 300 + venv/Lib/site-packages/pip/vcs/mercurial.py | 103 + venv/Lib/site-packages/pip/vcs/subversion.py | 269 + venv/Lib/site-packages/pip/wheel.py | 853 ++ .../site-packages/pkg_resources/__init__.py | 3303 +++++++ .../pkg_resources/_vendor/__init__.py | 0 .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 26 + .../_vendor/packaging/__init__.py | 25 + .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../pkg_resources/_vendor/packaging/tags.py | 484 + .../pkg_resources/_vendor/packaging/utils.py | 136 + .../_vendor/packaging/version.py | 504 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/_vendor/six.py | 868 ++ .../pkg_resources/extern/__init__.py | 73 + .../data/my-test-package-source/setup.py | 6 + .../DESCRIPTION.rst | 243 + .../setuptools-28.8.0.dist-info/INSTALLER | 1 + .../setuptools-28.8.0.dist-info/METADATA | 272 + .../setuptools-28.8.0.dist-info/RECORD | 143 + .../setuptools-28.8.0.dist-info/WHEEL | 6 + .../dependency_links.txt | 2 + .../entry_points.txt | 63 + .../setuptools-28.8.0.dist-info/metadata.json | 1 + .../setuptools-28.8.0.dist-info/top_level.txt | 3 + .../setuptools-28.8.0.dist-info/zip-safe | 1 + .../setuptools-59.6.0.dist-info/INSTALLER | 1 + .../setuptools-59.6.0.dist-info/LICENSE | 19 + .../setuptools-59.6.0.dist-info/METADATA | 124 + .../setuptools-59.6.0.dist-info/RECORD | 297 + .../setuptools-59.6.0.dist-info/WHEEL | 5 + .../entry_points.txt | 56 + .../setuptools-59.6.0.dist-info/top_level.txt | 3 + venv/Lib/site-packages/setuptools/__init__.py | 242 + .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 24 + .../setuptools/_distutils/_msvccompiler.py | 561 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1123 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 755 ++ .../setuptools/_distutils/command/build_py.py | 392 + .../_distutils/command/build_scripts.py | 152 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 721 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 84 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../_distutils/command/py37compat.py | 30 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 249 + .../setuptools/_distutils/cygwinccompiler.py | 425 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 355 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/py35compat.py | 19 + .../setuptools/_distutils/py38compat.py | 7 + .../setuptools/_distutils/spawn.py | 106 + .../setuptools/_distutils/sysconfig.py | 601 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 325 + .../setuptools/_distutils/util.py | 548 ++ .../setuptools/_distutils/version.py | 363 + .../setuptools/_distutils/versionpredicate.py | 169 + venv/Lib/site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../_vendor/more_itertools/__init__.py | 4 + .../setuptools/_vendor/more_itertools/more.py | 3825 ++++++++ .../_vendor/more_itertools/recipes.py | 620 ++ .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 26 + .../setuptools/_vendor/packaging/__init__.py | 25 + .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../setuptools/_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../setuptools/_vendor/packaging/tags.py | 484 + .../setuptools/_vendor/packaging/utils.py | 136 + .../setuptools/_vendor/packaging/version.py | 504 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/archive_util.py | 205 + .../site-packages/setuptools/build_meta.py | 290 + venv/Lib/site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes venv/Lib/site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli-arm64.exe | Bin 0 -> 137216 bytes venv/Lib/site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 8 + .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 456 + .../setuptools/command/bdist_rpm.py | 40 + .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 328 + .../setuptools/command/build_py.py | 242 + .../setuptools/command/develop.py | 193 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2299 +++++ .../setuptools/command/egg_info.py | 755 ++ .../setuptools/command/install.py | 132 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 69 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 134 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 64 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 196 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 252 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 202 + venv/Lib/site-packages/setuptools/config.py | 751 ++ venv/Lib/site-packages/setuptools/dep_util.py | 25 + venv/Lib/site-packages/setuptools/depends.py | 176 + venv/Lib/site-packages/setuptools/dist.py | 1156 +++ venv/Lib/site-packages/setuptools/errors.py | 40 + .../Lib/site-packages/setuptools/extension.py | 55 + .../setuptools/extern/__init__.py | 73 + venv/Lib/site-packages/setuptools/glob.py | 167 + venv/Lib/site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes venv/Lib/site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui-arm64.exe | Bin 0 -> 137728 bytes venv/Lib/site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../Lib/site-packages/setuptools/installer.py | 104 + venv/Lib/site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/lib2to3_ex.py | 62 + venv/Lib/site-packages/setuptools/monkey.py | 177 + venv/Lib/site-packages/setuptools/msvc.py | 1805 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1127 +++ .../site-packages/setuptools/py26compat.py | 31 + .../site-packages/setuptools/py27compat.py | 18 + .../site-packages/setuptools/py31compat.py | 56 + .../site-packages/setuptools/py34compat.py | 13 + venv/Lib/site-packages/setuptools/sandbox.py | 530 ++ .../setuptools/script (dev).tmpl | 6 + venv/Lib/site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/site-patch.py | 74 + .../site-packages/setuptools/ssl_support.py | 250 + .../site-packages/setuptools/unicode_utils.py | 42 + venv/Lib/site-packages/setuptools/version.py | 6 + venv/Lib/site-packages/setuptools/wheel.py | 213 + .../setuptools/windows_support.py | 29 + venv/Lib/tcl8.6/init.tcl | 818 ++ venv/Scripts/Activate.ps1 | 51 + venv/Scripts/activate | 76 + venv/Scripts/activate.bat | 32 + venv/Scripts/deactivate.bat | 21 + venv/Scripts/easy_install-3.6.exe | Bin 0 -> 98190 bytes venv/Scripts/easy_install.exe | Bin 0 -> 98190 bytes venv/Scripts/pip.exe | Bin 0 -> 106370 bytes venv/Scripts/pip3.6.exe | Bin 0 -> 106370 bytes venv/Scripts/pip3.exe | Bin 0 -> 106370 bytes venv/Scripts/python.exe | Bin 0 -> 100504 bytes venv/Scripts/python3.dll | Bin 0 -> 58520 bytes venv/Scripts/python36.dll | Bin 0 -> 3610776 bytes venv/Scripts/pythonw.exe | Bin 0 -> 98968 bytes venv/Scripts/sqlite3.dll | Bin 0 -> 1153176 bytes venv/Scripts/tcl86t.dll | Bin 0 -> 1666048 bytes venv/Scripts/tk86t.dll | Bin 0 -> 1967104 bytes venv/Scripts/vcruntime140.dll | Bin 0 -> 87888 bytes venv/pyvenv.cfg | 3 + 757 files changed, 260986 insertions(+), 1 deletion(-) create mode 100644 examples/sequence_extraction.py create mode 100644 openks/data/SeRI_mod/eval_pair.dat create mode 100644 openks/data/SeRI_mod/sentence_pair.dat create mode 100644 openks/data/SeRI_mod/test_pair.dat create mode 100644 openks/data/SeRI_mod/train_pair.dat create mode 100644 openks/models/paddle/sequence_extraction.py create mode 100644 requirements_rest.txt create mode 100644 venv/Lib/site-packages/_distutils_hack/__init__.py create mode 100644 venv/Lib/site-packages/_distutils_hack/override.py create mode 100644 venv/Lib/site-packages/easy_install.py create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/LICENSE.txt create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/METADATA create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/RECORD create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/pip-21.3.1.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/METADATA create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/RECORD create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/metadata.json create mode 100644 venv/Lib/site-packages/pip-9.0.1.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/pip/__init__.py create mode 100644 venv/Lib/site-packages/pip/__main__.py create mode 100644 venv/Lib/site-packages/pip/_internal/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/build_env.py create mode 100644 venv/Lib/site-packages/pip/_internal/cache.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/base_command.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/command_context.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/main.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/main_parser.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/parser.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/req_command.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/spinners.py create mode 100644 venv/Lib/site-packages/pip/_internal/cli/status_codes.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/cache.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/check.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/completion.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/configuration.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/debug.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/download.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/freeze.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/hash.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/help.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/index.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/install.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/list.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/search.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/show.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/uninstall.py create mode 100644 venv/Lib/site-packages/pip/_internal/commands/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/configuration.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/installed.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/sdist.py create mode 100644 venv/Lib/site-packages/pip/_internal/distributions/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/collector.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/package_finder.py create mode 100644 venv/Lib/site-packages/pip/_internal/index/sources.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/_distutils.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 venv/Lib/site-packages/pip/_internal/locations/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/main.py create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/candidate.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/direct_url.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/format_control.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/index.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/link.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/scheme.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/search_scope.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/target_python.py create mode 100644 venv/Lib/site-packages/pip/_internal/models/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/auth.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/cache.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/download.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/session.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/utils.py create mode 100644 venv/Lib/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/check.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/freeze.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/operations/prepare.py create mode 100644 venv/Lib/site-packages/pip/_internal/pyproject.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/constructors.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_file.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_install.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_set.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_tracker.py create mode 100644 venv/Lib/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 venv/Lib/site-packages/pip/_internal/self_outdated_check.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/_log.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/appdirs.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/compat.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/datetime.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/deprecation.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/egg_link.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/encoding.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/filesystem.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/filetypes.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/glibc.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/hashes.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/logging.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/misc.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/models.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/packaging.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/parallel.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/subprocess.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/unpacking.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/urls.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 venv/Lib/site-packages/pip/_internal/utils/wheel.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/__init__.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/git.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/subversion.py create mode 100644 venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 venv/Lib/site-packages/pip/_internal/wheel_builder.py create mode 100644 venv/Lib/site-packages/pip/_vendor/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/appdirs.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 venv/Lib/site-packages/pip/_vendor/certifi/core.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/enums.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/chardet/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/win32.py create mode 100644 venv/Lib/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/database.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/index.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/locators.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/markers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/resources.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/util.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 venv/Lib/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/distro.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/codec.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/core.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/intranges.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/package_data.py create mode 100644 venv/Lib/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 venv/Lib/site-packages/pip/_vendor/ipaddress.py create mode 100644 venv/Lib/site-packages/pip/_vendor/lockfile/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/lockfile/linklockfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/lockfile/mkdirlockfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/lockfile/pidlockfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/lockfile/sqlitelockfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/lockfile/symlinklockfile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 venv/Lib/site-packages/pip/_vendor/ordereddict.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/markers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/tags.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/packaging/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/build.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/check.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/in_process/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/in_process/_in_process.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/meta.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/bar.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/colors.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/counter.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/helpers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/progress/spinner.py create mode 100644 venv/Lib/site-packages/pip/_vendor/pyparsing.py create mode 100644 venv/Lib/site-packages/pip/_vendor/re-vendor.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/__version__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/adapters.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/api.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/auth.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/cacert.pem create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/certs.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/cookies.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/help.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/hooks.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/models.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/compat.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/constants.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/escprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/escsm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/connection.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/fields.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/request.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/response.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/sessions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/structures.py create mode 100644 venv/Lib/site-packages/pip/_vendor/requests/utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 venv/Lib/site-packages/pip/_vendor/retrying.py create mode 100644 venv/Lib/site-packages/pip/_vendor/six.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/after.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/before.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 venv/Lib/site-packages/pip/_vendor/tomli/_re.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/request.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/response.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 venv/Lib/site-packages/pip/_vendor/vendor.txt create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 venv/Lib/site-packages/pip/basecommand.py create mode 100644 venv/Lib/site-packages/pip/baseparser.py create mode 100644 venv/Lib/site-packages/pip/cmdoptions.py create mode 100644 venv/Lib/site-packages/pip/commands/__init__.py create mode 100644 venv/Lib/site-packages/pip/commands/check.py create mode 100644 venv/Lib/site-packages/pip/commands/completion.py create mode 100644 venv/Lib/site-packages/pip/commands/download.py create mode 100644 venv/Lib/site-packages/pip/commands/freeze.py create mode 100644 venv/Lib/site-packages/pip/commands/hash.py create mode 100644 venv/Lib/site-packages/pip/commands/help.py create mode 100644 venv/Lib/site-packages/pip/commands/install.py create mode 100644 venv/Lib/site-packages/pip/commands/list.py create mode 100644 venv/Lib/site-packages/pip/commands/search.py create mode 100644 venv/Lib/site-packages/pip/commands/show.py create mode 100644 venv/Lib/site-packages/pip/commands/uninstall.py create mode 100644 venv/Lib/site-packages/pip/commands/wheel.py create mode 100644 venv/Lib/site-packages/pip/compat/__init__.py create mode 100644 venv/Lib/site-packages/pip/compat/dictconfig.py create mode 100644 venv/Lib/site-packages/pip/download.py create mode 100644 venv/Lib/site-packages/pip/exceptions.py create mode 100644 venv/Lib/site-packages/pip/index.py create mode 100644 venv/Lib/site-packages/pip/locations.py create mode 100644 venv/Lib/site-packages/pip/models/__init__.py create mode 100644 venv/Lib/site-packages/pip/models/index.py create mode 100644 venv/Lib/site-packages/pip/operations/__init__.py create mode 100644 venv/Lib/site-packages/pip/operations/check.py create mode 100644 venv/Lib/site-packages/pip/operations/freeze.py create mode 100644 venv/Lib/site-packages/pip/pep425tags.py create mode 100644 venv/Lib/site-packages/pip/py.typed create mode 100644 venv/Lib/site-packages/pip/req/__init__.py create mode 100644 venv/Lib/site-packages/pip/req/req_file.py create mode 100644 venv/Lib/site-packages/pip/req/req_install.py create mode 100644 venv/Lib/site-packages/pip/req/req_set.py create mode 100644 venv/Lib/site-packages/pip/req/req_uninstall.py create mode 100644 venv/Lib/site-packages/pip/status_codes.py create mode 100644 venv/Lib/site-packages/pip/utils/__init__.py create mode 100644 venv/Lib/site-packages/pip/utils/appdirs.py create mode 100644 venv/Lib/site-packages/pip/utils/build.py create mode 100644 venv/Lib/site-packages/pip/utils/deprecation.py create mode 100644 venv/Lib/site-packages/pip/utils/encoding.py create mode 100644 venv/Lib/site-packages/pip/utils/filesystem.py create mode 100644 venv/Lib/site-packages/pip/utils/glibc.py create mode 100644 venv/Lib/site-packages/pip/utils/hashes.py create mode 100644 venv/Lib/site-packages/pip/utils/logging.py create mode 100644 venv/Lib/site-packages/pip/utils/outdated.py create mode 100644 venv/Lib/site-packages/pip/utils/packaging.py create mode 100644 venv/Lib/site-packages/pip/utils/setuptools_build.py create mode 100644 venv/Lib/site-packages/pip/utils/ui.py create mode 100644 venv/Lib/site-packages/pip/vcs/__init__.py create mode 100644 venv/Lib/site-packages/pip/vcs/bazaar.py create mode 100644 venv/Lib/site-packages/pip/vcs/git.py create mode 100644 venv/Lib/site-packages/pip/vcs/mercurial.py create mode 100644 venv/Lib/site-packages/pip/vcs/subversion.py create mode 100644 venv/Lib/site-packages/pip/wheel.py create mode 100644 venv/Lib/site-packages/pkg_resources/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_manylinux.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_musllinux.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 venv/Lib/site-packages/pkg_resources/_vendor/six.py create mode 100644 venv/Lib/site-packages/pkg_resources/extern/__init__.py create mode 100644 venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/DESCRIPTION.rst create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/dependency_links.txt create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/metadata.json create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/setuptools-28.8.0.dist-info/zip-safe create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/entry_points.txt create mode 100644 venv/Lib/site-packages/setuptools-59.6.0.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/setuptools/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_deprecation_warning.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/archive_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/cmd.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/check.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/clean.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/config.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/register.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/command/upload.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/config.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/core.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/debug.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/dep_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/dir_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/dist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/errors.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/extension.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/file_util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/filelist.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/log.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/py35compat.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/py38compat.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/spawn.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/text_file.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/util.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/version.py create mode 100644 venv/Lib/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 venv/Lib/site-packages/setuptools/_imp.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 venv/Lib/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 venv/Lib/site-packages/setuptools/archive_util.py create mode 100644 venv/Lib/site-packages/setuptools/build_meta.py create mode 100644 venv/Lib/site-packages/setuptools/cli-32.exe create mode 100644 venv/Lib/site-packages/setuptools/cli-64.exe create mode 100644 venv/Lib/site-packages/setuptools/cli-arm64.exe create mode 100644 venv/Lib/site-packages/setuptools/cli.exe create mode 100644 venv/Lib/site-packages/setuptools/command/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/command/alias.py create mode 100644 venv/Lib/site-packages/setuptools/command/bdist_egg.py create mode 100644 venv/Lib/site-packages/setuptools/command/bdist_rpm.py create mode 100644 venv/Lib/site-packages/setuptools/command/bdist_wininst.py create mode 100644 venv/Lib/site-packages/setuptools/command/build_clib.py create mode 100644 venv/Lib/site-packages/setuptools/command/build_ext.py create mode 100644 venv/Lib/site-packages/setuptools/command/build_py.py create mode 100644 venv/Lib/site-packages/setuptools/command/develop.py create mode 100644 venv/Lib/site-packages/setuptools/command/dist_info.py create mode 100644 venv/Lib/site-packages/setuptools/command/easy_install.py create mode 100644 venv/Lib/site-packages/setuptools/command/egg_info.py create mode 100644 venv/Lib/site-packages/setuptools/command/install.py create mode 100644 venv/Lib/site-packages/setuptools/command/install_egg_info.py create mode 100644 venv/Lib/site-packages/setuptools/command/install_lib.py create mode 100644 venv/Lib/site-packages/setuptools/command/install_scripts.py create mode 100644 venv/Lib/site-packages/setuptools/command/launcher manifest.xml create mode 100644 venv/Lib/site-packages/setuptools/command/py36compat.py create mode 100644 venv/Lib/site-packages/setuptools/command/register.py create mode 100644 venv/Lib/site-packages/setuptools/command/rotate.py create mode 100644 venv/Lib/site-packages/setuptools/command/saveopts.py create mode 100644 venv/Lib/site-packages/setuptools/command/sdist.py create mode 100644 venv/Lib/site-packages/setuptools/command/setopt.py create mode 100644 venv/Lib/site-packages/setuptools/command/test.py create mode 100644 venv/Lib/site-packages/setuptools/command/upload.py create mode 100644 venv/Lib/site-packages/setuptools/command/upload_docs.py create mode 100644 venv/Lib/site-packages/setuptools/config.py create mode 100644 venv/Lib/site-packages/setuptools/dep_util.py create mode 100644 venv/Lib/site-packages/setuptools/depends.py create mode 100644 venv/Lib/site-packages/setuptools/dist.py create mode 100644 venv/Lib/site-packages/setuptools/errors.py create mode 100644 venv/Lib/site-packages/setuptools/extension.py create mode 100644 venv/Lib/site-packages/setuptools/extern/__init__.py create mode 100644 venv/Lib/site-packages/setuptools/glob.py create mode 100644 venv/Lib/site-packages/setuptools/gui-32.exe create mode 100644 venv/Lib/site-packages/setuptools/gui-64.exe create mode 100644 venv/Lib/site-packages/setuptools/gui-arm64.exe create mode 100644 venv/Lib/site-packages/setuptools/gui.exe create mode 100644 venv/Lib/site-packages/setuptools/installer.py create mode 100644 venv/Lib/site-packages/setuptools/launch.py create mode 100644 venv/Lib/site-packages/setuptools/lib2to3_ex.py create mode 100644 venv/Lib/site-packages/setuptools/monkey.py create mode 100644 venv/Lib/site-packages/setuptools/msvc.py create mode 100644 venv/Lib/site-packages/setuptools/namespaces.py create mode 100644 venv/Lib/site-packages/setuptools/package_index.py create mode 100644 venv/Lib/site-packages/setuptools/py26compat.py create mode 100644 venv/Lib/site-packages/setuptools/py27compat.py create mode 100644 venv/Lib/site-packages/setuptools/py31compat.py create mode 100644 venv/Lib/site-packages/setuptools/py34compat.py create mode 100644 venv/Lib/site-packages/setuptools/sandbox.py create mode 100644 venv/Lib/site-packages/setuptools/script (dev).tmpl create mode 100644 venv/Lib/site-packages/setuptools/script.tmpl create mode 100644 venv/Lib/site-packages/setuptools/site-patch.py create mode 100644 venv/Lib/site-packages/setuptools/ssl_support.py create mode 100644 venv/Lib/site-packages/setuptools/unicode_utils.py create mode 100644 venv/Lib/site-packages/setuptools/version.py create mode 100644 venv/Lib/site-packages/setuptools/wheel.py create mode 100644 venv/Lib/site-packages/setuptools/windows_support.py create mode 100644 venv/Lib/tcl8.6/init.tcl create mode 100644 venv/Scripts/Activate.ps1 create mode 100644 venv/Scripts/activate create mode 100644 venv/Scripts/activate.bat create mode 100644 venv/Scripts/deactivate.bat create mode 100644 venv/Scripts/easy_install-3.6.exe create mode 100644 venv/Scripts/easy_install.exe create mode 100644 venv/Scripts/pip.exe create mode 100644 venv/Scripts/pip3.6.exe create mode 100644 venv/Scripts/pip3.exe create mode 100644 venv/Scripts/python.exe create mode 100644 venv/Scripts/python3.dll create mode 100644 venv/Scripts/python36.dll create mode 100644 venv/Scripts/pythonw.exe create mode 100644 venv/Scripts/sqlite3.dll create mode 100644 venv/Scripts/tcl86t.dll create mode 100644 venv/Scripts/tk86t.dll create mode 100644 venv/Scripts/vcruntime140.dll create mode 100644 venv/pyvenv.cfg diff --git a/examples/sequence_extraction.py b/examples/sequence_extraction.py new file mode 100644 index 00000000..c56cfe7d --- /dev/null +++ b/examples/sequence_extraction.py @@ -0,0 +1,51 @@ +# -*-coding:utf-8-*- +import sys +import os +sys.path.append(os.path.abspath(os.path.join(__file__, "..", ".."))) +import argparse +from openks.models import OpenKSModel + + + +parser = argparse.ArgumentParser() +parser = argparse.ArgumentParser() +parser.add_argument("--num_epoch", type=int, default=5, help="Number of epoches for fine-tuning.") +parser.add_argument("--learning_rate", type=float, default=5e-5, help="Learning rate used to train with warmup.") +parser.add_argument("--train_data_path", type=str, default='data/SeRI_mod/train_pair.dat', + help="train_data_path") +parser.add_argument("--test_data_path", type=str, default='data/SeRI_mod/test_pair.dat', help="test_data_path") + +parser.add_argument("--predict_data", type=str, default='', help="predict data") +parser.add_argument("--do_train", type=ast.literal_eval, default=True, help="do train") +parser.add_argument("--do_predict", type=ast.literal_eval, default=True, help="do predict") +parser.add_argument("--weight_decay", type=float, default=0.01, help="Weight decay rate for L2 regularizer.") +parser.add_argument("--warmup_proportion", type=float, default=0.1, + help="Warmup proportion params for warmup strategy") +parser.add_argument("--max_seq_len", type=int, default=512, help="Number of words of the longest seqence.") +parser.add_argument("--valid_step", type=int, default=100, help="validation step") +parser.add_argument("--skip_step", type=int, default=20, help="skip step") +parser.add_argument("--batch_size", type=int, default=16, help="Total examples' number in batch for training.") +parser.add_argument("--checkpoints", type=str, default='checkpoints/sub_Erine', + help="Directory to model checkpoint(save model)") +parser.add_argument("--init_ckpt", type=str, default='checkpoints/sub_Erine', + help="already pretraining model checkpoint()") +parser.add_argument("--predict_save_path", type=str, default='data/predict.json', help="predict data save path") +parser.add_argument("--seed", type=int, default=1000, help="random seed for initialization") +parser.add_argument('--device', choices=['cpu', 'gpu'], default="gpu", + help="Select which device to train model, defaults to gpu.") + +args = parser.parse_args() + +args = parser.parse_args() + +platform = 'Paddle' +executor = 'Sequence_Extraction' +model = 'Sequence_Extraction' +print("根据配置,使用 {} 框架,{} 执行器训练 {} 模型。".format(platform, executor, model)) +print("-----------------------------------------------") +# 模型训练 +executor = OpenKSModel.get_module(platform, executor) +Event_Extraction = executor(args=args) +Event_Extraction.run() + +print("-----------------------------------------------") \ No newline at end of file diff --git a/openks/data/SeRI_mod/eval_pair.dat b/openks/data/SeRI_mod/eval_pair.dat new file mode 100644 index 00000000..21bb7d21 --- /dev/null +++ b/openks/data/SeRI_mod/eval_pair.dat @@ -0,0 +1,685 @@ +-1 Allied invasion of Sicily ||| Operation Fustian ||| * [[Operation Fustian]]: Airborne landing at Primosole Bridge ahead on 13–14 July 1943. ||| Constituent operations ||| ||| +-1 American Civil War ||| Chattanooga Campaign ||| The Union's key strategist and tactician in the West was [[Ulysses S. Grant]], who won victories at Forts [[Battle of Fort Henry|Henry]] and [[Battle of Fort Donelson|Donelson]] (by which the Union seized control of the [[Tennessee River|Tennessee]] and [[Cumberland River|Cumberland]] Rivers); the [[Battle of Shiloh]];{{sfn|McPherson|1988|pp=405–413}} and the [[Siege of Vicksburg|Battle of Vicksburg]],{{sfn|McPherson|1988|pp=637–638}} which cemented Union control of the Mississippi River and is considered one of the [[Turning point of the American Civil War|turning points]] of the war. Grant marched to the relief of Rosecrans and defeated Bragg at the [[Chattanooga Campaign|Third Battle of Chattanooga]],{{sfn|McPherson|1988|pp=677–680}} driving Confederate forces out of Tennessee and opening a route to Atlanta and the heart of the Confederacy. ||| War ||| Western theater ||| +-1 American Revolutionary War ||| Cherry Valley massacre ||| West of the [[Appalachian Mountains]] and along the border with [[Quebec]], the American Revolutionary War was an '[[American Indian Wars|Indian War]]'. Most [[Native Americans in the United States|Native Americans]] supported the British. Like the [[Iroquois]] Confederacy, tribes such as the [[Shawnee]] split into factions, and the [[Chickamauga Indian|Chickamauga]] split off from the rest of the [[Cherokee]] over differences regarding peace with the [[Americans]]. The British supplied their [[nativ]]e allies with [[muskets]], [[gunpowder]] and advice, while Loyalists led raids against [[civilian]] settlements, especially in New York, [[Kentucky]], and [[Pennsylvania]]. Joint Iroquois-Loyalist attacks in the [[Wyoming Valley massacre|Wyoming Valley]] in Pennsylvania and at [[Cherry Valley massacre|Cherry Valley]] in New York in 1778 provoked [[George Washington|Washington]] to send the [[Sullivan Expedition]] into western New York during the summer of 1779. There was little fighting as [[John Sullivan (general)|Sullivan]] systematically destroyed the Indians' winter food supplies, forcing them to flee permanently to British bases in [[Quebec]] and the [[Niagara Falls]] area. ||| Second phase, 1778–1781 ||| Northern and Western frontier ||| +-1 American Revolutionary War ||| Siege of Ninety-Six ||| American troops in conjunction with Patriot partisans then began the process of reclaiming territory in South Carolina and Georgia. Despite British victories at [[Battle of Hobkirk's Hill|Hobkirk's Hill]] and at the [[Siege of Ninety-Six]], by the middle of the year they had been forced to withdraw to the coastal lowlands region of both colonies. The final battle ([[Battle of Eutaw Springs]]) in September 1781 was indecisive but by the end of the year the British held only Savannah and Charleston. ||| Second phase, 1778–1781 ||| Georgia and the Carolinas, 1778–1781 ||| +-1 Arauco War ||| Battle of Angol ||| At Los Infantes the Mapuche blockade grew tighter as they moved closer and closer to the city protected in their well-sited pucaras. Its commander Lorenzo Bernal del Mercado judged them too well defended to attack until they started to build their third pucara close to the city. Then in the [[Battle of Angol]] Lorenzo Bernal drove the Mapuche army out of their pucara and pursued them down to the river and pushed them back into it killing Illangulién and a thousand of his men with many others wounded or captured and the rest of the army dispersed. Afterward [[Paillataru]] was elected as Toqui. ||| Second Great Mapuche Rebellion (1561) ||| Campaigns of Pedro de Villagra ||| +-1 Armenian Genocide ||| Defense of Van (1915) ||| In May 1915, [[Mehmet Talaat Pasha]] requested that the cabinet and [[Grand Vizier]] [[Said Halim Pasha]] legalize a measure for the deportation of Armenians to other places due to what Talaat Pasha called 'the Armenian riots and massacres, which had arisen in a number of places in the country'. However, Talaat Pasha was referring specifically to events in [[Defense of Van (1915)|Van]] and extending the implementation to the regions in which alleged 'riots and massacres' would affect the security of the war zone of the [[Caucasus Campaign]]. Later, the scope of the deportation was widened in order to include the Armenians in the other provinces. ||| World War I ||| Deportations ||| +-1 Balkan Wars ||| Second Balkan War ||| The [[Second Balkan War]] broke out on 16 June 1913. Both Serbia and Greece, utilizing the argument that the war had been prolonged, repudiated important particulars of the pre-war treaty and retained occupation of all the conquered districts in their possession which were to be divided according to specific predefined boundaries. Seeing the treaty as trampled, [[Kingdom of Bulgaria|Bulgaria]] was dissatisfied over the division of the spoils in [[Macedonia (region)|Macedonia]], made in secret by its former allies, Serbia and Greece, and commenced military action against them. The more numerous combined Serbian and Greek armies repelled the Bulgarian offensive and counter-attacked into [[Kingdom of Bulgaria|Bulgaria]]. [[Romania]], who having taken no part in the conflict, had intact armies to strike with, and invaded from the north in violation of a peace treaty between the two states. The Ottoman Empire also attacked [[Kingdom of Bulgaria|Bulgaria]] and advanced in Thrace regaining [[Adrianople]]. In the resulting [[Treaty of Bucharest (1913)|Treaty of Bucharest]], Bulgaria lost most of the territories it had gained in the First Balkan War in addition to being forced to cede the ex-Ottoman south-third of Dobroudja province to [[Romania]]. ||| ||| ||| +-1 Bangladesh Liberation War ||| Operation Jackpot ||| The [[Bangladeshi Declaration of Independence]] was proclaimed from [[Chittagong]] by members of the [[Mukti Bahini]]- the national liberation army formed by Bengali military, paramilitary and civilians. The [[East Bengal Regiment]] and the [[East Pakistan Rifles]] played a crucial role in the resistance. Led by [[General Osmani|General M. A. G. Osmani]] and [[List of sectors in Bangladesh Liberation War|eleven sector commanders]], the [[Bangladesh Forces]] waged a mass [[guerrilla war]] against the Pakistani military. They liberated numerous towns and cities in the initial months of the conflict. The Pakistan Army regained momentum in the [[monsoon]]. Bengali guerrillas carried out widespread sabotage, including [[Operation Jackpot]] against the Pakistan Navy. The nascent Bangladesh Air Force flew [[sorties]] against Pakistani military bases. By November, the Bangladesh Forces restricted the Pakistani military to its barracks during the night. They secured control of most parts of the countryside. ||| ||| ||| +-1 Battle of Kohima ||| Battle of the Tennis Court ||| Some of the heaviest fighting took place at the north end of Kohima Ridge, around the Deputy Commissioner's bungalow and tennis court, in what became known as the [[Battle of the Tennis Court]]. The tennis court became a [[no man's land]], with the Japanese and the defenders of Kohima dug in on opposite sides, so close to each other that grenades were thrown between the trenches. On the night of 17/18 April, the Japanese finally captured the DC's bungalow area. Other Japanese captured ''Kuki Picquet'', cutting the garrison in two. ||| Battle ||| Siege ||| +-1 Bosnian War ||| Operation Amanda ||| [[Operation Amanda]] was an UNPROFOR mission led by [[Denmark|Danish]] peacekeeping troops, with the aim of recovering an observation post near [[Gradačac]], Bosnia and Herzegovina, on 25 October 1994. ||| Course of the war ||| 1994 ||| UNPROFOR and NATO +-1 Catalan Revolt ||| Siege of Lleida (1644) ||| A French-Catalan army under [[Philippe de La Mothe-Houdancourt]] moved south and gained several victories. But the sieges of [[Siege of Tarragona (1644)|Tarragona]], [[Siege of Lleida (1644)|Lleida]] and [[Tortosa]] finally failed and the allies had to withdraw. In the north (Roussillon), they were more successful. Perpignan was taken after a [[Siege of Perpignan (1642)|siege of 10 months]], and the whole of [[Roussillon]] was under French control. Shortly after, Spanish relief armies were defeated at the [[Battle of Montmeló]] and [[Battle of Barcelona]]. ||| Conflict ||| ||| +-1 Caucasus Campaign ||| Defense of Van (1915) ||| On April 20, the [[Defense of Van (1915)|resistance at the city of Van]] began. The Armenian defenders protecting 30,000 residents and 15,000 refugees with 1,500 able bodied riflemen who were supplied with 300 rifles and 1,000 pistols and antique weapons. The conflict lasted more than three weeks until the General Yudenich came to rescue them. General Yudenich began an offensive (May 6) into Ottoman territory. One wing of this offensive headed towards [[Lake Van]] to relieve the Armenian residents of the Van Resistance. A [[brigade]] of Trans-Baikal Cossacks under General Trukhin, and some [[Armenian volunteer units|Armenian volunteers]] towards Van. ||| Operations ||| 1915 ||| +-1 Chilean War of Independence ||| Battle of Chacabuco ||| The liberating [[Army of the Andes]] was prepared by 1817. After a [[Crossing of the Andes|difficult crossing the Andes]], royalist forces led by [[Rafael Maroto]] were encountered on the plain of Chacabuco, to the north of Santiago. The resulting [[Battle of Chacabuco]], on February 12, 1817, was a decisive victory for the independence forces. As a result, the patriots re-entered Santiago. San Martín was proclaimed Supreme Director, but he declined the offer and put O'Higgins in the post, where he would remain until 1823. On the first anniversary of the Battle of Chacabuco, O'Higgins formally declared independence. ||| Reconquista ||| ||| +-1 Eastern Front (World War I) ||| Kerensky Offensive ||| The newly formed [[Russian Republic]] continued to fight the war alongside Romania and the rest of the Entente until it was [[October Revolution|overthrown]] by the [[Bolsheviks]] in October 1917. Kerensky oversaw the [[Kerensky Offensive|July Offensive]], which was largely a failure and caused a collapse in the Russian army. The [[Russian Soviet Federative Socialist Republic|new government]] established by the Bolsheviks signed the [[Treaty of Brest-Litovsk]] with the Central Powers, taking it out of the war and making large territorial concessions. Romania was forced to surrender and signed a [[Treaty of Bucharest (1918)|similar treaty]], though both of the treaties were nullified with the surrender of the Central Powers in November 1918. ||| ||| ||| +-1 English Civil War ||| Battle of Worcester ||| The '''English Civil War''' (1642–1651) was a series of armed conflicts and political machinations between Parliamentarians ('[[Roundhead]]s') and Royalists ('[[Cavalier]]s') in the [[Kingdom of England]] over, principally, the manner of its government. The [[First English Civil War|first]] (1642–46) and [[Second English Civil War|second]] (1648–49) wars pitted the supporters of [[Charles I of England|King Charles I]] against the supporters of the [[Long Parliament]], while the [[Third English Civil War|third]] (1649–51) saw fighting between supporters of [[Charles II of England|King Charles II]] and supporters of the [[Rump Parliament]]. The war ended with the Parliamentarian victory at the [[Battle of Worcester]] on 3 September 1651. ||| ||| ||| +-1 European theatre of World War II ||| Battle of Kock (1939) ||| On September 17, the [[Soviet invasion of Poland|Soviet forces joined the invasion of Poland]], although remaining [[neutrality (international relations)|neutral]] with respect to Western powers. The Polish government evacuated the country for Romania. Poland fell within five weeks, with her last large operational units surrendering on October 5 after the [[Battle of Kock (1939)|Battle of Kock]]. As the Polish September Campaign ended, Hitler offered to Britain and France peace on the basis of recognition of German European continental dominance. On October 12, the United Kingdom formally refused. ||| Outbreak of war in Europe ||| ||| +-1 Fall of Saigon ||| Operation Frequent Wind ||| *{{cite web|url=http://traceyweddle.com/rory-kennedys-the-last-days-of-vietnam-oscar-worthy-to-say-the-least|title=THE LAST DAYS IN VIETNAM|work=Movie review|quote=This is a story about a few brave, good people who stayed behind in order to not leave anyone behind.}} (mentions NBC correspondents Jim Laurie and Neil Davis, who stayed after the evacuation)<!-- Also see http://www.washingtonpost.com/wp-dyn/content/article/2009/05/14/AR2009051404311.html regarding Dutch photographer Hugh van Es who also stayed --> The evacuation culminated in [[Operation Frequent Wind]], the largest helicopter evacuation in history. ||| ||| ||| +-1 Final War of the Roman Republic ||| Battle of Actium ||| The '''final war of the Roman Republic''', also known as '''Antony's civil war''' or the '''war between Antony and Octavian''', was the last of the [[Roman civil wars]] of the [[Roman Republic|republic]], fought between [[Cleopatra]] (assisted by [[Mark Antony]]) and [[Augustus|Octavian]]. After the [[Roman Senate]] declared war on the [[Ptolemaic Egypt|Egyptian]] queen Cleopatra, Antony, her lover and ally, betrayed the Roman government and joined the war on Cleopatra's side. After the decisive victory for Octavian at the [[Battle of Actium]], Cleopatra and Antony withdrew to [[Alexandria]], where Octavian besieged the city until both Antony and Cleopatra committed [[suicide]]. ||| ||| ||| +-1 Finnish War ||| Battle of Oravais ||| Although [[Georg Carl von Döbeln]] won the [[Battle of Jutas]] for Sweden on September 13, Kamensky's 11,000-strong corps achieved more important victories at [[Battle of Kuortane|Kuortane]] on September 1, at [[Salmi (rural locality)|Salmi]] on September 2, and at [[Battle of Oravais|Oravais]] on September 14. Swedish attempts to land troops near [[Turku]] were stalled by [[Pyotr Bagration|Bagration]]'s prompt actions. In Eastern Finland, the guerrilla movement was gradually extinguished. As a consequence, Russia's situation in Southern Finland improved significantly. ||| August – September 1808 ||| ||| +-1 First Anglo-Sikh War ||| Battle of Aliwal ||| When hostilities resumed, a Sikh detachment crossed the Sutlej near [[Aliwal, Taran Taran|Aliwal]], threatening Gough's lines of supply and communications. A division under Sir [[Sir Harry Smith, 1st Baronet|Harry Smith]] was sent to deal with them. Sikh cavalry attacked Smith continually on his march and captured his baggage, but Smith received reinforcements and at the [[Battle of Aliwal]] on 28 January 1846, he won a model victory, eliminating the Sikh bridgehead. ||| Outbreak and course of the war ||| ||| +-1 First Balkan War ||| Battle of Bulair ||| | [[Battle of Bulair]] ||| Reactions among the Great Powers ||| ||| +-1 First Indochina War ||| Battle of Muong Khoua ||| On April 9, 1953, Giáp, after having failed repeatedly in direct attacks on French positions in Vietnam, changed strategy and began to pressure the French by invading Laos, surrounding and defeating several French outposts such as [[Battle of Muong Khoua|Muong Khoua]]. In May, General [[Henri Navarre]] replaced Salan as supreme commander of French forces in Indochina. He reported to the French government '... that there was no possibility of winning the war in Indo-China,' saying that the best the French could hope for was a stalemate. ||| Timeline ||| 1953 ||| +-1 Fourth Macedonian War ||| Battle of Pydna (148 BC) ||| The '''Fourth Macedonian War''' (150 BC to 148 BC) was fought between the [[Roman Republic]] and a Greek uprising led by the Macedonian pretender to the throne [[Andriscus]]. Pretending to be the son of former king [[Perseus of Macedon|Perseus]], who had been deposed by the Romans after the [[Third Macedonian War]] in 168 BC, Andriscus sought to re-establish the old Macedonian Kingdom. In the process he destabilized Macedonia and much of the Greek world. Andriscus, after some early successes, was eventually defeated by the Roman general [[Quintus Caecilius Metellus Macedonicus]] at the [[Battle of Pydna (148 BC)|Second Battle of Pydna]] in 148 BC, and the uprising subsequently collapsed. Two years later [[Macedonia (Roman province)|Macedonia became a Roman province]]. ||| ||| ||| +-1 Franco-Dutch War ||| Battle of Stromboli ||| * 1676 – [[Battle of Stromboli|Battle Alicudi]] (8 January) ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Siege of Bonn (1673) ||| * 1673 – [[Siege of Bonn (1673)|Siege of Bonn]] (end of October – 15 November) ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Third Anglo-Dutch War ||| Measures taken by the [[François-Michel le Tellier, Marquis de Louvois|Marquis de Louvois]] (1641–91), [[Secretary of War]] under [[Louis XIV]], allowed France to mobilise about 180,000 men. Of these about 120,000 would be used directly against the [[Dutch Republic|United Provinces]]. The bulk of the French army was divided into two bodies, one body was stationed in [[Charleroi]] under the command of [[Henri de la Tour d'Auvergne, Vicomte de Turenne|Henri Turenne]]. This force would make its way down the [[Sambre]] River to the [[Meuse]] River and then march northward along the left bank of the Meuse to attack the Dutch England declared war on the Dutch United Provinces on 7 April 1672, starting the third navigation war (or what was to be called the '[[Third Anglo-Dutch War]]).' It was expected that [[England]] would launch amphibious landings against the United Netherlands, however, this never happened. ||| Preparations ||| ||| +-1 French Revolutionary Wars ||| Battle of Mount Tabor (1799) ||| In Egypt, Napoleon had consolidated his control of the country for the time being. Soon after the beginning of the year, he mounted an invasion of Syria, capturing [[El Arish]] and [[Jaffa]]. On 17 March, he laid [[Siege of Acre (1799)|siege to Acre]], and defeated an Ottoman effort to relieve the city at the [[Battle of Mount Tabor (1799)|Battle of Mount Tabor]] on 17 April. However, his repeated assaults on Acre were driven back by Ottoman and British forces under the command of [[Jezzar Pasha]] and [[Sidney Smith (Royal Navy officer)|Sir Sidney Smith]]. By May, with [[pandemic|plague]] rampant in his army and no sign of success against the city, Napoleon was forced to retreat into Egypt. In July, Turkey, with the help of the British navy, mounted an invasion by sea from [[Rhodes]]. Napoleon attacked the Turkish beachheads and scored a crushing victory at the [[Battle of Abukir (1799)|Battle of Abukir]], capturing and killing the entire enemy army. In August, Napoleon decided to return to Europe, hearing of the political and military crisis in France. Leaving his army behind with [[Jean Baptiste Kléber|Kléber]] in command, he sailed through the British blockade to return to Paris and resolved to take control of the government there in a coup. ||| War of the Second Coalition ||| 1799 ||| +-1 French Revolutionary Wars ||| Battle of Winterthur (1799) ||| The Army was reorganized, and a portion placed under the command of [[André Masséna]] and merged with the Army of Helvetia. Following the reorganization and change in command, the Army participated in several skirmishes and actions on the eastern part of the [[Swiss Plateau]], including the [[Battle of Winterthur (1799)|Battle of Winterthur]]. After this action, three forces of the imperial army united north of Zürich, completing a partial encirclement of Massena's combined Army of the Danube and Army of Switzerland. A few days later, at the [[First Battle of Zurich]], Massena was forced west, across the Limmat River. In late summer, 1799, Charles was ordered to support imperial activities in the middle Rhineland; he withdrew north across the Rhine, and marched toward [[Mannheim]], leaving Zürich and northern Switzerland in the hands of the inexperienced [[Alexander Korsakov]] and 25,000 Russian troops. Although the highly capable [[Friedrich Freiherr von Hotze]] remained in support, his 15,000 men were not able to counter Korsakov's poor defensive arrangements. Three weeks later, at the [[Second Battle of Zurich]], the Russian force was annihilated, and Hotze was killed south of Zürich. This left Massena in control of northern Switzerland, and closed forced Suvorov into an arduous three-week march into the Vorarlberg, where his troops arrived, starving and exhausted, in mid-October. ||| War of the Second Coalition ||| 1799 ||| +-1 Genpei War ||| Battle of Yashima ||| *1185 [[Battle of Yashima]] - the Minamoto assault their enemies' fortress, just off [[Shikoku]]. ||| Battles ||| ||| +-1 Greek War of Independence ||| Second Siege of Missolonghi ||| The successive military campaigns of the Ottomans in Western and Eastern Greece were repulsed : in 1822 [[Mahmud Dramali Pasha]] crossed Roumeli and invaded Morea, but suffered a serious defeat in [[Battle of Dervenakia|Dervenakia]]. the announcement of his death in Europe generated a wave of sympathy for the Greek cause. The campaign ended after the [[Second Siege of Missolonghi]] in December 1823. ||| 1822–24 ||| ||| +-1 Hundred Days ||| Neapolitan War ||| The [[Neapolitan War]] between the Napoleonic [[Kingdom of Naples]] and the [[Austrian Empire]], started on 15 March 1815 when Marshal [[Joachim Murat]] declared war on Austria and ended on 20 May 1815 with the signing of the [[Treaty of Casalanza]]. ||| Other campaigns and wars ||| Neapolitan War ||| +-1 Hundred Days Offensive ||| Battle of Mont Saint-Quentin ||| With the front line broken, a number of battles took place as the Allies forced the Germans back to the Hindenburg Line. East of Amiens (after the [[Battle of Amiens (1918)|Battle of Amiens]]), with artillery brought forward and munitions replenished, the Fourth Army also resumed its advance, with the Australian Corps crossing the Somme River on the night of 31 August, breaking the German lines during the [[Battle of Mont Saint-Quentin]]. ||| Battles ||| Advance to the Hindenburg Line ||| +-1 Irish Rebellion of 1798 ||| Battle of Oulart Hill ||| |[[Battle of Oulart Hill]] ||| List of major engagements during the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Tory Island ||| On 12 October 1798, a larger French force consisting of 3,000 men, and including Wolfe Tone himself, attempted to land in [[County Donegal]] near [[Lough Swilly]]. They were intercepted by a larger Royal Navy [[Squadron (naval)|squadron]], and finally surrendered after a [[Battle of Tory Island|three hour battle]] without ever landing in Ireland. Wolfe Tone was tried by court-martial in Dublin and found guilty. He asked for death by firing squad, but when this was refused, Tone cheated the hangman by slitting his own throat in prison on 12 November, and died a week later. ||| French intervention ||| ||| +-1 Jacobite rising of 1715 ||| Battle of Preston (1715) ||| On 22 October Mar received his commission from James appointing him commander of the Jacobite army. The Jacobite army outnumbered Argyll's forces by three-to-one and Mar decided to march on Stirling Castle. On 13 November at [[Sheriffmuir]], the two forces joined in [[Battle of Sheriffmuir|battle]]. The fighting was indecisive but nearing the end of the battle the Jacobites numbered 4,000 men, compared to Argyll's 1,000. Mar's army began to close in on Argyll's forces, who were poorly protected, but Mar did not order them to advance, possibly believing that he had won the battle already (Argyll had lost 660 men, three times as many as Mar). Mar then retreated to Perth. On the same day as the Battle of Sherrifmuir, Inverness surrendered to Hanoverian forces, and a smaller Jacobite force led by [[Mackintosh of Borlum]] was defeated at [[Battle of Preston (1715)|Preston]]. ||| Struggle for Scotland ||| ||| +-1 Kurdish separatism in Iran ||| Hama Rashid revolt ||| The earliest Kurdish separatist activities in modern times refer to tribal revolts in today's [[West Azerbaijan Province]] of Imperial State of Iran, prompted in between of the two [[World Wars]] - the major of those were led by [[Simko Shikak]], Jafar Sultan and [[Hama Rashid revolt|Hama Rashid]]. Many however, put the starting point of the organized Kurdish political-nationalist separatism to 1943, launched with KDPI support through 1966–7, Kurdish regions suffered a major blow. In the most violent episode of the conflict, more than 30,000 Kurds died starting with the [[1979 Kurdish rebellion in Iran|1979 rebellion]] and the consequent [[KDPI insurgency (1989-1996)|KDPI insurgency]]. ||| ||| ||| +-1 Lebanese Civil War ||| Battle of the Hotels ||| Throughout the spring of 1975, minor clashes in [[Lebanon]] had been building up towards all-out conflict, with the [[Lebanese National Movement]] (LNM) pitted against the [[Phalange]], and the ever-weaker national government wavering between the need to maintain order and cater to its constituency. On the morning of 13 April 1975, unidentified gunmen in a speeding car fired on a church in the Christian [[East Beirut]] suburb of Ain el-Rummaneh, killing four people including two [[Maronite]] Phalangists. Hours later, Phalangists led by the [[Bashir Gemayel|Gemayels]] killed 30 [[Palestinians]] traveling in Ain el-Rummaneh. Citywide clashes erupted in response to this '[[Bus Massacre]]'. The [[Battle of the Hotels]] began in October 1975, and lasted until March in 1976. ||| First phase 1975–77 ||| Sectarian violence and massacres ||| +-1 Libyan Civil War (2011) ||| Battle of Sirte (2011) ||| In October 2011 it was reported that the [[South African government]] was investigating the possibility that [[South African]] mercenaries were hired by Gaddafi to help him in his [[Death of Muammar Gaddafi|failed attempt]] to escape the [[Battle of Sirte (2011)|besieged]] city of [[Sirte]]. ||| State response ||| Mercenaries ||| +-1 New Zealand Wars ||| Second Taranaki War ||| The use of a punitive [[New Zealand land confiscations|land confiscation]] policy from 1865, depriving 'rebel' Māori of the means of living, fuelled further Māori anger and resentment, fanning the flames of conflict in [[Second Taranaki War|Taranaki]] (1863-1866) and on the [[East Cape War|east coast]] (1865-1866). ||| Background ||| ||| +-1 Nigerian Civil War ||| Midwest Invasion of 1967 ||| *** 9 August – Biafra begins [[Midwest Invasion of 1967|counterattack on Mid-West Region]]. ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Operation Tiger Claw ||| Four battalions of the Nigerian 2nd Infantry Division were needed to drive the Biafrans back and eliminate their territorial gains made during the offensive. Nigerian soldiers under Murtala Mohammed carried out [[Asaba massacre|a mass killing]] of 700 civilians when they captured [[Asaba, Nigeria|Asaba]] on the [[River Niger]]. The Nigerians were repulsed three times as they attempted to cross the River Niger during October, resulting in the loss of thousands of troops, dozens of tanks and equipment. The first attempt by the 2nd Infantry Division on 12 October to cross the Niger from the town of Asaba to the Biafran city of Onitsha cost the Nigerian Federal Army over 5,000 soldiers killed, wounded, captured or missing. [[Operation Tiger Claw]] (17–20 October 1967) was a military conflict between Nigerian and Biafran military forces. On 17 October 1967 Nigerians invaded Calabar led by the 'Black Scorpion', Benjamin Adekunle while the Biafrans were led by Col. Ogbu Ogi, who was responsible for controlling the area between Calabar and Opobo, and Lynn Garrison a foreign mercenary. The Biafrans came under immediate fire from the water and the air. For the next two days Biafran stations and military supplies were bombarded by the Nigerian air force. That same day Lynn Garrison reached Calabar but came under immediate fire by federal troops. By 20 October, Garrison's forces withdrew from the battle while Col. Ogi officially surrendered to Gen. Adekunle. ||| War ||| Nigerian offensive ||| +-1 North African Campaign ||| First Battle of El Alamein ||| After receiving supplies and reinforcements from [[Tripoli]], the Axis again attacked, defeating the Allies at [[Battle of Gazala|Gazala]] in June and capturing Tobruk. The Axis forces drove the Eighth Army back over the Egyptian border, but their advance was stopped in July only {{convert|90|mi|km|abbr=on}} from [[Alexandria]] in the [[First Battle of El Alamein]]. ||| Western Desert Campaign ||| ||| +-1 North African Campaign ||| Operation Torch ||| During the [[World War II|Second World War]], the '''North African Campaign''' took place in [[North Africa]] from 10 June 1940 to 13 May 1943. It included campaigns fought in the [[Libya]]n and [[Egypt]]ian deserts ([[Western Desert Campaign]], also known as the Desert War) and in [[Morocco]] and [[Algeria]] ([[Operation Torch]]) and [[Tunisia]] ([[Tunisia Campaign]]). ||| ||| ||| +-1 Occupy movement ||| Occupy Wall Street ||| The '''Occupy movement''' is the international branch of the [[Occupy Wall Street]] [[Social movement|movement]] that [[protest]]s against [[social inequality|social]] and [[economic inequality]] around the world, its primary goal being to make the economic and political relations in all societies less vertically hierarchical and more flatly distributed. Local groups often have different focuses, but among the movement's prime concerns deal with how [[Corporatocracy|large corporations]] (and the [[global financial system]]) control the world in a way that disproportionately benefits a minority, undermines [[democracy]], and is unstable. It is part of what [[Manfred Steger]] calls the 'global justice movement'. ||| ||| ||| +-1 Operation Market Garden ||| Battle of Arnhem ||| Several bridges between [[Eindhoven]] and [[Nijmegen]] were captured at the beginning of the operation but Lieutenant-General [[Brian Horrocks]]' [[XXX Corps (United Kingdom)|XXX Corps]] ground force advance was delayed by the demolition of a bridge over the Wilhelmina Canal, an extremely overstretched supply line at [[Son en Breugel|Son]], and failure to capture the main road bridge over the river Waal before 20 September. At [[Arnhem]], the [[British 1st Airborne Division]] encountered far stronger resistance than anticipated. In the [[Battle of Arnhem|ensuing battle]], only a small force managed to hold one end of the [[Arnhem road bridge]] and after the ground forces failed to relieve them, they were overrun on 21 September. The rest of the division, trapped in a small pocket west of the bridge, had to be evacuated on 25 September. The Allies had failed to cross the Rhine in sufficient force and the river remained a barrier to their advance until offensives at [[Remagen]], [[Oppenheim]], [[Operation Plunder|Rees and Wesel]] in March 1945. The failure of Market Garden ended Allied expectations of finishing the war by Christmas 1944. ||| ||| ||| +-1 Operation Overlord ||| Normandy landings ||| '''Operation Overlord''' was the code name for the '''Battle of Normandy''', the [[Allies of World War II|Allied]] operation that launched the successful invasion of German-occupied [[Western Front (World War II)|western Europe]] during World War II. The operation commenced on 6 June 1944 with the [[Normandy landings]] ('''Operation Neptune''', commonly known as '''D-Day'''). A 1,200-plane [[Airborne forces|airborne assault]] preceded an [[amphibious warfare|amphibious assault]] involving more than 5,000 vessels. Nearly 160,000 troops crossed the [[English Channel]] on 6 June, and more than three million Allied troops were in France by the end of August. ||| ||| ||| +-1 Operation Phantom Thunder ||| Operation Commando Eagle ||| '''Operation ''Phantom Thunder''''' began on 16 June 2007, when [[Multi-National Force-Iraq]] launched major offensive operations against [[al-Qaeda]] and other extremist [[terrorists]] operating throughout [[Iraq]]. Operation Phantom Thunder was a [[corps]] level operation, including [[Operation Arrowhead Ripper]] in [[Diyala Governorate|Diyala]] Province, [[Operation Marne Torch]] and [[Operation Commando Eagle]] in [[Babil]] Province, [[Operation Fardh al-Qanoon]] in [[Baghdad]], [[Operation Alljah]] in [[Al Anbar Governorate|Anbar]] Province, and continuing [[special forces]] actions against the [[Mahdi Army]] in southern Iraq and against [[Al-Qaeda]] leadership throughout the country. ||| ||| ||| +-1 Pacific War ||| Atomic bombings of Hiroshima and Nagasaki ||| The effects of the 'Twin Shocks'—the [[Soviet–Japanese War (1945)|Soviet entry]] and the [[Atomic bombings of Hiroshima and Nagasaki|atomic bombing]]—were profound. On 10 August the 'sacred decision' was made by Japanese Cabinet to accept the [[Potsdam Declaration|Potsdam terms]] on one condition: the 'prerogative of His Majesty as a Sovereign Ruler'. At noon on 15 August, after the American government's intentionally ambiguous reply, stating that the 'authority' of the emperor 'shall be subject to the Supreme Commander of the Allied Powers', the Emperor broadcast to the nation and to the world at large the rescript of surrender, ending the Second World War. ||| Final stages==<!-- This heading is used as a redirect anchor --&g ||| Surrender ||| +-1 Pacific War ||| Battle of Changsha (1942) ||| In mainland China, the Japanese 3rd, 6th, and 40th Divisions massed at Yueyang and advanced southward in three columns and crossed the Xinqiang River, and tried again to cross the Miluo River to reach Changsha. In January 1942, Chinese forces got [[Battle of Changsha (1942)|a victory at Changsha]] which was the first Allied success against Japan. ||| Stalemate in China and Southeast Asia ||| ||| +-1 Pacific War ||| Battle of Northern Burma and Western Yunnan ||| Although the advance in the Arakan had been halted to release troops and aircraft for the [[Battle of Imphal]], the Americans and Chinese had continued to advance in northern Burma, aided by the [[Chindits]] operating against the Japanese lines of communication. In the middle of 1944 the [[Chinese Expeditionary Force]] [[Battle of Northern Burma and Western Yunnan|invaded northern Burma]] from [[Yunnan]] province. They captured a fortified position at [[Battle of Mount Song|Mount Song]].{{Sfn|Stevens|page=70}} By the time campaigning ceased during the [[monsoon]] rains, the [[Northern Combat Area Command|NCAC]] had secured a vital airfield at [[Siege of Myitkyina|Myitkyina]] (August 1944), which eased the problems of air resupply from India to China over '[[The Hump]]'. ||| Japanese offensive in India 1944 ||| ||| +-1 Paraguay campaign ||| Battle of Campichuelo ||| The '''Paraguay campaign''' (1810–1811) was the attempt by a [[Buenos Aires]]-sponsored [[militia]], commanded by [[Manuel Belgrano]], to win the Intendency of [[Paraguay]] for the [[May Revolution|revolutionary cause]]. It is also considered for the Paraguayans as their war for independence. The first battles were fought in [[Battle of Campichuelo|Campichuelo]] and [[Battle of Campo Maracana|Maracana]] and the Argentines claimed victory in both fields. However, they were completely vanquished in the subsequent battles of [[Battle of Paraguarí|Paraguarí]] and [[Battle of Tacuarí|Tacuarí]]. The campaign ended in a military failure and Paraguay broke its links with the Spanish crown just two months after Belgrano's withdrawal, achieving full independence. ||| ||| ||| +-1 Peloponnesian War ||| Battle of Mantinea (418 BC) ||| The [[Battle of Mantinea (418 BC)|Battle of Mantinea]] was the largest land battle fought within Greece during the Peloponnesian War. The Lacedaemonians, with their neighbors the Tegeans, faced the combined armies of Argos, Athens, Mantinea, and [[Arcadia]]. In the battle, the allied coalition scored early successes, but failed to capitalize on them, which allowed the Spartan elite forces to defeat the forces opposite them. The result was a complete victory for the Spartans, which rescued their city from the brink of strategic defeat. The democratic alliance was broken up, and most of its members were reincorporated into the Peloponnesian League. With its victory at Mantinea, Sparta pulled itself back from the brink of utter defeat, and re-established its hegemony throughout the Peloponnese. ||| Peace of Nicias ||| ||| +-1 Peninsular War ||| Battle of Burgos ||| In the west, a Spanish wing escaped when Lefebvre failed to encircle the Army of Galicia after a premature and indecisive attack at the [[Battle of Pancorbo (1808)|Battle of Pancorbo]]; Blake withdrew his artillery to safety and the bloodied Spanish infantry followed. Lefebvre and Marshal [[Claude Victor-Perrin]] offered a careless chase that ended in humiliation at the [[Battle of Valmaseda]], where their scattered troops were handled by La Romana's repatriated Spanish veterans and escaped to safety. The campaign in the south, where Napoleon's main army overran the unprotected Spanish centre in a devastating attack near [[Battle of Burgos|Burgos]], ended quickly. The Spanish militias{{mdash}}untrained and unable to form [[infantry square]]s{{mdash}}scattered in the face of massed French cavalry, while the [[Spanish Royal Guard]] and [[Walloon Guards]] stood their ground in vain and were overcome by [[Antoine Charles Louis Lasalle]] and his ''sabreurs''. Marshal [[Jean Lannes]] with a powerful force smashed through the Spanish right wing at the [[Battle of Tudela]] on 23 November, routing Castaños and prompting a new inscription on the [[Arc de Triomphe]] in Paris. Blake's isolated army reversed direction on 17 November and dug in at the [[Battle of Espinosa]]. His lines repelled French attacks over a day and night of vicious fighting, before giving up the next day. Blake again outmarched Marshal [[Jean-de-Dieu Soult|Nicolas Jean-de-Dieu Soult]] and escaped with a rump army to Santander, but the Spanish front had been fragmented and the Imperial armies raced forward over undefended provinces. Napoleon sent 45,000 men south into the [[Sierra de Guadarrama]], which shielded Madrid. ||| Napoleon's invasion of Spain, 1808 ||| ||| +-1 Russian Revolution ||| October Revolution ||| In the [[October Revolution]] (November in the Gregorian calendar), the [[Bolshevik]] party, led by [[Vladimir Lenin]], and the workers' Soviets, overthrew the Provisional Government in Petrograd and established the [[Russian Soviet Federative Socialist Republic|Russian SFSR]], eventually shifting the capital to [[Moscow]] in 1918. The Bolsheviks appointed themselves as leaders of various government ministries and seized control of the countryside, establishing the [[Cheka]] to quash dissent. To end Russia's participation in the First World War, the Bolshevik leaders signed the [[Treaty of Brest-Litovsk]] with Germany in March 1918. ||| ||| ||| +-1 Russo-Japanese War ||| Battle of Motien Pass ||| * 1904 [[Battle of Motien Pass]], 17 July, Japanese victory ||| List of battles ||| ||| +-1 Second Anglo-Dutch War ||| Battle of Nevis ||| The Second Anglo-Dutch war had spread to the [[Caribbean]] islands in 1665 and the English had been quick to capture the Dutch island of [[Sint Eustatius]]. A French declaration of war on the side of the Dutch in mid April 1666 took the situation a step further and buoyed a Dutch counterattack. Quickly the French under [[Joseph-Antoine de La Barre]] took over the English Caribbean islands offsetting English control. First the English half of St Kitts fell, quickly followed by [[Antigua]] and [[Montserrat]]. The Dutch meanwhile under Admiral [[Abraham Crijnssen]] had reconquered the island of Sint Eustatius and following that captured [[Suriname]]. With the Caribbean clearly in Franco-Dutch control Abraham Crijnssen and de La Barre combined forces and agreed to a Franco-Dutch invasion of [[Nevis]] on 20 May 1667. However, [[Battle of Nevis|this invasion was repelled]] by the English in a confused naval action. After this failed attack and the fallout that followed, the French, under Admiral Joseph de la Barre, moved to Martinique. The Dutch under Crijnssen sailed to north to attack the Virginia colony. ||| War in the Caribbean ||| ||| +-1 Second Battle of El Alamein ||| Outpost Snipe ||| By this time, the main battle was concentrated around Tel el Aqqaqir and the Kidney feature at the end of 1st Armoured Division's path through the minefield. A mile northwest of the feature lay an area of resistance known as 'Woodcock' and roughly the same distance southwest lay '[[Outpost Snipe|Snipe]]'. An attack was planned on these areas using two battalions from 7th Motor Brigade. At 23:00 on 26 October 2 Battalion, [[The Rifle Brigade]] would attack Snipe and 2nd Battalion [[King's Royal Rifle Corps]] ('KRRC') would attack Woodcock. The plan was for 2nd Armoured Brigade to pass round the north of Woodcock the following dawn and 24th Armoured Brigade round the south of Snipe. The attack was to be supported by all the available artillery of both X and XXX Corps. ||| Battle ||| Phase three: the counter ||| D + 4: 27 October +-1 Second Congo War ||| Ituri conflict ||| The '''Second Congo War''' (also known as the '''Great War of Africa''' or the '''Great African War''', and sometimes referred to as the '''African World War''') began in August 1998, little more than a year after the [[First Congo War]] (and involving some of the same issues), in the [[Democratic Republic of the Congo]], and officially ended in July 2003 when the [[Transitional Government of the Democratic Republic of the Congo]] took power. However, hostilities have continued since then in the ongoing [[Lord's Resistance Army insurgency]], and the [[Kivu conflict|Kivu]] and [[Ituri conflict]]s. ||| ||| ||| +-1 Second Sino-Japanese War ||| Battle of Nanchang ||| * {{Flagdeco|Empire of Japan}} [[Battle of Nanchang]] March 1939 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Battle of Nanking ||| Building on the hard-won victory in Shanghai, the IJA [[Battle of Nanking|captured the KMT capital city]] of [[Nanjing]] (Nanking) (December 1937) and [[Battle of Xinkou|Northern Shanxi]] (September–November 1937). These campaigns involved approximately 350,000 Japanese soldiers, and considerably more Chinese. Historians estimate that between December 13, 1937 and late January 1938 Japanese forces tortured and [[mass murder|murdered]] up to 300,000 Chinese (mostly civilians and surrendered soldiers) and raped tens of thousands of women during the [[Nanking Massacre]] (also known as the 'Rape of Nanking'), after the [[Battle of Nanking|fall of Nanking]]. {{As of | 2015}}, some right-wing Japanese [[Historical revisionism (negationism)|negationists]] [[Historical revisionism (negationism)#Japanese war crimes|deny]] that the massacre occurred. ||| Course of the war ||| Nanking Massacre ||| +-1 South African Border War ||| Namibian War of Independence ||| The '''South African Border War''', commonly referred to as the '''Angolan Bush War''' in South Africa, was a conflict that took place from 1966 to 1989 largely in [[South-West Africa]] (now [[Namibia]]) and [[Angola]] between South Africa and its allied forces (mainly the National Union for the Total Independence of Angola, [[UNITA]]) on the one side and the Angolan government, South-West Africa People's Organisation ([[SWAPO]]), and their allies (mainly [[Cuba]]) on the other. It was closely intertwined with the [[Angolan War of Independence]], the [[Angolan Civil War]] and the [[Namibian War of Independence]]. ||| ||| ||| +-1 Spanish Civil War ||| Siege of Madrid ||| Significant numbers of volunteers originated in the [[French Third Republic]] (10,000), [[Nazi Germany]], the [[Federal State of Austria]] (5000) and the [[Kingdom of Italy]] (3350). More than 1000 each came from the [[Soviet Union]], the [[United States]], the [[United Kingdom]], the [[Second Polish Republic]], the [[Kingdom of Yugoslavia]], the [[Kingdom of Hungary (1920–46)|Kingdom of Hungary]], and [[Canada]]. The [[Thälmann Battalion]], a group of Germans, and the [[Garibaldi Battalion]], a group of Italians, distinguished their units during the [[Siege of Madrid]]. Americans fought in units such as the [[XV International Brigade]] ('Abraham Lincoln Brigade'), while Canadians joined the [[Mackenzie–Papineau Battalion]]. ||| Foreign involvement ||| Support for the Republicans ||| International Brigades +-1 War in Donbass ||| Battle of Debaltseve ||| Reports of Russian involvement continued into early 2015. Russian forces and equipment participated in the [[Second Battle of Donetsk Airport]] and the [[Battle of Debaltseve]]. ||| Russian involvement ||| ||| +-1 War of 1812 ||| Battle of Burnt Corn ||| The [[Battle of Burnt Corn]] between [[Red Stick]] Creeks and U.S. troops, occurred in the southern parts of Alabama on July 27, 1813 prompted the state of Georgia as well as the Mississippi territory militia to immediately take major action against Creek offensives. The Red Sticks chiefs gained power in the east along the Alabama, Coosa, and Tallapoosa Rivers – Upper Creek territory. The Lower Creek lived along the Chattahoochee River. Many Creeks tried to remain friendly to the United States, and some were organized by federal Indian Agent [[Benjamin Hawkins]] to aid the 6th Military District under [[Thomas Pinckney|General Thomas Pinckney]] and the state militias. The United States combined forces were large. At its peak the Red Stick faction had 4,000 warriors, only a quarter of whom had muskets. ||| Theatres of war ||| Southern theatre ||| Creek War +-1 War of the Fifth Coalition ||| Battle of Gefrees ||| In Saxony, a joint force of Austrians and [[Black Brunswickers|Brunswickers]] under the command of [[Michael von Kienmayer|General Kienmayer]] was far more successful, defeating a corps under the command of [[Jean-Andoche Junot|General Junot]] at the [[Battle of Gefrees]]. After taking the capital, Dresden, and pushing back an army under the command of Napoleon's brother, [[Jérôme Bonaparte]], the Austrians were effectively in control of all of Saxony. But by this time, the main Austrian force had already been defeated at Wagram and the [[armistice of Znaim]] had been agreed. ||| Course of War ||| Other theatres ||| Germany +-1 War of the Polish Succession ||| Siege of Philippsburg (1734) ||| The emperor mobilized his active forces in response to the French attacks, and began the process of calling up troops from the states of the empire, establishing a defensive line at [[Ettlingen]], near [[Karlsruhe]]. In the spring of 1734 French maneuvers successfully flanked this line, and [[Prince Eugene of Savoy]] was forced to withdraw these forces to the imperial encampment at [[Heilbronn]]. This cleared the way for the French army under the [[James FitzJames, 1st Duke of Berwick-upon-Tweed|Duke of Berwick]] to [[Siege of Philippsburg (1734)|besiege the imperial fort at Philippsburg]], which fell after a siege of two months in July 1734. Eugene, who was accompanied by [[Frederick II of Prussia|Crown Prince Frederick]] of [[Prussia]], made some attempts to relieve the siege, but never made any decisive attacks against the besieging army owing to its size and relatively poor quality of the troops under his command. Berwick was killed by a shell at Philippsburg. ||| War ||| Rhineland ||| +-1 War on Terror ||| Battle of Umm Qasr ||| The first ground attack came at the [[Battle of Umm Qasr]] on 21 March 2003 when a combined force of British, American and Polish forces seized control of the port city of [[Umm Qasr]]. {{cite book|author=John Ehrenberg|title=The Iraq Papers|url=https://books.google.com/books?id=AyQRB6Iov70C&pg=PT219|date=1 January 2010|publisher=Oxford University Press|isbn=978-0-19-539858-8|pages=219–225}} On 1 May 2003, [[2003 Mission Accomplished speech|Bush announced]] that major combat operations in Iraq had ended. ||| U.S. and NATO-led military operations ||| Iraq ||| Operation Iraqi Freedom +-1 War on Terror ||| War in North-West Pakistan ||| Support for the U.S. cooled when America made clear its determination to invade Iraq in late 2002. Even so, many of the 'coalition of the willing' countries that unconditionally supported the U.S.-led military action have sent troops to Afghanistan, particular neighboring Pakistan, which has disowned its earlier support for the Taliban and contributed tens of thousands of soldiers to the conflict. Pakistan was also engaged in the [[War in North-West Pakistan]] (Waziristan War). Supported by U.S. intelligence, Pakistan was attempting to remove the Taliban insurgency and al-Qaeda element from the northern tribal areas. ||| International military support ||| ||| +-1 Wars of the Roses ||| Battle of Edgecote Moor ||| By 1469, Warwick had formed an alliance with Edward's jealous and treacherous brother George, who married Isabel Neville in defiance of Edward's wishes in Calais. They raised an army that defeated the king's forces at the [[Battle of Edgecote Moor]]. Edward was captured at [[Olney, Buckinghamshire]], and imprisoned at [[Middleham Castle]] in Yorkshire. (Warwick briefly had ''two'' Kings of England in his custody.) Warwick had the queen's father, [[Richard Woodville, 1st Earl Rivers]], and her brother [[John Woodville|John]] executed. However, he made no immediate move to have Edward declared illegitimate and place George on the throne. Few of the nobles were prepared to support Warwick's seizure of power. Edward was escorted to London by Warwick's brother [[George Neville (archbishop)|George Neville]], the [[Archbishop of York]], where he and Warwick were reconciled, to outward appearances. ||| Warwick's rebellion and the death of Henry VI ||| ||| +-1 Western Front (World War I) ||| Battle of Cantigny ||| In May, the American divisions also began to play an increasing role, winning their first victory in the [[Battle of Cantigny]]. By summer, 300,000 American soldiers were arriving every month. A total of 2.1 million American troops would be deployed on this front before the war came to an end. The rapidly increasing American presence served as a counter for the large numbers of redeployed German forces. ||| 1918—Final offensives ||| German spring offensives ||| +-1 Western Front (World War I) ||| Battle of the Somme ||| Between 1915 and 1917 there were several major offensives along this [[Front (military)|front]]. The attacks employed massive [[artillery]] bombardments and massed [[infantry]] advances. However, a combination of entrenchments, machine gun nests, [[barbed wire]], and [[artillery]] repeatedly inflicted severe casualties on the attackers and counter-attacking defenders. As a result, no significant advances were made. Among the most costly of these offensives were the [[Battle of Verdun]], in 1916, with a combined 700,000 casualties (estimated), the [[Battle of the Somme]], also in 1916, with more than a million casualties (estimated), and the [[Battle of Passchendaele]], in 1917, with roughly 600,000 casualties (estimated). ||| ||| ||| +-1 Western Front (World War I) ||| Second Battle of Ypres ||| Despite the German plans to maintain the stalemate with the French and British, German commanders planned an offensive at the [[Belgium|Belgian]] town of [[Ypres]], which the British had [[First Battle of Ypres|defended]] in November 1914. This [[Second Battle of Ypres]] was intended to divert attention from offensives in the [[Eastern Front (World War I)|Eastern Front]] while disrupting Franco-British planning and to test a new weapon: the second mass use of [[chemical weapons]]. (Ypres is frequently cited as the first use of gas but this had occurred at [[Battle of Bolimów|Bolimow]], on the Eastern Front.) On 22 April, after a two-day bombardment, the Germans released [[Poison gas in World War I#1915: Large-scale use and lethal gases|168 tons]] of [[Chlorine|chlorine gas]] onto the battlefield. Being heavier than air, the gas crept across [[No man's land#World War I|no man's land]] and drifted into the British trenches.{{sfn|Fuller|1992|pp=172–3}} The green-yellow cloud [[asphyxia]]ted some defenders and those in the rear fled in [[panic]], creating an undefended {{convert|6|km|mi|adj=mid|-wide|0}} gap in the Allied line. The Germans were unprepared for the level of their success and lacked sufficient reserves to exploit the opening. Canadian troops quickly arrived and drove back the German advance. ||| 1915—Stalemate ||| Gas warfare ||| +-1 Western New Guinea campaign ||| Battle of Lone Tree Hill ||| * [[Battle of Lone Tree Hill]] ||| Major battles and sub-campaigns ||| ||| +-1 Williamite War in Ireland ||| Break of Dromore ||| By November 1688, only the walled city of [[Derry]] had a Protestant garrison. An army of around 1,200 men, mostly '''Redshanks''' ([[Scottish Highlands|slang for kilt-wearing Highlanders]]), under [[Alexander MacDonnell, 3rd Earl of Antrim]], was slowly organised (they set out on the week William of Orange landed in England). When they arrived on 7 December 1688 the gates were closed against them and the [[Siege of Derry]] began. While the Jacobites appeared to have great advantages in terms of numbers in Ireland, in fact, the troops raised by Tyrconnell were mainly hastily conscripted peasant bands, most of them poorly armed and trained. Nevertheless, a Jacobite force under [[Richard Hamilton (officer)|Richard Hamilton]] routed a Protestant Williamite militia in an encounter at [[Dromore, County Down]] (known as the [[Break of Dromore]]) on 14 March 1689 and occupied eastern Ulster. ||| Campaign in Ulster ||| ||| +-1 World War II ||| Battle of Manila (1945) ||| In the Pacific theatre, American forces accompanied by the forces of the [[Philippine Commonwealth]] advanced [[Philippines campaign (1944–45)|in the Philippines]], [[Battle of Leyte|clearing Leyte]] by the end of April 1945. They [[Battle of Luzon|landed on Luzon]] in January 1945 and [[Battle of Manila (1945)|recaptured Manila]] in March following a battle which reduced the city to ruins. Fighting continued on Luzon, [[Battle of Mindanao|Mindanao]], and other islands of the Philippines until the [[End of World War II in Asia|end of the war]]. ||| Course of the war ||| Axis collapse, Allied victory (1944–45) ||| +-1 World War II ||| Burma Campaign ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Second Sino-Japanese War ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +0 1809 Gottscheer Rebellion ||| Battle of Wagram ||| In April 1809, the [[Austrian Empire]] declared war against [[Napoleon I]] to start the War of the Fifth Coalition. After suffering some major setbacks, notably the [[Battle of Aspern-Essling]], the French swiftly triumphed over the Austrian commander [[Archduke Charles, Duke of Teschen|Archduke Charles]]. At the [[Battle of Wagram]], the French ultimately had already won the war. Following this battle, the French troops marched south to occupy [[Carniola]], and with it [[Gottschee County]]. ||| Background: War of the Fifth Coalition and Treaty of Schönbrunn ||| ||| +0 1939–40 Winter Offensive ||| Battle of Changsha (1939) ||| The Chinese had repulsed two Japanese offensives in the summer at the [[Battle of Suixian-Zaoyang]] and in fall at the [[Battle of Changsha (1939)|1st Battle of Changsha]]. They believed that the Japanese strength was now too dissipated to take and hold new territory and would not be able to launch large offensives unless they received more reinforcements. However defending on interior lines and with control of the lines of communication they could still shift forces and launch local offensives to damage Chinese forces or mop up guerrillas in the rear areas. Additionally during 1939, the Japanese were replacing many of their large four regiment square Divisions with the smaller three regiment triangular Divisions and weak Independent Mixed Brigades. This weakening of forces encouraged the Chinese to plan a large offensive to exploit that fact. ||| Strategic situation ||| ||| +0 1948 Arab–Israeli War ||| 1948 Palestinian exodus from Lydda and Ramle ||| Up to 450 Arabs and 9–10 Israeli soldiers were killed. The next day, Ramle fell. The civilian populations of Lydda and Ramle [[1948 Palestinian exodus from Lydda and Ramle|fled or were expelled]] to the Arab front lines, and following resistance in Lydda, the population there was expelled without provision of transport vehicles; some of the evictees died on the long walk under the hot July sun. {{cite book ||| Course of the war ||| Second phase: 8–18 July 1948 ||| Lydda and al-Ramla +0 1948 Arab–Israeli War ||| World War II ||| Many of the pilots who fought for the Israeli Air Force were [[Mahal (Israel)|foreign volunteers]] or mercenaries, including many [[World War II]] veterans. ||| Course of the war ||| First phase: 15 May – 11 June 1948 ||| Air operations +0 1978 South Lebanon conflict ||| 1982 Lebanon War ||| Hostilities continued, and as the Lebanese civil war escalated, the fighting intensified in the south again, with a [[1982 Lebanon War|second Israeli invasion]] in 1982 resulting in [[South Lebanon conflict (1982–2000)|a 1982 flare-up]] that persisted over the next decade. ||| Outcome of the war ||| ||| +0 1983 Beirut barracks bombing ||| 1983 United States embassy bombing ||| :'''18 April 1983''' -- The [[1983 United States embassy bombing|US Embassy bombing]] in Beirut killed 63, of whom 17 were Americans. ||| Beirut: June 1982 to October 1983 ||| Timeline ||| +0 1983 Beirut barracks bombing ||| Sabra and Shatila massacre ||| :'''16 September to 18 September 1982''' -- The [[Sabra and Shatila massacre|Sabra and Shatila]] massacres. ||| Beirut: June 1982 to October 1983 ||| Timeline ||| +0 1991 Yugoslav campaign in Croatia ||| Operation Stinger ||| The JNA intervened directly against Croatia for the first time on 3 July, driving Croatian forces out of [[Baranja]], north of the city of [[Osijek]], The attacks, codenamed [[Operation Stinger]], were carried out by the 7th Banija Division, spearheaded by the Knin special police led by [[Dragan Vasiljković]]. ||| Prelude ||| ||| +0 1995 Sri Lanka Air Force Avro 748 (CR834) shootdown ||| Eelam War III ||| The introduction of MANPADS by the LTTE against the SLAF marked a major shift of strategy by the LTTE in the onset of the [[Eelam War III]]. The acquisition of ex-[[Soviet Union|Soviet]] [[9K32 Strela-2]]s during the peace talks. SLAF aircraft were not equipped with warning systems or counter measures to defend them from [[surface-to-air missile]]s. Due to the loss of two aircraft with close to 100 officers and men killed, including five [[Military rank#Field or senior officers|senior officer]]s of the SLAF coupled with suspension of all flights to Jaffna, the two incidents had a major impact on the moral of the Sri Lankan armed forces. The [[No. 5 Squadron SLAF|No. 5 'Jet' Squadron]] responded with an attack sortie by two of its [[F-7 Skybolt]]s led by its commanding officer, [[Squadron Leader]] [[Harsha Abeywickrama]] and his wing man [[Flying Officer]] Janaka Wijetilleke on LTTE targets in front lines which ensured SLAF air operations over LTTE controlled areas would continue even with the SAM threat. In the long run SLAF would lose several more aircraft and was forced to retire its fleet of [[SIAI Marchetti SF.260]] and [[FMA IA 58 Pucará]] [[counter-insurgency aircraft]] replacing them with [[IAI Kfir]]s. ||| ||| ||| +0 2003 Special Olympics World Summer Games ||| 2003 invasion of Iraq ||| The 2003 World Games were the first to be held outside of the [[United States]]. Approximately 7000 athletes from 150 countries competed in the games in 18 official disciplines, and three exhibition sports. The participants from [[Kosovo]] were the region's first team at an international sporting event. A 12-member team from [[Iraq]] received special permission to attend the games, despite [[2003 invasion of Iraq|ongoing war]] in their home nation. ||| The Games ||| ||| +0 2004 Forward Operating Base Marez bombing ||| 1983 Beirut barracks bombing ||| Weeks before the attack, soldiers from the base intercepted a document that mentioned a proposal for a massive 'Beirut'-type attack on U.S. forces. The reference was apparently to the [[1983 Beirut barracks bombing]] in which 241 U.S. service members were killed. Following the discovery of the papers, commanders at the base — which is about three miles south of Mosul and is used by both U.S. troops and the interim Iraqi National Guard forces — ratcheted up already tight security. Ansar al-Sunnah said the suicide bomber was a 24-year-old man from Mosul who worked at the base for two months and had provided information about the base to the group. ||| After Attack ||| ||| +0 2004 Haitian coup d'état ||| Haitian Revolution ||| In 2003, Aristide requested that [[Haiti indemnity controversy|France pay Haiti over US$21 billion]], which he said was the equivalent in today's money of the 90 million gold francs Haiti was forced to pay Paris after [[Haitian Revolution|winning]] independence from France 200 years ago. ||| Events prior to the coup d'état ||| Aristide's request for reparations from France ||| +0 2011 Armenian protests ||| Arab Spring ||| With minor protests in [[Yerevan]] continuing and a [[revolutionary wave]] [[Arab Spring|spreading]] throughout [[North Africa]] and [[Western Asia]], opposition politicians like Stepan Safaryan of the [[Heritage (Armenia)|Heritage]] party and former President [[Levon Ter-Petrosyan]], who was defeated by now-President Sargsyan in the disputed 2008 election, of the [[Armenian National Congress]] (HAK) suggested in early February that political upheaval could come to Armenia. Ter-Petrosyan called for an opposition rally in Yerevan's Freedom Square on 18 February not just to protest the Karapetyan administration, but to protest the government of President [[Serzh Sargsyan]]. The government responded by saying Liberty Square would be off-limits due to 'sports and cultural events'. The HAK said it planned to rally in the square regardless of whether the city government and the national government allowed it to do so. Political analysts said national opposition leaders like Ter-Petrosyan were harnessing an existing wave of unrest inspired by the [[Tunisian Revolution]] and [[2011 Egyptian revolution|protests]] in [[Egypt]] and evident in such events as the ongoing street vendor protests, with some predicting that the conditions were right for major protests to gain traction. ||| Timeline of protests ||| Political protests ||| +0 2015 Bamako hotel attack ||| Operation Serval ||| Following the [[Libyan civil war]], many ethnic [[Tuareg people|Tuareg]] who had fought for the [[Gaddafi]] government and the rebels took their weapons and left for [[Azawad]] (A region in Northern Mali that the [[National Movement for the Liberation of Azawad]] (MNLA) wants to be an independent state). Following several previously failed [[Tuareg rebellion]]s,<!--intentional link to disambiguation page--> the MNLA managed to take over the area and [[Azawadi declaration of independence|declare independence]]. However, the secular movement was soon overrun by [[Islamist]]-oriented groups such as [[MOJWA]] and [[Ansar Dine]]. The French launched [[Operation Serval|a military operation]] that ousted the rebels, However, [[Northern Mali conflict|simmering tensions]] and irregular incidents continued to occur. The [[Macina Liberation Front]] is a new jihadist group operating in central and southern Mali led by the radical Muslim cleric [[Amadou Kouffa]], a strong proponent of strict Islamic law in Mali. The group draws most of its support from the [[Fulani people|Fulani]] ethnic group, who are found across the [[Sahel region]]. Kouffa is a close ally of Ansar Dine leader [[Iyad ag Ghali]]. A Human Rights Watch report said the Macina Liberation Front militants had carried out serious abuses in parts of central Mali since January and killed at least five people they accused of being aligned to the government. The group has attacked police and military particularly in the Mopti region, most recently killing three soldiers in Tenenkou in August. The Malian military recently arrested Alaye Bocari, a man they say was a key MLF financier and Kouffa's right-hand man. ||| Background ||| ||| +0 Action of 16 October 1799 ||| Action of 26 April 1797 ||| Other Spanish ports were also blockaded with the intention of limiting Spanish trade and movement and intercepting treasure convoys from the colonies of [[New Spain]] and South America. Vast quantities of gold, silver and valuable trade goods crossed the Atlantic in regular armed [[frigate]] convoys. but during the first three years of conflict between Great Britain and Spain only one treasure convoy had been intercepted, near Cádiz at the [[Action of 26 April 1797]], and on that occasion the treasure was smuggled ashore before the convoy was seized. ||| Background ||| ||| +0 Action of 22 January 1783 ||| Invasion of France (1795) ||| Kergariou himself moved to England five years later at the outbreak of the [[French Revolution]]; in 1795, he was part of a Royalist band supported by the British government and took part in the attempted [[Invasion of France (1795)|Invasion of France]] in 1795. At the [[Invasion of France (1795)|Battle of Quiberon]], he was captured by Hoche's troops, sentenced to death and shot. ||| Aftermath ||| ||| +0 Action of 6 November 1794 ||| French Revolution ||| In February 1793, following years of rising tension, the [[First French Republic|French Republic]] that had emerged from the [[French Revolution]] declared war on the [[Kingdom of Great Britain]]. ||| Background ||| ||| +0 Air raids on Japan ||| Aleutian Islands Campaign ||| Following the Doolittle Raid, the next air attacks on Japan were made against the [[Kuril Islands]] in mid-1943. The liberation of Alaska's [[Attu Island]] in May 1943 during the [[Aleutian Islands Campaign]] provided the USAAF with bases within range of the Kurils. As part of the preparations for the liberation of [[Kiska Island]] in the Aleutians, the [[Eleventh Air Force]] conducted a series of raids against the Kurils to suppress the Japanese air units stationed there. The first of these attacks was made against southern [[Shumshu]] and northern [[Paramushir]]u by eight B-25s on 10 July. The Kurils were attacked again on 18 July by six B-24 Liberator heavy bombers, and the unopposed liberation of Kiska ([[Operation Cottage]]) took place on 15 August. ||| Early raids ||| Bombing of the Kuril Islands ||| +0 Aleutian Islands Campaign ||| Battle of Midway ||| The battle is known as the 'Forgotten Battle', due to being overshadowed by the simultaneous [[Guadalcanal Campaign]]. In the past, many western military historians believed it was a diversionary or feint attack during the [[Battle of Midway]] meant to draw out the [[United States Pacific Fleet|U.S. Pacific Fleet]] from [[Midway Atoll]], and was in fact launched simultaneously under the same overall commander, [[Isoroku Yamamoto]]. However, historians Jonathan Parshall and Anthony Tully have made an argument against this interpretation, stating that the Japanese invaded the Aleutians to protect the northern flank of their empire and did not intend it as a diversion. ||| ||| ||| +0 Aleutian Islands Campaign ||| Guadalcanal Campaign ||| The battle is known as the 'Forgotten Battle', due to being overshadowed by the simultaneous [[Guadalcanal Campaign]]. In the past, many western military historians believed it was a diversionary or feint attack during the [[Battle of Midway]] meant to draw out the [[United States Pacific Fleet|U.S. Pacific Fleet]] from [[Midway Atoll]], and was in fact launched simultaneously under the same overall commander, [[Isoroku Yamamoto]]. However, historians Jonathan Parshall and Anthony Tully have made an argument against this interpretation, stating that the Japanese invaded the Aleutians to protect the northern flank of their empire and did not intend it as a diversion. ||| ||| ||| +0 Algeciras Campaign ||| War of the Second Coalition ||| On 1 August 1798, a British fleet surprised and almost completely destroyed the French Mediterranean Fleet at the [[Battle of the Nile]] in the aftermath of the successful French invasion of [[Egypt]]. This immediately reversed the strategic situation in the [[Mediterranean Sea]], eliminating the French fleet based at [[Toulon]] as a significant threat and granting the British and their allies in the [[War of the Second Coalition]] naval dominance in the region. ||| Background ||| ||| +0 Allied invasion of Sicily ||| Operation Mincemeat ||| * [[Operation Barclay]]/[[Operation Mincemeat]]: Deception operations aimed at misleading Axis forces as to the actual date and location of the Allied landings. ||| Constituent operations ||| ||| +0 Anti-austerity movement in Spain ||| Carnation Revolution ||| According to a reporter from ''[[El País]]'', many protesters wore carnations, imitating protesters during the Portuguese [[Carnation Revolution]]. In addition, protesters organized a food stand, which provided food donated by local businesses, and set up a [[webcam]] to provide news from Puerta del Sol through the website ''[[Ustream.tv]]''. The protesters were advised not to drink alcohol or to organize into groups of more than 20 people, as these acts could provoke a legal police crackdown. ||| 2011 events ||| May 2011 ||| 18 May +0 April 2009 Baghdad bombings ||| 2003 invasion of Iraq ||| Despite a seeming decline in violence since the [[2003 invasion of Iraq]], the capability of many armed groups to strike with deadly results still exists. Though the government insists it is only detaining those wanted for grave crimes, certain fighters – many of them former insurgents – see it as settling sectarian scores. ||| Background ||| ||| +0 Arab–Byzantine wars ||| Abbasid invasion of Asia Minor (806) ||| | source = Poem in praise of Harun al-Rashid's [[Abbasid invasion of Asia Minor (806)|806 campaign]] against Byzantium ||| Stabilization of the frontier, 718–863 ||| The early Abbasids ||| +0 Arauco War ||| Chilean War of Independence ||| The [[Chilean War of Independence]] brought new hostilities to the frontier, with different factions of Spaniards, Chileans and Mapuches fighting for independence, royalism or personal gain. Mapuche independence finally ended with the Chilean [[occupation of Araucanía]] between 1861 and 1883. The modern [[Mapuche conflict]] is partially inspired in the Arauco War. ||| ||| ||| +0 Attack on Sydney Harbour ||| Battle of Rennell Island ||| The two main targets of the attack, USS ''Chicago'' and HMAS ''Canberra'', were both lost within the next year: ''Canberra'' sinking on 9 August 1942 during the [[Battle of Savo Island]], and ''Chicago'' on 30 January 1943 following the [[Battle of Rennell Island]]. Lastly, {{USS|Sawfish|SS-276|6}} sank ''I-29'' on 26 July 1944 in the [[Philippines]]. ||| Aftermath ||| ||| +0 Attacks on the Butte de Warlencourt ||| Battle of Le Transloy ||| During the [[Battle of Le Transloy]] (1–20 October), part of the [[Battle of the Somme (1916)|Battle of the Somme]], the Butte de Warlencourt was the subject of several attacks by the [[British Fourth Army]], which were costly failures; attacks in November also failed. The [[Australian 2nd Division|2nd Australian Division]] occupied the Butte on 24 February 1917, during the German retirements made on the Somme front, preparatory to [[Alberich (World War I German operation)|Operation Alberich]], the retreat to the [[Hindenburg Line]]. The Butte de Warlencourt was recaptured by the German 2nd Army on 24 March 1918, during the retreat of the [[2nd Infantry Division (United Kingdom)|2nd Division]] in [[Operation Michael]], the German spring offensive. The butte was recaptured for the last time on 26 August, by the [[21st Division (United Kingdom)|21st Division]], during the [[Second Battle of Bapaume]]. In 1990, the site was purchased for preservation by the [[Western Front Association]]. ||| ||| ||| +0 Baltic Sea campaigns (1939–45) ||| Battle of Narva (1944) ||| The Soviets began to defeat the Axis on land in 1944, lifting the Siege of Leningrad and relieving the Oranienbaum Bridgehead in January. In February 1944, a Soviet [[Narva Offensive (15–28 February 1944)#Mereküla Landing|amphibious assault]] on the south coast of the Gulf of Finland was repelled. [[Battle of Narva (1944)|Resisting]] at the Estonian border, the Axis maintained a minefield blockade until September, when [[Moscow Armistice|Finland signed peace]] with the Soviet Union, and Army Group North [[Operation Aster|retreated from Estonia]]. The ''Kriegsmarine'' lost several minesweepers and the anti-aircraft cruiser [[HNLMS Gelderland (1898)|''Niobe'']] in the process. Three German [[Elbing class torpedo boat|''Elbing''-class]] torpedo boats—''T-22'', ''T-30'' and ''T-32''—were also lost after running into a minefield in August 1944. ||| Campaigns on the Baltic Sea ||| Operations in 1944 ||| +0 Baltic Sea campaigns (1939–45) ||| Operation Barbarossa ||| At the start of the [[Operation Barbarossa]] on 21 June 1941 German naval forces in the Baltic Sea consisted of <!-- If some one has better sources please use them, the Finnish book used is vague at best --> ||| Participants ||| ''Kriegsmarine'' ||| +0 Battle for Brest ||| Operation Market Garden ||| Decision was made to favor the British forces under Sir [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Law Montgomery]] by reducing the supplies to other forces, including Patton's. The unsuccessful [[Operation Market Garden]] launched by Montgomery soon after, however, did not allow the Allies to resume their rapid advance which was being stalled at [[Antwerp]] in Belgium. The Germans were able to reorganize and even counterattack (the [[Battle of the Bulge]]). By then, however, the region of Antwerp was secured, its port operating and supplying the Allies. ||| Aftermath ||| ||| +0 Battle for Narva Bridgehead ||| Battle of Narva (1944) ||| ''This is a sub-article to [[Battle of Narva (1944)|Battle of Narva]].'' ||| ||| ||| +0 Battle for Narva Bridgehead ||| Eastern Front (World War II) ||| The '''Battle of Narva Bridgehead''' (Estonian: ''Narva lahingud''; German: ''Schlacht um den Brückenkopf von Narva''; Russian: ''Битва за плацдарм Нарва''; 2 February – 26 July 1944) was the campaign that stalled the Soviet Estonian Operation in the surroundings of the town of [[Narva]] for six months. It was the first phase of the [[Battle of Narva (1944)|Battle of Narva]] campaign fought at the [[Eastern Front (World War II)|Eastern Front]] during [[World War II]], the second phase being the [[Battle of Tannenberg Line]]. ||| ||| ||| +0 Battle for Velikiye Luki ||| Battle of Stalingrad ||| The battle is sometimes called 'The Little Stalingrad of the North' due to its similarities with the larger and better-known [[Battle of Stalingrad]] that raged simultaneously in the southern sector of the front. Judged purely by the numbers, this battle was a small affair by the usual standards of the Eastern Front (150,000 total casualties suffered by both sides as opposed to 2,000,000 total casualties at Stalingrad), but had enormous strategic consequences. The liberation of Velikiye Luki meant the Red Army had, for the first time since October 1941, a direct rail supply line to the northern face of the Rzhev Salient exposing the German troops defending Rzhev to encirclement. Events at Velikiye Luki thus necessitated the withdrawal from Rzhev salient ending any German military threat to Moscow. However, even after withdrawing from Rzhev, possession of Velikiye Luki meant that the rail link between Army groups North and Centre was severed, preventing the [[German Army (Wehrmacht)|German Army]] from shifting reinforcements between threatened sectors. Furthermore, the rail lines from Velikiye Luki led directly into the rear of [[Vitebsk]], a critical logistics hub for Army Group Centre. The effects of this battle meant that Army Group Centre was exposed to attack from the north, east, and (after the [[Battle of Smolensk (1943)]]) south, exposing the whole army group to mass encirclement, which is exactly what happened in the massive [[Operation Bagration]] the following year. ||| Aftermath ||| ||| +0 Battle of Aberdeen (1646) ||| Scotland in the Wars of the Three Kingdoms ||| The '''Battle of Aberdeen''' was fought on 14 May 1646 during the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]]. [[George Gordon, 2nd Marquis of Huntly|George, Marquis of Huntly]] the commander of a [[Cavalier|Royalist]] force, defeated a force of [[Covenanter]]s under the command of [[Hugh Montgomerie, 7th Earl of Eglinton|Hugh, Lord Montgomerie]]. ||| ||| ||| +0 Battle of Ajdabiya ||| 2011 military intervention in Libya ||| With a [[2011 military intervention in Libya|no-fly zone]] put in place on 19 March, and air-strikes on Gaddafi's force's supply and tank convoys, the rebels on 20 March, started an advance from Benghazi to attempt to reach Ajdabiya. ||| Events ||| Second phase ||| +0 Battle of Alesia ||| Battle of Munda ||| Caesar's cavalry commanders followed different paths. Labienus sided with the [[Optimates]], the conservative aristocratic faction in the civil war, and was killed at the [[Battle of Munda]] in 45 BC. [[Trebonius]], one of Caesar's most trusted lieutenants, was appointed consul by Caesar in 45 BC, and was one of the senators involved in Caesar's assassination on the [[Ides of March]] (March 15), 44 BC. He was himself murdered a year later. Antony continued to be a faithful supporter of Caesar. He was made Caesar's second in command, as [[Master of the Horse]], and was left in charge in Italy during much of the civil war. In 44 BC he was elected as Caesar's consular colleague. After Caesar's murder, Antony pursued Caesar's assassins and vied for supreme power with [[Augustus|Octavian]] (later to become [[Caesar Augustus]]), first forming an alliance with Octavian and [[Marcus Aemilius Lepidus (triumvir)|Marcus Aemilius Lepidus]] in the [[Second Triumvirate]], then being defeated by him at the [[Battle of Actium]] in 31 BC. Along with his ally and lover, queen [[Cleopatra VII of Egypt|Cleopatra]], he fled to [[Egypt]], where they committed suicide the following year. ||| Aftermath ||| ||| +0 Battle of Almenar ||| Battle of Saragossa ||| The Borbonic troops had to leave [[Catalonia]] and withdraw to [[Aragón]], where the [[Battle of Saragossa]] took place on August 20. ||| Aftermath ||| ||| +0 Battle of Arras (1917) ||| Battle of Verdun ||| The British plan was well developed, drawing on the lessons of the [[Battle of the Somme|Somme]] and [[Battle of Verdun|Verdun]] of the previous year. Rather than attacking on an extended front, the full weight of artillery would be concentrated on a relatively narrow stretch of eleven miles, from Vimy Ridge in the north to Neuville Vitasse, four miles south of the Scarpe river. During the assault, the troops would advance in open formation, with units leapfrogging each other in order to allow them time to consolidate and regroup. Before the action could be undertaken, a great deal of preparation was required, much of it innovative. ||| Preliminary phase ||| ||| +0 Battle of Arras (1940) ||| Battle of France ||| The '''Battle of Arras''' (1940) took place during the [[Battle of France]] of the [[World War II|Second World War]]. It was an [[Allies of World War II|Allied]] [[counterattack|counter-attack]] against the [[Flanking maneuver|flank]] of the [[German Army (Wehrmacht)|German army]], near the town of [[Arras]], in north-eastern France. The German forces were pushing north towards the [[English Channel|channel coast]], to trap the Allied forces that had advanced east into [[Belgium]]. The counter-attack at Arras was an Allied attempt to cut through the German armoured spearhead and frustrate the German advance. Although the Allies initially made gains, they were repulsed by German forces and forced to withdraw to avoid [[encirclement]]. ||| ||| ||| +0 Battle of Attu ||| Aleutian Islands Campaign ||| The '''Battle of Attu''', which took place from 11–30 May 1943, was fought between forces of the [[United States]], aided by Canadian reconnaissance and fighter-bomber support, and the [[Empire of Japan]] on [[Attu Island]] off the coast of the [[Territory of Alaska]] as part of the [[Aleutian Islands Campaign]] during the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] and was the only [[land battle]] of [[World War II]] fought on [[incorporated territory]] of the United States. It is also the only land battle in which Japanese and American forces fought in [[Arctic]] conditions. ||| ||| ||| +0 Battle of Barren Hill ||| Battle of Monmouth ||| The British, having failed to bag Lafayette, resumed their retreat from Philadelphia to New York. Washington's army shadowed Clinton on his withdrawal and forced a [[Battle of Monmouth|battle at Monmouth]] on June 28, 1778, the last major battle in the North. ||| Aftermath ||| ||| +0 Battle of Basra (2008) ||| Battle of Basra (2003) ||| During the [[invasion of Iraq]], Basra was the first city to fall to Coalition forces, following [[Battle of Basra (2003)|two weeks of fighting]] between the British and Iraqi forces. Following the collapse of the Iraqi government, a number of [[Shi'ite]] Islamist groups, including the [[Sadrist Trend]] led by [[Muqtada al-Sadr]], the [[Supreme Islamic Iraqi Council]] and [[Islamic Virtue Party|Fadhila]], were able to expand their influence in Basra, solidifying their standing following the January 2005 elections. Basra became a center of smuggling activity in Iraq, including cigarette smuggling, opium from Afghanistan which transits Iran, oil and gas smuggling, illegal weapons, and other criminal rackets. Violence steadily increased as the three parties vied for control of Basra's resources, continuing through 2005 and 2006. At the same time, attacks on British forces increased following the use of highly sophisticated [[explosively formed penetrators]] (EFPs) smuggled in by Iran restricting the British to their bases, which militia then targeted with rocket and mortar fire on a regular basis. The Mahdi Army also enforced strict Islamic rule in Basra, threatening women for wearing makeup and punishing individuals for playing secular Western and Arabic music. {{cite web ||| Background ||| ||| +0 Battle of Beirut (1941) ||| Battle of Damour ||| On 8 July, even before the fall of [[Battle of Damour|Damour]], the [[Vichy French]] commander—General [[Henri Dentz]]—had sought an armistice: the advance on [[Beirut]] together with the Allied capture of [[Battle of Damascus (1941)|Damascus]] in late June and the rapid advance of Allied troops into [[Syria]] from [[Iraq]] in early July to capture [[Battle of Deir ez Zor|Deir ez Zor]] and then push on towards [[Aleppo]] had made the Vichy position untenable. ||| ||| ||| +0 Battle of Belgium ||| Battle of the Netherlands ||| [[Army Group B]] was commanded by [[Fedor von Bock]]. It was allocated 26 infantry and three Panzer divisions for the invasion of the Netherlands and Belgium.{{sfn|Bond|1975|p=20}} Of the three Panzer Divisions, the [[3rd Panzer Division (Wehrmacht)|3rd]] and [[4th Panzer Division|4th]] were to operate in Belgium under the command of the 6th Army's [[XVI Army Corps (Wehrmacht)|XVI Corps]]. The [[9th Panzer Division]] was attached to the [[18th Army (Wehrmacht)|18th Army]] which, after the [[Battle of the Netherlands]], would support the push into Belgium alongside the 18th Army and cover its northern flank. ||| Forces involved ||| German forces ||| +0 Battle of Belgium ||| Schlieffen Plan ||| On 10 January 1940, in an episode known as the [[Mechelen Incident]], a German Army [[Major]] Hellmuth Reinberger crash-landed in a [[Messerschmitt Bf 108]] near [[Maasmechelen|Mechelen-aan-de-Maas]].{{sfn|Bond|1990|p=35}} Reinberger was carrying the first plans for the German invasion of western Europe which, as Gamelin had expected, entailed a repeat of the 1914 [[Schlieffen Plan]] and a German thrust through the Belgium (which was expanded by the ''Wehrmacht'' to include the Netherlands) and into France. ||| Pre-battle plans ||| Belgian military strategy ||| +0 Battle of Biak ||| Battle of Iwo Jima ||| The capture of [[Biak Island]] cost the Americans nearly 3,000 casualties, with 474 killed and 2,428 wounded. From their good service on Biak and other Pacific islands, the 41st received another nickname: the Jungleers. The Japanese fought to annihilation, with 6,100 killed and 450 submitting to being captured. In addition, some 4,000 Japanese were unaccounted for, missing in action and presumed dead. Biak was a grinding, shot-for-shot battle. The Japanese tactics of allowing the landing and delaying their firing until there were a great many targets were repeated at the [[Battle of Peleliu]], the [[Battle of Iwo Jima]], and the [[Battle of Okinawa]]. The losses suffered in these battles convinced the [[United States Marines|United States Marine Corps]] and the [[United States Army]] that ultimate victory would be costly, not only in time and equipment, but in the far more valuable lives of their servicemen. ||| Aftermath ||| ||| +0 Battle of Bladensburg ||| Burning of Washington ||| The '''Battle of Bladensburg''' took place during the [[War of 1812]]. The defeat of the American forces there allowed the [[United Kingdom of Great Britain and Ireland|British]] to [[Burning of Washington|capture and burn the public buildings]] of [[Washington, D.C.]] It has been called 'the greatest disgrace ever dealt to American arms'. ||| ||| ||| +0 Battle of Blair Mountain ||| Coal Wars ||| ''See also [[Coal Wars]].'' ||| Background ||| ||| +0 Battle of Boonville ||| Battle of Westport ||| A second result of the battle was demoralization. While the Missouri State Guard would fight and win on other days (most notably at [[Battle of Wilson's Creek|Wilson's Creek]] and Lexington just two and three months later, respectively), it was badly dispirited by this early defeat. Lyon's victory gave the Union forces time to consolidate their hold on the state, while Marmaduke's disappointment led him to resign from the Missouri State Guard and seek a regular commission in the Confederate Army. Marmaduke and Price would team up again during Price's [[Price's Missouri Raid|Missouri Raid]] of 1864, culminating in their defeat at the [[Battle of Westport]] on October 23 of that year, which in turn put an end to significant Confederate operations in the state. ||| Casualties and impact ||| ||| +0 Battle of Borodino ||| War of 1812 ||| It is not unusual for a pivotal battle of this time period to be difficult to document. Similar difficulties exist with other examples such as the [[Battle of Waterloo]] or other battles that took place in the [[War of 1812]] in North America, while the Battle of Borodino offers its own particular challenges to accuracy. ||| End of the battle ||| Historiography ||| +0 Battle of Boulogne (1940) ||| Battle of Arras (1940) ||| The '''Battle of Boulogne''' was the defence of the port of [[Boulogne-sur-Mer]] by French, British and Belgian troops, during the [[Battle of France]] in 1940. The battle was fought at the same time as the [[Siege of Calais (1940)|Siege of Calais]], just before [[Operation Dynamo]], the evacuation of the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) through [[Dunkirk]]. After the Franco-British counter-attack at the [[Battle of Arras (1940)|Battle of Arras]] (21 May) German units were held ready to resist a resumption of the attack on 22 May, despite the protests of General [[Heinz Guderian]], the commander of XIX Corps, who wanted to rush north up the Channel coast to capture Boulogne, Calais and Dunkirk. An attack by part of the XIX Corps was not authorised until {{nowrap|12:40 p.m.}} on 22 May, by when the Allied troops at Boulogne had been reinforced from England by most of the [[20th Independent Infantry Brigade (Guards)|20th Guards Brigade]]. ||| ||| ||| +0 Battle of Bull's Ferry ||| Northern theater of the American Revolutionary War after Saratoga ||| The '''Battle of Bull's Ferry''' on 20 and 21 July 1780 saw two American brigades under [[Brigadier General]] [[Anthony Wayne]] attack a party of [[Loyalist (American Revolution)|Loyalist Americans]] led by Thomas Ward. The Loyalists successfully defended a blockhouse against an ineffective bombardment by four American artillery pieces and a failed attempt to storm the position by Wayne's infantry. During the action, American light dragoons under Major [[Light Horse Harry Lee]] drove off a large number of cattle that were kept in the area for the use of the [[British Army during the American War of Independence|British army]] in [[New York City]]. The clash inspired British Major [[John André]] to write a satirical ballad entitled ''The Cow Chace''. The skirmish was fought at [[Bulls Ferry]], [[New Jersey]] in the [[Northern theater of the American Revolutionary War after Saratoga]]. At this stage of the conflict only raids and minor actions occurred in the north. ||| ||| ||| +0 Battle of Caldiero (1809) ||| Battle of Piave River (1809) ||| After the rough handling of his light brigade, the viceroy expanded it into a light division and put General of Brigade [[Joseph Marie, Count Dessaix]] at its head. He added three additional ''voltiguer'' battalions, two more cannons, and the 9th [[Chasseurs à Cheval]] Regiment. The new division was destined to play a key role in Eugène's victory at the [[Battle of Piave River (1809)|Battle of Piave River]] on 8 May 1809. ||| Result ||| ||| +0 Battle of Camden ||| Battles of Saratoga ||| Following the British [[Battles of Saratoga|defeat at Saratoga]] in 1777 and French entry into the [[American Revolutionary War]] in early 1778, the British decided to renew a '[[Southern theater of the American Revolutionary War|southern strategy]]' to win back their rebellious North American colonies. This campaign began in December 1778 with the [[Capture of Savannah|capture of Savannah, Georgia]], and gained further ground in January 1780, when General [[Henry Clinton (1730–1795)|Sir Henry Clinton]] led an army and [[Siege of Charleston|captured Charleston, South Carolina]]. Clinton returned to New York in the summer of 1780, leaving Lord Cornwallis the task of fortifying the South and raising the anticipated large numbers of [[Loyalist (American Revolution)|Loyalists]]. The [[Continental Army]] in the south, most of which had surrendered at Charleston, was completely driven from [[South Carolina]] in the May 1780 [[Battle of Waxhaws]]. ||| Background ||| ||| +0 Battle of Cepeda (1820) ||| Peruvian War of Independence ||| Supreme Director [[José Rondeau]] called back the Armies that were fighting the [[Argentine War of Independence]] to fight the Federals. The [[Army of the Andes]], commanded by [[José de San Martín]] refused to abandon the offensive against the [[Royalist (Spanish American Revolution)|royalists]] in [[Chilean War of Independence|Chile]] and [[Peruvian War of Independence|Peru]]. The [[Army of the North]], commanded by [[Manuel Belgrano]], [[Arequito Revolt|mutinied at Arequito]], as the troops and the officiality refused to fight a [[Argentine Civil War|civil war]], and asked instead to go back to the [[Upper Peru|northern frontier]] to fight the royalists. ||| ||| ||| +0 Battle of Chillianwala ||| Battle of Ramnagar ||| Gough took charge of the Army on 21 November. The next day, he attacked Sher Singh's bridgehead on the left bank of the Chenab at [[Battle of Ramnagar|Ramnagar]] but was repulsed, raising Sikh morale. On 1 December, a cavalry division under Major General [[Joseph Thackwell]] crossed the Chenab upstream from Ramnagar. Sher Singh advanced against him, resulting in a day-long artillery duel at Sadullapur. Gough meanwhile bombarded the empty Sikh positions at Ramnagar, and postponed a general attack until the next day. During the night, Sher Singh withdrew to the north. ||| Prelude ||| ||| +0 Battle of Chongju (1950) ||| Battle of Pakchon ||| During the last weeks of October the Chinese had moved 18 divisions of the [[People's Volunteer Army]] across the Yalu River under the overall command of Marshal [[Peng Dehuai]] in order to reinforce the remnants of the KPA. Undetected by US and South Korean intelligence, the 13th Army Group crossed the border on 16 October and penetrated up to {{convert|100|km|mi}} into North Korea, and were reinforced in early November by 12 divisions from the 9th Army Group; in total 30 divisions composed of 380,000 men. Walsh, by then an observer at US Eighth Army headquarters, was urgently posted to resume command of 3 RAR following Green's death, however he was relieved of his position by Coad just six days later in the wake of the [[Battle of Pakchon]] on 5 November that cost the battalion heavily, losing 12 killed and 64 wounded despite killing 200 Chinese. The battalion second-in-command, [[Major (Australia)|Major]] [[Ian Bruce Ferguson|Bruce Ferguson]], subsequently assumed command. ||| Aftermath ||| Subsequent operations ||| +0 Battle of Chuam-ni ||| Operation Killer ||| With the Chinese and North Korean forces withdrawing, a United Nations offensive was undertaken, known as [[Operation Killer]]. It was found that 68 soldiers of 'L Company' had been killed by Chinese forces while sleeping and were found still in their sleeping bags. ||| Aftermath ||| ||| +0 Battle of Cobleskill ||| Battles of Saratoga ||| With the failure of British General [[John Burgoyne]]'s [[Saratoga campaign|campaign to the Hudson]] after the [[Battles of Saratoga]] in October 1777, the [[American Revolutionary War]] in upstate [[New York]] became a frontier war. ||| Background ||| ||| +0 Battle of Cold Harbor ||| Battle of Chancellorsville ||| Some authors (Catton, Esposito, Foote, McPherson, Grimsley) estimate the casualties for the major assault on June 3 and all agree on approximately 7,000 total Union casualties, 1,500 Confederate. Gordon Rhea, considered the preeminent modern historian of Grant's Overland campaign, has examined casualty lists in detail and has published a contrarian view in his 2002 book, ''Cold Harbor''. For the morning assault on June 3, he can account for only 3,500 to 4,000 Union killed, wounded, and missing, and estimates that for the entire day the Union suffered about 6,000 casualties, compared to Lee's 1,000 to 1,500. Rhea noted that although this was a horrific loss, Grant's main attack on June 3 was dwarfed by Lee's daily losses at [[Battle of Antietam|Antietam]], [[Battle of Chancellorsville|Chancellorsville]], and [[Pickett's Charge]], and is comparable to [[Battle of Malvern Hill|Malvern Hill]]. ||| Aftermath ||| ||| +0 Battle of Coral–Balmoral ||| Operation Coburg ||| The [[Tet Offensive|Tet offensive]] began on 31 January 1968, with 85,000 to 100,000 North Vietnamese and Viet Cong troops simultaneously assaulting population centres and allied installations across South Vietnam in an attempt to incite a general uprising against the South Vietnamese government and its American supporters. In response, 1 ATF was deployed along likely infiltration routes in order to defend the vital [[Bien Hoa]]-[[Long Binh]] complex near [[Saigon]] between January and March, as part of [[Operation Coburg]]. Heavy fighting resulted in 17 Australians killed and 61 wounded, while communist casualties included at least 145 killed, 110 wounded and five captured, with many more removed from the battlefield. Meanwhile, the remaining Australian forces in Phuoc Tuy were stretched thin, with elements of 3 RAR successfully repelling an assault on [[Ba Ria]] and later spoiling a harassing attack on [[Long Dien]] and conducting a sweep of Hoa Long, killing 50 Viet Cong and wounding 25 for the loss of five killed and 24 wounded. ||| Background ||| Military situation ||| +0 Battle of Cropredy Bridge ||| Battle of Lostwithiel ||| Waller's army shortly became demoralised, and immobilised by desertions and mutinies by men unwilling to serve far from their homes, chiefly those drawn from London. Charles could afford to ignore Waller and march into the West Country after Essex, forcing Essex's army to surrender at [[Battle of Lostwithiel|Lostwithiel]]. ||| Aftermath ||| ||| +0 Battle of Culloden ||| Battle of Prestonpans ||| [[Charles Edward Stuart]], known as 'Bonnie Prince Charlie' or the 'Young Pretender', arrived in Scotland in 1745 to incite a rebellion of Stuart sympathizers against the House of Hanover. He successfully raised forces, mainly of [[Scottish Highlands|Scottish Highland]] [[Scottish clan|clansmen]], and slipped past the [[House of Hanover|Hanover]]ian stationed in [[Scotland]] and defeated a force of [[militiamen]] at the [[Battle of Prestonpans]]. The city of [[Edinburgh]] was occupied, but the castle held out and most of the Scottish population remained hostile to the rebels; others, while sympathetic, were reluctant to lend overt support to a movement whose chances were unproven. The British government recalled forces from the [[War of the Austrian Succession|war with France in Flanders]] to deal with the rebellion. ||| Background ||| ||| +0 Battle of Cádiz (1656) ||| First Anglo-Dutch War ||| After the ending of the [[First Anglo-Dutch War|Anglo-Dutch War]], [[Oliver Cromwell]] turned his attention to England's traditional enemy, Spain. He was seeking a return to a policy of attacks on Spanish trade and shipping routes, whose success in the time [[Elizabeth I of England|Elizabeth I]] had acquired a legendary status. ||| ||| ||| +0 Battle of Dachen Archipelago ||| Battle of Yijiangshan Islands ||| The Communists had already targeted Dachen Archipelago when they attacked [[Yijiangshan Islands]], but the Communists were incapable of simultaneously taking both. When the Communists bombed Dachen Archipelago during the [[Battle of Yijiangshan Islands]], it was mainly to prevent the Nationalist garrison of Dachen Archipelago from reinforcing [[Yijiangshan Islands]]. In fact, from November 1, 1954 to November 4, 1954, the Communist air force flew 49 sorties to bomb Dachen Archipelago, but none of the 721 bombs dropped hit their intended targets. On November 10, 1954, the Communist bombers flew 28 sorties and communist fighters flew 46 sorties in support of the bombers to strike Nationalist warships in the Dachen Archipelago, but only resulted in minor damages of a mere five warships. ||| Prelude ||| ||| +0 Battle of Doberdò ||| Sixth Battle of the Isonzo ||| The battle, which was part of the [[Sixth Battle of the Isonzo]], took place on a strategic area the westernmost edge of the [[Kras]] plateau. The Italians, who conquered the lowland area around [[Monfalcone]] and [[Ronchi dei Legionari|Ronchi]], tried to force themselves over the Kras Plateau in order to gain control over the main road linking the port city of [[Trieste]] to the town of [[Gorizia]]. After fierce fighting and huge casualties, they succeeded in their attempts. The Austro-Hungarian forces retreated and Gorizia fell to the Italians. They, however, didn't succeed in forcing their way to Trieste, and were stopped north-west of [[Duino]]. ||| ||| ||| +0 Battle of Dresden ||| Battle of Kulm ||| The '''Battle of Dresden''' was fought on 26–27 August 1813 around [[Dresden]], Germany, resulting in a French victory under [[Napoleon]] against forces of the [[Sixth Coalition]] of [[Austrian Empire|Austria]]ns, [[Imperial Russia|Russia]]ns and [[Prussia]]ns under [[Field Marshal]] [[Karl Philipp Fürst zu Schwarzenberg|Schwartzenberg]]. However, Napoleon's victory was not as complete as it could have been. Substantial pursuit was not undertaken after the battle, and the flanking corps was surrounded and forced to surrender a few days later at the [[Battle of Kulm]]. ||| ||| ||| +0 Battle of Dublin ||| Battle of Kilmallock ||| |battles= [[Battle of Dublin (1922)|Dublin]] – [[Irish Free State offensive|Free State offensive]] – [[Battle of Kilmallock|Kilmallock]] – [[Guerrilla Phase of the Irish Civil War|Guerrilla Phase]] – [[Executions during the Irish Civil War|Executions]] – [[Timeline of the Irish Civil War|Timeline]]. ||| ||| ||| +0 Battle of Dürenstein ||| Battle of Emmendingen ||| The loss of Schmitt was a significant blow to the Austrian military organization. Called out of retirement for this specific task, he was arguably their most experienced general staff officer, other than the Archduke Charles. From the summer of 1796 until his retirement in 1800, he had been Chief of the Quartermaster General Staff of the Army, the Lower Rhine, the Rhine, and the Army of Germany. Furthermore, he was a trusted member of [[Archduke Charles, Duke of Teschen|Archduke Charles']] staff. He had helped to design several of Charles' more important victories at [[Battle of Emmendingen|Emmendingen]], [[Battle of Schliengen|Schliengen]], the sieges at [[siege of Kehl (1796)|Kehl and Hünigen]], the battles at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and the northern Swiss Campaign of 1799 that included battles at [[Battle of Winterthur (1799)|Winterthur]] and [[First Battle of Zurich|Zürich]]. An experienced officer and excellent tactician, he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the [[Battle of Austerlitz]] than his eventual replacement, [[Franz von Weyrother]]. In Schmitt's absence, Weyrother, the architect of the Austrian catastrophe at [[Battle of Hohenlinden|Hohenlinden]] in 1800, was chosen to develop the general battle plan of Coalition action at Austerlitz. Schmitt, undoubtedly a far better tactician than Weyrother, and possessed of superior training and mapping skills, would have developed a more realistic Coalition plan for Austerlitz. Schmitt's presence would probably not have been enough to turn that defeat into a victory, but it would have mitigated the magnitude of the Coalition's losses; Austerlitz was arguably one of Napoleon's finest triumphs. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| Battle of Waterloo ||| In a series of conflicts from 1803 to 1815 known as the [[Napoleonic Wars]], various European powers formed five coalitions against the [[First French Empire]]. Like the wars sparked by the [[French Revolution]] (1789), these further revolutionized the formation, organization, and training of European armies and led to an unprecedented militarization, mainly due to [[Levée en masse|mass conscription]]. Under the leadership of [[Napoleon I of France|Napoleon]], French power rose quickly, as the ''[[Grande Armée]]'' conquered most of Europe and it collapsed rapidly after the disastrous [[French invasion of Russia|invasion of Russia]] in 1812. Napoleon's empire ultimately suffered complete military defeat in the 1813–1814 campaigns, resulting in the [[Bourbon Restoration|restoration of the Bourbon monarchy]] in France. Although Napoleon made a spectacular return in 1815, known as the [[Hundred Days]], his defeat at the [[Battle of Waterloo]], the pursuit of his army and himself, his abdication, and his banishment to the Island of [[Saint Helena]], concluded the Napoleonic Wars. ||| Background ||| ||| +0 Battle of Dürenstein ||| Third Crusade ||| Until 1805, Dürenstein was probably best known as the village in which [[Third Crusade|crusader]] [[Richard I of England|Richard the Lionheart]] was held by [[Leopold V, Duke of Austria|Leopold V, Duke of Austria]]. In 1741, during the [[War of the Austrian Succession]], several hundred local villagers had held off the French and Bavarian armies, intent on capturing Vienna, by painting drain pipes to look like cannons, and beating on drums, thus suggesting the presence of a large force. ||| Battlefield commemorations ||| ||| +0 Battle of Finschhafen ||| New Britain campaign ||| The '''Battle of Finschhafen''' was part of the [[Huon Peninsula campaign]] during the [[Second World War]] between September and October 1943 between [[Australia]]n and [[Empire of Japan|Japanese]] forces. The operation to capture [[Finschhafen]] was important to capture the western cape of the [[Vitiaz Strait]] for the construction of airfields and naval facilities for the upcoming [[New Britain campaign]] as part of [[Operation Cartwheel]]. ||| ||| ||| +0 Battle of Fishguard ||| Battle of Castlebar ||| In August of the following year, another French force landed in [[County Mayo]], [[Connacht|Connaught]], in the west of Ireland. In contrast to the debacle at Fishguard, this expedition saw some bloody fighting in which hundreds were killed in the [[Battle of Castlebar]]. ||| Legacy ||| ||| +0 Battle of Fort Eben-Emael ||| Battle of France ||| The '''Battle of Fort Eben-Emael''' was a battle between [[Belgium|Belgian]] and [[Nazi Germany|German]] forces that took place between 10 May and 11 May 1940, and was part of the [[Battle of Belgium]] and [[Battle of France|Fall Gelb]], the German invasion of the [[Low Countries]] and [[France]]. An assault force of German ''[[Fallschirmjäger]]'' was tasked with assaulting and capturing [[Fort Eben-Emael]], a Belgian fortress whose artillery pieces dominated several important bridges over the [[Albert Canal]] that German forces intended to use to advance into [[Belgium]]. As some of the German airborne troops assaulted the fortress and disabled the garrison and the artillery pieces inside it, others simultaneously captured three bridges over the Canal. Having disabled the fortress, the airborne troops were then ordered to protect the bridges against Belgian counter-attacks until they linked up with ground forces from the German [[18th Army (Wehrmacht)|18th Army]]. ||| ||| ||| +0 Battle of Fort George ||| Battle of Beaver Dams ||| The Americans subsequently remained in a small defensive enclave around Fort George. After a disaster when a sortie against a British outpost was surrounded and forced to surrender by Native Americans at the [[Battle of Beaver Dams]], they remained largely inactive on this front until they abandoned Fort George in December 1813. ||| Results ||| ||| +0 Battle of Fort Sumter ||| Carolinas Campaign ||| Charleston Harbor was completely in Confederate hands for almost the entire four-year duration of the war, leaving a hole in the [[Union blockade|Union naval blockade]]. Union forces conducted major operations in 1862 and 1863 to capture Charleston, first overland on James Island (the [[Battle of Secessionville]], June 1862), then by naval assault against Fort Sumter (the [[First Battle of Charleston Harbor]], April 1863), then by seizing the Confederate artillery positions on Morris Island (beginning with the [[Second Battle of Fort Wagner]], July 1863, and followed by a siege until September). After pounding Sumter to rubble with artillery fire, a final amphibious operation attempted to occupy it (the [[Second Battle of Fort Sumter]], September 1863), but was repulsed and no further attempts were made. The Confederates evacuated Fort Sumter and Charleston in February 1865 as Union Maj. Gen. [[William T. Sherman]] outflanked the city in the [[Carolinas Campaign]]. On April 14, 1865, four years to the day after lowering the [[Fort Sumter Flag]] in surrender, Robert Anderson (by then a [[Major general (United States)|major general]], although ill and in retired status) returned to the ruined fort to raise the flag he had lowered in 1861. ||| Aftermath ||| ||| +0 Battle of Fort Sumter ||| Union blockade ||| Charleston Harbor was completely in Confederate hands for almost the entire four-year duration of the war, leaving a hole in the [[Union blockade|Union naval blockade]]. Union forces conducted major operations in 1862 and 1863 to capture Charleston, first overland on James Island (the [[Battle of Secessionville]], June 1862), then by naval assault against Fort Sumter (the [[First Battle of Charleston Harbor]], April 1863), then by seizing the Confederate artillery positions on Morris Island (beginning with the [[Second Battle of Fort Wagner]], July 1863, and followed by a siege until September). After pounding Sumter to rubble with artillery fire, a final amphibious operation attempted to occupy it (the [[Second Battle of Fort Sumter]], September 1863), but was repulsed and no further attempts were made. The Confederates evacuated Fort Sumter and Charleston in February 1865 as Union Maj. Gen. [[William T. Sherman]] outflanked the city in the [[Carolinas Campaign]]. On April 14, 1865, four years to the day after lowering the [[Fort Sumter Flag]] in surrender, Robert Anderson (by then a [[Major general (United States)|major general]], although ill and in retired status) returned to the ruined fort to raise the flag he had lowered in 1861. ||| Aftermath ||| ||| +0 Battle of Forts Jackson and St. Philip ||| Battle of Shiloh ||| From the beginning, plans of the Confederate War Department (Secretary of War [[Judah P. Benjamin]] at first, later [[George W. Randolph]]) in Richmond for defense of New Orleans were distorted by the belief that the primary threat to the city came from the north. Reflecting that belief, much of the material intended to protect the city was sent to strongpoints on the Mississippi, such as [[Battle of Island Number Ten|Island Number 10]], [[Fort Pillow]], and [[Memphis, Tennessee|Memphis]]. The immediate vicinity of the city was actually weakened as guns were withdrawn for use in distant campaigns, as for example that leading to the [[Battle of Shiloh]]. The region was also stripped of men of military age. ||| Background ||| Confederate preparations ||| +0 Battle of France ||| Battle of Arras (1940) ||| The resulting [[Battle of Arras (1940)|Battle of Arras]] achieved surprise and initial success against the overstretched German forces, but it still failed. Radio communication between tanks and infantry was poor and there was little combined arms coordination as practiced by the Germans. In the end, hastily set up German defences (including [[8.8 cm FlaK 18/36/37/41|{{convert|88|mm|in|2|abbr=on}} ''FlaK'' gun]]s and [[10.5 cm leFH 18|{{convert|105|mm|in|1|abbr=on}} field gun]]s) stopped the attack. The French inflicted heavy losses on German armour as they retreated, but the ''Luftwaffe'' broke up the counterattacks. Just 28 of the 88 British tanks survived. The French V Corps' attack at Cambrai also failed. ||| ''Fall Gelb'' ||| Weygand Plan ||| +0 Battle of France ||| Battle of Maastricht ||| In the centre, the progress of German Army Group A was to be delayed by Belgian motorised infantry and French mechanised cavalry divisions (''Divisions Légères de Cavalerie'') advancing into the Ardennes. The main resistance came from the Belgian 1st ''[[Chasseurs Ardennais]]'' along with the [[5th Light Cavalry Division (France)|5th French Light Cavalry Division (DLC)]]. Although Gamelin was well aware of the situation, the French bomber force was far too weak to challenge German air superiority so close to the German border. The French had tried in vain to stem the flow of the German armour during the [[Battle of Maastricht]] and had failed with heavy losses. In two days, the bomber force had been reduced from 135 to 72. ||| ''Fall Gelb'' ||| Central front ||| Belgian and French Ardennes +0 Battle of France ||| Normandy landings ||| On 22 June, an [[Second Armistice at Compiègne|armistice was signed]] between France and Germany, which resulted in a division of France, whereby Germany would [[German military administration in occupied France during World War II|occupy the north and west]], Italy would control a small [[Italian occupation of France during World War II|Italian occupation zone]] in the south-east and an unoccupied zone, the ''[[zone libre]]'', would be governed by the [[Vichy France|Vichy government]] led by Marshal Pétain. France remained under Axis occupation until the occupation of the country by the Allies after the [[Normandy landings|Allied landings]] in June 1944. ||| ||| ||| +0 Battle of Gettysburg ||| Battle of Waterloo ||| The news of the Union victory electrified the North. A headline in ''[[The Philadelphia Inquirer]]'' proclaimed 'VICTORY! [[Battle of Waterloo|WATERLOO]] ECLIPSED!' New York diarist [[George Templeton Strong]] wrote: ||| Aftermath ||| Union reaction to the news of the victory ||| +0 Battle of Gingindlovu ||| Battle of Isandlwana ||| [[Charles Pearson (soldier)|Charles Pearson]] had led the No. 1 Column of the British invasion force across the [[Tugela River]] with the intention of creating an advanced base at [[Eshowe]]. This they did, but found themselves besieged in the hastily constructed base, at a deserted [[Norway|Norwegian]] mission station. A relief column was organised, and under the leadership of [[Frederick Augustus Thesiger, 2nd Baron Chelmsford|Lord Chelmsford]] it departed [[Fort Tenedos]] on 29 March to march to Pearson's relief. The column composed 3,390 Europeans and 2,280 Africans, and a range of artillery, including two 9-pounders (4 kg), four 24-pounder (11 kg) rocket tubes and two [[Gatling gun]]s. The progress was slow, as Chelmsford took a roundabout route to avoid ambush in the close country Pearson had previously passed through. In addition, the rivers they had to traverse were swollen by heavy rains and fearing a repeat of [[Battle of Isandlwana|Isandlwana]], Chelmsford ensured his men spent much time [[laager]]ing and entrenching their camp at the end of each day. ||| Prelude ||| ||| +0 Battle of Glendale ||| Peninsula Campaign ||| The '''Battle of Glendale''', also known as the '''Battle of Frayser's Farm''', '''Frazier's Farm''', '''Nelson's Farm''', '''Charles City Crossroads''', '''New Market Road''', or '''Riddell's Shop''', took place on June 30, 1862, in [[Henrico County, Virginia]], on the sixth day of the [[Seven Days Battles]] ([[Peninsula Campaign]]) of the [[American Civil War]]. ||| ||| ||| +0 Battle of Gloucester Point (1861) ||| Battle of Fort Sumter ||| The '''Battle of Gloucester Point, Virginia''' was an inconclusive exchange of cannon fire between a shore battery on the [[York River (Virginia)|York River]] which was manned by [[Virginia]] (soon to be [[Confederate States Army|Confederate]]) forces and the [[Union (American Civil War)|Union]] gunboat [[USS Yankee (1861)|USS ''Yankee'']]. The action occurred on May 7, 1861, three weeks after the start of the [[American Civil War]] (Civil War) at [[Battle of Fort Sumter|Fort Sumter]] in the harbor at [[Charleston, South Carolina]] on April 14, 1861. The Gloucester Point engagement is notable as the earliest exchange of gunfire between the [[Union Navy]] and organized Rebel (Confederate) forces after the U.S. Army surrendered Fort Sumter to the Confederates and as the earliest reported Civil War military engagement in Virginia. Like other early engagements between Union gunboats and Confederate shore batteries, the battle at Gloucester Point was part of the Union Navy effort to [[blockade]] the Southern States in general and the [[Chesapeake Bay]] in particular. The engagement also was part of the effort by Confederate forces to deny the use of rivers in [[Virginia]] to Union military and commercial traffic. ||| ||| ||| +0 Battle of Grodno (1939) ||| Soviet invasion of Poland ||| The '''Battle of [[Grodno]]''' took place between 21 September and 24 September 1939, during the [[Soviet invasion of Poland]]. {{rp|82}} It was fought between improvised Polish units under Gen. [[Wacław Jan Przeździecki]] and the [[Red Army]] of the [[Soviet Union]], at the time in a non-aggression agreement with [[Nazi Germany]] under the [[Ribbentrop-Molotov Pact]]. ||| ||| ||| +0 Battle of Gujrat ||| Battle of Chillianwala ||| Late in 1848, a large British and Bengal army took the field during the cold weather season under the Commander in Chief of the Bengal Army, General Sir [[Hugh Gough, 1st Viscount Gough|Hugh Gough]]. Gough already had a reputation, whether deserved or not, for unimaginative head-on tactics. On 22 November at [[Battle of Ramnagar|Ramnagar]], his cavalry were repulsed attacking a Sikh bridgehead on the east bank of the Chenab. Then on 13 January 1849, he launched a hasty frontal attack against Sher Singh's army at [[Battle of Chillianwala|Chillianwala]] near the [[Jhelum River]] and was driven back with heavy casualties. Several days' heavy rain followed, preventing either army from renewing the battle. After they had faced each other for three days, both withdrew. ||| Outbreak and course of the war ||| ||| +0 Battle of Heartbreak Ridge ||| Invasion of Grenada ||| ''[[Heartbreak Ridge]]'' is associated with the title and backstory of the 1986 movie directed by and starring [[Clint Eastwood]]. Eastwood's character is a fictional veteran of the battle at Heartbreak Ridge (as is one other character), where he received the Medal of Honor. The movie itself is a fictional account of events that took place during actual [[Invasion of Grenada|operations in Grenada]]. ||| In popular culture ||| ||| +0 Battle of Hegra Fortress ||| Battles of Narvik ||| One way that Holtermann wanted to directly support the main war effort in Norway was to bombard Værnes Air Base, the northernmost airfield in German hands and vital for the support of German forces north of Trondheim. This was particularly so for the [[Battles of Narvik|Narvik front]], which could not be reached by aircraft flying from further south than Værnes. Recognising this, the Germans had hired some 2,000 Norwegian [[Collaborationism|collaborationist]] labourers to work full-time at expanding and improving the air strip. Bombarding Værnes would both have disrupted this work and impaired the bombing raids being flown against Norwegian forces fighting further to the north. However, since Værnes is {{convert|11.5|km|mi|abbr=on}} from Hegra, and the fortress' guns only had a maximum range of some {{convert|9|km|mi|abbr=on}}, this was impossible. For accurate firing, the effective range was a mere {{convert|6.9|km|mi|abbr=on}}, as that was the range of the artillery's height angle meter. Even though no modifications could be carried out, one of the 10.5 cm guns at Hegra opened fire in the direction of Værnes on 22 April. With the gun firing at maximum elevation, the rounds still fell hundreds of metres short of their intended target. ||| Battle ||| Siege ||| Artillery duels, aerial bombing and patrol engagements +0 Battle of Hill 70 ||| Race to the Sea ||| The industrial coal city of [[Lens, Pas-de-Calais|Lens]], [[France]] had fallen under German control in October 1914 during the [[Race to the Sea]]. ||| Background ||| ||| +0 Battle of Hohenlinden ||| Battle of Ampfing (1800) ||| In the [[Battle of Ampfing (1800)|Battle of Ampfing]] on 1 December, the Austrians drove back part of General of Division [[Paul Grenier]]'s Left Wing. The defeated French managed to inflict 3,000 casualties on the Austrians while only suffering 1,700 losses. Yet, when the Austrian leaders found that Grenier evacuated [[Haag in Oberbayern]] the next day, they became ecstatic. Archduke John and Weyrother overrode Lauer's cautious counsel and launched an all-out pursuit of an enemy they believed to be fleeing. ||| Background ||| ||| +0 Battle of Hohenlinden ||| Battle of Messkirch ||| From April to July 1800, Moreau's army drove the Austrian army of [[Feldzeugmeister]] [[Pál Kray]] from the [[Rhine River]] to the [[Inn River]] with victories at [[Battle of Stockach (1800)|Stockach]], [[Battle of Messkirch|Messkirch]], and [[Battle of Höchstädt (1800)|Höchstädt]]. On 15 July, the combatants agreed to an armistice. Realizing that Kray was no longer up to the task, [[Francis II of Austria|Emperor Francis II]] removed him from command. To further complicate the clumsy command structure, the aggressive [[Oberst]] ([[Colonel]]) [[Franz von Weyrother]] was named John's [[chief of staff]]. ||| Background ||| ||| +0 Battle of Hong Kong ||| Military history of Canada during World War II ||| The '''Battle of Hong Kong''' (8–25 December 1941), also known as the '''Defence of Hong Kong''' and the '''Fall of Hong Kong''', was one of the first battles of the [[Pacific War|Pacific campaign]] of [[World War II]]. On the same morning as the [[attack on Pearl Harbor|attack on the U.S. naval base]] at [[Pearl Harbor]], forces of the [[Empire of Japan]] attacked [[British Hong Kong]]. The attack was in violation of international law as Japan had not declared war against the [[British Empire]]. Japan's unprovoked act of aggression was met with stiff resistance from Hong Kong's garrison, composed of local troops as well as [[British Army during the Second World War|British]], [[Military history of Canada during World War II|Canadian]] and [[Indian Army during World War II|Indian]] units. Within a week the defenders abandoned the mainland, and less than two weeks later, with their position on the island untenable, the colony surrendered. ||| ||| ||| +0 Battle of Höchstädt (1800) ||| Battle of Hohenlinden ||| The campaign culminating in Kray's evacuation of Ulm was one of Moreau's most resounding triumphs. Napoleon Bonaparte had given Moreau specific instructions about the conduct of the campaign, all of which Moreau had ignored. Regardless, their combined efforts damaged Habsburg military operations. In Spring 1800, while Moreau wrecked Austrian defenses in Germany, [[Massena]] and [[Desaix]] ran into stiff Austrian offensives in Northern Italy. Napoleon brought in the reserve corps and defeated the Austrians at [[Battle of Marengo|Marengo]]. The battle near Höchstädt, five days after the Austrian disaster at Marengo, allowed the French to take Munich. The combined efforts forced the Habsburgs to accept an armistice ended hostilities for the rest of the summer, but the French extracted massive levies on the Bavarians. Despite these significant losses—both of them decisive—the Austrians were reluctant to accept disadvantageous peace terms. In mid-November, the French ended the truce and Moreau inflicted another significant and decisive defeat at [[Battle of Hohenlinden|Hohenlinden]] on 3 December 1800. ||| Aftermath ||| ||| +0 Battle of Isonzo (489) ||| Battles of the Isonzo ||| The '''Battle of the Isonzo''', the '''Battle of the Aesontius''', or the '''Battle of the Isontius''' is the name given to the battle fought on August 28, 489 on the banks of the Isontius River, not far away from [[Aquileia]]. This river is now known as the [[Isonzo]] in [[Italian language|Italian]], and [[Soča]] in [[Slovene language|Slovene]]. This battle should not be confused with the 12 [[Battles of the Isonzo]] during [[World War I]]. ||| ||| ||| +0 Battle of Jaffa (1917) ||| Battle of Mughar Ridge ||| The port of [[Jaffa]] had been occupied by the [[New Zealand Mounted Rifles Brigade]] on the 16 November, as a result of the victory gained by that brigade and the [[1st Light Horse Brigade]] at the [[Battle of Mughar Ridge|Ayun Kara]] two days before, but the Ottoman forces were only {{convert|3|mi}} away across the [[Auju River]] (Yarkon River), the mouth of which is known as the Nahr-el-Auja. The closeness of the Ottoman army made the port and town unusable to shipping, still being within range of Ottoman artillery. ||| ||| ||| +0 Battle of Jemappes ||| Battle of Neerwinden (1793) ||| Dumouriez, intent on invading the [[Austrian Netherlands]], advanced late in the season and attacked the Austrians with greatly superior forces. Jemappes was won by costly but effective charges against the Austrians' prepared position. Dumouriez overran the Austrian Netherlands within a month, but lost it at the [[Battle of Neerwinden (1793)|Battle of Neerwinden]] in March. The French would not reconquer the Austrian Netherlands until the summer of 1794. ||| ||| ||| +0 Battle of Jobourg ||| Battle of Trafalgar ||| By the end of October 1813 the [[War of the Sixth Coalition]] was in its final stages; [[Emperor Napoleon]] had been defeated at the [[Battle of Leipzig]] by the Allied European armies and was retreating to the borders of France, while the British army under the [[Arthur Wellesley, 1st Duke of Wellington|Lord Wellington]] had crossed the [[Pyrenees]] and was advancing on [[Toulouse]]. The French Navy had never recovered from defeat at the [[Battle of Trafalgar]] in 1805 and had made no serious effort to put to sea since the abortive attempt which ended in defeat at the [[Battle of Basque Roads]] in 1809. ||| Background ||| ||| +0 Battle of Kaiserslautern ||| Siege of Mainz (1793) ||| The 36,850-man Coalition army of [[Charles William Ferdinand, Duke of Brunswick]] successfully concluded the [[Siege of Mainz (1793)|Siege of Mainz]] on 23 July 1793. The French garrison of 18,675 men surrendered and was released on the promise of not fighting the Coalition for one year. The French government immediately sent the released troops to fight in the internal [[War in the Vendée]]. During the siege, the French suffered approximately 4,000 casualties while the Coalition lost about 3,000. ||| Prologue ||| ||| +0 Battle of Kambula ||| Battle of Isandlwana ||| Wood also now received information that the impi was nearly 20,000 men strong, consisting of regiments that had already defeated the British at [[Battle of Isandlwana|Isandlwana]] and other battles and that many of the Zulus were armed with rifles taken from the British dead at these battles. Shortly after this the Zulu impi was sighted 5 miles away across the plain, coming on due westwards in five columns. However, the warriors of the impi had not eaten for three days. The woodcutters and cattle were brought back in and, confident that the defences could be manned within a minute and a half of an alarm being sounded, Wood ordered the men to have their dinners. ||| Prelude ||| ||| +0 Battle of Kehl (1796) ||| Siege of Kehl (1703) ||| Although separated politically and geographically, the fates of Kehl, a village on the eastern shore of the Rhine in [[Baden-Durlach]], and those of the [[Alsace|Alsatian]] city of [[Strasbourg]], on the western shore, were united by the presence of bridges and a series of gates, fortifications and [[Barrage (dam)|barrage dam]]s that allowed passage across the river. In the 1790s, the Rhine was wild, unpredictable, and difficult to cross, in some places more than four or more times wider than it is in the twenty-first century, even under non-flood conditions. Its channels and tributaries wound through marsh and meadow and created islands of trees and vegetation that were alternately submerged by floods or exposed during the dry seasons. The fortifications at Kehl and Strasbourg had been constructed by the fortress architect [[Sébastien Le Prestre de Vauban|Sébastien le Préstre de Vauban]] in the seventeenth century. The crossings had been contested before: in 1678 during the French-Dutch war, in [[Siege of Kehl (1703)|1703]] during the [[War of the Spanish Succession]] and in [[Siege of Kehl (1733)|1733]] during the [[War of the Polish Succession]]. Critical to success of the French plan would be the army's ability to cross the Rhine at will. Consequently, control of the crossings at [[Hüningen]], near the Swiss city of [[Basle|Basel]], and at Kehl, would give them ready access to most of southwestern Germany; from there, French armies could sweep north, south, or east, depending on their military goal. ||| ||| ||| +0 Battle of Khe Sanh ||| Operation Rolling Thunder ||| By the end of the battle of Khe Sanh, U.S. Air Force assets had flown 9,691 tactical sorties and dropped 14,223 tons of bombs on targets within the Khe Sanh area. Marine Corps aviators had flown 7,098 missions and released 17,015 tons. Naval aircrews, many of whom were redirected from [[Operation Rolling Thunder]] strikes against North Vietnam, flew 5,337 sorties and dropped 7,941 tons of ordnance in the area. {{rp|297}} Westmoreland later wrote that 'Washington so feared that some word of it might reach the press that I was told to desist, ironically answering what those consequences could be: a political disaster. ||| Attacks on the perimeter ||| Operation ''Niagara'' ||| +0 Battle of Kilsyth ||| Scotland in the Wars of the Three Kingdoms ||| The '''Battle of Kilsyth''' was an engagement of the [[Scotland in the Wars of the Three Kingdoms|Wars of the Three Kingdoms]] which took place on 15 August 1645 at [[Kilsyth]]. Despite a numerical disadvantage, the battle was another victory for the Royalist general [[James Graham, 1st Marquess of Montrose|Montrose]] over the [[Covenanter]]s, and marked the end of [[William Baillie (soldier)|William Baillie]]'s pursuit of the Royalist forces. ||| ||| ||| +0 Battle of Kulm ||| Battle of Katzbach ||| Napoleon's victory in the latter battle coincided with his marshal [[Jacques MacDonald|MacDonald]]'s defeat at [[Battle of Katzbach|Katzbach]], but the Coalition victory in this battle has totally negated his victory, given the fact that his troops never completely crushed the enemy. Thus, by winning this battle, Ostermann-Tolstoy and his troops succeeded in buying much needed time for the Coalition armies to regroup after the [[Battle of Dresden]]. ||| Aftermath ||| ||| +0 Battle of Kupres (1992) ||| Battle of Kupres (1994) ||| Croatian forces were hampered by an inadequate command structure, poor coordination and lack heavy weapons. The battle resulted in more than 200 killed on both sides, and established lines of control which would remain unchanged until 1994, when the plateau was [[Battle of Kupres (1994)|recaptured by the HVO]]. In 2012, [[Republika Srpska]] authorities charged seven Croats with war crimes committed at the plateau against civilians and [[prisoners of war]]. The next year, Croatian authorities charged 21 former JNA members with war crimes against HVO prisoners captured at the Kupres Plateau. ||| ||| ||| +0 Battle of Kusonje ||| Operation Medak Pocket ||| During a commemoration service held two years later, a [[landmine]] exploded killing three and wounding others. The Croatian authorities declared the incident to be a terrorist attack, and it contributed to Croatian government's decision to launch [[Operation Medak Pocket]] the next day. ||| ||| ||| +0 Battle of Leeds ||| Battle of Marston Moor ||| The Royalists only withdrew to York when the Scottish [[Covenanter]] army marched south in support of Parliament. In July 1644, the Royalists were comprehensively defeated at the [[Battle of Marston Moor]], which lost the north of England for [[Charles I of England|King Charles I]]. ||| Aftermath ||| ||| +0 Battle of Leipzig ||| War of the Fourth Coalition ||| With the German states of the [[Confederation of the Rhine]] defecting to the Coalition cause and Prussia officially once again becoming one of the continent's great powers after their [[War of the Fourth Coalition|severe setbacks]] of 1806, the Coalition army pressed its advantage and invaded France in early 1814 as the Tsar commanded. Though Napoleon repeatedly engaged some of their units during his [[Campaign in north-east France (1814)|counter-offensive campaign]], he was eventually forced from the throne of France after Paris [[Battle of Paris (1814)|fell to the Coalition]] and exiled to the island of [[Elba]]; the First French Empire capitulated for the first time. ||| Aftermath ||| ||| +0 Battle of Lishi ||| Second Sino-Japanese War ||| For the former [[Kuomintang|nationalist]] turned Japanese puppet regime forces, these [[Warlord era|warlords]] and their troops had no problem of following [[Chiang Kai-shek]]'s orders, and they were eager to prove themselves. These [[Warlord era|warlords]] and their troops were well aware that due to the collaboration with the Japanese invaders during the [[Second Sino-Japanese War]], they were well hated by the general population in China, including those [[Kuomintang|nationalists]] who refused to surrender to the enemy and fought the enemy until the eventual victory. Therefore, in the impending demilitarisation after World War II, they were certainly be disarmed and discharged, which would probably be the best outcome and the power of these [[Warlord era|warlord]] would be reduced or even completely eliminated as a result. [[Chiang Kai-shek]]'s ordering them not surrendering to the communists and fighting off the communists was a savior for them because by carrying out such orders, these [[Warlord era|warlords]] and their troops could legitimise themselves and thus retain their power by fighting the communists who were targeted as rebels by [[Chiang Kai-shek]] and his [[Kuomintang|nationalist]] regime. ||| Nationalist strategy ||| ||| +0 Battle of Liège ||| German invasion of Belgium ||| The '''Battle of Liège''' ({{lang-fr|Bataille de Liège}}) was the opening engagement of the [[German invasion of Belgium]] and the first battle of [[World War I]]. The attack on [[Liège|the city]] began on 5 August 1914 and lasted until 16 August when the last fort surrendered. The length of the siege of Liège may have delayed the German invasion of France by {{nowrap|4–5 days.}} Railways needed by the German armies in eastern [[Belgium]] were closed for the duration of the siege and German troops did not appear in strength before [[Namur, Belgium|Namur]] until 20 August. ||| ||| ||| +0 Battle of Lone Tree Hill ||| Battle of Biak ||| On 14 June, the US commander, General [[Walter Krueger]], sent the [[6th Infantry Division (United States)|U.S. 6th Infantry Division]], to relieve the 158th RCT. After ten days of hard fighting, the US forces took Lone Tree Hill. The Japanese suffered more than 1,000 dead, including some trapped in collapsed caves. The U.S. Army suffered about 700 battle and 500 non-battle casualties. With Lone Tree Hill in American possession, Maffin Bay became a major staging base for six subsequent battles: [[Battle of Biak|Biak]], [[Battle of Noemfoor|Noemfoor]], [[Battle of Sansapor|Sansapor]], [[Battle of Leyte|Leyte]] and [[Battle of Luzon|Luzon]]. ||| ||| ||| +0 Battle of Lundy's Lane ||| Capture of Fort Erie ||| On 3 July 1814 an American army under Major General [[Jacob Brown]] launched an attack across the [[Niagara River]] near its source on [[Lake Erie]]. His force quickly [[Capture of Fort Erie|captured]] the British position at [[Fort Erie, Ontario|Fort Erie]] and then advanced north. Two days later one of his two brigades of regular U.S. Infantry under Brigadier General [[Winfield Scott]] defeated a British force commanded by Major General [[Phineas Riall]] at the [[Battle of Chippawa]]. ||| Background ||| ||| +0 Battle of Lundy's Lane ||| Flanders Campaign ||| Evidence compiled by [[Donald Graves]], a Canadian historian employed at the Directorate of History, Department of National Defence Canada, argues that General Drummond failed to use skirmish pickets to protect his guns, which were consequently captured by the Americans. Drummond also showed little tactical finesse during his counter-attacks, not using his light infantry to their best advantage and mounting only straightforward frontal attacks. American historian John R. Elting suggests that if Drummond had instead concentrated on the vulnerable American left flank, he might have won a decisive victory. (Drummond had much administrative experience, but had previously seen action only in the abortive [[Flanders Campaign]] in 1794 as a comparatively junior officer, and in the [[French Campaign in Egypt and Syria|Egyptian campaign]] in 1801 as commander of a battalion.) ||| Outcome and analysis ||| ||| +0 Battle of Madras ||| Siege of Louisbourg (1745) ||| The [[Treaty of Aix-la-Chapelle (1748)|Treaty of Aix-la-Chapelle]] that ended the war made provision for [[Chennai|Madras]] to be returned to the British in exchange for [[Louisbourg]] in [[Acadia]] which had been [[Siege of Louisbourg (1745)|captured by British forces]] in 1745. The French [[Siege of Madras|besieged Madras again in 1759]], this time without success. ||| Aftermath ||| ||| +0 Battle of Maidstone ||| Siege of Colchester ||| Royalist prisoners were initially held captive in [[All Saints Church, Maidstone|All Saints Church]]. the remnant of the Royalist force moved on into Essex with Fairfax in hot pursuit. The retreating Royalists decided to make their defence from the Earl of Norwich's home town of [[Siege of Colchester|Colchester]] on 13 June where the rebellion was besieged and finally surrendered in late August after months of deprivation and famine. ||| Aftermath ||| ||| +0 Battle of Malakoff ||| Battle of Inkerman ||| For months the siege of Sevastopol continued. During July the Russians lost on an average of 250 men a day, and finally the Russians decided to break the stalemate and gradual attrition of their army. Gorchakov and the field army were to make another attack at the Chernaya, the first since the [[Battle of Inkerman|Inkerman]]. On 16 August, both [[Pavel Liprandi]] and Read's corps furiously attacked the 37,000 French and Sardinian troops on the heights above Traktir Bridge. The assailants came on with the greatest determination, but they were ultimately unsuccessful. At the end of the day, the Russians drew off leaving 260 officers and 8,000 men dead or dying on the field; the French and British only lost 1,700. With this defeat the last chance of saving Sevastopol vanished. ||| Battle ||| ||| +0 Battle of Mariazell ||| Battle of Amstetten ||| The 1805 war began with the [[Ulm Campaign]] which was disastrous for Austria, with only the corps of [[Michael von Kienmayer]] and [[Franz Jellacic]] escaping envelopment by the [[Grande Armée]] of [[Napoleon]]. As Kienmayer's columns fled to the east, they joined with elements of the [[Russian Empire]]'s army in a [[rear guard]] action at the [[Battle of Amstetten]] on 5 November. A few days later, Davout's III Corps caught up with Merveldt's division at Mariazell. The Austrian soldiers, their morale shaken by continuous retreating, were routed after a brief struggle. On 12 November, Austria's capital [[Vienna]] fell to the French without a fight. The outcome of the war would be decided by the [[Battle of Austerlitz]] in early December. ||| ||| ||| +0 Battle of Megiddo (1918) ||| Western Front (World War I) ||| After a pause of several weeks caused by bad weather and the need to repair his lines of communication, Allenby advanced eastward to [[Capture of Jericho (1918)|capture Jericho]] in February 1918. However, in March, the Germans launched their [[Spring Offensive]] on the [[Western Front (World War I)|Western Front]], intending to defeat the Allied armies in France and Belgium. Allenby was ordered to send reinforcements (two complete divisions, another 24 infantry [[battalion]]s from other divisions and nine dismounted [[yeomanry]] [[regiment]]s) to the Western Front. ||| Background ||| Allied situation ||| +0 Battle of Messkirch ||| Battle of Biberach (1800) ||| The French repeatedly assaulted the town on 4 and 5 May always in vain. The 1st Demi-Brigade, despite the Austrian superiority there, was able to conquer Krumbach and the heights surrounding it, which commanded Messkirch. Therefore the Austrian moved back to [[Sigmaringen]], followed by the French. The [[Battle of Biberach (1800)|Battle of Biberach]] ensued on 9 May. ||| Overview ||| ||| +0 Battle of Modder River ||| Siege of Kimberley ||| The '''Battle of Modder River''' (known in [[Afrikaans]] as ''Slag van die Twee Riviere'', which translates as 'Battle of the two rivers') was an engagement in the [[Second Boer War|Boer War]], fought at [[Modder River, Northern Cape|Modder River]], on 28 November 1899. A [[British Empire|British]] column under [[Paul Sanford Methuen, 3rd Baron Methuen|Lord Methuen]], that was attempting to relieve the [[Siege of Kimberley|besieged town of Kimberley]], forced Boers under General [[Piet Cronje]] to retreat to [[Battle of Magersfontein|Magersfontein]], but suffered heavy casualties themselves. ||| ||| ||| +0 Battle of Mogadishu (1993) ||| Vietnam War ||| The exact number of Somali casualties is unknown, but estimates range from several hundred to over a thousand militiamen and others killed, but the toll was actually 18 American soldiers dead and 73 wounded. Two days later, a 19th soldier, Delta operator [[Sergeant First Class|SFC]] Matt Rierson, was killed in a [[Mortar (weapon)|mortar]] attack and it was 3 months before the rescue of the final Naval Seal HM2 Ricky Foster. Among U.N. forces, one Malaysian and one Pakistani died; seven Malaysians and two Pakistanis were wounded. At the time, the battle was the bloodiest involving U.S. troops since the [[Vietnam War]] and remained so until the [[Second Battle of Fallujah]] in 2004. ||| Summary ||| ||| +0 Battle of Monte Cassino ||| Allied invasion of Italy ||| The [[Allied invasion of Italy|Allied landings in Italy]] in September 1943 by two Allied armies commanded by General Sir [[Harold Alexander, 1st Earl Alexander of Tunis|Harold Alexander]], Commander-in-Chief of the [[Allied Armies in Italy]], were followed by an advance northward on two fronts, one on each side of the central mountain range forming the 'spine' of Italy. On the western front, [[United States Army North|U.S. Fifth Army]], commanded by Lieutenant-General [[Mark W. Clark]], moved from the main base of [[Naples]] up the Italian 'boot', and in the east General Sir [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]]'s [[Eighth Army (United Kingdom)|British Eighth Army]] advanced up the [[Adriatic Sea|Adriatic]] coast. ||| Background ||| ||| +0 Battle of Monte Cassino ||| Gothic Line ||| At the time, Truscott was shocked, writing later{{blockquote|...I was dumbfounded. This was no time to drive to the northwest where the enemy was still strong; we should pour our maximum power into the Valmontone Gap to insure the destruction of the retreating German Army. I would not comply with the order without first talking to General Clark in person. ...[However] he was not on the beachhead and could not be reached even by radio. ... such was the order that turned the main effort of the beachhead forces from the Valmontone Gap and prevented destruction of Tenth Army. On the 26th the order was put into effect. }} He went on to write{{blockquote|There has never been any doubt in my mind that had General Clark held loyally to General Alexander's instructions, had he not changed the direction of my attack to the northwest on May 26, the strategic objectives of Anzio would have been accomplished in full. To be first in Rome was a poor compensation for this lost opportunity. were able to make their way to the next line of defence, the [[Trasimene Line]] where they were able to link up with Fourteenth Army and then make a fighting withdrawal to the formidable [[Gothic Line]] north of [[Florence]]. ||| Aftermath ||| Clark captures Rome but fails to trap German Tenth Army ||| +0 Battle of Moreuil Wood ||| Battle of Amiens (1918) ||| After the end of the German offensive, [[David Lloyd George|Lloyd George]] sent the reinforcements to Haig. The American presence also increased from 162,000 to 318,000. The allies launched their own counter-offensives starting at [[Battle of Amiens (1918)|Amiens]] just north of Moreuil Wood, which proved to be a decisive victory for the Allies. Ludendorff commented after the first day of battle that it was a black day for the German army. ||| Consequences of the battle ||| ||| +0 Battle of Mughar Ridge ||| Third Battle of Gaza ||| The '''Battle of Mughar Ridge''', officially known by the British as the '''Action of El Mughar''', took place on 13 November 1917 during the Pursuit phase of the [[Southern Palestine Offensive]] of the [[Sinai and Palestine Campaign]] in the First World War. Fighting between the advancing [[Egyptian Expeditionary Force]] (EEF) and the retreating [[Yildirim Army Group]], occurred after the [[Battle of Beersheba (1917)|Battle of Beersheba]] and the [[Third Battle of Gaza]]. Operations occurred over an extensive area north of the [[Gaza City|Gaza]] to [[Beersheba]] line and west of the road from Beersheba to [[Jerusalem]] via [[Hebron]]. ||| ||| ||| +0 Battle of Nablus (1918) ||| Battle of Megiddo (1918) ||| The '''Battle of Nablus''' took place, together with the [[Battle of Sharon]] during the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] between 19 and 25 September 1918 in the last months of the [[Sinai and Palestine Campaign]] of the First World War. Fighting took place in the [[Judean Hills]] where the [[British Empire]]'s [[XX Corps (United Kingdom)|XX Corps]] attacked the [[Ottoman Empire]]'s [[Yildirim Army Group]]'s [[Seventh Army (Ottoman Empire)|Seventh Army]] defending their line in front of [[Nablus]]. This battle was also fought on the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]], where [[Chaytor's Force]] attacked and captured the [[Jordan River]] crossings, before attacking the [[Fourth Army (Ottoman Empire)|Fourth Army]] at [[Salt, Jordan|Es Salt]] and [[Amman]] capturing many thousands of prisoners and extensive territory. The Battle of Nablus began half a day after the main [[Battle of Sharon (1918)|Battle of Sharon]], which was fought on the Mediterranean section of the front line where the [[XXI Corps (United Kingdom)|XXI Corps]] attacked the [[Eighth Army (Ottoman Empire)|Eighth Army]] defending the line in front of [[Battle of Tulkarm (1918)|Tulkarm]] and [[Battle of Tabsor (1918)|Tabsor]] and the [[Desert Mounted Corps]] which rode north to capture the Esdrealon Plain. Together these two battles, known as the Battle of Megiddo, began the Final Offensive of the war in the Sinai and Palestine campaign. ||| ||| ||| +0 Battle of Nablus (1918) ||| Third Transjordan attack ||| Defending the right flank and subsidiary to the Nablus battle, the [[Third Transjordan attack (1918)|Third Transjordan attack]] began on 22 September when Meldrum's Force, a section of Chaytor's Force captured the 53rd Ottoman Division on the Wadi el Fara road, running from Nablus to the bridge at Jisr ed Damieh over the Jordan River. Further sections of the retreating Seventh Army column were attacked and captured, during the subsequent battle for the bridge when several fords were also captured along with the bridge, cutting this main Ottoman line of retreat eastwards. As the Fourth Army began its retreat, Chaytor's Force supported by reconnaissance and attacking aircraft, advanced from Jisr ed Damieh to the east to capture Es Salt on 23 September. This force continued its advance eastwards, to capture Amman on 25 September, after a strong Fourth Army rearguard was defeated there. The southern Hedjaz section of the Fourth Army was captured to the south of Amman, at Ziza on 29 September, ending military operations in the area. ||| ||| ||| +0 Battle of Nam River ||| World War II ||| Following the June 25, 1950, outbreak of the Korean War after the invasion of the [[Republic of Korea]] (South Korea) by its northern neighbor, the [[Democratic People's Republic of Korea]] (North Korea), the [[United Nations]] decided to commit troops to the conflict on behalf of South Korea. The United States, a member of the UN, subsequently committed ground forces to the Korean peninsula with the goal of fighting back the North Korean invasion and to prevent South Korea from collapsing. However, US forces in the [[Far East]] had been steadily decreasing since the end of [[World War II]], five years earlier, and at the time the closest forces were the 24th Infantry Division, headquartered in [[Japan]]. The division was understrength, and most of its equipment was antiquated due to reductions in military spending. Regardless, the 24th was ordered to South Korea. ||| Background ||| Outbreak of war ||| +0 Battle of Narva (1944) ||| Moonsund Landing Operation ||| The Soviet [[1st Baltic Front|1st]], [[2nd Baltic Front|2nd]] and 3rd Baltic Fronts launched their Baltic Offensive on 14 September. The operation was aimed at cutting off the Army Group North in Estonia. After much argument, Adolf Hitler agreed to allow the total evacuation of the troops in mainland Estonia. The 2nd Shock Army launched its Tallinn Offensive on 17 September from the [[Tartu Offensive|Emajõgi River Front]] in South Estonia. At midnight on 18 September, the Army Detachment 'Narwa' left its positions in the Tannenberg Line. The 8th Army reconnaissance reported the evacuation five hours after it had been completed and the Soviets started to chase the troops towards Estonian harbours and the Latvian border. The III SS Panzer Corps reached Pärnu by 20 September, while the II SS Corps retreated southwards to form the 18th Army's rearguard. The 8th Army went on to take the remaining [[West Estonian archipelago]] in the [[Moonsund Landing Operation]]. The Baltic Offensive resulted in the expulsion of the German forces from Estonia, a large part of Latvia, and [[Lithuania]]. ||| Aftermath ||| Baltic Offensive ||| +0 Battle of Nazareth ||| Sinai and Palestine Campaign ||| The '''Battle of Nazareth''' began on 20 September 1918, during the [[Battle of Sharon]], which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] rode to the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|and|50|mi|km}} behind the front line in the [[Judean Hills]]. At [[Nazareth]] on the plain, the [[13th Cavalry Brigade (British Indian Army)|13th Cavalry Brigade]] of the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] attempted to capture the town and the headquarters of the [[Yildirim Army Group]] which was eventually captured the following day after the garrison had withdrawn. ||| ||| ||| +0 Battle of Neerwinden (1793) ||| Battle of Aldenhoven (1793) ||| After Dumouriez's victory at [[Battle of Jemappes|Jemappes]] in November 1792, the French armies rapidly overran most of the Austrian Netherlands. Rather than driving the Austrians to the west bank of the [[Rhine]] River, Dumouriez and the French government became preoccupied with a war with the Dutch Republic. During the breathing space offered by her enemy, Austria assembled an army under the Prince of Coburg and struck back. After a French covering force was routed by Coburg at [[Battle of Aldenhoven (1793)|Aldenhoven]], Dumouriez began gathering his army for a counterstroke. ||| ||| ||| +0 Battle of Neuburg (1800) ||| Battle of Messkirch ||| Lecourbe's division was reformed in April 1800 while still in Switzerland. After the [[Battle of Messkirch]], both [[Gouvion Saint-Cyr]] and [[Jean-Chrysostôme Bruneteau de Sainte-Suzanne|Sainte-Suzanne]] had retired to the Rhine, taking many of their forces with them. Consequently, Moreau had assigned had the cavalry commanded by [[Jean-Joseph Ange d'Hautpoul]] to reinforce Lecourbe's division. ||| Orders of battle ||| French ||| Lecourbe's Division, Armée du Danube +0 Battle of Noáin ||| Battle of Villalar ||| In the meantime the Revolt of the Comuneros had been crushed at the [[Battle of Villalar]] in April, and the Spanish were able to gather a huge army of 25,000 men and moved on Navarre. On June 11, Lesparre abandoned his siege of Logroño and retreated back into Navarre. On June 30, both armies met in front of Pamplona. ||| Prelude ||| ||| +0 Battle of Old Baldy ||| Battle of Pork Chop Hill ||| Several [[air strike]]s on known enemy strongpoints close to the outpost objectives took place during the daylight hours of June 6, 1952. Then, after dark, various units ranging from a squad to almost a company, advanced to take possession of the outposts. Evidently the Chinese had not anticipated the operation, because the attack units encountered little opposition except at Outpost 10 on Hill 255 and Outpost 11 on Hill 266. The former, which was to become better known as [[Battle of Pork Chop Hill|Porkchop Hill]], was taken by two [[platoon]]s from I Company, [[180th Infantry Regiment (United States)|180th]], after a 55-minute fire fight with two Chinese platoons. On Old Baldy, two squads from A Company, 180th Infantry, exchanged [[small arms]] and automatic weapons fire with two Chinese squads, then withdrew and directed artillery fire upon the Chinese. ||| Battle ||| Opening attack ||| +0 Battle of Ostrach ||| Battle of Neerwinden (1793) ||| On 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–1798), France ranged itself against most of the European states sharing land or water borders with her, plus Portugal and the Ottoman Empire. Although the Coalition forces achieved several victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Overloon ||| Battle for Caen ||| The battle of Overloon has become known as the second [[Battle for Caen|battle of Caen]] due to its ferocity and also as the forgotten battle, because like the other engagements in the Peel area it is not well known in much of the Netherlands. ||| Remembrance ||| ||| +0 Battle of Passchendaele ||| Battle of Messines (1917) ||| The choice of Flanders over areas further south or the Italian front, the climate and weather in Flanders, the choice of [[General (United Kingdom)|General]] [[Hubert Gough]] and the [[Fifth Army (United Kingdom)|Fifth Army]] to conduct the offensive, debates over the nature of the opening attack and between advocates of shallow and deeper objectives, have also been controversial. The passage of time between the [[Battle of Messines (1917)|Battle of Messines]] {{nowrap|(7–14 June)}} and the opening attack of the Battles of Ypres, the extent to which the internal troubles of the French armies motivated British persistence with the offensive, the effect of the weather, the decision to continue the offensive in October and the human cost of the campaign on the soldiers of the German and British armies, have also been argued over ever since. ||| ||| ||| +0 Battle of Passchendaele ||| Battle of the Lys (1918) ||| Further operations and a British supporting attack along the Belgian coast from Nieuwpoort, combined with [[Operation Hush]] (an amphibious landing), were to have reached [[Bruges]] and then the Dutch frontier. The resistance of the [[4th Army (German Empire)|German 4th Army]], unusually wet weather, the onset of winter and the diversion of British and French resources to [[Italian Front (World War I)|Italy]], following the Austro-German victory at the [[Battle of Caporetto]] {{nowrap|(24 October – 19 November),}} enabled the Germans to avoid a general withdrawal, which had seemed inevitable in early October. The campaign ended in November, when the [[Canadian Corps]] captured Passchendaele, apart from local attacks in December and the new year. In 1918, the [[Battle of the Lys (1918)|Battle of the Lys]] and the [[Fifth Battle of Ypres]] were fought before the Allies occupied the Belgian coast and reached the Dutch frontier. ||| ||| ||| +0 Battle of Perryville ||| Battle of Richmond ||| On the way, Bragg was distracted by the capture of a Union fort at [[Battle of Munfordville|Munfordville]]. He had to decide whether to continue toward a fight with Buell (over Louisville) or rejoin Smith, who had gained control of the center of the state by capturing [[Battle of Richmond|Richmond]] and Lexington, and threatened to move on Cincinnati. Bragg chose to rejoin Smith. ||| Kentucky Campaign of 1862 ||| ||| +0 Battle of Perryville ||| Battle of Stones River ||| Buell conducted a half-hearted pursuit of Bragg and returned to [[Nashville, Tennessee|Nashville]], rather than pushing on to East Tennessee as the Lincoln administration had wished. Pent-up dissatisfaction with Buell's performance resulted in a reorganization of the Western departments. On October 24, a new Department of the Cumberland was formed under Maj. Gen. [[William S. Rosecrans]], and Buell's Army of the Ohio was assigned to it, redesignated the [[XIV Corps (Union Army)|XIV Corps]]. (After the [[Battle of Stones River]] at Murfreesboro in late December, another strategic defeat for Braxton Bragg, it would receive its more familiar name, the [[Army of the Cumberland]].) Buell was ordered to appear before a commission investigating his conduct during the campaign. He remained in military limbo for a year and a half, his career essentially ruined. He resigned from the service in May 1864. ||| Aftermath ||| ||| +0 Battle of Piacenza ||| Battle of Bassignano ||| Following the [[Battle of Bassignano|battle of Bassignana]] and the splitting of the Austrian and Piedmontese armies, the Spanish and French armies co-ordinated their plans. Spain viewed either the capture of Turin and Milan desirable, but, since France wished to negotiate with Charles Emmanuel, this left Spain only with Milan. Therefore, on 28 November 1745 De Gages began the Spanish invasion of Lombardy. It was not long before the Austrian commander [[Josef Wenzel, Prince of Liechtenstein|Prince Josef Wenzel]] of Liechtenstein retired his army prior to the Spanish advance out of fears his undermanned army would be destroyed. Milan surrendered peacefully, and by the end of the year most of [[Lombardy]] was in Spanish hands. ||| The Bourbon position ||| ||| +0 Battle of Pirano ||| Battle of Rivoli ||| The '''Battle of Pirano''' on 22 February 1812 was a minor naval action of the [[Adriatic campaign of 1807–1814|Adriatic campaign]] of the [[Napoleonic Wars]] fought between a British and a French [[ship of the line]] in the vicinity of the town of [[Piran]] in [[Adriatic Sea]]. The French [[French ship Rivoli (1810)|''Rivoli'']], named for [[Napoleon Bonaparte|Napoleon's]] [[Battle of Rivoli|victory]] 15 years earlier, had been recently completed at [[Venice]]. The French naval authorities intended her to bolster French forces in the Adriatic, following a succession of defeats in the preceding year. ||| ||| ||| +0 Battle of Poplar Grove ||| Battle of Paardeberg ||| The '''Battle of Poplar Grove''' on 7 March 1900 followed on from the [[Siege of Kimberley|Relief of Kimberley]] during the [[Second Boer War]] as the British army moved to take the [[Boer]] capital of [[Bloemfontein]]. The Boers were demoralised following the surrender of [[Piet Cronjé]] at the [[Battle of Paardeberg]]. [[John French, 1st Earl of Ypres|General Sir John French]]'s cavalry did not get into position on time as planned, so the Boer army mostly just fled. ||| ||| ||| +0 Battle of Poplar Grove ||| Siege of Kimberley ||| The '''Battle of Poplar Grove''' on 7 March 1900 followed on from the [[Siege of Kimberley|Relief of Kimberley]] during the [[Second Boer War]] as the British army moved to take the [[Boer]] capital of [[Bloemfontein]]. The Boers were demoralised following the surrender of [[Piet Cronjé]] at the [[Battle of Paardeberg]]. [[John French, 1st Earl of Ypres|General Sir John French]]'s cavalry did not get into position on time as planned, so the Boer army mostly just fled. ||| ||| ||| +0 Battle of Queenston Heights ||| Battle of Fallen Timbers ||| Van Rensselaer was also unable to launch any immediate attack on the Niagara Peninsula, lacking troops and supplies. Although he held the rank of Major General in the New York state militia, Van Rensselaer had not commanded troops in battle and was not a warrior, being considered the leading [[Federalist Party|Federalist]] candidate for the [[Governor of New York|governorship of New York]]. Possibly hoping to get Van Rensselaer out of the way, New York Governor [[Daniel Tompkins]] had put Van Rensselaer's name forward to command the army on the Niagara, and he officially took command on 13 July. Van Rensselaer secured the appointment of his second cousin, Colonel [[Solomon Van Rensselaer]], as his [[aide-de-camp]]. Solomon van Rensselaer was an experienced soldier (who had been wounded at the [[Battle of Fallen Timbers]] in 1794), and a valuable source of advice to the General. ||| Background ||| ||| +0 Battle of Raismes (1793) ||| Flanders Campaign ||| The '''Battle of Raismes''' (also known as the Battle of Condé or St. Amand) took place on 8 May 1793, during the [[Flanders Campaign]] of the [[Wars of the French Revolution]], between the French Republican army of the [[Augustin-Marie Picot|Marquis de Dampierre]] and the Allied Coalition army of the [[Prince Josias of Saxe-Coburg-Saalfeld|Prince of Saxe-Coburg]], and resulted in an Allied Victory. ||| ||| ||| +0 Battle of Ramillies ||| Siege of Barcelona (1705) ||| The '''Battle of Ramillies''' {{IPAc-en|ˈ|r|æ|m|ɪ|l|iː|z}}, fought on 23 May 1706, was a major engagement of the [[War of the Spanish Succession]]. For the [[Grand Alliance (League of Augsburg)|Grand Alliance]] – Austria, England, and the Dutch Republic – the battle had followed an indecisive campaign against the [[House of Bourbon|Bourbon]] armies of King [[Louis XIV of France]] in 1705. Although the Allies had [[Siege of Barcelona (1705)|captured Barcelona]] that year, they had been forced to abandon their campaign on the [[Moselle River|Moselle]], had stalled in the [[Spanish Netherlands]], and suffered defeat in northern Italy. Yet despite his opponents' setbacks Louis XIV was desirous of peace – but he wanted it on reasonable terms. For this end, and in order to maintain their momentum, the French and their allies would swing over to the offensive in 1706. ||| ||| ||| +0 Battle of Rathmines ||| Cromwellian conquest of Ireland ||| The '''Battle of Rathmines''' was fought in and around what is now the [[Dublin]] suburb of [[Rathmines]] in August 1649, during the [[Irish Confederate Wars]], the Irish theatre of the [[Wars of the Three Kingdoms]]. It was fought between an English [[Parliament of England|Parliamentarian]] army under [[Michael Jones (soldier)|Michael Jones]] which held Dublin and an army composed of [[Confederate Ireland|Irish Confederate]] and English [[Cavalier|Royalist]] troops under the command of the [[James Butler, 1st Duke of Ormonde|Earl of Ormonde]]. The battle ended in the rout of the Confederate /Royalist army and facilitated the landing in Ireland of [[Oliver Cromwell]] and the [[New Model Army]] several days later, who in the next four years completed the [[Cromwellian conquest of Ireland]]. ||| ||| ||| +0 Battle of Rathmines ||| Irish Rebellion of 1641 ||| By 1649, Ireland had already been at war for eight years, since the outbreak of the [[Irish Rebellion of 1641]]. During this time, most of Ireland was ruled by the [[Confederate Ireland|Irish Confederate Catholics]], a government of Irish Catholics based in [[Kilkenny]]. The Confederates allied themselves with the English Royalists in the [[English Civil War]], against the English Parliament, which was committed to re-conquering Ireland, suppressing the Catholic religion and destroying the Irish Catholic land-owning class. After much internal in-fighting, the Confederates signed a peace treaty with [[Charles I of England|Charles I]], who was soon to be executed by the [[Rump Parliament]], agreeing to accept English Royalist troops into Ireland and put their own armies under the command of Royalist officers, in particular [[James Butler, 1st Duke of Ormonde]]. By 1649, the English Parliament held only two small enclaves in Ireland –at [[Dublin]] and [[Derry]]. ||| Background ||| ||| +0 Battle of Rehe ||| Second Sino-Japanese War ||| Rehe was subsequently annexed to Manchukuo. Zhang Xueliang was forced by the [[Kuomintang]] government to relinquish his posts for “medical reasons”. Chinese forces fell back in disarray to the Great Wall, where after a [[Defense of the Great Wall|series of battles and skirmishes]], the Japanese Army seized a number of strategic points, and then agreed to a [[cease fire]] and a negotiated settlement (the [[Tangku Truce]]) whereby a [[demilitarized zone]] would be established between the Great Wall and [[Beijing]]. However, this would prove to be only a temporary respite before the full scale combat of the [[Second Sino-Japanese War]] erupted in earnest in 1937. ||| Aftermath ||| ||| +0 Battle of Rio de Janeiro ||| Battle of Malplaquet ||| There were multiple reasons for the French to plan an attack on Rio de Janeiro. Firstly, the commander Duguay-Trouin had a personal reason: he was almost bankrupt. The second reason was political. The war had not gone well for France. After the defeat in the [[Battle of Malplaquet]], the enemy was on French soil and French morale was low. A military success was urgently needed. The third reason was a question of honour. The previous year another [[buccaneer]], [[Jean-François Duclerc]] had attempted [[Battle of Rio de Janeiro (1710)|an attack on Rio]], but this expedition had ended in disaster; Duclerc and 600 of his soldiers were captured and held in unacceptable conditions. The Portuguese refused to exchange these prisoners as was stipulated in a Franco-Portuguese treaty from 1707; furthermore, Duclerc was killed in prison under mysterious circumstances in May 1711. The French wanted to liberate these prisoners, and possibly conquer some Brazilian territory. ||| Background ||| ||| +0 Battle of Saint-Mihiel ||| Battle of Cambrai (1917) ||| Although the AEF was new to the French theater of war, they trained hard for several months in preparation for fighting against the German armies. The use by the British of tanks at the [[Battle of Cambrai (1917)|Battle of Cambrai]] in 1917 impressed General Pershing so much that he ordered the creation of a tank force to support the AEF's infantry. As a result, by September 1918, Colonel [[George S. Patton]] Jr. had finished training two tank battalions – 144 French-built [[Renault FT-17|Renault FT]] light tanks organized as the 344th and 345th battalions of the [[United States Tank Corps]] – at [[Langres|Langres, France]] for an upcoming offensive at the St. Mihiel salient. ||| Prelude ||| Allied tank support ||| +0 Battle of Saint-Mihiel ||| Battle of Flirey ||| In 1914, the German command wished to take the [[Verdun]] fortifications which formed a strong point in the French lines. A first attempt, at [[Bois-le-Pretre fighting|Bois-le-Pretre]] (''Priesterwald'' in German), failed despite violent fighting. During two more attempts ([[Battle of Flirey]]), German troops took Saint-Mihiel and the fort at [[Camp des Romains]], but they were ultimately stopped at the [[Fort de Troyon]] to the south of Verdun. ||| Background: The Saint-Mihiel salient ||| ||| +0 Battle of Saipan ||| Attack on Pearl Harbor ||| By 16:15 on 9 July, Admiral Turner announced that Saipan was officially secured. Saito — along with commanders Hirakushi and Igeta — committed suicide in a cave. Also committing suicide at the end of the battle was Vice-Admiral [[Chuichi Nagumo]] — the naval commander who led the Japanese carriers at [[Attack on Pearl Harbor|Pearl Harbor]] and [[Battle of Midway|Midway]] — who had been assigned to Saipan to direct the Japanese naval air forces based there. ||| Battle ||| ||| +0 Battle of Samakh ||| Capture of Damascus (1918) ||| On 20 September, [[German Empire|German]] [[General (Germany)|General]] [[Otto Liman von Sanders]], the commander of the Yildirim Army Group, ordered Samakh's German and Ottoman garrison to prepare a strong rearguard defence of the town. By dawn on 25 September, when a regiment and two squadrons of the Australian 4th Light Horse Brigade attacked Samakh, the rearguard was strongly entrenched. The assault, which began with a mounted cavalry charge, ended two hours later after close quarter fighting in the village and the railway station. After fierce fighting with [[bayonet]]s and [[sword]]s, from room to room in the railway buildings, the town was captured. This victory, which captured the centre of the rearguard line, concluded the Battle of Sharon section of the Battle of Megiddo and opened the way for the cavalry pursuit [[Capture of Damascus (1918)|to Damascus]], which was captured on 1 October. By the time the [[Armistice of Mudros]] between the Allies and the Ottoman Empire was signed at the end of October, [[Battle of Aleppo (1918)|Aleppo]] had been captured and fighting was in progress further north. ||| ||| ||| +0 Battle of San Germano ||| Battle of Tolentino ||| Following his defeat at the [[Battle of Tolentino]], Murat had fallen back to San Germano, now [[Cassino (FR)|Cassino]]. There Murat reinforced his battered army with the Army of the Interior, which had been left in reserve to defend [[Naples]] during the war. Even so, most of the original Neapolitan force had been killed, wounded or deserted, and Murat's force only totalled 15,000. Meanwhile, General Nugent's force, who had marched from [[Florence]], arrived in [[Rome]] on 30 April. From there, he marched towards [[Ceprano]], where there was a minor engagement with a band of local militia. After receiving word of Murat's defeat at Tolentino, Nugent moved to intercept his retreat back to Naples. ||| ||| ||| +0 Battle of San Pietro Infine ||| Operation Torch ||| The [[Allied invasion of Italy]] from the south followed the Allied successes in [[North African Campaign|North Africa]]. [[Eighth Army (United Kingdom)|Eighth Army]]'s advance from the east following the [[Second Battle of El Alamein]] and the British-American invasion of [[French North Africa]] by the British [[First Army (United Kingdom)|First Army]] in [[Operation Torch]] had led by May 1943 to the surrender of Axis forces in Africa. ||| Background ||| North Africa and Sicily ||| +0 Battle of Sardarabad ||| Armenian Genocide ||| In January 1918, two months after the [[Bolshevik]] seizure of power in Russia, the [[Sovnarkom]], the highest government authority under the Bolshevik system, issued a decree which called for the withdrawal of Russian troops from the [[Caucasus Campaign|Caucasus Front]]. This move threw the Armenian leadership in the [[South Caucasus|Transcaucasia]] into a panic, since it removed from the region the only force capable of protecting the Armenian people from the [[Ottoman Empire]], which had effectively [[Armenian Genocide|exterminated its Armenian population]] through systematic massacres and deportations. The Armenians refused to recognize the authority of the Bolsheviks and attempted to form military units to defend the front as the Ottoman armies prepared to expand eastward. {{cite book|last=Hovannisian|first=Richard G.|authorlink=Richard G. Hovannisian|title=Armenia on the Road to Independence, 1918|publisher=University of California Press ||| Background ||| ||| +0 Battle of Scarrifholis ||| Irish Rebellion of 1641 ||| The Ulster Army was raised by the [[Confederate Ireland|Irish Confederate Catholics]] in 1642 to organise the insurgent forces who were operating there since the [[Irish Rebellion of 1641|rebellion]] of the previous year. Up to 1649, it was commanded by [[Owen Roe O'Neill]], a professional soldier who had served in the Spanish army in Flanders. However, O'Neill died in late 1649 and was replaced by Bishop Heber MacMahon of Clogher. MacMahon had no real military experience, but was elected by the Ulster officers to avoid political infighting among their officers. The army was split between those who supported the Confederate's treaty with the English [[Cavalier|Royalists]], mainly pre-war land-owners such as [[Felim O'Neill of Kinard|Phelim O'Neill]] and the army's professional officers and Catholic clergy who did not support a deal with the Royalists that did not guarantee the public exercise of the Catholic religion and return confiscated lands to Catholic landowners. In 1648, Owen Roe O'Neill had left the Confederation and briefly fought with the other Confederate armies over the treaty with the Royalists. He even negotiated with the English Parliamentarian forces in Ulster to try to secure a better deal for Catholic interests. He only re-joined the Catholic Confederation after the invasion of Ireland by [[Oliver Cromwell]] in August 1649, when it was clear that the English Parliament was the most dangerous enemy faced by Irish Catholics. ||| Background ||| ||| +0 Battle of Schliengen ||| Battle of Ettlingen ||| |[[Battle of Ettlingen|Ettlingen]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Sharon ||| Battle of Amiens (1918) ||| On a tactical level, Allenby's battle plans were similar except for the use of horses instead of tanks, to the British [[Fourth Army (United Kingdom)|Fourth Army]]'s attack on the Western Front during the [[Battle of Amiens (1918)|Battle of Amiens]] six weeks before the Battle of Megiddo. The similarities include ||| Prelude ||| Attacking force ||| Plan of attack +0 Battle of Sharon ||| Battle of Beersheba (1917) ||| After the series of [[Central Powers]] defeats in Palestine at the end of 1917, at [[Battle of Beersheba (1917)|Beersheba]], at [[Third Battle of Gaza|Gaza]], at [[Battle of Mughar Ridge|Mughar Ridge]], and with the loss of large areas of southern Palestine during the subsequent retreats of the Seventh and Eighth Armies back into the Judean Hills, and following the loss of [[Battle of Jerusalem (1917)|Jerusalem]], several of the German and Ottoman army commanders in the region were replaced. [[General (Germany)|General]] [[Erich von Falkenhayn]] commanding the [[Yildirim Army Group]] was replaced by General [[Otto Liman von Sanders]] and [[Friedrich Freiherr Kress von Kressenstein]], commander of the Eighth Army was replaced by Djevad Pasha. [[Djemal Pasha|Cemal Pasha]] appointed [[Küçük Cemal Paşa|Cemal Kucjuk Pasha]] to command the [[Fourth Army (Ottoman Empire)|Fourth Army]]. ||| Background ||| ||| +0 Battle of Sharon ||| Capture of Damascus (1918) ||| The cavalry phase of the Battle of Sharon began as soon as the gap was made during the infantry attacks. The [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] led the way north up along the [[Plain of Sharon]] followed by the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] with the [[Australian Mounted Division]] in reserve. These divisions subsequently rode across the [[Mount Carmel Range]] through two passes, to occupy the Esdraelon Plain, on 20 September. Here they cut the main Ottoman lines of communication. Units of the 4th and 5th Cavalry Divisions converged to capture [[Capture of Afulah and Beisan|Afulah]] with the 4th Cavalry Division capturing Beisan in the afternoon. The Australian Mounted Division [[Capture of Jenin (1918)|captured Jenin]] along with thousands of prisoners when they captured the main line of retreat from Nablus to Damascus. On 20 September [[Nazareth]], the site of the Ottoman Army's Yildirim Army Group headquarters, was unsuccessfully attacked by the 5th Cavalry Division. During the [[Battle of Nazareth]] the Ottoman Commander in Chief, [[Otto Liman von Sanders]], was forced to escape. The 5th Cavalry Division captured the town the following day and several days later this division also captured Haifa and Acre following the [[Battle of Haifa (1918)|Battle of Haifa]]. On the last day of the Battle of Sharon, the Australian Mounted Division attacked a German reinforced rearguard garrison at [[Samakh, Tiberias|Samakh]], which had been put on the alert by Liman von Sanders during his escape from Nazareth. The Australian Light Horse victory at the [[Battle of Samakh]] and the subsequent [[Capture of Tiberias]] ended the Battle of Sharon and the Battle of Megiddo. As a result of the battles of Sharon and Nablus, known collectively as the Battle of Megiddo, much territory and many prisoners were captured. The Final Offensive of the Sinai and Palestine Campaign began the day after the Battle of Megiddo ended, with the [[Capture of Damascus (1918)|pursuit to Damascus]], which was captured on 1 October. ||| ||| ||| +0 Battle of Sharon ||| Hundred Days Offensive ||| Also in March 1918, major offensive operations in Palestine became a low priority for the [[British Army]] when the spectacular successes of [[Erich Ludendorff]]'s [[Spring Offensive]] in [[France]] seriously threatened the [[British Expeditionary Force (World War I)|British Expeditionary Force]]. By July, it had become clear that this German offensive on the [[Western Front (World War I)|Western Front]], had failed. In August, a brief return to the [[battle of attrition]] in the [[trench warfare|trenches]] ensued until the [[Hundred Days Offensive]], coinciding with preparations for a renewal of the campaign in Palestine, began in August. ||| Background ||| ||| +0 Battle of Shiloh ||| Siege of Corinth ||| Nevertheless, Grant's career suffered temporarily in the aftermath of Shiloh. Halleck combined and reorganized his armies, relegating Grant to the powerless position of second-in-command. In late April and May, the Union armies, under Halleck's personal command, advanced slowly toward Corinth and [[Siege of Corinth|captured it]], while an amphibious force on the [[Mississippi River]] destroyed the Confederates' [[River Defense Fleet]] and captured [[Memphis, Tennessee]]. Halleck was promoted to be general in chief of all the Union armies. With Halleck's departure to the East, Grant was restored to command and eventually pushed down the Mississippi River to besiege [[Vicksburg Campaign|Vicksburg]], Mississippi. After the surrender of Vicksburg and the fall of [[Siege of Port Hudson|Port Hudson]] in the summer of 1863, the Mississippi River was under Union control and the Confederacy was cut in two. Command of the Army of Mississippi fell to Braxton Bragg, who was promoted to full general on April 6, and during the fall of 1862, he led it on an unsuccessful invasion of Kentucky, culminating in his retreat from the [[Battle of Perryville]]. ||| Aftermath ||| ||| +0 Battle of Shklow (1654) ||| Deluge (history) ||| Szkłów was the last (if dubious) victory of Janusz Radziwiłł, a powerful and ambitious [[magnate]]. Cherkassky retreated temporarily but only to merge with another Russian army under [[Aleksey Trubetskoy]]; later that month Radziwiłł would face defeat at the [[battle of Szepielewicze]] (Shepeleviche). That battle would mark Russian victory in Lithuania. Shklov was taken by the Russians in September 1654. The besieged Polish–Lithuanian garrison of [[Smolensk]] found itself in an isolated situation and lost its hopes to hold out until reinforcements could arrive. This forced the garrison to surrender (see [[Siege of Smolensk (1654)]]). A few months later Janusz Radziwiłł would defect from Polish side to that of the [[Deluge (history)|invading Swedes]], and would eventually die fighting for them, remembered as a traitor in Polish historiography. ||| Significance ||| ||| +0 Battle of Singapore ||| South-East Asian theatre of World War II ||| The '''Battle of Singapore''', also known as the '''Fall of Singapore''', was fought in the [[South-East Asian theatre of World War II|South-East Asian theatre]] of the [[World War II|Second World War]] when the [[Empire of Japan]] invaded the British stronghold of [[Singapore in the Straits Settlements|Singapore]]. Singapore was the major [[United Kingdom|British]] military base in [[Southeast Asia|South-East Asia]] and nicknamed the 'Gibraltar of the East'. The fighting in Singapore lasted from 8 to 15 February 1942. ||| ||| ||| +0 Battle of Solferino ||| Battle of Leipzig ||| The '''Battle of Solferino''' (referred to in Italy as the '''Battle of Solferino and San Martino''') on 24 June 1859 resulted in the victory of the allied [[Second French Empire|French]] Army under [[Napoleon III of France|Napoleon III]] and [[Kingdom of Piedmont-Sardinia|Sardinian]] Army under [[Victor Emmanuel II of Italy|Victor Emmanuel II]] (together known as the Franco-Sardinian Alliance) against the [[Austrian Empire|Austrian]] Army under Emperor [[Franz Joseph I of Austria|Franz Joseph I]]. It was the last major battle in world history where all the armies were under the personal command of their monarchs. Perhaps 300,000 soldiers fought in this important battle, the largest since the [[Battle of Leipzig]] in 1813. There were about 130,000 Austrian troops and a combined total of 140,000 French and allied Piedmontese troops. After this battle, the Austrian Emperor refrained from further direct command of the army. ||| ||| ||| +0 Battle of Spion Kop ||| Battle of Colenso ||| General Sir [[Redvers Henry Buller|Redvers Buller]], [[Victoria Cross|VC]], commander of the British forces in Natal, was attempting to relieve a British force [[Siege of Ladysmith|besieged in Ladysmith]]. The Boers under General [[Louis Botha]] held the [[Tugela River]] against him. Although Botha's men were outnumbered, they were mostly equipped with modern [[Mauser]] rifles and up-to-date field guns, and had carefully entrenched their positions. In late December, 1899, Buller made a frontal assault on the Boer positions at the [[Battle of Colenso]]. The result was a heavy British defeat. ||| Prelude ||| Planning and crossing the Tugela ||| +0 Battle of Stones River ||| Battle of Hartsville ||| While Rosecrans was preparing in Nashville, Bragg ordered [[colonel|Col.]] [[John Hunt Morgan]] to move north with his cavalry and operate along Rosecrans's lines of communications, to prevent him from foraging for supplies north of Nashville. The [[Battle of Hartsville]], at a crossing point on the [[Cumberland River]] about 40 miles (64 km) upstream from Nashville (north of Murfreesboro) was an incident in Morgan's raid to the north, before Rosecrans had the bulk of his infantry forces on the move. The relatively small battle that followed Morgan's surprise attack was an embarrassing Union defeat, resulting in many captured Union supplies and soldiers. The Union also engaged in a strategic cavalry raid. On December 26, the day Rosecrans marched from Nashville, a small force under Brig. Gen. [[Samuel P. Carter]] raided the upper Tennessee Valley from [[Manchester, Kentucky]]. Until January 5, Carter's men destroyed railroad bridges and fought a few skirmishes, including a serious one on December 28 at Perkins's Mill (also known as Elk Fort). But none of the cavalry raids, Confederate or Union, had any significant effect on the Stones River Campaign. ||| Background and initial movements ||| ||| +0 Battle of Stony Point ||| Battles of Saratoga ||| Following the surrender of General [[John Burgoyne]] after the [[Battles of Saratoga]] in October 1777 and the subsequent entry of [[France]] into the war as [[Franco-American alliance|an American ally]], British strategy in dealing with the rebellious Americans was forced to change. In the northern states, their strategy was reduced to raids against targets of economic and military importance, and unsuccessful attempts to bring Major General [[George Washington]]'s [[Continental Army]] into a decisive confrontation. Washington deployed his army in strong positions around the principal British base at [[New York City]], and refused to be drawn out of them. ||| Background ||| ||| +0 Battle of Tabsor ||| Capture of Afulah and Beisan ||| Together, these attacks would force the Central Powers to retreat back along their main [[line of communication]] on the roads and branch lines to the Jezreel Valley railway. These ran alongside each other out of the Judean Hills, through the Dothan Pass to [[Jenin]], and across the Esdrealon Plain (also known as the [[Jezreel Valley]] and the ancient Plain of [[Armageddon]]), {{convert|40|mi|km}} away, and on to Damascus. The plain was also the site of the important communication hubs at Afulah and Beisan and here thousands would be captured by the cavalry as they successfully exploited the infantry victories. The objectives of Desert Mounted Corps were the swift capture of [[Capture of Afulah and Beisan|Afulah]] by the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]], the swift capture the Yildirim Army Group's headquarters at [[Battle of Nazareth (1918)|Nazareth]] by the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] and the swift [[Capture of Jenin (1918)|capture of Jenin]] by the Australian Mounted Division's [[3rd Light Horse Brigade]]. Together, the occupation of the lowlands of the [[Plain of Sharon]], the Esdrealon Plain and the southern Jordan Valley would form a semicircle round the positions of the Ottoman Seventh and Eighth Armies in the [[Judean Hills]]. ||| Prelude ||| British plans and preparations ||| +0 Battle of Tabsor ||| Western Front (World War I) ||| By July, it was clear that the [[German Empire|German]] [[Spring Offensive]] in France, which had forced the postponement of offensive plans in [[Palestine (region)|Palestine]], had failed, resulting in a return to trench warfare on the [[Western Front (World War I)|Western Front]]. This coincided with the approach of the campaign season in Palestine and the Middle East. ||| Background ||| ||| +0 Battle of Taegu ||| Battle of Taejon ||| The troops of the 24th Infantry were systematically pushed southeast in the [[Battle of Chochiwon]], the [[Battle of Chonan]], and the [[Battle of Pyongtaek]], as well as in smaller engaagements. The 24th Infantry made a desperate stand against the North Koreans in the [[Battle of Taejon]], where it was heavily decimated, but it delayed the North Korean advance until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of Taejon ||| Battle of Pusan Perimeter ||| Although they could not hold the city, the 24th Infantry Division achieved a strategic advantage by delaying the North Koreans, providing time for other American divisions to establish a [[Pusan Perimeter|defensive perimeter around Pusan]] further south. The delay imposed at Taejon probably prevented an American rout during the subsequent [[Battle of Pusan Perimeter]]. During the action, the KPA captured [[Major general (United States)|Major General]] [[William F. Dean]], the commander of the 24th Infantry Division, and highest ranking American [[prisoner of war|prisoner]] during the Korean War. ||| ||| ||| +0 Battle of Taranto ||| Battle of the Strait of Otranto (1940) ||| Meanwhile, X-Force cruisers [[Battle of the Strait of Otranto (1940)|attacked an Italian convoy]]. This force had three cruisers ({{HMS |Ajax|22|6}}, {{HMS|Orion|85|2}} and {{HMAS|Sydney|D48|6}}) and two [[Tribal class destroyer (1936)|''Tribal''-class]] destroyers ({{HMS |Nubian|F36|6}} and {{HMS |Mohawk|F31|2}}). Just past midnight, they met and destroyed four Italian merchantmen (''Capo Vado'', ''Catalani'', ''Locatelli'' and ''Premuda''), damaging the torpedo-boat ''Fabrizi'', while the auxiliary cruiser ''[[Ramb III]]'' fled. ||| Attack ||| ||| +0 Battle of Thermopylae ||| Battle of Thermopylae (1941) ||| Today, the pass is not near the sea but is several kilometres inland because of [[Sedimentation#Geology|sedimentation]] in the Malian Gulf. The old track appears at the foot of hills around the plain, flanked by a modern road. Recent [[core sample]]s indicate that the pass was only 100 meters wide and the waters came up to the gates; '''Little do the visitors realize that the battle took place across the road from the monument.''' The pass still is a natural defensive position to modern armies, and [[Commonwealth of Nations|British Commonwealth]] forces in [[World War II]] made a [[Battle of Thermopylae (1941)|defense in 1941]] against the [[Nazi Germany|Nazi]] invasion metres from the original battlefield. ||| Strategic and tactical considerations ||| Topography of the battlefield ||| +0 Battle of Tiger Hill ||| Battle of Tololing ||| The '''Battle of Tiger Hill''' encompasses the battles fought in and around the peak of [[Tiger Hill, Kargil|Tiger Hill]] between [[Indian Army]] and [[Kargil war#Occupation by Pakistan|Pakistani]] forces from the final week of May till second week of June 1999 during the [[Kargil War]] in 1999. The battle, with the concomitant [[Battle of Tololing|battle for the adjoining peak of Tololing]], culminated in Indian forces capturing it. ||| ||| ||| +0 Battle of Toungoo ||| Second Sino-Japanese War ||| '''Battle of Toungoo''', was one of the key battles in the [[Battle of Yunnan-Burma Road]] in the [[Burma Campaign]] of [[World War II]] and [[Second Sino-Japanese War]]. The failure to hold the city of Toungoo opened up the route for the Japanese to make their lunge to Lashio around the allied flank and into the Chinese rear. ||| ||| ||| +0 Battle of Towton ||| Battle of Wakefield ||| Contemporary accounts described Henry VI as peaceful and pious, not suited for the violent dynastic civil wars, such as the War of the Roses. He had periods of insanity while his inherent benevolence eventually required his wife, [[Margaret of Anjou]], to assume control of his kingdom, which contributed to his own downfall. His ineffectual rule had encouraged the nobles' schemes to establish control over him, and the situation deteriorated into a civil war between the supporters of his house and those of [[Richard of York, 3rd Duke of York|Richard, Duke of York]]. After the Yorkists captured Henry in 1460, the [[Parliament of England|English parliament]] passed an [[Act of Accord]] to let York and his line succeed Henry as king. Henry's consort, [[Margaret of Anjou]], refused to accept the dispossession of her son's right to the throne and, along with fellow Lancastrian malcontents, raised an army. Richard of York was killed at the [[Battle of Wakefield]] and his titles, including the claim to the throne, passed to his eldest son Edward. Nobles who were previously hesitant to support Richard's claim to the throne considered the Lancastrians to have reneged on the Act — a legal agreement — and Edward found enough backing to denounce Henry and declare himself king. The Battle of Towton was to affirm the victor's right to rule over England through force of arms. ||| ||| ||| +0 Battle of Tsaritsyn ||| Eastern Front (World War II) ||| For these and later actions in the city of Tsaritsyn region, the city was renamed ''Stalingrad'' in 1925 to honor Stalin and his actions. About 17 years later the city would once again be a battlefield, this time for the decisive battle of the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]], the bloody [[Battle of Stalingrad]]. The city was renamed in 1961 to [[Volgograd]]. ||| Aftermath ||| ||| +0 Battle of Verdun ||| Second Battle of Champagne ||| The German strategy assumed that the French would attempt to hold on to the east bank of the Meuse, then commit the French strategic reserve to recapture it and suffer catastrophic losses from German artillery-fire, while the German infantry held positions easy to defend and suffered fewer losses. The German plan was based on the experience of the [[Second Battle of Champagne|battles in Champagne]] ({{lang|de|''Herbstschlacht''}} September–October 1915) when after early success, the French offensive was defeated with far more French than German casualties. Poor weather delayed the beginning of the German offensive ({{lang|de|''Unternehmen Gericht''}}/Operation Judgement) until 21 February; French construction of defensive lines and the arrival of reinforcements before the opening attack, delayed the German advance despite many losses. By 6 March, {{frac|20|1|2}} French divisions were in the RFV and a defence in depth had been established. Pétain ordered that [[On ne passe pas|no withdrawals]] were to be made and that counter-attacks were to be conducted, despite exposing French infantry to fire from the German artillery. By 29 March, French artillery on the west bank had begun a constant bombardment of German positions on the east bank, which caused many German infantry casualties. ||| ||| ||| +0 Battle of Vienna, Virginia ||| Crimean War ||| Historian Charles Poland, Jr. says the [[Battle of Fairfax Court House (June 1861)]], the [[Battle of Arlington Mills]], the Battle of Vienna, Virginia and several other brief clashes in the area at this time 'were among the antecedents of the forthcoming first battle at Bull Run.' He no doubt was referring to the use of the railroad for troop movements or involvement in combat or both because some use of railroads for moving ammunition and supplies was made during the [[Crimean War]]. ||| Aftermath ||| ||| +0 Battle of Yongdong ||| Battle of Taejon ||| The '''Battle of Yongdong''' was an engagement between United States and [[North Korean]] forces early in the [[Korean War]]. It occurred on July 22–25, 1950, in the village of [[Yongdong]] in southern [[South Korea]]. The newly arrived [[US Army]]'s [[1st Cavalry Division (United States)|1st Cavalry Division]] was ordered there to cover the retreat of the [[US 24th Infantry Division]] after the [[Battle of Taejon]]. The 1st Cavalry Division soldiers, however, were untried in combat, and the [[North Korean People's Army]]'s [[NK 3rd Division|3rd Division]] (NK 3rd Division) was able to outmaneuver them and force them back. ||| ||| ||| +0 Battle of the Argenta Gap ||| Gothic Line ||| By the winter of 1944-5 the Allied armies had penetrated the main defences of the [[Gothic Line]] but had failed to break out into the Po river valley. A new major offensive was planned for the spring of 1945, when improving weather would allow the Allies to take advantage of their superior airpower and armoured and motorized ground forces. ||| Background ||| ||| +0 Battle of the Atlantic ||| Convoy SC 7 ||| Pack tactics were first used successfully in September and October 1940, to devastating effect, in a series of convoy battles. On September 21, convoy [[Convoy HX 72|HX 72]] of 42 merchantmen was attacked by a pack of four U-boats, losing eleven ships sunk and two damaged over two nights. In October, the slow convoy [[Convoy SC 7|SC 7]], with an escort of two sloops and two corvettes, was overwhelmed, losing 59% of its ships. The battle for [[Convoy HX 79|HX 79]] in the following days was in many ways worse for the escorts than for SC 7. The loss of a quarter of the convoy without any loss to the U-boats, despite very strong escort (two destroyers, four corvettes, three trawlers, and a minesweeper) demonstrated the effectiveness of the German tactics against the inadequate British anti-submarine methods. On December 1, seven German and three Italian submarines caught [[convoy HX 90|HX 90]], sinking 10 ships and damaging three others. The success of pack tactics against these convoys encouraged Admiral Dönitz to adopt the wolf pack as his primary tactic. ||| British situation ||| 'The Happy Time' (June 1940 – February 1941) ||| +0 Battle of the Boyne ||| Irish Confederate Wars ||| In an Irish context, the war was a [[sectarian]] and [[ethnic]] conflict, in many ways a re-run of the [[Irish Confederate Wars]] of 50 years earlier. For the [[Jacobitism|Jacobites]], the war was fought for Irish sovereignty, religious tolerance for Catholicism, and land ownership. The Catholic upper classes had lost almost all their lands after [[Cromwellian conquest of Ireland|Cromwell's conquest]], as well as the right to hold public office, practice their religion, and sit in the [[Parliament of Ireland|Irish Parliament]]. They saw the Catholic King James as a means of redressing these grievances and securing the autonomy of Ireland from England. To these ends, under [[Richard Talbot, 1st Earl of Tyrconnel]], they had raised an army to restore James after the Glorious Revolution. By 1690, they controlled all of Ireland except for the province of [[Ulster]]. Most of James II's troops at the Boyne were Irish Catholics. ||| Background ||| ||| +0 Battle of the Boyne ||| Irish Rebellion of 1641 ||| Conversely, for the Williamites, the war was about maintaining Protestant and English rule in Ireland. They feared for their lives and their property if James and his Catholic supporters were to rule Ireland, nor did they trust the promise of tolerance, seeing the Declaration of Indulgence as a ploy to re-establish Catholicism as the sole [[state religion]]. In particular, they dreaded a repeat of the [[Irish Rebellion of 1641]], which had been marked by widespread killing. For these reasons, Protestants fought en masse for William of Orange. Many Williamite troops at the Boyne, including their very effective irregular cavalry, were [[Ulster Protestants]], who called themselves 'Inniskillingers' and were referred to by contemporaries as '[[Ulster Scots people|Scots-Irish]]'. ||| Background ||| ||| +0 Battle of the Catalaunian Plains ||| Battle of Marathon ||| Kim, in his recent work on the Huns, takes a radically different view of the battle's outcome. Kim suggests that, in fact, the entire battle is a play on the [[Battle of Marathon]], with the Romans being the [[Platea|Plateans]] on the left, the Alans the weak Athenian center, and the Goths the Athenian regulars on the right, with Theodoric as [[Miltiades]] and Thorismund as [[Callimachus (polemarch)|Callimachus]]. The return home by the Goths to secure Thorismund's throne is the same as the return to [[Athens]] to protect it from sedition and the [[Persian Navy]]. ||| Outcome of the Battle ||| As a Roman defeat ||| +0 Battle of the Coral Sea ||| Guadalcanal Campaign ||| Although a tactical victory for the Japanese in terms of ships sunk, the battle would prove to be a strategic victory for the Allies for several reasons. The battle marked the first time since the start of the war that a major Japanese advance had been checked by the Allies. More importantly, the Japanese fleet carriers ''Shōkaku'' and {{Ship|Japanese aircraft carrier|Zuikaku||2}} – one damaged and the other with a depleted aircraft complement – were unable to participate in the [[Battle of Midway]], which took place the following month, ensuring a rough parity in aircraft between the two adversaries and contributing significantly to the US victory in that battle. The severe losses in carriers at Midway prevented the Japanese from reattempting to invade Port Moresby from the ocean. Two months later, the Allies took advantage of Japan's resulting strategic vulnerability in the South Pacific and launched the [[Guadalcanal Campaign]] that, along with the [[New Guinea Campaign]], eventually broke Japanese defenses in the South Pacific and was a significant contributing factor to Japan's ultimate defeat in World War II. ||| ||| ||| +0 Battle of the Hongorai River ||| Bougainville Campaign ||| The '''Battle of the Hongorai River''' took place during the [[Second World War]] and involved [[Australia]]n, [[New Zealand]] and [[Japan]]ese forces. Part of the wider [[Bougainville Campaign]] of the [[Pacific War|Pacific theatre]], the battle was fought in the southern sector of [[Bougainville Island]] and occurred in two distinct periods between 17 April and 22 May 1945, as elements of the Australian [[15th Brigade (Australia)|15th Brigade]] advanced along the Buin Road towards the [[Hongorai River]] and then forced their way across it. Following the end of the initial fighting, the Australian advance towards the main Japanese concentration at [[Buin, Papua New Guinea|Buin]] continued until torrential rain and flooding brought it to a halt, washing away many bridges and roads upon which they relied for supplies. With hostilities coming to a close the Japanese began harassing the Australian [[line of communication]]s, and as the rain stopped and the flooding subsided in late-July and into August, preparations to resume the advance continued. Ultimately, the war came to an end before the final Australian advance began. ||| ||| ||| +0 Battle of the Tugela Heights ||| Battle of Colenso ||| Buller's army had made three earlier attempts to raise the Boer siege of [[Ladysmith, KwaZulu-Natal|Ladysmith]]. The battles of [[Battle of Colenso|Colenso]], [[Battle of Spion Kop|Spionkop]] and [[Battle of Vaal Krantz|Vaal Krantz]] each resulted in embarrassing British defeats at the hands of Botha's army of Boer irregulars. In three months, British casualties rose to 3,400 men while Boer losses were much lower. On 12 February, Buller ordered a fourth attempt to relieve [[Ladysmith, KwaZulu-Natal|Ladysmith]]. He hoped to exploit his ten-to-one superiority in artillery and four-to-one advantage in numbers. ||| Background ||| ||| +0 Battle of Île Ronde ||| French Revolution ||| Île de France had been in a state of turmoil since the [[French Revolution]] and in 1792 the republican party on the island seized control. In 1794 suspected royalists were arrested, including the naval commander {{Interlanguage link|fr|Armand de Saint-Félix|lt=Saint-Félix|Armand de Saint-Félix}}, their executions forestalled by the arrival of news that the [[French Convention]] had abolished slavery. Only the intervention of Governor [[Anne Joseph Hippolyte de Maurès, Comte de Malartic|Malartic]] prevented unrest. The preoccupation of the naval authorities had prevented any offensive operations and the reduced squadron, now commanded by Captain [[Jean-Marie Renaud]], remained in [[Port Louis]]. ||| Background ||| ||| +0 Battle of Šibenik ||| Battle of Zadar ||| On 23 September, the JNA fully secured Drniš and its surroundings. At the same time, it shifted its focus to the [[Battle of Zadar]], away from Šibenik. The Yugoslav naval blockade was lifted unilaterally the same day. Even though a number of JNA facilities in the city were captured by the ZNG, several major JNA posts remained in Šibenik. Those included 'Rade Končar' barracks housing the 11th Marine Infantry Brigade, 'Ante Jonić' barracks, 'Minerska' depot where [[naval mine]]s were stored, 'Jamnjak' depot and the 'Ražine' artillery battery containing confiscated Croatian Territorial Defence weapons and 'Duboka' fuel storage. ||| Timeline ||| ||| +0 Battle off Samar ||| Battle of Midway ||| Sprague's task unit lost two escort carriers, two destroyers, a destroyer escort and several aircraft. Over a thousand Americans died, comparable to the combined losses of American men and ships at the better known Battles of the [[Battle of Coral Sea|Coral Sea]] and [[Battle of Midway|Midway]]. But in exchange for the heavy losses for such a small force, they sank or disabled three Japanese cruisers and caused enough confusion to persuade the Japanese commander, Vice Admiral [[Takeo Kurita]], to regroup and ultimately withdraw, rather than advancing to sink troop and supply ships at [[Leyte Gulf]]. In the combined Battle of Leyte Gulf, 10,000 Japanese sailors and 3,000 Americans died. Although the battleship ''Yamato'' and the remaining force returned to Japan, the battles marked the final defeat of the Japanese Navy, as the ships remained in port for most of the rest of the war and ceased to be an effective naval force. ||| ||| ||| +0 Battle on Snowshoes (1757) ||| Battle on Snowshoes ||| A [[Battle on Snowshoes|similar battle]] was fought the following year, in which Rogers was very nearly killed and his company was decimated. ||| Aftermath ||| ||| +0 Battles of the Isonzo ||| Eleventh Battle of the Isonzo ||| *[[Eleventh Battle of the Isonzo]] – 19 August–12 September 1917 ||| Number of battles ||| ||| +0 Bolton Massacre ||| Irish Rebellion of 1641 ||| At least two of the attacking Royalist regiments (Warren's and Broughton's) had been raised in England in 1640 to serve in the [[Bishops' Wars]] but were sent to Ireland after the [[Irish Rebellion of 1641]]. They returned to serve in the Royalist armies in England in 1644 after King Charles negotiated a ceasefire with [[Confederate Ireland]]. The Parliamentarians nevertheless believed that they consisted of Irish [[Roman Catholic Church|Catholics]]. The Royalists claimed that at some point during the fighting, the Parliamentarians hanged a captured Irishman as a 'Papist', enraging the attackers.{{sfn|Young|1970|p=196}} Tyldesley's regiment had been raised in Lancashire and included many Roman Catholics. ||| Causes ||| ||| +0 Bombardment of Algiers (1816) ||| Battle of Trafalgar ||| Despite this, the Algerian batteries could not maintain fire and by 22:15, Exmouth gave the order for the fleet to weigh anchor and sail out of range, leaving HMS ''Minden'' to keep firing to suppress any further resistance. The wind had changed and blowing from the shore helped the fleets depart. {{rp|394}} (16 percent killed or wounded). As a comparison, the British casualties at the [[Battle of Trafalgar]] had been only 9 percent. ||| Bombardment ||| ||| +0 Bombing of Cabra ||| Bombing of Alicante ||| Throughout 1938, the [[Spanish Republican Air Force]] ''(Fuerza Aerea de la República Española)'' or ''FARE'' carried out air bombings against the Nationalists held cities (among them [[Seville]] and [[Valladolid]]) in retaliation for the bombing of the Republican held cities (among them [[Bombing of Barcelona|Barcelona]], [[Bombing of Alicante|Alicante]] and [[Bombing of Granollers|Granollers]]). ||| Background. ||| ||| +0 Bombing of Dresden in World War II ||| Eastern Front (World War II) ||| Early in 1945, after the German offensive known as the [[Battle of the Bulge]] had been exhausted — including the disastrous attack by the [[Luftwaffe]] [[Operation Bodenplatte|on New Year's Day]] involving elements of eleven combat wings of the Luftwaffe's day fighter force — and after the [[Red Army]] had launched their [[Silesian Offensives]] into pre-war German territory, the [[German Army (Wehrmacht)|German army]] was retreating on all fronts, but still resisting strongly. On 8 February 1945, the Red Army crossed the [[Oder River]], with positions just 70 km from [[Berlin]].{{sfn|Taylor|2005|p=262}} As the [[Eastern Front (World War II)|Eastern]] and [[Western Front (World War II)|Western Fronts]] were getting closer, the Western Allies started to consider how they might aid the Soviets with the use of the [[strategic bomber]] force. They planned to bomb Berlin and several other eastern cities in conjunction with the Soviet advance—to cause confusion among German troops and refugees, and hamper German reinforcement from the west. ||| Background ||| ||| +0 Bombing of Dresden in World War II ||| World War II ||| The '''bombing of Dresden''' was a UK/US aerial bombing attack on the city of [[Dresden]], the capital of the German state of [[Saxony]], that took place during the [[World War II|Second World War]] in the [[European Theatre of World War II|European Theatre]]. Germany would surrender three months later. ||| ||| ||| +0 Boris Trajkovski ||| Kosovo War ||| Trajkovski's term was marked by tensions between ethnic Macedonians and the republic's large [[Albanians in the Republic of Macedonia|ethnic Albanian minority]]. The aftermath of the [[Kosovo War]] led to months of [[Insurgency in the Republic of Macedonia|violent armed clashes]] between Macedonian security forces and Albanian rebels seeking improvements on their status as a legitimate minority and generally better economical, administrative and legal conditions. Although his powers were limited and his role largely ceremonial, he presided over a [[NATO]]-brokered peace deal in 2001 that ended the violence and prevented a full-blown civil war in Macedonia. He was seen as a moderate in the ethnic dialogue, arguing for greater inclusion of ethnic Albanians, and has been credited with being a key figure in resolving the conflict. Boris Trajkovski's friend and advisor was his chief of staff [[Zoran Jolevski]], who was the Macedonian Ambassador in the United States of America and the negotiator of the state name in the [[Macedonia name dispute]]. ||| Career in politics ||| ||| +0 Bougainville Campaign ||| Battle for Piva Trail ||| Parts of two Marine raider battalions drove away Japanese who were blocking the Piva branch of the Numa Numa Trail in the 8–9 November [[Battle for Piva Trail]]. The Marines then selected sites in the area for two airstrips (the fighter strip at the beach was already being built). Also on 9 November, Major General [[Roy Geiger|Roy S. Geiger]], USMC, took over command of the I Marine Amphibious Corps from General Vandegrift. Four days later, he assumed command of the entire Torokina beachhead area from Admiral Wilkinson. By this time, the Perimeter, as it was called, covered about 7,000 yards of beach front and had a circumference of about 16,000 yards.'' ||| November 1943: Expanding the beachhead ||| Early November ||| +0 Bougainville Campaign ||| Battle of Porton Plantation ||| During the remainder of February and March the Australians drove the Japanese north past Soraken Plantation. Eventually, the approximately 1,800 Japanese fell back to a strong defensive line across the neck of the Bonis Peninsula. Because the 11th Brigade was exhausted from three weeks of jungle combat, frontal assaults were ruled out and an attempt was made to outflank the Japanese positions with an amphibious landing on 8 June. However, the landing force found itself pinned down and on the verge of being exterminated. Although Japanese losses were probably higher in the resulting [[Battle of Porton Plantation]], the defenders received a boost in morale and the Australian command called off offensive operations in this sector for the time being. ||| Australian phase: November 1944 – August 1945 ||| Australian offensive operations ||| Northern front +0 Breakup of Yugoslavia ||| Pakrac clash ||| On 1 March 1991, the [[Pakrac clash]] ensued, and the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija, JNA'') was deployed to the scene. On 9 March 1991, the [[March 1991 protests in Belgrade]] were suppressed with the help of the Army. ||| Final political crisis (1990–92) ||| Independence of Slovenia and Croatia ||| +0 British airborne operations in North Africa ||| Battle of France ||| The German military was one of the pioneers of the use of airborne formations, conducting several successful airborne operations during the [[Battle of France]] in 1940, including the [[Battle of Fort Eben-Emael]]. Despite the Prime Minister's desire to have 5,000 airborne troops within a short period, a number of problems were rapidly encountered by the War Office. Very few [[military glider]]s existed in Britain in 1940, and these were too light for military purposes, and there was also a shortage of suitable transport aircraft to tow gliders and carry paratroopers. On 10 August, Churchill was informed that although 3,500 volunteers had been selected to train as airborne troops, only 500 could currently begin training because of limitations in equipment and aircraft. ||| Background ||| Formation ||| +0 Burma Campaign 1944 ||| Battle of Sangshak ||| Meanwhile, Imphal had been left vulnerable to the Japanese 15th Division. The only force left covering the northern approaches to the base, [[50th Indian Parachute Brigade]], was roughly handled at the [[Battle of Sangshak]] and forced to withdraw by a regiment from the Japanese 31st Division on its way to Kohima. However, the diversionary attack launched by Japanese 55th division in Arakan had already been defeated, and in late March Slim was able to move the battle-hardened 5th Indian Division, with all its artillery, jeeps, mules and other materiel, by air from Arakan to the Central Front. The move was completed in only eleven days. The division's HQ and two brigades went to Imphal, the other brigade (the [[161st Indian Infantry Brigade]]) went to Dimapur from where it sent a detachment to Kohima. ||| Central front ||| Preliminary battles ||| +0 Burma Campaign 1944 ||| Battle of the Tennis Court ||| The [[Battle of Kohima]] started on 6 April when the Japanese isolated the garrison and tried to dislodge the defenders from their hill top [[redoubt]]s. Fighting was very heavy around the bungalow and tennis court of the Deputy Commissioner of the Naga Hills. This phase of the battle is often referred to as the [[Battle of the Tennis Court]] and was the 'high-water mark' of the Japanese attack. On 18 April, the 161st Indian Brigade relieved the defenders, but the battle was not over as the Japanese dug in and defended the positions they had captured. ||| Central front ||| Kohima ||| +0 Burning of Washington ||| Battle of Bladensburg ||| The '''Burning of Washington ''' in 1814 was an attack during the [[War of 1812]] between [[United Kingdom of Great Britain and Ireland|British]] forces and those of the [[United States of America]]. On August 24, 1814, after defeating the Americans at the [[Battle of Bladensburg]], a British force led by Major General [[Robert Ross (British army officer)|Robert Ross]] occupied [[Washington, D.C.]] and set fire to many public buildings, including the [[White House]] (known as the ''Presidential Mansion'' at the time), and the [[U.S. Capitol|Capitol]], as well as other facilities of the [[United States government|U.S. government]]. ||| ||| ||| +0 Campaign to Suppress Bandits in Northeast China ||| Second Sino-Japanese War ||| The third grave strategic miscalculation made by the retreating nationalist regime was similar to the second one, but this one was about its own troops left behind during the [[Second Sino-Japanese War]]. The resource strained nationalist government could not provide enough supports to these troops left behind the enemy lines, who were forced to turn to banditry for survival when they were left on their own, and this had alienated many of the troops left behind, and it was impossible to expect them to fight their communist enemy with the same kind of dedication like those nationalist agents who believed in their political cause, or the American trained new forces. The banditry also alienated the local populace and caused the nationalists to lose popular support. Compounding the problem, due to the need of bandits' knowledge of local area, and the fact that they were the only pro-nationalist force in the region, they were often rewarded with higher ranks than the highly trained regular nationalist troops sent to [[Northeast China]]. As a result, the regular nationalist troops sent to Northeast China after [[World War II]] lacked any willingness to work together with the bandits, especially when many of the bandits were former [[Warlord era|warlords]]'s troops cooperated with Japanese invaders. Many loyal nationalists were enraged by the fact that they had to serve under the former-enemy they once fought: in all, Chiang's government awarded bandits with many high military ranks: 32 commander-in-chiefs, 33 army commanders, and 158 division commanders in all. In contrast, the highly trained regular nationalist army sent to [[Northeast China]] after [[World War II]] had much fewer similar ranks, meaning that most highly qualified professional officers ranked below bandits. Meanwhile, the bandits lacked the similar willingness and attempted to expend those nationalist troops whenever they could to save their own skin, and often used the superior ranks Chiang's government given to them as their excuses to ignore correct strategies ordered by the nationalist regular army. ||| Nationalists' strategy ||| ||| +0 Canada's Hundred Days ||| Battle of Cambrai (1918) ||| '''Canada's Hundred Days''' was a series of attacks made along the [[Western Front (World War I)|Western Front]] by the [[Canadian Corps]] during the [[Hundred Days Offensive]] of World War I. Reference to this period as Canada's Hundred Days is due to the substantial role the [[Canadian Corps]] of the [[British First Army]] played in causing the defeat and/or retreat of the [[German Army (German Empire)|German Army]] in a series of major battles from [[Amiens]] to [[Mons]] which along with other Allied offensives ultimately led to Germany's final defeat and surrender. During this time, the [[Canadian Corps]] fought at [[Battle of Amiens (1918)|Amiens]], [[Second Battle of the Somme (1918)|Arras]], the [[Hindenburg Line]], the [[Battle of the Canal du Nord|Canal du Nord]], [[Bourlon Wood Memorial|Bourlon Wood]], [[Battle of Cambrai (1918)|Cambrai]], [[Denain]], [[Valenciennes]] and finally at [[Mons]], on the final day of the First World War. In terms of numbers, during those 96 days the Canadian Corps' four over-strength or 'heavy' [[Division (military)|divisions]] of roughly 100 000 men, engaged and defeated or put to flight elements of forty seven German divisions, which represented one quarter of the German forces faced by the Allied Powers fighting on the Western Front. ||| ||| ||| +0 Capture of Mametz ||| Battle of Albert (1914) ||| '''Mametz''' is a village on the D 64 road, about {{convert|20|mi|km}} north-east of [[Amiens]] and {{convert|4|mi|km}} east of Albert. Fricourt lies to the west, Contalmaison is to the north, Montauban to the north-east and Carnoy and Maricourt are to the south-east. Mametz Wood is {{convert|1000|yd|m}} to the north-west and before 1914, the village was the fifth largest in the area, with about {{nowrap|120 houses}} and had a station on the line from Albert to Péronne. During the [[Battle of Albert (1914)|Battle of Albert]] {{nowrap|(25–29 September)}} 1914 the [[II Royal Bavarian Corps|II Bavarian Corps]] attacked westwards north of the Somme but was fought to a standstill east of Mametz. Reinforced by the [[XIV Reserve Corps (German Empire)|XIV Reserve Corps]] the Germans on the north side of the Somme attacked again and took Mametz on 29 September. After a mutually-costly battle for Fricourt, where the French were eventually forced out, the front line stabilised and both sides began to dig improvised defences. In mid-December the French conducted a local attack in the Mametz area but were repulsed with many casualties. ||| ||| ||| +0 Capture of Martinpuich ||| Race to the Sea ||| '''Martinpuich''' is situated {{convert|18|mi|km}} south of Arras, near the junction of the D 929 and D 6 roads, opposite Courcelette. The village lies south of [[Le Sars]], west of [[Flers, Somme|Flers]] and north-west of [[Attacks on High Wood|High Wood]]. In September 1914, during the [[Race to the Sea]], the divisions of the [[XIV Corps (German Empire)|XIV Corps]] advanced westwards, on the north bank of the Somme towards Albert and Amiens, passing through Martinpuich. The village became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}} and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity. ||| ||| ||| +0 Capture of Montauban ||| Race to the Sea ||| '''Montauban''' (''Monty-Bong'' to British troops), is a [[Communes of France|commune]] in the [[Somme (department)|Somme]] [[Departments of France|department]] in [[Picardy]] in northern [[France]] and lies on the D 64, between Guillemont to the east and Mametz to the west. To the north are Bazentin-le-Petit and Bazentin-le-Grand. Bernafay and Trônes woods are to the north-east and Maricourt lies to the south. Military operations began in the area of Montauban in late September 1914 during the [[Race to the Sea]], when the II Bavarian Corps and later the XIV Reserve Corps of the German 6th Army, attacked westwards down the Somme valley, to reach Albert, Amiens and the sea but were stopped just east of Albert by the French Second Army, which then attempted a reciprocal outflanking move further north and forced the 6th Army to fight a defensive battle, as more troops were moved further north to attempt another advance around Arras, Lille and Lens. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Megiddo (1918) ||| The '''Capture of Tiberias''' took place on 25 September 1918 during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] occupied the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) 40–50 miles (64–80 km) behind the front line in the [[Judean Hills]]. One squadron from each of the [[3rd Light Horse Brigade|3rd]] and [[4th Light Horse Brigade]]s [[Australian Mounted Division]] attacked and captured [[Tiberias]] (on the western shore of the [[Sea of Galilee]] also known as Lake Tiberias), along with the [[Yildirim Army Group]]'s [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Capture of Afulah and Beisan ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line to begin the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin the Battle of Nablus, supported by an artillery barrage. These infantry attacks by both the XX and XXI Corps, known as the Battle of Megiddo, continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to continue the Battle of Megiddo, almost [[encirclement|encircling]] the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]] before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[capture of Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture [[Third Transjordan attack|Es Salt]] on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Carnatic Wars ||| Siege of Louisbourg (1745) ||| With the termination of the War of Austrian Succession in Europe, the First Carnatic War also came to an end. In the [[Treaty of Aix-la-Chapelle (1748)]], Madras was given back to the British in exchange for the French fortress of [[Fortress of Louisbourg|Louisbourg]] in [[North America]], which the British [[Siege of Louisbourg (1745)|had captured]]. The war was principally notable in India as the first military experience of [[Robert Clive]], who was taken prisoner at Madras, escaped, and then participated in the defense of Cuddalore and the siege of Pondicherry. ||| First Carnatic War (1746–1748) ||| ||| +0 Caucasus Campaign ||| Battle of Bitlis ||| In April, the Caucasus army moved in two directions from Erzurum, part went north and captured the ancient port city of [[Trabzon]]. Other branch moved to Mush-Bitlis direction. These units pushed the 2nd Army deep into Anatolia and captured Battle of Mush and [[Battle of Bitlis]] (March 2 – August 24), driving the Ottoman army before it. Bitlis was the last defense point for the Ottoman Army to prevent the Russians from moving into central Anatolia and Mesopotamia. ||| Operations ||| 1916 ||| +0 Chambersburg Raid ||| Battle of Mile Hill ||| * [[Battle of Mile Hill|Mile Hill]] ||| ||| ||| +0 Cocos Islands mutiny ||| Attack on Pearl Harbor ||| The [[fall of Singapore]] and the subsequent [[sinking of Prince of Wales and Repulse|sinking of ''Prince of Wales'' and ''Repulse'']] did to British and Imperial forces what [[Attack on Pearl Harbor|Pearl Harbor]] had to the [[United States of America|America]]ns: compromised their ability to defend their interests north of Australia and east of India. The Japanese raids into the Indian Ocean, resulting in the loss of two cruisers and the [[aircraft carrier]] [[HMS Hermes (95)|''Hermes'']], threw Allied war plans in the entire Southwest Pacific Area into chaos. ||| Background ||| ||| +0 Colmar Pocket ||| Operation Nordwind ||| The '''Colmar Pocket''' ({{lang-fr|Poche de Colmar}}; {{lang-de |Brückenkopf Elsaß}}) was the area held in central [[Alsace]], [[France]] by the [[Nazi Germany|German]] [[19th Army (Wehrmacht)|Nineteenth Army]] from November 1944 – February 1945, against the [[Sixth United States Army Group|U.S. 6th Army Group]] during [[World War II]]. It was formed when 6th AG liberated southern and northern Alsace and adjacent eastern [[Lorraine (province)|Lorraine]], but could not clear central Alsace. During [[Operation Nordwind]] in December 1944, the 19th Army attacked north out of the Pocket in support of other German forces attacking south from the [[Saarland|Saar]] into northern Alsace. In late January and early February 1945, the [[French First Army]] (reinforced by the [[XXI Corps (United States)|U.S. XXI Corps]]) cleared the Pocket of German forces. ||| ||| ||| +0 Combat Skyspot ||| Battle of Lima Site 85 ||| | 1967-8 AN/TSQ-81 [[Battle of Lima Site 85|(destroyed 10 March 1968)]] ||| Development ||| ||| +0 Croatian War of Independence ||| Gulf War ||| The war developed at a time when the attention of the United States and the world was on Iraq, and the [[Gulf War]] in 1991, along with a sharp rise in oil prices and a slowdown in the growth of the world economy. ||| Role of the international community ||| ||| +0 Cromwellian conquest of Ireland ||| Siege of Charlemont ||| The most formidable force left to the Irish and Royalists was the 6,000 strong army of [[Ulster]], formerly commanded by [[Owen Roe O'Neill]], who died in 1649. However the army was now commanded by an inexperienced Catholic bishop named [[Heber MacMahon]]. The Ulster Army met a Parliamentarian army, composed mainly of British settlers and commanded by Charles Coote, at the [[Battle of Scarrifholis]] in [[County Donegal]] in June 1650. The Ulster army was routed and as many as 2,000 of its men were killed. In addition, MacMahon and most of the Ulster Army's officers were either killed at the battle or captured and executed after it. This eliminated the last strong field army opposing the Parliamentarians in Ireland and secured for them the northern province of Ulster. Coote's army, despite suffering heavy losses at the [[Siege of Charlemont]], the last Catholic stronghold in the north, was now free to march south and invade the west coast of Ireland. ||| Scarrifholis and the destruction of the Ulster Army ||| ||| +0 Crossing of the Andes ||| Battle of Chacabuco ||| On February 13, 1817, San Martín, O'Higgins, and their army successfully entered [[Santiago, Chile]], after crossing 500 kilometers of mountain range, and the journey came to an end. Thus, the [[Battle of Chacabuco]] began. ||| Coming to an End ||| ||| +0 Dalj massacre ||| Croatian War of Independence ||| The '''Dalj massacre''' was the killing of 56 or 57 [[Croats]] in [[Dalj]], [[Croatia]] on 1 August 1991, during the [[Croatian War of Independence]]. In addition to civilian victims, the figure includes 20 [[Law enforcement in Croatia|Croatian policemen]], 15 [[Croatian National Guard]] (''Zbor narodne garde'' – ZNG) troops and four [[civil defence]]men who had been defending the police station and water supply building in the village. While some of the policemen and the ZNG troops died in combat, those who surrendered were killed after they became [[prisoners of war]]. They tried to fight off an attack by the [[Croatian Serb]] [[SAO Eastern Slavonia, Baranja and Western Syrmia]] (SAO SBWS) [[Territorial Defense Forces (Yugoslavia)|Territorial Defence Forces]], supported by the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) and the [[Serb Volunteer Guard]] paramilitaries. The SAO SBWS was declared an autonomous territory in eastern Croatia following the [[Battle of Borovo Selo]] just to the south of Dalj. ||| ||| ||| +0 Defence of Pukekohe East 1863 ||| Invasion of the Waikato ||| [[Invasion of Waikato|Invasion of the Waikato]], part of the [[New Zealand Wars]]. On 13 September and 14 September 1863, 11 settlers and 6 militia men inside a half completed stockade around the Pukekohe East church held off a [[Māori people|Māori]] [[taua]] or war party of approximately 200 men from [[Ngāti Maniapoto]] and [[Ngāti Pou]] [[iwi]], until they were relieved by detachments of the 18th, 65th and 70th Regiments. In a series of actions around the stockade the taua sustained 20% casualties and retreated. ||| ||| ||| +0 Defence of the Reich ||| Battle of Berlin ||| Technological developments of the Luftwaffe had a considerable impact on operations in the first half of 1944. Harris' new offensive, which culminated in the [[Battle of Berlin (air)|Battle of Berlin]] suffered heavy losses and failed to win the war outright, as Harris had expected. The plan was to break German morale at a projected cost of 500 bombers. compared to German losses of just 256 fighters. The higher-frequency American [[H2X radar|H2X bombing radar]], operating in the 10 GHz frequency range, however is not known to have been detected by any Luftwaffe technology that existed before the end of the war. ||| Turn of the tide (1944) ||| Night war: technological battle ||| +0 Deluge (history) ||| Battle of Polonka ||| In 1659, the Swedish army still remaining in Poland under [[Lorens von der Linde]] was withdrawn to major Royal Prussian fortresses - Malbork, Głowa Gdańska, [[Grudziądz]], [[Elbląg]], and [[Brodnica]]. In August 1659, the Polish army captured Głowa and Grudziądz, and soon afterwards, the starving Swedish garrison at Brodnica surrendered. The siege of Malbork was continued, and Polish - Brandenburgian troops blocked Elbląg. In December 1659, the siege of Elbląg began. Meanwhile, in late 1658, the Polish–Russian truce ended when Russian forces under [[Ivan Andreyevich Khovansky (Tararui)]] and Jurij Aleksiejewicz Dołgorukow again attacked the Polish - Lithuanian units (see [[Russo-Polish War (1654–67)]]). The reason for the attack was the [[Treaty of Hadiach]], which created the [[Polish–Lithuanian–Ruthenian Commonwealth]]. Muscovy was opposed to this newly established state, and decided to wage another war. The Russians managed to capture large parts of the Commonwealth, but were later defeated in the [[Battle of Konotop]] and the [[Battle of Polonka]]. ||| Swedish invasion ||| 1658–1660 ||| +0 East Pakistan Air Operations, 1971 ||| Battle of Longewala ||| Although the western theater saw engagements that helped define the rules of 20th century warfare, including the [[Battle of Longewala]], [[Operation Trident (Indo-Pakistani War)|Operation Trident]], and the Battle of the Bases between the two rival Air Forces, the eastern theater would be marked by a near-total domination by the Indian forces and the Mukti Bahini. Two major reasons stand out: the first, and likely the most important, was the fact that the Bengali population and the [[Awami League]]-led resistance had already greatly weakened Pakistani forces. The second major reason is the total [[air supremacy]] that the IAF gained in the opening days of the war. ||| Background ||| ||| +0 East Timorese presidential election, 2012 ||| 1999 East Timorese crisis ||| The [[president of East Timor|presidency]] is a ceremonial role without political power. It is seen as a unifying post for the country after the [[1999 East Timorese crisis]]. This election is also seen as a test [[FRETILIN]]'s ability to take back control in the [[East Timorese parliamentary election, 2012|parliamentary election]] later in the year. ||| Background ||| ||| +0 Eastern Front (World War I) ||| Battle of Verdun ||| The operations in 1916 were dictated by an urgent need to force Germany to transfer forces from its Western to Eastern fronts, to relieve the pressure on the French at the [[Battle of Verdun]]. This was to be accomplished by a series of Russian offensives which would force the Germans to deploy additional forces to counter them. The first such operation was the [[Lake Naroch Offensive]] in March–April 1916, which ended in failure. ||| 1916 ||| ||| +0 Eastern Front (World War II) ||| Spanish Civil War ||| In February 1936 the [[Spanish general election, 1936|Spanish general election]] brought many communist leaders into the [[Popular Front (Spain)|Popular Front]] government in the [[Second Spanish Republic]], but in a matter of months a right-wing military [[Spanish coup of July 1936|coup]] initiated the [[Spanish Civil War]] of 1936–1939. This conflict soon took on the characteristics of a [[proxy war]] involving the Soviet Union and [[International Brigades|left wing volunteers]] from different countries on the side of the predominantly socialist and communist-led It served as a useful testing ground for both the Germans and the Soviets to experiment with equipment and tactics that they would later employ on a wider scale in the Second World War. ||| Ideologies ||| Soviet situation ||| +0 Encirclement Campaign against Northeastern Jiangxi Soviet ||| Third Encirclement Campaign against Jiangxi Soviet ||| The Jiangxi Soviet was a communist base in the northeastern part of [[Jiangxi]] guarded by the 10th Army of the [[Chinese Red Army]], and it was the right flank of the Jiangxi Soviet. In comparison to the major communist base in southern [[Jiangxi]], the Jiangxi Soviet, this communist base was much closer to the nationalist strongholds and it was at the forefront of the nationalist controlled regions, and consequently, it had become a main target the nationalists marked for destruction. The [[Encirclement Campaigns|encirclement campaign]] against Jiangxi Soviet begun in December, 1930, shortly after the [[First Encirclement Campaign against Jiangxi Soviet]]. However, due to the allocation of available troops and other resources to the top priority target, the Jiangxi Soviet, the encirclement campaign against the Jiangxi Soviet was protracted, and was not over until July 1931 after the [[Third Encirclement Campaign against Jiangxi Soviet]] had already started. ||| The base area ||| ||| +0 European theatre of World War II ||| Battle of Stalingrad ||| Indecision by Hitler, dissent among the higher-ranked Nazi German officers, and extended supply lines combined in a [[Battle of Stalingrad|prolonged battle in the streets of Stalingrad]]. Germany eventually occupied over 90% of the city, but in an attempt to defeat the remaining Soviet defenders almost all German soldiers in the area were funnelled into the ruins of the city. Months of bitter hand-to-hand combat in the ruins of the city depleted the German forces, leaving only weak [[Romania]]n and Hungarian forces to guard the flanks of the Stalingrad army group.{{citation needed|date=March 2011}} In [[Operation Uranus]], the Soviets easily defeated these minor Axis forces as they performed a massive encirclement operation. The German troops remaining in the city were trapped – cut off from their supply lines and starving, amidst a harsh winter, they were ordered by Hitler to fight to the last man, and they displayed{{when|date=March 2011}} incredible fortitude and bravery under unbearable conditions. ||| Eastern Front ||| Summer campaign of 1942 and Stalingrad ||| +0 European theatre of World War II ||| Battle of the Atlantic ||| During the Blitz, all of Britain's major industrial, cathedral, and political cites were heavily bombed. London suffered particularly, being bombed each night for several months. Other targets included [[Birmingham]] and [[Coventry]], and strategically important cities, such as the naval base at [[Plymouth]] and the port of [[Kingston upon Hull]]. With no land forces in direct conflict in Europe, the war in the air attracted worldwide attention even as sea units fought the [[Battle of the Atlantic (1940)|Battle of the Atlantic]] and a number of British [[commando]] raids hit targets in occupied Europe. Churchill famously said of the R.A.F. personnel who fought in the battle: '''Never in the field of human conflict was so much owed by so many to so few'''. ||| War comes to the west ||| ||| +0 European theatre of World War II ||| Greek Resistance ||| Prior to the war Italy had invaded [[Albania]] and officially annexed it. Mussolini's regime declared war on Britain and France on June 10, 1940, and invaded Greece on October 28. However, Italian forces were unable to match the Nazi successes in northwest Europe. Italy declared war on Greece and invaded the country, but it was not until German intervention that the country was overrun. While the Greek campaign was underway, German forces, supported by the Italians, Hungarians and the Bulgarians simultaneously invaded Yugoslavia. After the mainland was conquered, Germany invaded Crete in what is known as the [[Battle of Crete]]. With the Balkans secure, Germany and her allies attacked the Soviet Union in the largest land operation in history. The Balkans campaign delayed the invasion{{Citation needed|date=September 2008}}, and subsequent resistance movements in [[Military history of Albania during World War II|Albania]], [[Resistance in Yugoslavia|Yugoslavia]] and [[Greek Resistance|Greece]] tied up valuable Axis forces{{Citation needed|date=September 2008}}. This provided much needed and possibly decisive relief for the Soviets. ||| Mediterranean and Balkans ||| ||| +0 European theatre of World War II ||| Western Front (World War II) ||| The '''European Theatre of World War II''', also known as the '''European War''', was a huge area of heavy fighting across [[Europe]], from [[Nazi Germany|Germany's]] and the [[Soviet Union|Soviet Union's]] joint [[invasion of Poland]] in September 1939 until the [[end of World War II in Europe|end of the war]] with the Soviet Union [[Military occupations by the Soviet Union|conquering much of Europe]] along with the German [[unconditional surrender]] on May 8, 1945 ([[Victory in Europe Day|V-E Day]]). The [[Allies of World War II|Allied forces]] fought the [[Axis powers]] on two major fronts (the [[Eastern Front (World War II)|Eastern Front]] and [[Western Front (World War II)|Western Front]]) as well as in the adjoining [[Mediterranean and Middle East Theatre]]. ||| ||| ||| +0 Fifth Encirclement Campaign against the Hubei-Henan-Anhui Soviet ||| Long March ||| The '''Fifth Encirclement Campaign against the [[Hubei-Henan-Anhui Soviet]]''' was an [[Encirclement Campaigns|encirclement campaign]] launched by the Chinese [[Nationalist Government]] that was intended to destroy the [[Communist Party of China|communist]] [[Hubei-Henan-Anhui Soviet]] and its [[Chinese Red Army]] in the local region. It was responded by the [[Communist]]s' '''Fifth Counter-Encirclement Campaign at [[Hubei-Henan-Anhui Soviet]]''' ({{zh|c=鄂豫皖苏区第五次苏区反围剿}}), also called by the communists as the '''Fifth Counter-[[Encirclement Campaigns|Encirclement Campaign]] at [[Hubei]] – [[Henan]] – [[Anhui]] Revolutionary Base''' ({{zh|c=鄂豫皖革命根据地第五次反围剿|links=no}}), in which the local [[Kuomintang|Nationalist]] force defeated the local [[Chinese Red Army]] and overran their soviet republic in the border region of [[Hubei]] – [[Henan]] – [[Anhui]] [[province]]s from July 17, 1933, to November 26, 1934. In mid November 1934, the local [[communist]]s were forced to abandon their base and begun their [[Long March]], and hence the [[Communist Party of China|communist]]s usually choose their beginning of the [[Long March]] as the end of the campaign, but in reality, the campaign was longer, lasting for another half a month till the end of November 1934 when the local [[Chinese Red Army]] fought its way to escape. ||| ||| ||| +0 Finnish reconquest of the Karelian Isthmus (1941) ||| Winter War ||| Early in the war Finnish forces liberated the [[Karelian Isthmus]]. It had been ceded to the [[Soviet Union]] on March 13, 1940, in the [[Moscow Peace Treaty]], which marked the end of the [[Winter War]]. ||| ||| ||| +0 First Anglo-Dutch War ||| Spanish Armada ||| In the 16th century, England and the Netherlands had been close allies against the ambitions of the [[Habsburg]]s. They cooperated in fighting the [[Spanish Armada]]. England supported the Dutch in the [[Eighty Years' War]] by sending money and troops. There was a permanent English representative in the Dutch government to ensure coordination of the joint war effort. The [[Treaty of London (1604)|separate peace]] in 1604 between England and Spain strained this relationship. The weakening of Spanish power at the end of the [[Thirty Years' War]] in 1648 also meant that many colonial possessions of the [[Portuguese Empire|Portuguese]] and some of the [[Spanish empire]] and their mineral resources were effectively up for grabs. The ensuing rush for empire brought the former allies into conflict. Also the Dutch, having made peace with Spain, quickly replaced the English as dominant traders with the Iberian peninsula, adding to an English resentment about Dutch trade that had steadily grown since 1590. ||| Background ||| ||| +0 First Battle of Algeciras ||| Second Battle of Algeciras ||| Both sides had suffered severe damage and casualties, but both were also aware that the battle would inevitably be rejoined and so the aftermath of the British defeat was one of frenzied activity at [[Gibraltar]], Algeciras and Cadiz. While the British and French squadrons conducted hasty repairs, the French and Spanish fleet at Cadiz was prepared for a rescue mission, a heavy squadron arriving at Algeciras on 12 July. As the squadron departed with Linois's squadron, it was attacked again by Saumarez's squadron at the [[Second Battle of Algeciras]] and caught at night by faster and more manoeuvrable ships, which resulted in the British inflicting heavy losses on the Spanish rearguard but failing to destroy the French squadron for a second time. ||| ||| ||| +0 First Battle of Kharkov ||| Battle of Moscow ||| After the [[Battle of Kiev (1941)|Battle of Kiev]], [[Army Group Center]] was ordered to redeploy its forces for the [[Battle of Moscow|attack on Moscow]], and so the [[2nd Panzer Group]] turned north towards [[Bryansk]] and [[Kursk]]. [[Army Group South]], and in particular [[Walther von Reichenau]]'s [[6th Army (Wehrmacht)|6th Army]] and [[Carl-Heinrich von Stülpnagel]]'s [[17th Army (Wehrmacht)|17th Army]] took the place of the Panzer Divisions. The main offensive formation of Army Group South, [[Paul Ludwig Ewald von Kleist]]'s [[1st Panzer Group]], was in the meantime ordered south for a drive to [[Rostov-on-Don]] and the [[Caucasus|Caucasian]] oilfields, following [[Führer Directives|Führer Directive No. 35]]. The burden of processing Kiev's 600,000 [[prisoners of war]] (POWs) fell upon the 6th and 17th Armies, so while the 1st Panzer Group secured the German victory in the [[Battle of Melitopol]], these two armies spent the next three weeks regrouping. ||| Before the battle ||| The aftermath of Kiev ||| +0 First Battle of Lexington ||| Battle of Dry Wood Creek ||| Following their victory at [[Battle of Wilson's Creek|Wilson's Creek]] on August 10, the main body of the pro-Confederate Missouri State Guard under Maj. Gen. [[Sterling Price]] marched toward the Missouri-Kansas border with around 7,000 men to repel incursions by Lane's Kansas Brigade. On September 2, the Guard drove away Lane's Kansans in the [[Battle of Dry Wood Creek]], sending them back beyond [[Fort Scott, Kansas|Fort Scott]]. Price then turned north along the border and toward Lexington to break Federal control of the Missouri River and to gather recruits from both sides of the river. As Price proceeded he collected recruits, including Col. Routt and several hundred of his men then at Index in [[Cass County, Missouri|Cass County.]] ||| Prelude ||| ||| +0 First Indochina War ||| Battle of Ko Chang ||| From October 1940 to May 1941, during the [[Franco-Thai War]], the Vichy French in Indochina were involved with defending their colony in a border conflict which saw the forces of [[Thailand]] invade, while the Japanese sat on the sidelines. Thai military successes were limited to the Cambodian border area, and in January 1941 Vichy France's modern naval forces soundly defeated the inferior Thai naval forces in the [[Battle of Ko Chang]]. The war ended in May, with the French agreeing to minor territorial revisions which restored formerly Thai areas to Thailand. ||| Background ||| ||| +0 First Transjordan attack on Amman ||| Battle of Jerusalem ||| During the winter of 1917/1918, the considerable territorial gains by the EEF as a consequence of victories at the [[Battle of Mughar Ridge]] in November and the [[Battle of Jerusalem]] in December; from the [[Gaza City|Gaza]] – [[Beersheba]] line to the [[Jaffa]]–[[Jerusalem]] line, were consolidated. The front line was adjusted in February 1918 when the right flank of the Jaffa to Jerusalem line was secured by the capture of land to the east of Jerusalem and down into the [[Jordan Valley (Middle East)|Jordan Valley]] to Jericho and the [[Dead Sea]]. The [[Capture of Jericho (1918)|Capture of Jericho]] was also a necessary precursor, along with the [[Action of Tell 'Asur]], to advances by [[Edmund Allenby, 1st Viscount Allenby|Allenby]]'s force across the Jordan River and into the hills of Moab towards [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 Flanders Campaign ||| Battle of Neerwinden (1793) ||| In the northern part of this theatre, Coburg thwarted Dumouriez's ambitions with a series of victories that evicted the French from the Austrian Netherlands altogether. This successful offensive reached its climax when Dumouriez was defeated at the [[Battle of Neerwinden (1793)|Battle of Neerwinden]] on 18 March, and again at Louvain on 21 March.{{sfn|Harvey|2007|p=126}} Dumouriez defected to the Allies on 6 April and was replaced as head of the Armée du Nord by general [[Augustin-Marie Picot]]. France faced attacks on several fronts, and few expected the war to last very long.{{sfn|Harvey|2007|p=119}} However, instead of pressing their advantage, the Allied advance became pedestrian. The large Coalition army on the Rhine under the [[Charles William Ferdinand, Duke of Brunswick-Wolfenbüttel|Duke of Brunswick]] were reluctant to advance due to hopes for a political settlement. The Coalition Army in Flanders had the opportunity to brush past Dampierre's demoralised army, but the Austrian staff were not fully aware the degree of the French weakness and, while awaiting the arrival of reinforcements from Britain, Hanover and Prussia, turned instead to besiege fortresses along the French borders. Their first objective was [[Condé-sur-l'Escaut]], at the confluence of the [[Haine]] and [[Scheldt]] rivers. ||| 1793 campaign ||| Dumouriez's invasion of the Dutch Republic ||| +0 Flanders Campaign ||| Battle of Tournay ||| The Coalition forces planned to stem Pichegru's advance with a broad attack involving several isolated columns in a scheme devised by Mack. At the [[Battle of Tourcoing]] on 17-18 May this effort became a logistical disaster as communications broke down and columns were delayed. Only a third of the allied force came into action, and were only extricated after the loss of 3,000 men.{{sfn|Fortescue|1918|pp=331-342}} Pichegru being absent on the Sambre, French command at Tourcoing had devolved onto the shoulders of [[Joseph Souham]]. On his return to the front Pichegru renewed the offensive to press his advantage but despite repeated attacks was held off at the [[Battle of Tournay]] on 22 May. ||| 1794 Campaign ||| The French counter-offensive ||| +0 Franco-Dutch War ||| Battle of Mulhouse ||| * 1674 – [[Battle of Mulhouse (1674)|Battle of Mulhouse]] (under Muehlhausen) (29 December) ||| Chronological list of key events ||| ||| +0 French Revolution ||| Battle of the Nile ||| The Army at first was quite successful. It conquered Belgium and turned it into another province of France. It conquered the Netherlands and made it a puppet state. It conquered Switzerland and most of Italy, setting up a series of puppet states. The result was glory for France, and an infusion of much needed money from the conquered lands, which also provided direct support to the French Army. However the enemies of France, led by Britain and funded by the inexhaustible British Treasury, formed a Second Coalition in 1799 (with Britain joined by Russia, the Ottoman Empire, and Austria). It scored a series of victories that rolled back French successes, retaking Italy, Switzerland and the Netherlands and ending the flow of payments from the conquered areas to France. The treasury was empty. Despite his publicity claiming many glorious victories, Napoleon's army was trapped in Egypt after the British sank the French fleet at the [[Battle of the Nile]]. Napoleon escaped by himself, returned to Paris and overthrew the Directory in November, 1799. ||| First Republic ||| The Directory (1795–1799) ||| Exporting the Revolution +0 French campaign in Egypt and Syria ||| Battle of Heliopolis (1800) ||| Kléber defeated the Mamlukes at the [[Battle of Heliopolis (1800)|battle of Heliopolis]] in March 1800, and then suppressed an insurrection in [[Cairo]]. However, on 14 June (26 prairial) 1800 a Syrian student called [[Suleiman al-Halabi]] assassinated Kléber with a dagger in the heart, chest, left forearm and right thigh. Command of the French army passed to General [[Jacques-Francois Menou|Menou]], who held command from 3 July 1800 until August 1801. Menou's letter was published in ''Le Moniteur'' on 6 September, with the conclusions of the committee charged with judging those responsible for the assassination: ||| Abukir to withdrawal ||| End of the campaign===<!--linked--& ||| +0 German Revolution of 1918–19 ||| Battle of Verdun ||| In nationalist circles, the myth fell on fertile ground. The Nationalists soon defamed the revolutionaries and even politicians like Ebert, who never wanted a revolution and did everything to prevent it, as 'November Criminals' (''Novemberverbrecher''). The radical right did not even stop at political assassinations, e.g., [[Matthias Erzberger]] and [[Walter Rathenau]]. In [[Adolf Hitler]]'s [[Beer Hall Putsch|attempted coup in 1923]] together with Ludendorff, they deliberately chose the heavily symbolic date of 9 November. In his later ascent to power, Hitler, who had served in the Imperial German Army as a corporal, cunningly exploited the sentiments of the homecomers who felt betrayed not only by the new democratic government but also by their commanders who had sent them to useless slaughter, especially in the [[Battle of Verdun]]. ||| Background ||| Request for cease fire and change of constitution ||| +0 German invasion of Belgium ||| Battle of the Yser ||| At the end of the '[[Race to the Sea]]' {{nowrap|(September 17 – October 19)}}, a period of reciprocal attempts by the Germans and Franco-British to outflank their opponents on the western flank, as it was extended northwards from the Aisne, through Picardy, Artois and Flanders, military operations in Belgium moved westwards, from Antwerp to the area close to the border with France. The Belgian army fought a defensive [[Battle of the Yser|battle on the Yser]] (16–31 October) from [[Nieuport]] south to [[Dixmude]], as the 4th Army attacked westwards and French, British and some Belgian troops fought the First Battle of Ypres (19 October – 22 November) against the 4th and 6th armies. By November 1914, most of Belgium was [[German occupation of Belgium during World War I|under German occupation]] and Allied blockade. A military administration {{lang|de|''Kaiserliches Deutsches Generalgouvernement Belgien''}} was established on 26 August 1914, to rule Belgium through the pre-war Belgian administrative system, overseen by a small group of German officers and officials. Belgium was divided into three administrative zones: the [[General Governorate of Belgium|General Governorate]], which included Brussels and the hinterland; a second zone, under the 4th Army, including [[Ghent]] and Antwerp; and a third zone under the German Navy along the coastline. The German occupation was maintained until late 1918. ||| ||| ||| +0 Glorious First of June ||| French Revolution ||| In contrast to their British counterparts, the [[French Navy]] was in a state of confusion. Although the quality of the fleet's ships was high, the fleet hierarchy was riven by the same crises that had torn through France since the [[French Revolution|Revolution]] five years earlier. ||| Fleets ||| French Navy ||| +0 Gold Beach ||| Omaha Beach ||| The objectives at Gold were to secure a [[beachhead]], move west to capture [[Arromanches]] and establish contact with the American forces at [[Omaha Beach|Omaha]], capture [[Bayeux]] and the small port at Port-en-Bessin, and to link up with the Canadian forces at [[Juno Beach|Juno]] to the east. Forces attacking Gold faced elements of the German [[352nd Infantry Division (Wehrmacht)|352nd Infantry Division]] and [[716th Static Infantry Division (Wehrmacht)|716th Infantry Division]]. About 2,000 men were stationed in the immediate area. Improvements to fortifications along the Normandy coast had been undertaken under the leadership of Field Marshal [[Erwin Rommel]] beginning in October 1943. ||| ||| ||| +0 Gorlice–Tarnów Offensive ||| Battle of Tannenberg ||| In the early stages of the Eastern Front, the [[8th Army (German Empire)|German 8th Army]] had conducted a series of almost miraculous actions against the two Russian armies facing them. After surrounding and then destroying the Russian Second Army at the [[Battle of Tannenberg (1914)|Battle of Tannenberg]] in late August, [[Paul von Hindenburg]] and [[Erich Ludendorff]] wheeled their troops to face the I Army at the [[First Battle of the Masurian Lakes]], almost destroying them before they reached the protection of their own fortresses as they retreated across the border. ||| Background ||| ||| +0 Guadalcanal Campaign ||| Naval Battle of Guadalcanal ||| Surprised by the Allied offensive, the Japanese made several attempts between August and November to retake Henderson Field. Three major land battles, seven large naval battles (five nighttime surface actions and two carrier battles), and continual, almost daily aerial battles culminated in the decisive [[Naval Battle of Guadalcanal]] in early November, in which the last Japanese attempt to bombard Henderson Field from the sea and land with enough troops to retake it was defeated. In December, the Japanese abandoned their efforts to retake Guadalcanal and [[Operation Ke|evacuated their remaining forces]] by 7 February 1943 in the face of an offensive by the US Army's [[XIV Corps (United States)|XIV Corps]]. ||| ||| ||| +0 Gulf War ||| Iraq War ||| The war is also known under other names, such as the '''Persian Gulf War''', '''First Gulf War''', '''Gulf War I''', '''Kuwait War''', '''First Iraq War''', or '''Iraq War''' before the term 'Iraq War' became identified instead with the [[Iraq War|2003 Iraq War]] (also referred to in the U.S. as '[[Operation Iraqi Freedom]]'). ||| ||| ||| +0 Hama Rashid revolt ||| Iran crisis of 1946 ||| As a result of the above described actions, by 1945 the government of Iran effectively controlled Kurdish areas south of Saqqiz-Baneh-Sardasht line. Shortly thereafter, the [[Iran crisis of 1946]] took shape, seeking to establish Azeri and Kurdish states with Soviet support. Hama Rashid and his forces took an important role in this next chapter of [[Kurdish-Iranian conflict|violence]]. ||| Aftermath ||| ||| +0 Hawthorn Ridge Redoubt ||| Second Battle of Artois ||| '''Hawthorn Ridge Redoubt''' was a [[Germany|German]] front-line fortification, west of the village of [[Beaumont Hamel]] on the [[Somme River|Somme]]. Since the end of the [[Battle of Albert (1914)|Battle of Albert]] in 1914 the Germans had begun building fortifications along the Western Front, which were elaborated several times before the [[Battle of the Somme]] as French and British attacks became more formidable. During the [[Second Battle of Artois]] in early 1915, a supporting attack was conducted by the French [[11th Army Corps (France)|XI Corps]] from Hébuterne to Serre, which advanced the front line on a {{convert|1|mi|km|adj=on}} front and left a German salient the {{lang|de|''Heidenkopf''}} (the Quadrilateral), north of the Hawthorn Ridge Redoubt. Mine warfare had begun on the Somme front soon after September 1914 and was continued by the British when they took over the area in mid-1915. ||| ||| ||| +0 Hungarian Revolution of 1956 ||| Operation Barbarossa ||| During World War II Hungary was a member of the [[Axis powers]], allied with the forces of [[Nazi Germany]], [[Kingdom of Italy (1861–1946)|Fascist Italy]], [[Kingdom of Romania|Romania]], and [[Kingdom of Bulgaria|Bulgaria]]. In 1941, the Hungarian military [[Hungary during World War II|participated]] in the [[invasion of Yugoslavia|occupation of Yugoslavia]] and the [[Operation Barbarossa|invasion of the Soviet Union]]. The Soviet army was able to force back the Hungarian and other Axis invaders. By 1944 Soviet armies were advancing towards Hungary. ||| Prelude ||| ||| +0 Indo-Pakistani War of 1971 ||| Indo-Pakistani War of 1965 ||| * [[Indo-Pakistani War of 1965]] ||| See also ||| ||| +0 Invasion of Normandy ||| Spanish Armada ||| Standing in the way of the Allies was the [[English Channel]], a crossing which had frustrated the ambitions of the [[Spanish Armada]] and [[Napoleon Bonaparte]]'s Navy. Compounding the invasion efforts was the extensive [[Atlantic Wall]], ordered by [[Adolf Hitler|Hitler]] in his Directive 51. Believing that any forthcoming landings would be timed for high tide (this caused the landings to be timed for low tide), Hitler had the entire wall fortified with tank top turrets and extensive barbed wire, and laid a million mines to deter landing craft.{{Citation needed|date=April 2010}} The sector that was attacked was guarded by four divisions. ||| German order of battle ||| Atlantic Wall ||| +0 Invasion of Sakhalin ||| Battle of Tsushima ||| On 7 June 1905, shortly after the [[Battle of Tsushima]], former US president [[Theodore Roosevelt]] met with Japanese diplomat and [[Kaneko Kentaro]] and the issue was reconsidered. Roosevelt agreed with the Japanese assessment that the invasion and occupation of Sakhalin was now necessary, as only the threat of direct loss of Russian territory would bring Russian Tsar [[Nicholas II of Russia|Nicholas II]] to consider a negotiated settlement to the war ||| Background ||| ||| +0 Invasion of Tulagi (May 1942) ||| Battle of Midway ||| After striking Tulagi, ''Yorktown'' rejoined with ''Lexington'', and the two carriers engaged the rest of the Japanese forces involved in the ''Mo'' operation from 6–8 May in the [[Battle of the Coral Sea]]. In the battle, ''Lexington'' was sunk and ''Yorktown'' was damaged. The Japanese suffered ''Shōhō'' sunk, a fleet carrier heavily damaged, and heavy losses to their carrier aircraft and aircrews. Fearing more damaging attacks from Allied land-based aircraft or warships and unable because of their aircraft losses to provide adequate air cover for their naval surface forces, the Japanese turned back from their planned assault on Port Moresby with the intention of trying again later. The next Japanese seaborne attempt to take Port Moresby, however, never happened, mainly because of their navy's defeat in June at the [[Battle of Midway]]. Instead, the Japanese decided to try to take Port Moresby in an [[Kokoda Track campaign|ultimately unsuccessful overland attack]] along the [[Kokoda Track]]. The failure to take Port Moresby in May 1942 would have significant and far-reaching strategic implications, many of which involved the small Japanese naval base at Tulagi. ||| Aftermath ||| ||| +0 Invasion of Tulagi (May 1942) ||| New Guinea campaign ||| Over the next several months, the Japanese established a naval refueling, communications, and [[seaplane]] reconnaissance base on Tulagi and the nearby [[islets]] of [[Gavutu]] and [[Tanambogo]], and in July 1942 began to build a large airfield on nearby [[Guadalcanal]]. The Japanese activities on Tulagi and Guadalcanal were observed by [[Allies of World War II|Allied]] [[reconnaissance aircraft]], as well as by Australian [[coastwatchers|coastwatcher]] personnel stationed in the area. Because these activities threatened the Allied supply and communication lines in the South Pacific, Allied forces counter-attacked with landings of their own on Guadalcanal and Tulagi on 7 August 1942, initiating the critical [[Guadalcanal campaign]] and a series of combined arms battles between Allied and Japanese forces that, along with the [[New Guinea campaign]], decided the course of the war in the South Pacific. ||| ||| ||| +0 Invasion of Yugoslavia ||| Uprising in Serbia (1941) ||| Beginning with the forming of the [[Sisak People's Liberation Partisan Detachment|first partisan battalion]] near [[Sisak]], [[Croatia]] on June 22nd and [[Uprising in Serbia (1941)|uprising in Serbia in July 1941]], there was continuous resistance to the occupying armies in Yugoslavia until the end of the war. While in the beginning both [[Yugoslav Partisans|Partisans]] and the [[Chetniks]] engaged in resistance, the Partisans became the main resistance force after Chetniks started to collaborate with the Axis forces in 1942, esp. in [[Operation Trio]]. ||| Aftermath ||| ||| +0 Iraq War in Anbar Province ||| Operation Desert Scorpion (Iraq 2003) ||| In June, American forces conducted [[Operation Desert Scorpion (Iraq 2003)|Operation Desert Scorpion]], a mostly unsuccessful attempt to root out the burgeoning insurgency. An isolated success occurred near [[Rawa (Iraq)|Rawah]], where American soldiers cornered and killed more than 70 fighters on 12 June and captured a large weapons cache. ||| 2003 ||| June–October 2003 ||| +0 Iraqi insurgency (2003–11) ||| Operation Market Sweep ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Irish Confederate Wars ||| Irish Rebellion of 1641 ||| The war in Ireland began with the [[Irish Rebellion of 1641|Rebellion of 1641]] in [[Ulster]] in October, during which thousands{{citation needed|date=November 2013}} of [[Scottish people|Scots]] and [[English people|English]] [[Plantation of Ulster|Protestant settlers]] were killed. The rebellion spread throughout the country and at [[Kilkenny]] in 1642 the Association of The [[Confederate Ireland|Confederate Catholics of Ireland]] was formed to organise the Catholic war effort. The Confederation was essentially an independent state and was a coalition of all shades of Irish Catholic society, both [[Gaels|Gaelic]] and [[Old English (Ireland)|Old English]]. The Irish Confederates professed to side with the English [[Cavalier]]s during the ensuing civil wars, but mostly fought their own war in defence of the Catholic landed class' interests. ||| Overview ||| ||| +0 Irish Confederate Wars ||| Second English Civil War ||| The Confederates were fatally divided over this compromise. Rinuccini, the Papal Nuncio, threatened to [[excommunicate]] anyone who accepted the deal. Particularly galling for him was the alliance with Inchiquin, who had massacred Catholic civilians and clergy in Munster in 1647. There was even a brief period of civil war in 1648 between [[Owen Roe O'Neill]]'s Ulster Army, as he refused to accept the Royalist alliance, and the new Royalist–Confederate coalition. O'Neill neglected to secure adequate supplies and was unable to force a change in policy on his former comrades. During this divisive period the Confederates missed a second strategic chance to reorganise while their opponents were engaged in the [[Second English Civil War]] (1648–49), which was lost by their royalist allies. ||| {{anchor|Confederates}}The Confederates' war, 1642–48 ||| Victory and defeat for the Confederates ||| +0 Irish Rebellion of 1641 ||| English Civil War ||| The rising was sparked by Catholic fears of an impending invasion of Ireland by anti-Catholic forces of the English [[Long Parliament]] and the Scottish [[Covenanters]], who were defying the authority of King [[Charles I of England|Charles I]] (king of England, Scotland, and Ireland). In turn, the rebels' suspected association with Charles helped start the [[English Civil War]]. The English and Scottish Parliaments refused to raise an army to put down the rebellion unless it was under their command rather than the King's. ||| ||| ||| +0 Irish War of Independence ||| Spring Offensive ||| In April 1918, the British Cabinet, in the face of the crisis caused by the German [[Spring Offensive]], attempted with a dual policy to simultaneously link the enactment of [[conscription]] into Ireland with the implementation of Home Rule, as outlined in the report of the [[Irish Convention#Europe intervenes|Irish Convention]] of 8 April 1918. This further alienated Irish nationalists and produced mass demonstrations during the [[Conscription Crisis of 1918]]. In the [[Irish (UK) general election, 1918|1918 general election]] Irish voters showed their disapproval of British policy by giving Sinn Féin 70% (73 seats out of 105,) of Irish seats, 25 of these uncontested. Sinn Féin won 91% of the seats outside of [[Ulster]] on 46.9% of votes cast, but was in a minority in Ulster, where unionists were in a majority. Sinn Féin pledged not to sit in the [[Parliament of the United Kingdom|UK Parliament]] at [[Palace of Westminster|Westminster]], but rather to set up an Irish Parliament. This parliament, known as the [[First Dáil]], and its ministry, called the [[Aireacht]], consisting only of Sinn Féin members, met at the [[Mansion House, Dublin|Mansion House]] on 21 January 1919. The Dáil reaffirmed the 1916 Proclamation with the Declaration of Independence, and issued a [[Message to the Free Nations of the World]], which stated that there was an 'existing state of war, between Ireland and England'. The Irish Volunteers were reconstituted as the '[[Irish Republican Army]]' or IRA. The IRA was perceived by some members of [[Dáil Éireann (Irish Republic)|Dáil Éireann]] to have a mandate to wage war on the British [[Dublin Castle administration]]. ||| Origins of the conflict ||| First Dáil ||| +0 Japanese occupation of Attu ||| Aleutian Islands Campaign ||| In May 1942, the Japanese began a campaign against [[Midway Atoll|Midway]], their objective being to occupy the islands and destroy the remaining [[United States Navy]] forces in the [[Pacific Ocean|Pacific]]. In order to deceive the American [[United States Pacific Fleet|Pacific Fleet]], a diversionary attack was ordered to take place in the Aleutians, thus beginning the [[Aleutian Islands Campaign]]. During the [[Battle of Midway]], Japanese forces were repulsed in a decisive action, meanwhile on 6 June, Japanese naval forces under [[Boshirō Hosogaya]] landed troops unopposed at Kiska and Attu islands. A force consisting of 1,140 [[infantry]] under [[Major]] [[Matsutoshi Hosumi]] took control of the island and captured forty-five [[Aleut people|Aleut]] civilians and a school teacher. The school teacher's husband was killed during the invasion; the Japanese Army was suspected of executing him. All of the prisoners were eventually removed to Japan. ||| Occupation ||| ||| +0 Japanese occupation of Kiska ||| Aleutian Islands Campaign ||| The '''Japanese occupation of Kiska''' took place between 6 June 1942 and 28 July 1943 during the [[Aleutian Islands Campaign]] of the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] of [[World War II]]. The Japanese occupied [[Kiska]] and nearby [[Attu Island]] in order to protect the northern flank of the [[Empire of Japan|Japanese Empire]]. ||| ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Rolling Thunder ||| If the Politburo had assumed the U.S. would not use airpower against the North, they were disabused by the outcome of a February 6, 1965 VC attack attacked U.S. facilities at [[Pleiku]], killing 8 and destroying 10 aircraft. President Johnson, on February 7–8, responded with the first specifically retaliatory air raid, [[Operation Flaming Dart]] (or, more specifically, Flaming Dart I), of the broader [[Operation Rolling Thunder]] plan, which had not yet officially started. Alternatively, the North Vietnamese may have accepted the risk of being bombed, correctly predicting that even if ground troops were introduced, the U.S. would not risk the North's greatest fear: large-scale ground operations, beyond the South Vietnamese border, against the Ho Chi Minh trail. ||| 1964–65 winter offensive ||| ||| +0 Kamenets-Podolsky pocket ||| Battle of Stalingrad ||| Realizing the significance of the 1st Panzer Army, Soviet Marshal [[Georgi Zhukov]] began planning to bring about its destruction with hopes of creating a collapse of the entire South-Eastern Front. Zhukov planned a multi-Front offensive, involving his own [[1st Ukrainian Front|1st]] and Marshal [[Ivan Konev]]'s [[2nd Ukrainian Front]]. This force of over eleven Armies, including two [[Air Army|Air Armies]], was to attempt to [[Flanking maneuver|outflank]] and [[encirclement|encircle]] Hube's Army, and, in a repeat of the [[Battle of Stalingrad]], reduce the resulting [[Encirclement|pocket]] (in German, [[Kessel (cauldron)|''kessel'']], roughly meaning a steam boiler or 'pressure cooker') until all troops in it have surrendered. The operations were to take place on the extreme north and south of the [[Army Group South]]'s front. ||| Preparation ||| ||| +0 Kanalkampf ||| Adlertag ||| In June and July 1940 the Germans were engaged in an enormous [[logistics|logistical]] effort, moving two entire ''Luftflotten'' (Air Fleets) into airfields in [[France]] and [[Belgium]] along with all their administrative, manpower and material resources. Unable to begin operations against the island of Great Britain immediately, the ''Luftwaffe'' began a series of [[operation (military)|military operations]] against British merchant convoys and shipping passing through the English Channel from the [[Atlantic]] on their way to ports in eastern England. German operations were designed to help cut off British shipping communications in the south, to force the Royal Navy out of the Channel, and to encourage the RAF to battle as a prelude to the [[Adlertag|main effort]] in August. ||| ||| ||| +0 Kanalkampf ||| Battle of Dunkirk ||| Fighter Command had cooperated in joint operations with the navy [[Battle of Dunkirk|over Dunkirk]] when the RAF provided [[air superiority]] support for the naval forces withdrawing the [[British Expeditionary Force (World War II)|British Army]]. These operations were not completely successful and incurred heavy casualties in both services. ||| Background ||| Air Ministry and Admiralty ||| +0 King George's War ||| Battle of Dettingen ||| The [[War of Jenkins' Ear]] (named for a 1731 incident in which a [[Spain|Spanish]] commander chopped off the ear of British merchant captain [[Robert Jenkins (master mariner)|Robert Jenkins]] and told him to take it to his king, [[George II of Great Britain|George II]]) broke out in 1739 between Spain and [[Kingdom of Great Britain|Great Britain]], but was confined to the [[Caribbean Sea]] and conflict between [[Spanish Florida]] and the neighboring British [[Province of Georgia]]. The [[War of the Austrian Succession]], nominally a struggle over the legitimacy of the accession of [[Maria Theresa of Austria|Maria Theresa]] to the [[Habsburg Monarchy|Austrian throne]], began in 1740, but at first did not involve either Britain or Spain militarily. Britain was drawn diplomatically into that conflict in 1742 as an ally of Austria and an opponent of France and Prussia, but open hostilities between them did not take place until 1743 at [[Battle of Dettingen|Dettingen]], and war was only formally declared between Britain and France in March 1744. Massachusetts did not declare war until June 2. ||| Causes ||| ||| +0 Kozara Offensive ||| Operation Trio ||| The '''Kozara Offensive''', also known as '''''Operation West-Bosnien''''' by the Axis, was fought in 1942 on and around the mountain of [[Kozara]] in [[Bosanska Krajina|northwestern Bosnia]]. It was an important battle of the [[Yugoslav Partisan]] resistance movement in [[World War II]]. It later became an integral part of [[Socialist Federal Republic of Yugoslavia|Yugoslav]] post-war mythology, which celebrated the courage and martyrdom of outnumbered and outgunned Partisans and civilians. Certain sources mistakenly identify the Kozara Offensive as part of [[Operation Trio]]. ||| ||| ||| +0 Liberation of Paris ||| Battle of Stalingrad ||| General Eisenhower stated that it was too early for an assault on Paris. He was aware that [[Adolf Hitler]] had ordered the German military to completely destroy Paris should the Allies attack. Paris was considered to have too great a value, culturally and historically, to risk its destruction. General Eisenhower was keen to avoid a drawn-out battle of attrition, such as the [[Battle of Stalingrad]] or the [[Battle of Leningrad]]. It was also estimated that, in the event of a siege, {{convert|4000|ST|t|lk=on|abbr=on}} of food per day, as well as significant amounts of building materials, manpower, and engineering skill, would be required to feed the population after the liberation of Paris. Basic utilities would have to be restored, and transportation systems rebuilt. All of these supplies were desperately needed in other areas of the war effort. ||| Background ||| ||| +0 Libyan Civil War (2011) ||| Death of Muammar Gaddafi ||| In August, rebel forces [[2011 Libyan rebel coastal offensive|launched an offensive on the government-held coast of Libya]], taking back territory lost months before and ultimately [[Battle of Tripoli (2011)|capturing the capital city of Tripoli]], On 16 September 2011, the National Transitional Council was recognised by the [[United Nations]] as the legal representative of Libya, replacing the Gaddafi government. Muammar Gaddafi remained at large until 20 October 2011, when he was [[Death of Muammar Gaddafi|captured and killed]] attempting to escape from [[Sirte]]. ||| ||| ||| +0 Lithuanian partisans ||| Eastern Front (World War II) ||| At the end of [[World War II]], the [[Red Army]] pushed the [[Eastern Front (World War II)|Eastern Front]] towards Lithuania. The [[Occupation of Baltic states|Soviets invaded and occupied]] Lithuania by the end of 1944. As forced [[conscription]] into Red Army and [[Stalinist]] repressions intensified, thousands of Lithuanians used forests in the countryside as a natural refuge. These spontaneous groups became more organized and centralized culminating in the establishment of the [[Union of Lithuanian Freedom Fighters]] in February 1948. In their documents, the partisans emphasized that their ultimate goal is recreation of independent Lithuania. As the partisan war continued, it became clear that the West would not interfere in Eastern Europe (see [[Western betrayal]]) and that the partisans had no chance of success against the far stronger opponent. Eventually, the partisans made an explicit and conscious decision not to accept any new members. The leadership of the partisans was destroyed in 1953 thus effectively ending the partisan war, though individual fighters held out until the 1960s. ||| ||| ||| +0 Lord's Resistance Army insurgency (2002–05) ||| Second Congo War ||| In March 2002, the UPDF launched a massive military offensive, named 'Operation Iron Fist', against the LRA bases in southern Sudan. The [[National Islamic Front]] government agreed to the entry of the Ugandan military into its borders, albeit below the so-called 'red line' consisting of the [[Juba, Sudan|Juba]]-[[Torit]] highway. This was part of its efforts to broadcast its new status as an engaged member of the international community. This agreement, coupled with the return of Ugandan forces that had been deployed in the [[Democratic Republic of Congo]] upon the official end of the [[Second Congo War]], created what the Ugandan government felt was an ideal situation in which to end a conflict that had become both an embarrassment and political liability. ||| Operation Iron Fist ||| ||| +0 March 1966 Mizo National Front uprising ||| Indo-Pakistani War of 1965 ||| The Indian armed forces, fresh from the [[Sino-Indian War]] of 1962 and the [[Indo-Pakistani War of 1965]], were focused on the Indo-Pak and Indo-China borders. The extremist MNF leaders wanted to take advantage of this situation by starting an armed rebellion to establish an independent Mizo nation. The rehabiliation of the pro-Government [[Chakma people|Chakma]] refugees from East Pakistan in the Mizo district further instigated them. {{cite book ||| MNF's plan for armed uprising ||| ||| +0 March on Washington for Jobs and Freedom ||| First Battle of Bull Run ||| The march commanded national attention by preempting regularly scheduled television programs. As the first ceremony of such magnitude ever initiated and dominated by African Americans, the march also was the first to have its nature wholly misperceived in advance. Dominant expectations ran from paternal apprehension to dread. On [[Meet the Press]], reporters grilled Roy Wilkins and Martin Luther King about widespread foreboding that 'it would be impossible to bring more than 100,000 militant Negroes into Washington without incidents and possibly rioting.' [[Life magazine]] declared that the capital was suffering 'its worst case of invasion jitters since the [[First Battle of Bull Run]].' The Pentagon readied 19,000 troops in the suburbs and the jails shifted inmates to other prisons to make room for those arrested in [[mass arrest]]s; the city banned all sales of alcoholic beverages; hospitals made room for riot casualties by postponing elective surgery. With nearly 1,700 extra correspondents supplementing the Washington press corps, the march drew a media assembly larger than the Kennedy inauguration two years earlier. Students from the University of California came together as black power organizations and emphasized on the importance of African American freedom struggle. The march included black political parties and William Worthy who was one of many who lead college students during the freedom struggle era. ||| The March ||| ||| +0 Massacre of Glencoe ||| Battle of the Boyne ||| The Scottish [[Jacobitism|Jacobites]] were heavily defeated at the [[Battle of Cromdale|Haughs of Cromdale]] on 1 May 1690, and James was defeated on 1 July 1690 at the [[Battle of the Boyne]] in [[Kingdom of Ireland|Ireland]]. ||| Background ||| ||| +0 May Revolution ||| Battle of Rancagua ||| The [[Captaincy General of Chile]] followed a process analogous to that of the May Revolution, and elected a [[Government Junta of Chile (1810)|Government Junta]] that inaugurated the brief period known as ''[[Patria Vieja]]''. The Junta was defeated in 1814 at the [[Battle of Rancagua]], and the subsequent [[Reconquista (Chile)|Reconquista]] of Chile would make it a royalist stronghold once more. The Andes provided an effective natural barrier between the Argentine revolutionaries and Chile, so there was no military confrontation between them until the [[Crossing of the Andes]], led by [[José de San Martín]] in 1817, a campaign that resulted in the defeat of the Chilean royalists. ||| Aftermath ||| ||| +0 Meigs Raid ||| Battle of Long Island ||| An opportunity arose when they learned that a British foraging expedition had landed at [[Sag Harbor, New York|Sag Harbor, Long Island]]. Sag Harbor had been occupied by British troops after the August 1776 [[Battle of Long Island]], and they had established a strong defensive position on Meeting House Hill, with earthwork fortifications and [[palisade]]s. ||| Background ||| ||| +0 Military history of Canada during World War II ||| Battle of the Scheldt ||| One of the most important Canadian contributions was the [[Battle of the Scheldt]], involving the [[II Canadian Corps]] under the Canadian 1st Army. The Corps included the [[2nd Canadian Infantry Division]], [[3rd Canadian Infantry Division]] and [[4th Canadian (Armoured) Division]]. Although nominally a Canadian formation, II Canadian Corps contained the [[Polish 1st Armoured Division]], with the [[1st Belgian Infantry Brigade]], and the [[Royal Netherlands Motorized Infantry Brigade]]. The British [[51st (Highland) Infantry Division (World War II)|51st (Highland) Infantry Division]] was attached to the Corps. ||| The Low Countries ||| ||| +0 Military history of Canada during World War II ||| Juno Beach ||| On 6 June 1944, the 3rd Canadian Division landed on [[Juno Beach]] in the [[operation Overlord|Battle of Normandy]] and sustained heavy casualties in their first hour of attack. By the end of D-Day, the Canadians had penetrated deeper into France than either the British or the American troops at their landing sites, overcoming stronger resistance than any of the other beachheads except [[Omaha Beach]]. In the first month of the Normandy campaign, Canadian, British and Polish troops were opposed by some of the strongest and best trained German troops in the theatre, including the [[1st SS Panzer Division Leibstandarte SS Adolf Hitler]], the [[12th SS Panzer Division Hitlerjugend]] and the [[Panzer-Lehr-Division]]. ||| D-Day and Normandy ||| ||| +0 Moncada Barracks ||| Cuban War of Independence ||| The '''Moncada Barracks''' was a military [[barracks]] in [[Santiago de Cuba]], named after General [[Guillermón Moncada]], a hero of the [[Cuban War of Independence|War of Independence]]. On July 26, 1953, the barracks was the site of an armed attack by a small group of revolutionaries led by [[Fidel Castro]]. This armed attack is widely accepted as the beginning of the [[Cuban Revolution]]. The date on which the attack took place, July 26, was adopted by Castro as the name for his [[26th of July Movement|revolutionary movement]] (''Movimiento 26 Julio'' or ''M 26-7'') which eventually toppled the dictatorship of [[Fulgencio Batista]] in 1959. ||| ||| ||| +0 Moonsund Landing Operation ||| Battle of Moon Sound ||| * [[Battle of Moon Sound]] (1917) ||| See also ||| ||| +0 Moro Conflict ||| 2007 Basilan beheading incident ||| These rebel groups, especially the [[Abu Sayyaf]] conducted several terror attacks, namely the [[2002 Zamboanga City bombings|bombings at Zamboanga]] in October 2002; the [[2004 SuperFerry 14 bombing|bombing of SuperFerry 14]] on February 2004; the [[2006 Central Mindanao bombings|simultaneous bombings in Central Mindanao]] on October 2006; the [[2007 Basilan beheading incident|beheadings of several Philippine Marines]] on July 2007; the [[Batasang Pambansa bombing]] on November 2007; and the 2009 [[July 2009 Mindanao bombings|bombings in Mindanao]]. ||| History ||| Estrada and Arroyo (1998–2010) ||| +0 Naval Battle of Guadalcanal ||| Guadalcanal Campaign ||| The '''Naval Battle of Guadalcanal''', sometimes referred to as the '''Third and Fourth Battles of Savo Island''', the '''Battle of the Solomons''', the '''Battle of Friday the 13th''', or, in Japanese sources, the {{Nihongo|'''Third Battle of the Solomon Sea'''|第三次ソロモン海戦|Dai-san-ji Soromon Kaisen}}, took place from 12–15 November 1942, and was the decisive engagement in a series of [[naval battle]]s between [[Allies of World War II|Allied]] (primarily United States) and [[Military of Japan|Imperial Japanese forces]] during the months-long [[Guadalcanal Campaign]] in the [[Solomon Islands]] during World War II. The action consisted of combined air and sea engagements over four days, most near [[Guadalcanal]] and all related to a Japanese effort to reinforce land forces on the island. The only two U.S. Navy admirals to be killed in a surface engagement in the war were lost in this battle. ||| ||| ||| +0 Naval operations in the American Revolutionary War ||| Siege of Savannah ||| On January 6, 1779, Admiral Byron reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another. But in June, while Byron had gone to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first captured [[Saint Vincent (island)|St Vincent]], and then [[Grenada]]. Admiral Byron, who had returned, sailed in hopes of saving the island but arrived too late. An indecisive [[Battle of Grenada|action]] was fought off Grenada on July 6, 1779. The war died down in the West Indies. Byron returned home in August. D'Estaing, after co-operating unsuccessfully with the Americans in [[Siege of Savannah|an attack]] on [[Savannah, Georgia]] in September, also returned to Europe. ||| West Indies, 1778–1779 ||| ||| +0 New Guinea campaign ||| Battle of Kankiryo Saddle ||| *** [[Battle of Kankiryo Saddle]] ||| 1943 ||| ||| +0 New Guinea campaign ||| Battle of Noemfoor ||| ** [[Battle of Noemfoor]] ||| 1944–45 ||| ||| +0 New Guinea campaign ||| Bombing of Rabaul (November 1943) ||| * [[Bombing of Rabaul (November 1943)]] ||| 1943 ||| ||| +0 New York City draft riots ||| Battle of Gettysburg ||| U.S. President [[Abraham Lincoln]] diverted several regiments of militia and volunteer troops from following up after the [[Battle of Gettysburg]] to control the city. The rioters were overwhelmingly working-class men, primarily [[Irish American|ethnic Irish]], resenting particularly that wealthier men, who could afford to pay a $300 ({{Inflation|US|300|1863|fmt=eq}}) commutation fee to hire a substitute, were spared from the draft. ||| ||| ||| +0 Nivelle Offensive ||| Hindenburg Line ||| The Franco-British attacks were tactically successful; The French Third Army in {{lang|fr|''Groupe d'armées du Nord''}} captured the German defences west of the [[Hindenburg Line]] {{lang|de|''(Siegfriedstellung)''}} near St. Quentin in attacks from {{nowrap|1–4 April,}} before further attacks were repulsed. The British Third and First armies achieved the deepest advance since trench warfare began, in an offensive along the Scarpe river in the [[Battle of Arras (1917)|Battle of Arras]], which inflicted many losses on the Germans, attracted reserves and captured [[Battle of Vimy Ridge|Vimy Ridge]] to the north. The main French offensive on the Aisne began on 16 April and also achieved considerable tactical success. The attempt to force a strategically decisive battle on the Germans was a failure and by 25 April the main offensive was suspended. ||| ||| ||| +0 North Korea–United States relations ||| Korean War ||| '''North Korea–United States relations''' (Korean: 미조관계 Romaja: Mijo gwangye) are hostile and have developed primarily during the [[Korean War]], but in recent years have been largely defined by North Korea's three tests of [[North Korea and weapons of mass destruction|nuclear weapons, its development of long-range missiles capable of striking targets thousands of miles away]], and its ongoing threats to strike the United States ||| ||| ||| +0 North Russia Intervention ||| October Revolution ||| The '''North Russia Intervention''', also known as the '''Northern Russian Expedition''', the '''Archangel Campaign''', and the '''Murman Deployment''', was part of the [[Allied Intervention in Russia]] after the [[October Revolution]]. The intervention brought about the involvement of foreign troops in the [[Russian Civil War]] on the side of the [[White movement]]. While the movement was ultimately defeated, the Allied forces fought notable ending defensive actions against the Bolsheviks in the battles of [[Battle of Bolshie Ozerki|Bolshie Ozerki]] and [[Battle of Romanovka|Romanovka]], allowing them to withdraw from Russia in good order. The campaign lasted from 1918, during the final months of [[World War I]], to 1920. ||| ||| ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Springfield (1780) ||| In early 1780, a British attack against an American outpost in [[Westchester County, New York]] resulted in about 50 American casualties and 75 captured in the [[Battle of Young's House]]. The last notable action in the New York area was an attempt by the British to regain control of northern New Jersey in June 1780 by attacking the main Continental Army camp at [[Morristown, New Jersey|Morristown]]. The first British-Hessian thrust by [[Wilhelm von Knyphausen]] was blocked at the [[Battle of Connecticut Farms]] on June 7. A second offensive by Knyphausen on June 23 was halted in the [[Battle of Springfield (1780)|Battle of Springfield]] after stiff fighting when [[Nathanael Greene]] appeared on the scene with 2,000 troops. This put an end to British ambitions in New Jersey. ||| Skirmishes around New York ||| ||| +0 Northwest Indian War ||| French Revolution ||| Wayne's well-trained Legion advanced deeper into the territory of the Wabash Confederacy. Blue Jacket assumed overall command, but the Indian forces were defeated at the [[Battle of Fallen Timbers]] in August 1794. Blue Jacket's warriors fled from the battlefield to regroup at British-held [[Fort Miami (Ohio)|Fort Miami]]. However, they found themselves locked out of the fort. Britain and the United States were by then reaching a close rapprochement to counter [[Jacobin (politics)|Jacobin]] [[France]] during the [[French Revolution]]. ||| Course of the war ||| 1794 - Battle of Fallen Timbers ||| +0 Occupy Baltimore ||| Iraq War ||| On November 15, protestors interrupted a speech given by [[Karl Rove]] on the [[Johns Hopkins University]] campus. They stated that Rove had 'occupied' [[Iraq War|Iraq]] and [[War in Afghanistan (2001–present)|Afghanistan]]. ||| Events ||| Disruption of Karl Rove ||| +0 Occupy Baltimore ||| Occupy movement ||| '''Occupy Baltimore''' was a collaboration that included [[peaceful protest]]s and [[Demonstration (people)|demonstration]]s. Occupy Baltimore began on October 4, 2011 in [[Baltimore]], [[Maryland]], in [[McKeldin Square]] near the [[Inner Harbor]] area of [[Downtown Baltimore]]. It is one of the many [[Occupy movement]]s around the United States and worldwide, inspired by [[Occupy Wall Street]]. ||| ||| ||| +0 Occupy Portland ||| Occupy Wall Street ||| '''Occupy Portland''' was a collaboration that began on October 6, 2011 in [[Downtown Portland|downtown]] [[Portland, Oregon]] as a [[protest]] and [[Demonstration (people)|demonstration]]. It is inspired by the [[Occupy Wall Street]] movement that began in New York City on September 17, 2011. ||| ||| ||| +0 Occupy movement ||| Occupy Sydney ||| [[Occupy Sydney]] had an ongoing occupation in [[Martin Place, Sydney|Martin Place]] since their initial police eviction, marking almost 21 months in July 2013. The Occupy Sydney camp was removed on 3 July 2013 but it returned on 4 July. It was again removed on 5 July. ||| Protests ||| Australia ||| +0 Operation Bagration ||| Battle of Kursk ||| [[Army Group Centre]] had previously proved tough to counter as the Soviet defeat in [[Operation Mars|Operation ''Mars'']] had shown. But by June 1944, despite shortening its front line, it had been exposed following the withdrawals of [[Army Group South]] in the battles that followed the [[Battle of Kursk]], the [[Battle of Kiev (1943)|Second Battle of Kiev]] and the [[Crimean Offensive]] in the late summer, autumn and winter of 1943–44. [[Battle of Smolensk (1943)|Operation ''Suvorov'']] had seen Army Group Centre itself forced to retreat westwards from [[Smolensk]] during the autumn of 1943. ||| Background ||| ||| +0 Operation Barbarossa ||| Battle of Moscow ||| Operationally, the Germans won resounding victories and occupied some of the most important economic areas of the Soviet Union, mainly in [[Ukrainian Soviet Socialist Republic|Ukraine]], both inflicting and sustaining heavy casualties. Despite their successes, the German offensive [[Battle of Moscow|stalled]] on the outskirts of [[Moscow]] and was subsequently pushed back by a Soviet [[Battle of Moscow#Soviet counteroffensive|counteroffensive]]. The [[Red Army]] repelled the [[Wehrmacht]]'s strongest blows and forced Germany into a [[Attrition warfare|war of attrition]] for which it was unprepared. The Germans would never again mount a simultaneous offensive along the entire strategic [[Eastern Front (World War II)|Soviet-Axis front]]. The failure of the operation drove Hitler to demand further operations inside the [[USSR]], all of which eventually failed, such as [[Operation Nordlicht (1942)|Operation Nordlicht]], [[Case Blue]], and [[Operation Citadel]]. ||| ||| ||| +0 Operation Barrel Roll ||| Operation Rolling Thunder ||| After the initiation of [[Operation Rolling Thunder]], the sustained aerial campaign against North Vietnam that had begun on 5 March 1965, the ''Barrel Roll'' area of operations was divided on 3 April. ''Barrel Roll'' was to continue in the northeast while the southern portion of the area, where interdiction missions against the Ho Chi Minh trail were paramount, was redesignated ''Tiger Hound''. Command and control of that area was handed over to the American commander in Saigon, General [[William C. Westmoreland]]. ||| Preliminaries (1962–1964) ||| Field Marshal ||| +0 Operation Bulldog Mammoth ||| Operation Clear Area ||| Preceded by [[Operation Bayonet Lightning]], followed by [[Operation Clear Area]]. ||| ||| ||| +0 Operation Commando Hunt ||| Operation Igloo White ||| The physical barrier was to be backed up by air-dropped and hand-emplaced acoustic and seismic sensors that would provide both warning and location of enemy movements. A scientific group was established to find or develop the technology for what was initially titled ''Practice Nine''. On 17 June 1967 the title of the program was altered to ''Illinois City'' and on 15 July to ''Dyemarker'', the electronic barrier portion of which was designated ''Muscle Shoals''. In June 1968 it was renamed for the last time, becoming [[Operation Igloo White]]. ||| Igloo White ||| ||| +0 Operation Deny Flight ||| Siege of Sarajevo ||| Due to the difficult 'dual key' authorization measure, [[NATO]] did not fulfill its close air support mission for several months. Nonetheless, NATO soon began further planning for a third mission: coercive air strikes as advocated by the [[United States]]. NATO first prepared to use Deny Flight to carry out air strikes in August 1993 as part of a plan to end the [[Siege of Sarajevo]]. After diplomatic intervention, the plan was not executed, but a precedent was established for the possible use of air strikes. Thus, in February 1994, after the [[Sarajevo Marketplace Bombing]], NATO issued an ultimatum to the Serbs to withdraw all heavy weapons from an exclusion zone around Sarajevo or face bombing. The Bosnian Serbs complied with NATO demands and no strikes were carried out. ||| Close air support and air strikes ||| ||| +0 Operation Enduring Freedom – Philippines ||| Moro Conflict ||| The Moros have been fighting against Philippine rule during the current [[Moro Conflict]] since 1969. Some have linked the previous American intervention in the current Moro Rebellion to the earlier American fight against the Moros in the Philippines and criticize both of American's interventions as imperialist, ||| Background ||| ||| +0 Operation Enduring Freedom – Philippines ||| Operation Enduring Freedom ||| '''Operation Enduring Freedom – Philippines''' ('''OEF-P''') or '''Operation Freedom Eagle''' was part of [[Operation Enduring Freedom]] and the U.S. Global [[War on Terrorism]]. This group had the most success in combating and capturing Al-Qaeda leaders and the leaders of associated groups like [[Abu Sayyaf]]. ||| ||| ||| +0 Operation Frequent Wind ||| Operation Eagle Pull ||| With Option 4, the helicopter evacuation would be expected to be similar to [[Operation Eagle Pull]] – the American evacuation by air of [[Phnom Penh]], Cambodia, on 12 April 1975. ||| Planning ||| ||| +0 Operation Fustian ||| Operation Torch ||| The 1st Parachute Brigade was an experienced formation, which had just taken part in the [[Operation Torch]] landings in Algeria and the subsequent [[Tunisia Campaign]], during which each of the brigade's three parachute battalions had taken part in their own battalion-sized parachute landings. ||| Background ||| British forces ||| +0 Operation Gordian Knot ||| Carnation Revolution ||| When, through a military coup, the [[Movimento das Forças Armadas]] (MFA) seized control of [[Estado Novo (Portugal)|the government in Lisbon]] on April 25, 1974, an event known as the [[Carnation Revolution]], the Portuguese position in Mozambique all but collapsed. ||| Aftermath ||| ||| +0 Operation Grenade ||| Battle of the Bulge ||| On 9 February, the U.S. Ninth Army—operating under [[Bernard Law Montgomery, 1st Viscount Montgomery of Alamein|Sir Bernard Montgomery]]'s [[British 21st Army Group]] since the [[Battle of the Bulge]]—was to cross the Roer and link up with the [[Canadian First Army|Canadian 1st Army]] coming from the [[Nijmegen]] area of the [[Netherlands]] in [[Operation Veritable]], which had started at 05:00 on 8 February. However, once the Canadians had advanced, the Germans destroyed the dams upstream. This stopped the Americans from crossing as planned. It had been anticipated that the Germans would try to do this, and that General Bradley′s [[Twelfth United States Army Group|U.S. 12th Army Group]] could capture them in time to stop the flooding. ||| ||| ||| +0 Operation Hardtack (commando raid) ||| Utah Beach ||| |The raid gathered information on the defensive obstacles on what would become [[Utah Beach]]. ||| Raids ||| ||| +0 Operation Jaywick ||| Operation Rimau ||| ''Operation Jaywick'' was followed by ''[[Operation Rimau]]''. Three ships were sunk, but the participants, including Lyon, were killed or captured and executed. ||| Raid repercussions ||| ||| +0 Operation Ladbroke ||| Operation Fustian ||| In March it was decided that the [[82nd Airborne Division|U.S. 82nd Airborne Division]] and the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]] would be dropped by parachute and glider just prior to the amphibious landings; they would land a few miles behind the beaches and neutralize their defenders, thereby aiding the landing of the Allied ground forces. The 1st Airborne Division was now to conduct three brigade-size airborne operations: the Ponte Grande road bridge south of Syracuse was to be captured by the 1st Airlanding Brigade, the port of [[Augusta, Sicily|Augusta]] was to be seized by [[2nd Parachute Brigade (United Kingdom)|2nd Parachute Brigade]], and finally the Primasole Bridge over the River Simeto was to be [[Operation Fustian|taken and secured]] by the [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade.]] ||| Background ||| ||| +0 Operation Ladbroke ||| Operation Turkey Buzzard ||| Further problems were encountered with the gliders to be used in the operation, and the glider pilots themselves. Until a few months prior to the operation, there was a notable shortage of serviceable gliders in North Africa. In late March a small number of Wacos arrived at Accra on the Gold Coast, but pilots sent to ferry them to North Africa found that they were in poor condition. Due to neglect and the deleterious effects of tropical weather, the pilots were able to assemble only a small number of Wacos and fly them back on 22 April. A small number of [[Airspeed Horsa|Horsa]] gliders were transported to North Africa for use by the brigade. Thirty took off from England and undertook a trip of approximately {{Convert|1,500|mi|km}} in [[Operation Turkey Buzzard]]. ||| Planning ||| Glider problems ||| +0 Operation Marne Avalanche ||| Operation Phantom Thunder ||| '''Operation Marne Avalanche''' was a US military operation that occurred in southern [[Baghdad]] in July 2007 as part of [[Operation Phantom Thunder]]. The goal of the offensive operation was to stop southern Baghdad from being used as a safe haven and to prevent the movement of weapons, munitions and [[Iraqi insurgency (Iraq War)|insurgent]] activity into Baghdad. ||| ||| ||| +0 Operation Mihailovic ||| Eastern Front (World War II) ||| In the Territory of the Military Commander in Serbia, just before the start of the uprising, the Germans had three full divisions whose commands were located in [[Belgrade]] but the divisions' battalions were deployed elsewhere in the interior. These were the [[704th Infantry Division (Wehrmacht)|704th]], [[714th Infantry Division (Wehrmacht)|714th]], and [[717th Infantry Division (Wehrmacht)|717th]] infantry divisions. Around the time of the start of the Chetnik uprising, the Germans transferred the 125th Infantry Regiment from [[Thessaloniki]], on 5 September 1941, but since the rebellion became widespread by the end of September, the German command transferred the [[342nd Infantry Division (Wehrmacht)|342nd Infantry Division]] on 23 September to the region from Germany. In mid-November of the same year, the Germans transferred another unit from the [[Eastern Front (World War II)|Eastern Front]] to the Territory of the Military Commander in Serbia, the [[113th Infantry Division (Wehrmacht)|113th Infantry Division]], which had suffered heavy losses; on the Eastern Front its strength had fallen from 20,000 to 14,000 soldiers. The main German force used for breaking the Chetnik uprising was the 342nd Infantry Division (20,000 soldiers), of which 10,000 troops would be used in Operation Mihailović. ||| German forces ||| ||| +0 Operation Noble Eagle ||| September 11 attacks ||| '''Operation ''Noble Eagle''''' ('''ONE''') is the name given to the [[United States]] and [[Canadian]] military operations related to homeland security and support to federal, state, and local agencies. The operation began 14 September 2001, in response to the [[September 11 attacks]]. ||| ||| ||| +0 Operation Patio ||| Operation Menu ||| '''Operation ''Patio''''' was a covert aerial interdiction effort conducted by the U.S. [[Seventh Air Force]] in Cambodia from 24–29 April 1970 during the [[Vietnam War]]. It served as a tactical adjunct to the heavier [[B-52 Stratofortress]] bombing missions being carried out in [[Operation Menu]]. ||| ||| ||| +0 Operation Peppermint ||| Normandy landings ||| '''Operation Peppermint''' was the codename given during [[World War II]] to preparations by the [[Manhattan Project]] and the [[European Theater of Operations United States Army]] (ETOUSA) to counter the danger that the Germans might disrupt the June 1944 [[Normandy landings]] with radioactive poisons. ||| ||| ||| +0 Operation Perch ||| Gold Beach ||| Operation Perch was intended to create the threat of a British breakout to the south-east of Caen by XXX Corps. The [[50th (Northumbrian) Infantry Division]] landed on [[Gold Beach]] on 6 June and was rapidly to move inland and capture Bayeux and the road to Tilly-sur-Seulles. ||| Background ||| Operation Perch ||| +0 Operation Phantom Phoenix ||| Operation Augurs of Prosperity ||| Combat operations continued until late July. Heavy casualties were sustained on both sides. Although the Coalition military suffered just over 60 dead, the Iraqi security forces and the Awakening Councils forces suffered more than 770 dead and more than a dozen missing or captured. The insurgents suffered almost 900 dead and more than 2,500 were captured. Diyala province had been almost entirely cleared of insurgent forces. On 29 July, the Iraqi security forces started their own [[Operation Augurs of Prosperity|offensive in Diyala province]] and stated the operation would last for two weeks and will result in the final establishing of law and order in the province. However, in the north the situation was totally different. After Coalition operations initially beat back the insurgents in the northern Ninawa and Kirkuk provinces the rebels came back and heavy fighting was still going on for the north by the end of operation Phantom Phoenix with the security forces still not being able to overcome the last insurgent stronghold in the north, Mosul. ||| Operation timeline ||| Operation ends ||| +0 Operation Roast ||| Gothic Line ||| This was the first major action in the [[Allies of World War II|Allied]] [[15th Army Group]]'s big [[Gothic Line|spring offensive]] to push the [[German Army (Wehrmacht)|German Army]] back to and across the [[River Po]] and out of Italy. The breakthrough on the [[Eighth Army (United Kingdom)|British Eighth Army's]] front was to be made through the [[Argenta, Italy|Argenta]] Gap, crossing the Rivers [[Senio River|Senio]] and [[Santerno River|Santerno]] towards the Po at [[Ferrara]] and releasing armour to swing left and race across country to meet the advancing [[United States Army North|U.S. Fifth Army]] completing the encirclement of the German divisions defending [[Bologna]]. ||| Strategy ||| ||| +0 Operation Serval ||| Battle of Konna ||| * [[Battle of Konna]] ||| See also ||| ||| +0 Operation Southern Move ||| Operation Mistral 2 ||| The offensive achieved its objectives, and significantly contributed, along with Operations Sana and [[Operation Mistral 2|Maestral 2]] to forcing the Bosnian Serb leadership to serious peace negotiations. A country-wide ceasefire came into effect on 12 October, one day after the offensive ended, and was soon followed by negotiations which produced the [[Dayton Agreement]], ending the Bosnian War. ||| ||| ||| +0 Operation Stone Age ||| Second Battle of El Alamein ||| British possession of Malta had been sustained through 1942, despite heavy naval losses and in November 1942 the rewards were realised. The ''[[Operation Pedestal|Pedestal]]'' convoy survivors, including the tanker {{SS|Ohio||6}}, delivered sufficient stores and military [[materiel]] to reinvigorate British submarine and aircraft activity from the island's bases. In the month following, [[Erwin Rommel]]'s armies were denied {{convert|300000|ST|t|lk=on}} of supplies, contributing to the dire lack of fuel that so limited their movement at [[Battle of Alam Halfa|Alam Halfa]] and [[Second Battle of El Alamein|El Alamein]]. ||| Background ||| ||| +0 Operation Weserübung ||| Operation Juno ||| * [[Operation Juno]] ||| See also ||| ||| +0 Order of battle for the Battle of the Somme ||| Battle of the Somme ||| This is the [[order of battle]] for the [[Battle of the Somme]] fought from 1 July to 18 November 1916 as one of the main engagements of the [[World War I|First World War]]. It was fought between [[Allies of World War I|French]], [[Allies of World War I|British]] and [[Allies of World War I|Dominion]] forces and the ||| ||| ||| +0 Order of battle for the Battle of the Somme ||| Capture of Gueudecourt ||| * [[Capture of Gueudecourt]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Morval]]: 25–28 September 1916 +0 Ottoman–Habsburg wars ||| Battle of Buda (1686) ||| In 1686, two years after the unsuccessful siege of Buda, a renewed European campaign was started to enter Buda, the erstwhile capital of medieval Hungary. This time, the Holy League's army was twice as large, containing over 74,000 men, including German, Croat, Dutch, Hungarian, English, Spanish, Czech, Italian, French, Burgundian, Danish and Swedish soldiers, along with other Europeans as volunteers, artillerymen, and officers, the Christian forces reconquered [[Buda]]. (See: [[Battle of Buda (1686)|Siege of Buda]]) ||| Great Turkish War ||| Holy League Counter ||| +0 Pacification of Rabaul ||| Battle of Empress Augusta Bay ||| After the first Japanese attempt to repel the Allied [[Landings at Cape Torokina|amphibious invasion of Bougainville]] was thwarted by US Navy surface forces at the [[Battle of Empress Augusta Bay]], the Imperial Navy sent a large naval force from Truk to Rabaul for a second attempt. Lacking a comparable surface force of his own, Admiral William Halsey responded by ordering Rear-Admiral [[Frederick Sherman]] to launch a dawn attack on the Japanese fleet at Rabaul using the carrier airgroups of {{USS|Saratoga|CV-3|2}} and {{USS|Princeton|CVL-23|2}}, followed up an hour later by a Fifth Air Force raid of [[Consolidated B-24 Liberator|B-24 Liberator]] [[heavy bomber]]s. These attacks succeeded in damaging six of the seven Japanese cruisers present in Simpson Harbor, ending the Japanese threat to the Bougainville landings. A following raid on 11 November including the three carriers of Task Group 50.3 Commanded by Rear Adm. [[Alfred E. Montgomery]] inflicted additional damage on the light cruiser ''Agano'' and shot down 35 Japanese aircraft. ||| Assault of the Fifth Air Force and the Carrier Raids of November, 1943 ||| ||| +0 Peruvian War of Independence ||| Chilean War of Independence ||| The '''Peruvian War of Independence''' was a series of military conflicts beginning in 1811 that culminated in the proclamation of the independence of [[Peru]] by [[José de San Martín]] on July 28, 1821. During the previous decade Peru had been a stronghold for [[royalist (Hispanic American Revolution)|royalist]]s, who fought those in favor of independence in [[Bolivian War of Independence|Upper Peru]], [[Ecuadorian War of Independence|Quito]] and [[Chilean War of Independence|Chile]]. The wars of independence took place with the background of the 1780-1781 uprising by indigenous leader [[Túpac Amaru II]] and the earlier removal of [[Upper Peru]] and the [[Viceroyalty of the Río de la Plata|Río de la Plata]] regions from the [[Viceroyalty of Peru]]. Because of this the viceroy often had the support of the 'Lima oligarchy,' who saw their elite interests threatened by popular rebellion and were opposed to the new commercial class in [[Buenos Aires]]. ||| ||| ||| +0 Peruvian War of Independence ||| Second Battle of Cancha Rayada ||| After the squashing of the after mentioned rebellion, Viceroy of Peru organised two expeditions; conformed by the royalist regiments of Lima and Arequipa, and expeditionary elements from Europe; against the Chilean Patriots. In 1814, the first expedition was successful in reconquering Chile after winning the [[Battle of Rancagua]]. In 1817 following the royalist defeat in the [[Battle of Chacabuco]], the second expedition against the Chilean Patriots in 1818 was an attempt to restore the monarchy. Initially it was successful in the [[Second Battle of Cancha Rayada]], the expedition was finally defeated by José de San Martín in the [[Battle of Maipú]]. ||| Founding of the Peruvian Republic ||| José de San Martín and the Liberation Army of the South ||| +0 Philippines and the Spratly Islands ||| Operation Enduring Freedom ||| The [[Balikatan]] Exercises have been part of '''[[Operation Enduring Freedom - Philippines]]''' (OEF-P) which is in turn part of [[Operation Enduring Freedom]] and the U.S. Global [[War on Terrorism]]. Since 2001, United States and Philippines have held joint military exercises in different parts of the Philippines. However, some analysts see this agreement as a move of the Philippines in its desperate quest to protect its claimed territories. {{cite journal ||| Activities and policies ||| Balikatan exercises ||| +0 Phoney War ||| Battle of Britain ||| *''[[Luftwaffe]]'' air raids on Britain began on 16 October 1939 when [[Junkers Ju 88]]s attacked British warships at [[Rosyth]] on the [[Firth of Forth]]. [[Supermarine Spitfire|Spitfire]]s of [[No. 602 Squadron RAF|602]] and [[No. 603 Squadron RAF|603]] Squadrons succeeded in shooting down two Ju 88s and a [[Heinkel He 111]] over the firth. In a raid on Scapa Flow the next day, one Ju 88 was hit by [[Anti-aircraft warfare|anti-aircraft fire]], crashing on the island of [[Hoy]]. The first ''Luftwaffe'' plane to be shot down on the British mainland was a He 111 at [[Haddington, East Lothian|Haddington]], [[East Lothian]], on 28 October, with both 602 and 603 Squadrons claiming this victory. 602 Squadron's [[Archie McKellar]] was a principal pilot in both the destruction of the first German attacker over water and over British soil. McKellar (KIA 1 Nov. 1940) went on to be credited with 20 kills during the [[Battle of Britain]], as well as '[[ace in a day]]' status by shooting down five Bf 109s; a feat accomplished by only 24 RAF pilots during the entire war. ||| Actions during the Phoney War ||| ||| +0 Phoney War ||| Battle of the River Plate ||| *In December 1939, the German [[Deutschland class cruiser|pocket battleship]] {{Ship|German cruiser|Admiral Graf Spee||2}} was attacked by the [[Royal Navy]] [[cruiser]]s {{HMS|Exeter|68|6}}, {{HMS|Ajax|22|2}} and {{HMNZS|Achilles|70|2}} in the [[Battle of the River Plate]]. ''Admiral Graf Spee'' fled to [[Montevideo]] harbour to carry out repairs on damage sustained during the battle. She was later [[scuttling|scuttled]] rather than face a large British fleet that the ''Kriegsmarine'' believed, incorrectly, was awaiting her departure. The support vessel for ''Admiral Graf Spee'', the [[Tank ship|tanker]] {{Ship|German tanker|Altmark||2}} was captured by the Royal Navy in February 1940 in southern Norway. ''(see: [[Battles of Narvik]], [[Altmark Incident]])'' ||| Actions during the Phoney War ||| ||| +0 Point 175 ||| Operation Crusader ||| '''Point 175''' is a small rise just south of a desert track, the Trigh Capuzzo east of Sidi Rezegh and south of Zaafran with a good view of the vicinity. In early November 1941, the feature was held by German infantry of the ''Division z.b.V. Afrika'' (later named the [[90th Light Infantry Division (Wehrmacht)|90th Light ''Afrika'' Division]]). The New Zealanders and [[Infantry tanks]] of the [[1st Army Tank Brigade (United Kingdom)|1st Army Tank Brigade]] attacked and captured Point 175 on 23 November, during the Battle of Sidi Rezegh, which was part of [[Operation Crusader]] in the [[Western Desert Campaign]] of the [[World War II|Second World War]]. The New Zealand troops then attacked westwards and made contact with the Tobruk garrison, which had broken out to meet them. From 29 November – 1 December, the New Zealanders defended the point and the area to the west against Axis counter-attacks, intended to sever the link with the Tobruk garrison and regain control of the roads in the area. The new [[132nd Armoured Division Ariete|132nd Armoured Division ''Ariete'']] re-captured Point 175 late on 29 November. ||| ||| ||| +0 Port Chicago disaster ||| Battle of Saipan ||| On August 11, 1944, the 258 men from the prison barge were marched to a nearby sports field and lectured by Admiral Wright who told them that troops [[Battle of Saipan|fighting on Saipan]] desperately needed the ammunition they were supposed to be loading and that continued refusal to work would be treated as mutinous conduct, which carried the [[Capital punishment in the United States|death penalty]] in times of war. Wright, who had seen nearly 400 of his men killed in 1942 in the [[Battle of Tassafaronga]], said that although loading ammunition was risky, [[Execution by firing squad|death by firing squad]] was the greater hazard. ||| Port Chicago mutiny ||| Initial actions ||| +0 Raid on Lunenburg, Nova Scotia (1756) ||| Raid on Dartmouth (1751) ||| To thwart the development of these Protestant settlements, the [[Maliseet]], [[Mi'kmaq people|Mi'kmaq]] and [[Acadians]] conducted numerous raids on the settlements, such as the [[Raid on Dartmouth (1751)]]. During these raids, the French military paid the Mi'kmaq for the British [[scalping|scalps they acquired]]. (In response, the British military paid [[United States Army Rangers|Rangers]] for the scalps of Mi'kmaq and Maliseet.) ||| Historical context ||| ||| +0 Reduction of the French fortresses in 1815 ||| Battle of Waterloo ||| After the defeat of Napoleon at the [[Battle of Waterloo]] and the advance on Paris by the Coalition armies during the months of June and July 1815, although they besieged and took some towns and fortresses as they advance, they bypassed many of them and detached forces to observe and reduce them. The last of the French fortresses did not capitulate until September of that year. ||| ||| ||| +0 Revolución Libertadora ||| Battle of Caseros ||| On September 23, General Lonardi assumed the presidency and gave a speech from the balcony of the [[Casa Rosada]], saying that there would be 'neither victors nor vanquished' (''ni vencedores ni vencidos'', replaying a phrase uttered by [[Justo José de Urquiza|Urquiza]] when he was victorious over [[Juan Manuel de Rosas|Rosas]] at the [[Battle of Caseros]]). General Lonardi promised that the [[ad interim|interim]] administration would end as soon as the country was 'reorganized'. His conciliatory tone earned him the opposition of hard-liners, and in November an internal coup deposed Lonardi and placed General Aramburu in the presidency. ||| Revolutionary actions ||| ||| +0 Rif Dimashq clashes (November 2011–March 2012) ||| 18 July 2012 Damascus bombing ||| On 18 July 2012, a [[18 July 2012 Damascus bombing|bombing]] target the National security headquarters with Assad's most senior generals, known collectivley as the 'crisis cell', were meeting. 4 were killed; Defense minister [[Dawoud Rajiha]], Deputy head of armed forces [[Assef Shawkat]], General [[Hasan Turkmani]] and National security chief [[Hisham Ikhtiyar]]. ||| Aftermath ||| July 2012 ||| +0 Russian Revolution ||| Kronstadt rebellion ||| Soviet membership was initially freely elected, but many members of the [[Socialist-Revolutionary Party]], anarchists, and other leftists created opposition to the Bolsheviks through the soviets themselves. When it became clear that the Bolsheviks had little support outside of the industrialized areas of Saint Petersburg and Moscow, they simply barred non-Bolsheviks from membership in the soviets. {{citation needed|date=June 2013}} Not surprisingly, this caused mass domestic tension with many individuals who called for another series of political reform, revolting, and calling for 'a third Russian revolution,' a movement that received a significant amount of support. The most notable instances of this anti-Bolshevik mentality were expressed in the [[Tambov rebellion]], 1919–1921, and the [[Kronstadt rebellion]] in March 1921. These movements, which made a wide range of demands and lacked effective coordination, were eventually defeated along with the White Army during the [[Russian Civil War|Civil War]]. ||| October Revolution ||| ||| +0 Sabra and Shatila massacre ||| Damour massacre ||| According to [[Alain Menargues]], the direct perpetrators of the killings were the '[[Young men (Lebanon)|Young Men]]', a gang recruited by [[Elie Hobeika]], a prominent figure in the Phalanges, the [[Lebanese Forces]] intelligence chief and liaison officer with [[Mossad]], from men who had been expelled from the Lebanese Forces for insubordination or criminal activities.{{sfn|Menargues|2004|loc=Du coup d'état de Béchir Gémayel aux massacres des camps palestiniens, final chapter}} The killings are widely believed to have taken place under Hobeika's direct orders. Hobeika's family and fiancée had been murdered by Palestinian militiamen, and their Lebanese allies, at the [[Damour massacre]] of 1976, ||| ||| ||| +0 Salamaua–Lae campaign ||| Kokoda Track campaign ||| During 1942, the Japanese established major bases on the north coast of [[New Guinea]], in the large town of Lae, and in Salamaua, a small administrative town and port, 35 kilometres (22 mi) to the south. Salamaua was a staging post for [[Operation Mo|attacks on Port Moresby]], such as the [[Kokoda Track campaign]]. When the attacks failed, the Japanese turned the port into a major supply base. ||| Background ||| ||| +0 Salamaua–Lae campaign ||| Landing at Nadzab ||| The codename for the main operations to take Lae was '''Operation Postern'''. This was a classic [[pincer movement]], involving an [[landing at Lae|amphibious assault east of the town]], and an [[Landing at Nadzab|airborne landing near Nadzab]], 50 kilometres (30 mi) to the west. ||| Operation Postern ||| ||| +0 Second Anglo-Dutch War ||| War of Devolution ||| Early 1667, the financial position of the English crown became desperate. The kingdom simply lacked the money to make the entire fleet seaworthy, so it was decided in February that the heavy ships would remain laid up at [[Chatham, England|Chatham]]. Clarendon explained to Charles that he had but two options: either to make very substantial concessions to Parliament or to begin peace talks with the Dutch under their conditions. In March these were indeed started at [[Breda]], in the southern [[Generality Lands]], as negotiations in the provinces themselves would by the conventions of the day be considered a sign of inferiority for the Dutch. Charles, however, did not negotiate in good faith. He had already decided to turn to a third option: becoming a secret ally of France to obtain money and undermine the Dutch position. {{rp |76}} On 18 April he concluded his first secret treaty with Louis, stipulating that England would support a French conquest of the Spanish Netherlands. In May the French invaded, starting the [[War of Devolution]]; Charles hoped, by procrastinating the talks at Breda, to gain enough time to ready his fleet in order to obtain concessions from the Dutch, using the French advance as leverage. ||| The War ||| 1667: Medway ||| +0 Second Battle of Artois ||| Second Battle of Ypres ||| The battle was fought during the German offensive of the [[Second Battle of Ypres]] {{nowrap|(21 April – 25 May),}} which the Germans ended to reinforce the Artois front. The initial French attack broke through and captured Vimy Ridge but reserve units were not able to reinforce the troops on the ridge, before German counter-attacks forced them back about half-way to their jumping-off points. The British attack at Aubers Ridge was a costly failure and two German divisions in reserve were diverted south against the Tenth Army. The British offensive was suspended until 15 May, when the Battle of Festubert began and French attacks from {{nowrap|15 May – 15 June}} was concentrated on the flanks, to create jumping-off points for a second general offensive, which began on 16 June. ||| ||| ||| +0 Second Battle of El Alamein ||| Battle of Gazala ||| By 12 July 1942, after its success at the [[Battle of Gazala]], the [[Panzer Army Africa]] (''Panzerarmee Afrika''), composed of German and Italian infantry and mechanised units under Field Marshal [[Erwin Rommel]], had struck deep into Egypt, threatening the [[British Empire]]'s control of the Suez Canal and Palestine. [[Claude Auchinleck|General Auchinleck]] withdrew the Eighth Army to within {{convert|80|km|abbr=on}} of [[Alexandria]] to a point where the [[Qattara Depression]] came to within {{convert|64|km|abbr=on}} of El Alamein on the coast. This gave the defenders a relatively short front to defend and provided secure flanks, because tanks could not traverse the Depression. Here, in early July, the Axis advance was halted in the [[First Battle of El Alamein]]. ||| Background ||| ||| +0 Second Battle of El Alamein ||| Operation Torch ||| The '''Second Battle of El Alamein''' (23 October – 11 November 1942) took place near the [[Egypt]]ian railway halt of [[El Alamein]]. With the Allies victorious, it marked a major turning point in the [[Western Desert Campaign]] of the Second World War. It followed the [[First Battle of El Alamein]], which had stalled the [[Axis Powers|Axis]] advance into Egypt, after which, in August 1942, [[Lieutenant General (United Kingdom)|Lieutenant-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] had taken command of the British [[Eighth Army (United Kingdom)|Eighth Army]] from General [[Claude Auchinleck]]. This victory turned the tide in the [[North African Campaign]] and ended the Axis threat to [[Egypt]], the [[Suez Canal]], and of gaining access to the Middle Eastern and Persian oil fields via North Africa. From a psychological perspective, Second El Alamein revived the morale of the Allies, being the first major offensive against the Axis since the start of the European war in 1939 in which the Western Allies had achieved a decisive victory. The battle coincided with the Allied invasion of [[French North Africa]] in [[Operation Torch]], which started 8 November. ||| ||| ||| +0 Second Battle of Kehl (1796) ||| Siege of Kehl (1703) ||| In the 1790s, the Rhine was wild, unpredictable, and difficult to cross. Its channels and tributaries created islands of trees and vegetation that were alternately submerged by floods or exposed during the dry seasons. A complex of bridges, gates, fortifications and [[Barrage (dam)|barrage dam]]s linked Kehl with Strasbourg. These had been constructed by the fortress architect [[Sébastien Le Prestre de Vauban|Sébastien le Préstre de Vauban]] in the seventeenth century. The crossings had been contested before: in 1678 during the French-Dutch war, in [[Siege of Kehl (1703)|1703]] during the [[War of the Spanish Succession]], in [[Siege of Kehl (1733)|1733]] during the [[War of the Polish Succession]], and earlier in [[Battle of Kehl (1796)|Battle of Kehl]], when the French crossed into the German states on 23-24 June. Critical to French success would be the army's ability to cross the Rhine at will. The crossings at [[Hüningen]], near the Swiss city of [[Basle|Basel]], and at Kehl, offered access to most of southwestern Germany; from there, French armies could sweep north, south, or east, depending on their military goal. ||| ||| ||| +0 Second Battle of Tripoli Harbor ||| American Revolutionary War ||| On the night of 16 February 1804, a small contingent of U.S. Marines in a captured Tripolitan [[ketch]] rechristened {{USS|Intrepid|1798|6}} and led by Lieutenant [[Stephen Decatur, Jr.]] were able to deceive the guards on board ''Philadelphia'' and float close enough to board the captured ship. Decatur's men stormed the vessel and decimated the Tripolitan sailors standing guard. To complete the daring raid, Decatur's party set fire to ''Philadelphia'', denying her use to the enemy. Decatur's bravery in action made him one of the first American military heroes since the [[American Revolutionary War|Revolutionary War]]. The British Admiral [[Horatio Nelson]], himself known as a man of action and bravery, is said to have called this 'the most bold and daring act of the age. ' ||| Background ||| ||| +0 Second Italo-Ethiopian War ||| Mukden Incident ||| Politically, the war is best remembered for exposing the inherent weakness of the [[League of Nations]]. Like the [[Mukden Incident]] in 1931 (the [[Empire of Japan|Japanese]] annexation of three [[Republic of China (1912–49)|Chinese]] provinces), the [[Abyssinia Crisis]] in 1935 is often seen as a clear demonstration of the ineffectiveness of the League. Both Italy and Ethiopia were member nations and yet the League was unable to control Italy or to protect Ethiopia when Italy clearly violated the League's own [[Article X of the Covenant of the League of Nations|Article X]]. ||| ||| ||| +0 Second Siege of Zaragoza ||| Battle of Pancorbo (1808) ||| The Spanish at this point missed their best chance to defeat the French. They did not appoint a Supreme Commander, so all the armies continued to operate independently. The main armies consisted of those of [[Joaquín Blake y Joyes|General Blake]] on the north coast, [[Francisco Javier Castaños, 1st Duke of Bailén|General Castaños]] around [[Tudela, Navarre|Tudela]] and [[José Rebolledo de Palafox, 1st Duke of Saragossa|General Palafox]] around [[Saragossa]]. Blake was the most active, but he was defeated at [[Battle of Pancorbo (1808)|Zornoza]] on 31 October 1808. ||| Historical context ||| ||| +0 Second Sino-Japanese War ||| Operation Chahar ||| * {{Flagdeco|Empire of Japan}} [[Operation Chahar|Chahar]] August 1937 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +0 Second Sino-Japanese War ||| The Hump ||| Chiang Kai-shek continued to receive supplies from the United States. However, in contrast to the Arctic supply route to the Soviet Union which stayed open through most of the war, sea routes to China and the [[Yunnan–Vietnam Railway]] had been closed since 1940. Therefore, between the [[Japanese conquest of Burma|closing of the Burma Road]] in 1942 and its re-opening as the [[Ledo Road]] in 1945, foreign aid was largely limited to what could be flown in over '[[The Hump]]'. On 16 April 1942, in Burma 7,000 British soldiers were encircled by the Japanese 33rd Division during the [[Battle of Yenangyaung]] and rescued by the Chinese 38th Division. ||| Course of the war ||| Entrance of the Western Allies ||| +0 Shanghai Campaign ||| World War II ||| With six million population, [[Shanghai]] was the largest city in [[Republic of China (1912–49)|China]] in 1949 and provided around a third of the total [[GDP]] of China by that time. Both the communists and the nationalists believed that World War III was a real possibility and this perception influenced the strategic decisions of both sides. The nationalists who defended the city, had hoped that by using the resources of the wealthiest city of China, they would last until World War III when foreign intervention would occur. With foreign intervention, not only they would be able to defend the city, but they could counterattack and take China back from the enemy. If the city could not last until World War III, the nationalist would withdraw via sea and transfer the wealth with them, after destroying the city completely, just like the scorched-earth policy used against the Japanese invaders in many part of the China during [[World War II]]. Although the truthfulness of this perception of the nationalists remained in question, the enemy certainly believed that there was a possibility, as the nationalist propaganda had claimed, and thus was determined not to let it happen by taking the city as early as possible. ||| Prelude ||| ||| +0 Sherman's March to the Sea ||| Battle of Waynesboro, Georgia ||| Several small actions followed. Wheeler and some infantry struck in a rearguard action at Ball's Ferry on November 24 and November 25. While Howard's wing was delayed near Ball's Bluff, the 1st Alabama Cavalry (a Federal regiment) engaged Confederate pickets. Overnight, Union engineers constructed a bridge {{convert|2|mi|km}} away from the bluff across the [[Oconee River]], and 200 soldiers crossed to [[Flanking maneuver|flank]] the Confederate position. On November 25–26 at Sandersville, Wheeler struck at Slocum's advance guard. Kilpatrick was ordered to make a feint toward Augusta before destroying the railroad bridge at Brier Creek and moving to liberate the Camp Lawton [[prisoner of war camp]] at [[Millen, Georgia|Millen]]. Kilpatrick slipped by the defensive line that Wheeler had placed near Brier Creek, but on the night of November 26 Wheeler attacked and drove the 8th Indiana and 2nd Kentucky Cavalry away from their camps at Sylvan Grove. Kilpatrick abandoned his plans to destroy the railroad bridge and he also learned that the prisoners had been moved from Camp Lawton, so he rejoined the army at [[Louisville, Georgia|Louisville]]. At the [[Battle of Buck Head Creek]] on November 28, Kilpatrick was surprised and nearly captured, but the [[5th Ohio Cavalry]] halted Wheeler's advance, and Wheeler was later stopped decisively by Union barricades at Reynolds's Plantation. On December 4, Kilpatrick's cavalry routed Wheeler's at the [[Battle of Waynesboro, Georgia|Battle of Waynesboro]]. ||| March ||| ||| +0 Sherman's March to the Sea ||| Siege of Petersburg ||| The second objective of the campaign was more traditional. Grant's armies in Virginia continued in a stalemate against [[Robert E. Lee]]'s army, besieged in [[Siege of Petersburg|Petersburg, Virginia]]. By moving in Lee's rear and performing a massive [[turning movement]] against him, Sherman could possibly increase pressure on Lee, allowing Grant the opportunity to break through, or at least keep Southern reinforcements away from Virginia. ||| Background and objectives ||| ||| +0 Siege of Ascalon ||| Battle of Ascalon ||| Ascalon was [[Fatimid]] Egypt's greatest and most important frontier fortress. The [[Battle of Ascalon]] was fought outside the city in 1099 in the aftermath of the [[First Crusade]] and the [[Siege of Jerusalem (1099)|fall of Jerusalem]] to the Crusaders. Although the crusaders were victorious, internal disputes in their camp allowed Ascalon to remain in Egyptian hands. Thereafter, the Fatimids were able to launch raids into the kingdom every year from this fortress, and the southern border of the crusader kingdom remained unstable. If this fortress fell, then the gateway to Egypt would be open. Therefore, the Fatimid garrison in Ascalon remained strong and large. ||| Background ||| ||| +0 Siege of Belgrade (1717) ||| Siege of Belgrade (1688) ||| After the success of his 1716 campaign, Eugene of Savoy had one main objective: the conquest of the fortress of [[Belgrade]]. The city is located exactly at the confluence of the [[Sava]] river and the [[Danube]]. The fortress, located on an arm of the Sava, can be attacked from the south. The strategic value of this position lies in its walls which can resist both attacks from the south-east and those from the north-west and this makes it a key to the [[Balkan]]s for both the Austrians and the [[Ottoman Empire]]. In 1688, Belgrade was wrested from the Ottomans after a [[Siege of Belgrade (1688)|siege]], but two years later, the [[Ottoman Empire]] recaptured it. Prince Eugene was seriously wounded during the first siege and now strongly supported the need for a river flotilla on the Danube as being essential for the conquest of Belgrade. The mission of the fleet was to provide assistance and support to the imperial army. Eugene managed to enlist the Emperor's support, and the crew for the ships was hastily recruited in the Netherlands. ||| Prologue ||| ||| +0 Siege of Ciudad Rodrigo (1810) ||| Siege of Almeida (1810) ||| French troops advanced, following up the retreating British fought the [[Battle of the Côa]] soon after. The [[Siege of Almeida (1810)|Siege of Almeida]] was started and ended suddenly with a massive explosion of the fortress magazine on 26 August. With all obstacles cleared from their path, the French could march on [[Lisbon]] in strength. ||| Aftermath ||| ||| +0 Siege of Corinth ||| Battle of Shiloh ||| Following the [[Union Army]] victory at the [[Battle of Shiloh]], [[Major general (United States)|Maj. Gen.]] [[Henry Halleck]] amassed three Union armies &mdash;the [[Army of the Tennessee]], the [[Army of the Ohio]], and the [[Army of the Mississippi]]&mdash; for an advance on the vital rail center of [[Corinth, Mississippi]]. Made cautious by the staggering losses at Shiloh, Halleck embarked on a tedious campaign of offensive entrenchment, fortifying after each advance. By May 25, 1862, after moving five miles in three weeks, Halleck was in position to lay siege to the town. Confederate morale was low and Beauregard was outnumbered two to one. The water was bad. Typhoid and dysentery had felled thousands of his men. At a council of war, the Confederate officers concluded that they could not hold the railroad crossover. Sickness had claimed the lives of almost as many men as the Confederacy had lost at Shiloh. ||| Background ||| ||| +0 Siege of Detroit ||| Battle of the Thames ||| American attempts to regain Detroit were continually thwarted by poor communications and the difficulties of maintaining militia contingents in the field, until the Americans won a naval victory at the [[Battle of Lake Erie]] on 10 September 1813. This isolated the British at Amherstburg and Detroit from their supplies and forced them to retreat. Hull's successor, Major General [[William Henry Harrison]], pursued the retreating British and their native allies and defeated them at the [[Battle of the Thames]], where Tecumseh was killed. ||| Aftermath ||| ||| +0 Siege of Fort Erie ||| Capture of Fort Erie ||| The Americans under Major General [[Jacob Brown]] had crossed the [[Niagara River]] and [[Capture of Fort Erie|captured Fort Erie]] on 3 July 1814. After defeating a British force at the [[Battle of Chippawa]] they advanced north but the British reinforced their troops in the Niagara peninsula. On 25 July, the bloody but indecisive [[Battle of Lundy's Lane]] was fought, during which Brown was severely wounded. Following the battle, the outnumbered American troops, now under the command of Brigadier General [[Eleazer Wheelock Ripley]], withdrew to Fort Erie. Ripley advocated abandoning the Fort and retreating across the Niagara but Brown overruled him and summoned Brigadier General [[Edmund P. Gaines]] from [[Sackett's Harbor]] to assume command. ||| Background ||| ||| +0 Siege of Fort St. Jean ||| Invasion of Canada (1775) ||| The [[Invasion of Canada (1775)|invasion of Quebec]] began when about 1500 men, then under the command of General [[Philip Schuyler]], arrived at the undefended [[Île-aux-Noix]] in the Richelieu River on September 4, 1775. On September 6, the Americans began making forays toward Fort St. Jean, only {{convert|10|mi|km|abbr =on}} away. ||| Background ||| Continental Army preparations ||| +0 Siege of Genoa (1746) ||| Siege of Genoa (1747) ||| The Austrians mistreated many of the inhabitants of Genoa, causing deep resentment. Following the departure of large numbers of the Austrians for an Allied campaign to invade southern France, the city rose on 7 December 1746 driving out the remainder of the garrison. An [[Siege of Genoa (1747)|attempt to retake the city]] the following year failed. ||| Aftermath ||| ||| +0 Siege of Godesberg ||| Cuius regio, eius religio ||| At its most fundamental, it was a local feud between two competing dynastic interests—the [[Seneschal]]s (''Truchsess'') of the [[House of Waldburg]] and the dukes of the House of Wittelsbach—that acquired religious overtones. The dispute had broad implications in the political, social, and dynastic balance of the [[Holy Roman Empire]]. It tested the principle of [[ecclesiastical reservation]] established in the religious [[Peace of Augsburg]] (1555). The 1555 agreement settled religious problems in the Empire with the principle ''[[Cuius regio, eius religio]]'': the subjects of a secular prince followed the religion of their sovereign. Ecclesiastical reservation excluded the territories of the imperial prelates (bishops, archbishops, abbots or abbesses) from ''cuius regio, eius religio''. In an ecclesiastical territory, if the prelate changed his religion, his subjects did not have to do so. Instead, the prelate was expected to resign from his post. Problematically, the 1555 agreement did not specify this detail. ||| Background ||| ||| +0 Siege of Hull (1643) ||| Battle of Adwalton Moor ||| After the victory over the army of [[Parliament of England|Parliament]] under [[Ferdinando Fairfax, 2nd Lord Fairfax of Cameron|Lord Fairfax]] and Sir [[Thomas Fairfax, 3rd Lord Fairfax of Cameron|Thomas Fairfax]] at the [[Battle of Adwalton Moor]] on 30 June 1643, the [[William Cavendish, 1st Duke of Newcastle-upon-Tyne|Earl of Newcastle]] advanced with the main northern [[Cavalier|Royalist]] army into [[Lincolnshire]]. At this point in the civil war, Royalist fortunes were high, and Newcastle's advance joined [[Ralph Hopton|Lord Hopton]]'s and [[Charles I of England|King Charles]]'s armies in a three-pronged advance on London. ||| Prelude ||| Lincolnshire Campaign ||| +0 Siege of Hüningen (1796–97) ||| Battle of Altenkirchen ||| Wartensleben and Charles united first, and the tide turned against the French. With 25,000 of his best troops, the Archduke crossed to the north bank of the [[Danube]] at [[Regensburg]] and moved north to join his colleague Wartensleben. The defeat of Jourdan's army at [[Battle of Amberg|Amberg]], [[Battle of Würzburg|Würzburg]] and [[Battle of Altenkirchen|Altenkirchen]] allowed Charles to move more troops to the south. The next contact occurred on 19 October at [[Battle of Emmendingen|Emmendingen]], in the [[Elz (Rhine)|Elz]] valley which winds through the Black Forest. The section of the valley involved in the battle runs southwest through the mountains from Elzach, through Bleibach and Waldkirch. Just to the southwest of Waldkirch, the river emerges from the mountains and flows northwest towards the Rhine, with the Black Forest to its right. This section of the river passes through Emmendingen before it reaches [[Riegel am Kaiserstuhl|Riegel]]. Riegel sits in a narrow gap between the Black Forest and an isolated outcropping of volcanic hills known as the [[Kaiserstuhl (Baden-Württemberg)|Kaiserstuhl]]. Here the archduke split his force into four columns. ||| Military situation in early 1796 ||| Preliminaries to the siege ||| +0 Siege of Jerusalem (1187) ||| Siege of Jerusalem (1099) ||| On Balian's orders the Crusaders surrendered the city to Saladin's army on October 2. The take-over of the city was relatively peaceful especially in contrast to the Crusader [[Siege of Jerusalem (1099)|siege of the city]] in 1099. Balian paid 30,000 dinars for freeing 7000 of those unable to pay from the treasury of the city. The large golden [[Christian cross]] that had been placed over the [[Dome of the Rock]] by the Crusaders was pulled down and all Muslim prisoners of war taken by the Crusaders were released by Saladin who according to the [[Kurds|Kurdish]] scholar and historian [[Baha ad-Din ibn Shaddad]], numbered close to 3000. Saladin allowed many of the noble women of the city to leave without paying any ransom. For example, a [[Byzantine]] queen living a monastic life in the city was allowed to leave the city with her retinue and associates as also [[Sibylla, Queen of Jerusalem|Sibylla]], the queen of Jerusalem and wife of the captured King [[Guy of Lusignan|Guy]]. Saladin also granted her safe passage to visit her captive husband in [[Nablus]]. The Native Christians were allowed to remain in the city while those of Crusader origin were allowed to leave Jerusalem for other lands along with their goods through a safe passage via [[Akko]] by paying a ransom of 10 dinars. The wealthy including the [[Latin patriarch of Jerusalem]], [[Patriarch Heraclius of Jerusalem|Heraclius]] left with treasure-laden wagons and relics from the [[Church of the Holy Sepulchre]]. The Crusaders took the ornaments and treasures of their churches with them. The wealthy and the Crusaders didn't bother to ransom the poor who were unable to pay leaving them to be ransomed into slavery. Saladin's brother, [[Al-Adil]] was moved by the sight and asked Saladin for 1000 of them as reward of his services. Saladin granted his wish and Al-Adil immediately released them all. Heraclius upon seeing asked Saladin for some slaves to liberate. He was granted 700 while Balian was granted 500 and all of them were freed by them. All the aged people who could not pay the ransom were freed by orders of Saladin and allowed to leave the city. He then proceeded to free 1000 more captives upon request of Muzaffar al-Din Ibn Ali Kuchuk who claimed they were from his hometown of [[Urfa]]. In order to control the departing population he ordered the gates of the city to be closed. At each gate of the city a commander was placed who checked the movement of the Crusaders and made sure only those who paid the ransom left the city. The grand masters of the [[Templars]] and [[Hospitallers]] were approached to donate money for the release of the poor Crusaders. However they refused and a riot almost erupted after which they were forced to donate the money. Saladin then assigned some of his officers the job to ensure safe arrival of the Crusaders in Christian lands. 15000 of those who could not pay the ransom were ransomed into slavery. According to [[Imad ad-Din al-Isfahani]], 7000 of them were men and 8000 were women and children. Amazed by the amount of treasure carried away by the Crusaders, he reported to Saladin that the value of the whole treasure could not be less than 200,000 dinars. ||| Aftermath ||| ||| +0 Siege of Kehl (1796–97) ||| Battle of Schliengen ||| Throughout the summer of 1796, the French and the Austrians had chased each other back and forth across the south German states. By October, the Austrian force, under the command of [[Archduke Charles, Duke of Teschen|Archduke Charles]], had pushed the French back to the Rhine. With the conclusion of the [[Battle of Schliengen]] on 24 October, the French army withdrew south and west toward the Rhine. The French commander, [[Jean-Victor-Marie Moreau|Jean-Victor Moreau]], offered an armistice that the archduke was inclined to accept. He wanted to secure the Rhine crossings so he could send troops to northern Italy to relieve [[Dagobert Sigmund von Wurmser]] at besieged [[Siege of Mantua (1796–1797)|Mantua]]; an armistice with Moreau would allow him to do that. However, his brother, [[Francis II, Holy Roman Emperor|Francis II]], the Holy Roman Emperor, and the civilian military advisers of the [[Aulic Council]] categorically refused such an armistice, forcing Charles to order simultaneous sieges at [[Siege of Hüningen (1796–97)|Hüningen]] and Kehl. These tied his army to the Rhine for most of the winter. ||| ||| ||| +0 Siege of Kolberg (1807) ||| American Revolutionary War ||| Because of the delay in the French advance, Napoleon replaced Teulié as the commander of the siege forces with division general [[Louis Henri Loison]]; Frederick William III replaced Lucadou as the commander of the fortress with major [[August Neidhardt von Gneisenau]] and out of considerations for an envisioned British landfall at Kolberg - he feared that a French-born commander might irritate his British supporters, while on the other hand Gneisenau had been in British service during the [[American Revolutionary War]]. ||| Siege ||| Mid-March to April ||| +0 Siege of Kolberg (1807) ||| Siege of Stralsund (1807) ||| The French forces commanded by Teuliè, composed primarily of troops from [[Kingdom of Italy (1861–1946)|Italy]], succeeded in encircling Kolberg by mid-March. [[Napoleon Bonaparte|Napoleon]] put the siege force under the command of [[Louis Henri Loison|Loison]], [[Frederick William III of Prussia|Frederick William III]] entrusted [[August Neidhardt von Gneisenau|Gneisenau]] with the defense. In early April, the siege forces were for a short time commanded by [[Edouard Mortier|Mortier]], who had marched a large force from [[Siege of Stralsund (1807)|besieged Swedish Stralsund]] to Kolberg but was ordered to return when Stralsund's defenders gained ground. Other reinforcements came from states of the [[Confederation of the Rhine]] ([[Kingdom of Württemberg]], Saxon duchies and the [[Duchy of Nassau]]), the [[Kingdom of Holland]], and France. ||| ||| ||| +0 Siege of Ladysmith ||| Battle of Colenso ||| [[Louis Botha]] commanded the Boer detachment which first raided Southern Natal, and then dug in north of the Tugela to hold off the relief force. On 15 December, the first relief attempt was defeated at the [[Battle of Colenso]]. Temporarily unnerved, the relief force commander, General [[Redvers Henry Buller]], suggested that White either break out or destroy his stores and ammunition and surrender. White could not break out because his horses and draught animals were weak from lack of grazing and forage, but also refused to surrender. ||| Siege ||| ||| +0 Siege of Louisbourg (1745) ||| Raid on Canso ||| New Englanders' paranoia increased after a small French force sailed from Louisbourg in the summer of 1744 to the nearby British fishing port of [[Canso, Nova Scotia|Canso]], [[Raid on Canso|attacking a small fort]] on [[Grassy Island, Nova Scotia|Grassy Island]] and burning it to the ground. This port was used by the New England fishing fleet as it was the closest mainland North American British port to the fishing grounds; however, the Canso Islands (including Grassy Island) were contested by both Britain and France. ||| Prelude ||| ||| +0 Siege of Orléans ||| Battle of Patay ||| The [[Loire Campaign]] began a couple of weeks later, after a period of rest and reinforcement. Volunteers of men and supplies swelled the French army, eager to serve under Joan of Arc's banner. Even the ostracized constable [[Arthur de Richemont]] was eventually permitted to join the campaign. After a series of brief sieges and battles at [[Battle of Jargeau|Jargeau]] (June 12), [[Battle of Meung-sur-Loire|Meung]] (June 15) and [[Battle of Beaugency (1429)|Beaugency]] (June 17), the Loire was back in French hands. An English reinforcement army rushing from Paris under John Talbot was defeated at the [[Battle of Patay]] shortly after (June 18), the first significant field victory for French arms in years. The English commanders, the Earl of Suffolk and Lord Talbot, were taken prisoner in this campaign. Only thereafter did the French feel safe enough to accede to Joan's request for a march on Rheims. ||| Aftermath ||| ||| +0 Siege of Petersburg ||| Battle of the Wilderness ||| On May 4, Grant and Meade's Army of the Potomac crossed the [[Rapidan River]] and entered the area known as the Wilderness of [[Spotsylvania County, Virginia|Spotsylvania]], beginning the six-week [[Overland Campaign]]. At the bloody but tactically inconclusive [[Battle of the Wilderness]] (May 5–7) and [[Battle of Spotsylvania Court House]] (May 8–21), Grant failed to destroy Lee's army but, unlike his predecessors, did not retreat after the battles; he repeatedly moved his army leftward to the southeast in a campaign that kept Lee on the defensive and moved ever closer to Richmond. Grant spent the remainder of May maneuvering and fighting minor battles with the Confederate army as he attempted to turn Lee's flank and lure him into the open. Grant knew that his larger army and base of manpower in the North could sustain a war of attrition better than Lee and the Confederacy could. This theory was tested at the [[Battle of Cold Harbor]] (May 31 – June 12) when Grant's army once again came into contact with Lee's near [[Mechanicsville, Virginia|Mechanicsville]]. He chose to engage Lee's army directly, by ordering a frontal assault on the Confederate fortified positions on June 3. This attack was repulsed with heavy losses. Cold Harbor was a battle that Grant regretted more than any other and Northern newspapers thereafter frequently referred to him as a 'butcher'. Although Grant suffered high losses during the campaign—approximately 50,000 casualties, or 41%—Lee lost even higher percentages of his men—approximately 32,000, or 46%—losses that could not be replaced. ||| Background ||| ||| +0 Siege of Philippsburg (1734) ||| Siege of Kehl (1733) ||| In the fall of 1733 the French army crossed the Rhine and [[Siege of Kehl (1733)|besieged Kehl]], near [[Strasbourg]]. Although they captured and occupied the fortress, most of the army was withdrawn to the west bank of the Rhine due to the onset of winter in December. During the winter, Austrian field marshal [[Prince Eugene of Savoy]] began gathering forces of the empire at a camp near [[Heilbronn]] to oppose the French. By the spring of 1734 these forces were still significantly smaller than those of France, which had nearly 70,000 men in the field. ||| Background ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of Eupatoria ||| The '''Siege of Sevastopol''' lasted from September 1854 until September 1855, during the [[Crimean War]]. The allies ([[Second French Empire|French]], [[Ottoman Empire|Ottoman]], and [[United Kingdom of Great Britain and Ireland|British]]) landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a triumphal march to Sevastopol, the capital of the [[Crimea]], with 50,000 men. The {{convert|56|km|adj=on}} traverse took a year of fighting against the Russians. Major battles along the way were [[Battle of Alma|Alma]] (September 1854), [[Battle of Balaclava|Balaklava]] (October 1854), [[Battle of Inkerman|Inkerman]] (November 1854), [[Battle of the Chernaya|Tchernaya]] (August 1855), [[Battle of the Great Redan|Redan]] (September 1855), and, finally, [[Sevastopol]] (September 1855). During the siege, the allied navy undertook six bombardments of the capital, on 17 October 1854; and on 9 April, 6 June, 17 June, 17 August, and 5 September 1855. ||| ||| ||| +0 Siege of Sevastopol (1941–42) ||| Battle of Stalingrad ||| Although a German success in the end, the operation had taken much longer than the Germans had imagined. [[Operation Blau]], [[Army Group South]]'s advance towards [[Battle of Stalingrad|Stalingrad]] and the [[Caucasus]] was just beginning, and the German offensive would not have the 11th Army to support them. Instead of having the 11th Army to help it on its quest to capture Stalingrad, the [[6th Army (Wehrmacht)|German 6th Army]] under Paulus would be without crucial support that ultimately contributed to its defeat. ||| Aftermath ||| ||| +0 Siege of Tripoli ||| Battle of Nicopolis ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Fifth Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Turin ||| Battle of Castiglione (1706) ||| To the east, a French victory over a Hessian corps at [[Battle of Castiglione (1706)|Castiglione]] was not enough to regain initiative or to check the allied advance, and the French retreat from Turin effectively left the allies free to invade southern France. After the failed [[Battle of Toulon (1707)|Siege of Toulon]] in the following year, no significant military event took place on the Italian front until the [[Treaty of Utrecht]]. ||| Epilogue ||| ||| +0 Siege of Yorktown ||| Battle of the Chesapeake ||| The French and American armies united north of New York City during the summer of 1781. When word of de Grasse's decision arrived, the combined armies began moving south toward Virginia, engaging in tactics of deception to lead the British to believe a siege of New York was planned. De Grasse sailed from the West Indies and arrived at the Chesapeake Bay at the end of August, bringing additional troops and providing a naval blockade of Yorktown. He was transporting 500,000 silver pesos collected from the citizens of Havana, Cuba, to fund supplies for the siege and payroll for the Continental Army. In the beginning of September, he defeated a British fleet led by [[Thomas Graves, 1st Baron Graves|Sir Thomas Graves]] that came to relieve Cornwallis at the [[Battle of the Chesapeake]]. As a result of this victory, de Grasse blocked any escape by sea for Cornwallis. By late September Washington and Rochambeau arrived, and the army and naval forces completely surrounded Cornwallis. ||| ||| ||| +0 Siege of Yorktown ||| Yorktown campaign ||| The '''Siege of Yorktown''', also known as the '''Battle of Yorktown''', the '''Surrender at Yorktown''' or the '''German Battle''', ending on October 19, 1781 at [[Yorktown, Virginia]], was a decisive victory by a combined force of American [[Continental Army]] troops led by General [[George Washington]] and [[France in the American Revolutionary War|French Army troops]] led by the [[Jean-Baptiste Donatien de Vimeur, comte de Rochambeau|Comte de Rochambeau]] over a [[British Army]] commanded by British lord and Lieutenant General [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]]. The culmination of the [[Yorktown campaign]], the siege proved to be the last major land battle of the [[American Revolutionary War]] in the North American theater, as the surrender by Cornwallis, and the capture of both him and his army, prompted the British government to negotiate an end to the conflict. The battle boosted faltering American morale and revived French enthusiasm for the war, as well as undermining popular support for the conflict in Great Britain. ||| ||| ||| +0 Simko Shikak revolt (1918–22) ||| 1926 Shikak revolt ||| By 1926, Simko had regained control of his tribe and begun the [[1926 Shikak revolt|another rebellion]]. ||| History ||| Aftermath ||| +0 Sinai and Palestine Campaign ||| Battle of Megiddo (1918) ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Turkish War of Independence ||| The campaign was generally not well known or understood during the war. The English people thought of it as a minor operation, a waste of precious resources which would be better spent on the Western Front, while the peoples of India were more interested in the Mesopotamian campaign and the occupation of [[Baghdad]]. The long-lasting effect of this campaign was the [[Partitioning of the Ottoman Empire]], when France won the [[League of Nations mandate|mandate]] for [[French Mandate for Syria and the Lebanon|Syria and Lebanon]], while the British Empire won the mandates for [[British Mandate of Mesopotamia|Mesopotamia]] and [[British Mandate of Palestine|Palestine]]. The [[Turkey|Republic of Turkey]] came into existence in 1923 after the [[Turkish War of Independence]] ended the Ottoman Empire. The European mandates ended with the formation of the [[Iraq|Kingdom of Iraq]] in 1932, the [[Lebanon|Lebanese Republic]] in 1943, the [[Israel|State of Israel]] in 1948, the [[Jordan|Hashemite Kingdom of Transjordan]] in 1946, and the [[Syria|Syrian Arab Republic]] in 1946. ||| ||| ||| +0 South-East Asian theatre of World War II ||| Franco-Thai War ||| Japanese forces had invaded [[Japanese invasion of French Indochina|French Indochina]] in September 1940, as did [[Franco-Thai War|Thailand]] in January 1941. By December 1941, the area had been mostly 'pacified.' ||| Initial Japanese successes ||| French Indochina ||| +0 Soviet–Afghan War ||| 1982 Lebanon War ||| The international diplomatic response was severe, ranging from stern warnings from the UN to a [[1980 Summer Olympics boycott|US-led boycott]] of the [[1980 Summer Olympics]] in Moscow (in which Afghanistan competed). The intervention, along with other events, such as the [[Iranian revolution]] and the US hostage stand-off that accompanied it, the [[Iran–Iraq War]], the [[1982 Lebanon War]] and the escalating tensions between Pakistan and [[India]], contributed to the volatility of the Middle East and South Asian regions in the 1980s. ||| Impact ||| International reaction ||| +0 Spanish–American War ||| Virginius Affair ||| Revolts against Spanish rule had been occurring for some years in Cuba. There had been war scares before, as in the [[Virginius Affair]] in 1873. In the late 1890s, US public opinion was agitated by anti-Spanish propaganda led by journalists such as [[Joseph Pulitzer]] and [[William Randolph Hearst|William Hearst]] which used [[yellow journalism]] to criticize Spanish administration of Cuba. After the mysterious sinking of the [[US Navy]] battleship {{USS|Maine|ACR-1|2}} in [[Havana Harbor|Havana harbor]], political pressures from the [[History of the Democratic Party (United States)|Democratic Party]] and certain industrialists pushed the administration of [[History of the Republican Party (United States)|Republican]] President [[William McKinley]] into a war he had wished to avoid. ||| ||| ||| +0 Spring Offensive ||| Eastern Front (World War I) ||| The ''Kaiserschlacht'' offensives had yielded large territorial gains for the Germans, in First World War terms. However, victory was not achieved and the German armies were severely depleted, exhausted and in exposed positions. The territorial gains were in the form of salients which greatly increased the length of the line that would have to be defended when Allied reinforcements gave the Allies the initiative. In six months, the strength of the German army had fallen from 5.1 million fighting men to 4.2 million.{{sfn|Edmonds|1939|p=306}} By July, the German superiority of numbers on the Western Front had sunk to 207 divisions to 203 Allied, a negligible lead which would be reversed as more American troops arrived. Even worse, they lost most of their best-trained men: [[stormtrooper]] tactics had them leading the attacks. Even so, about a million German soldiers remained tied up [[Eastern Front (World War I)|in the east]] until the end of the war. ||| Aftermath ||| Analysis ||| +0 Strategic bombing during World War II ||| Bombing of Darwin ||| There were also air raids on [[Philippines]] and northern Australia ([[Bombing of Darwin (February 1942)|Bombing of Darwin]], 19 February 1942). The Imperial Japanese Navy Air Service and the Imperial Japanese Army Air Service used tactical bombing against ships, airfields, military positions, and military installations, as at the [[attack on Pearl Harbor]]. ||| Asia ||| Japanese bombing ||| +0 Swedish Intervention in the Winter War ||| Battle of Honkaniemi ||| The Swedish Intervention in the Winter War was a short-lived but successful attempt by the [[Swedish Volunteer Corps (Winter War)|Swedish Volunteer Corps]], along with other [[Nordic countries|Nordic]] volunteers, to prevent a Soviet invasion of Finland during the [[Winter War]]. The volunteers only engaged in a few skirmishes on ground and in the air, the only major battles they participated in being the battles of [[Battle of Salla (1939)|Salla]] and [[Battle of Honkaniemi|Honkaniemi]]. The term 'volunteers' have often been used to describe the Nordic military support for Finland in the Winter War, although involvement by the government of Sweden has been debated over time. Nevertheless, the Swedish military sent enormous amounts of aid to Finland, including: ||| ||| ||| +0 Task Force Faith ||| Battle of Chosin Reservoir ||| '''Task Force Faith''', also known as '''Task Force Maclean''' (and by its official designation, '''Regimental Combat Team 31''' (RCT-31)) or the '''Polar Bear Regiment''' ({{zh|s=北极熊团|p=Běi Jí Xíong Tuán}}), was a [[United States Army]] unit destroyed in fighting at the [[Battle of Chosin Reservoir]] during the [[Korean War]] between 27 November – 2 December 1950. It comprised primarily infantry, artillery, and tank units from the [[7th Infantry Division (United States)|7th Infantry Division]], numbering approximately 3,000 soldiers. Of these, about 600 were [[KATUSA]]s (Korean Augmentee To the U.S. Army). The name Task Force Faith was originally coined by a U.S. Army historian, however the unit was never known by this name. RCT-31, which consisted of the [[31st Infantry Regiment (United States)|31st Infantry Regiment]] and supporting units, had the 1/31 Infantry detached and the 1/32 Infantry (from the [[32nd Infantry Regiment (United States)|RCT-32]]) added, and the designation RCT-31 was never changed. ||| ||| ||| +0 Tehran Conference ||| Operation Barbarossa ||| As soon as the [[Operation Barbarossa|German-Soviet war]] broke out in June 1941, Churchill offered assistance to the Soviets, and an agreement to this effect was signed on 12 July 1941.<ref name='Service pp459–460'> ||| Prelude ||| ||| +0 Third Transjordan attack ||| Battle of Nablus ||| The '''Third Transjordan attack''' by [[Chaytor's Force]], part of the [[British Empire]]'s [[Egyptian Expeditionary Force]] (EEF), took place between 21 and 25 September 1918, against the [[Ottoman Empire]]'s [[Fourth Army (Ottoman Empire)|Fourth Army]] and other [[Yildirim Army Group]] units. These operations took place during the [[Battle of Nablus (1918)|Battle of Nablus]], part of the [[Battle of Megiddo (1918)|Battle of Megiddo]] which began on 19 September in the final months of the [[Sinai and Palestine Campaign]] of [[World War I]]. Fought on the right flank and subsidiary to the Battle of Nablus, the Third Transjordan attack began northwards, with the assault on Kh Fasail. The following day a section of Chaytor's Force, attacked and captured the Ottoman Empire's 53rd Division ([[Seventh Army (Ottoman Empire)|Seventh Army]]) on the main eastwards line of retreat out of the [[Judean Hills]] across the Jordan River. Retreating columns of the Yildirim Army Group were attacked during the [[Capture of Jisr ed Damieh|battle for the Jisr ed Damieh bridge]], and several fords to the south were also captured, closing this line of retreat. Leaving detachments to hold the captured bridge and fords, Chaytor's Force began their eastwards advance by attacking and capturing the Fourth Army garrison at Shunet Nimrin on their way to capture [[Salt, Jordan|Es Salt]] for a third time. With the Fourth Army's VIII Corps in retreat, Chaytor's Force continued their advance to attack and capture [[Amman]] on 25 September during the [[Second Battle of Amman]]. Several days later, to the south of Amman, the Fourth Army's II Corps which had garrisoned the southern [[Hejaz Railway]], surrendered to Chaytor's Force at Ziza, effectively ending military operations in the area. ||| ||| ||| +0 United States Army Air Forces in Okinawa ||| Operation Overlord ||| [[United States Army]] and [[United States Marine Corps]] ground forces landed on the island on 1 April 1945 at 08:30 am. The Battle of Okinawa lasted 83 days until 22 June, when the island was declared secured. The defense of the island was divided into three strong Japanese lines where hidden guns, machine guns and bunkers covered approaches and fields. Soldiers on the ground fought a grueling battle to occupy the island. The [[United States Navy]] and its support ships were larger in numbers than those at [[Operation Overlord|Normandy in June 1944]], and were attacked repeatedly by Japanese [[kamikaze]] aircraft, sinking and damaging a significant number of vessels. It was a battle in which more than 12,000 American and 100,000 Japanese soldiers lost their lives. ||| ||| ||| +0 Velika Kruša massacre ||| Kosovo War ||| The '''Velika Kruša massacre''' ({{lang-sq|Masakra e Krushës së Madhe}}, {{lang-sr|Masakr u Velikoj Kruši}}) near [[Orahovac]], [[Kosovo]], took place during the [[Kosovo War]] on the afternoon of 25 March 1999, the day after the [[NATO air campaign]] began. ||| ||| ||| +0 Vietnam War ||| Battle of France ||| In 1940, during World War II, the [[Battle of France|French were defeated by the Germans]]. The [[Vichy France|French State]] (commonly known as Vichy France) was established as a [[client state]] of [[Nazi Germany]]. The French colonial authorities, in French Indochina, sided with the Vichy regime. In September 1940, Japan [[Japanese invasion of French Indochina|invaded Indochina]]. Following the cessation of fighting and the beginning of the Japanese occupation, the French colonial authorities collaborated with the Japanese. The French continued to run affairs in Indochina, but ultimate power resided in the hands of the Japanese. ||| Background to 1949 ||| ||| +0 War in Afghanistan (2001–14) ||| Taliban insurgency ||| After evading coalition forces throughout mid-2002, Taliban remnants gradually regained confidence and prepared to launch the [[Taliban insurgency]] that Omar had promised. ||| An insurgency gains strength ||| ||| +0 War in the North ||| Huesca Offensive ||| The Republican government decided to send 50 aircraft to Bilbao and launched two offensives against [[Huesca Offensive|Huesca]] and [[Segovia Offensive|Segovia]] in order to stop the Nationalist advance, but both failed. On June 3, Mola died and was replaced by Davila. On June 12, the Nationalists started their assault of the [[Iron Belt]] and after heavy aerial and artillery bombings entered [[Battle of Bilbao|Bilbao]] on June 19. ||| Beginning of the campaign ||| ||| +0 War of Jenkins' Ear ||| Battle of Gully Hole Creek ||| In 1742, the Spanish launched an attempt to seize the British colony of [[Province of Georgia|Georgia]]. Manuel de Montiano commanded 2,000 troops, who were landed on [[St Simons Island]] off the coast. General Oglethorpe rallied the local forces and defeated the Spanish regulars at [[Battle of Bloody Marsh|Bloody Marsh]] and [[Battle of Gully Hole Creek|Gully Hole Creek]], forcing them to withdraw. Border clashes between the colonies of Florida and Georgia continued for the next few years, but neither Spain nor Britain undertook offensive operations on the North American mainland. ||| Conduct of the War ||| Invasion of Georgia ||| +0 War of the Sixth Coalition ||| Battle of Roncesvalles (1813) ||| The allies chased the retreating French, reaching the Pyrenees in early July. [[Marshal Soult]] was given command of the French forces and began a counter-offensive, dealing the allied generals two sharp defeats at the [[Battle of Maya]] and the [[Battle of Roncesvalles (1813)|Battle of Roncesvalles]]. Yet, he was put again onto the defensive by the [[British army]] and its [[Portuguese Army|Portuguese]] allies, lost momentum, and finally fled after the allied victory at the [[Battle of Sorauren]] (28 and 30 July). ||| Peninsular War ||| ||| +0 War of the Three Henrys ||| Battle of Coutras ||| For the first part of the war, the royalists and the Catholic League were uneasy allies against their common enemy, the Huguenots. Henry sent Joyeuse into the field against Navarre, while he himself intended to meet the approaching German and Swiss armies. At the [[Battle of Coutras]], Navarre defeated the royal army led by Joyeuse; the duke himself was slain at the battle. It was the first victory won by the Huguenots in the battlefield. For his part, Henry III successfully prevented the junction of the German and Swiss armies. The Swiss were his allies, and had come to invade France to free him from subjection; but Henry III insisted that their invasion was not in his favor, but against him, forcing them to return home. The Germans, led by Fabien I, Burgrave of Dohna, wanted to fight against the Duke of Guise, in order to win a victory like Coutras. He recruited some of the retreating Swiss, who had no scruple fighting against Guise. But at the [[Battle of Vimory]], Guise took the Germans by surprise, and routed them. ||| ||| ||| +0 Western Allied invasion of Germany ||| European theatre of World War II ||| The '''Western Allied invasion of Germany''' was conducted by the [[Allies of World War II|Western Allies]] in the final months of fighting in the [[European theatre of World War II|European theatre]] of [[World War II]]. The invasion started with the Western Allies crossing the [[River Rhine]] in March 1945 before fanning out and overrunning all of western Germany from the Baltic in the north to Austria in the south before the Germans surrendered on 8 May 1945. This is known as the 'Central Europe Campaign' in United States military histories. ||| ||| ||| +0 Western Front (World War II) ||| Battle of Dunkirk ||| In May 1940, the Germans launched the Battle of France. The Western Allies (primarily the French, Belgian and British land forces) soon collapsed under the onslaught of the so-called '''[[blitzkrieg]]''' strategy. The majority of the British and elements of the French forces escaped [[Battle of Dunkirk|at Dunkirk]]. With the fighting ended, the Germans began to consider ways of resolving the question of how to deal with Britain. If the British refused to agree to a peace treaty, one option was to [[Operation Sealion|invade]]. However, [[Nazi Germany]]'s ''[[Kriegsmarine]]'', had suffered serious losses in Norway, and in order to even consider an [[Amphibious warfare|amphibious landing]], Germany's Air Force (the Luftwaffe) had to first gain [[air superiority]] or [[air supremacy]]. ||| 1939–40: Axis victories ||| Battles for Luxembourg, the Netherlands, Belgium and France ||| +0 Western Front (World War II) ||| Battle of Passchendaele ||| Fighting on the Western front seemed to stabilize, and the Allied advance stalled in front of the [[Siegfried Line#Clashes on the Siegfried Line|Siegfried Line]] (''Westwall'') and the southern reaches of the Rhine. Starting in early September, the Americans began slow and bloody fighting through the [[Battle of Hurtgen Forest|Hurtgen Forest]] ('''[[Battle of Passchendaele|Passchendaele]] with tree bursts'''—[[Ernest Hemingway|Hemingway]]) to breach the Line. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Allied advance from Paris to the Rhine ||| +0 Western Front (World War II) ||| Battle of the Bulge ||| The Germans had been preparing a massive counter-attack in the West since the Allied breakout from Normandy. The plan called ''Wacht am Rhein ('Watch on the Rhine')'' was to attack through the Ardennes and swing North to Antwerp, splitting the American and British armies. The attack started on 16 December in what became known as the [[Battle of the Bulge]]. Defending the Ardennes were troops of the US First Army. Initial successes in bad weather, which gave them cover from the Allied air forces, resulted in a German penetration of over {{Convert|50|mi|km|disp=flip|abbr=on}} to within less than {{Convert|10|mi|km|disp=flip|abbr=on}} of the [[Meuse river|Meuse]]. Having been taken by surprise, the Allies regrouped and the Germans were stopped by a combined air and land counter-attack which eventually pushed them back to their starting points by 25 January 1945. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Winter counter-offensives ||| +0 Western Front (World War II) ||| Operation Market Garden ||| [[Field marshal (United Kingdom)|Field Marshal]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Law Montgomery]], commanding the Anglo-Canadian [[21st Army Group]], persuaded the Allied High Command to launch a bold attack, Operation ''[[Operation Market Garden|Market Garden]]'', which he hoped would get the Allies across the Rhine and create the narrow-front he favoured. [[Airborne forces|Airborne troops]] would fly in from the UK and take bridges over the main rivers of the German-occupied Netherlands in three main cities; [[Eindhoven]], [[Nijmegen]], and [[Arnhem]]. The [[XXX Corps (United Kingdom)|British XXX Corps]] would punch through the German lines along the Maas-Schelde Kanal and link up with the airborne troops of the [[101st Airborne Division|US 101st Airborne]] in Eindhoven, the [[82nd Airborne Division|US 82nd]] at Nijmegen and the [[1st Airborne Division (United Kingdom)|British 1st]] at Arnhem. If all went well XXX Corps would advance into Germany without any remaining major obstacles. XXX Corps was able to advance beyond six of the seven airborne-held bridges, but was unable to link up with the troops near the bridge over the Rhine at Arnhem. The result was the near-destruction of the 1st Airborne Division during the [[Battle of Arnhem]]. The offensive ended with Arnhem remaining in German hands and the Allies holding an extended salient from the Belgian border to the area between Nijmegen and Arnhem. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Operation Market Garden ||| +0 Western New Guinea campaign ||| New Guinea campaign ||| The '''Western New Guinea campaign''' was a series of actions in the [[New Guinea campaign]] of [[World War II]]. [[United States]] and [[Australia]]n forces assaulted [[Empire of Japan|Japanese]] bases and positions in the northwest coastal areas of [[Netherlands New Guinea]] and adjoining parts of the Australian [[Territory of New Guinea]]. The campaign began with [[Operations Reckless and Persecution]], which were [[amphibious landing]]s by the [[I Corps (United States)|U.S. I Corps]] at [[Jayapura|Hollandia]] and [[Aitape]] on 22 April 1944. Fighting in western [[New Guinea]] continued until the end of the war. ||| ||| ||| +0 Wounded Knee incident ||| American Indian Wars ||| The traditional chiefs and AIM leaders met with the community to discuss how to deal with the deteriorating situation on the reservation. Women elders such as OSCRO founder [[Ellen Moves Camp]], [[Gladys Bissonette]], and Agnes Lamont urged the men to take action. They decided to make a stand at the hamlet of Wounded Knee, the renowned site of the last large-scale [[Wounded Knee Massacre|massacre]] of the [[American Indian Wars]]. They occupied the town and announced their demand for the removal of Wilson from office and for immediate revival of treaty talks with the U.S. government. [[Dennis Banks]] and [[Russell Means]] were prominent spokesmen during the occupation; they often addressed the press, knowing they were making their cause known directly to the American public. The brothers [[Clyde Bellecourt|Clyde]] and [[Vernon Bellecourt]] were also AIM leaders at the time, who generally operated in [[Minneapolis]]. ||| Occupation ||| Incident ||| +1 2011 Omani protests ||| Arab Spring ||| The '''2011 Omani protests''' were a series of protests in the [[Arab states of the Persian Gulf|Persian Gulf]] country of [[Oman]] that occurred as part of the [[revolutionary wave]] popularly known as the '[[Arab Spring]]'. ||| ||| ||| +1 Action of 24 June 1801 ||| French Revolutionary Wars ||| The '''Action of 24 June 1801''' was a minor naval engagement during the [[French Revolutionary Wars]]. A British [[ship of the line]], [[HMS Swiftsure (1787)|HMS ''Swiftsure'']] under Captain [[Benjamin Hallowell Carew|Benjamin Hallowell]] was passing westwards through the Southern Mediterranean near [[Derna, Libya|Cape Derna]] when it encountered a much larger French squadron under [[Rear admiral|Contre-Amiral]] [[Honoré Ganteaume]] that was also returning westwards after a failed attempt to reinforce the besieged French garrison in [[Egypt]]. Although Hallowell immediately recognised the danger his vessel was in and turned to flee, the French ships were much faster and soon closed with his ship. At 14:00, three French vessels were within long gunshot and Hallowell decided that his only hope of escape lay in disabling the three ships before the rest of the French squadron could join the engagement. Turning towards the enemy, Hallowell found that his sluggish ship was unable to respond rapidly to French manoeuvres and within two hours ''Swiftsure'' was surrounded. Threatened with complete destruction and unable to escape, the British captain surrendered. ||| ||| ||| +1 Action of 24 October 1793 ||| French Revolutionary Wars ||| The '''Action of 24 October 1793''' was a minor naval engagement during the first year of the [[French Revolutionary Wars]]. While cruising in the Northern [[Bay of Biscay]], the British [[Royal Navy]] [[frigate]] [[HMS Thames (1758)|HMS ''Thames'']], under Captain [[James Cotes (Royal Navy officer)|James Cotes]], encountered the much larger French frigate [[French frigate Uranie (1788)|''Uranie'']], under Captain [[Jean-François Tartu]]. The ships engaged, with each suffering severe damage until they separated after nearly four hours of continual combat. Cotes ordered his crew to make hasty repairs, intending to resume the battle, but ''Uranie'' ' s crew, with their captain dead, slipped away while ''Thames'' was unable to manoeuvre. At 16:00, with repairs on ''Thames'' ongoing, a French squadron of three frigates and a [[brig]], under Captain [[Zacharie Allemand]], arrived, firing on ''Thames'' as they approached. Outnumbered, Cotes surrendered his ship to Allemand, who commended Cotes on his resistance to the far larger ''Uranie''. ||| ||| ||| +1 Action of 24 October 1798 ||| French Revolutionary Wars ||| The '''Action of 24 October 1798''' was a minor naval engagement of the [[French Revolutionary Wars]], fought between a British [[Royal Navy]] frigate and two ships of the [[Batavian Republic]]. The Dutch ships were intercepted in the [[North Sea]] within hours of leaving port, {{convert|30|nmi|km}} northwest of the [[Texel]], by the British ship [[HMS Sirius (1797)|HMS ''Sirius'']]. Both Dutch vessels were carrying large quantities of military supplies and [[French Army|French soldiers]], reinforcements for the French and Irish forces participating in the [[Irish Rebellion of 1798]]. Although the rebellion had been defeated a month earlier, word of the British victory had not yet reached the European continent, and the Dutch force was intended to supplement a larger French squadron sent earlier in October. The French had already been defeated at the [[Battle of Tory Island]] and the Dutch suffered a similar outcome, both ships defeated in turn by the larger and better armed British vessel. ||| ||| ||| +1 Action of 6 November 1794 ||| French Revolutionary Wars ||| The '''Action of 6 November 1794''' (Known in [[French language|French]] as the '''''Combat du [[French Republican Calendar|16 Brumaire an III]]''''') was a naval engagement during the [[French Revolutionary Wars]]. Two [[Kingdom of Great Britain|British]] [[ships of the line]], [[HMS Alexander (1778)|HMS ''Alexander'']] and [[HMS Canada (1765)|HMS ''Canada'']] were intercepted while returning to Britain through the [[Celtic Sea]] by a large French squadron. The French squadron had sailed from [[Brest, France|Brest]] in search of an inward bound British convoy in October, but instead encountered the two British ships returning from escorting an outward-bound convoy. There had been no warning of the French approach as the British force assigned to watch Brest was absent at [[Plymouth]] due to the policy of operating a distant [[blockade]]. ||| ||| ||| +1 Action of the Hohenzollern Redoubt ||| Battle of Loos ||| The '''Action of the Hohenzollern Redoubt''' took place 13 – 19 October 1915, towards the end and immediately after the [[Battle of Loos]] (25 September – 15 October 1915), at the [[Hohenzollern Redoubt (fortification)|Hohenzollern Redoubt]] ({{lang|de|''Hohenzollernwerk''}}) near [[Auchy-les-Mines]] in France on the [[Western Front (World War I)|Western Front]] in [[World War I]]. The British [[9th (Scottish) Division|9th Division]] captured this [[strongpoint]] of [[German Army (German Empire)|German forces]] and then lost it to a German counter-attack. The final British assault on 13 October failed and resulted in {{nowrap|3,643 casualties,}} mostly in the first few minutes. In the [[History of the Great War|British Official History]], [[James Edward Edmonds|J. E. Edmonds]] wrote that 'The fighting [from 13–14 October] had not improved the general situation in any way and had brought nothing but useless slaughter of infantry'. ||| ||| ||| +1 Air Battle of El Mansoura ||| Yom Kippur War ||| The '''Air Battle of El Mansoura''' was the Egyptian name for an air battle that took place during the [[Yom Kippur War]] between the [[Egyptian Air Force]] (EAF) and the [[Israeli Air Force]] (IAF) near the town of [[El Mansoura]], in the [[Nile Delta]]. ||| ||| ||| +1 Aleutian Islands Campaign ||| World War II ||| The '''Aleutian Islands Campaign''' was a struggle over the [[Aleutian Islands]], part of the [[Alaska Territory]], in the [[American Theater (World War II)|American theater]] and the [[Pacific War|Pacific theater]] of [[World War II]] starting on 3 June 1942. A small [[Japan]]ese force occupied the islands of [[Attu Island|Attu]] and [[Kiska]], but the remoteness of the islands and the difficulties of weather and terrain meant that it took nearly a year for a far larger U.S./Canadian force to eject them. The islands' strategic value was their ability to control Pacific [[Great circle|Great Circle]] routes. This control of the Pacific transportation routes is why [[U.S. General]] [[Billy Mitchell]] stated to the [[U.S. Congress]] in 1935, 'I believe that in the future, whoever holds Alaska will hold the world. I think it is the most important strategic place in the world.' The Japanese reasoned that control of the Aleutians would prevent a possible U.S. attack across the Northern Pacific. Similarly, the U.S. feared that the islands would be used as bases from which to launch aerial assaults against the [[West Coast of the United States|West Coast]]. ||| ||| ||| +1 Attack on German Flatts (1778) ||| American Revolutionary War ||| The '''Attack on German Flatts''' (September 17, 1778) was a raid on the frontier settlement of [[German Flatts, New York]] (which then also encompassed what is now [[Herkimer (town), New York|Herkimer]]) during the [[American Revolutionary War]]. The attack was made by a mixed force of [[Loyalist (American Revolution)|Loyalist]]s and [[Iroquois]] under the overall command of [[Mohawk people|Mohawk]] leader [[Joseph Brant]], and resulted in the destruction of houses, barns, and crops, and the taking of livestock for the raiders' use. The settlers, warned by the heroic run of [[Adam Helmer]], took refuge in local forts but were too militarily weak to stop the raiders. ||| ||| ||| +1 Battle at The Lizard ||| War of the Spanish Succession ||| The naval '''Battle of the Lizard''' ({{lang-fr|Combat du Cap Lézard}}) took place on 21 October 1707 during the [[War of the Spanish Succession]] near [[Lizard Point, Cornwall]] between two French [[Squadron (naval)|squadrons]] under [[René Duguay-Trouin]] and [[Claude de Forbin]] and an English [[convoy]] protected by a squadron under Commodore Richard Edwards. ||| ||| ||| +1 Battle for Brest ||| Operation Overlord ||| The '''Battle for Brest''' was one of the fiercest battles fought on the [[Western Front (World War II)|Western Front]] during [[World War II]]. Part of the Allied plan for the [[Operation Overlord|invasion of mainland Europe]] called for the capture of port facilities, in order to ensure the timely delivery of the enormous amount of war [[wikt:materiel|materiel]] required to supply the invading Allied forces. It was estimated that the 37 Allied divisions to be on the continent by September 1944 would need 26,000 tons of supplies each day. The main port the Allied forces hoped to seize and put into their service was [[Brest, France|Brest]], in northwestern France. ||| ||| ||| +1 Battle in Berlin ||| Battle of Berlin ||| The battle in Berlin<!--See the MOS on descriptive titles! Do not put in bold as it creates it a neologism--> was an end phase of the [[Battle of Berlin]]. While the Battle ''of'' Berlin encompassed the attack by three Soviet Army Groups to capture not only [[Berlin]] but the territory of Germany east of the [[River Elbe]] still under German control, the battle ''in'' Berlin details the fighting and German capitulation that took place within the city. ||| ||| ||| +1 Battle of 42nd Street ||| Battle of Crete ||| The '''Battle of 42nd Street''' (27 May 1941) was a battle fought during [[World War II]] on the Greek island of [[Crete]]. On 20 May, [[Nazi Germany]] launched an [[Airborne forces|airborne]] [[Battle of Crete|invasion of Crete]]. A week later, after the British and Commonwealth forces defending the island had been forced to withdraw towards [[Canea]], a force of several understrength Australian and New Zealand infantry [[battalion]]s established a defensive line along the Hania to Tsikslaria road (Tsikalarion) south-east of Canea, forming a [[rearguard]] for the withdrawing troops. On 27 May, as a German [[battalion]] advanced towards the road, the Anzac defenders carried out a bayonet charge that inflicted heavy casualties on the German attackers, which forced them to withdraw and briefly halted the German advance. ||| ||| ||| +1 Battle of Almenar ||| War of the Spanish Succession ||| The '''Battle of Almenar''' took place on 27 July 1710 in the [[War of the Spanish Succession]], between the troops of Phillip V and the Archduke Charles. Philip V's army having been defeated was forced to evacuate Catalonia and regroup behind the [[Ebro]]. ||| ||| ||| +1 Battle of Appomattox Station ||| American Civil War ||| The '''Battle of Appomattox Station''' was fought between a [[Union Army]] ([[Army of the Potomac]], [[Army of the James]], [[Union Army of the Shenandoah|Army of the Shenandoah]]) cavalry division under the command of [[Brigadier general (United States)|Brigadier General]] ([[Brevet (military)|Brevet]] [[Major general (United States)|Major General]]) [[George Armstrong Custer]] and [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] artillery units commanded by [[Brigadier General (CSA)|Brigadier General]] [[Reuben Lindsay Walker|Lindsay Walker]] with support from some dismounted cavalrymen, artillerymen armed with muskets and some stragglers on April 8, 1865, at [[Appomattox Station]], Virginia during the [[Appomattox Campaign]] of the [[American Civil War]]. ||| ||| ||| +1 Battle of Ardahan ||| Caucasus Campaign ||| The operation was part of what the [[Russian Empire]] viewed the [[Caucasus Campaign|Caucasus front]]. It was a secondary to the [[Eastern Front (World War I)|Eastern front]]. Russia had taken the fortress of [[Kars]] from the Turks during the [[Russo–Turkish War, 1877–1878|Russo-Turkish War]] in 1877 and feared a campaign into the Caucasus, a [[Caucasus Campaign]], aimed at retaking Kars and the port of [[Batum]]. The Ottoman generalship and organization were negligible compared to the Allies. Caucasus Campaign planned to be a distracting effect on Russian forces. Enver hoped a success would facilitate opening the route to [[Tbilisi]] and beyond, with a revolt of [[Peoples of the Caucasus|Caucasian]] Muslims another strategic goal was to cut [[Baku-Batumi pipeline|Russian access]] to its [[Oil industry in Azerbaijan|hydrocarbon resources]] around the [[Caspian Sea]]. This long-term goal made Britain vary. The [[Anglo-Persian Oil Company]] was in the proposed path. ||| Background ||| ||| +1 Battle of Ascalon ||| First Crusade ||| The '''Battle of Ascalon''' took place on August 12, 1099 shortly after the [[Siege of Jerusalem (1099)|capture of Jerusalem]], and is often considered the last action of the [[First Crusade]]. The crusader army led by [[Godfrey of Bouillon]] defeated and drove off the numerically-superior [[Fatimid Caliphate|Fatimid]] army, securing the safety of [[Kingdom of Jerusalem|Jerusalem]]. ||| ||| ||| +1 Battle of Attu ||| American Theater (World War II) ||| The '''Battle of Attu''', which took place from 11–30 May 1943, was fought between forces of the [[United States]], aided by Canadian reconnaissance and fighter-bomber support, and the [[Empire of Japan]] on [[Attu Island]] off the coast of the [[Territory of Alaska]] as part of the [[Aleutian Islands Campaign]] during the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] and was the only [[land battle]] of [[World War II]] fought on [[incorporated territory]] of the United States. It is also the only land battle in which Japanese and American forces fought in [[Arctic]] conditions. ||| ||| ||| +1 Battle of Ba Gia ||| Vietnam War ||| The '''Battle of Ba Gia''' was a major battle that marked the beginning of the [[National Liberation Front for South Vietnam|National Liberation Front]]'s Summer Offensive of 1965, during the early phases of the [[Vietnam War]], which is known in [[Vietnam]] as the '''American War'''. The battle took place in [[Quảng Ngãi Province]], [[South Vietnam]], between May 28–31, 1965. ||| ||| ||| +1 Battle of Beaver Dams ||| War of 1812 ||| The '''Battle of Beaver Dams''' took place on 24 June 1813, during the [[War of 1812]]. An American column marched from [[Fort George, Ontario|Fort George]] and attempted to surprise a British outpost at Beaver Dams, billeting themselves overnight in the village of [[Queenston, Ontario]]. [[Laura Secord]], a resident of Queenston, had earlier learned of the American plans, and had struck out on a long and difficult trek to warn the British at [[DeCou House|Decou's]] stone house near present-day [[Brock University]]. When the Americans resumed their march, they were ambushed by Native warriors and eventually surrendered to the commander of a small British detachment. About 500 Americans, including their wounded commander, were taken prisoner. ||| ||| ||| +1 Battle of Belchite (1809) ||| Peninsular War ||| The '''Battle of Belchite''' on 18 June 1809 saw a Franco-Polish corps led by [[Louis Gabriel Suchet]] fight a small Spanish army under [[Joaquín Blake y Joyes]]. Suchet's force won the battle when a lucky hit detonated a large part of the Spanish ammunition supply. The ensuing blast provoked Blake's soldiers into a panicky flight from the battlefield. The action was fought during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Belchite]] is located {{convert|40|km|mi|0}} southeast of [[Zaragoza]]. ||| ||| ||| +1 Battle of Bielsa pocket ||| Spanish Civil War ||| The '''Battle of Bielsa pocket''' took place between 14 April and the 15 June 1938, during the [[Spanish Civil War]]. After the fall of the Aragon front a republican division, on April 1938, was surrounded by the Nationalists in the [[Cinca River (Aragon)|Cinca River]] Valley. The division heavily outnumbered managed to hold until July 6 and then crossed the French frontier. ||| ||| ||| +1 Battle of Bornos (1812) ||| Peninsular War ||| The '''Battle of Bornos''' on 31 May 1812, saw a [[Kingdom of Spain|Spanish]] force led by [[Francisco Ballesteros]] attack an [[First French Empire|Imperial French]] division under [[Nicolas François Conroux]]. Though the Spanish achieved surprise, the outnumbered French soldiers fought back and drove off their assailants. The Spanish suffered losses considerably higher than the French. [[Bornos]] is located on Route 342 about {{convert|40|mi|km|0}} northeast of [[Jerez de la Frontera]]. The battle occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Caldiero (1805) ||| War of the Third Coalition ||| The '''Battle of Caldiero''' took place on October 30, 1805, pitting the French ''[[Army of Italy (France)|Armée d'Italie]]'' under Marshal [[André Masséna]] against an [[Austrian Empire|Austrian]] army under the command of [[Archduke Charles, Duke of Teschen]]. The French engaged only a part of their forces, around 33,000 men, whilst Archduke Charles engaged the bulk of his army, 49,000 men, leaving out [[Paul Davidovich]]'s corps to defend the lower [[Adige]] and [[Franz Seraph of Orsini-Rosenberg]]'s corps to cover the Austrian right against any flanking maneuvers. The fighting took place at [[Caldiero]], 15 kilometres east of [[Verona]], in the [[War of the Third Coalition]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Cambrai (1918) ||| Hundred Days Offensive ||| The '''Battle of Cambrai, 1918''' (also known as the Second Battle of Cambrai) was a battle between troops of the British [[First Army (United Kingdom)|First]], [[Third Army (United Kingdom)|Third]] and [[Fourth Army (United Kingdom)|Fourth]] Armies and [[German Empire]] forces during the [[Hundred Days Offensive]] of the [[World War I|First World War]]. The battle took place in and around the French city of [[Cambrai]], between 8 and 10 October 1918. The battle incorporated many of the newer tactics of 1918, in particular tanks, meaning that the attack was an overwhelming success with light casualties in an extremely short amount of time. ||| ||| ||| +1 Battle of Cambrils ||| Catalan Revolt ||| The '''Battle of Cambrils''' or the '''Massacre of Cambrils''' took place in December 1640 during the [[Catalan Revolt]]. ||| ||| ||| +1 Battle of Canton (May 1841) ||| First Opium War ||| The '''Second Battle of Canton''' was fought between British and Chinese forces in Canton (now [[Guangzhou]]), China, in May 1841 during the [[First Opium War]]. ||| ||| ||| +1 Battle of Carpi (1815) ||| Neapolitan War ||| The '''Battle of Carpi''' was a battle in the [[Neapolitan War]] between a brigade of Neapolitan soldiers under the command of [[Guglielmo Pepe]] and an Austrian force under the command of [[Frederick Bianchi, Duke of Casalanza|Frederick Bianchi]]. The battle took place in the town of [[Carpi (Modena)|Carpi]] and resulted in an Austrian victory, with the Neapolitans being driven from the town. ||| ||| ||| +1 Battle of Cervera (1811) ||| Peninsular War ||| In the '''Battle of Cervera''' (4 to 14 October 1811) a [[Kingdom of Spain|Spanish]] force led by [[Luis Roberto de Lacy]] attacked a series of [[First French Empire|Imperial French]] garrisons belonging to the [[VII Corps (Grande Armée)|VII Corps]] of [[Marshal of France|Marshal]] [[Jacques MacDonald]]. The actions were highly successful and netted nearly 1,000 enemy prisoners. The clashes occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. The largest garrison was located at [[Cervera]] which is located about {{convert|55|km|mi|0}} east of [[Lleida]], [[Spain]]. ||| ||| ||| +1 Battle of Changsha (1941) ||| Second Sino-Japanese War ||| The '''Battle of Changsha''' (6 September–8 October 1941) was Japan's second attempt at taking the city of [[Changsha]], China, the capital of [[Hunan Province]], as part of the [[Second Sino-Japanese War]]. ||| ||| ||| +1 Battle of Ciołków ||| January Uprising ||| '''Battle of Ciołków''' (the village is now called ''[[Ciółkowo]]''; north-east of [[Płock]]) of January 22, 1863, was the first skirmish of the [[January Uprising]]. Fought between an unorganised Polish troop of ca. 100 men under [[Aleksander Rogaliński]] and a company of the Russian Murom Regiment under Col. Kozlaninov, the skirmish resulted in Polish victory. ||| ||| ||| +1 Battle of Collecchio ||| World War II ||| '''The Battle of Collecchio-Fornovo''' (26–29 April 1945) was a [[World War II]] battle between the [[Brazilian Expeditionary Force|1st Brazilian Expeditionary Division]] (''Força Expedicionária Brasileira'' – FEB), along with [[Italian partisans]] and units from the American [[1st Armored Division (United States)|1st Amored]] and [[92nd Infantry Division (United States)|92nd Infantry]] Divisions, against the ''[[Wehrmacht]]''{{'}}s [[148th Reserve Division (Wehrmacht)|148th Infantry]], [[90th Light Infantry Division (Wehrmacht)|90th Panzergrenadier]]<!-- Panzergrenadier is all one word. --> Divisions and the fascist [[Esercito Nazionale Repubblicano|National Republican Army]]'s 1st [[Bersaglieri]] '''Italia''' and the 4th [[Alpini|Mountain]] '''Monte Rosa''' Divisions.{{sfn|Donato|1996|p=256 & 291}} ||| ||| ||| +1 Battle of Czechoslovak Radio ||| Prague uprising ||| The '''Battle for Czech Radio''' was a major part of the [[Prague uprising]] during [[World War II]]. Plans for the liberation of the radio station were prepared by Captain Valter in late April 1945. Captain Palička and Captain Valter grouped their forces so as to attack the building. The fierce battle resulted in a victory of the uprisers. ||| ||| ||| +1 Battle of Dražgoše ||| World War II ||| The '''Battle of Dražgoše''' ({{lang-sl|dražgoška bitka}}) was a [[World War II|Second World War]] [[battle]] between the [[Slovene Partisans]] and [[Nazi Germany]] [[Wehrmacht|armed forces]], which took place between January 9 and January 11, 1942, in the village of [[Dražgoše]] (nowadays [[Slovenia]]). This battle was the first direct confrontation between the two. It ended with brutal reprisals of German forces against the villagers and the destruction of the village. ||| ||| ||| +1 Battle of Dysert O'Dea ||| Bruce campaign in Ireland ||| The '''Battle of Dysert O'Dea''' took place on 10 May 1318 at [[O'Dea Castle|Dysert O'Dea]] near [[Corofin, County Clare|Corofin]], Ireland. It was part of the [[Bruce campaign in Ireland]]. The [[Normans|Norman]] [[Richard de Clare, Steward of Forest of Essex|Richard de Clare]] attacked the [[Gaelic Ireland|Gaelic Irish]] chieftain Conchobhar Ó Deághaidh, chief of the Cineal Fearmaic and ally of [[Muircheartach Ó Briain, King of Thomond|Muirchertach Ó Briain]], but he was defeated. ||| ||| ||| +1 Battle of Fehrbellin ||| Franco-Dutch War ||| Prior to the battle the Swedes and Brandenburg had been allies in various wars against the [[Polish–Lithuanian Commonwealth|Kingdom of Poland]]. However, when Elector Frederick William during the [[Franco-Dutch War]] had joined an allied expedition with Emperor [[Leopold I, Holy Roman Emperor|Leopold I]] to [[Alsace]] against the forces of King [[Louis XIV of France]], the French persuaded Sweden, which had been increasingly isolated on the continent, to attack Brandenburg while her army was away. ||| Prelude ||| ||| +1 Battle of Fort Blakely ||| American Civil War ||| The '''Battle of Fort Blakely''' took place from April 2-April 9, 1865 in [[Baldwin County, Alabama]], as part of the Mobile Campaign of the [[American Civil War]]. ||| ||| ||| +1 Battle of Fort Slongo ||| American Revolutionary War ||| The '''Battle of Fort Slongo''' (also spelled '''Salonga''') was fought on October 3, 1781 between American [[Continental Army]] forces, under the command of [[Benjamin Tallmadge]], and the British defenders of [[Fort Salonga, New York|Fort Salonga]], middle in the [[American Revolutionary War]]. The fort was located near the border of present-day [[Huntington, New York|Huntington Township]] and [[Smithtown, New York]], overlooking [[Long Island Sound]]. ||| ||| ||| +1 Battle of Gitschin ||| Austro-Prussian War ||| The '''Battle of Gitschin''' or '''Jičín''' ({{lang-de|Schlacht bei Gitschin}}) was a [[battle]] of the [[Austro-Prussian War]] on 29 June 1866, ending with a [[Kingdom of Prussia|Prussian]] victory over the [[Austrian Empire|Austrian]] forces. There is a memorial there today at [[Jičín]] in the [[Czech Republic]]. ||| ||| ||| +1 Battle of Hanau ||| War of the Sixth Coalition ||| The '''Battle of Hanau''' was fought on (30 – 31 October 1813) between [[Karl Philipp von Wrede]]'s [[Austrian Empire|Austro]]-[[Bavaria]]n corps and [[Napoleon I of France|Napoleon's]] retreating [[First French Empire|French]] during the [[War of the Sixth Coalition]]. ||| ||| ||| +1 Battle of Hefei (208) ||| Battle of Red Cliffs ||| In the 11th lunar month of 208, Cao Cao was defeated by [[Sun Quan]] and [[Liu Bei]] at the [[Battle of Red Cliffs]], but he still had a large army garrisoned at the northern part of [[Jingzhou (ancient China)|Jing Province]] (covering present-day [[Hubei]] and [[Hunan]]). The following month, Sun Quan's general [[Zhou Yu]] led an attack on Jiangling (江陵; located in present-day Jingjiang 荆江, not to be confused with [[Jiangling County]], Hubei), which was defended by Cao Cao's cousin [[Cao Ren]]. ||| Background ||| ||| +1 Battle of Helsingborg ||| Great Northern War ||| Denmark had been forced out of the [[Great Northern War]] by the [[treaty of Traventhal]] in 1700, but had long planned on reopening hostilities with the goal of reconquering the lost provinces [[Scania]], [[Halland]] and [[Blekinge]]. After the Swedish defeat at [[Battle of Poltava|Poltava]] in 1709, the Danes saw an opportunity and declared war on Sweden the same year. The [[declaration of war]] arrived at the Swedish state council on October 18, 1709. The [[pretext]] given were that Sweden had been cheating with the [[Sound Dues]], and that the population of Scania, Halland, Blekinge and Bohuslän had been mistreated. ||| Prelude ||| ||| +1 Battle of Hòa Mộc ||| Sino-French War ||| The '''Battle of Hoa Moc''' (2 March 1885) was the most fiercely fought action of the [[Sino-French War]] (August 1884 – April 1885). At heavy cost, Colonel Giovanninelli's 1st Brigade of the [[Tonkin Expeditionary Corps]] defeated forces of the Black Flag and [[Yunnan]] Armies blocking the way to the besieged French post of Tuyen Quang. ||| ||| ||| +1 Battle of Intombe ||| Anglo-Zulu War ||| The village of [[Lüneberg, South Africa|Lüneberg]], situated at {{Coord|27|19|1|S|30|36|57|E|type:city}} in the disputed territories to the north of [[Zulu Kingdom|Zululand]], had been [[laager]]ed by its white settlers ever since the [[Anglo-Zulu War]] had begun. The Zulus posed a serious threat to the area (as indicated by a vicious night attack on the area on the night of 10th/11 February). Fearing a repeat of the attack, the British dispatched four companies of the [[80th Regiment of Foot|80th Regiment]] under Major Charles Tucker to garrison Lüneberg. ||| Prelude ||| ||| +1 Battle of Iquique ||| War of the Pacific ||| The '''Battle of Iquique''' ([[Spanish language|Spanish]]: ''Batalla de Iquique'' or ''Combate Naval de Iquique'') was a confrontation that occurred on May 21, 1879, during the naval stage of the [[War of the Pacific]], a conflict between [[Chile]] and [[Peru]] and [[Bolivia]]. The battle took place off the then-Peruvian port of [[Iquique]]. The Peruvian [[ironclad]] [[Huáscar (ship)|''Huáscar'']], commanded by [[Miguel Grau|Miguel Grau Seminario]], sank the ''[[Esmeralda (1855)|Esmeralda]]'', a Chilean wooden corvette captained by [[Arturo Prat|Arturo Prat Chacón]], after four hours of combat. ||| ||| ||| +1 Battle of Ismailia ||| Yom Kippur War ||| The '''Battle of Ismailia''' took place between the [[Egyptian Army]] and the [[Israeli Defense Forces]] (IDF) during the last stages of the [[Yom Kippur War]] during October 18–22, 1973, south of the city of [[Ismailia]], on the west bank of the [[Suez Canal]] in [[Egypt]]. The battle itself took place as part of the larger IDF-launched [[Battle of the Chinese Farm#Operation Abiray-Lev|Operation Abiray-Lev]], in an attempt to seize Ismailia and thereby sever the logistical and supply lines of most of Egypt's Second Field Army across the Suez Canal. ||| ||| ||| +1 Battle of Java (1942) ||| World War II ||| The '''Battle of Java''' ('''Invasion of Java''', '''Operation J''') was a battle of the [[Pacific War|Pacific theatre]] of [[World War II]]. It occurred on the island of [[Java (island)|Java]] from 28 February-12 March 1942. It involved forces from the [[Empire of Japan]], which invaded on 28 February 1942, and [[Allies of World War II|Allied]] personnel. Allied commanders signed a formal surrender at Japanese headquarters at [[Bandung]] on 12 March. ||| ||| ||| +1 Battle of Knocknaclashy ||| Wars of the Three Kingdoms ||| The '''battle of Knocknaclashy''', took place in [[County Cork]] in southern [[Ireland]] in 1651. In it, an [[Confederate Ireland|Irish Confederate]] force led by [[Donagh MacCarthy, Viscount Muskerry]] was defeated by an [[England|English]] [[Parliament of England|Parliamentarian]] force under [[Roger Boyle, 1st Earl of Orrery]]. It was the final pitched battle of the [[Irish Confederate Wars]] and one of the last of the [[Wars of the Three Kingdoms]]. ||| ||| ||| +1 Battle of Kollaa ||| Winter War ||| '''The Battle of Kollaa''' was fought from December 7, 1939, to March 13, 1940, in Ladoga's Karelia, [[Finland]], as a part of the Soviet-Finnish [[Winter War]]. ||| ||| ||| +1 Battle of Kostiuchnówka ||| Brusilov Offensive ||| The '''Battle of Kostiuchnówka''' was a [[World War I]] battle that took place July 4–6, 1916, near the village of [[Kostyukhnivka|Kostiuchnówka]] (Kostyukhnivka) and the [[Styr River]] in the [[Volhynia]] region of modern [[Ukraine]], then part of the [[Russian Empire]]. It was a major clash between the [[Imperial Russian Army|Russian Army]] and the [[Polish Legions in World War I|Polish Legions]] (part of the [[Austro-Hungarian Army]]) during the opening phase of the [[Brusilov Offensive]]. ||| ||| ||| +1 Battle of Kępa Oksywska ||| World War II ||| The '''Battle of Kępa Oksywska''' took place in the [[Oksywie Heights]] outside of the city of [[Gdynia]] between September 10 and September 19, 1939. The battle, fought by the [[Polish Army]] and the [[Nazi Germany|German]] [[Wehrmacht]], was part of the [[Polish September Campaign]] during [[World War II]]. It was one of the bloodiest battles of the [[Military campaign|campaign]], with Polish [[killed in action|KIA]] losses reaching roughly 14% of all the forces engaged. ||| ||| ||| +1 Battle of Las Tres Acequias ||| Chilean War of Independence ||| The '''Battle of Les Tres Acequias''', fought during the [[Chilean War of Independence]], occurred near [[San Bernardo, Chile|San Bernardo]] on 26 August in 1814. The confrontation occurred between the two factions of [[Jose Miguel Carrera|Carrera]] and [[Bernardo O'Higgins]], resulting in a defeat for O'Higgins that would in turn lead on to the defeat of the nationalists by the royalist forces at the [[battle of Rancagua]] a month later. ||| ||| ||| +1 Battle of Lijevče Field ||| World War II in Yugoslavia ||| * [[World War II in Yugoslavia]] ||| See also ||| ||| +1 Battle of Lincoln (1141) ||| The Anarchy ||| The forces of King [[Stephen of England]] had been besieging [[Lincoln Castle]] but were themselves attacked by a relief force loyal to Empress Matilda and commanded by [[Robert, 1st Earl of Gloucester]], Matilda's half-brother. The Angevin army consisted of the divisions of Robert's men, those of [[Ranulf de Gernon, 4th Earl of Chester|Ranulf, Earl of Chester]] and those disinherited by Stephen, while on the flank was a mass of Welsh troops led by [[Madog ap Maredudd]], Lord of Powys, and [[Cadwaladr ap Gruffydd]]. Cadwaladr was the brother of [[Owain Gwynedd|Owain, Prince of Gwynedd]], but Owain did not support any side in [[The Anarchy]]. Stephen's force included [[William of Ypres]]; [[Simon of Senlis]]; [[Gilbert de Clare, 1st Earl of Hertford|Gilbert of Hertford]]; [[William le Gros, 1st Earl of Albemarle|William of Aumale]], [[Alan, 1st Earl of Richmond|Alan of Richmond]] and [[Hugh Bigod, 1st Earl of Norfolk|Hugh Bigod]] but was markedly short of cavalry. ||| Account ||| ||| +1 Battle of Lubrze ||| Second Northern War ||| The '''Battle of Lubrze''' was a night battle which took place during the [[Deluge (history)|Deluge]] (part of the [[Second Northern War]]) in August 1656 between Polish forces under [[voivode]] of Kalisz [[Andrzej Karol Grudziński]] and a Swedish-Brandenburg force under [[Jan Wejhard von Wrzesowicz]]. Swedish-Brandenburg forces were coming to provide relief to the besieged town of [[Kalisz]], invested by Polish army under voivode of [[Malbork]] [[Jakub Wejher]], brother of [[Ludwik Weyher]]. ||| ||| ||| +1 Battle of Luckau ||| War of the Sixth Coalition ||| The '''Battle of Luckau''' was fought at [[Luckau]] in [[Brandenburg]] on 6 June 1813 during the [[War of the Sixth Coalition]], part of the [[Napoleonic Wars]]. Allied Russian and Prussian forces under General [[Friedrich Wilhelm Freiherr von Bülow]] defeated part of a French-Allied corps under Marshal [[Nicolas Oudinot]]. This action was the last one until the summer armistice ended in August. [[Luckau]] is {{convert|70|km|mi}} south-southeast of [[Berlin]]. ||| ||| ||| +1 Battle of Lyngør ||| Gunboat War ||| The '''Battle of Lyngør''' was a naval battle fought between Denmark-Norway and Britain in 1812 on the southern coast of Norway, effectively concluding the [[Gunboat War]] in Britain's favour and putting Denmark-Norway out of the war. ||| ||| ||| +1 Battle of Majorca ||| Spanish Civil War ||| The '''Battle of Majorca''', also known as the '''Majorca Landings''', was an [[amphibious warfare|amphibious]] landing early in the [[Spanish Civil War]] aimed at driving the [[Nationalist Spain|Nationalists]] from [[Majorca]] and reclaiming the island for the [[Second Spanish Republic|Republic]]. After some initial tactical success, the expedition, commanded by Captain [[Alberto Bayo]], ended in failure when the Nationalists counterattacked with ground troops and massively superior [[Spanish Air Force|air power]] and drove the Republicans into the sea. So confident were the Republicans in their prediction of victory they optimistically called the operation '''la reconquista de Mallorca''' - 'the reconquest of Majorca'. ||| ||| ||| +1 Battle of Malplaquet ||| War of the Spanish Succession ||| The '''Battle of Malplaquet''', fought on 11 September 1709, was one of the main battles of the [[War of the Spanish Succession]], which opposed the [[Bourbons]] of [[History of France#Louis_XIV|France]] and [[Spain#Rise_and_fall_as_a_world_power:_From_the_Renaissance_to_the_19th_century|Spain]] against an alliance whose major members were the [[Habsburg Monarchy]], [[Kingdom of Great Britain|Great Britain]], the [[Dutch Republic|United Provinces]] and the [[Kingdom of Prussia]]. ||| ||| ||| +1 Battle of Mathias Point ||| American Civil War ||| The '''Battle of Mathias Point''', Virginia (June 27, 1861) was an early naval action of the [[American Civil War]] in connection with the [[Union blockade]] and the corresponding effort by the [[Confederate States Army|Confederates]] to deny use of the [[Potomac River|Potomac]] to the enemy. ||| ||| ||| +1 Battle of Nevis ||| Second Anglo-Dutch War ||| The '''Battle of Nevis''' on 20 May 1667 was a confused naval clash in the [[Caribbean]] off the Island of [[Nevis]] during the closing stages of the [[Second Anglo-Dutch War]] between an English squadron and an Allied Franco-Dutch fleet intent on invading the island. The battle ended up being an English victory in that prevented a Franco-Dutch invasion of Nevis. ||| ||| ||| +1 Battle of New Hope Church ||| American Civil War ||| The '''Battle of New Hope Church''' was fought May 25-26, 1864, between the [[Union Army|Union]] force of [[Major general (United States)|Maj. Gen.]] [[William T. Sherman]] and the [[Confederate States Army|Confederate]] [[Army of Tennessee]] under [[General (CSA)|Gen.]] [[Joseph E. Johnston]] during the [[Atlanta Campaign]] of the [[American Civil War]]. The battle was a result of an attempt by Sherman to outmaneuver Johnston. ||| ||| ||| +1 Battle of North Borneo ||| Pacific War ||| The '''Battle of North Borneo''' took place during the [[World War II|Second World War]] between [[Allies of World War II|Allied]] and Japanese forces. Part of the wider [[Borneo Campaign (1945)|Borneo campaign]] of the [[Pacific War]], it was fought between 10 June and 15 August 1945 in [[North Borneo]] (later known as [[Sabah]]). The battle involved a series of amphibious landings by Australian forces on various points on the mainland around [[Brunei Bay]] and upon islands situated around the bay. Japanese opposition to the landings was sporadic initially, although as the campaign progressed a number of considerable clashes occurred and both sides suffered relatively significant casualties. Ultimately, however, the Australians were successful in seizing control of the region, although to a large extent the strategic gains that possession of North Borneo provided the Allies with were ultimately negated by the sudden conclusion of the war in August 1945. ||| ||| ||| +1 Battle of Onjong ||| Korean War ||| The '''Battle of Onjong''' ({{lang-ko|온정리 전투}}), also known as the '''Battle of Wenjing''' ({{zh|s=温井战斗|p=Wēn Jǐng Zhàn Dòu}}), was one of the first engagements between [[People's Republic of China|Chinese]] and [[United Nations Command (Korea)|United Nations]] forces during the [[Korean War]]. It took place around [[Onjong]] in present-day [[North Korea]] from October 25 to October 29, 1950. As the main focus of the Chinese First Phase Campaign, the Chinese [[40th Army (People's Republic of China)|40th Corps]] conducted a series of ambushes against the [[Republic of Korea]] [[II Corps (South Korea)|II Corps]], effectively destroying the right flank of the [[United States]] [[Eighth Army (United States)|Eighth Army]] while stopping the UN advances north toward the [[Yalu River]]. ||| ||| ||| +1 Battle of Papudo ||| Chincha Islands War ||| The '''Naval Battle of Papudo''' was a naval engagement fought between [[Spain|Spanish]] and [[Chile]]an forces on November 26, 1865, during the [[Chincha Islands War]]. It was fought 55 miles north of [[Valparaiso]], [[Chile]], near the coastal town of Papudo. ||| ||| ||| +1 Battle of Peking (1900) ||| Boxer Rebellion ||| The '''Battle of Peking''', or historically the '''Relief of Peking''', was the battle on 14–15 August 1900, in which a multi-national force, led by Britain, relieved the [[Siege of the International Legations (Boxer Rebellion)|siege of foreign legations]] in [[Peking]] during the [[Boxer Rebellion]]. From 20 June 1900, [[Boxer rebellion#Boxers|Boxer forces]] and Imperial Chinese troops had besieged foreign diplomats, citizens and soldiers within the legations of [[Austria-Hungary]], [[Belgium]], [[British Empire|Britain]], [[French Third Republic|France]], [[Kingdom of Italy (1861–1946)|Italy]], [[German Empire|Germany]], [[Empire of Japan|Japan]], [[Netherlands]], [[Russian Empire|Russia]], [[Spain]] and the [[United States]] within the city of Peking. ||| ||| ||| +1 Battle of Phillora ||| Indo-Pakistani War of 1965 ||| The '''Battle of Phillora''' was one of the largest tank battles fought during the [[Indo-Pakistani War of 1965]]. It was the first major engagement between the two nations in the [[Sialkot]] sector and coincided with the [[Battle of Asal Uttar]]{{Citation needed|date=September 2010}}. ||| ||| ||| +1 Battle of Phu Lam Tao ||| Sino-French War ||| The '''Battle of Phu Lam Tao''' (23 March 1885) was a politically significant engagement during the [[Sino-French War]] (August 1884 – April 1885), in which a French [[Zouave]] battalion was defeated by a mixed force of Chinese soldiers and Black Flags. ||| ||| ||| +1 Battle of Pork Chop Hill ||| Korean War ||| The '''Battle of Pork Chop Hill''' comprises a pair of related [[Korean War]] infantry battles during the spring and summer of 1953. These were fought while the U.S. and the Communist Chinese and Koreans negotiated an [[Korean Armistice Agreement|armistice]]. In the U.S., they were controversial because of the many soldiers killed for terrain of no strategic or tactical value, although the Chinese lost many times the number of US soldiers killed and wounded. The first battle was described in the eponymous history '' Pork Chop Hill: The American Fighting Man in Action, Korea, Spring 1953'', by [[S.L.A. Marshall]], from which the film ''[[Pork Chop Hill]]'' was drawn. ||| ||| ||| +1 Battle of Port Arthur ||| Russo-Japanese War ||| The {{Nihongo|'''Battle of Port Arthur'''|旅順口海戦|Ryojunkō Kaisen|lead=yes}} of 8–9 February 1904 (Monday February 8 - Tuesday February 9) marked the commencement of the [[Russo-Japanese War]]. It began with a surprise night attack by a squadron of [[Imperial Japanese Navy|Japanese]] [[destroyer]]s on the [[Imperial Russian Navy|Russia]]n fleet anchored at [[Lüshunkou|Port Arthur]], [[Manchuria]], and continued with an engagement of major [[surface combatant]]s the following morning; further skirmishing off Port Arthur would continue until May 1904. The battle itself ended inconclusively, though later events would result in the war [[Treaty of Portsmouth|ending]] in a Japanese victory. For a major European power to lose to the Japanese was not only inconceivable to the world at large but also fraught with dire circumstances for the Imperial regime; the Russian people, from the nobility down to the recently emancipated serfs, lost confidence in the military and in the Tsarist political system. This led directly to the [[Revolution of 1905|Russian Revolution of 1905]], and would be well-remembered upon yet-more-disastrous defeats to come later in [[World War I]]. ||| ||| ||| +1 Battle of Portland Harbor ||| American Civil War ||| The '''Battle of Portland Harbor''' was an incident during the [[American Civil War]], in June 1863, in the waters off [[Portland, Maine]]. Two civilian ships engaged two vessels under [[Confederate States Navy]] employment. ||| ||| ||| +1 Battle of Pozières ||| Battle of the Somme ||| The '''Battle of Pozières''' was a two-week struggle for the [[France|French]] village of [[Pozières]] and the ridge on which it stands, during the middle stages of the 1916 [[Battle of the Somme (1916)|Battle of the Somme]]. Though [[United Kingdom|British]] [[division (military)|divisions]] were involved in most phases of the fighting, Pozières is primarily remembered as an [[First Australian Imperial Force|Australian]] battle. The fighting ended with the Allied forces in possession of the plateau north and east of the village, in a position to menace the [[German Empire|German]] [[bastion]] of [[Thiepval]] from the rear. The cost had been very large for both sides and in the words of Australian official historian [[Charles Bean]], the Pozières ridge 'is more densely sown with Australian sacrifice than any other place on earth.' ||| ||| ||| +1 Battle of Ramadi (2006) ||| Iraq War ||| The '''Battle of Ramadi''' in 2006 (sometimes referred to as the '''Second Battle of Ramadi''') was fought during the [[Iraq War]] from April 2006 to November 2006 for control of the [[Ramadi|capital]] of the [[Al Anbar Governorate]] in western Iraq. A combined force of [[U.S. Army|U.S. Soldiers]], [[U.S. Marines]], [[U.S. Navy SEALs]], and [[Iraqi Security Forces]] fought insurgents for control of key locations in Ramadi, including the Government Center and the General Hospital. Coalition strategy relied on establishing a number of patrol bases called Combat Operation Posts throughout the city. ||| ||| ||| +1 Battle of Rathmines ||| Wars of the Three Kingdoms ||| The '''Battle of Rathmines''' was fought in and around what is now the [[Dublin]] suburb of [[Rathmines]] in August 1649, during the [[Irish Confederate Wars]], the Irish theatre of the [[Wars of the Three Kingdoms]]. It was fought between an English [[Parliament of England|Parliamentarian]] army under [[Michael Jones (soldier)|Michael Jones]] which held Dublin and an army composed of [[Confederate Ireland|Irish Confederate]] and English [[Cavalier|Royalist]] troops under the command of the [[James Butler, 1st Duke of Ormonde|Earl of Ormonde]]. The battle ended in the rout of the Confederate /Royalist army and facilitated the landing in Ireland of [[Oliver Cromwell]] and the [[New Model Army]] several days later, who in the next four years completed the [[Cromwellian conquest of Ireland]]. ||| ||| ||| +1 Battle of Red Bank ||| American Revolutionary War ||| The '''Battle of Red Bank''' (October 22, 1777) was a battle of the [[American Revolutionary War]] in which a [[Hessian (soldiers)|Hessian]] force was sent to take [[Fort Mercer]] on the left bank (or [[New Jersey]] side) of the [[Delaware River]] just south of [[Philadelphia]], but was decisively defeated by a far inferior force of Colonial defenders. Although the British did take Fort Mercer a month later, the victory supplied a sorely-needed morale boost to the American cause, delayed British plans to consolidate gains in Philadelphia, and relieved pressure on General Washington's army to the north of the city. ||| ||| ||| +1 Battle of Roliça ||| Peninsular War ||| In the '''Battle of Roliça''' (17 August 1808) an Anglo-Portuguese army under [[Arthur Wellesley, 1st Duke of Wellington|Sir Arthur Wellesley]] defeated an outnumbered [[France|French]] army under [[Henri Delaborde|General Henri Delaborde]], near the village of [[Roliça]] in [[Portugal]]. The French retired in good order. Formerly spelled ''Roleia'' in [[English language|English]], it was the first battle fought by the British army during the [[Peninsular War]]. ||| ||| ||| +1 Battle of Rorke's Drift ||| Anglo-Zulu War ||| The '''Battle of Rorke's Drift''', also known as the '''Defence of Rorke's Drift''', was a battle in the [[Anglo-Zulu War]]. The defence of the [[mission (station)|mission station]] of Rorke's Drift, under the command of [[John Rouse Merriott Chard|Lieutenant John Chard]] of the [[Royal Engineers]], and Lieutenant [[Gonville Bromhead]] immediately followed the [[British Army]]'s defeat at the [[Battle of Isandlwana]] on 22 January 1879, and continued into the following day, 23 January. ||| ||| ||| +1 Battle of Salamanca ||| Peninsular War ||| The '''Battle of Salamanca''' saw an [[Anglo-Portuguese Army|Anglo-Portuguese]] army under the [[Arthur Wellesley, 1st Duke of Wellington|Duke of Wellington]] defeat Marshal [[Auguste Marmont]]'s French forces among the hills around [[Arapiles, Salamanca|Arapiles]], south of [[Salamanca]], Spain on 22{{nbsp}}July 1812 during the [[Peninsular War]]. A [[Spanish Army|Spanish]] division was also present but took no part in the battle. ||| ||| ||| +1 Battle of Sansapor ||| World War II ||| The '''Battle of Sansapor''' (Operation Globetrotter) was an amphibious landing and subsequent operations around [[Sansapor]], [[Dutch New Guinea]] on the [[Vogelkop Peninsula]] during [[World War II]]. ||| ||| ||| +1 Battle of Santa Inés ||| Federal War ||| The '''Battle of Santa Inés''' was a Venezuelan [[battle|military confrontation]] which occurred between 9 and 10 December 1859 during the [[Federal War]] between federal forces under General [[Ezequiel Zamora]] and the conservative government of General [[Pedro Estanislao Ramos]], with a victory for the former. It was located about 36 [[km]] southwest of [[Barinas, Barinas|Barinas]]. ||| ||| ||| +1 Battle of Sarimbun Beach ||| Battle of Singapore ||| The '''Battle of Sarimbun Beach''' was the first stage of the [[Empire of Japan|Japanese]] [[Battle of Singapore|assault on Singapore]] in February 1942 during [[World War II]]. [[Sarimbun]], in the west of [[Singapore]] Island, was the area in which Japanese troops, under the overall direction of Lieutenant General [[Tomoyuki Yamashita]], first attacked [[Allies of World War II|Allied]] forces. The commander of Allied forces in Singapore, Lieutenant General [[Arthur Percival]], did not expect the Japanese to make their main attack in the west, and failed to reinforce the [[8th Division (Australia)|Australian 22nd Brigade]], which took the brunt of the assault. The main Japanese objective to the immediate rear of Sarimbun was [[Tengah Air Base#RAF Tengah|Tengah Airfield]]. ||| ||| ||| +1 Battle of Sarimbun Beach ||| World War II ||| The '''Battle of Sarimbun Beach''' was the first stage of the [[Empire of Japan|Japanese]] [[Battle of Singapore|assault on Singapore]] in February 1942 during [[World War II]]. [[Sarimbun]], in the west of [[Singapore]] Island, was the area in which Japanese troops, under the overall direction of Lieutenant General [[Tomoyuki Yamashita]], first attacked [[Allies of World War II|Allied]] forces. The commander of Allied forces in Singapore, Lieutenant General [[Arthur Percival]], did not expect the Japanese to make their main attack in the west, and failed to reinforce the [[8th Division (Australia)|Australian 22nd Brigade]], which took the brunt of the assault. The main Japanese objective to the immediate rear of Sarimbun was [[Tengah Air Base#RAF Tengah|Tengah Airfield]]. ||| ||| ||| +1 Battle of Scarrifholis ||| Irish Confederate Wars ||| The '''Battle of Scarrifholis''' was fought in [[County Donegal]] in the north-west of Ireland on 21 June 1650, during the [[Irish Confederate Wars]] – part of the [[Wars of the Three Kingdoms]] ([[Irish language|Irish]]: ''Cogadh na dTrí Ríocht''). It was fought between the Ulster Army (Catholic), commanded by [[Heber MacMahon]], [[Roman Catholic Bishop of Clogher]], and an English [[Parliament of England|Parliamentarian]] army commanded by [[Charles Coote, 1st Earl of Mountrath]] and composed of troops from the [[New Model Army]] and local Ulster [[Protestant]] settlers. The battle resulted in the annihilation of the Ulster army and the loss of most of its weapons and supplies. This secured the north of Ireland for the English Parliament and contributed greatly to the [[Cromwellian conquest of Ireland]]. ||| ||| ||| +1 Battle of Sehested ||| War of the Sixth Coalition ||| The '''Battle of Sehested''' was fought between [[Denmark|Danish]] and [[Sweden|Swedish]] (with [[Kingdom of Prussia|Prussian]]-[[Russian Empire|Russia]]n battalions) troops at [[Sehestedt|Sehested]] (in [[Holstein]]) on 10 December 1813 during the [[War of the Sixth Coalition]]. ||| ||| ||| +1 Battle of Short Hills ||| American Revolutionary War ||| The '''Battle of Short Hills''' (also known as the '''Battle of Metuchen Meetinghouse''' and other names) was a conflict between a [[Continental Army]] force commanded by [[Brigadier General]] [[William Alexander (American general)|William Alexander]] ('Lord Stirling'), and an opposing [[Kingdom of Great Britain|British]] force commanded by Lieutenant General [[William Howe, 5th Viscount Howe|William Howe]]. The battle took place on June 26, 1777, at [[Scotch Plains, New Jersey|Scotch Plains]] and [[Metuchen, New Jersey|Metuchen]], [[New Jersey]], during the [[American Revolutionary War]]. Despite the name, no fighting occurred in modern day [[Short Hills, New Jersey|Short Hills]], a section of [[Millburn, New Jersey|Millburn]]. ||| ||| ||| +1 Battle of Siemiatycze ||| January Uprising ||| The '''Battle of Siemiatycze''' was one of the largest battles of the [[January Uprising]]. It took place on February 6–7, 1863, in the town of [[Siemiatycze]], [[Russian Empire]] (now [[Poland]]). Russian forces of some 2,500 under General Zachar Maniukin clashed with 4,000 Polish insurgents commanded by [[Walenty Lewandowski]], Roman Roginski and Wladyslaw Cichorski-Zameczek. The battle was won by the Russians, and their victory had widespread implications in the area of [[Białystok]], as local population decided not to back the uprising. ||| ||| ||| +1 Battle of Stony Point ||| American Revolutionary War ||| The '''Battle of Stony Point''' took place on July 16, 1779, during the [[American Revolutionary War]]. In a well planned and executed nighttime attack, a highly trained select group of [[George Washington]]'s [[Continental Army]] troops under the command of General [[Anthony Wayne|'Mad Anthony' Wayne]] defeated British troops in quick and daring assault on their outpost in [[Stony Point, New York]], approximately 30 miles north of [[New York City]]. ||| ||| ||| +1 Battle of Sullivan's Island ||| American Revolutionary War ||| The '''Battle of Sullivan's Island''' or the '''Battle of Fort Sullivan''' was fought on June 28, 1776, during the [[American Revolutionary War]], also known as the American War of Independence. It took place near [[Charleston, South Carolina]], during the first [[United Kingdom|British]] attempt to capture the city from [[Thirteen Colonies|American]] rebels. It is also sometimes referred to as the '''First Siege of Charleston''', owing to a more successful [[Siege of Charleston|British siege]] in 1780. ||| ||| ||| +1 Battle of Surabaya ||| Indonesian National Revolution ||| The '''Battle of Surabaya''' was fought between pro-independence Indonesian soldiers and militia against British and British Indian troops as a part of the [[Indonesian National Revolution]]. The peak of the battle was in November 1945. The battle was the heaviest single battle of the revolution and became a national symbol of Indonesian resistance.{{sfn|Ricklefs|p=217}} Considered a heroic effort by Indonesians, the battle helped galvanise Indonesian and international support for Indonesian independence. 10 November is celebrated annually as Heroes' Day (''[[Hari Pahlawan]]''). ||| ||| ||| +1 Battle of Tololing ||| Kargil War ||| '''The Battle of Tololing''' was one of the pivotal battles in the [[Kargil War]] between [[India]]'s armed forces and troops from the [[Northern Light Infantry]] who were aided by other [[Pakistan]] backed [[irregular military|irregulars]] in 1999. The Tololing is a dominant position overlooking the [[Srinagar]] - [[Leh]] Highway ([[National Highway 1D (India)|NH 1D]]) and was a vital link. The Indian army's casualties on the Tololing peak were half of the entire losses in the whole war. Much of the losses had to do with the nature of the terrain as [[World War I]] style frontal charges had to be mounted to reclaim the peaks to dislodge the intruders. The 3 week assault finally culminated with India taking control of the peak and changing the course of the war. 23 Indian Soldiers were killed in the final assault, resulting in one of the costliest battles of the entire war. ||| ||| ||| +1 Battle of Toungoo ||| Burma Campaign ||| '''Battle of Toungoo''', was one of the key battles in the [[Battle of Yunnan-Burma Road]] in the [[Burma Campaign]] of [[World War II]] and [[Second Sino-Japanese War]]. The failure to hold the city of Toungoo opened up the route for the Japanese to make their lunge to Lashio around the allied flank and into the Chinese rear. ||| ||| ||| +1 Battle of Toungoo ||| World War II ||| '''Battle of Toungoo''', was one of the key battles in the [[Battle of Yunnan-Burma Road]] in the [[Burma Campaign]] of [[World War II]] and [[Second Sino-Japanese War]]. The failure to hold the city of Toungoo opened up the route for the Japanese to make their lunge to Lashio around the allied flank and into the Chinese rear. ||| ||| ||| +1 Battle of Ugeumchi ||| Donghak Peasant Revolution ||| The '''Battle of Ugeumchi''' was a decisive battle during the [[Donghak Peasant Revolution]]. Fought between the Donghak Korean peasants and the combined Japanese-Joseon Army, it resulted in the decline of the Donghak Rebellion and the growth of Japanese Imperialism in Korea. ||| ||| ||| +1 Battle of Vernon ||| American Civil War ||| The '''Battle of Vernon''', Florida was a minor [[skirmish]] of the [[American Civil War]] that took place on 28 September 1864, near the town of [[Vernon, Florida]]. Coming a day after the larger [[Battle of Marianna]], this conflict involved a company of [[Confederate Home Guard|Home Guard]] troops from Vernon who were going to the aid of their [[Confederate States Army|Confederate]] compatriots in [[Marianna, Florida|that city]]. Unbeknownst to the Southerners, their route had taken them straight toward the withdrawing [[Union Army|Federal]] column under Brigadier General [[Alexander Asboth]], which was returning to their main base at [[Pensacola, Florida|Pensacola]] after their victory at Marianna. The two forces met on a wooden [[bridge]] across Hard Labor Creek in [[Washington County, Florida|Washington County]]; refusing to heed Union demands to disperse, the badly-outnumnered Floridians chose to resist and were quickly defeated, with most of them being taken prisoner. ||| ||| ||| +1 Battle of Vitoria ||| Peninsular War ||| At the '''Battle of Vitoria''' (21 June 1813) a [[United Kingdom of Great Britain and Ireland|British]], [[Kingdom of Portugal|Portuguese]] and [[Spanish Empire|Spanish]] army under [[Arthur Wellesley, 1st Duke of Wellington|General the Marquess of Wellington]] broke the French army under [[Joseph Bonaparte]] and Marshal [[Jean-Baptiste Jourdan]] near [[Vitoria-Gasteiz|Vitoria]] in Spain, eventually leading to victory in the [[Peninsular War]]. ||| ||| ||| +1 Battle of Waterloo ||| Waterloo Campaign ||| Upon Napoleon's return to power in March 1815, many states that had opposed him formed the Seventh Coalition and began to mobilize armies. Wellington and Blücher's armies were [[canton (military)|canton]]ed close to the north-eastern border of France. Napoleon chose to attack them in the hope of destroying them before they could join in a coordinated invasion of France with other members of the coalition. Waterloo was the decisive engagement of the [[Waterloo Campaign]] and Napoleon's last. According to Wellington, the battle was 'the nearest-run thing you ever saw in your life'. The defeat at Waterloo ended Napoleon's rule as [[Emperor of the French]], and marked the end of his [[Hundred Days]] return from exile. [[Abdication of Napoleon (1815)|Napoleon abdicated]] 4 days later, and on the 7 July coalition forces entered Paris. ||| ||| ||| +1 Battle of Wetzell's Mill ||| American Revolutionary War ||| The '''Battle of Wetzell's Mill''' (the name may also be spelled ''Weitzell'', ''Weitzel'', ''Whitesell'', or ''Whitsall'') was an [[American Revolutionary War]] skirmish fought on March 6, 1781, between detachments of [[Nathanael Greene]]'s [[Continental Army]] and [[Banastre Tarleton]]'s Loyalist provincial troops. ||| ||| ||| +1 Battle of Xa Cam My ||| Vietnam War ||| The '''Battle of Xa Cam My''' was fought over two days from April 11–12, 1966, {{convert|10|mi|km}} south of the village of Cam My in [[Phuoc Tuy Province]], during the [[Vietnam War]].{{sfn|Tucker|2011|p=1}} Originally planned as a U.S. [[search and destroy]] mission intended to lure out the 'crack' [[Viet Cong]] D800 Battalion, Charlie Company, [[US 2/16th Infantry Battalion]] soon found itself fighting for survival in the rubber plantations of Cam My village, approximately {{convert|42|mi|km}} east of [[Saigon]]. During this battle 134 men of Charlie Company, 2nd Battalion, 16th Infantry, 1st Infantry Division were ambushed by the Viet Cong and 80 percent became casualties. ||| ||| ||| +1 Battle of Yalu River (1904) ||| Russo-Japanese War ||| The '''Battle of Yalu River''', (Russian: Бой на реке Ялу, ''Boĭ na reke Yalu'') (Japanese: 鴨緑江会戦, ''Ōryokkō Kaisen'') lasted from 30 April to 1 May 1904, and was the first major land battle during the [[Russo-Japanese War]]. It was fought near Wiju (modern village of [[Uiju]], [[North Korea]]) on the lower reaches of the [[Yalu River]], on the border between [[Korea]] and China. ||| ||| ||| +1 Battle of Yenangyaung ||| World War II ||| The '''Battle of Yenangyaung''' ({{zh|c={{linktext|仁|安|羌|大|捷}}|p={{linktext|Rén|ān|qiāng |Dà|jié}}|l=Great Victory at Yenangyaung}}) was fought in [[Burma]], now [[Myanmar]], during the [[Burma Campaign]] in [[World War II]]. The battle of Yenaungyaung was fought in the vicinity of [[Yenangyaung]] and its oil fields. ||| ||| ||| +1 Battle of Zeeland ||| World War II ||| The '''Battle of Zeeland''' was a little-known struggle on the [[Western Front (World War II)|Western Front]] during the early stages of the [[Nazi Germany|German]] [[Battle of France|assault]] on [[France]] and the [[Low Countries]] during [[World War II]]. Several [[Netherlands|Dutch]] and [[France|French]] units attempted to hold off the German onslaught by making a determined defense of the Dutch province of [[Zeeland]]. The battle lasted eight days and was a disappointing defeat for the French and Dutch forces defending the province. ||| ||| ||| +1 Battle of the Axona ||| Gallic Wars ||| To counter this maneouver, Caesar sent all his light infantry and cavalry to manage the difficult terrain (as it would have been more difficult for the heavy infantry to do so). This action is described in his [[Commentarii de Bello Gallico|Gallic Wars]] at 2.10: ||| Battle ||| Second Phase: Belgic repositioning and main engagement ||| +1 Battle of the Chinese Farm ||| Yom Kippur War ||| The '''Battle of the Chinese Farm''' took place during October 15 to October 17, 1973 between the [[Egyptian Army]] and the [[Israel Defense Forces]] (IDF), as part of the [[Yom Kippur War]]. It was fought in the [[Sinai Peninsula]], north of the [[Great Bitter Lake]] and just east of the [[Suez Canal]], near an Egyptian agricultural research station. The farm featured specialized [[Japan]]ese-made machinery; Israeli soldiers mistook [[Japanese writing system|Japanese characters]] on this equipment for [[Chinese characters|Chinese]], leading to the area being labeled 'Chinese Farm' on Israeli military maps. The battle began when the IDF launched [[Operation Abiray-Lev]] ('Stouthearted Men'), attempting to establish a corridor to the canal and allow bridges to be laid for a crossing. Accordingly, the Israelis attacked Egyptian forces in and around the Chinese Farm. ||| ||| ||| +1 Battle of the Plains of Abraham ||| French and Indian War ||| The '''Battle of the Plains of Abraham''', also known as the '''Battle of Quebec''', ('''''Bataille des Plaines d'Abraham''''' or '''''Première bataille de Québec''''' in French) was a pivotal battle in the [[Seven Years' War]] (referred to as the [[French and Indian War]] in the United States). The battle, which began on 13 September 1759, was fought by the British Army and Navy, against the French Army, on a [[plateau]] just outside the walls of [[Quebec City]], on land that was originally owned by a farmer named Abraham Martin, hence the name of the battle. The battle involved fewer than 10,000 troops between both sides, but proved to be a deciding moment in the conflict between France and [[Kingdom of Great Britain|Britain]] over the fate of New France, influencing the later creation of [[Canada]]. ||| ||| ||| +1 Battle off Horaniu ||| Pacific War ||| The '''Battle off Horaniu''' (Japanese: 第一次ベララベラ海戦) was a minor [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]] fought on the night of 17 August 1943 near the island of [[Vella Lavella]] in the [[Solomon Islands]] ||| ||| ||| +1 Battle on Snowshoes ||| French and Indian War ||| The '''1758 Battle on Snowshoes''' occurred on March 13, 1758, during the [[French and Indian War]]. It was fought by members of [[British Army|British]] [[Rogers' Rangers|Ranger]] companies led by [[Robert Rogers (soldier)|Robert Rogers]] against [[France|French]] troops and [[Indigenous peoples of the Americas|Indians]] allied to France. The battle took place near [[Lake George (New York)|Lake George]], now in northern [[New York]], but then in the [[frontier]] area between the British [[province of New York]] and the French [[Canada, New France|province of Canada]]. The battle was given its name because the British combatants were wearing [[snowshoes]]. ||| ||| ||| +1 Belgorod-Khar'kov Offensive Operation ||| World War II ||| |partof=the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]] ||| ||| ||| +1 Bombardment of Alexandria ||| Anglo-Egyptian War ||| [[Admiral]] [[Beauchamp Seymour, 1st Baron Alcester|Beauchamp Seymour]] was in command of a fleet of fifteen [[Royal Navy]] [[ironclad]] ships which had previously sailed to the harbor of [[Alexandria, Egypt|Alexandria]] to support the [[khedive of Egypt|khedive]] [[Tewfik Pasha]] amid [[Ahmed ‘Urabi]]'s [[‘Urabi Revolt|nationalist uprising]] against his administration and its close ties to [[United Kingdom of Great Britain and Ireland|British]] and [[Third French Republic|French]] financiers. He was joined in the show of force by a [[French Third Republic|French]] flotilla as well. The move provided some security to the khedive, who withdrew his court to the now-protected port, but strengthened [[Ahmed ‘Urabi|‘Urabi]]'s nationalists within the army and throughout the remainder of Egypt. On 11 June, [[#Origins|anti-Christian riots]] began in Alexandria. The city's European residents fled and the Egyptian ‘Urabist army began fortifying and arming the harbor. An ultimatum to cease this build-up being refused, the British fleet began a 10½-hour bombardment of the city without French assistance. Historians argue about whether Admiral Seymour exaggerated the threat from the Egyptian batteries at Alexandria in order to force the hand of a reluctant [[Second Gladstone administration|Gladstone administration]]. Once the British had attacked the city, they then proceeded to a [[Anglo-Egyptian War|full-scale invasion]] to restore the authority of the khedive. Egypt remained under British occupation until 1936. ||| ||| ||| +1 Bukit Kepong Incident ||| Malayan Emergency ||| '''Bukit Kepong Incident''' was an armed encounter which took place on 23 February 1950 between the [[Royal Malaysia Police|Federation of Malaya Police]] and the gunmens of [[Malayan Communist Party]] during the [[Malayan Emergency]]. This conflict took place in an area surrounding the [[Bukit Kepong]] police station in [[Bukit Kepong]]. The wooden station was located on the river banks of the Muar River, about 59 km from [[Muar (town)|Muar]] town, [[Johor]]. ||| ||| ||| +1 Campaign at the China–Burma border ||| Chinese Civil War ||| The '''Campaign along the China-Burma Border''' ({{zh|s=中缅边境作战|t=中緬邊境作戰}}) was a series of battles fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the communist victory. It is also dubbed by the [[Communist Party of China|communists]] as the '''Campaign to Provide Security for the China-Burma Border Surveying''' (中缅边境勘界警卫作战). ||| ||| ||| +1 Campo Vía pocket ||| Chaco War ||| The battle of the '''Campo Vía pocket''' was a decisive engagement of the [[Chaco War]] between Paraguay and Bolivia which took place in December 1933. It was one of the most prominent battles of the Chaco War. Lt Col José Félix Estigarribia, with a massive force of several divisions of the Paraguayan Army, was able to surround two Bolivian divisions around the outpost of Alihuatá. The encircled troops were forced to capitulate due to lack of supplies on 11 December. Up to 2,000 Bolivian soldiers were killed and 7,000 made prisoner. Barely 900 Bolivian troops broke away. Subsequently, the Paraguayan troops expelled the Bolivian army from the eastern region of Chaco by the end of 1933, forcing the resignation of German General [[Hans Kundt]] to the Bolivian High Command. ||| ||| ||| +1 Canoe Fight ||| Creek War ||| The '''Canoe Fight''' was a famous engagement fought on November 12, 1813, as part of the [[Creek War]]. It occurred near the mouth of Randons Creek on the [[Alabama River]], between modern [[Clarke County, Alabama|Clarke]] and [[Monroe County, Alabama|Monroe]] counties. Samuel Dale, Jeremiah Austill, and James Smith become frontier heroes in this Creek War episode on the Alabama River known as The Canoe Fight. From their canoe, paddled by a black man named Caesar, the three Americans engaged a large canoe carrying nine Creek warriors. Dale's men killed 8 Creeks, mortally wounded 1, and captured a war-canoe. One of the Americans was wounded and 1 war-canoe was damaged. ||| ||| ||| +1 Capitulation of Saldanha Bay ||| French Revolutionary Wars ||| The '''Capitulation of Saldanha Bay''' saw the surrender to the British [[Royal Navy]] of a Dutch expeditionary force sent to recapture the [[Dutch Cape Colony]] in 1796 during the [[French Revolutionary Wars]]. In 1794 the army of the [[First French Republic|French Republic]] overran the [[Dutch Republic]] which then became a French [[client state]], the [[Batavian Republic]]. Concerned by the threat posed to the trade routes between [[Kingdom of Great Britain|Great Britain]] and [[British India]] by the Dutch Cape Colony in Southern Africa, a British expeditionary force had landed at [[Simon's Town]] in June 1795 and forced the [[Invasion of the Cape Colony (1795)|surrender of the colony]] in a short campaign. The British commander, [[Vice-Admiral]] [[George Elphinstone, 1st Viscount Keith|Sir George Elphinstone]], then reinforced the garrison and stationed a naval squadron at the Cape to protect the British conquest. ||| ||| ||| +1 Capture of Eaucourt l'Abbaye ||| Battle of the Somme ||| Military operations began in the area in September 1914 during the [[Race to the Sea]], when the divisions of the [[II Royal Bavarian Corps|II Bavarian Corps]] advanced westwards on the north bank of the Somme, towards Albert and Amiens. Eaucourt l'Abbaye became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}}.<!-- and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity.--> During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} divisions of the British [[III Corps (United Kingdom)|III Corps]] in the [[Fourth Army (United Kingdom)|Fourth Army]] advanced close to Eaucourt and operations to capture it began on 1 October. The Eaucourt defenders of a regiment of the [[6th Bavarian Reserve Division (German Empire)|6th Bavarian Reserve Division]] were overrun by a brigade of the [[47th (1/2nd London) Division|47th Division]] on 1 October, during the [[Battle of Le Transloy]] {{nowrap|(1 October – 5 November)}} but operations continued until 3 October. ||| ||| ||| +1 Capture of Fort Erie ||| War of 1812 ||| The '''Capture of [[Old Fort Erie|Fort Erie]]''' by [[United States|American]] forces in 1814 was an incident in the [[War of 1812]] between [[United Kingdom of Great Britain and Ireland|the United Kingdom]] and the United States. The British garrison was outnumbered but surrendered prematurely, in the view of British commanders. ||| ||| ||| +1 Capture of Rome ||| Italian unification ||| The '''Capture of Rome''' (20 September 1870) was the final event of the long process of [[Italian unification]] known as the ''[[Risorgimento]]'', marking both the final defeat of the [[Papal States]] under [[Pope Pius IX]] and the unification the Italian peninsula under King [[Victor Emmanuel II]] of the [[House of Savoy]]. ||| ||| ||| +1 Capture of the Paquete de Maule ||| Chincha Islands War ||| On 6 March 1866, during the [[Chincha Islands War]], the Spanish steam frigate ''Blanca'' '''captured''' the [[Chile]]an sidewheel steamer '''''[[Paquete de Maule]]''''' in the Gulf of Arauco. ||| ||| ||| +1 Creek War ||| War of 1812 ||| The Creek War is part of the four-century long [[American Indian Wars|Indian Wars]]. It is also usually considered part of the [[War of 1812]] because of its connection to [[Tecumseh's War]] in the [[Old Northwest]], because it is concurrent with the American-British war and involves many of the same actors, and because the Red Sticks sought support from the British and later aided [[Alexander Cochrane|Admiral Cochrane's]] advance towards New Orleans. ||| ||| ||| +1 Cromwellian conquest of Ireland ||| Wars of the Three Kingdoms ||| The '''Cromwellian conquest of Ireland''' or '''Cromwellian war in Ireland''' (1649–53) refers to the conquest of Ireland by the forces of the [[English Parliament]], led by [[Oliver Cromwell]], during the [[Wars of the Three Kingdoms]]. Cromwell landed in Ireland with his [[New Model Army]] on behalf of England's [[Rump Parliament]] in August 1649. ||| ||| ||| +1 Dekemvriana ||| Greek Civil War ||| The clashes were limited to Athens, and elsewhere in Greece the situation remained tense, but peaceful. The ''Dekemvriana'' ended with the defeat of EAM-ELAS, leading to its disarmament in the [[Varkiza Agreement]]. This first defeat broke the power of EAM, and was followed by a period of '[[White Terror (Greece)|White Terror]]' that contributed to the outbreak of the [[Greek Civil War]] in 1946. ||| ||| ||| +1 Draft:Offensive on Donetsk ||| War in Donbass ||| During the [[War in Donbass]], the [[Armed Forces of Ukraine]] launched an offensive on 21 July 2014 aimed at recapturing the city of [[Donetsk]] from insurgents affiliated with the self-proclaimed [[Donetsk People's Republic]]. ||| ||| ||| +1 Escape of the Provisional Revolutionary Government ||| Vietnam War ||| The '''Escape of the Provisional Revolutionary Government''' was a series of military operations conducted in eastern [[Cambodia]] during mid-1970 by the [[Republic of Vietnam]] (South Vietnam) during the [[Vietnam War]]. The objective was to search and destroy head corridor elements of the [[Provisional Revolutionary Government of the Republic of South Vietnam]] (PRG), [[Viet Cong|National Front for the Liberation of South Vietnam (NLF) or Viet Cong (VC)]] and [[Central Office for South Vietnam]] (COSVN). ||| ||| ||| +1 First Battle of Chattanooga ||| American Civil War ||| The '''First Battle of Chattanooga''' was a minor artillery battle in the [[American Civil War]], fought on June 7-8, 1862. ||| ||| ||| +1 First Battle of Picardy ||| Race to the Sea ||| The '''First Battle of Picardy''' {{nowrap|(22–26 September 1914)}} took place during the mistakenly-named [[Race to the Sea]] {{nowrap|(17 September – 19 October)}} and the [[First Battle of the Aisne]] {{nowrap|(13 September – 28 September),}} a Franco-British counter-offensive, which followed the [[Battle of the Frontiers]] (7 August–13 September) and the [[German Empire|German]] advance into [[France]] during the [[Great Retreat]], which ended at the [[First Battle of the Marne]] {{nowrap|(5–12 September).}}{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} The term describes reciprocal attempts by the Franco-British and German armies, to envelop the northern flank of the opposing army, through [[Picardy]], [[Artois]] and [[Flanders]]. ||| ||| ||| +1 First Battle of Porto ||| Peninsular War ||| In the '''First Battle of Porto''' (28 March 1809) the [[First French Empire|French]] under [[Nicolas Jean de Dieu Soult|Marshal Soult]] defeated the [[Portugal|Portuguese]], under General Parreiras, outside the city of [[Porto]] during the [[Peninsular War]]. Soult followed up his success by storming the city. ||| ||| ||| +1 First Battle of Rappahannock Station ||| American Civil War ||| The '''First Battle of Rappahannock Station''', also known as '''Waterloo Bridge''', '''White Sulphur Springs''', '''Lee Springs''', or '''Freeman's Ford''', took place from August 22 to August 25, 1862, in [[Culpeper County, Virginia|Culpeper County]] and [[Fauquier County, Virginia]], as part of the [[Northern Virginia Campaign]] of the [[American Civil War]]. ||| ||| ||| +1 First English Civil War ||| English Civil War ||| The '''First English Civil War''' (1642–1646) began the series of three wars known as the [[English Civil War]] (or 'Wars'). 'The English Civil War' was a series of armed conflicts and political machinations that took place between [[Roundhead|Parliamentarians]] and [[Cavalier|Royalist]]s from 1642 until 1651, and includes the [[Second English Civil War]] (1648-1649) and the [[Third English Civil War]] (1649-1651). ||| ||| ||| +1 First Siege of Zaragoza ||| Peninsular War ||| The '''First Siege of Zaragoza''' (also called ''Saragossa'') was a bloody struggle in the [[Peninsular War]] (1807–1814). A [[France|French]] army under General [[Charles Lefebvre-Desnouettes|Lefebvre-Desnouettes]] and subsequently commanded by General [[Jean-Antoine Verdier]] besieged, repeatedly stormed, and was repulsed from the [[Spain|Spanish]] city of Zaragoza in the summer of 1808. ||| ||| ||| +1 Greek Resistance ||| World War II ||| The '''Greek Resistance''' ({{lang-el|Εθνική Αντίσταση}}, i.e., 'National Resistance') is the blanket term for a number of armed and unarmed groups from across the political spectrum that resisted the [[Axis occupation of Greece]] in the period 1941–1944, during [[World War II]]. The Greek resistance is widely considered to be one of the fiercest resistance movements in occupied Europe, if not the fiercest, causing innumerable damages to the then Axis government of Greece. ||| ||| ||| +1 Grey's raid ||| American Revolutionary War ||| In September 1778, as part of [[Kingdom of Great Britain|British]] operations in the [[American Revolutionary War]], Major General [[Charles Grey, 1st Earl Grey|Charles Grey]] raided the [[Massachusetts]] communities of [[New Bedford, Massachusetts|New Bedford]], [[Fairhaven, Massachusetts|Fairhaven]] and [[Martha's Vineyard]]. The raid was one of the first in a series between 1778 and 1781 executed by the British against American coastal communities. ||| ||| ||| +1 Incident at Pristina airport ||| Kosovo War ||| The '''Incident at Pristina airport''' was a confrontation between the [[NATO]] forces and [[Russia]]n forces over the [[Pristina International Airport Adem Jashari|Pristina International Airport]] on 12 June 1999, in the aftermath of the [[Kosovo War]]. Russian troops occupied the airport ahead of a NATO deployment, resulting in a tense stand-off, which was resolved peacefully. ||| ||| ||| +1 July 1936 military uprising in Barcelona ||| Spanish Civil War ||| The '''July 1936 military uprising in Barcelona''' was a military uprising in [[Barcelona]], the [[Capital city|capital]] and main city of [[Catalonia]], [[Spain]] on 19 July 1936 which contributed to the start of the [[Spanish Civil War]]. Most of the army officers in the city supported the coup, but the [[Civil Guard (Spain)|Civil Guard]] and the Assault Guard (''[[Guardia de Asalto]]'') remained loyal to the government. Furthermore, Barcelona was one of the strongholds of the anarchist union, the [[Confederación Nacional del Trabajo]] (CNT). The rebel troops were defeated after bloody combat. ||| ||| ||| +1 Juno Beach ||| Normandy landings ||| '''Juno''' or '''Juno Beach''' was one of five beaches of the [[Allies (World War II)|Allied]] invasion of [[German occupation of France during World War II|German occupied France]] in the [[Normandy landings]] on 6 June 1944, during the [[Second World War]]. The beach spanned from [[Courseulles-sur-Mer|Courseulles]], a village just east of the British beach [[Gold Beach|Gold]], to [[Saint-Aubin-sur-Mer, Calvados|Saint-Aubin-sur-Mer]], just west of the British beach [[Sword Beach|Sword]]. Taking Juno was the responsibility of the [[3rd Canadian Infantry Division]], and [[British Commandos|commandos]] of the [[Royal Marines]], all under the command of British [[I Corps (United Kingdom)|I Corps]], with support from Naval Force J, the Juno contingent of the invasion fleet, including the [[Royal Canadian Navy]] (RCN). The objectives of the 3rd Division on D-Day were to cut the Caen-Bayeux road, seize the Carpiquet airport west of Caen, and form a link between the two British beaches of Gold and Sword on either side of Juno Beach. ||| ||| ||| +1 Kivu conflict ||| Rwandan Genocide ||| With the ending of the joint Rwandan-DROC offensive against Hutu militiamen responsible for the [[Rwandan Genocide|1994 Genocide in Rwanda]], the Kivu conflict effectively ended. On 23 March 2009, the NCDP signed a peace treaty with the government, in which it agreed to become a political party in exchange for the release of its members. ||| Timeline ||| Capture of Nkunda and peace treaty ||| +1 Mayoyao, Ifugao ||| World War II ||| This included the Filipino troops of the 1st, 2nd, 11th, 12th, 13th, 15th and 16th Infantry Division of the Philippine Commonwealth Army, 1st Infantry Regiment of the Philippine Constabulary, 11th and 14th Infantry Regiment of the United States Armed Forces in the Philippines - Northern Luzon or USAFIP-NL and the American bomber pilots of the [[United States Army Air Forces]] was fought against the Japanese Imperial forces during the Battle of Mayoyao Ridge until the end of [[World War II]]. ||| History ||| Battle of Mayoyao Ridge ||| +1 Moro River Campaign ||| World War II ||| The '''Moro River Campaign''' was an important battle of the [[Italian Campaign (World War II)|Italian Campaign]] during the [[World War II|Second World War]] fought between units of the [[Eighth Army (United Kingdom)|British Eighth Army]] and the [[LXXVI Panzer Corps (Germany)|LXXVI Panzer Corps]] (''LXXVI Panzerkorps'') of the [[10th Army (Wehrmacht)|German Tenth Army]] (''10. Armee''). Lasting from 4–26 December 1943, the campaign occurred primarily in the vicinity of the [[Moro (Italian river)|Moro River]] in eastern [[Italy]]. The campaign was designed as part of an offensive launched by [[British Army|British]] [[General (United Kingdom)|General]] [[Harold Alexander, 1st Earl Alexander of Tunis|Harold Alexander]] with the intention of breaching the [[Wehrmacht|German]] [[Winter Line]] defensive system and advancing to [[Pescara]] — and eventually [[Rome]]. ||| ||| ||| +1 Naval Battle of Vella Lavella ||| World War II ||| The {{nihongo|'''Battle of Vella Lavella'''|第二次ベララベラ海戦|Dainiji Berarabera kaisen}} was a [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]] fought on the night of 6 October 1943, near the island of [[Vella Lavella]] in the [[Solomon Islands]]. ||| ||| ||| +1 New Fourth Army incident ||| Chinese Civil War ||| The '''New Fourth Army Incident''' (新四軍事件), also known as the '''[[Anhui|Wannan]] Incident''' (皖南事变), occurred in China in January 1941 during the [[Second Sino-Japanese War]], during which the [[Chinese Civil War]] was in theory suspended, uniting the [[Chinese Communist Party|Communist]]s and [[Kuomintang|Nationalist]]s against the [[Japan]]ese. It is significant as the end of real cooperation between the Nationalists and Communists. ||| ||| ||| +1 Occupy Reykjavík ||| Occupy movement ||| An actual occupation of a public square began on 15 October 2011, linked to the worldwide [[Occupy movement]]. ||| Protests ||| ||| +1 Occupy Wall Street ||| Occupy movement ||| '''Occupy Wall Street''' ('''OWS''') is the name given to a protest [[Social movement|movement]] that began on September 17, 2011, in [[Zuccotti Park]], located in [[New York City|New York City's]] [[Wall Street]] [[financial center|financial district]], receiving global attention and spawning the [[Occupy movement]] against [[social inequality|social]] and [[economic inequality]] worldwide. It was inspired by [[anti-austerity protests in Spain]] coming from the 15-M movement. ||| ||| ||| +1 Operation Basalt ||| World War II ||| '''Operation Basalt''' was a small British raid conducted during [[World War II]] on the [[Occupation of the Channel Islands|German occupied]] British [[Channel Island]] of [[Sark]]. ||| ||| ||| +1 Operation Bayonet Lightning ||| Iraq War ||| '''Operation Bayonet Lightning''' was a military operation during the early stages of the [[Iraq War]], that was held to capture weapons, materials, and people that posed a threat against [[Multi-National_Force_%E2%80%93_Iraq#Countries_that_deployed_troops_to_Iraq|coalition forces]]. The joint operation between Iraq and the United States, lasted approximately 16 hours, and was conducted on 2 December 2003. 1,200 soldiers from the [[173rd Airborne Brigade]], the [[4th Infantry Division (United States)|4th Infantry Division]], and Iraqi military participated. Operation Bayonet Lightning was concentrated on Al Hawija, Iraq, and the village of [[Rashad|Rashad, Iraq]], sixty kilometers, or thirty-seven miles, to the south of [[Kirkuk|Kirkuk, Iraq]]. ||| ||| ||| +1 Operation Brevity ||| World War II ||| '''Operation Brevity''' was a limited offensive conducted in mid-May 1941, during the [[Western Desert Campaign]] of the [[World War II|Second World War]]. Conceived by the commander-in-chief of the British [[Middle East Command]], General [[Archibald Wavell]], Brevity was intended to be a rapid blow against weak [[Axis powers|Axis]] front-line forces in the [[Sallum|Sollum]]–[[Fort Capuzzo|Capuzzo]]–[[Bardia, Libya|Bardia]] area of the border between Egypt and Libya. Although the operation got off to a promising start, throwing the Axis high command into confusion, most of its early gains were lost to local counter-attacks, and with German reinforcements being rushed to the front the operation was called off after one day. ||| ||| ||| +1 Operation Dawn 8 ||| First Battle of al-Faw ||| '''Operation Dawn 8''' was an [[Armed Forces of the Islamic Republic of Iran|Iranian military]] operation conducted during the [[Iran–Iraq War]], part of the [[First Battle of al-Faw]]. ||| ||| ||| +1 Operation Harpoon (1942) ||| World War II ||| '''Operation Harpoon''' was one of two simultaneous Allied [[Malta Convoys|convoy]]s sent to supply [[Malta]] in the Axis-dominated [[Mediterranean Sea]] in mid-June 1942, during the [[World War II|Second World War]]. One convoy, [[Operation Vigorous]], left [[Alexandria]]. The other, Operation Harpoon, travelled in the opposite direction from [[Gibraltar]]. Both convoys met with fierce Axis opposition and only two of ''Harpoon''′s six merchant ships completed the journey, at the cost of several Allied warships. ||| ||| ||| +1 Operation Junction City ||| Vietnam War ||| '''Operation Junction City''' was an 82-day [[military operation]] conducted by United States and [[Republic of Vietnam]] (RVN or South Vietnam) forces begun on 22 February 1967 during the [[Vietnam War]]. It was the largest U.S. [[airborne forces|airborne]] operation since [[Operation Varsity]] in March 1945, the only major airborne operation of the Vietnam War, and one of the largest U.S. operations of the war. ||| ||| ||| +1 Operation Mistral 2 ||| Bosnian War ||| '''Operation Mistral 2''', officially [[codename]]d '''Operation Maestral 2''', was a [[Croatian Army]] (''Hrvatska vojska'' – HV) and [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) offensive in western [[Bosnia and Herzegovina]] on 8–15 September 1995 as part of the [[Bosnian War]]. Its objective was to create a security buffer between Croatia and positions held by the [[Bosnian Serb]] [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS) and to put the largest Bosnian Serb-held city, [[Banja Luka]], in jeopardy by capturing the towns of [[Jajce]], [[Šipovo]] and [[Drvar]]. The combined HV and HVO forces were under the overall command of HV [[Major General]] [[Ante Gotovina]]. ||| ||| ||| +1 Operation Perch ||| World War II ||| '''Operation Perch''' was a British offensive of the [[World War II|Second World War]] which took place from {{nowrap|7–14 June 1944,}} during the [[Invasion of Normandy|Battle of Normandy]]. The operation was intended to encircle and seize the [[Nazi Germany|German]] occupied city of [[Caen]], which was an Allied D-Day objective in the early stages of the [[Operation Overlord]]. Operation Perch was to begin immediately after the British beach landings with an advance to the south-east of Caen by [[XXX Corps (United Kingdom)|XXX Corps]]. Three days after the invasion the city was still in German hands and the operation was amended. The operation was expanded to include [[I Corps (United Kingdom)|I Corps]] for a [[Pincer movement|pincer attack]] on Caen. ||| ||| ||| +1 Operation Texas Star ||| Vietnam War ||| '''Operation Texas Star''' was a military operation of the [[Vietnam War]] in the [[A Shau Valley]] and the mountains east of the valley from 1 April to 5 September 1970. ||| ||| ||| +1 Operation Vulcan ||| World War II ||| During the [[World War II|Second World War]], '''Operation Vulcan''' was the final ground attack against German forces in [[Tunis]],{{sfn|Williams|1999|p=105}} [[Cap Bon]], and [[Bizerte]], [[Tunisia]], the last Axis toeholds in [[North Africa]]. German Field Marshal [[Erwin Rommel]] believed that the Axis position in Tunisia was untenable, and he had recommended the evacuation of all German troops to Italy, where he believed they could be more useful. His advice was rejected by Hitler. In addition, the Germans did not actually have the sea shipping capability or the control of the air to do this. ||| ||| ||| +1 Operation Winter Storm ||| World War II ||| '''Operation ''Winter Storm''''' ({{lang-de|Unternehmen Wintergewitter}}) was a [[Nazi Germany|German]] [[Offensive (military)|offensive]] in [[World War II]] in which the German [[4th Panzer Army]] unsuccessfully attempted to break the Soviet [[encirclement]] of the German [[6th Army (Wehrmacht)|6th Army]] during the [[Battle of Stalingrad]]. ||| ||| ||| +1 Point 175 ||| World War II ||| '''Point 175''' is a small rise just south of a desert track, the Trigh Capuzzo east of Sidi Rezegh and south of Zaafran with a good view of the vicinity. In early November 1941, the feature was held by German infantry of the ''Division z.b.V. Afrika'' (later named the [[90th Light Infantry Division (Wehrmacht)|90th Light ''Afrika'' Division]]). The New Zealanders and [[Infantry tanks]] of the [[1st Army Tank Brigade (United Kingdom)|1st Army Tank Brigade]] attacked and captured Point 175 on 23 November, during the Battle of Sidi Rezegh, which was part of [[Operation Crusader]] in the [[Western Desert Campaign]] of the [[World War II|Second World War]]. The New Zealand troops then attacked westwards and made contact with the Tobruk garrison, which had broken out to meet them. From 29 November – 1 December, the New Zealanders defended the point and the area to the west against Axis counter-attacks, intended to sever the link with the Tobruk garrison and regain control of the roads in the area. The new [[132nd Armoured Division Ariete|132nd Armoured Division ''Ariete'']] re-captured Point 175 late on 29 November. ||| ||| ||| +1 Prague uprising ||| World War II ||| The '''Prague uprising''' ({{lang-cs|Pražské povstání}}) was an attempt by the [[Czech resistance]] to liberate the city of [[Prague]] from [[Nazi Germany|German]] [[German occupation of Czechoslovakia|occupation]] during [[World War II]]. Events began on May 5, 1945, in the last moments of the [[World War II in Europe|war in Europe]]. The uprising went on until May 8, 1945, ending in a German victory and [[ceasefire]]. One day after the Germans conquered Prague, they surrendered on the arrival of the [[Red Army]]. ||| ||| ||| +1 Sack of Wexford ||| Irish Confederate Wars ||| Wexford was held by Irish Catholic forces throughout the [[Irish Confederate Wars]]. In the [[Irish Rebellion of 1641]], over 1500 local men mustered in the town for the rebels. In 1642, Lord Mountgarret, the local Commander of the [[Confederate Ireland|Confederate Catholic]] regime, ordered Protestants to leave Wexford. About 80 English Protestant refugees drowned when the boat evacuating them from Wexford sank. ||| Background ||| ||| +1 Safwan Airfield standoff ||| Gulf War ||| The '''Safwan Airfield standoff''' was a post-ceasefire standoff between the [[Iraq]]i and [[United States|U.S.]] forces at the end of the 1991 [[Gulf War]]. ||| ||| ||| +1 Second Battle of the Corunna Road ||| Spanish Civil War ||| The '''Second Battle of the Corunna Road''' ({{lang-es|Batalla de la [[Carretera Nacional N-VI|Carretera de Coruña]]}}) was a battle of the [[Spanish Civil War]] that took place from 13 December 1936 to 15 January 1937, northwest of [[Madrid]]. In December 1936, the Nationalists launched an offensive in order to cut the Corunna Road and isolate Madrid, but a Republican counter-offensive stopped the Nationalist advance. The Nationalists cut the Corunna road but failed to encircle Madrid. ||| ||| ||| +1 Second Italian War of Independence ||| Italian unification ||| The '''Second Italian War of Independence''', also called the '''Franco-Austrian War''', '''Austro-Sardinian War''' or '''Italian War of 1859''' ({{lang-fr|Campagne d'Italie}}), was fought by the [[Second French Empire]] and the [[Kingdom of Sardinia]] against the [[Austrian Empire]] in 1859 and played a crucial part in the process of [[Italian unification]]. ||| ||| ||| +1 Second Serbian Uprising ||| Serbian Revolution ||| The '''Second Serbian Uprising''' (1815-1817) was the second phase of the '''[[Serbian Revolution]]''' against the [[Ottoman Empire]], which erupted shortly after the re-annexation of the country to the [[Ottoman Empire]], in 1813. The occupation was enforced following the defeat of the [[First Serbian Uprising]] (1804-1813), during which Serbia existed as a ''de facto'' independent state for over a decade. The second revolution ultimately resulted in Serbian semi-independence from the [[Ottoman Empire]]. The [[Principality of Serbia]] was established, governed by its own parliament, constitution and royal dynasty. ''De jure'' independence followed during the second half of the 19th century. ||| ||| ||| +1 Second Sino-Japanese War ||| World War II ||| China fought Japan, with some economic help from Germany (see [[Sino-German cooperation until 1941]]), the [[Soviet Volunteer Group|Soviet Union]], the [[British Empire]] and the [[American Volunteer Group|United States]]. After the [[Attack on Pearl Harbor|Japanese attack on Pearl Harbor]] in 1941, the war would merge into the greater conflict of [[World War II]] as a major front of what is broadly known as the [[Pacific War]]. The Second Sino-Japanese War was the largest Asian war in the 20th century. It accounted for the majority of civilian and military casualties in the [[Pacific War]], with anywhere between 10 and 25 million Chinese civilians and over 4 million Chinese and Japanese military personnel dying from war-related violence, famine, and other causes (see [[World War II casualties]]). ||| ||| ||| +1 Shanghai massacre of 1927 ||| Chinese Civil War ||| By July 15, 1927, the Wuhan regime had also expelled the Communists in its ranks, effectively ending the KMT's four-year alliance with Soviet Russia and its cooperation with the Chinese Communist Party. During the remainder of 1927, the Communists launched several revolts in an attempt to win back power, marking the beginning of the [[Chinese Civil War]]. With the failure of the [[Guangzhou Uprising]] (December 11–13, 1927), the Chinese Communist Party's eclipse was complete; it was two decades before they were able to launch another major urban offensive. The incident was a key moment in the complex sequence of events that set the stage for the first ten years of the Nationalist government. ||| ||| ||| +1 Siege of Ancona ||| Neapolitan War ||| '''Siege of Ancona''' was a battle in the [[Neapolitan War]].It took place beginning on May 5, 1815 and persisted until May 30, 1815. ||| ||| ||| +1 Siege of Astorga ||| Peninsular War ||| The '''Siege of Astorga''' was an attempt by French forces to capture [[Astorga, Spain|Astorga]], Spain in a campaign of the [[Peninsular War]]. Astorga was located on the flank of the French invasion of Spain and Portugal, and was meant to be used as a headquarters during the campaign. For several weeks no attack took place, as neither side had artillery enough to fight well. Shortly after the French guns arrived, however, a hole was made in the wall and the city fell shortly thereafter. The French overpowered the Spanish garrison inside and took the city on April 20, 1810; with a loss of 160 men. ||| ||| ||| +1 Siege of Bjelovar Barracks ||| Battle of the Barracks ||| The '''Siege of Bjelovar Barracks''', also known by the [[codename]] '''Operation Bilogora''' ({{lang-hr|Operacija Bilogora}}), was the blockade and capture of the [[Yugoslav People's Army]] (JNA) barracks and other facilities in and around the city of [[Bjelovar]], a part of the JNA 32nd ([[Varaždin]]) Corps, during the [[Croatian War of Independence]]. A general blockade of the JNA facilities in Croatia was ordered on 14 September 1991, and it continued until 29 September when the JNA garrison was captured by Croatian forces. Its capture occurred one week after the [[Siege of Varaždin Barracks|bulk of the 32nd Corps surrendered]]. It was part of the [[Battle of the Barracks]]—an effort by Croatian armed forces to isolate JNA units based at barracks in Croatia, or capture the barracks to provide arms for Croatia's nascent army. ||| ||| ||| +1 Siege of Boonesborough ||| American Revolutionary War ||| The '''Siege of Boonesborough''' took place in September 1778 during the [[American Revolutionary War]]. The attack on the [[Kentucky]] settlement of [[Boonesborough, Kentucky|Boonesborough]] was led by [[Chief Blackfish]], a [[Shawnee]] leader allied to the [[Kingdom of Great Britain|British]]. Months before the battle, Blackfish had captured and adopted [[Daniel Boone]], the founder of Boonesborough. Boone escaped the Shawnees in time to lead the defense of the settlement. Blackfish's siege was unsuccessful and was lifted after ten days. Boone was then [[court-martial]]ed by fellow officers who suspected him of having British sympathies. Boone was acquitted, but he soon moved away from Boonesborough. ||| ||| ||| +1 Siege of Cambrai (1677) ||| Franco-Dutch War ||| In 1672, [[Franco-Dutch War|hostilities resumed]] against the Republic of the Protestant Netherlands. With a professional army well paid and well organized which includes more than 279,000 men, boasting a powerful artillery, the French monarchy was then the best army in Europe. Facing it, the strongholds of the Spanish Netherlands were defended by a few thousand men, often poorly paid mercenaries, and bourgeois companies offering little more than their courage. ||| Background ||| ||| +1 Siege of Detroit ||| War of 1812 ||| The '''Siege of Detroit''', also known as the '''Surrender of Detroit,''' or the '''Battle of Fort Detroit''', was an early engagement in the Anglo-American [[War of 1812]]. A [[United Kingdom of Great Britain and Ireland|British]] force under Major General [[Isaac Brock]] with [[Native Americans in the United States|Native American]] allies under the Shawnee leader, [[Tecumseh]], used bluff and deception to intimidate the American Brigadier General [[William Hull]] into surrendering the [[Fort Shelby (Michigan)|fort]] and town of [[Detroit, Michigan]], and a dispirited army which nevertheless outnumbered the victorious British and Native Americans. ||| ||| ||| +1 Siege of Fort Mackinac ||| War of 1812 ||| The '''Siege of Fort of Mackinac''' was one of the first engagements of the [[War of 1812]]. A [[United Kingdom of Great Britain and Ireland|British]] and [[Native Americans in the United States|Native American]] force captured the island soon after the outbreak of war between Britain and the [[United States]]. Encouraged by the easy British victory, more Native Americans subsequently rallied to their support. Their cooperation was an important factor in several British victories during the remainder of the war. ||| ||| ||| +1 Siege of Fort St. Jean ||| American Revolutionary War ||| The '''Siege of Fort St. Jean''' (also called '''St. John''', '''St. Johns''', or '''St. John's''') was conducted by American Brigadier General [[Richard Montgomery]] on the town and [[Fort Saint-Jean (Quebec)|fort]] of [[Saint-Jean-sur-Richelieu|Saint-Jean]] in the [[United Kingdom|British]] [[province of Quebec (1763-1791)|province of Quebec]] during the [[American Revolutionary War]]. The [[siege]] lasted from September 17 to November 3, 1775. ||| ||| ||| +1 Siege of Freetown ||| Sierra Leone Civil War ||| The '''Siege of Freetown''' was a battle during the [[Sierra Leone Civil War]]. It began when [[Johnny Paul Koroma]] took over the power from [[Ahmad Tejan Kabbah]] and began a dictatorship. In response, [[ECOMOG]] troops, led by [[Nigeria]], helped the [[Sierra Leone Army]] to attack and remove Koroma from power and Kabbah was elected back in post. In revenge, Koroma's allies, the [[Revolutionary United Front|RUF]], assaulted the city but were forced to retreat. ||| ||| ||| +1 Siege of Lydenburg ||| First Boer War ||| The '''Siege of Lydenburg''' was a siege carried out by the [[Boer Republics|Boer Republic]] of [[South African Republic|Transvaal]] on [[Lydenburg]], modern day [[South Africa]], between January and March 1881 during the [[First Boer War]]. Despite fierce British resistance, the town fell to the Boers following British defeat during the First Boer War. The siege lasted 84 days. ||| ||| ||| +1 Siege of Marabastad ||| First Boer War ||| The '''Siege of Marabastad''' was a siege on Fort [[Marabastad, Pretoria|Marabastad]], present day [[South Africa]], carried out by the [[Boer Republics|Boer Republic]] of [[South African Republic|Transvaal]], starting on 11 January 1881, and ending with British surrender on 2 April 1881. It took place during the [[First Boer War]], in which Boers besieged several British garrisons across the country. ||| ||| ||| +1 Siege of Nicaea ||| First Crusade ||| The '''Siege of Nicaea''' took place from May 14 to June 19, 1097, during the [[First Crusade]]. ||| ||| ||| +1 Siege of Prague (1742) ||| War of the Austrian Succession ||| The '''1742 Siege of Prague''' was an extended blockade of the [[Bohemia]]n capital during the [[War of the Austrian Succession]]. ||| ||| ||| +1 Siege of the Acropolis (1826–27) ||| Greek War of Independence ||| The '''Siege of the Acropolis''' in 1826–1827 during the [[Greek War of Independence]] involved the siege of the [[Acropolis of Athens]], the last fortress still held by the Greek rebels in [[Central Greece]], by the forces of the [[Ottoman Empire]]. ||| ||| ||| +1 South-East Asian theatre of World War II ||| World War II ||| The '''South-East Asian [[Theater (warfare)|Theatre]] of [[World War II]]''' was the name given to the campaigns of the '''[[Pacific War]]''' in [[Burma]], [[British Ceylon|Ceylon]], [[British India|India]], [[Thailand]], [[French Indochina|Indochina]], [[British Malaya|Malaya]] and [[Singapore]]. Purposes of the conquest of these countries included the securing of natural resources such as [[rubber]] and [[petroleum]] from the European colonies in the region. Conflict in the theatre began when the [[Empire of Japan]] invaded [[French Indochina]] in September 1940, the war went to a new level with the Raid on Pearl Harbor, and simultaneous attacks on Hong Kong, the Philippines, [[Japanese Invasion of Thailand|Thailand]], Singapore and [[Battle of Malaya|Malaya]] on 7/8 December 1941. The main landing at Singora (now [[Songkhla]]) on the east side of the [[Isthmus of Kra]] preceded the bombing of Pearl Harbor by several hours. Action in the theatre officially ended on 9 September 1945. ||| ||| ||| +1 USS Boston vs Berceau ||| Quasi-War ||| The '''Action between the USS ''Boston'' and ''Berceau''''', was a [[single ship action]] off [[Guadeloupe]], during the [[Quasi-War]] with [[France]]. {{USS|Boston|1799|6}} (32 guns), Capt. George Little, captured the French [[corvette]] {{ship|French corvette|Berceau|1794|2}}, ''capitaine de frégate'' Louis-Andre Senez. Cruising 600 miles northeast of Guadeloupe in the morning of 12 October, ''Boston'', spotted two vessels that by 8:00 A.M. were determined to be warships, a schooner (not identified) and the 24-gun ''Berceau'', which then headed in different directions. ||| ||| ||| +1 USS Delaware vs La Croyable ||| Quasi-War ||| On July{{nbsp}}8 ''Delaware'' made her way back up the [[Delaware River]] with her prize and docked at [[Fort Mifflin]]. After executing the first American victory of the [[Quasi-War]], Decatur became a hero. He boasted of his catch to several people, including Captain [[John Barry (naval officer)|John Barry]] of USS ''United States''. ''La Croyable'' was deemed a lawful capture by the U.S. government and renamed USS ''Retaliation''. She was given to the command of Lieutenant [[William Bainbridge]]. Bainbridge would join a fleet of American ships in the [[Caribbean]] on October 15. Later in November however, the French frigates {{ship|French frigate|Volontaire|1796|2}} and {{ship|French frigate|Insurgente|1793|2}} attacked USS ''Retaliation'', capturing her. This was the only American vessel to be captured during the entire Quasi-War. ||| ||| ||| +1 Union blockade ||| American Civil War ||| The '''Union blockade''' in the [[American Civil War]] was a naval strategy by the [[United States]] to prevent the [[Confederate States of America|Confederacy]] from trading. ||| ||| ||| +1 United States Army Air Forces in Australia ||| World War II ||| During [[World War II]], the [[United States Army Air Forces]] established a series of airfields in Australia for the collective defense of the country, as well as for conducting offensive operations against the Imperial Japanese Army and Navy. It was from these airports and airfields in Australia, that [[Fifth Air Force]] was able to regroup, re-equip and begin offensive operations against the [[Empire of Japan]] after the disasters in the [[Philippines]] and [[Dutch East Indies]] during 1942. ||| ||| ||| +1 Volnovakha bus attack ||| War in Donbass ||| The '''Volnovakha bus attack''' was an attack on a highway checkpoint near the village of Buhas outside of the [[Volnovakha]] municipality in the [[Donetsk Oblast]], [[Ukraine]] on 13 January 2015. It resulted in the deaths of 12 passengers of an intercity bus and injuries to 18 others in the area. The attack was the largest single loss of life since the signing of the [[Minsk Protocol]] in September 2014, which attempted to halt the ongoing [[War in Donbass]]. The incident has been labeled an 'act of terror' by both the Ukrainian authorities ||| ||| ||| +1 Western New Guinea campaign ||| World War II ||| The '''Western New Guinea campaign''' was a series of actions in the [[New Guinea campaign]] of [[World War II]]. [[United States]] and [[Australia]]n forces assaulted [[Empire of Japan|Japanese]] bases and positions in the northwest coastal areas of [[Netherlands New Guinea]] and adjoining parts of the Australian [[Territory of New Guinea]]. The campaign began with [[Operations Reckless and Persecution]], which were [[amphibious landing]]s by the [[I Corps (United States)|U.S. I Corps]] at [[Jayapura|Hollandia]] and [[Aitape]] on 22 April 1944. Fighting in western [[New Guinea]] continued until the end of the war. ||| ||| ||| +1 Šiauliai Offensive ||| Operation Bagration ||| The '''Šiauliai Offensive''' ({{lang-ru|Шяуляйская наступательная}}) was an operation of the Soviet forces of the [[1st Baltic Front]], commanded by General [[Hovhannes Bagramyan]], conducted from July 5 to August 29, 1944, during the [[Second World War]]. It was part of the third phase of the [[Operation Bagration|Belorussian Strategic Offensive Operation]] (also known as [[Operation Bagration]]), and drove German troops from much of [[Lithuania]], with the main tactical objective of the city of [[Šiauliai]] ({{lang-ru|Шяуля́й}}, ''Šiauliai '' ; {{lang-de|Schaulen}}). ||| ||| ||| diff --git a/openks/data/SeRI_mod/sentence_pair.dat b/openks/data/SeRI_mod/sentence_pair.dat new file mode 100644 index 00000000..2e994d28 --- /dev/null +++ b/openks/data/SeRI_mod/sentence_pair.dat @@ -0,0 +1 @@ + -1 Winter War ||| Battle of Petsamo (1939) ||| In battles from Ladoga Karelia all the way north to the Arctic port of [[Battle of Petsamo (1939)|Petsamo]], the Finns used guerrilla tactics. The Red Army was superior in numbers and [[materiel]], but the Finns used the advantages of speed, tactics, and [[economy of force]]. Particularly on the Ladoga Karelia front and during the [[battle of Raate road]], the Finns isolated smaller portions of numerically superior Soviet forces. With Soviet forces divided into smaller pieces, the Finns could deal with them individually and attack from all sides. ||| Defence of Finland ||| Finnish tactics ||| \ No newline at end of file diff --git a/openks/data/SeRI_mod/test_pair.dat b/openks/data/SeRI_mod/test_pair.dat new file mode 100644 index 00000000..235dcfdb --- /dev/null +++ b/openks/data/SeRI_mod/test_pair.dat @@ -0,0 +1,1671 @@ +-1 2003 invasion of Iraq ||| Battle of Umm Qasr ||| The [[Battle of Umm Qasr]] was the first military confrontation in the Iraq War, with its objective the capture of the port. [[Poland|Polish]] [[GROM]] troops supported the amphibious assault on Umm Qasrby with the British [[3 Commando Brigade]] of the [[Royal Marines]], and the US [[15th Marine Expeditionary Unit]]. ||| Coalition and Allied contingent involvement ||| Poland ||| +-1 Allied invasion of Italy ||| Operation Baytown ||| ''[[Operation Baytown]]'' was the preliminary step in the plan in which the British Eighth Army, under [[General (United Kingdom)|General]] [[Sir]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] would depart from the port of [[Messina]] on Sicily, to cross the Straits of Messina and land near the tip of [[Calabria]] (the 'toe' of Italy), on 3 September 1943. The short distance from Sicily meant [[landing craft]] could launch from there directly, rather than be carried by ship. The [[5th Infantry Division (United Kingdom)|British 5th Infantry Division]] of [[XIII Corps (United Kingdom)|XIII Corps]], under [[Lieutenant-general (United Kingdom)|Lieutenant-General]] [[Miles Dempsey|Miles C. Dempsey]], would land on the north side of the 'toe' while its [[1st Canadian Division|1st Canadian Infantry Division]] would land at Cape Spartivento on the south side. Montgomery was strongly opposed to ''Operation Baytown''. He predicted it would be a waste of effort since it assumed the Germans would give battle in Calabria; if they failed to do so, the diversion would not work, and the only effect of the operation would be to place the Eighth Army {{convert|300|mi|km|abbr=on}} south of the main landing at [[Salerno]]. He was proved correct; after ''Operation Baytown'' the British Eighth Army marched 300 miles north to the Salerno area against no opposition other than engineer obstacles. ||| Background ||| Allied plan ||| +-1 Allied invasion of Italy ||| Operation Slapstick ||| In the original planning, the great attraction of capturing the important port of [[Taranto]] in the 'heel' of Italy had been evident and an assault had been considered but rejected because of the very strong defenses there. However, with the signing of the armistice with the Italians on 3 September the picture changed. It was decided to carry the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]] to Taranto using British warships, seize the port and several nearby airfields and follow up by shipping in [[V Corps (United Kingdom)|British V Corps]] and a number of fighter squadrons. The airborne division, which was undergoing training exercises in two locations {{convert|400|mi|km|abbr=on}} apart, was ordered on 4 September to embark on 8 September. With such short notice to create plans, ''[[Operation Slapstick]]'' was soon nicknamed ''Operation Bedlam''. ||| Background ||| Allied plan ||| +-1 Allied invasion of Sicily ||| Operation Ladbroke ||| * [[Operation Ladbroke]]: Glider landing at Syracuse on 9 July 1943. ||| Constituent operations ||| ||| +-1 American Civil War ||| Baltimore riot of 1861 ||| [[Maryland]] had numerous anti-Lincoln officials who tolerated anti-army [[Baltimore riot of 1861|rioting in Baltimore]] and the burning of bridges, both aimed at hindering the passage of troops to the South. (Maryland's legislature voted to stay in the Union, but also rejected hostilities with the South, voting to close Maryland's rail lines to prevent them from being used for war. ||| Outbreak of the war ||| Attitude of the Border states ||| +-1 American Civil War ||| Battle of Pea Ridge ||| While the Confederate forces had numerous successes in the Eastern Theater, they were defeated many times in the West. They were driven from Missouri early in the war as a result of the [[Battle of Pea Ridge]].{{sfn|McPherson|1988|pp=404–405}} [[Leonidas Polk]]'s invasion of [[Columbus, Kentucky|Columbus]], Kentucky ended Kentucky's policy of neutrality and turned that state against the Confederacy. [[Nashville, Tennessee|Nashville]] and central [[Tennessee]] fell to the Union early in 1862, leading to attrition of local food supplies and livestock and a breakdown in social organization. ||| War ||| Western theater ||| +-1 American Civil War ||| Second Battle of Bull Run ||| Maj. Gen. [[George B. McClellan]] took command of the Union [[Army of the Potomac]] on July 26 (he was briefly general-in-chief of all the Union armies, but was subsequently relieved of that post in favor of Maj. Gen. [[Henry Halleck|Henry W. Halleck]]), and the war began in earnest in 1862. Upon the strong urging of President Lincoln to begin offensive operations, McClellan attacked Virginia in the spring of 1862 by way of the [[Virginia Peninsula|peninsula]] between the [[York River (Virginia)|York River]] and [[James River]], southeast of Richmond. Although McClellan's army reached the gates of Richmond in the [[Peninsula Campaign]],{{sfn|Foote|1974|p=464–519}} {{sfn|McPherson|1988|pp=424–427}} [[Joseph E. Johnston|Johnston]] halted his advance at the [[Battle of Seven Pines]], then General [[Robert E. Lee]] and top subordinates [[James Longstreet]] and Stonewall Jackson defeated McClellan in the [[Seven Days Battles]] and forced his retreat.{{sfn|McPherson|1988|pp=538–544}} The [[Northern Virginia Campaign]], which included the [[Second Battle of Bull Run]], ended in yet another victory for the South.{{sfn|McPherson|1988|pp=528–533}} McClellan resisted General-in-Chief Halleck's orders to send reinforcements to [[John Pope (military officer)|John Pope's]] Union [[Army of Virginia]], which made it easier for Lee's Confederates to defeat twice the number of combined enemy troops. ||| War ||| Eastern theater ||| +-1 American Indian Wars ||| Battle of Bear Valley ||| * [[Battle of Bear Valley]] (1918) ||| West of the Mississippi (1811–1924) ||| ||| +-1 American Indian Wars ||| First Battle of Adobe Walls ||| The battles between settlers and Indians continued and in 1860, at the [[Battle of Pease River]], Texas militia destroyed an Indian camp. In the aftermath of the battle, the Texans learned that they had recaptured Cynthia Ann Parker, the little girl captured by the Comanche in 1836. She returned to live with the Parkers, but missed her children, including her son [[Quanah Parker]]. He was the son of Parker and Comanche Chief [[Peta Nocona]] and would go on to be a Comanche war chief at the [[First Battle of Adobe Walls]]. As chief of the Quahadi Comanches, he finally surrendered to the overwhelming force of the federal government and in 1875 moved to a reservation in southwestern [[Oklahoma]]. ||| West of the Mississippi (1811–1924) ||| Texas ||| +-1 American Indian Wars ||| Renegade period of the Apache Wars ||| ** [[Renegade period of the Apache Wars|Renegade Period]] (1879–1924) ||| West of the Mississippi (1811–1924) ||| ||| +-1 American Revolutionary War ||| Battle of Blue Licks ||| In March 1782, Pennsylvania militiamen killed about a hundred neutral Native Americans in the [[Gnadenhütten massacre]]. In the last major encounters of the war, a force of 200 Kentucky militia was defeated at the [[Battle of Blue Licks]] in August 1782. ||| Second phase, 1778–1781 ||| Northern and Western frontier ||| +-1 American Revolutionary War ||| Battle of Connecticut Farms ||| During the winter of 1779–80 the American army suffered worse hardships than they had at [[Valley Forge]] previously. The Congress was ineffective, the Continental currency worthless, and the supply system was fundamentally broken. Washington was finding it extremely difficult to keep his army together, even without any major fighting against the British. In 1780 actual mutinies broke out in the American camp. The Continental Army's strength dwindled to such an extent that the British decided to mount [[Battle of Connecticut Farms|two probing attacks]] against New Jersey in June 1780. The New Jersey militia strongly rallied, however, and the British quickly returned to their bases. ||| Second phase, 1778–1781 ||| Northern theater after Saratoga, 1778–1781 ||| +-1 American Revolutionary War ||| Battle of Kings Mountain ||| Cornwallis' efforts to advance into [[North Carolina]] were frustrated. A Loyalist wing of his army was utterly defeated at the [[Battle of Kings Mountain]] on October 7, 1780, which temporarily aborted his planned advance. He received reinforcements, but his light infantry under Tarleton was decisively defeated by [[Daniel Morgan]] at the [[Battle of Cowpens]] on January 17, 1781. In spite of this, Cornwallis decided to proceed, gambling that he would receive substantial Loyalist support. General [[Nathanael Greene]], who replaced General Gates, evaded contact with Cornwallis while seeking reinforcements. By March, Greene's army had grown to the point where he felt that he could face Cornwallis directly. In the key [[Battle of Guilford Court House]], Cornwallis drove Greene's much larger army off the battlefield, but in doing so suffered casualties amounting to one-fourth of his army. Compounding this, far fewer Loyalists were joining up than expected because the Patriots put heavy pressure on them and their families, who would become hostages. Cornwallis decided to retreat to coastal [[Wilmington, North Carolina]] for resupply and reinforcement, leaving the interior of the Carolinas and Georgia open to Greene. He then proceeded north into Virginia (see below). ||| Second phase, 1778–1781 ||| Georgia and the Carolinas, 1778–1781 ||| +-1 American Revolutionary War ||| Battles of Lexington and Concord ||| The war had its origins in the resistance of many Americans to taxes imposed by the British parliament, [[No taxation without representation|which they claimed were unconstitutional]]. Patriot protests escalated into boycotts and the destruction of a shipment of tea at the [[Boston Tea Party]]. The British government punished Massachusetts by closing the port of Boston and taking away self-government. The Patriots responded by [[Suffolk Resolves|setting up a shadow government]] that took control of the province outside of Boston. Twelve other colonies supported Massachusetts, formed a [[Continental Congress]] to coordinate their resistance, and set up committees and conventions that effectively seized power from the royal governments. In April 1775 fighting broke out between Massachusetts militia units and British regulars [[Battles of Lexington and Concord|at Lexington and Concord]]. The Continental Congress appointed General [[George Washington]] to take charge of militia units besieging British forces in Boston, forcing them to evacuate the city in March 1776. Congress supervised the war, giving Washington command of the new Continental Army; he also coordinated state militia units. ||| ||| ||| +-1 American Revolutionary War ||| Siege of Fort Ticonderoga (1777) ||| Burgoyne set off in June, and [[Siege of Fort Ticonderoga (1777)|recaptured Fort Ticonderoga]] in early July. Thereafter, his march was slowed by the Americans who knocked down trees in his path, and by his army's extensive baggage train. A detachment sent out to seize supplies was decisively defeated in the [[Battle of Bennington]] by American militia in August, depriving Burgoyne of nearly 1,000 men. ||| First phase, 1775–1778 ||| Campaigns of 1777–1778 ||| Upstate New York +-1 American Revolutionary War ||| Siege of Yorktown ||| In 1778, having failed in the northern states, the British shifted strategy toward the southern colonies, where they planned to enlist many Loyalist regiments. British forces had initial success in bringing Georgia and South Carolina under control in 1779 and 1780, but the Loyalist surge was far weaker than expected. In 1781 British forces moved through Virginia, but their escape was blocked by a French [[Battle of the Chesapeake|naval victory]]. Washington took control of a [[Siege of Yorktown|Franco-American siege at Yorktown]] and captured the entire British force of over 7,000 men. The defeat at Yorktown finally turned the British Parliament against the war, and in early 1782 they voted to end offensive operations in North America. The war against France and Spain continued however, with the British defending Gibraltar against a long running Franco-Spanish siege, while the [[Royal Navy|British navy]] scored key victories, especially the [[Battle of the Saintes]] in 1782. In 1783, the [[Treaty of Paris (1783)|Treaty of Paris]] ended the war and recognized the sovereignty of the United States over the territory bounded roughly by what is now Canada to the north, [[Florida]] to the south, and the [[Mississippi River]] to the west. France gained its revenge and little else except a heavy national debt, while Spain acquired Great Britain's Florida colonies. ||| ||| ||| +-1 Anglo-Zulu War ||| Battle of Hlobane ||| Chelmsford ordered Sir Evelyn Wood's troops to attack the abaQulusi Zulu stronghold in Hlobane. Lieutenant Colonel [[Redvers Henry Buller|Redvers Buller]], led the [[Battle of Hlobane|attack on Hlobane]] on 28 March. However, as the Zulu main army of 20,000 men approached to help their besieged tribesmen, the British force began a retreat which turned into a rout and were pursued by 1,000 Zulus of the abaQulusi who inflicted some 225 casualties on the British force. ||| British invasion and repulse ||| ||| +-1 Anglo-Zulu War ||| Battle of Ulundi ||| Cetshwayo, knowing that the newly reinforced British would be a formidable opponent, attempted to negotiate a peace treaty. Chelmsford was not open to negotiations, as he wished to restore his reputation before Wolseley relieved him of command, and he proceeded to the royal kraal of Ulundi, intending to defeat the main Zulu army. On July 4, the armies clashed at the [[Battle of Ulundi]], and Cetshwayo's forces were decisively defeated. ||| Second invasion and the defeat of the Zulus ||| ||| +-1 Anglo-Zulu War ||| Siege of Eshowe ||| While the British central column under Chelmsford's command was thus engaged, the right flank column on the coast, under Colonel [[Charles Pearson (British Army officer)|Charles Pearson]], crossed the Tugela River, skirmished with a Zulu impi that was attempting to set up an ambush at the [[Siege of Eshowe#Prelude: Inyezane|Inyezane River]], and advanced as far as the deserted missionary station of Eshowe, which he set about fortifying. On learning of the disaster at Isandlwana, Pearson made plans to withdraw back beyond the Tugela River. However, before he had decided whether or not to put these plans into effect, the Zulu army managed to cut off his supply lines, and the [[Siege of Eshowe]] had begun. ||| British invasion and repulse ||| ||| +-1 Apache Wars ||| First Battle of Adobe Walls ||| Carleton then decided to move the Navajo and Apache to reservations. Initially he intended to make the [[Rio Grande]] valley safer for settlement and end the raids on travelers. He began by forcing various bands of Mescalero and Navajo onto the reservation at [[Fort Sumner]]. He enlisted [[Kit Carson]], one-time friend of the [[Navajo people|Navajo]], to round them up by destroying their crops and livestock, and forcing them on [[Long Walk of the Navajo|The Long Walk]] to Fort Sumner. Carleton later fought the [[First Battle of Adobe Walls]], the largest Indian War battle of the [[Great Plains]]. ||| Wars ||| Chiricahua Wars ||| +-1 Apache Wars ||| Jicarilla War ||| The [[Jicarilla War]] began in 1849 when a group of settlers were attacked and killed by a force of Jicarillas and Utes in northeastern New Mexico. A second massacre occurred in 1850, in which several mail carriers were massacred. It wasn't until 1853 that the army became involved. The army went on to fight at the [[Battle of Cieneguilla]], a significant Apache victory, and later the [[Battle of Ojo Caliente Canyon]], an American victory. ||| Wars ||| Jicarilla War ||| +-1 Arab separatism in Khuzestan ||| Ahvaz bombings ||| In 2005, a wide scale [[2005 Ahvaz unrest|unrest]] broke out in Ahvaz and the surrounding towns. Consequently, a series of [[Ahvaz bombings|bombings]] was carried out in Ahvaz and other cities in Iran, blamed upon Sunni Arab separatist groups of Khuzestan. ||| History ||| Civil unrests 2005-present ||| +-1 Aragonese Crusade ||| Battle of Les Formigues ||| The French soon experienced a reversal, however, at the hands of Peter III's admiral, [[Roger de Lauria]]. The French fleet was defeated and destroyed at the [[Battle of Les Formigues]]. As well, the French camp was hit hard by an epidemic of [[dysentery]]. Philip himself was afflicted. The heir to the French throne, [[Philip IV of France|Philip]], opened negotiations with Peter for free passage for the royal family through the [[Pyrenees]]. But the troops were not offered such passage and were decimated at the [[Battle of the Col de Panissars]]. The king of France himself died at [[Perpignan]], the capital of James of Majorca, and was buried in [[Narbonne]]. Peter did not long survive him. ||| ||| ||| +-1 Aragonese Crusade ||| Battle of the Col de Panissars ||| The French soon experienced a reversal, however, at the hands of Peter III's admiral, [[Roger de Lauria]]. The French fleet was defeated and destroyed at the [[Battle of Les Formigues]]. As well, the French camp was hit hard by an epidemic of [[dysentery]]. Philip himself was afflicted. The heir to the French throne, [[Philip IV of France|Philip]], opened negotiations with Peter for free passage for the royal family through the [[Pyrenees]]. But the troops were not offered such passage and were decimated at the [[Battle of the Col de Panissars]]. The king of France himself died at [[Perpignan]], the capital of James of Majorca, and was buried in [[Narbonne]]. Peter did not long survive him. ||| ||| ||| +-1 Bangladesh Liberation War ||| Battle of Boyra ||| Bangladesh conventional forces attacked border outposts. Kamalpur, Belonia and the [[Battle of Boyra]] are a few examples. 90 out of 370 BOPs fell to Bengali forces. Guerrilla attacks intensified, as did Pakistani and Razakar reprisals on civilian populations. Pakistani forces were reinforced by eight battalions from West Pakistan. The Bangladeshi independence fighters even managed to temporarily capture [[airstrip]]s at [[Lalmonirhat District|Lalmonirhat]] and [[Shalutikar]]. Both of these were used for flying in supplies and arms from India. Pakistan sent another five battalions from West Pakistan as reinforcements. ||| Liberation war ||| October–December ||| +-1 Battle of France ||| Battle of Zeeland ||| The French 7th Army failed to block the German armoured reinforcements from the [[9th Panzer Division (Wehrmacht)|9th ''Panzer'' division]], which reached [[Rotterdam]] on 13 May. That same day in the east, following the [[Battle of the Grebbeberg]] in which a Dutch counter-offensive to contain a German breach had failed, the Dutch retreated from the [[Grebbe line]] to the New Water Line. The Dutch Army, still largely intact, surrendered in the evening of 14 May after the [[Rotterdam Blitz|Bombing of Rotterdam]] by the ''Luftwaffe''. [[Heinkel He 111]] medium bombers of [[Kampfgeschwader 54|''Kampfgeschwader'' 54]] (Bomber Wing 54) destroyed the centre of the city, an act which has remained controversial. The Dutch Army considered its strategic situation to have become hopeless and feared further destruction of the major Dutch cities. The capitulation document was signed on 15 May. However, Dutch forces continued fighting [[Battle of Zeeland|in Zeeland]] (where the French army had entered) and in the [[Dutch empire|colonies]] while [[Wilhelmina of the Netherlands|Queen Wilhelmina]] established a [[government in exile]] in Britain. ||| ''Fall Gelb'' ||| Northern front ||| The Netherlands +-1 Battle of Kursk ||| Battle of Prokhorovka ||| The '''Battle of Kursk''' was a [[Second World War]] engagement between [[Nazi Germany|German]] and [[Soviet Union|Soviet]] forces on the [[Eastern Front (World War II)|Eastern Front]] near [[Kursk]] ({{convert|450|km|disp=or|sp=uk}} south-west of [[Moscow]]) in the Soviet Union during July and August 1943. The German offensive was code-named '''Operation Citadel''' ({{lang-de|Unternehmen Zitadelle}}) and led to one of the largest [[armored warfare|armoured clashes]] in history, the [[Battle of Prokhorovka]]. The German offensive was countered by two Soviet counter-offensives, [[Operation Polkovodets Rumyantsev]] ({{lang-ru|Полководец Румянцев}}) and [[Operation Kutuzov]] ({{lang-ru|Кутузов}}). For the Germans, the battle represented the final strategic offensive they were able to mount in the Eastern Front. For the Soviets, the victory gave the [[Red Army]] the strategic initiative for the rest of the war. ||| ||| ||| +-1 Battle of the Mediterranean ||| Battle of Cape Matapan ||| The [[Battle of Cape Matapan]] was a decisive Allied victory. It was fought off the coast of the [[Peloponnese]] in southern [[Greece]] from 27–29 March 1941 in which Royal Navy and [[Royal Australian Navy]] forces—under the command of the British Admiral [[Andrew Browne Cunningham|Andrew Cunningham]]—intercepted those of the Italian ''Regia Marina'' under Admiral [[Angelo Iachino]]. ||| History ||| Battle of Cape Matapan ||| +-1 Battle of the Mediterranean ||| Raid on Alexandria (1941) ||| Following the battle of Crete in the summer of 1941, the Royal Navy regained its ascendancy in the central Mediterranean in a series of successful convoy attacks, (including the [[Battle of the Duisburg Convoy|''Duisburg'' convoy]] and [[Battle of Cape Bon (1941)|Cap Bon]]), until the events surrounding the [[First Battle of Sirte]] and the [[Raid on Alexandria (1941)|Raid on Alexandria]] in December swung the balance of power towards the Axis. ||| History ||| Later actions ||| +-1 Burma Campaign ||| Battle of the Admin Box ||| Unlike previous occasions on which this had happened, the Allied forces stood firm against the attack and supplies were dropped to them by parachute. In the [[Battle of the Admin Box]] from 5 to 23 February, the Japanese concentrated on XV Corps' Administrative Area, defended mainly by line of communication troops but they were unable to deal with tanks supporting the defenders, while troops from 5th Indian Division broke through the [[Ngakyedauk Pass]] to relieve the defenders of the box. Although battle casualties were approximately equal, the result was a heavy Japanese defeat. Their infiltration and encirclement tactics had failed to panic Allied troops and as the Japanese were unable to capture enemy supplies, they starved. ||| The Balance Shifts 1943–1944 ||| Southern front 1943/44 ||| +-1 Chinese Civil War ||| Central Plains War ||| In 1930 the [[Central Plains War]] broke out as an internal conflict of the KMT. It was launched by [[Feng Yuxiang]], [[Yan Xishan]] and [[Wang Jingwei]]. The attention was turned to root out remaining pockets of Communist activity in a series of [[Encirclement Campaigns|encirclement campaigns]]. There were a total of five campaigns. The [[first Encirclement Campaign against Hubei-Henan-Anhui Soviet|first]] and [[second Encirclement Campaign against Honghu Soviet|second]] campaigns failed and the [[third Encirclement Campaign against Honghu Soviet|third]] was aborted due to the [[Mukden Incident]]. The [[fourth Encirclement Campaign against Hubei-Henan-Anhui Soviet|fourth campaign]] (1932–1933) achieved some early successes, but Chiang's armies were badly mauled when they tried to penetrate into the heart of Mao's [[Soviet Chinese Republic]]. During these campaigns KMT columns struck swiftly into Communist areas, but were easily engulfed by the vast countryside and were not able to consolidate their foothold. ||| Communist insurgency (1927&ndash;1937) ||| ||| +-1 Chinese Civil War ||| Pingjin Campaign ||| The [[Pingjin Campaign]] resulted in the Communist conquest of northern China. It lasted 64 days, from November 21, 1948, to January 31, 1949. ||| Resumed fighting (1946&ndash;1950) ||| Outbreak of War ||| +-1 Chinese Civil War ||| Wanshan Archipelago Campaign ||| The Communists' other amphibious operations of 1950 were more successful: they led to the [[Landing Operation on Hainan Island|Communist conquest of Hainan Island]] in April 1950, [[Wanshan Archipelago Campaign|capture of Wanshan Islands]] off the [[Guangdong]] coast (May–August 1950) and of [[Zhoushan Island]] off [[Zhejiang]] (May 1950). ||| Resumed fighting (1946&ndash;1950) ||| Fighting subsides ||| +-1 Crimean War ||| Battle of Alma ||| A large Russian assault on the allied supply base to the southeast, at [[Balaklava|Balaclava]] was rebuffed on 25 October 1854.{{rp|521–527}} The [[Battle of Balaclava]] is remembered in the UK for the actions of two British units. At the start of the battle, a large body of Russian cavalry charged the [[93rd Highlanders]], who were posted north of the village of Kadikoi. Commanding them was [[Colin Campbell, 1st Baron Clyde|Sir Colin Campbell]]. Rather than 'form square', the traditional method of repelling cavalry, Campbell took the risky decision to have his Highlanders form a single line, two men deep. Campbell had seen the effectiveness of the new [[Minié rifle|Minie rifles]], with which his troops were armed, at the [[Battle of Alma|Battle of the Alma]] a month before, and was confident his men could beat back the Russians. His tactics succeeded. ||| Battles ||| Battle of Balaclava ||| +-1 Crimean War ||| Battle of Inkerman ||| The shortage of men led to the failure of the British and French to follow up on the Battle of Balaclava which led directly to a much more bloody battle—the [[Battle of Inkerman]]. On 5 November 1854, the Russians attempted to raise the siege at Sevastopol with an attack against the allies which resulted in another allied victory. ||| Battles ||| Battle of Balaclava ||| +-1 Croatian War of Independence ||| 1991 protest in Split ||| Significant clashes from this period included the [[1991 siege of Kijevo|siege of Kijevo]], where over a thousand people were besieged in the inner Dalmatian village of Kijevo, and the [[Borovo Selo killings]], where Croatian policemen engaged Serb paramilitaries in the eastern Slavonian village of Borovo and suffered twelve casualties. On 6 May, the [[1991 protest in Split]] against the siege of Kijevo at the Navy Command in Split resulted in the death of a Yugoslav People's Army soldier. ||| Course of the war ||| 1991: Open hostilities begin ||| First armed incidents +-1 Eastern Front (World War II) ||| Battle of Berlin ||| The war was fought between Nazi Germany, its allies and Finland, against the Soviet Union. The conflict began on 22 June 1941 with the [[Operation Barbarossa]] offensive, when [[Axis powers|Axis]] forces crossed the borders described in the [[German–Soviet Nonaggression Pact]], thereby invading the Soviet Union. The war ended on 9 May 1945, when [[Wehrmacht|Germany's armed forces]] [[Unconditional surrender|surrendered unconditionally]] following the [[Battle of Berlin]] (also known as the [[Berlin Offensive]]), a strategic operation executed by the [[Red Army]]. The states that provided forces and other resources for the German war effort included the [[Axis Powers]] – primarily Romania, Hungary, Italy, pro-Nazi Slovakia, and Croatia. The [[anti-Soviet]] Finland, which had fought the [[Winter War]] against the Soviet Union, also joined the offensive. The ''Wehrmacht'' forces were also assisted by anti-[[Communist]] [[Partisan (military)|partisans]] in places like Western Ukraine, the [[Baltic states]], and later by [[Crimean Tatars]]. Among the most prominent volunteer army formations was the [[Blue Division|Spanish Blue Division]], sent by Spanish dictator [[Francisco Franco]] to keep his ties to the Axis intact. ||| Forces ||| ||| +-1 Eastern Front (World War II) ||| Battle of Moscow ||| This decision caused a severe leadership crisis. The German field commanders argued for an immediate offensive towards Moscow, but Hitler [[Lötzen decision|overruled them]], citing the importance of Ukrainian agricultural, mining and industrial resources, as well as the massing of Soviet reserves in the [[Gomel]] area between Army Group Centre's southern flank and the bogged-down Army Group South's northern flank. This decision, Hitler's 'summer pause', is believed to have had a severe impact on the [[Battle of Moscow]]'s outcome, by slowing down the advance on Moscow in favor of encircling large numbers of Soviet troops around Kiev. ||| Conduct of operations ||| Operation Barbarossa: Summer 1941 ||| +-1 Eastern Front (World War II) ||| Battle of Rostov (1941) ||| Army Group South pushed down from the Dnieper to the [[Sea of Azov]] coast, also advancing through [[Kharkov]], [[Kursk]], and [[Stalino]]. The 11th Army moved into the [[Crimea]] and took control of all of the [[peninsula]] by autumn (except [[Sevastopol]], which [[Siege of Sevastopol (1941–1942)|held out]] until 3 July 1942). On 21 November, the Germans [[Battle of Rostov (1941)|took Rostov]], the gateway to the [[Caucasus]]. However, the German lines were over-extended and the Soviet defenders counterattacked the 1st Panzer Army's spearhead from the north, forcing them to pull out of the city and behind the [[Mius River]]; the first significant German [[Withdrawal (military)|withdrawal]] of the war. ||| Conduct of operations ||| Moscow and Rostov: Autumn 1941 ||| +-1 Eastern Front (World War II) ||| Battle of the Dukla Pass ||| On 8 September 1944 the Red Army began an attack on the [[Battle of the Dukla Pass|Dukla Pass]] on the Slovak–Polish border. Two months later, the Soviets won the battle and entered Slovakia. The toll was high: 20,000 Red Army soldiers died, plus several thousand Germans, Slovaks and [[Czechoslovakia|Czechs]]. ||| Conduct of operations ||| Autumn 1944 ||| +-1 Eastern Front (World War II) ||| Operation Winter Storm ||| The Germans rushed to transfer troops to Russia for a desperate attempt to relieve Stalingrad, but the offensive could not get going until 12 December, by which time the 6th Army in Stalingrad was starving and too weak to break out towards it. [[Operation Wintergewitter|Operation Winter Storm]], with three transferred panzer divisions, got going briskly from [[Kotelnikovo]] towards the [[Aksai river]] but became bogged down {{convert|65|km|mi|abbr=on}} short of its goal. To divert the rescue attempt, the Soviets decided to smash the Italians and come down behind the relief attempt if they could; that operation starting on 16 December. What it did accomplish was to destroy many of the aircraft that had been transporting relief supplies to Stalingrad. The fairly limited scope of the Soviet offensive, although still eventually targeted on Rostov, also allowed Hitler time to see sense and pull Army Group A out of the Caucasus and back over the Don. ||| Conduct of operations ||| Stalingrad: Winter 1942 ||| +-1 Eastern Front (World War II) ||| Third Battle of Kharkov ||| On 31 January 1943, the 90,000 survivors of the 300,000-man 6th Army surrendered. By that time the Hungarian 2nd Army had also been wiped out. The Soviets advanced from the Don {{convert|500|km|mi|abbr=on}} to the west of Stalingrad, marching through Kursk (retaken on 8 February 1943) and Kharkov (retaken 16 February 1943). In order to save the position in the south, the Germans decided to abandon the Rzhev salient in February, freeing enough troops to make a successful [[riposte]] in eastern Ukraine. [[Manstein]]'s counteroffensive, strengthened by a specially trained [[II SS Panzer Corps|SS Panzer Corps]] equipped with [[Tiger I|Tiger tanks]], opened on 20 February 1943 and fought its way from [[Poltava]] [[Third Battle of Kharkov|back into Kharkov]] in the third week of March, when the spring thaw intervened. This left a glaring Soviet bulge ([[Salients, re-entrants and pockets|salient]]) in the front centered on Kursk. ||| Conduct of operations ||| Stalingrad: Winter 1942 ||| +-1 English Civil War ||| Battle of Adwalton Moor ||| In 1643 the Royalist forces won at [[Battle of Adwalton Moor|Adwalton Moor]], and gained control of most of [[Yorkshire]]. Subsequent battles in the west of England at [[Battle of Lansdowne|Lansdowne]] and at [[Battle of Roundway Down|Roundway Down]] also went to the Royalists. ||| First English Civil War (1642–1646) ||| ||| +-1 English Civil War ||| Second English Civil War ||| The '''English Civil War''' (1642–1651) was a series of armed conflicts and political machinations between Parliamentarians ('[[Roundhead]]s') and Royalists ('[[Cavalier]]s') in the [[Kingdom of England]] over, principally, the manner of its government. The [[First English Civil War|first]] (1642–46) and [[Second English Civil War|second]] (1648–49) wars pitted the supporters of [[Charles I of England|King Charles I]] against the supporters of the [[Long Parliament]], while the [[Third English Civil War|third]] (1649–51) saw fighting between supporters of [[Charles II of England|King Charles II]] and supporters of the [[Rump Parliament]]. The war ended with the Parliamentarian victory at the [[Battle of Worcester]] on 3 September 1651. ||| ||| ||| +-1 Finnish War ||| Battle of Revolax ||| Under Colonel [[Carl Johan Adlercreutz]] the Swedish army [[Battle of Siikajoki|counter-attacked at Siikajoki]] and began to halt the Russian offensive. Soon after at [[Battle of Revolax]] Swedish army under Colonel [[Johan Adam Cronstedt]] started the Swedish advance towards the South. These successes yielded promotion to Field Marshal to [[Wilhelm Mauritz Klingspor]]. Swedish advance was very slow however, as operations were mostly halted due to the thaw, the exception was the brigade under Colonel [[Johan August Sandels]] which swiftly advanced towards [[Kuopio]]. [[Nikolay Tuchkov]], a Russian general who was dispatched to the north of Finland, left garrisons in every fort on his way, thus reducing his unit to 4,000 troops, which proved insufficient to pacify the hostile country. The Finns rose up in guerrilla fighting as far as [[Hamina]] (in Russian '[[Old Finland]]'). ||| February – May 1808 ||| ||| +-1 First Anglo-Dutch War ||| Battle of Portland ||| Though the politicians were close to ending the conflict, the war had a momentum of its own. Over the winter of 1652-53, the English repaired their ships and considered their position. Robert Blake wrote the [[Sailing and Fighting Instructions]], a major overhaul of [[Naval tactics in the Age of Sail|naval tactics]], containing the first formal description of the [[line of battle]]. By February 1653 the English were ready to challenge the Dutch, and in the three-day [[Battle of Portland]] in March they drove them out of the Channel. Their success saw an abrupt end to the English desire for peace. On 18 March the States General sent a detailed peace proposal to the English Parliament, but it replied on 11 April by reiterating the same demands that had put off Pauw in June the previous year, to be accepted before negotiations were even to begin. The States General ignored this, and on 30 April asked for negotiations to begin in a neutral country; on 23 May Cromwell, having dissolved the pro-war ''[[Rump Parliament]]'', responded that he would receive Dutch envoys in London; on 5 June the States General decided to send them. ||| Conduct of the war ||| ||| +-1 First Anglo-Dutch War ||| Battle of Scheveningen ||| The final battle of the war was the costly [[Battle of Scheveningen]] in August. The Dutch desperately tried to break the English blockade; after heavy fighting with much damage on both sides, the defeated Dutch retreated to the [[Texel]], but the English had to abandon the blockade. Tromp was killed early in the battle, a blow to morale which increased the Dutch desire to end the war. Similar feelings arose in England. Although many had been enriched by the war (Dutch prizes taken during the war, about 1200 merchantmen or 8% of their total mercantile fleet, amounted to double the value of England's entire ocean-going merchant fleet) trade as a whole had suffered. Cromwell himself was exasperated that two Protestant nations should exhaust themselves in this useless conflict that he had started, while Catholic Spain profited. He decided to begin negotiations in earnest with the four Dutch envoys who had arrived in late June. Hostilities largely ended until the conclusion of peace. ||| Conduct of the war ||| ||| +-1 First Balkan War ||| Battle of Elli ||| The war's first major fleet action, the [[Battle of Elli]], was fought two days later, on {{OldStyleDate|16 December|1912|3 December}}. The Ottoman fleet, with four battleships, nine destroyers and six torpedo boats, sailed to the entrance of the straits. The lighter Ottoman vessels remained behind, but the battleship squadron moved on north under cover of the forts at [[Kumkale]] and engaged the Greek fleet, coming from Imbros, at 9:40. Leaving the older battleships to follow their original course, Kountouriotis led the ''Averof'' into independent action: utilizing her superior speed, she cut across the Ottoman fleet's bow. Under fire from two sides, the Ottomans were quickly forced to withdraw to the Dardanelles. ||| Operations ||| Greek theater ||| Naval operations in the Aegean and Ionian seas +-1 First Balkan War ||| Naval Battle of Kaliakra ||| | [[Naval Battle of Kaliakra]] ||| Reactions among the Great Powers ||| ||| +-1 First Carlist War ||| Battle of Aranzueque ||| In the European theatre all the great powers backed the Isabeline army, as many British observers wrote in their reports. Meanwhile, in the east, Carlist general [[Ramón Cabrera]] held the initiative in the war, but his forces were too few to achieve a decisive victory over the Liberal forces loyal to Madrid. In 1837 the Carlist effort culminated in the Royal Expedition, which reached the walls of Madrid, but subsequently retreated after the [[Battle of Aranzueque]]. ||| The war in the Northern Front ||| ||| +-1 First Carlist War ||| Battle of Ramales ||| *[[Battle of Ramales]] (May 13, 1839) - Liberal victory ||| Battles of the First Carlist War (Chronology) ||| ||| +-1 First Peloponnesian War ||| Battle of Oenophyta ||| The war began in 460 BC ([[Battle of Oenoe]]). At first the Athenians had the better of the fighting, winning the naval engagements using their superior fleet. They also had the better of the fighting on land, until 457 BC when the Spartans and their allies defeated the Athenian army at [[Battle of Tanagra (457 BC)|Tanagra]]. The Athenians, however, counterattacked and scored a crushing victory over the [[Boeotia]]ns at the [[Battle of Oenophyta]] and followed this victory up by conquering all of Boeotia except for Thebes. ||| ||| ||| +-1 Franco-Dutch War ||| Battle of Saint-Denis (1678) ||| * 1678 – [[Battle of Saint-Denis (1678)|Battle of Saint-Denis]] (14 August) ||| Chronological list of key events ||| ||| +-1 French Revolutionary Wars ||| Battle of Fleurus (1794) ||| The Revolutionary Wars began from increasing political pressure on King [[Louis XVI of France]] to prove his loyalty to the new direction France was taking. In the spring of 1792, France declared war on [[Kingdom of Prussia|Prussia]] and [[Habsburg Monarchy|Austria]], which responded with a coordinated invasion of the country that was eventually turned back at the [[Battle of Valmy]] in September 1792. The victory rejuvenated the French nation and emboldened the [[National Convention]] to [[Proclamation of the abolition of the monarchy|abolish the monarchy]]. A series of victories by the [[French Revolutionary Armies|new French armies]] abruptly ended with defeat at [[Battle of Neerwinden (1793)|Neerwinden]] in the spring of 1793. The remainder of the year witnessed additional defeats for the French, and these difficult times allowed the [[Jacobins]] to rise to power and impose the [[Reign of Terror]] as a method of attempting to unify the nation. In 1794, the situation improved dramatically for the French, as huge victories at [[Battle of Fleurus (1794)|Fleurus]] against the Austrians and at the [[Battle of the Black Mountain|Black Mountain]] against the [[Spanish Empire|Spanish]] signaled the start of a new stage in the wars. By 1795, the French had captured the [[Austrian Netherlands]] and knocked Spain and Prussia out of the war with the [[Peace of Basel]]. A hitherto unknown general called [[Napoleon Bonaparte]] began his first [[Italian campaigns of the French Revolutionary Wars|campaign in Italy]] in April 1796. In less than a year, French armies under Napoleon decimated the [[House of Habsburg|Habsburg]] forces and evicted them from the Italian peninsula, winning almost every battle and capturing 150,000 prisoners. With French forces marching towards [[Vienna]], the Austrians sued for peace and agreed to the [[Treaty of Campo Formio]], ending the First Coalition against the Republic. ||| ||| ||| +-1 French Revolutionary Wars ||| Battle of Hohenlinden ||| Napoleon's arrival from the Middle East led to the fall of the [[French Directory|Directory]] in the [[Coup of 18 Brumaire]], with Napoleon installing himself as Consul. Napoleon then reorganized the French army and launched a new assault against the Austrians in Italy during the spring of 1800. This latest effort culminated in a decisive French victory at the [[Battle of Marengo]] in June 1800, after which the Austrians withdrew from the peninsula once again. Another crushing French triumph at [[Battle of Hohenlinden|Hohenlinden]] in Bavaria forced the Austrians to seek peace for a second time, leading to the [[Treaty of Lunéville]] in 1801. With Austria and Russia out of the war, the United Kingdom found itself increasingly isolated and agreed to the [[Treaty of Amiens]] with Napoleon's government in 1802, concluding the Revolutionary Wars. The lingering tensions proved too difficult to contain, however, and the [[Napoleonic Wars]] began a few years later with the formation of the [[War of the Third Coalition|Third Coalition]]. ||| ||| ||| +-1 French Revolutionary Wars ||| Battle of Stockach (1799) ||| In March 1799, the Army of the Danube engaged in two major battles, both in the southwestern German theater. At the intensely fought [[Battle of Ostrach]], 21–2 March 1799, the first battle of the War of the Second Coalition, Austrian forces, under the command of [[Archduke Charles, Duke of Teschen|Archduke Charles]], defeated Jourdan's Army of the Danube. The French suffered significant losses and were forced to retreat from the region, taking up new positions to the west at Messkirch (Mößkirch, Meßkirch), and then at Stockach and Engen. At the second battle, in [[Battle of Stockach (1799)|Stockach]], on 25 March 1799, the Austrian army achieved a decisive victory over the French forces, and again pushed the French army west. Jourdan instructed his generals to take up positions in the Black Forest, and he himself established a base at Hornberg. From there, General Jourdan relegated command of the army to his chief of staff, [[Jean Augustin Ernouf]], and traveled to Paris to ask for more and better troops and, ultimately, to request a medical leave. ||| War of the Second Coalition ||| 1799 ||| +-1 French Revolutionary Wars ||| First Battle of Algeciras ||| The naval war also continued, with the United Kingdom maintaining a blockade of France by sea. Non-combatants Russia, [[Prussia]], Denmark, and Sweden joined to protect neutral shipping from British attacks, but were unsuccessful. British Admiral [[Horatio Nelson]] defied orders and attacked the Danish fleet in harbor at the [[Battle of Copenhagen (1801)|Battle of Copenhagen]], destroying much of the fleet of one of France's more steady allies during the period. An armistice prevented him from continuing into the [[Baltic Sea]] to attack the Russian fleet at Reval ([[Tallinn]]). Meanwhile, off Gibraltar, the outnumbered French squadron under [[Linois]] rebuffed a first British attack under [[James Saumarez, 1st Baron de Saumarez|Saumarez]] in the [[First Battle of Algeciras]], capturing a line-of-battle ship. In the [[Second Battle of Algeciras]], four days later, the British captured a French ship and sank two others, killing around 2000 French for the loss of 12 British. ||| War of the Second Coalition ||| 1801 ||| +-1 French Revolutionary Wars ||| Glorious First of June ||| At sea, the French Atlantic Fleet succeeded in holding off a British attempt to interdict a vital cereal [[convoy]] from the United States on the [[Glorious First of June|First of June]], though at the cost of one quarter of its strength. In the Caribbean, the British fleet landed in [[Martinique]] in February, taking the whole island by 24 March and holding it until the Peace of [[Treaty of Amiens|Amiens]], and in Guadeloupe in April, where they captured the island briefly but were driven out by [[Victor Hugues]] later in the year. In the Mediterranean, following the British evacuation of Toulon, the Corsican leader [[Pasquale Paoli]] agreed with admiral [[Samuel Hood, 1st Viscount Hood|Samuel Hood]] to place Corsica under British protection in return for assistance capturing French garrisons at [[Siege of Saint-Florent|Saint-Florent]], [[Siege of Bastia|Bastia]], and [[Siege of Calvi|Calvi]], creating the short-lived [[Anglo-Corsican Kingdom]]. ||| War of the First Coalition ||| 1794 ||| +-1 French Revolutionary Wars ||| Quasi-War ||| The French in 1798 fought an undeclared war at sea against the United States, that was known variously as the '[[Quasi-War]]', the 'Half War' and the 'Pirate Wars'. It was resolved peaceably with the [[Convention of 1800]]. ||| War of the First Coalition ||| 1798 ||| +-1 French Revolutionary Wars ||| Second Battle of Algeciras ||| The naval war also continued, with the United Kingdom maintaining a blockade of France by sea. Non-combatants Russia, [[Prussia]], Denmark, and Sweden joined to protect neutral shipping from British attacks, but were unsuccessful. British Admiral [[Horatio Nelson]] defied orders and attacked the Danish fleet in harbor at the [[Battle of Copenhagen (1801)|Battle of Copenhagen]], destroying much of the fleet of one of France's more steady allies during the period. An armistice prevented him from continuing into the [[Baltic Sea]] to attack the Russian fleet at Reval ([[Tallinn]]). Meanwhile, off Gibraltar, the outnumbered French squadron under [[Linois]] rebuffed a first British attack under [[James Saumarez, 1st Baron de Saumarez|Saumarez]] in the [[First Battle of Algeciras]], capturing a line-of-battle ship. In the [[Second Battle of Algeciras]], four days later, the British captured a French ship and sank two others, killing around 2000 French for the loss of 12 British. ||| War of the Second Coalition ||| 1801 ||| +-1 French Revolutionary Wars ||| Siege of Calvi ||| At sea, the French Atlantic Fleet succeeded in holding off a British attempt to interdict a vital cereal [[convoy]] from the United States on the [[Glorious First of June|First of June]], though at the cost of one quarter of its strength. In the Caribbean, the British fleet landed in [[Martinique]] in February, taking the whole island by 24 March and holding it until the Peace of [[Treaty of Amiens|Amiens]], and in Guadeloupe in April, where they captured the island briefly but were driven out by [[Victor Hugues]] later in the year. In the Mediterranean, following the British evacuation of Toulon, the Corsican leader [[Pasquale Paoli]] agreed with admiral [[Samuel Hood, 1st Viscount Hood|Samuel Hood]] to place Corsica under British protection in return for assistance capturing French garrisons at [[Siege of Saint-Florent|Saint-Florent]], [[Siege of Bastia|Bastia]], and [[Siege of Calvi|Calvi]], creating the short-lived [[Anglo-Corsican Kingdom]]. ||| War of the First Coalition ||| 1794 ||| +-1 Gallic Wars ||| Battle of Alesia ||| The '''Gallic Wars''' were a series of [[military campaign]]s waged by the [[Roman Republic|Roman]] [[proconsul]] [[Julius Caesar]] against several [[Gauls|Gallic tribes]]. Rome's war against the Gallic tribes lasted from 58 BC to 50 BC and culminated in the decisive [[Battle of Alesia]] in 52 BC, in which a complete Roman victory resulted in the expansion of the [[Roman Republic]] over the whole of [[Gaul]] (mainly present-day [[France]] and [[Belgium]]). While militarily just as strong as the Romans, the internal division between the Gallic tribes guaranteed an easy victory for Caesar, and [[Vercingetorix]]'s attempt to unite the Gauls against Roman invasion came too late. The wars paved the way for Julius Caesar to become the sole ruler of the Roman Republic. ||| ||| ||| +-1 Genpei War ||| Battle of Kurikara ||| * 1183 [[Battle of Kurikara]] - the tide of the war turns, in the Minamoto's favor. ||| Battles ||| ||| +-1 Great Northern War ||| Battle of Narva (1700) ||| The war started when an alliance of [[Denmark–Norway]], [[Electorate of Saxony|Saxony]] and [[Tsardom of Russia|Russia]] declared war on the Swedish Empire, launching a threefold attack at Swedish Holstein-Gottorp, [[Swedish Livonia]], and [[Swedish Ingria]], sensing an opportunity as Sweden was ruled by the young Charles XII, who was eighteen years old and inexperienced. Sweden parried the Danish and Russian attacks at [[Peace of Travendal|Travendal]] and [[Battle of Narva (1700)|Narva]], and in a counter-offensive pushed Augustus II's forces through the [[Polish-Lithuanian Commonwealth]] to Saxony, dethroning Augustus on the way and forcing him to acknowledge defeat in the [[Treaty of Altranstädt (1706)|Treaty of Altranstädt]]. The treaty also secured the extradition and execution of [[Johann Reinhold Patkul]], architect of the alliance seven years earlier. Peter I had meanwhile recovered and gained ground in Sweden's Baltic provinces, where he cemented Russia's access to the [[Baltic Sea]] by founding [[Saint Petersburg]] in 1703. Charles XII moved from Saxony [[Charles XII invasion of Russia|into Russia]] to confront Peter, but the campaign ended with the destruction of the main Swedish army at the decisive 1709 [[Battle of Poltava]] (in present-day [[Ukraine]]), and Charles' exile in Ottoman [[Bender, Moldova|Bender]]. The Ottoman Empire defeated the Russian-Moldavian army in the [[Pruth River Campaign]], but the peace treaty was in the end without great consequence to Russia's position. ||| ||| ||| +-1 Great Northern War ||| Pruth River Campaign ||| The war started when an alliance of [[Denmark–Norway]], [[Electorate of Saxony|Saxony]] and [[Tsardom of Russia|Russia]] declared war on the Swedish Empire, launching a threefold attack at Swedish Holstein-Gottorp, [[Swedish Livonia]], and [[Swedish Ingria]], sensing an opportunity as Sweden was ruled by the young Charles XII, who was eighteen years old and inexperienced. Sweden parried the Danish and Russian attacks at [[Peace of Travendal|Travendal]] and [[Battle of Narva (1700)|Narva]], and in a counter-offensive pushed Augustus II's forces through the [[Polish-Lithuanian Commonwealth]] to Saxony, dethroning Augustus on the way and forcing him to acknowledge defeat in the [[Treaty of Altranstädt (1706)|Treaty of Altranstädt]]. The treaty also secured the extradition and execution of [[Johann Reinhold Patkul]], architect of the alliance seven years earlier. Peter I had meanwhile recovered and gained ground in Sweden's Baltic provinces, where he cemented Russia's access to the [[Baltic Sea]] by founding [[Saint Petersburg]] in 1703. Charles XII moved from Saxony [[Charles XII invasion of Russia|into Russia]] to confront Peter, but the campaign ended with the destruction of the main Swedish army at the decisive 1709 [[Battle of Poltava]] (in present-day [[Ukraine]]), and Charles' exile in Ottoman [[Bender, Moldova|Bender]]. The Ottoman Empire defeated the Russian-Moldavian army in the [[Pruth River Campaign]], but the peace treaty was in the end without great consequence to Russia's position. ||| ||| ||| +-1 Great Turkish War ||| Battle of Buda (1686) ||| After allied Christian forces [[Battle of Buda (1686)|had captured Buda]] from the Ottoman Empire in 1686 during the Great Turkish War, Serbs from [[Pannonian Plain]] (present-day [[Hungary]], [[Slavonia]] region in present-day [[Croatia]], [[Bačka]] and [[Banat]] regions in present-day [[Serbia]]) joined the troops of the Habsburg Monarchy as separate units known as [[Serbian Militia]]. ||| Wars ||| Serbia ||| +-1 Greco-Persian Wars ||| Battle of Salamis ||| Darius then began to plan to completely conquer Greece, but died in 486 BC and responsibility for the conquest passed to his son [[Xerxes I|Xerxes]]. In 480 BC, Xerxes personally led the [[second Persian invasion of Greece]] with one of the largest ancient armies ever assembled. Victory over the Allied Greek states at the famous [[Battle of Thermopylae]] allowed the Persians to torch an evacuated Athens and overrun most of Greece. However, while seeking to destroy the combined Greek fleet, the Persians suffered a severe defeat at the [[Battle of Salamis]]. The following year, the confederated Greeks went on the offensive, defeating the Persian army at the [[Battle of Plataea]], and ending the invasion of Greece. ||| ||| ||| +-1 Greek War of Independence ||| Battle of Dragashani ||| At that point, Kapodistrias, the foreign minister of Russia, was ordered by [[Alexander I of Russia|Alexander I]] to send Ypsilantis a letter upbraiding him for misusing the mandate received from the Tsar; Kapodistrias announced to Ypsilantis that his name had been struck off the army list and that he was commanded to lay down arms. Ypsilantis tried to ignore the letter, but Vladimirescu took this as the end of his commitment to the Eteria. A conflict erupted inside his camp and he was tried and put to death by the Eteria on 26 May {{smaller| [ [[Old Style and New Style dates|N.S.]] 7 June]}}. The loss of their Romanian allies, followed by an Ottoman intervention on Wallachian soil, sealed defeat for the Greek exiles and culminated in the disastrous [[Battle of Dragashani]] and the destruction of the [[Sacred Band (1821)|Sacred Band]] on 7 June {{smaller| [ [[Old Style and New Style dates|N.S.]] 19 June]}}. ||| Outbreak of the revolution ||| Danubian principalities ||| +-1 Gulf War ||| Highway of Death ||| The Coalition's advance was much swifter than U.S. generals had expected. On 26 February, Iraqi troops began retreating from Kuwait, after they had set its [[oil field]]s on fire (737 oil wells were set on fire). A long convoy of retreating Iraqi troops formed along the main Iraq-Kuwait highway. Although they were retreating, this convoy was bombed so extensively by Coalition air forces that it came to be known as the [[Highway of Death]]. Hundreds of Iraqi troops were killed. American, British, and French forces continued to pursue retreating Iraqi forces over the border and back into Iraq, eventually moving to within 150 miles (240 km) of Baghdad before withdrawing back to Iraq's border with Kuwait and Saudi Arabia. ||| Ground campaign ||| Coalition forces enter Iraq ||| +-1 Gulf War ||| Operation Friction ||| *''[[Operation Friction]]'' was the name of the Canadian operations ||| Etymology ||| Operational names ||| +-1 Gunboat War ||| Battle of Saltholm ||| On 9 June a Danish and Norwegian flotilla of twenty-one [[gunboat]]s and seven mortar boats attacked a British convoy of 70 merchant ships off the island of [[Saltholm]] in [[Øresund|Øresund Strait]] near [[Copenhagen]]. The Dano-Norwegian flotilla was able to capture 12 or 13 merchant vessels, plus {{HMS|Turbulent|1805|6}}, one of the escorts. The Danes also captured [[HDMS Allart (1807)|HMS ''Allart'']] during the [[Battle of Saltholm]] on 10 August. During the battle HMS ''Allart'', a former Danish Navy brig, chased ''Lougen'' and ''Seagull'' into [[Fredriksvern]] only to find herself pursued by 15 Danish gunboats, arrayed in three divisions. After a three-hour chase the gunboats closed with ''Allart'' and an engagement began. After two hours ''Allart'' [[striking the colours|struck]], having had her rigging shot away and having lost one man killed and three wounded. The Danish-Norwegian navy managed to capture another British vessel on 2 September, when a Danish gunboat flotilla from [[Frederikshavn|Fladstrand]], North Jutland, under the command of Lieutenant Nicolai H. Tuxen, captured the gun-brig {{HMS|Minx|1801|6}}. The engagement cost ''Minx'' two dead and nine wounded. ||| War ||| 1809-10 ||| +-1 Hundred Days ||| Battle of Tolentino ||| The war ended after a decisive Austrian victory at the [[Battle of Tolentino]]. [[Ferdinand I of the Two Sicilies|Ferdinand IV]] was reinstated as King of Naples. Ferdinand then sent Neapolitan troops under General Onasco to help the Austrian army in Italy attack southern France. In the long term, the intervention by Austria caused resentment in Italy, which further spurred on the drive towards [[Italian unification]]. ||| Other campaigns and wars ||| Neapolitan War ||| +-1 Hussite Wars ||| Battle of Aussig ||| In 1426 the Hussites were again attacked by foreign enemies. In June 1426 Hussite forces, led by Prokop and Sigismund Korybut, signally defeated the invaders in the [[Battle of Aussig]]. ||| Campaigns of 1426 and 1427 (fourth anti-Hussite Crusade) ||| ||| +-1 Iberian War ||| Battle of Callinicum ||| In 530, Belisarius led the Romans to victory over a much larger Persian force under Mihran through his superior generalship in the [[Battle of Daraa|Battle of Dara]], while Sittas and Dorotheus [[Battle of Satala (530)|defeated]] a Persian army under Mihr-Mihroe at [[Satala]]. In 531, Belisarius was defeated by Persian and Lakhmid forces at the [[Battle of Callinicum]], but, during the summer of the same year, the Romans captured some forts in Armenia, and effectively repulsed a Persian offensive. ||| War ||| ||| +-1 Impact of the Arab Spring ||| 2011 Armenian protests ||| The '''impact of the Arab Spring''' concerns protests or by the way attempts to organize growing protest movements that were inspired by or similar to the [[Arab Spring]] in the [[Arab world|Arab-majority]] states of North Africa and the Middle East, according to commentators, organisers, and critics. These demonstrations and protest efforts have all been critical of the government in their respective countries, though they have ranged from calls for the incumbent government to make certain policy changes to attempts to bring down the current political system in its entirety. In some countries, protests have become large or widespread enough to effect change at the national level, as in [[2011 Armenian protests|Armenia]], while in others, such as [[2011 Djiboutian protests|Djibouti]], were swiftly suppressed. ||| ||| ||| +-1 Impact of the Arab Spring ||| Occupy Canada ||| Starting with the [[2011 United States public employee protests|February]] protests in [[Wisconsin]] a number of Arab Spring inspired movements have waxed and waned in both Americas, some being violent, others not. On 15 October, there were thousands of demonstrations throughout the two continents, some in countries such as [[Occupy Canada|Canada]], which had not suffered such unrest before. ||| The Americas ||| ||| +-1 Indian Rebellion of 1857 ||| Battle of Badli-ki-Serai ||| It took time to organise the European troops already in India into field forces, but eventually two columns left [[Meerut]] and [[Shimla|Simla]]. They proceeded slowly towards Delhi and fought, killed, and hanged numerous Indians along the way. Two months after the first outbreak of rebellion at Meerut, the two forces met near [[Karnal]]. The combined force including two [[Gurkha]] units serving in the Bengal Army under contract from the Kingdom of [[Nepal]], fought the main army of the rebels at [[Battle of Badli-ki-Serai|Badli-ke-Serai]] and drove them back to Delhi. ||| The Revolt ||| Delhi ||| +-1 Indian Rebellion of 1857 ||| Siege of Cawnpore ||| The besieged endured three weeks of the [[Siege of Cawnpore]] with little water or food, suffering continuous casualties to men, women and children. On 25 June Nana Sahib made an offer of safe passage to Allahabad. With barely three days' food rations remaining, the British agreed provided they could keep their small arms and that the evacuation should take place in daylight on the morning of the 27th (the Nana Sahib wanted the evacuation to take place on the night of the 26th). Early in the morning of 27 June, the European party left their entrenchment and made their way to the river where boats provided by the Nana Sahib were waiting to take them to [[Allahabad]]. By the time the massacre was over, most of the male members of the party were dead while the surviving women and children were removed and held hostage to be later killed in The Bibighar massacre. Only four men eventually escaped alive from Cawnpore on one of the boats: two private soldiers, a lieutenant, and Captain [[Mowbray Thomson]], who wrote a first-hand account of his experiences entitled ''The Story of Cawnpore'' (London, 1859). ||| The Revolt ||| Cawnpore ||| +-1 Indian Rebellion of 1857 ||| Siege of Lucknow ||| Clasps were awarded for the [[siege of Delhi]] and the [[Siege of Lucknow|siege and relief of Lucknow]]. ||| Aftermath ||| Awards ||| +-1 Indo-Pakistani War of 1965 ||| Operation Dwarka ||| Naval operations did not play a prominent role in the war of 1965. On 7 September, a [[flotilla]] of the Pakistan Navy under the command of Commodore S.M. Anwar, carried out a bombardment of the Indian Navy's radar station coastal down of [[Dwarka]], which was {{convert|200|mi|km}} south of the Pakistani port of Karachi. [[Operation Dwarka]], as it is known, is a significant naval operation of the 1965 war ||| The war ||| Naval hostilities ||| +-1 Insurgency in the North Caucasus ||| December 2013 Volgograd bombings ||| * [[December 2013 Volgograd bombings]] ||| Terrorist incidents ||| ||| +-1 Invasion of Poland ||| Battle of Kock (1939) ||| The Soviet [[Red Army]]'s invasion of [[Kresy|Eastern Poland]] on 17 September, in accordance with a secret protocol of the Molotov–Ribbentrop Pact, rendered the Polish plan of defence obsolete. On 6 October, following the Polish defeat at the [[Battle of Kock (1939)|Battle of Kock]], German and Soviet forces gained full control over Poland. The success of the invasion marked the end of the [[Second Polish Republic]], though Poland never formally surrendered. ||| ||| ||| +-1 Invasion of Poland ||| Soviet invasion of Poland ||| The '''Invasion of Poland''', also known as the '''September Campaign''', or the 1939 Defensive War in [[Second Polish Republic|Poland]] ({{lang-pl|Kampania wrześniowa}} or ''Wojna obronna 1939 roku''), and alternatively the Poland Campaign ({{lang-de|Polenfeldzug}}) or ''[[Fall Weiss (1939)|Fall Weiss]]'' in [[Germany]] (Case White), was a joint invasion of Poland by [[Nazi Germany]], the [[Soviet Union]], and a small [[Slovak invasion of Poland (1939)|Slovak]] contingent, that marked the beginning of [[European theatre of World War II|World War II in Europe]]. The German invasion began on 1 September 1939, one week after the signing of the [[Molotov–Ribbentrop Pact]], while the [[Soviet invasion of Poland|Soviet invasion]] commenced on 17 September following the [[Vyacheslav Molotov|Molotov]]-[[Shigenori Tōgō|Tōgō]] agreement that terminated the Russian and Japanese [[Battles of Khalkhin Gol|hostilities]] in the east on 16 September. The campaign ended on 6 October with Germany and the Soviet Union dividing and annexing the whole of Poland under the terms of the [[German-Soviet Frontier Treaty]]. ||| ||| ||| +-1 Iran hostage crisis ||| Operation Eagle Claw ||| The hostage crisis reached a climax when, after failed attempts to negotiate a release of the hostages, the United States military attempted a rescue operation using ships including the {{USS|Nimitz|CVN-68|6}} and {{USS|Coral Sea|CV-43|6}} that were patrolling the waters near Iran. On April 24, 1980, [[Operation Eagle Claw]] failed, resulting in the deaths of eight American servicemen, one Iranian civilian, as well as the destruction of two aircraft. Published documents dated two weeks before the operation claim that National Security Advisor, Zbigniew Brzezinski, discussed the potential for an invasion of Iran through Turkish bases and territory, though this plan was never executed. ||| ||| ||| +-1 Iraqi Kurdish Civil War ||| Operation Hammer (1997) ||| Fighting continued throughout the winter between the KDP and PUK. Complicating matters, the [[Kurdistan Worker's Party]] or PKK was present in Iraq. On friendly terms with the PUK, the PKK allegedly began fighting with ethnic [[Assyrian people|Assyrians]] and civilians who supported the KDP. In response, Turkish forces launched [[Operation Hammer (1997)|Operation Hammer]] in May, in a violent attempt to root out the PKK from Iraqi Kurdistan. This operation caused heavy PKK casualties, however the PKK continued to operate in Iraqi Kurdistan. ||| Turkish intervention ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Antrim ||| In the north-east, mostly Presbyterian rebels led by [[Henry Joy McCracken]] rose in [[County Antrim]] on 6 June. They briefly held most of the county, but the rising there collapsed following [[Battle of Antrim|defeat]] at [[Antrim, County Antrim|Antrim town]]. In [[County Down]], after initial success at [[Battle of Saintfield|Saintfield]], rebels led by [[Henry Munro (United Irishman)|Henry Munro]] were defeated in the longest battle of the rebellion at [[Battle of Ballynahinch|Ballynahinch]]. ||| The rebellion spreads ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Arklow ||| The rebels had most success in the south-eastern county of [[County Wexford|Wexford]] where they seized control of the county, but a series of bloody defeats at the [[Battle of New Ross (1798)|Battle of New Ross]], [[Battle of Arklow]], and the [[Battle of Bunclody]] prevented the effective spread of the rebellion beyond the county borders. 20,000 troops eventually poured into Wexford and defeated the rebels at the [[Battle of Vinegar Hill]] on 21 June. The dispersed rebels spread in two columns through the midlands, [[Kilkenny]], and finally towards Ulster. The last remnants of these forces fought on until their final defeat on 14 July at the battles of Knightstown Bog, [[County Meath]] and Ballyboughal, [[County Dublin]]. ||| The rebellion spreads ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Kilcullen ||| |[[Battle of Kilcullen|Battle of Old Kilcullen]] ||| List of major engagements during the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Killala ||| |[[Battle of Killala]] ||| List of major engagements during the rebellion ||| ||| +-1 Italian Front (World War I) ||| Sixth Battle of the Isonzo ||| Later in 1916, four more battles along the Isonzo river erupted. The [[Sixth Battle of the Isonzo]], launched by the Italians in August, resulted in a success greater than the previous attacks. The offensive gained nothing of strategic value but did take [[Gorizia]], which boosted Italian spirits. The Seventh, Eighth, and Ninth battles of the Isonzo (14 September – 4 November) managed to accomplish little except to wear down the already exhausted armies of both nations. ||| Campaigns of 1915–1916 ||| Later battles for the Isonzo ||| +-1 Kurdish separatism in Iran ||| 1979 Kurdish rebellion in Iran ||| The earliest Kurdish separatist activities in modern times refer to tribal revolts in today's [[West Azerbaijan Province]] of Imperial State of Iran, prompted in between of the two [[World Wars]] - the major of those were led by [[Simko Shikak]], Jafar Sultan and [[Hama Rashid revolt|Hama Rashid]]. Many however, put the starting point of the organized Kurdish political-nationalist separatism to 1943, launched with KDPI support through 1966–7, Kurdish regions suffered a major blow. In the most violent episode of the conflict, more than 30,000 Kurds died starting with the [[1979 Kurdish rebellion in Iran|1979 rebellion]] and the consequent [[KDPI insurgency (1989-1996)|KDPI insurgency]]. ||| ||| ||| +-1 Lebanese Civil War ||| Damour massacre ||| |The [[Karantina massacre]] and the [[Damour massacre]] ||| Chronological History of the War ||| ||| +-1 Lebanese Civil War ||| Mountain War (Lebanon) ||| |The [[Mountain War (Lebanon)|Mountain War]] begins. ||| Chronological History of the War ||| ||| +-1 Lebanese Civil War ||| October 13 massacre ||| |General Aoun is forced out of the presidential palace and goes into exile. The [[October 13 massacre]] occurs. [[Selim Hoss]] assumes command of the country except for the part still occupied by Israel. The armed forces are reunited under a central command. ||| Chronological History of the War ||| ||| +-1 Long March ||| Battle of Luding Bridge ||| *1935: May 29, CCP forces capture [[Battle of Luding Bridge|Luding Bridge]]. ||| Timeline ||| ||| +-1 Neapolitan War ||| Battle of Scapezzano ||| With Neipperg's army approaching to his rear, Murat was forced to give battle at [[Battle of Tolentino|Tolentino]] on 2 May 1815. After two days of inconclusive fighting, Murat learned that Neipperg had outmanoeuvred and defeated Carascosa at the [[Battle of Scapezzano]] and was approaching. Sensing the inevitable, Murat ordered a retreat. ||| War ||| Battle of Tolentino ||| +-1 Nivelle Offensive ||| Battle of La Malmaison ||| The collapse of the Nivelle strategy and the high number of French casualties led to [[French Army Mutinies (1917)|mutinies]] and the dismissal of Nivelle, his replacement by Pétain, and the adoption of a defensive strategy while the French army recuperated. Fighting known as the Battle of the Observatories continued for local advantage all summer on the Chemin des Dames and along the Moronvilliers heights east of Rheims. In late October the French conducted a limited-objective attack on the west end of the Chemin-des-Dames in the [[Battle of La Malmaison]], which forced the Germans to retire across the Ailette valley. ||| ||| ||| +-1 Normandy landings ||| Utah Beach ||| The [[Amphibious warfare|amphibious landing]]s were preceded by extensive aerial and naval bombardment and an [[airborne forces|airborne assault]]—the [[American airborne landings in Normandy|landing of 24,000 American]], [[Operation Tonga|British, and Canadian airborne troops shortly after midnight]]. Allied [[infantry]] and [[Armoured warfare|armoured]] [[division (military)|divisions]] began landing on the coast of France at 06:30. The target {{Convert|50|mi|km|adj=on}} stretch of the [[Normandy]] coast was divided into five sectors: [[Utah Beach|Utah]], [[Omaha Beach|Omaha]], [[Gold Beach|Gold]], [[Juno Beach|Juno]], and [[Sword Beach]]. Strong winds blew the landing craft east of their intended positions, particularly at Utah and Omaha. The men landed under heavy fire from gun emplacements overlooking the beaches, and the shore was mined and covered with obstacles such as wooden stakes, metal tripods, and barbed wire, making the work of the beach clearing teams difficult and dangerous. Casualties were heaviest at Omaha, with its high cliffs. At Gold, Juno, and Sword, several fortified towns were cleared in house-to-house fighting, and two major gun emplacements at Gold were disabled using specialised tanks. ||| ||| ||| +-1 North African Campaign ||| Battle of Beda Fomm ||| Some 40,000 Italians were captured in and around the two ports, with the remainder of the Tenth Army retreating along the coast road back to [[El Agheila]]. [[Richard O'Connor]] sent the 7th Armoured Division across the desert, with a small reconnaissance group reaching [[Beda Fomm]] some ninety minutes before the Italians, cutting off their retreat. Though desperate attempts were made to overcome the British force at the [[Battle of Beda Fomm]], the Italians were unable to break through, and the remnants of the retreating army surrendered. Thus, over the course of 10 weeks Allied forces had destroyed the Italian Tenth Army and reached El Agheila, taking 130,000 prisoners of war in the process. ||| Western Desert Campaign ||| ||| +-1 North African Campaign ||| Battle of Gazala ||| After receiving supplies and reinforcements from [[Tripoli]], the Axis again attacked, defeating the Allies at [[Battle of Gazala|Gazala]] in June and capturing Tobruk. The Axis forces drove the Eighth Army back over the Egyptian border, but their advance was stopped in July only {{convert|90|mi|km|abbr=on}} from [[Alexandria]] in the [[First Battle of El Alamein]]. ||| Western Desert Campaign ||| ||| +-1 North African Campaign ||| Operation Brevity ||| The Allied forces soon launched a small-scale counter-attack called [[Operation Brevity]]. This was an attempt to push the Axis forces off the key passes at the border, which gained some initial success, but the advanced position could not be held. Brevity was then followed up by a much larger-scale offensive, [[Operation Battleaxe]]. Intended to relieve the siege at Tobruk, this operation also failed. ||| Western Desert Campaign ||| ||| +-1 North African Campaign ||| Operation Crusader ||| Following the failure of Operation Battleaxe, Archibald Wavell was relieved of command and replaced by [[Claude Auchinleck]]. The Western Desert Force was reinforced with a second corps, XXX Corps, with the two corps forming the [[British Eighth Army|Eighth Army]]. Eighth Army was made up of army forces from the Commonwealth nations, including the British Army, the [[Australian Army]], the [[British Indian Army]], the [[New Zealand Army]], the [[South African Army]], and the [[Sudan Defence Force]]. There was also a brigade of [[Free French]] under [[Marie-Pierre Koenig]]. The new formation launched a new offensive, [[Operation Crusader]], in November 1941. After a see-saw battle, the [[70th Infantry Division (United Kingdom)|70th Division]] garrisoning Tobruk was relieved and the Axis forces were forced to fall back. By January 1942, the [[front line]] was again at El Agheila. ||| Western Desert Campaign ||| ||| +-1 North African Campaign ||| Second Battle of El Alamein ||| A see-saw series of battles for control of [[Libya]] and parts of [[Egypt]] followed, reaching a climax in the [[Second Battle of El Alamein]] when [[Commonwealth of Nations|British Commonwealth]] forces under the command of Lieutenant-General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] delivered a decisive defeat to the Axis forces and pushed them back to [[Tunisia]]. After the late 1942 Allied [[Operation Torch]] landings in North-West Africa, and subsequent battles against [[Vichy France]] forces (who then changed sides), the Allies finally encircled Axis forces in northern Tunisia and forced their surrender. ||| ||| ||| +-1 Northern Mali conflict ||| Tuareg rebellion (2012) ||| The '''Northern Mali Conflict''', '''Mali Civil War''', or '''Mali War''' refers to armed conflicts that started from January 2012 between the northern and southern parts of [[Mali]] in Africa. On 16 January 2012, several insurgent groups began [[Tuareg rebellion (2012)|fighting a campaign]] against the [[Politics of Mali|Malian government]] for independence or greater autonomy for northern [[Mali]], an area known as [[Azawad]]. The [[National Movement for the Liberation of Azawad]] (MNLA), an organization fighting to make Azawad an independent homeland for the [[Tuareg people]], had taken control of the region by April 2012. ||| ||| ||| +-1 Operation Overlord ||| Juno Beach ||| The decision to undertake a cross-channel invasion in 1944 was taken at the [[Washington Conference (1943)|Trident Conference]] in Washington in May 1943. General [[Dwight D. Eisenhower]] was appointed commander of [[Supreme Headquarters Allied Expeditionary Force]] (SHAEF), and General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] was named as commander of the [[21st Army Group]], which comprised all the land forces involved in the invasion. The [[Normandy]] coast was chosen as the site of the invasion, with the Americans assigned to land at [[Utah Beach|Utah]] and [[Omaha Beach]]es, the British at [[Sword Beach|Sword]] and [[Gold Beach]]es, and Canadians at [[Juno Beach]]. To meet the conditions expected on the Normandy beachhead, special technology was developed, including two artificial ports called [[Mulberry harbour]]s and an array of specialised tanks nicknamed [[Hobart's Funnies]]. In the months leading up to the invasion, the Allies conducted a substantial [[military deception]], [[Operation Bodyguard]], using both electronic and visual misinformation. This misled the Germans as to the date and location of the main Allied landings. [[Adolf Hitler]] placed German Field Marshal [[Erwin Rommel]] in charge of developing fortifications all along the [[Atlantic Wall]] in anticipation of an invasion. ||| ||| ||| +-1 Operation Phantom Thunder ||| Operation Marne Torch ||| '''Operation ''Phantom Thunder''''' began on 16 June 2007, when [[Multi-National Force-Iraq]] launched major offensive operations against [[al-Qaeda]] and other extremist [[terrorists]] operating throughout [[Iraq]]. Operation Phantom Thunder was a [[corps]] level operation, including [[Operation Arrowhead Ripper]] in [[Diyala Governorate|Diyala]] Province, [[Operation Marne Torch]] and [[Operation Commando Eagle]] in [[Babil]] Province, [[Operation Fardh al-Qanoon]] in [[Baghdad]], [[Operation Alljah]] in [[Al Anbar Governorate|Anbar]] Province, and continuing [[special forces]] actions against the [[Mahdi Army]] in southern Iraq and against [[Al-Qaeda]] leadership throughout the country. ||| ||| ||| +-1 Pacific War ||| Battle of Balikpapan (1945) ||| The campaign opened with a landing on the small island of [[Battle of Tarakan (1945)|Tarakan]] on 1 May. This was followed on 1 June by simultaneous assaults in the north west, on the island of [[Operation Oboe Six|Labuan]] and the coast of [[Brunei]]. A week later the Australians attacked Japanese positions in [[Battle of North Borneo|North Borneo]]. The attention of the Allies then switched back to the central east coast, with the last major amphibious assault of World War II, at [[Battle of Balikpapan (1945)|Balikpapan]] on 1 July. ||| Final stages==<!-- This heading is used as a redirect anchor --&g ||| Liberation of Borneo ||| +-1 Pacific War ||| Battle of Leyte Gulf ||| U.S. submarines accounted for 56% of the Japanese merchantmen sunk; mines or aircraft destroyed most of the rest. US submariners also claimed 28% of Japanese warships destroyed. Furthermore, they played important reconnaissance roles, as at the [[Battle of the Philippine Sea|battles of the Philippine Sea]] (June 1944) and [[Battle of Leyte Gulf|Leyte Gulf]] (October 1944) (and, coincidentally,{{clarify|date=March 2015}} at [[Battle of Midway|Midway]] in June 1942), when they gave accurate and timely warning of the approach of the Japanese fleet. Submarines also rescued hundreds of downed fliers, including future U.S. president [[George H.W. Bush]]. ||| Allied offensives, 1943–44 ||| Submarine warfare ||| +-1 Peloponnesian War ||| Battle of Potidaea ||| Following this, Athens instructed [[Battle of Potidaea|Potidaea]] (Chalcidice peninsula), a tributary ally of Athens but a colony of Corinth, to tear down its walls, send hostages to Athens, dismiss the Corinthian magistrates from office, and refuse the magistrates that the city would send in the future. The Corinthians, outraged by these actions, encouraged Potidaea to revolt and assured them that they would ally with them should they revolt from Athens. Meanwhile, the Corinthians were unofficially aiding Potidaea by sneaking contingents of men into the besieged city to help defend it. This was a direct violation of the Thirty Years' Peace, which had (among other things) stipulated that the Delian League and the Peloponnesian League would respect each other's autonomy and internal affairs. ||| Prelude ||| Breakdown of the peace ||| +-1 Peninsular War ||| Battle of Braga (1809) ||| In March 1809, Soult initiated the second invasion of Portugal through the northern corridor. Soult's forces faced 12,000 men represented by the line regiments, militia and ''[[ordenança]]'' of the province of [[Trás-os-Montes Province|Tras-os-Montes]]. Commanded by [[Francisco da Silveira]], these forces quickly retreated amid riot and disorder, and within two days of crossing the border Soult had taken the fortress of [[Chaves, Portugal|Chaves]].{{sfn|Esdaile|2003|p=178}} Swinging west, the French were confronted by 25,000 unprepared and undisciplined Portuguese. While waiting for Soult's army to arrive, the Portuguese militia lynched their own commander, [[Bernardim Freire de Andrade]], who wanted to retreat. On 20 March, 16,000 of Soult's professional troops of the [[II Corps (Grande Armée)|II Corps]] advanced and killed 4,000 Portuguese troops in the [[Battle of Braga (1809)|Battle of Braga]]. A similar mismatch occurred when the French reached [[Porto]]. In the [[First Battle of Porto]] on 29 March, the Portuguese defenders panicked and thousands drowned trying to flee across the [[Douro]] River. It was a French victory; with fewer than 500 casualties Soult had secured Portugal's second city with its valuable dockyards and arsenals intact. The Portuguese sustained appalling losses, losing 200 guns and between 6,000 and 20,000 men dead, wounded or captured.{{sfn|Gates|2001|p=142}} The French booty included immense stocks of food and munitions, and 30 shiploads of wine.{{sfn|Esdaile|2003|p=179}} Soult occupied northern Portugal but halted at Porto to refit his army before advancing on Lisbon. ||| Second Portuguese campaign, 1808–1809 ||| ||| +-1 Peninsular War ||| Battle of Fuengirola ||| In late October, after holding his starving army before Lisbon for a month, Masséna fell back to a position between [[Santarém, Portugal|Santarém]] and [[Rio Maior]],.{{sfn|Weller|1962|pp=145–146}} In March, with supplies exhausted, Masséna managed a skillful retreat on Salamanca, with Ney again displaying a savage talent for rear-guard fighting. Following Masséna's withdrawal, Wellington moved the 2nd [[Division (military)|Division]] under Lieutenant General [[Rowland Hill, 1st Viscount Hill|Hill]], along with two Portuguese brigades and an attachment of Dragoons, across the [[Tagus]] to protect the plains of [[Alentejo]]{{mdash}}both from Masséna and a possible attack from [[Andalusia]] by the French Army of the South.{{sfn|Oman|1911|p=4}} The British suffered a setback at about the same time in the [[Battle of Fuengirola]]. On 15 October, a much smaller Polish garrison held off British troops under [[Andrew Blayney, 11th Baron Blayney|Lord Blayney]], who was taken captive and held by the French until 1814. ||| Third Portuguese campaign, 1810–1811 ||| ||| +-1 Peninsular War ||| Battle of Pancorbo (1808) ||| In the west, a Spanish wing escaped when Lefebvre failed to encircle the Army of Galicia after a premature and indecisive attack at the [[Battle of Pancorbo (1808)|Battle of Pancorbo]]; Blake withdrew his artillery to safety and the bloodied Spanish infantry followed. Lefebvre and Marshal [[Claude Victor-Perrin]] offered a careless chase that ended in humiliation at the [[Battle of Valmaseda]], where their scattered troops were handled by La Romana's repatriated Spanish veterans and escaped to safety. The campaign in the south, where Napoleon's main army overran the unprotected Spanish centre in a devastating attack near [[Battle of Burgos|Burgos]], ended quickly. The Spanish militias{{mdash}}untrained and unable to form [[infantry square]]s{{mdash}}scattered in the face of massed French cavalry, while the [[Spanish Royal Guard]] and [[Walloon Guards]] stood their ground in vain and were overcome by [[Antoine Charles Louis Lasalle]] and his ''sabreurs''. Marshal [[Jean Lannes]] with a powerful force smashed through the Spanish right wing at the [[Battle of Tudela]] on 23 November, routing Castaños and prompting a new inscription on the [[Arc de Triomphe]] in Paris. Blake's isolated army reversed direction on 17 November and dug in at the [[Battle of Espinosa]]. His lines repelled French attacks over a day and night of vicious fighting, before giving up the next day. Blake again outmarched Marshal [[Jean-de-Dieu Soult|Nicolas Jean-de-Dieu Soult]] and escaped with a rump army to Santander, but the Spanish front had been fragmented and the Imperial armies raced forward over undefended provinces. Napoleon sent 45,000 men south into the [[Sierra de Guadarrama]], which shielded Madrid. ||| Napoleon's invasion of Spain, 1808 ||| ||| +-1 Peninsular War ||| Dos de Mayo Uprising ||| The Peninsular War overlaps with what the [[Hispanophone|Spanish-speaking world]] calls the ''Guerra de la Independencia Española'' (Spanish War of Independence), which began with the [[Dos de Mayo Uprising]] on 2 May 1808 and ended on 17 April 1814. The French occupation destroyed the [[Government of Spain|Spanish administration]], which fragmented into quarrelling [[Junta (Peninsular War)|provincial ''juntas'']]. In 1810, a reconstituted national government, the [[Cádiz Cortes]]{{mdash}}effectively a government-in-exile{{mdash}}fortified itself in [[Cádiz]] but could not raise effective armies because it was [[Siege of Cádiz|besieged]] by 70,000 French troops. British and Portuguese forces eventually secured Portugal, using it as a safe position from which to launch campaigns against the French army and to provide whatever supplies they could get to the Spanish, while the Spanish armies and guerrillas tied down vast numbers of Napoleon's troops. These combined regular and irregular allied forces prevented Napoleon's [[Marshal of France#French Empire|marshals]] from subduing the rebellious Spanish provinces by restricting French control of territory and the war continued through years of stalemate. ||| ||| ||| +-1 Philippine Revolution ||| Battle of San Juan del Monte ||| After their defeat in [[Battle of San Juan del Monte]], Bonifacio's troops regrouped near [[Marikina]], [[San Mateo, Rizal|San Mateo]] and [[Montalban, Rizal|Montalban]], where they proceeded to attack these areas. They captured the areas, but were driven back by Spanish counterattacks, and Bonifacio eventually ordered a retreat to Balara. On the way, Bonifacio was nearly killed shielding [[Emilio Jacinto]] from a Spanish bullet that grazed his collar. ||| Course of the Revolution ||| ||| +-1 Revolt of the Comuneros ||| Battle of Villalar ||| In 1519, Charles was elected [[Holy Roman Emperor]]. He departed for Germany in 1520, leaving the Dutch cardinal [[Adrian of Utrecht]] to rule Castile in his absence. Soon, a series of anti-government riots broke out in the cities, and local city councils (''Comunidades'') took power. The rebels chose Charles' own mother, Queen Joanna, as an alternative ruler, hoping they could control her madness. The rebel movement took on a radical [[manorialism|anti-feudal]] dimension, supporting peasant rebellions against the landed nobility. On April 23, 1521, after nearly a year of rebellion, the reorganized supporters of the emperor struck a crippling blow to the comuneros at the [[Battle of Villalar]]. The following day, rebel leaders [[Juan López de Padilla|Juan de Padilla]], [[Juan Bravo (rebel)|Juan Bravo]], and [[Francisco Maldonado]] were beheaded. The army of the comuneros fell apart. Only the city of Toledo kept alive the rebellion, until its surrender in October 1521. ||| ||| ||| +-1 Rhodesian Bush War ||| Gukurahundi ||| After he assumed power, Robert Mugabe acted incrementally to consolidate his power, forming a coalition government with his ZAPU rivals and the white minority. The Rhodesian Army was merged with guerrilla forces to form the [[Zimbabwe Defence Forces]], with the Rhodesian security forces being merged with ZANLA and ZIPRA forces. Joshua Nkomo was given a series of cabinet positions. However, Mugabe was torn between keeping his coalition stable and pressures to meet the expectations of his followers for social change. Clashes between ZANLA and ZIPRA forces took place in 1980 and 1981. In 1983, Mugabe fired Nkomo from his cabinet; triggering bitter fighting between ZAPU supporters in [[Northern Ndebele language|Ndebele]]-speaking region of the country and the ruling ZANU. Between 1982 and 1985, the military crushed armed resistance from Ndebele groups in [[Matabeleland]] and the [[Midlands, Zimbabwe|Midlands]] in a military crackdown known as ''[[Gukurahundi]]'', a Shona term which translates roughly to mean 'the early rain which washes away the chaff before the spring rains'. The ''Gukurahundi'' campaigns were also known as the Matabeleland Massacres. {{Harvnb|Nyarota|2006 ||| Aftermath ||| ||| +-1 Russian conquest of Siberia ||| Battle of Chuvash Cape ||| Throughout September 1582, the Khan gathered his forces for a defence of [[Qashliq]]. A horde of [[Siberian Tatars]], [[Mansi people|Vogul]]s and [[Ostyak]]s massed at [[Mount Chyuvash]] to defend against invading Cossacks. On 1 October, a Cossack attempt to storm the Tatar fort at Mount Chyuvash was held off. On 23 October, the Cossacks attempted to storm the Tatar fort at Mount Chyuvash for a fourth time when the Tatars counterattacked. More than a hundred Cossacks were killed, but their gunfire forced a Tatar retreat and allowed the capture of two Tatar cannons. [[Battle of Chuvash Cape|The forces of the Khan retreated]], and Yermak entered [[Qashliq]] on 26 October. ||| Conquest of the Khanate of Sibir ||| ||| +-1 Russo-Japanese War ||| Battle of Sandepu ||| * 1905 [[Battle of Sandepu]], 26 to 27 January: inconclusive ||| List of battles ||| ||| +-1 Russo-Japanese War ||| Battle of Tsushima ||| Following the victory of the [[Battle of Tsushima]], Japan's erstwhile English ally presented a lock of [[Horatio Nelson, 1st Viscount Nelson|Admiral Nelson]]'s hair to the Imperial Japanese Navy, judging its performance then as on a par with Britain's victory at Trafalgar in 1805. It is still on display at Kyouiku Sankoukan, a public museum maintained by the Japan Self-Defense Force. Nevertheless, there was a consequent change in English strategic thinking, resulting in enlargement of its naval docks at [[Auckland]], New Zealand; [[Bombay]], [[British Raj|British India]]; [[Fremantle]] and Sydney, Australia; [[Simon's Town]], [[Cape Colony]]; Singapore and [[British Hong Kong]]. ||| Peace and aftermath ||| Assessment of war results ||| +-1 Saintonge War ||| Battle of Taillebourg ||| The '''Saintonge War''' was a feudal dynastic encounter that occurred in 1242 between forces of [[Louis IX of France]] and those of [[Henry III of England]]. [[Saintonge]] is the region around [[Saintes, Charente-Maritime|Saintes]] in the centre-west of France. The conflict arose because some vassals of Louis were displeased with the accession of his brother, [[Alfonso, Count of Poitou|Alphonse]], as count of [[Poitou]]. The French decisively defeated the English at the [[Battle of Taillebourg]] and concluded the struggle at the Siege of Saintes, but because of dynastic sensibilities and the desire to go on a [[Crusades|crusade]], Louis did not annex [[Guyenne]]. ||| ||| ||| +-1 Satsuma Rebellion ||| Battle of Shiroyama ||| Saigō and his remaining ''samurai'' were pushed back to Kagoshima where, in a [[last stand|final battle]], the [[Battle of Shiroyama]], Imperial Army troops under the command of General [[Yamagata Aritomo]] and marines under the command of Admiral [[Kawamura Sumiyoshi]] outnumbered Saigō 60-to-1. However, Yamagata was determined to leave nothing to chance. The imperial troops spent several days constructing an elaborate system of ditches, walls and obstacles to prevent another breakout. The five government warships in Kagoshima harbor added their firepower to Yamagata's [[artillery]], and began to systematically reduce the rebel positions. ||| The Southwest War ||| Battle of Shiroyama ||| +-1 Second Anglo-Dutch War ||| Battle of Lowestoft ||| The first encounter between the nations was, as in the First Anglo-Dutch War, at sea. Fighting began in earnest with the [[Battle of Lowestoft]] on 13 June, where the English gained a great victory; it was the worst defeat of the Dutch Republic's navy in history. The English, though, were unable to capitalise on the victory. The leading Dutch politician, the [[Grand Pensionary]] of [[Holland]] [[Johan de Witt]], quickly restored confidence by joining the fleet personally. Under De Witt, ineffective captains were removed and new tactics formalised. In August [[Michiel de Ruyter]] returned from America to a hero's welcome and was given supreme command of the confederate fleet. The Spice Fleet from the Dutch East Indies managed to return home safely after the [[Battle of Vågen]], though at first blockaded at [[Bergen, Norway|Bergen]], causing the financial position of England to deteriorate. {{rp |70}} For every warship the English built during the conflict, the Dutch shipyards turned out seven. ||| The War ||| 1665 ||| +-1 Second Anglo-Sikh War ||| Battle of Chillianwala ||| Gough unexpectedly encountered Sher Singh's position near the [[Jhelum River]] on 13 January 1849. Sher Singh had cunningly concealed his army, and Gough was faced with the choice of withdrawing, or attacking when it was late in the day. Gough unhesitatingly took the latter course. The resulting [[Battle of Chillianwala]] was desperately fought. Gough's troops, attacking into thick scrub without effective artillery support, suffered heavy losses. Some units lost their colours (which was regarded as a disgrace) and part of one British cavalry regiment fled in panic, resulting in the loss of four guns, also reckoned a humiliation. Sher Singh's army was also hard hit, losing twelve of its own guns. ||| Course of the War ||| ||| +-1 Second Balkan War ||| Battle of Bregalnica ||| | [[Battle of Bregalnica|Bregalnica]] ||| List of battles ||| ||| +-1 Second Balkan War ||| Battle of Doiran (1913) ||| | [[Battle of Doiran (1913)|Doiran]] ||| List of battles ||| ||| +-1 Second Boer War ||| Battle of Bakenlaagte ||| Two Boer forces fought in this area, one under Botha in the south east and a second under Ben Viljoen in the north east around Lydenburg. Botha's forces were particularly active, raiding railways and British supply convoys, and even mounting a renewed invasion of Natal in September 1901. After defeating British mounted infantry in the [[Battle of Blood River Poort]] near [[Dundee, KwaZulu-Natal|Dundee]], Botha was forced to withdraw by heavy rains that made movement difficult and crippled his horses. Back on the Transvaal territory around his home district of Vryheid, Botha attacked a British raiding column at [[Battle of Bakenlaagte|Bakenlaagte]], using an effective mounted charge. One of the most active British units was effectively destroyed in this engagement. This made Botha's forces the target of increasingly large and ruthless drives by British forces, in which the British made particular use of native scouts and informers. Eventually, Botha had to abandon the high veld and retreat to a narrow enclave bordering [[Swaziland]]. ||| Third phase: Guerrilla war (September 1900 – May 1902) ||| Eastern Transvaal ||| +-1 Second Desmond Rebellion ||| Battle of Glenmalure ||| On 25 August 1580, English forces under Grey were routed in the [[Battle of Glenmalure]] with the forces of O'Byrne and Viscount Baltinglass. While trying to storm O'Byrne's fortress at [[Glenmalure]] in the heart of the Wicklow mountains, they were ambushed and mauled, losing over 800 men killed. [[William Stanley (Elizabethan)|William Stanley]] was sent by Grey de Wilton to defend the [[The Pale|Pale]] area of [[Leinster]]. For the remainder of the war, O'Byrne and his allies raided English settlements in the east and south east, but were unable to take strategic advantage of their victory at Glenmalure. ||| Rebellion in Leinster ||| ||| +-1 Second Desmond Rebellion ||| Siege of Smerwick ||| In October 1580, Grey de Wilton with up to 4000 troops arrived at Smerwick and [[Siege of Smerwick|laid siege to the garrison]]. The invasion forces were geographically isolated on the tip of the narrow [[Dingle Peninsula]], cut off by [[Mount Brandon]] on one side and the much larger English force on the other. They had no means of escape. In addition, the English had brought up heavy artillery by sea, which rapidly broke down the improvised defences of Dún an Óir. ||| 1580 Papal landing and the Smerwick massacre ||| ||| +-1 Second Italian War of Independence ||| Battle of Montebello (1859) ||| The Austrians under Gyulai eventually arrived in [[Vercelli]], menacing [[Turin]], but the Franco-Sardinian move to strengthen [[Alessandria]] and [[Po River]] bridges around [[Casale Monferrato]] forced them to fall back. On May 14, Napoleon III arrived in Alessandria, taking the command of the operations. The initial clash of the war was at [[Battle of Montebello (1859)|Montebello]] on 20 May, a battle between an Austrian Corps under Stadion and a single division of the French I Corps under [[Elie Frédéric Forey|Forey]]. The Austrian contingent was three times as large, but the French were victorious, making Gyulai still more cautious. In early June, Gyulai had advanced to the rail center of [[Battle of Magenta|Magenta]], leaving his army spread out. Napoleon III attacked the Ticino head on with part of his force while sending another large group of troops to the north to flank the Austrians. The plan worked, causing Gyulai to retreat east to the [[quadrilatero|quadrilateral fortresses]] in Lombardy, where he was relieved of his post as commander. ||| The operations ||| ||| +-1 Second Northern War ||| Battle of Wojnicz ||| On 24 August, Charles X Gustav joined Wittenberg's forces. The Polish king [[John II Casimir]] left [[Warsaw]] the same month to confront the Swedish army in the west, but after some skirmishes with the Swedish vanguard retreated southwards to [[Kraków]]. On 8 September Charles X Gustav occupied Warsaw, then turned south to confront the retreating Polish king. The kings met at the [[Battle of Żarnów]] on 16 September, which like the next encounter at the [[Battle of Wojnicz]] on 3 October was decided for Sweden. John II Casimir was exiled to [[Silesia]] while Kraków surrendered to Charles X Gustav on 19 October. ||| Swedish campaigns in the Polish–Lithuanian Commonwealth ||| ||| +-1 Second Sino-Japanese War ||| Battle of Changde ||| Most of China's own industry had already been captured or destroyed by Japan, and the Soviet Union refused to allow the United States to supply China through [[Kazakhstan]] into [[Xinjiang]] as the Xinjiang warlord [[Sheng Shicai]] had turned [[Anti-Sovietism|anti-Soviet]] in 1942 with Chiang's approval. For these reasons, the Chinese government never had the supplies and equipment needed to mount major counter-offensives. Despite the severe shortage of matériel, in 1943, the Chinese were successful in repelling major Japanese offensives in [[Battle of West Hubei|Hubei]] and [[Battle of Changde|Changde]]. ||| Course of the war ||| Entrance of the Western Allies ||| +-1 Second Sino-Japanese War ||| Battle of Pingxingguan ||| The Nationalists suffered higher casualties because they were the main combatants opposing the Japanese in each of the 22 major battles between China and Japan (involving more than 100,000 troops on both sides). The Communist forces, by contrast, usually avoided pitched battles with the Japanese and generally limited their combat to guerilla actions (the [[Hundred Regiments Offensive]] and the [[Battle of Pingxingguan]] are notable exceptions). The Nationalist committed their strongest divisions in early battle against the Japanese (including the 36th, 87th, 88th divisions, the crack divisions of Chiang's Central Army) to [[Battle of Shanghai|defend Shanghai]] and continued to deploy most of their forces to fight the Japanese even as the Communists changed their strategy to engage mainly in a political offensive against the Japanese while declaring that the CCP should 'save and preserve our strength and wait for favorable timing' by the end of 1941. ||| Conclusion and aftermath ||| Aftermath ||| +-1 Second Sino-Japanese War ||| Battle of South Shanxi ||| * {{Flagdeco|Empire of Japan}} [[Battle of South Shanxi]] May 1941 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Battle of West Hubei ||| Most of China's own industry had already been captured or destroyed by Japan, and the Soviet Union refused to allow the United States to supply China through [[Kazakhstan]] into [[Xinjiang]] as the Xinjiang warlord [[Sheng Shicai]] had turned [[Anti-Sovietism|anti-Soviet]] in 1942 with Chiang's approval. For these reasons, the Chinese government never had the supplies and equipment needed to mount major counter-offensives. Despite the severe shortage of matériel, in 1943, the Chinese were successful in repelling major Japanese offensives in [[Battle of West Hubei|Hubei]] and [[Battle of Changde|Changde]]. ||| Course of the war ||| Entrance of the Western Allies ||| +-1 Second Sino-Japanese War ||| Defense of Sihang Warehouse ||| ** [[Defense of Sihang Warehouse]] October 26, 1937 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Hainan Island Operation ||| * {{Flagdeco|Empire of Japan|naval}} [[Hainan Island Operation|Hainan Island]] February 1939 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Resistance at Nenjiang Bridge ||| ** {{Flagdeco|Empire of Japan}} [[Resistance at Nenjiang Bridge]] November 1931 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Second Guangxi Campaign ||| Initially the Japanese scored major victories, such as the [[Battle of Shanghai]], and by the end of 1937 captured the Chinese capital of [[Nanking]]. After failing to stop the Japanese in [[Battle of Wuhan|Wuhan]], the Chinese central government was relocated to [[Chongqing]] in the Chinese interior. By 1939, after Chinese victories in [[Battle of Changsha (1939)|Changsha]] and [[Battle of South Guangxi|Guangxi]], and with stretched lines of communications deep into the Chinese interior territories, the war had reached a [[stalemate]]. The Japanese were also unable to defeat the Chinese communist forces in [[Shaanxi]], which continued to perform sabotage operations against the Japanese using guerrilla warfare tactics. On December 7, 1941, the Japanese attacked [[Pearl Harbor]], and the following day (December 8, 1941) the [[United States declaration of war upon Japan|United States declared war on Japan]]. The United States began to aid China via airlift matériel over [[the Hump|the Himalayas]] after the [[Allies of World War II|Allied]] defeat in [[Japanese conquest of Burma|Burma]] that closed the [[Burma Road]]. In 1944 Japan launched [[Operation Ichi-Go|a massive invasion]] and conquered [[Henan]] and [[Changsha]]. However, this failed to bring about the surrender of Chinese forces. In 1945, [[Chinese Expeditionary Force]] resumed [[Battle of Northern Burma and Western Yunnan|its advance in Burma]] and completed the [[Ledo road]] linking India and China. At the same time, China launched large counteroffensives in South China and [[Battle of West Hunan|retook the west Hunan]] [[Second Guangxi Campaign|and Guangxi]]. ||| ||| ||| +-1 Second Sino-Japanese War ||| Swatow Operation ||| * {{Flagdeco|Empire of Japan}} {{Flagdeco|Empire of Japan|naval}} [[Swatow Operation|Shantou]] June 1939 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Seven Days Battles ||| Battle of Malvern Hill ||| The Seven Days began on Wednesday, June 25, 1862, with a Union attack in the minor [[Battle of Oak Grove]], but McClellan quickly lost the initiative as Lee began a series of attacks at [[Battle of Beaver Dam Creek|Beaver Dam Creek]] ([[Mechanicsville, Virginia|Mechanicsville]]) on June 26, [[Battle of Gaines's Mill|Gaines's Mill]] on June 27, the minor actions at [[Battle of Garnett's & Golding's Farm|Garnett's and Golding's Farm]] on June 27 and 28, and the attack on the Union rear guard at [[Battle of Savage's Station|Savage's Station]] on June 29. McClellan's [[Army of the Potomac]] continued its retreat toward the safety of [[Harrison's Landing]] on the [[James River (Virginia)|James River]]. Lee's final opportunity to intercept the Union Army was at the [[Battle of Glendale]] on June 30, but poorly executed orders allowed his enemy to escape to a strong defensive position on Malvern Hill. At the [[Battle of Malvern Hill]] on July 1, Lee launched futile frontal assaults and suffered heavy casualties in the face of strong infantry and artillery defenses. ||| ||| ||| +-1 South African Border War ||| Battle of Cuito Cuanavale ||| Cuba considerably reinforced its troops in Angola and came to the defence of the besieged FAPLA. The MPLA-Cuban advance against UNITA was halted by the SADF at the [[Battle of Cuito Cuanavale]], the largest battle in Africa since World War II, in which both sides have claimed victory. The bulk of the Cuban forces then advanced towards Namibia further to the west. On 27 June 1988, Cuban [[Mikoyan-Gurevich MiG-23|MiG-23]] fighters bombed the [[Calueque]] [[hydro-electric]] complex at {{Coord|-16.7367|14.9669|type:landmark|name=Calueque}}, disabling it and killing 12 SADF soldiers. For some analysts [Such as Luis Cino, of the well-known anti-Castro press organisation, Cubanet, ``Cinco meses después, el 28 de julio de 1988, demoledores golpes aéreos de los Mig-23 cubanos contra las fuerzas sudafricanas en Calueque y Rucaná, cerca de la frontera con Namibia, marcaron la derrota sudafricana en Angola.'' http://www.cubanet.org/CNews/y07/apr07/23a8.htm ||| Cold War and Border War end: 1989 ||| Different perspectives ||| +-1 Spanish American wars of independence ||| Capture of Valdivia ||| :*[[Capture of Valdivia]] ||| Overview ||| Wars, battles and revolts ||| +-1 Sri Lankan Civil War ||| Battle of Mullaitivu (1996) ||| The LTTE responded by launching [[Operation Unceasing Waves I|Operation Unceasing Waves]] and decisively won the [[Battle of Mullaitivu (1996)|Battle of Mullaitivu]] on 18 July 1996, leaving 1,173 Army troops dead. The town of [[Kilinochchi]] was taken on 29 September. On 13 May 1997, 20,000 government troops tried to open a supply line through the LTTE-controlled Vanni, but failed. ||| Eelam War III ||| ||| +-1 Strategic bombing during World War II ||| Battle of the Ruhr ||| According to economic historian [[Adam Tooze]], in his book ''[[The Wages of Destruction|The Wages of Destruction: The Making and Breaking of the Nazi Economy]]'', a turning point in the bomber offensive was reached in March 1943, during the [[Battle of the Ruhr]]. Over five months 34,000 tons of bombs were dropped. Following the raids, steel production fell by 200,000 tons, making a shortfall of 400,000 tons. Speer acknowledged that the RAF were hitting the right targets, and raids severely disrupted his plans to increase production to meet increasing attritional needs. Between July 1943 and March 1944 there were no further increases in the output of aircraft. ||| Europe ||| The British later in the war ||| +-1 Strategic bombing during World War II ||| Bombing of Dresden in World War II ||| Two further thousand-bomber raids were conducted over [[Essen]] and [[Bremen (city)|Bremen]], but neither so utterly shook both sides as the scale of the destruction at Cologne and Hamburg.{{Citation needed|date=June 2011}} The effects of the massive raids using a combination of [[blockbuster bomb]]s (to blow off roofs) and incendiaries (to start fires in the exposed buildings) created [[firestorm]]s in some cities. The most extreme examples of which were caused by [[Operation Gomorrah]], the [[Bombing of Hamburg in World War II|attack on Hamburg]], (45,000 dead), [[Bombing of Kassel in World War II|attack on Kassel]] (10,000 dead), the [[Bombing of Darmstadt in World War II|attack on Darmstadt]] (12,500 dead), the [[Bombing of Pforzheim in World War II|attack on Pforzheim]] (21,200 dead), the attack on Swinemuende (23,000 dead) and the [[Bombing of Dresden in World War II|attack on Dresden]] (25,000 dead). ||| Europe ||| The British later in the war ||| +-1 Third Indochina War ||| Sino-Vietnamese War ||| *The [[Sino-Vietnamese War]] and subsequent [[Sino-Vietnamese conflicts 1979–90|border conflicts]] ||| ||| ||| +-1 Third Macedonian War ||| Battle of Pydna ||| There was a stalemate near Phalanna involving Perseus and Crassus. In 169 BC, consul Quintus Marcius Philippus crossed the Olympus Range and entered Macedonia. However, his army ran out of provisions and retired on a narrow strip of coast near Tempe. Perseus tried to win Eumenes of Pergamon and King [[Antiochus IV]] of the Seleucid Empire over to his side but failed. He did, however, succeed in buying the support of the [[Illyria]]n king [[Genthius]] in the autumn of 169 BC. Perseus was defeated by the legions of the Roman consul [[Lucius Aemilius Paullus Macedonicus|Lucius Aemilius Paullus]] at the [[Battle of Pydna]] in 168 BC. This defeat was largely due to the inflexibility of Macedonian phalanx tactics compared to the [[maniple (military unit)|maniple]]-based tactics of the [[Roman legions]]. ||| ||| ||| +-1 Trafalgar Campaign ||| Battle of Trafalgar ||| The '''Trafalgar Campaign''' was a long and complicated series of fleet manoeuvres carried out by the combined [[French Navy|French]] and [[Spanish Navy|Spanish]] fleets; and the opposing moves of the [[Royal Navy]] during much of 1805. These were the culmination of French plans to force a passage through the [[English Channel]], and so achieve a successful [[Napoleon's planned invasion of the United Kingdom|invasion of the United Kingdom]]. The plans were extremely complicated and proved to be impractical. Much of the detail was due to the personal intervention of [[Napoleon I of France|Napoleon]], who as a soldier rather than a sailor failed to consider the effects of weather, difficulties in communication, and the Royal Navy. Despite limited successes in achieving some elements of the plan the French commanders were unable to follow the main objective through to execution. The campaign, which took place over thousands of miles of ocean, was marked by several naval engagements, most significantly at the [[Battle of Trafalgar]] on 21 October, where the combined fleet was decisively defeated, and from which the campaign takes its name. A final mopping up action at the [[Battle of Cape Ortegal]] on 4 November completed the destruction of the combined fleet, and secured the supremacy of the Royal Navy at sea. ||| ||| ||| +-1 Vietnam War ||| Operation Freedom Deal ||| This invasion sparked [[protests against the Vietnam War|nationwide U.S. protests]] as Nixon had promised to deescalate the American involvement. [[Kent State shootings|Four students were killed by National Guardsmen]] at [[Kent State University]] during a protest in [[Ohio]], which provoked further public outrage in the United States. The reaction to the incident by the Nixon administration was seen as callous and indifferent, providing additional impetus for the anti-war movement. The U.S. Air Force continued to heavily bomb Cambodia in support of the Cambodian government as part of [[Operation Freedom Deal]]. ||| Vietnamization, 1969–72 ||| Cambodia and Laos ||| +-1 Vietnam War ||| Operation Frequent Wind ||| Chaos, unrest, and panic broke out as hysterical South Vietnamese officials and civilians scrambled to leave Saigon. [[Martial law]] was declared. American helicopters began evacuating South Vietnamese, U.S., and foreign nationals from various parts of the city and from the U.S. embassy compound. [[Operation Frequent Wind]] had been delayed until the last possible moment, because of U.S. Ambassador [[Graham Martin]]'s belief that Saigon could be held and that a political settlement could be reached. ||| Exit of the Americans: 1973–75 ||| Fall of Saigon ||| +-1 War in Donbass ||| Second Battle of Donetsk Airport ||| Reports of Russian involvement continued into early 2015. Russian forces and equipment participated in the [[Second Battle of Donetsk Airport]] and the [[Battle of Debaltseve]]. ||| Russian involvement ||| ||| +-1 War of 1812 ||| Battle of Bladensburg ||| In April 1814, with the defeat of Napoleon, the British adopted a more aggressive strategy, sending larger invasion armies and tightening their naval blockade. However, with the end of the Napoleonic Wars in Europe, both governments were eager for a return to normality and peace negotiations began in Ghent in August 1814. In September 1814, the British [[Battle of Hampden|invaded and occupied eastern Maine]]. In the [[Deep South]], General [[Andrew Jackson]] destroyed the military strength of the [[Muscogee (Creek) Nation]] at the [[Battle of Horseshoe Bend (1814)|Battle of Horseshoe Bend]]. The British victory at the [[Battle of Bladensburg]] in August 1814 allowed them to capture and [[Burning of Washington|burn Washington, D.C.]], but they were repulsed [[Battle of Baltimore|in an attempt to take Baltimore]]. American victories in September 1814 at the [[Battle of Plattsburgh]] repulsed the British invasions of [[New York]], which along with pressure from merchants on the British government prompted British diplomats to drop their demands at Ghent for an independent native buffer state and territorial claims that London previously sought. Both sides agreed to a peace that restored the situation before the war began. However, it took six weeks for ships to cross the Atlantic so news of the peace treaty did not arrive before the British suffered a major defeat at [[Battle of New Orleans|New Orleans]] in January 1815. ||| ||| ||| +-1 War of 1812 ||| Battle of Chippawa ||| By the middle of 1814, American generals, including Major Generals [[Jacob Brown]] and [[Winfield Scott]], had drastically improved the fighting abilities and discipline of the army. Their renewed attack on the Niagara peninsula quickly captured [[Fort Erie]]. Winfield Scott then gained a victory over an inferior British force at the [[Battle of Chippawa]] on July 5. An attempt to advance further ended with a hard-fought but inconclusive battle at [[Battle of Lundy's Lane|Lundy's Lane]] on July 25. ||| Theatres of war ||| Great Lakes and Western Territories ||| Niagara and Plattsburgh Campaigns, 1814 +-1 War of 1812 ||| Battle of Horseshoe Bend (1814) ||| In April 1814, with the defeat of Napoleon, the British adopted a more aggressive strategy, sending larger invasion armies and tightening their naval blockade. However, with the end of the Napoleonic Wars in Europe, both governments were eager for a return to normality and peace negotiations began in Ghent in August 1814. In September 1814, the British [[Battle of Hampden|invaded and occupied eastern Maine]]. In the [[Deep South]], General [[Andrew Jackson]] destroyed the military strength of the [[Muscogee (Creek) Nation]] at the [[Battle of Horseshoe Bend (1814)|Battle of Horseshoe Bend]]. The British victory at the [[Battle of Bladensburg]] in August 1814 allowed them to capture and [[Burning of Washington|burn Washington, D.C.]], but they were repulsed [[Battle of Baltimore|in an attempt to take Baltimore]]. American victories in September 1814 at the [[Battle of Plattsburgh]] repulsed the British invasions of [[New York]], which along with pressure from merchants on the British government prompted British diplomats to drop their demands at Ghent for an independent native buffer state and territorial claims that London previously sought. Both sides agreed to a peace that restored the situation before the war began. However, it took six weeks for ships to cross the Atlantic so news of the peace treaty did not arrive before the British suffered a major defeat at [[Battle of New Orleans|New Orleans]] in January 1815. ||| ||| ||| +-1 War of 1812 ||| Battle of New Orleans ||| The war was fought in three [[Theater (warfare)|theatres]]. Firstly, at sea, warships and [[privateer]]s of each side attacked the other's merchant ships, while the British [[blockade]]d the Atlantic coast of the United States and mounted large raids in the later stages of the war. Secondly, land and naval battles were fought on the US–Canadian frontier, which ran along the [[Great Lakes]], the [[Saint Lawrence River]] and the northern end of [[Lake Champlain]]. Thirdly, the [[Southern United States]] and [[Gulf of Mexico|Gulf Coast]] also saw big land battles, in which US forces defeated Britain's Native American allies and a British invasion force at [[Battle of New Orleans|New Orleans]]. At the end of the war both sides signed the [[Treaty of Ghent]], returned occupied land to its pre-war owner and resumed friendly trade relations. ||| ||| ||| +-1 War of 1812 ||| Siege of Fort Erie ||| The outnumbered Americans withdrew but withstood a prolonged [[Siege of Fort Erie]]. The British suffered heavy casualties in a failed assault and were weakened by exposure and shortage of supplies in their siege lines. Eventually the British raised the siege, but American Major General [[George Izard]] took over command on the Niagara front and followed up only halfheartedly. The Americans lacked provisions, and eventually destroyed the fort and retreated across the Niagara. ||| Theatres of war ||| Great Lakes and Western Territories ||| Niagara and Plattsburgh Campaigns, 1814 +-1 War of 1812 ||| Siege of Prairie du Chien ||| Little of note took place on Lake Huron in 1813, but the American victory on Lake Erie and the recapture of Detroit isolated the British there. During the ensuing winter, a Canadian party under Lieutenant Colonel [[Robert McDouall]] established a new supply line from York to [[Nottawasaga Bay]] on [[Georgian Bay]]. When he arrived at Fort Mackinac with supplies and reinforcements, he sent an expedition to recapture the trading post of [[Prairie du Chien, Wisconsin|Prairie du Chien]] in the far west. The [[Siege of Prairie du Chien]] ended in a British victory on July 20, 1814. ||| Theatres of war ||| Great Lakes and Western Territories ||| American West, 1813–14 +-1 War of Independence of Brazil ||| Battle of Jenipapo ||| *[[Battle of Jenipapo]] ||| Key Battles ||| ||| +-1 War of Independence of Brazil ||| Siege of Montevideo (1823) ||| Both parties (Portuguese and Brazilian) saw the Portuguese warships spread across the country (mostly in poor condition) as the instrument through which military victory could be achieved. In early 1822, the Portuguese navy controlled a [[ship of the line]], two [[frigates]], four [[corvettes]], two [[brigs]], and four warships of other categories in Brazilian waters. There were about 10,000 Portuguese soldiers and units of the royal [[cavalry]] along the Atlantic coast. About 3,000 soldiers were involved in the [[Siege of Montevideo (1823)|siege of Montevideo]]. A similar number of soldiers occupied Salvador and the rest of the troops were scattered throughout the region. ||| Opposing forces ||| ||| +-1 War of the Austrian Succession ||| Battle of Dettingen ||| King Frederick of Prussia was terrified by the defeat at Dettingen. Marshal Noailles was driven almost to the Rhine by King George. The French and Bavarian army had been completely outmanoeuvred and was in a position of the greatest danger between [[Aschaffenburg]] and [[Hanau]] in the [[defile (geography)|defile]] formed by the [[Spessart]] Hills and the river Main. Yet the English Pragmatic Army did not quickly follow up the attack. Thus, Marshal Noailles had time to block the outlet and had posts all around. At this point, the allied troops had to force their way through the French and Bavarian lines. Still, because of the heavy losses inflicted on the French, the [[Battle of Dettingen]] and the follow up is justly reckoned as a notable victory of Anglo-Austrian-Hanoverian arms. ||| Campaign of 1743 ||| ||| +-1 War of the Austrian Succession ||| Battle of Fontenoy ||| The year 1745 saw three of the greatest battles of the war: [[Battle of Hohenfriedberg|Hohenfriedberg]], [[Battle of Kesselsdorf|Kesselsdorf]] and [[Battle of Fontenoy|Fontenoy]]. The first event of the year was the formation of the [[Quadruple Alliance (1745)|Quadruple Alliance]] of Britain, Austria, the Dutch Republic and Saxony, concluded at [[Warsaw]] on 8 January 1745 by the [[Treaty of Warsaw (1745)|Treaty of Warsaw]]. The young elector [[Maximilian III Joseph, Elector of Bavaria|Maximilian III Joseph]] had to abandon Munich once more. The [[Treaty of Füssen|Peace of Füssen]] followed on 22 April 1745, by which Maximilian III secured his hereditary states on condition of supporting the candidature of the Grand-Duke Francis, consort of Maria Theresa. The 'imperial' army ceased ''ipso facto'' to exist. ||| Campaign of 1745 ||| ||| +-1 War of the Fifth Coalition ||| Battle of Aspern-Essling ||| The [[Battle of Aspern-Essling]] started at 2:30 pm on 21 May. The initial and poorly coordinated Austrian attacks against Aspern and the Gemeinde Au woods to the south failed completely, but Charles persisted. Eventually, the Austrians managed to capture the whole village but lost the eastern half. The Austrians did not attack Essling until 6 pm because the fourth and fifth columns had longer marching routes. The French successfully repulsed the attacks against Essling throughout the 21st. Fighting commenced by 3 am on the 22nd, and four hours later the French had captured Aspern again. Napoleon now had 71,000 men and 152 guns on the other side of the river, but the French were still dangerously outnumbered. Charles then kept up a relentless artillery bombardment that counted Marshal Lannes as one of its many victims. Fighting diminished shortly afterwards, and the French pulled back all of their forces to Lobau. Charles had inflicted the first major defeat in Napoleon's military career. ||| Course of War ||| Aspern-Essling ||| +-1 War of the Fifth Coalition ||| Walcheren Campaign ||| The '''War of the Fifth Coalition''' was fought in the year 1809 by a coalition of the [[Austrian Empire]] and the [[United Kingdom of Great Britain and Ireland|United Kingdom]] against [[Napoleon I of France|Napoleon]]'s [[First French Empire|French Empire]] and [[Bavaria]]. Major engagements between France and Austria, the main participants, unfolded over much of Central Europe from April to July, with very high casualty rates for both sides. Britain, already involved on the European continent in the ongoing [[Peninsular War]], sent another expedition, the [[Walcheren Campaign]], to the Netherlands in order to relieve the Austrians, although this effort had little impact on the outcome of the conflict. After much campaigning in Bavaria and across the [[Danube River|Danube valley]], the war ended favourably for the French after the bloody struggle at [[Battle of Wagram|Wagram]] in early July. ||| ||| ||| +-1 War of the Limburg Succession ||| Battle of Worringen ||| After the decisive [[Battle of Worringen]] in 1288, won by Duke John I of Brabant and his allies, the Duchy of Limburg came in the possession of the Duke of Brabant. The City of Cologne gained its independence from the Archbishopric and finally the status of an Imperial city in 1475. ||| ||| ||| +-1 War of the Polish Succession ||| Battle of Guastalla ||| Mercy's forces made repeated attempts to cross the [[Parma (river)|Parma River]] in June, but it was not until late in that month that they were able to cross the river and approach the city of [[Parma]], where the allied forces, now under the command of French marshals [[François-Marie, 1st duc de Broglie|de Broglie]] and [[François de Franquetot de Coigny|Coigny]], were entrenched. In a [[Battle of San Pietro|bloody battle near the village of Crocetta]] on June 29, the Austrians were beaten back, Mercy was killed, and [[Frederick Louis of Württemberg-Winnental|Frederick of Württemberg]], his second, was wounded. Charles Emmanuel returned the next day to retake command, and resumed his delaying tactics by failing to immediately pursue the retreating Austrians. The Austrians retreated to the Po, where they were reinforced by additional troops and placed under the command of [[Dominik von Königsegg-Rothenfels|Field Marshal Königsegg]]. After two months of inaction, during which the armies faced each other across the [[Secchia]] River, Königsegg on September 15 took advantage of lax security and executed a raid on Coigny's headquarters at [[Quistello]], very nearly capturing Coigny and taking among other prizes Charles Emmanuel's china. Two days later the French withdrew to a position near [[Guastalla]] in response to Austrian maneuvers, but one detachment of nearly 3,000 men was surrounded and captured by the advancing Austrians. On September 19, Königsegg [[Battle of Guastalla|attacked the allied position at Guastalla]], and in another bloody encounter, was beaten back, losing among others Frederick of Württemberg. Königsegg retreated across the Po, adopting a defensive position between the Po and the [[Oglio]] while Charles Emmanuel again did not capitalize on his victory. When he finally withdrew most of the allied army to [[Cremona]], the Austrians advanced on the north bank of the Po as far as the [[Adda (river)|Adda]] before both armies entered winter quarters in December 1734. ||| War ||| Italy ||| +-1 War of the Quadruple Alliance ||| Battle of Cape Passaro ||| On 11 August, at the [[Battle of Cape Passaro]], a British fleet, led by [[George Byng, 1st Viscount Torrington|Sir George Byng]], effectively eliminated the Spanish fleet stationed off Sicily. This was followed in the autumn by the landing of a small Austrian army, assembled in Naples by the Austrian Viceroy [[Count Wirich Philipp von Daun]], near [[Messina]] to lift the siege by the Spanish forces. The Austrians were defeated in the [[Battle of Milazzo (1718)|First Battle of Milazzo]] on 15 October, and only held a small bridgehead around [[Milazzo]]. ||| Wider war ||| ||| +-1 War of the Second Coalition ||| Second Battle of Zurich ||| In Europe, the allies mounted several invasions, including [[Suvorov's Italian expedition|campaigns in Italy and Switzerland]] and an [[Anglo-Russian invasion of Holland|Anglo-Russian invasion]] of the [[Netherlands]]. Russian general [[Aleksandr Suvorov]] inflicted a series of defeats on the French in Italy, driving them back to the Alps. However, the allies were less successful in the Netherlands, where the British retreated after a defeat [[Battle of Castricum|at Castricum]], and in Switzerland, where after initial victories a Russian army was completely routed at the [[Second Battle of Zurich]]. These reverses, as well as British insistence on searching shipping in the [[Baltic Sea]] led to Russia withdrawing from the Coalition. ||| The war ||| 1799 ||| +-1 War of the Spanish Succession ||| Battle of Calcinato ||| On 16 August 1705, Vendôme defeated Eugene at the [[Battle of Cassano (1705)|Battle of Cassano]] on the Adda. On 19 April 1706, the French commander defeated Count [[Christian Detlev Reventlow|Reventlow]] at the [[Battle of Calcinato]], and drove the Austrians back into the mountains around [[Lake Garda]]; shortly after, La Feuillade began the siege of Turin. The French victories had prevented the Austrians marching to aid Savoy, but as in the Spanish Netherlands the year would prove decisive for the Grand Alliance. By mid-May Eugene's army, newly reinforced with German auxiliaries (secured by Marlborough and financed by the Maritime Powers), had grown to 50,000 men. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Italy +-1 War of the Third Coalition ||| Battle of Amstetten ||| The main body of the [[Napoleonic French army]] followed the remains of the Austrian army towards [[Vienna]]. Following the failure of the Austrian army at Ulm, a [[Russian Empire|Russian]] army under General Mikhail Kutuzov was also withdrawing east, and reached the [[Ill (Austria)|Ill river]] on 22 October, where it joined with the retreating Corps ''Kienmayer''. On 5 November, they held a successful rearguard action in [[Battle of Amstetten|Amstetten]]. On 7 November, the Russians arrived in [[St. Pölten]], and then moved across the Danube river the next day. Late on 9 November, they destroyed the bridges across the Danube, holding the last one, at Stein, near [[Krems an der Donau|Krems]], until the late afternoon. ||| Battle of Austerlitz ||| Preliminaries ||| +-1 Wars of the Three Kingdoms ||| Scotland in the Wars of the Three Kingdoms ||| The wars included the [[Bishops' Wars]] of 1639 and 1640, the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] of 1644–45; the [[Irish Rebellion of 1641]], [[Confederate Ireland]], 1642–49 and the [[Cromwellian conquest of Ireland]] in 1649 (collectively the Eleven Years War or [[Irish Confederate Wars]]); and the [[First English Civil War|First]], [[Second English Civil War|Second]] and [[Third English Civil War|Third]] [[English Civil Wars]] of 1642–46, 1648–49 and 1650–51. ||| ||| ||| +-1 Western Desert Campaign ||| Siege of Tobruk ||| In the Spring of 1941 Axis forces under Rommel pushed the British-led allied forces back and reached [[Tobruk]] which [[Siege of Tobruk|was besieged]]. The allied force there held out and were relieved during [[Operation Crusader]], who then pushed the Axis forces back to where they had started by the end of the year. In 1942 Axis forces drove the Allies back [[Battle of Gazala|capturing Tobruk]] but failed to gain a decisive victory. On the final Axis push to Egypt the Allies retreated to El Alamein, where at the [[Second Battle of El Alamein]] the Eighth Army defeated the Axis forces, which never recovered and were driven out of Libya to [[Tunisia]], where they were defeated in the [[Tunisia Campaign]]. After the British defeats in the [[Balkan Campaign (World War II)|Balkan Campaign]], the Western Desert Campaign had become more important to British strategy. For [[Adolf Hitler]] the [[Eastern Front (World War II)|Eastern Front]] dwarfed the desert war, which was a holding action of secondary importance. The Axis never had sufficient resources or the means to deliver them to defeat the British, who in their turn missed several opportunities to finish the campaign, by diverting resources to Greece and the Levant in 1941 and the Far East in 1942. ||| ||| ||| +-1 Western Front (World War I) ||| Battle of Cambrai (1917) ||| On 20 November the British launched the first massed tank attack during the [[Battle of Cambrai (1917)|Battle of Cambrai]]. {{cite web ||| 1917—British offensives ||| Battle of Cambrai ||| +-1 Western Front (World War I) ||| Battle of Hill 70 ||| Beginning on 31 July and continuing to 10 November the struggle around Ypres was renewed with the [[Battle of Passchendaele]] (technically the Third Battle of Ypres, of which Passchendaele was the final phase). The battle had the original aim of capturing the ridges east of Ypres then advancing to Roulers and Thourout to close the main rail line supplying the German garrisons of the Western front and the Belgian coast then capturing the German submarine bases on the Belgian coast, but was later restricted to advancing the British Army onto the ridges around Ypres, as the unusually wet weather slowed British progress. Canadian veterans from the [[Battle of Vimy Ridge]] and the [[Battle of Hill 70]] relieved the two [[Australian and New Zealand Army Corps|ANZAC Corps]] and other British forces and took the village of Passchendaele on 6 November, despite extremely heavy rain and casualties. The offensive produced large numbers of casualties on both sides for relatively little gain of ground against dogged German resistance, yet that captured was of great tactical importance and the British made inexorable gains during periods of drier weather. The ground was generally muddy and pocked by shell craters, making supply missions and further advancement very difficult. ||| 1917—British offensives ||| British offensives, American troops arrive ||| +-1 Western Front (World War I) ||| Battle of Messines (1917) ||| On 7 June a British offensive was launched on [[Battle of Messines (1917)|Messines Ridge]], south of Ypres, to retake the ground lost in the First and Second Battles of Ypres in 1914. Since 1915 specialist [[Royal Engineer tunnelling companies]] had been digging tunnels under the ridge, and about 500 tonnes ||| 1917—British offensives ||| British offensives, American troops arrive ||| +-1 Western Front (World War I) ||| Second Battle of the Aisne ||| |[[Second Battle of the Aisne|2nd Aisne]] ||| Consequences ||| ||| +-1 Western Front (World War I) ||| Third Battle of Artois ||| |[[Third Battle of Artois]] ||| Consequences ||| ||| +-1 Western Front (World War II) ||| Operation Goodwood ||| The Allies had been arguing about whether to advance on a broad-front or a narrow-front from before D-Day. If the British had broken out of the Normandy bridge-head around [[Caen]] when they launched Operation ''[[Operation Goodwood|Goodwood]]'' and pushed along the coast, [[facts on the ground]] might have turned the argument in favour of a narrow front. However, as the breakout took place during Operation ''Cobra'' at the western end of the bridge-head, the [[21st Army Group]] that included the [[British Army during the Second World War#1944|British]] and [[History of the Canadian Army#Second World War|Canadian]] forces swung east and headed for Belgium, the Netherlands and Northern Germany, while the US [[Twelfth United States Army Group|Twelfth Army Group]] advanced to their south via eastern France, Luxembourg and the [[Ruhr Area]], rapidly fanning out into a broad front. As this was the strategy favoured by supreme Allied commander [[Dwight D. Eisenhower]] and most of the rest of the American high command, it became the strategy which was adopted. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Normandy ||| +-1 Western Sahara War ||| 1991 Tifariti offensive ||| [[1991 Tifariti offensive]] was the last military operation in [[Western Sahara]] War launched by Moroccan forces and its allies against the [[Sahrawi people|Sahrawi]] [[guerrilla]] fighters of the [[Polisario Front]]. During August–September 1991 the Royal Moroccan Army (RMA) conducted offensive operations in the areas of Mehaires, Tifariti and Bir Lahlou. ||| Timeline ||| Escalation 1989–1991 ||| +-1 Western Sahara conflict ||| Independence Intifada (Western Sahara) ||| Despite multiple peace initiatives through the 1990s and early 2000s, the conflict reemerged as the '[[Independence Intifada (Western Sahara)|Independence Intifada]]' in 2005; a series of disturbances, demonstrations and riots, which broke out in May 2005 in the Moroccan-held portions of Western Sahara, and lasted until November of that same year. In late 2010, the protests re-erupted in the [[Gdeim Izik protest camp|Gdeim Izik refugee camp]] in Western Sahara. While the protests were initially peaceful, they were later marked by clashes between civilians and security forces, resulting in dozens of casualties on both sides. Another series of [[2011 Western Saharan protests|protests]] began on 26 February 2011, as a reaction to the failure of police to prevent anti-Sahrawi looting in the city of [[Dakhla, Western Sahara]]; protests soon spread throughout the territory. Though sporadic demonstrations continue, the movement had largely subsided by May 2011. ||| ||| ||| +-1 Western Sahara conflict ||| Western Sahara War ||| The '''Western Sahara conflict''' or '''Polisario Front dispute for independence''' is an ongoing conflict between the [[Polisario Front]] of the [[Sahrawi people]] and the kingdom of [[Morocco]]. The conflict is the continuation of the past insurgency by Polisario against the Spanish colonial forces in 1973–75 and the subsequent [[Western Sahara War]] between the Polisario and Morocco (1975–91). Today the conflict is dominated by unarmed civil campaigns of the Polisario Front and their self-proclaimed SADR state to gain fully recognized independence for Western Sahara. ||| ||| ||| +-1 Williamite War in Ireland ||| Siege of Derry ||| William defeated Jacobitism in Ireland and subsequent [[Jacobite risings]] were confined to Scotland and England. However, the War was to have a lasting effect on Ireland, confirming British and Protestant rule over the country for over two centuries. The iconic Williamite victories of the [[Siege of Derry]] and the [[Battle of the Boyne]] are [[Orange walk|still celebrated]] by (mostly [[Ulster Protestant]]) [[unionist (Ireland)|unionist]]s in [[Ireland]] today. ||| ||| ||| +-1 Winter War ||| Battle of Petsamo (1939) ||| In battles from Ladoga Karelia all the way north to the Arctic port of [[Battle of Petsamo (1939)|Petsamo]], the Finns used guerrilla tactics. The Red Army was superior in numbers and [[materiel]], but the Finns used the advantages of speed, tactics, and [[economy of force]]. Particularly on the Ladoga Karelia front and during the [[battle of Raate road]], the Finns isolated smaller portions of numerically superior Soviet forces. With Soviet forces divided into smaller pieces, the Finns could deal with them individually and attack from all sides. ||| Defence of Finland ||| Finnish tactics ||| +-1 World War II ||| Battle of Berlin ||| The war in Europe ended with an [[Western Allied invasion of Germany|invasion of Germany]] by the Western Allies and the Soviet Union culminating in the [[Battle of Berlin|capture of Berlin]] by Soviet and Polish troops and the subsequent [[German Instrument of Surrender|German unconditional surrender]] on [[Victory in Europe Day|8 May 1945]]. Following the [[Potsdam Declaration]] by the Allies on 26 July 1945 and the refusal of Japan to surrender under its terms, the United States [[Atomic bombings of Hiroshima and Nagasaki|dropped atomic bombs]] on the Japanese cities of [[Hiroshima]] and [[Nagasaki]] on 6 August and 9 August respectively. With an [[Operation Downfall|invasion of the Japanese archipelago]] imminent, the possibility of additional atomic bombings, and the [[Soviet-Japanese War (1945)|Soviet Union's declaration of war on Japan]] and [[Soviet invasion of Manchuria|invasion of Manchuria]], [[Surrender of Japan|Japan surrendered]] on 15 August 1945. Thus ended the war in Asia, cementing the total victory of the Allies. ||| ||| ||| +-1 World War II ||| Battle of France ||| Germany [[Battle of France|launched an offensive against France]] and, adhering to the [[Manstein Plan]] also attacked the neutral nations of [[Battle of Belgium|Belgium]], [[Battle of the Netherlands|the Netherlands]], and [[German invasion of Luxembourg in World War II|Luxembourg]] on 10 May 1940. ||| Course of the war ||| Western Europe (1940–41) ||| +-1 World War II ||| Battle of Stalingrad ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Battle of the Coral Sea ||| In early May 1942, Japan initiated operations to [[Operation Mo|capture Port Moresby]] by [[amphibious assault]] and thus sever communications and supply lines between the United States and Australia. The Allies, however, prevented the invasion by intercepting and defeating the Japanese naval forces in the [[Battle of the Coral Sea]]. ||| Course of the war ||| Axis advance stalls (1942–43) ||| Pacific (1942–43) +-1 World War II ||| Battle of the Netherlands ||| Germany [[Battle of France|launched an offensive against France]] and, adhering to the [[Manstein Plan]] also attacked the neutral nations of [[Battle of Belgium|Belgium]], [[Battle of the Netherlands|the Netherlands]], and [[German invasion of Luxembourg in World War II|Luxembourg]] on 10 May 1940. ||| Course of the war ||| Western Europe (1940–41) ||| +-1 World War II ||| Guadalcanal Campaign ||| Both plans started in July, but by mid-September, [[Guadalcanal Campaign|the Battle for Guadalcanal]] took priority for the Japanese, and troops in New Guinea were ordered to withdraw from the Port Moresby area to the [[Oro Province|northern part of the island]], where they faced Australian and United States troops in the [[Battle of Buna-Gona]]. ||| Course of the war ||| Axis advance stalls (1942–43) ||| Pacific (1942–43) +-1 World War II ||| Invasion of Poland ||| On 1 September 1939, Germany [[Invasion of Poland|invaded Poland]] under the false pretext that the Poles had carried out a series of [[Gleiwitz incident|sabotage operations]] against German targets. Germany responded by ordering [[Submarine warfare#World War II|U-boat warfare]] against Allied merchant and warships, which was to later escalate into the [[Battle of the Atlantic]]. ||| Course of the war ||| War breaks out in Europe (1939–40) ||| +-1 World War II ||| Kokoda Track campaign ||| With its capacity for aggressive action greatly diminished as a result of the Midway battle, Japan chose to focus on a belated attempt to capture [[Port Moresby]] by an [[Kokoda Track campaign|overland campaign]] in the [[Territory of Papua]]. ||| Course of the war ||| Axis advance stalls (1942–43) ||| Pacific (1942–43) +-1 World War II ||| Western Desert Campaign ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 Yemeni Civil War (2015) ||| Battle of Aden Airport ||| Troops loyal to Hadi clashed with those who refused to recognise his authority in a [[Battle of Aden Airport|battle]] for [[Aden International Airport]] on 19 March. The forces under General [[Abdul-Hafez al-Saqqaf]] were defeated, and al-Saqqaf himself reportedly fled toward Sana'a. ||| Timeline ||| Conflict begins ||| +-1 Yemeni Civil War (2015) ||| Saudi Arabian-led intervention in Yemen ||| *[[Saudi Arabian-led intervention in Yemen]] ||| See also ||| ||| +-1 Yugoslav Wars ||| Siege of Sarajevo ||| On 19 June 1992, the war in Bosnia broke out, though the [[Siege of Sarajevo]] had already begun in April after Bosnia and Herzegovina had declared independence. The conflict, typified by the years-long Sarajevo siege and [[Srebrenica massacre|Srebrenica]], was by far the bloodiest and most widely covered of the Yugoslav wars. Bosnia's Serb faction led by ultra-nationalist [[Radovan Karadžić]] promised independence for all Serb areas of Bosnia from the majority-Bosniak government of Bosnia. To link the disjointed parts of territories populated by Serbs and areas claimed by Serbs, Karadžić pursued an agenda of systematic ethnic cleansing primarily against Bosnians through massacre and forced removal of Bosniak populations. ||| The wars ||| Bosnian War (1992–95) ||| +0 14 July Revolution ||| Iraq War ||| A result of several different grievances with Hashemite Iraqi policies, the [[coup d'état]] established the [[Iraqi Republic (1958–1968)|Republic of Iraq]]. From 14 July 1958 [[Iraq War|until 2003]], Iraq remained a ''[[de facto]]'' [[Arab nationalism|Arab nationalist]] and [[Arab socialism|socialist]] [[Single-party state|one-party state]]. ||| ||| ||| +0 15 October 2011 global protests ||| Occupy Berlin ||| 10,000 people gathered at the Neptune Fountain in [[Alexanderplatz]] between 13:00 and 14:00. At 14:00 the march set off towards the [[Brandenburg Gate]] (Brandenburger Tor), arriving to a police barrier at the [[Pariser Platz]] square at about 15:00. The march thus made a detour around Brandenburger Tor and marched towards the Kanzleramt, the seat of the federal government of Germany. In front of the Kanzleramt, an open microphone was put in place where anybody could come up and give their thoughts. The sound system was not loud enough for such a big gathering and so it was proposed to use the [[human microphone]] (das menschliche Megaphone in German) technique of Occupy Wall Street. The plan had been for everyone to go to Mariannenplatz in the evening where stages, music and food had been prepared. However the people spontaneously decided to assemble in front of the [[Reichstag (building)|Reichstag]] and held an assembly there. Tents were put out, and the food was brought from Mariannenplatz. The police came and told the people to disperse. The people refused to disperse and continued their assembly using the human mic. The police then proceeded to destroy the tents which had been put up. After all the tents had been destroyed or confiscated by the police, the police made rounds around the assembly and stole the blankets and mats of the people. At around midnight the policed made a final call to disperse and threatened serious consequences for those who stayed. The people decided to stay. The police then proceeded to violently and forcibly remove the peaceful gathering of people in the park in front of the parliamentarian. The police then told the dislodged people on the streets around Platz der Republik to go to Brandenburgertor. More than 100 people then regrouped at Pariserplatz near Brandenburgertor to make a new assembly. In that assembly it was decided to come back the next day at 13:00 at Pariserplatz to continue the movement. As soon had this decision been made that the police made renewed threats to the people. The people then decided to leave for the moment and come back the next day. People from the protest reported that the police blocked sms and Twitter communication containing certain key words such as 'occupyreichtag' or 'occupywallst' during periods of the day. The protest became ongoing and continues as [[Occupy Berlin]]. ||| Protests ||| Europe ||| Germany +0 15 October 2011 global protests ||| Occupy Wall Street ||| In Ireland protests were held throughout the country, including in [[Dublin]] In the same article this newspaper describes the movement in the following terms: ''The group has no hierarchical structure, has set up a Facebook page and Twitter account – with the social media links attracting a very mixed, and sometimes critical, reaction.'' The protest in Dublin was organized by the [[Real Democracy Now! Ireland]], Causes United (Ireland) & [[Occupy Dame Street]] protest, set up outside the [[Central Bank of Ireland]] in solidarity with the [[Occupy Wall Street]] movement in New York, also continued throughout the day. ||| Protests ||| Europe ||| Ireland +0 1923 Open Championship ||| Battle of Tel el-Kebir ||| |align=center|7||[[Battle of Tel el-Kebir|Tel-el-Kebir]]||align=center|370||align=center|4||align=center|16||Well||align=center|560||align=center|6 ||| Venue ||| ||| +0 1939–40 Winter Offensive ||| Mukden Incident ||| After the [[Mukden Incident]], the Japanese Army easily captured north-east China with little difficulty. After the [[Marco Polo Bridge Incident]], other than suffering some heavy losses in a few campaigns, the Japanese captured a lot of Chinese territory with relative ease. After two years of war, the Japanese never expected the KMT to have the capacity to launch a major counter-offensive. The Winter Offensive had a large psychological impact on the Japanese Army. ||| Conclusion ||| ||| +0 1948 Arab–Israeli War ||| Battle of Jerusalem ||| |[[Battle of Jerusalem (1948)|Battle of Jerusalem]], [[Operation Shfifon|Shfifon]], [[Operation Yevusi|Yevusi]], [[Battle of Ramat Rachel]] ||| Initial line-up of forces ||| Yishuv/Israeli forces ||| +0 1948 Arab–Israeli War ||| Deir Yassin massacre ||| Ben-Gurion invested [[Yigael Yadin]] with the responsibility to come up with a plan of offense whose timing was related to the foreseeable evacuation of British forces. This strategy, called Plan Dalet, was readied by March and implemented towards the end of April. 1500 men from Haganah's Givati brigade and [[Palmach]]'s Harel brigade conducted sorties to free up the route to the city between 5 and 20 April. Both sides acted offensively in defiance of the Partition Plan, which foresaw Jerusalem as a [[Corpus separatum (Jerusalem)|corpus separatum]], under neither Jewish nor Arab jurisdiction. The Arabs did not accept the Plan, while the Jews were determined to oppose the internationalization of the city, and secure it as part of the Jewish state. The success of the operation was assisted by the death of al-Hasayni in combat. During this time, and independently of Haganah or the framework of Plan Dalet, irregular fighters from [[Irgun]] and [[Lehi (group)|Lehi]] formations massacred a substantial number of Arabs at [[Deir Yassin massacre|Deir Yassin]], an event that, though publicly deplored and criticized by the principal Jewish authorities, had a deep impact on the morale of the Arab population and contributed to generate the [[1948 Palestinian exodus|exode of the Arab population]]. ||| Background ||| ||| +0 1948 Fukui earthquake ||| Pacific War ||| At the time, it was the deadliest [[earthquake]] after the [[Pacific War]] (now preceded by the [[Great Hanshin earthquake]] and the [[Tōhoku earthquake and tsunami]]). This earthquake killed 3769 people, mainly in [[Sakai, Fukui|Sakai City]] (then part of Fukui City), where the death rate was more than 1%. ||| Damage ||| Casualties ||| +0 1958 Syerston Avro Vulcan crash ||| Battle of Britain ||| On the day of the accident VX770 was flying from the [[Rolls-Royce Limited|Rolls-Royce]] airfield at [[Hucknall Airfield|Hucknall]], with four crew on board, including a flight test engineer from Avro, carrying out performance tests on the [[Rolls-Royce Conway]] engines that had been fitted in place of the [[Armstrong Siddeley Sapphire|Sapphires]] and [[Rolls-Royce Avon|Avon]]s originally fitted. During the course of the test-flight VX770 diverted to RAF Syerston to participate in the [[Battle of Britain]] day air show. ||| Flight ||| ||| +0 1983 Beirut barracks bombing ||| Algerian War ||| In the attack on the French barracks, the nine-story 'Drakkar' building, 55 paratroopers from the [[1st Parachute Chasseur Regiment]] and 3 paratroopers of the [[9th Parachute Chasseur Regiment]] were killed and 15 injured by a second truck bomb. This attack occurred just minutes after the attack on the American Marines. It was France's single worst military loss since the end of the [[Algerian War]]. ||| ||| ||| +0 1983 Kuwait bombings ||| 1983 Beirut barracks bombing ||| The '''1983 Kuwait bombings''' were attacks on six key foreign and Kuwaiti installations on 12 December 1983, two months after the [[1983 Beirut barracks bombing]]. The 90-minute coordinated attack on two embassies, the country's main airport and [[petro-chemical]] plant, was more notable for the damage it was intended to cause than what was actually destroyed. What might have been 'the worst terrorist episode of the twentieth century in the Middle East,' succeeding in killing only six people because of the bombs' faulty rigging. ||| ||| ||| +0 1991 Yugoslav campaign in Croatia ||| Siege of Dubrovnik ||| The campaign effectively started on 20 September 1991, even though relatively minor offensive actions had already been undertaken. By the end of the month, it suffered from serious delays and manpower shortages caused by low call-up turnout in [[Republic of Serbia (1990–2006)|Serbia]]. In early October, the original campaign objectives were reduced as Serbian president [[Slobodan Milošević]] and his allies gained greater control of the JNA. Subsequently, the campaign objectives were redefined to deny the [[Croatian Government]] access to parts of Croatia that contained substantial Serb populations and to protect Croatian Serbs. The campaign culminated in late November and early December with the [[Battle of Vukovar]] and the [[Siege of Dubrovnik]]. A limited Croatian counterattack and the development of the HV led to a stalemate on the battlefield. ||| ||| ||| +0 1991–92 UEFA Cup ||| Croatian War of Independence ||| This match was played in [[Klagenfurt]] due to the outbreak of the [[Croatian War of Independence]]. ||| First round ||| ||| +0 20 July plot ||| Battle of Stalingrad ||| By mid-1943 the tide of war was turning decisively against Germany. The army plotters and their civilian allies became convinced that Hitler should be assassinated, so that a government acceptable to the western Allies could be formed, and a separate peace negotiated in time to prevent a Soviet invasion of Germany. In August 1943 Tresckow met, for the first time, a young staff officer named Lieutenant Colonel [[Claus Schenk Graf von Stauffenberg]]. Badly wounded in North Africa, Claus von Stauffenberg was a political conservative, a zealous German nationalist, and a Roman Catholic. From early 1942, he had come to share two basic convictions with many military officers: that Germany was being led to disaster, and that Hitler's removal from power was necessary. After the [[Battle of Stalingrad]] in December 1942, despite his religious scruples, he concluded that the Führer's assassination was a lesser moral evil than Hitler's remaining in power. Stauffenberg brought a new tone of decisiveness to the ranks of the resistance movement. When Tresckow was assigned to the Eastern Front, Stauffenberg took charge of planning and executing the assassination attempt. ||| Planning a coup ||| Von Stauffenberg joins the conspirators ||| +0 20 July plot ||| Operation Bagration ||| By the summer of 1944, the Gestapo was closing in on the conspirators. There was a sense that time was running out, both on the battlefield, where the [[Operation Bagration|Eastern front was in full retreat]] and where the Allies had [[Normandy Landings|landed in France]] on 6 June, and in Germany, where the resistance's room for manoeuvre was rapidly contracting. ||| Planning a coup ||| Now or never, 'whatever the cost' ||| +0 2002 Hebron ambush ||| Yeshivat Otniel shooting ||| On 27 December four yeshiva students, two of them IDF soldiers, were killed in an [[Yeshivat Otniel shooting|attack]] on the settlement of Otniel, south of Hebron. The attack was carried out by the same unit of the Islamic Jihad that carried out the Hebron ambush. ||| Aftermath ||| ||| +0 2003 Nasiriyah bombing ||| Iraq War ||| [[Italy]] took part in the [[Iraq War]], as part of the [[Multi-National Force – Iraq]], from 15 July 2003 until 1 December 2006, in and around Nasiriyah (see [[Operation Ancient Babylon]]). ||| Prelude ||| ||| +0 2004 Grozny stadium bombing ||| 2002 Grozny truck bombing ||| *[[2002 Grozny truck bombing]] ||| See also ||| ||| +0 2004 Teli Katha massacre ||| Insurgency in Jammu and Kashmir ||| A violent [[Insurgency in Jammu and Kashmir|insurgency]] has been going on in [[Jammu and Kashmir]] since 1989. The militants had intermittently massacred villagers who did not support their cause. The state government had supplied arms to the villagers who had formed Village Defence Committees (VDC) so that they could protect themselves from the militants. ||| Background ||| ||| +0 2005 Ahvaz unrest ||| 2011 Khuzestan protests ||| On 15 April 2011, there was a [[2011 Khuzestan protests|protest]] by the Sunni Arab minority in [[Ahvaz]], to mark the sixth anniversary of the 2005 events. In a letter, written to the UN high commissioner for human rights, Iran's [[Nobel Peace Prize]] laureate [[Shirin Ebadi]] stated that 'more than 12 people were killed, around 20 injured and tens of protesters have been arrested.' ||| Aftermath ||| ||| +0 2009 International Islamic University bombing ||| Operation Rah-e-Nijat ||| The attack comes as the [[Pakistan Army|Pakistani Army]] continues [[Operation Rah-e-Nijat|its offensive]] against militants in [[South Waziristan]], in the country's north-west. ||| Background ||| ||| +0 2009 Kabul Indian embassy attack ||| Operation Enduring Freedom ||| The bomb comes following a spike in such attacks in [[Afghanistan]] and amid debate in [[NATO]] countries about sending more [[International Security Assistance Force|ISAF]] troops to fight in '[[Operation Enduring Freedom]]'. ||| Background ||| ||| +0 2010 Baghdad church massacre ||| 2003 invasion of Iraq ||| After the 19 March [[2003 invasion of Iraq]] by a U.S.-led coalition aiming to destroy Iraq's [[Ba'athism|Ba'athist]] government of President [[Saddam Hussein]], those occupying forces on 21 April 2003 installed their [[Coalition Provisional Authority]] (CPA) as provisional government over Iraq. ||| Background ||| Iraq ||| +0 2010–12 Algerian protests ||| Algerian legislative election, 2012 ||| In late February 2012, Algeria's major [[Islamism|Islamist]] parties announced a coalition ahead of [[Algerian legislative election, 2012|parliamentary elections]]. A leader of the [[Movement of Society for Peace]] called for more opposition parties to join the alliance 'to give the best possible chance for the Arab Spring to happen in Algeria as well'. ||| Response of the parties and unions ||| February 2012 ||| +0 2011 Azerbaijani protests ||| 2011 Armenian protests ||| Protesters have used social networking sites such as [[Facebook]] to spread information about rallies, including when and where to meet. However, [[BBC News]] has noted that as many as 80 percent of Azerbaijanis do not use the [[Internet]], which has perhaps contributed to relatively low turnout compared to protests in neighboring [[2011 Armenian protests|Armenia]] ||| Tactics ||| ||| +0 2011 Halloween nor'easter ||| Occupy Wall Street ||| Early on October 29, the [[Pennsylvania Department of Transportation]] activated their fleet of salt trucks. [[Occupy Wall Street]] protesters pledged to remain in [[Lower Manhattan]]'s [[Zucotti Park]] despite the weather, obtaining coats and blankets. ||| Preparations ||| ||| +0 2011 Khuzestan protests ||| 2005 Ahvaz unrest ||| The '''2011 Khuzestan protests''', known among protesters as the '''Ahvaz Day of Rage''', relates to violent protests, which erupted on 15 April 2011 in [[Khuzestan Province|Iranian Khuzestan]], to mark an anniversary of the [[2005 Ahvaz unrest]], and as a response to the regional [[Arab Spring]]. The protests lasted for 4 days and resulted in 12 to 15 protesters killed and many wounded and arrested. 1 security officer was killed as well, and another wounded. ||| ||| ||| +0 2012 Malian coup d'état ||| Tuareg rebellion (2012) ||| The '''2012 Malian coup d'état''' began on 21 March, when mutinying [[Military of Mali|Malian soldiers]], displeased with the management of the [[Tuareg rebellion (2012)|Tuareg rebellion]], attacked several locations in the capital [[Bamako]], including the presidential palace, state television, and military barracks. The soldiers, who said they had formed the National Committee for the Restoration of Democracy and State, On 3 December 2013, a mass grave was discovered in Diago holding the remains of 21 soldiers that went missing the year before, loyal to the ousted president. ||| ||| ||| +0 2013 Lahad Datu standoff ||| Malaysian general election, 2013 ||| Malaysian Prime Minister, [[Najib Razak]], wants to investigate the opposition leader, [[Anwar Ibrahim]], if he was involved in the incident to destabilise the state, which is known to be the ruling party's stronghold for the upcoming [[Malaysian general election, 2013|13th general election]]. This began after Filipino media reported that Mr. Anwar may be involved with the incursion and the evidence of an image showing the opposition leader with [[Nur Misuari]] of [[Moro National Liberation Front (Misuari faction)|MNLF]] began circulating on the internet. The allegations made by Tian Chua was met with an outcry by the Malaysian public; there are various calls from the public and many key political personalities such as [[Ambiga Sreenevasan]] and [[Saifuddin Abdullah]] for both political parties to forge an unprecedented [[Bipartisanship|bi-partisan]] ties to settle the issue. ||| Related incidents ||| Allegations of political motives behind the conflict ||| +0 2014 Odessa clashes ||| 2014 Euromaidan regional state administration occupations ||| Up to 2,000 [[Euromaidan]] protesters [[2014 Euromaidan regional state administration occupations|marched on the regional state administration]] (RSA) building in [[Odessa]] on 26 January, ||| Unrest begins ||| ||| +0 2014 Ukrainian revolution ||| World War II ||| On 28 February 2014, monument dedicated to [[Red Army|Soviet forces]] who fought [[Eastern Front (World War II)|World War II]] and memorial to Soviet soldiers who fought in Afghanistan both erected in Dnepropetrovsk city were vandalized and painted with nationalistic slogans. ||| Aftermath ||| Destruction of monuments ||| +0 2014–15 Russian military intervention in Ukraine ||| Malaysia Airlines Flight 17 ||| [[Malaysia Airlines Flight 17]] was shot down over the conflict zone on 17 July near [[Torez]] in [[Donetsk Oblast]]. Evidence from open sources indicated that separatists in Ukraine were in control of a Russian-supplied Buk missile launcher on 17 July and transported it from [[Donetsk]] to Snizhne. ||| Donbass ||| March–July 2014 ||| +0 2014–15 Russian military intervention in Ukraine ||| Russo-Georgian War ||| [[Andrey Illarionov]], former advisor of [[Vladimir Putin]], said in a speech on 31 May 2014 that some technologies of [[Russo-Georgian War]], were updated and again being exploited in Ukraine. According to him, since Russian military operation in Crimea began on 20 February 2014, Russian propaganda could not argue that the Russian aggression was the result of Euromaidan. The war in Ukraine did not happen 'all of sudden', but was pre-planned and the preparations began as early as 2003. ||| Crimea ||| ||| +0 2015 Mina stampede ||| Saudi Arabian-led intervention in Yemen ||| * [[Saeed al-Shehabi]], a London-based political activist in an interview with Iranian-based television [[Press TV]] said that, 'In Saudi Arabia; it is good the Saudis are good at war, are good at financing terrorism and extremism, they are [[Saudi Arabian-led intervention in Yemen|bombing Yemen days and nights]], yet they cannot manage this annual festival where Muslims are expected to exercise their worship in peace and in harmony and also to discuss their own lively matters that concern Muslims.' ||| Reactions ||| Non-governmental ||| +0 2015 Sousse attacks ||| 2015 Kuwait mosque bombing ||| [[2015 Ramadan attacks|Four other Islamist attacks]] took place on the same day in France, Kuwait, Syria and Somalia. The attacks followed an audio message released three days earlier by [[Islamic State of Iraq and the Levant|ISIL]] senior leader [[Abu Mohammad al-Adnani]] encouraging militants everywhere to attack during the month of [[Ramadan]]. No definitive link between the attacks has yet been established. [[Saint-Quentin-Fallavier attack|One attack, at a French factory]], resulted in the beheading of one person; another [[2015 Kuwait mosque bombing|bombing at a Shia mosque in Kuwait City]] killed at least 27; and the other [[2015 Leego attack|attack on an African Union base]] in Somalia undertaken by [[Al-Shabaab (militant group)|Al-Shabaab]], killed at least 70. Another attack on the day took place in [[Hasakeh]] in Syria. A suicide bomber blew himself up and killed 20 people. ||| Other Islamist attacks ||| ||| +0 64th Oregon Legislative Assembly ||| Gold Beach ||| | 48 || [[Walter G. Schroeder]] || [[Gold Beach, Oregon|Gold Beach]] || [[Curry County, Oregon|Curry]], [[Coos County, Oregon|Coos]] || {{Party shading/Republican}}|Republican ||| House ||| ||| +0 8th Ukrainian Verkhovna Rada ||| 2014 Ukrainian revolution ||| The 8th Verkhovna Rada's composition was based upon the results of the [[Ukrainian parliamentary election, 2014|October 26, 2014 parliamentary election]], which was contested eight months after the [[2014 Ukrainian revolution]] which saw the overthrow of the [[Viktor Yanukovych|Yanukovych regime]]. Ukraine's head of state during the parliament's term is [[President of Ukraine|President]] [[Petro Poroshenko]]. Eleven parties are represented in the Verkhovna Rada, although only six of them surpassed the mandatory 5 percent [[electoral threshold]] to gain representation based upon the [[proportional representation]] system. ||| ||| ||| +0 90th Anniversary of the Estonian Republic ||| October Revolution ||| Estonia as a unified political entity first emerged after the Russian [[February Revolution]] of 1917. With the collapse of the [[Russian Empire]] in [[World War I]], [[Russian Provisional Government, 1917|Russia's Provisional Government]] granted national autonomy to an [[Autonomous Governorate of Estonia|unified Estonia]] in April. The [[Governorate of Estonia]] in the north (corresponding to the historic [[Danish Estonia]]) was united with the northern part of the [[Governorate of Livonia]]. Elections for a provisional parliament, ''[[Maapäev]]'' was organized. On 5 November 1917, two days before the [[October Revolution]] in [[Saint Petersburg]], Estonian [[Bolshevik]] leader [[Jaan Anvelt]] violently usurped power from the legally constituted Maapäev in a coup d'état, forcing the Maapäev underground. ||| Historical background ||| ||| +0 Action of 1 November 1944 ||| Allied invasion of Italy ||| After the [[Armistice of Cassibile|Italian capitulation of 8 September 1943]], following the [[Allied invasion of Italy]], the [[Yugoslav Partisans]] captured most of the eastern [[Adriatic Sea|Adriatic]] coast in the region of [[Dalmatia]]. ||| Background ||| ||| +0 Action of 10 November 1808 ||| Glorious First of June ||| The French efforts to hide the frigate's mission and departure were initially successful: the British ships in the area were unaware of ''Thétis'' ' s intentions before she sailed. They were however prepared for any French movement and were launching regular patrols, in particular two ships under the command of captains [[Sir Michael Seymour, 1st Baronet|Michael Seymour]] and [[Frederick Lewis Maitland (Rear Admiral)|Frederick Lewis Maitland]], [[HMS Amethyst (1799)|HMS ''Amethyst'']] and [[HMS Emerald (1795)|HMS ''Emerald'']] respectively. Both captains were experienced and veteran officers: Seymour had lost an arm at the [[Glorious First of June]] 15 years earlier, and they had agreed to hunt together, communicating regularly and with an understanding that all [[prize money]] won would be shared equally across both crews. After several weeks sailing in tandem, the frigates separated in early November. ||| Background ||| ||| +0 Action of 12 October 1950 ||| World War II ||| On October 10, [[Lieutenant Commander]] [[Bruce Hyatt]] was leading a force of one [[destroyer]], [[USS Endicott (DD-495)|USS ''Endicott'']] and five minesweepers on a minesweeping patrol off Wonsan. The five minesweepers were the [[USS Pirate (AM-275)|USS ''Pirate'']] as [[flagship]], [[USS Incredible (AM-249)|USS ''Incredible'']], [[USS Kite (AMS-22)|USS ''Kite'']], [[USS Redhead (AMS-34)|USS ''Redhead'']] and [[USS Pledge (AM-277)|USS ''Pledge'']], all similarly armed and built during [[World War II]]. On the morning of October 12, the formation was steaming in a channel between the islands of [[Rei-To]] and [[Soku-Semu]] when at 11:12 am, the warships changed course to 258 degrees into unswept waters. The channel is {{convert|2000|yd}} wide and {{convert|14|mi}} long. ||| Action ||| ||| +0 Action of 18 August 1798 ||| Battle of the Nile ||| The '''Action of 18 August 1798''' was a minor naval engagement of the [[French Revolutionary Wars]], fought between the British [[fourth rate]] ship [[HMS Leander (1780)|HMS ''Leander'']] and the French [[ship of the line]] [[French ship Le Généreux|''Généreux'']]. Both ships had been engaged at the [[Battle of the Nile]] three weeks earlier, in which a British fleet under Rear-Admiral [[Sir Horatio Nelson]] had destroyed a French fleet at [[Aboukir Bay]] on the [[Mediterranean]] coast of [[Egypt]]. ''Généreux'' was one of only four French ships to survive the battle, while ''Leander'' had been detached from the British fleet by Nelson on 6 August. On board, Captain [[Edward Berry]] sailed as a passenger, charged with carrying despatches to the squadron under [[John Jervis, 1st Earl of St Vincent|Earl St Vincent]] off [[Cadiz]]. On 18 August, while passing the western shore of [[Crete]], ''Leander'' was intercepted and attacked by ''Généreux'', which had separated from the rest of the French survivors the day before. ||| ||| ||| +0 Action of 19 February 1801 ||| Action of 13 September 1810 ||| Barlow was subsequently [[Knight Bachelor|knighted]] for his success, ''Africaine'' was purchased by the Royal Navy and briefly renamed ''Amelia'' before reverting to ''Africaine''. The ship had a long career in British service during the [[Napoleonic Wars]], participating in numerous actions including the controversial [[Action of 13 September 1810]] during the [[Mauritius campaign of 1809–1811|Mauritius campaign]]. ||| Aftermath ||| ||| +0 Action of 19 February 1801 ||| Battle of the Nile ||| The '''Action of 19 February 1801''' was a minor naval battle fought off [[Ceuta]] in Spanish North Africa in February 1801 between [[frigate]]s of the [[French Navy|French]] and [[Royal Navy|Royal Navies]] during the [[French Revolutionary Wars]]. The engagement formed part of a series of actions fought to prevent the French from resupplying their garrison in [[Egypt]], which had been trapped there without significant reinforcement since the defeat of the French Mediterranean Fleet at the [[Battle of the Nile]] two and a half years earlier. The leader of the Egyptian expedition, General [[Napoleon Bonaparte]], had returned to France in 1799 and promised aid to the troops left behind, prompting several expeditions to the region carrying reinforcements. ||| ||| ||| +0 Action of 24 October 1798 ||| Battle of Tory Island ||| The '''Action of 24 October 1798''' was a minor naval engagement of the [[French Revolutionary Wars]], fought between a British [[Royal Navy]] frigate and two ships of the [[Batavian Republic]]. The Dutch ships were intercepted in the [[North Sea]] within hours of leaving port, {{convert|30|nmi|km}} northwest of the [[Texel]], by the British ship [[HMS Sirius (1797)|HMS ''Sirius'']]. Both Dutch vessels were carrying large quantities of military supplies and [[French Army|French soldiers]], reinforcements for the French and Irish forces participating in the [[Irish Rebellion of 1798]]. Although the rebellion had been defeated a month earlier, word of the British victory had not yet reached the European continent, and the Dutch force was intended to supplement a larger French squadron sent earlier in October. The French had already been defeated at the [[Battle of Tory Island]] and the Dutch suffered a similar outcome, both ships defeated in turn by the larger and better armed British vessel. ||| ||| ||| +0 Action of 28 February 1799 ||| French campaign in Egypt and Syria ||| At the start of 1799 the Bay of Bengal was largely undefended. The British naval commander, Rear-Admiral [[Peter Rainier, junior|Peter Rainier]], had taken most of his ships westwards to the [[Red Sea]] to participate in opposition to [[Napoleon Bonaparte]]'s [[French campaign in Egypt and Syria|campaign in Egypt]], leaving only a single frigate to protect trade shipping in the region. Many of ''Sybille'' ' s crew had fallen ill while the ship had been stationed at Calcutta, leaving her undermanned. ||| Background ||| ||| +0 Action of 3 February 1812 ||| Haitian Revolution ||| Haiti had won its independence from France in 1804, the first Caribbean nation to do so. The Haitians had fought a lengthy and bloody war against the French known as the [[Haitian Revolution]], in which armies of former slaves led by [[Toussaint Louverture]] and then [[Jean-Jacques Dessalines]] succeeded in driving the French into their fortified ports and then systematically eliminating their enclaves. ||| Background ||| ||| +0 Action of 30 June 1798 ||| Glorious First of June ||| In the early years of the [[French Revolutionary Wars]], although the [[French Navy]] had sought to oppose the [[Royal Navy]] at sea from their main base at [[Brest, France|Brest]] in [[Brittany]], the Royal Navy had achieved victories at the [[Glorious First of June]] and [[Battle of Groix]]. The losses inflicted on the French Atlantic fleet in these battles were compounded by large numbers of ships wrecked in storms during the disastrous ''[[Croisière du Grand Hiver]]'' and ''[[Expédition d'Irlande]]'' operations. ||| Background ||| ||| +0 Action of 4 August 1800 ||| Action of 3 July 1810 ||| Bulteel and Meriton were commended. Meriton was to fight two more naval battles against the French, serving at the successful defence of the China Fleet at the [[Battle of Pulo Aura]] in February 1804 ,and eventually being badly wounded and captured by a French frigate squadron after a fierce defence at the [[Action of 3 July 1810]]. ||| Aftermath ||| ||| +0 Action of 5 October 1804 ||| Battle of Trafalgar ||| Spain declared war on Great Britain on 14 December 1804, only to suffer a catastrophic defeat less than a year later at the [[Battle of Trafalgar]] in October 1805. [[Napoleon]], having crowned himself Emperor on 2 December, gained Spain as an ally in his war against Britain. ||| The results ||| ||| +0 Action of 6 December 1782 ||| Battle of the Saintes ||| By the end of 1783 the Spanish and French had been on the defensive since the [[Battle of the Saintes]], which signaled British domination of the seas in the Caribbean. ||| ||| ||| +0 Action of 7 May 1794 ||| French Revolution ||| The outbreak of war between Britain and France in the spring of 1793 came at a time of differing fortunes for the navies of the two countries. The [[Royal Navy]] had been at a state of heightened readiness since 1792 in preparation for the conflict, while the [[French Navy]] had still not recovered from the upheavals of the [[French Revolution]], which had resulted in the collapse of the naval hierarchy and a dearth of experienced officers and seamen. ||| Background ||| ||| +0 Action of Elouges ||| Battle of Mons ||| The '''Action of Elouges''' 24 August 1914, was fought during the [[First World War]]. Following the [[Battle of Mons]] the [[British Expeditionary Force (World War I)|British Expeditionary Force]], was withdrawing, closely followed by the advancing [[German Empire|German Army]]. The British [[5th Division (United Kingdom)|5th Division]] assisted by the [[2nd Cavalry Brigade (United Kingdom)|2nd]] and [[3rd Cavalry Brigade (United Kingdom)|3rd Cavalry Brigade]]. ||| ||| ||| +0 Actions along the Matanikau ||| Guadalcanal Campaign ||| The '''Actions along the Matanikau'''—sometimes referred to as the '''Second and Third Battles of the Matanikau'''—were two separate but related engagements, which took place in the months of September and October 1942, among a series of engagements between the United States and [[Empire of Japan|Imperial Japanese]] naval and ground forces around the [[Matanikau River]] on [[Guadalcanal]] (island in the south-western Pacific, northeast of Australia) during the [[Guadalcanal Campaign]]. These particular engagements—the first taking place between 23 and 27 September, and the second between 6 and 9 October—were two of the largest and most significant of the Matanikau actions. ||| ||| ||| +0 Adlertag ||| Battle of Britain ||| During the [[Battle of Britain]], Hitler gave the German armed forces (''[[Wehrmacht]]'') a directive (Directive No. 16) that ordered provisional preparations for invasion of [[United Kingdom|Britain]]. This operation was codenamed [[Operation Sea Lion]] (''Unternehmen Seelöwe''). Before this could be carried out, [[air superiority]] or [[air supremacy]] was required. The ''Luftwaffe'' was to destroy the RAF in order to prevent it from attacking the invasion fleet or providing protection for the [[Royal Navy]]'s [[Home Fleet]] which might attempt to prevent a landing by sea. On 1 August Hitler gave the ''Luftwaffe''{{'}}s commander-in-chief, ''[[Reichsmarschall]]'' (Empire Marshal) [[Hermann Göring]] and the ''[[Oberkommando der Luftwaffe]]'' (High Command of the Air Force) a (Directive No. 17) to launch the air assault. ||| ||| ||| +0 Air raid on Bari ||| Attack on Pearl Harbor ||| The attack, which lasted a little more than one hour, put the port out of action until February 1944 and was called the 'Little [[Attack on Pearl Harbor|Pearl Harbor]]'. The release of [[mustard gas]] from one of the wrecked cargo ships added to the loss of life. The British and US governments covered up the presence of mustard gas and its effects on victims of the raid. ||| ||| ||| +0 Air raids on Japan ||| Operation Downfall ||| The [[United States Armed Forces|United States military]] air campaign waged against Japan began in earnest in mid-1944 and intensified during the war's last months. While plans for attacks on Japan had been prepared prior to the Pacific War, these could not begin until the long-range [[Boeing B-29 Superfortress|B-29 Superfortress]] bomber was ready for combat. From June 1944 until January 1945, B-29s stationed in India staged through bases in China to make a series of raids on Japan, but this effort proved unsuccessful. The strategic bombing campaign was greatly expanded from November 1944 when bases in the [[Mariana Islands]] became available as a result of the [[Mariana and Palau Islands campaign|Mariana Islands Campaign]]. These attacks initially attempted to target industrial facilities, but from March 1945 were generally directed against urban areas as much of the manufacturing process was carried out in small workshops and private homes. Aircraft flying from Allied [[aircraft carrier]]s and the [[Ryukyu Islands]] also frequently struck targets in Japan during 1945 in preparation for the [[Operation Downfall|planned invasion of Japan]] scheduled for October 1945. During early August 1945, the cities of [[Hiroshima]] and [[Nagasaki]] were [[Atomic bombings of Hiroshima and Nagasaki|struck and mostly destroyed by atomic bombs]]. ||| ||| ||| +0 Allemand's expedition of 1805 ||| Battle of Trafalgar ||| On 25 September, Allemand achieved a major success when his squadron, while waiting for a convoy from the [[Leeward Islands]], encountered a seven ship convoy from the island of [[Saint Helena]]. The convoy's commander, Captain [[Daniel Woodriff]] in the [[fourth rate]] {{HMS|Calcutta|1795|6}}, sought to interpose his ship between the French squadron and his convoy and was captured after a fierce battle. All except one of convoy escaped, and by deliberately drawing the French away from his own convoy's direction, he had saved the Leewards Islands convoy from attack as well. After the battle, Allemand was forced to conduct repairs at [[Tenerife]], sailing again on 17 October, four days before the French Mediterranean Fleet was destroyed at the [[Battle of Trafalgar]]. With the planned invasion impossible, Allemand began commerce raiding in the Eastern Atlantic, capturing 43 merchant ships during his cruise and successfully disrupting the British blockade of Cadiz. This had an unintended but significant effect on the [[Atlantic campaign of 1806]], resulting eventually in the [[Battle of San Domingo]] in February 1806. Allemand returned to Rochefort on 23 December, having not lost a single ship during the expedition. ||| ||| ||| +0 Allied invasion of Italy ||| Battle of Berlin ||| The [[Allied invasion of Sicily]] in July 1943, codenamed [[Allied invasion of Sicily|Operation ''Husky'']], was highly successful, although many of the Axis forces managed to avoid capture and escape to the mainland. To the Axis, this was viewed as a success. More importantly in late July ''[[25 Luglio|a coup]]'' deposed Benito Mussolini as head of the Italian government, which then began approaching the Allies to make peace. It was believed a quick invasion of Italy might hasten an Italian surrender and produce quick military victories over the German troops that could be trapped fighting in a hostile country. However, Italian (and more so German) resistance proved relatively strong, and fighting in Italy continued even after the [[Battle of Berlin|fall of Berlin]]. In addition, the invasion left the Allies in a position of supplying food and supplies to conquered territory, a burden which would otherwise have fallen on Germany. As well, Italy occupied by a hostile German army would have created additional problems for the German Commander-in-Chief, [[Albert Kesselring]]. ||| Background ||| Allied plan ||| +0 Allied naval bombardments of Japan during World War II ||| Bombing of Kure (July 1945) ||| After completing their strikes on Tokyo, TFs 37 and 38 conducted an at-sea replenishment from 21–23 July before attacking [[Bombing of Kure (July 1945)|Kure and the Inland Sea]] from the 24th to the 28th of the month. ||| Bombardments ||| Nojima Saki and Shionomisaki ||| +0 Allied naval bombardments of Japan during World War II ||| Operation Downfall ||| By mid-1945, cities and industrial facilities in the Japanese home islands were [[Air raids on Japan|under sustained attack]] from [[United States Army Air Forces]] [[Boeing B-29 Superfortress|B-29 Superfortress]] [[heavy bombers]] based in the [[Mariana Islands]]. Attacks by [[Allied submarines in the Pacific War|Allied submarines]] and surface ships had also cut most of the country's trade routes, and US Navy aircraft carrier task groups had raided locations in the home islands on several occasions during 1945. Shortages of fuel had confined most of the [[Imperial Japanese Navy]]'s (IJN's) surviving ships to port and forced the [[Imperial Japanese Navy Air Service]] and IJN to hold its air units in reserve against the [[Operation Downfall|Allied invasion]] which was expected to be launched late in the year. ||| Background ||| ||| +0 Ambush of the steamboat J. R. Williams ||| Battle of Cabin Creek ||| After the Confederate losses at the first [[Battle of Cabin Creek]] on 17 July 1863, and the [[Battle of Fort Smith]] the Union forces had essentially uncontested control of the Arkansas River between them. It had become feasible to resupply Union positions (e.g., Fort Gibson) in eastern [[Indian Territory]] by water instead of overland. Previously, the Union could only supply its forces in Indian Territory by wagon train from [[Fort Scott, Kansas]]. The supply trains soon proved to be relatively easy targets for Confederate raiders. ||| Background ||| ||| +0 American Indian Wars ||| Bear River Massacre ||| Gold discoveries continued to trigger violent conflict between prospectores and indigenous peoples. Beginning in 1858, the [[Fraser Canyon Gold Rush]] in British Columbia drew large numbers of miners, many from Washington, Oregon, and California, culminating in the [[Fraser Canyon War]]. Although this conflict occurred in what is now Canada, the militias involved were formed mostly of Americans. Due to the discovery of gold in Idaho and Oregon in the 1860s, similar conflicts arose that culminated in the [[Bear River Massacre]] in 1863 and [[Snake War]] from 1864 to 1868. ||| West of the Mississippi (1811–1924) ||| Pacific Northwest ||| +0 American Theater (World War II) ||| Pacific War ||| The Japanese constructed a plan early in the [[Pacific War]] to attack the [[Panama Canal]], a vital water passage in [[Panama]], used during [[World War II]] primarily for the Allied supply effort. The Japanese attack was never launched due to crippling naval losses at the beginning of conflict with the United States and [[United Kingdom]] (See: [[Aichi M6A]]). ||| Cancelled Axis operations ||| Japan ||| +0 American-led intervention in Iraq (2014–present) ||| American-led intervention in Syria ||| Around 23 September, [[Lloyd Austin]], the general in charge of [[U.S. Central Command]], has been confirmed to be the top officer in charge of the campaign against the ISIL in Iraq [[American-led intervention in Syria|and Syria]]. ||| Chronology ||| September 2014 ||| +0 Angolan Civil War ||| Namibian War of Independence ||| The Angolan Civil War was notable due to the combination of Angola's violent internal dynamics and massive foreign intervention. The war became a Cold War struggle, as both the Soviet Union and the United States, along with their respective allies, provided significant military assistance to parties in the conflict. Moreover, the Angolan conflict became entangled with the [[Second Congo War]] in the neighbouring [[Democratic Republic of the Congo]], as well as with the [[Namibian War of Independence]]. ||| ||| ||| +0 April 2015 Nepal earthquake ||| Operation Maitri ||| |Material aid in [[Operation Maitri]]: ||| International aid ||| ||| +0 April 23, 1998 Albanian–Yugoslav border ambush ||| World War II ||| Following [[World War II]], [[Socialist Autonomous Province of Kosovo|Kosovo]] was given the status of an autonomous province within the [[Socialist Republic of Serbia]], one of six constitutional republics of the [[Socialist Federal Republic of Yugoslavia]]. ||| Background ||| ||| +0 Arab–Byzantine wars ||| Second Fitna ||| The setback at Constantinople was followed by further reverses across the huge Muslim empire. As Gibbon writes, 'this Mahometan Alexander, who sighed for new worlds, was unable to preserve his recent conquests. By the universal defection of the Greeks and Africans he was recalled from the shores of the Atlantic.' His forces were directed at putting down rebellions, and in one such battle he was surrounded by insurgents and killed. Then, the third governor of Africa, Zuheir, was overthrown by a powerful army, sent from Constantinople by [[Constantine IV]] for the relief of [[Carthage]]. Meanwhile, a [[Second Fitna|second Arab civil war]] was raging in [[Arabia]] and Syria resulting in a series of four caliphs between the death of Muawiyah in 680 and the ascension of [[Abd al-Malik ibn Marwan|Abd al-Malik]] in 685, and was ongoing until 692 with the death of the rebel leader. ||| The Muslim conquests, 634–718 ||| Arab attacks on Anatolia and sieges of Constantinople ||| Attacks against Byzantine holdings in Africa, Sicily and the East +0 Arab–Byzantine wars ||| Siege of Jerusalem (637) ||| In April 637, the Arabs, after a long siege captured [[Siege of Jerusalem (637)|Jerusalem]], which was surrendered by [[Orthodox Patriarch of Jerusalem|Patriarch]] [[Sophronius of Jerusalem|Sophronius]].{{cref|c}} In the summer of 637, the Muslims conquered [[Gaza City|Gaza]], and, during the same period, the Byzantine authorities in [[Roman Egypt|Egypt]] and [[Mesopotamia]] purchased an expensive truce, which lasted three years for Egypt and one year for Mesopotamia. [[Battle of Iron bridge|Antioch fell]] to the Muslim armies in late 637, and by then the Muslims occupied the whole of northern Syria, except for upper [[Mesopotamia]], which they granted a one-year truce. ||| The Muslim conquests, 634–718 ||| Arab conquest of Roman Syria: 634&ndash;638 ||| +0 Ardeatine massacre ||| Allied invasion of Sicily ||| In August 1943, Rome was bombed again, and the Badoglio government began secret surrender negotiations with the Allies in [[Allied invasion of Sicily|Sicily]], although still outwardly allied to Germany. In accordance with the Pope's wishes, the Italian government also unilaterally declared Rome an [[Open City]], i.e., a demilitarized zone, a declaration the Allies would refuse to recognize and the Germans to respect. The Germans, anticipating an Italian defection, meanwhile began moving more and more troops into Italy ([[Operation Achse]]). Foreseeing a German invasion, a coalition of Anti-Fascist parties and Monarchists formed the [[Italian Resistance Movement|Committee of National Liberation]] (CLN). On 3 September the Badoglio government signed an unconditional surrender, which U.S. General [[Dwight D. Eisenhower|Eisenhower]] made public on the eve of the [[United States Army North|Fifth Army]]'s amphibious landing at [[Operation Avalanche|Salerno]] (8 September). At the same time, Badoglio issued the [[Badoglio Proclamation]], directing Italian troops to end hostilities against the Allies but to oppose attacks 'from any other quarter'. ||| Historical background ||| ||| +0 Argentine Civil Wars ||| Battle of Caseros ||| Since the fall of Rivadavia and the lack of a proper head of state there was a dynamic whereby leaders (''[[caudillo]]s'') from the hinterland provinces would delegate certain powers, such as foreign debt payment or the management of [[Foreign relations of Argentina|international relations]] to the Buenos Aires leader. In addition, Rosas was granted the [[sum of public power]]. These powers also enabled Rosas to participate in the protracted [[Uruguayan Civil War]] in favor of [[Manuel Oribe]], though unsuccessfully; Oribe, in turn, led numerous military campaigns on behalf of Rosas, and became an invaluable ally in the struggle against Lavalle and other Unitarians. The [[Argentine Confederation]] thus functioned, albeit amid ongoing conflicts, until the 1852 [[Battle of Caseros]], when Rosas was deposed and exiled. ||| Overview ||| Rosas and the Unitarians ||| +0 Armenian Genocide ||| Caucasus Campaign ||| On 2 November 1914, the Ottoman Empire opened the Middle Eastern theater of World War I by entering hostilities on the side of the [[Central Powers]] and against the [[Allies]]. The battles of the [[Caucasus Campaign]], the [[Persian Campaign]] and the [[Gallipoli Campaign]] affected several populous Armenian centers. Before entering the war, the [[Imperial Government (Ottoman Empire)|Ottoman government]] had sent representatives to the [[Armenian congress at Erzurum]] to persuade Ottoman Armenians to facilitate its conquest of [[Transcaucasia]] by inciting an insurrection of Russian Armenians against the Russian army in the event a [[Caucasus Campaign|Caucasus front]] was opened. {{rp |136}} ||| World War I ||| ||| +0 Armenian Genocide ||| Gallipoli Campaign ||| On 2 November 1914, the Ottoman Empire opened the Middle Eastern theater of World War I by entering hostilities on the side of the [[Central Powers]] and against the [[Allies]]. The battles of the [[Caucasus Campaign]], the [[Persian Campaign]] and the [[Gallipoli Campaign]] affected several populous Armenian centers. Before entering the war, the [[Imperial Government (Ottoman Empire)|Ottoman government]] had sent representatives to the [[Armenian congress at Erzurum]] to persuade Ottoman Armenians to facilitate its conquest of [[Transcaucasia]] by inciting an insurrection of Russian Armenians against the Russian army in the event a [[Caucasus Campaign|Caucasus front]] was opened. {{rp |136}} ||| World War I ||| ||| +0 Armenian–Tatar massacres of 1905–07 ||| September Days ||| These killings would be the first of three massacres of Baku Armenians in the 20th century (including the [[September Days]] in 1918 and the [[Baku pogrom]] in 1990) which resulted complete emptying of the city from its Armenian population. ||| In Baku ||| ||| +0 Assault on Cádiz (1797) ||| Battle of Santa Cruz de Tenerife (1797) ||| Nelson had some time before he proposed to the commander-in-chief an [[Battle of Santa Cruz de Tenerife (1797)|expedition against the town of Santa Cruz]], in the island of [[Tenerife]]. Lord Jervis allowed Sir Horatio to select such ships and officers as he thought proper for this service. The expedition resulted in another defeat for him. ||| Aftermath ||| ||| +0 Atlantic campaign of May 1794 ||| Battle of Trafalgar ||| The campaign had notable effects on the navies of both Britain and France. The French did not directly contest British supremacy in Northern European waters again, spending most of the next 23 years in Brest and other ports, their few major sallies mainly directed at the [[Mediterranean]]. Continued upheavals in the French Navy resulted in a decline of quality in its officer corps, so that by the [[Battle of Trafalgar]] 11 years later the port-bound nature of the French fleet had resulted in a cautious and inexperienced tactical outlook. ||| The convoy arrives ||| ||| +0 Attack on Pearl Harbor ||| European theatre of World War II ||| The attack came as a profound shock to the American people and led directly to the American entry into World War II in both the [[Pacific War|Pacific]] and [[European theatre of World War II|European theaters]]. The following day, December 8, the United States [[United States declaration of war upon Japan|declared war]] on Japan. disappeared. Clandestine support of the [[United Kingdom]] (e.g., the [[Neutrality Patrol]]) was replaced by active alliance. Subsequent operations by the U.S. prompted Germany and Italy to [[Axis Powers#Germany's and Italy's declaration of war against the United States|declare war]] on the U.S. on December 11, which was reciprocated by the U.S. the same day. ||| ||| ||| +0 Attack on Sydney Harbour ||| Battle of Savo Island ||| The two main targets of the attack, USS ''Chicago'' and HMAS ''Canberra'', were both lost within the next year: ''Canberra'' sinking on 9 August 1942 during the [[Battle of Savo Island]], and ''Chicago'' on 30 January 1943 following the [[Battle of Rennell Island]]. Lastly, {{USS|Sawfish|SS-276|6}} sank ''I-29'' on 26 July 1944 in the [[Philippines]]. ||| Aftermath ||| ||| +0 Attack on Yokosuka ||| Bombing of Kure (July 1945) ||| Following its attacks on the Tokyo Bay area on 18 July, the Allied fleet sailed away from Japan to be refueled. Its next attacks were made against the main body of the IJN in Kure and the Inland Sea [[Bombing of Kure (July 1945)|on 24, 25 and 28 July]]. ||| Aftermath ||| ||| +0 Attacks on High Wood ||| Battle of Verdun ||| Both sides had many casualties and chronic communication problems; inclement weather grounded aircraft, obscured the view and slowed movement on the roads, which had been severely bombarded and turned to mud as soon as it rained. Trenches and shell holes filled with water, which made infantry movement exceedingly difficult and exhausted trench garrisons. The British and French found it impossible to arrange co-ordinated attacks and fought many small piecemeal actions, rather than general attacks until 15 September. British-French co-operation broke down again and the French did not attack on 15 September, when the British captured the wood during the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September).}} The German defenders had great difficulty finding fresh troops for the Somme front, despite ending the [[Battle of Verdun]] {{nowrap|(21 February – 20 December)}} and had to send divisions to the [[Eastern Front (World War I)|Eastern Front]] and to [[Romania|Rumania]] after it declared war on 27 August. Turnover of German divisions was high and many had to be withdrawn and replaced after fourteen days in the front line. The Germans lacked the resources to make many big organised counter-attacks and those at High Wood and the vicinity were often as costly and ineffective, as corresponding British attacks. ||| ||| ||| +0 Attacks on the Butte de Warlencourt ||| Operation Michael ||| During the [[Battle of Le Transloy]] (1–20 October), part of the [[Battle of the Somme (1916)|Battle of the Somme]], the Butte de Warlencourt was the subject of several attacks by the [[British Fourth Army]], which were costly failures; attacks in November also failed. The [[Australian 2nd Division|2nd Australian Division]] occupied the Butte on 24 February 1917, during the German retirements made on the Somme front, preparatory to [[Alberich (World War I German operation)|Operation Alberich]], the retreat to the [[Hindenburg Line]]. The Butte de Warlencourt was recaptured by the German 2nd Army on 24 March 1918, during the retreat of the [[2nd Infantry Division (United Kingdom)|2nd Division]] in [[Operation Michael]], the German spring offensive. The butte was recaptured for the last time on 26 August, by the [[21st Division (United Kingdom)|21st Division]], during the [[Second Battle of Bapaume]]. In 1990, the site was purchased for preservation by the [[Western Front Association]]. ||| ||| ||| +0 August 2013 Beirut bombing ||| August 2013 Tripoli bombing ||| A month earlier [[July 2013 Beirut bombing|a car bomb]] injured more than 50 people in the same district. A week later two mosques were [[August 2013 Tripoli bombing|bombed]] in [[Tripoli, Lebanon|Tripoli]] killing over 40 and injuring hundreds. The Tripoli bombing were thought to be in retaliation for the Beirut bombing. ||| ||| ||| +0 Avaricum ||| Battle of Gergovia ||| However, Caesar's [[Roman legion|legions]] were in no mood to spare any of the forty thousand Gauls within Avaricum, especially after twenty five days of short rations and great frustration. Only eight hundred managed to escape the [[massacre]] that followed. After feeding and resting his men at Avaricum until the beginning of June, Caesar moved on [[Battle of Gergovia|Gergovia]], determined to draw Vercingetorix into battle in a campaign that would eventually culminate in the [[Battle of Alesia]]. ||| Siege of Avaricum ||| ||| +0 Baltic Sea campaigns (1939–45) ||| Battle of Someri ||| The Soviets had evacuated most of the islands in the Gulf of Finland in late 1941. They recaptured the [[Gogland|Suursaari]] from a small Finnish detachment in January 1942; two months later, a larger Finnish force with strong air cover marched over the ice and drove off the Soviet garrison. Soviet attempts to regain the island resulted in battles which continued over the ice until April 1942. Finnish and German forces also captured lightly defended [[Bolshoy Tyuters|Tytärsaari]]. In July 1942, the Soviets attempted to wrest the small island of [[Battle of Someri|Someri]] from the Finnish. In spite of initial success, the Soviet landing force was crushed, and the supporting naval units were repulsed in what proved to be one of the largest surface actions seen on the Baltic Sea during World War II. ||| Campaigns on the Baltic Sea ||| Operations in 1942 ||| +0 Battle for Brest ||| Battle of the Bulge ||| Decision was made to favor the British forces under Sir [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Law Montgomery]] by reducing the supplies to other forces, including Patton's. The unsuccessful [[Operation Market Garden]] launched by Montgomery soon after, however, did not allow the Allies to resume their rapid advance which was being stalled at [[Antwerp]] in Belgium. The Germans were able to reorganize and even counterattack (the [[Battle of the Bulge]]). By then, however, the region of Antwerp was secured, its port operating and supplying the Allies. ||| Aftermath ||| ||| +0 Battle for Caen ||| Battle of Merville Gun Battery ||| On 6 June 1944, Allied forces invaded France by launching [[Operation Neptune]], the beach landing operation of [[Operation Overlord]]. A force of several thousand ships assaulted the beaches in Normandy, supported by {{Circa|3,000 aircraft.}} The D-Day landings were successful, but the Allied forces were unable to take Caen as planned. The Allies also employed [[Airborne forces|airborne troops]]. The American [[82nd Airborne Division|82nd]] and [[101st Airborne Division]]s, as well as the British [[6th Airborne Division (United Kingdom)|6th Airborne Division]] (with the attached [[1st Canadian Parachute Battalion]]), were inserted behind the enemy lines. The British and Canadian paratroopers behind Sword Beach were tasked in [[Operation Tonga]] with reaching and occupying the strategically important bridges such as Horsa and [[Pegasus Bridge|Pegasus]], as well as to take the artillery battery at [[Battle of Merville Gun Battery|Merville]] in order to hinder the forward progress of the German forces. They managed to establish a bridgehead north of Caen, on the east bank of the Orne, that the Allied troops could use to their advantage in the battle for Caen. The first operation intended to capture Caen was the initial landings on [[Sword Beach]] by the [[3rd Division (United Kingdom)|3rd British Infantry Division]] on 6 June. Despite being able to penetrate the [[Atlantic Wall]] and push south the division was unable to reach the city, their final objectives according to the plan, and in fact fell short by {{convert|3.7|mi|km|abbr=on}}. The [[21st Panzer Division (Wehrmacht)|21st Panzer Division]] launched several counter-attacks during the afternoon which blocked the road to Caen. ||| Background ||| Operation Neptune ||| +0 Battle for Caen ||| Normandy landings ||| The '''Battle for Caen''' from June–August 1944 was a battle of the [[World War II|Second World War]] between [[Allies of World War II|Allied]] forces of the mainly Anglo-Canadian [[Second Army (United Kingdom)|Second Army]] and [[German Army (Wehrmacht)|German]] forces of {{lang|de|''Panzergruppe West''}} during the [[Operation Overlord|Battle of Normandy]]. The Allies aimed to take [[Caen]], one of the largest cities in [[Normandy]] on [[Normandy landings|D-Day]]. Caen was an important Allied objective because it lay astride the [[Orne River]] and [[Canal de Caen à la Mer|Caen Canal]]; these two water obstacles could strengthen a German defensive position if not crossed. Caen was a road hub and the side which held it could shift forces rapidly. The area around Caen was open, compared to the [[bocage]] country in the west of Normandy and was valuable land for airfields. ||| ||| ||| +0 Battle for Caen ||| Operation Cobra ||| On D-Day, 6 June 1944, Caen was an objective for the [[3rd Division (United Kingdom)|3rd British Infantry Division]] and remained the focal point for a series of battles throughout June, July and into August. The battle did not go as planned for the Allies, instead dragging on for two months, because German forces devoted most of their reserves to holding Caen, particularly their armoured divisions. As a result, German forces facing the American invasion thrust further west were spread thin, relying on the rough terrain of the back country to slow down the American advance up to [[Operation Cobra]]. With so many German divisions held up defending Caen, the American forces were eventually able to break through to the south and east, threatening to encircle the German forces in Normandy from behind. The old city of Caen—with many buildings dating back to the [[Middle Ages]]—was destroyed by Allied bombing and the fighting. The reconstruction of Caen lasted until 1962; today, little of the pre-war city remains. ||| ||| ||| +0 Battle for The Hague ||| Battle of the Netherlands ||| The '''Battle for The Hague''' was the first opposed paratroop assault in history. (Unopposed assaults took place on 9 April 1940 against Masnedøfortet and Aalborg airport, Denmark.) It took place on 10 May 1940 as part of the [[Battle of the Netherlands]] between the [[Royal Netherlands Army]] and ''Luftwaffe'' ''[[Fallschirmjäger]]'' (paratroops). German paratroopers dropped in and around [[The Hague]] in order to capture Dutch airfields and the city. After taking the city, the plan was to force the [[The Netherlands|Dutch]] queen [[Wilhelmina of the Netherlands]] to surrender and to thus defeat the Kingdom of the Netherlands within a single day. The operation failed to capture the Queen, and the German forces failed to hold on to the airfields after Dutch counterattacks. The main body of surviving troops under [[Hans Graf von Sponeck|Von Sponeck]] retreated toward the nearby dunes where they were continually pursued and harassed by Dutch troops until the Dutch supreme command, due to major setbacks on other fronts, surrendered five days later. ||| ||| ||| +0 Battle for Velikiye Luki ||| Operation Barbarossa ||| As part of [[Operation Barbarossa]], the German [[LVII Panzer Corps]] took Velikiye Luki on 19 July 1941, but was forced to retreat the next day due to Soviet counter-attacks breaking the line of communications in multiple places. ||| Background ||| ||| +0 Battle in Berlin ||| Reichstag fire ||| At 06:00 on 30 April the [[150th Rifle Division]] had still not captured the upper floors of the Ministry of the Interior, but while the fighting was still going on, the 150th launched an attack from there across the 400 metres of [[Königsplatz, Berlin|Königsplatz]] towards the ''Reichstag''. For the Soviets, the ''Reichstag'' was the symbol of the Third Reich (ironically, it was never restored by the Nazis after the [[Reichstag fire|fire]]); but it was of such significant value that the Soviets wanted to capture it before the [[May Day]] parade in Moscow. The assault was not an easy one. The Germans had dug a complicated network of trenches around the building and a collapsed tunnel had filled with water from the Spree forming a moat across Königsplatz. The initial infantry assault was decimated by cross fire from the ''Reichstag'' and the [[Kroll Opera House]] on the western side of Königsplatz. By now the Spree had been bridged and the Soviets were able to bring up tanks and artillery to support fresh assaults by the infantry, some of which were tasked with out-flanking the Opera House and attacking it from the north-west. By 10:00 the soldiers of the 150th had reached the moat, but accurate fire from [[12.8 cm FlaK 40|12.8 cm guns]], two kilometres away on the [[Berlin Zoo]] [[Zoo flak tower|flak tower]], prevented any further successful advance across the moat during daylight. Throughout the rest of the day, as ninety artillery pieces, some as large as the 203 mm howitzer, as well as ''Katyusha'' rocket launchers, bombarded the ''Reichstag'' and its defensive trenches. Colonel [[A. P. Negoda|Negoda's]] 171st Rifle Division, on the left flank of the 150th, continued to capture the buildings of the diplomatic quarter to the north of Königsplatz.{{sfn|Beevor|2002|pp=354–355}} ||| Battle ||| Centre ||| Battle for the Reichstag +0 Battle in Shakhtarsk Raion ||| Malaysia Airlines Flight 17 ||| The '''battle in [[Shakhtarsk Raion]]''' began on 16 July 2014, when the [[Armed Forces of Ukraine]] began an attempt to cut off insurgent supply lines from Russia. Fighting broke out around the towns of Marynivka, [[Dmytrivka, Donetsk Oblast|Dmytrivka]], [[Stepanivka]], [[Shakhtarsk]], and also the strategic hill of [[Savur-Mohyla]]. It later spread to the cities of [[Snizhne]] and [[Torez]]. Whilst the battle was in progress, a civilian passenger airliner, [[Malaysia Airlines Flight 17]], was shot down near [[Hrabove, Donetsk Oblast|Hrabove]]. Amidst a wide counter-offensive by the insurgents and their [[2014 Russian military intervention in Ukraine|Russian backers]] across Donbass, government troops were forced out of Shakhtarsk Raion on 26 August. ||| ||| ||| +0 Battle of Abu Tellul ||| Sinai and Palestine Campaign ||| The '''Battle of Abu Tellul''' (called the '''Affair of Abu Tellul''' by the British Battles Nomenclature Committee ) was fought on 14 July 1918 during the [[Sinai and Palestine Campaign]] of World War I after [[German Empire|German]] and [[Ottoman Empire|Ottoman]] Empire forces attacked the [[British Empire]] garrison in the [[Jordan Valley (Middle East)|Jordan Valley]]. The valley had been occupied by the [[Egyptian Expeditionary Force]] (EEF) from February 1918 when [[Capture of Jericho|Jericho was captured]]. Following two raids east of the [[River Jordan]] by the EEF [[First Transjordan attack on Amman (1918)|the first in March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|second in April]] the defence of the valley became the responsibility of the [[Desert Mounted Corps]]. ||| ||| ||| +0 Battle of Ad Decimum ||| Battle of Tricamarum ||| After a second defeat at the [[Battle of Tricamarum]] later in the year, the Vandal kingdom was all but ended. ||| Aftermath ||| ||| +0 Battle of Alapan ||| Battle of Manila Bay ||| The '''Battle of Alapan''' was fought on May 28, 1898 and was the first military victory of [[Emilio Aguinaldo]] after his return to the [[Philippines]] from [[Hong Kong]]. After American naval victory of the [[Battle of Manila Bay]], Aguinaldo returned from exile in Hong Kong, reconstituted the [[Philippine Revolutionary Army]], and fought against a small garrison of Spanish troops in Alapan, [[Imus, Cavite]]. The battle lasted for five hours, from 10:00 A.M. to 3:00 P.M. ||| ||| ||| +0 Battle of Albuera ||| Battle of Barrosa ||| From October 1810 [[André Masséna|Marshal Masséna]]'s Army of Portugal had been tied down in an increasingly hopeless stand-off against [[Arthur Wellesley, 1st Duke of Wellington|Wellington]]'s Allied forces, safely entrenched in and behind the [[Lines of Torres Vedras]]. Acting on [[Napoleon I of France|Napoleon]]'s orders, in early 1811 [[Jean de Dieu Soult|Marshal Soult]] led a French expedition from [[Andalusia]] into [[Extremadura]] in a bid to draw Allied forces away from the Lines and ease Masséna's plight. Napoleon's information was outdated and Soult's intervention came too late; starving and understrength, Masséna's army was already withdrawing to Spain. Soult was able to capture the strategically important fortress at Badajoz on the border between Spain and Portugal from the Spanish, but was forced to return to Andalusia following [[Claude Victor-Perrin, duc de Belluno|Marshal Victor]]'s defeat in March at the [[Battle of Barrosa]]. However, Soult left Badajoz strongly garrisoned. In April, following news of Masséna's complete withdrawal from Portugal, Wellington sent a powerful [[Anglo-Portuguese Army|Anglo-Portuguese corps]] commanded by [[William Carr Beresford, 1st Viscount Beresford|Sir William Beresford]] to retake the border town. The Allies drove most of the French from the surrounding area and began the [[Second Siege of Badajoz (1811)|Siege of Badajoz]]. ||| ||| ||| +0 Battle of Albuera ||| Battle of the Gebora ||| Following a successful [[military campaign|campaign]] in Extremadura, on 27 January 1811 Soult began his [[Investment (military)|investment]] of Badajoz. Almost immediately the Spanish Army of Extremadura arrived in the vicinity with some 15,000 troops under the command of General [[Gabriel Mendizabal|Mendizabal]]. Soult's army, too small to surround Badajoz, was unable to prevent 3,000 of Mendizabal's men reinforcing the fortress and the remainder occupying the heights of San Cristóbal. This posed a major threat to the French, so Soult moved at once to engage. In the ensuing [[Battle of the Gebora]] the French inflicted 1,000 casualties on the Spanish field army and took 4,000 prisoners, at a cost to themselves of only 400 casualties. The remnants of Mendizabal's defeated army fled towards Badajoz or into Portugal. ||| Background ||| ||| +0 Battle of Aldenhoven (1794) ||| Battle of Sprimont ||| After the [[Battle of Fleurus (1794)|Battle of Fleurus]] on 26 June 1794, the army of Austria began pulling back to the east while their British and Dutch allies withdrew to the north to defend Holland. There was a lull as the French armies paused to capture a number of fortresses held by the Coalition. Then, as [[Jean-Charles Pichegru]]'s ''[[Army of the North (France)|Army of the North]]'' prepared to overrun the [[Dutch Republic]], Jourdan's ''[[Army of Sambre-et-Meuse]]'' turned northeast to drive the Austrians back to the Rhine, first winning the [[Battle of Sprimont]] in September. On 2 October, Jourdan launched attacks at Düren on the right, Aldenhoven and [[Jülich]] on the right center, [[Linnich]] on the left center and Ratheim on the left. After its victory, the ''Army of Sambre-et-Meuse'' captured [[Cologne]] and [[Bonn]] on the Rhine. ||| ||| ||| +0 Battle of Aleppo (1918) ||| Sinai and Palestine Campaign ||| The '''Battle of Aleppo''' was fought on 25 October 1918, when [[Feisal I of Iraq|Prince Feisal]]'s Sheifial Forces captured the city during the [[Pursuit to Haritan]] from Damascus, in the last days of the [[Sinai and Palestine Campaign]] in the First World War. ||| ||| ||| +0 Battle of Alesia ||| Battle of Actium ||| Caesar's cavalry commanders followed different paths. Labienus sided with the [[Optimates]], the conservative aristocratic faction in the civil war, and was killed at the [[Battle of Munda]] in 45 BC. [[Trebonius]], one of Caesar's most trusted lieutenants, was appointed consul by Caesar in 45 BC, and was one of the senators involved in Caesar's assassination on the [[Ides of March]] (March 15), 44 BC. He was himself murdered a year later. Antony continued to be a faithful supporter of Caesar. He was made Caesar's second in command, as [[Master of the Horse]], and was left in charge in Italy during much of the civil war. In 44 BC he was elected as Caesar's consular colleague. After Caesar's murder, Antony pursued Caesar's assassins and vied for supreme power with [[Augustus|Octavian]] (later to become [[Caesar Augustus]]), first forming an alliance with Octavian and [[Marcus Aemilius Lepidus (triumvir)|Marcus Aemilius Lepidus]] in the [[Second Triumvirate]], then being defeated by him at the [[Battle of Actium]] in 31 BC. Along with his ally and lover, queen [[Cleopatra VII of Egypt|Cleopatra]], he fled to [[Egypt]], where they committed suicide the following year. ||| Aftermath ||| ||| +0 Battle of Alexandria ||| Siege of Alexandria ||| The British advanced upon Alexandria and [[Siege of Alexandria|laid siege to it]]. The French garrison surrendered on 2 September 1801. ||| Aftermath ||| ||| +0 Battle of Algiers (1956–57) ||| Suez Crisis ||| The 5,000 man strong 10e DP had just returned from the [[Suez Crisis|Suez campaign]]. An elite unit it was officered by many veterans of the Indochina War, including Colonels [[Marcel Bigeard]], [[Roger Trinquier]], [[Albert Fossey Francis|Fossey-François]] and [[Yves Godard]] (chief of staff), all of whom were experienced in counter-insurgency and revolutionary warfare and determined to avoid another defeat. ||| First Phase ||| The Army takes over ||| +0 Battle of Amiens (1918) ||| Battle of the Somme ||| The tactical methods had been tested by the Australians in a local counter-attack at the [[Battle of Hamel]] on 4 July. The German defenders of Hamel were deeply dug in, and their position commanded a very wide field of fire. Similar positions had resisted capture for two months in the [[Battle of the Somme]]. The Australians had used surprise rather than weight at Hamel. The artillery had opened fire only at the moment the infantry and tanks advanced, and the Germans were rapidly overrun. ||| Prelude ||| Plan ||| +0 Battle of Amiens (1918) ||| Hundred Days Offensive ||| The '''Battle of Amiens''', also known as the '''Third Battle of Picardy''' ({{lang-fr|3ème Bataille de Picardie}}), which began on 8 August 1918, was the opening phase of the [[Allies of World War I|Allied]] offensive later known as the [[Hundred Days Offensive]] that ultimately led to the end of the [[First World War]]. Allied forces advanced over {{convert|11|km|0}} on the first day, one of the greatest advances of the war, with [[Henry Rawlinson, 1st Baron Rawlinson|Henry Rawlinson]]'s [[British Fourth Army]] playing the decisive role. The battle is also notable for its effects on both sides' morale and the large number of [[surrender (military)|surrendering]] [[German Empire|German]] forces. This led [[Erich Ludendorff]] to describe the first day of the battle as 'the black day of the German Army'. Amiens was one of the first major battles involving [[armoured warfare]] and marked the end of [[trench warfare]] on the [[Western Front (WWI)|Western Front]]; fighting becoming mobile once again until [[Armistice with Germany (Compiègne)|the armistice]] was signed on 11 November 1918. ||| ||| ||| +0 Battle of Amiens (1918) ||| Russian Revolution ||| On 21 March 1918, the [[German Empire]] had launched [[Operation Michael|Operation ''Michael'']], the first in a [[Spring Offensive|series of attacks]] planned to drive the [[Allies of World War I|Allies]] back along the length of the [[Western Front of World War I|Western Front]]. With the signing of the [[Treaty of Brest-Litovsk]] with [[Russian Revolution|revolutionary-controlled Russia]], the Germans were able to transfer hundreds of thousands of men to the Western Front, giving them a significant, if temporary, advantage in manpower and material. These offensives were intended to translate this advantage into victory. Operation ''Michael'' was intended to defeat the right wing of the [[British Expeditionary Force (World War I)|British Expeditionary Force]], but a lack of success before [[Arras, France|Arras]] ensured the ultimate failure of the offensive. A final effort was aimed at the town of [[Amiens]], a vital railway junction, but the advance had been halted at [[First Battle of Villers-Bretonneux|Villers-Bretonneux]] by British and Australian troops on 4 April. ||| Prelude ||| ||| +0 Battle of Amphipolis ||| Battle of Delium ||| In the winter of 424–423, around the same time as the [[Battle of Delium]], the Spartan general [[Brasidas]] besieged Amphipolis, an Athenian colony in [[Thrace]] on the [[Struma (river)|Strymon]] river. ||| Capture of Amphipolis, 424–423 BC ||| ||| +0 Battle of Amstetten ||| Battle of Ulm ||| The Battle of Amstetten took place during the [[War of the Third Coalition]], which lasted from 1803 to 1806. This battle took place immediately after the Austrian surrender in the [[Ulm Campaign]]. Following the surrender of [[Karl Mack von Leiberich]] in the [[Battle of Ulm]], the Russian forces led by [[Kutuzov]] decided to retreat along the Danube to regroup with other Russian troops. [[Napoleon]] was determined to pin down the Russian army and sent Joachim Murat and Jean Lannes to intercept the retreating Russian army. ||| Background ||| ||| +0 Battle of Angamos ||| Battle of Iquique ||| After the [[Battle of Iquique|naval battle of Iquique]] of 21 May, the Peruvian fleet lost the armored frigate ''[[Peruvian ironclad Independencia|Independencia]]'' to a wooden schooner, [[Covadonga (ship)|''Covadonga'']]. This obliged Rear Admiral Miguel Grau to renounce to attack and to adopt a harassing strategy, avoiding by all means a direct encounter with the bulk of the Chilean navy. ||| Background ||| ||| +0 Battle of Appomattox Station ||| Siege of Petersburg ||| Following the withdrawal of [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] Army of Northern Virginia from their defenses at [[Siege of Petersburg|Petersburg, Virginia]] after the [[Battle of Five Forks]], [[Third Battle of Petersburg]] and [[Battle of Sutherland's Station]], the Union Army closely pursued the Confederates westward on parallel and trailing routes. The Confederates, short of rations and supplies, suffered numerous losses from desertion, straggling and battle, especially the [[Battle of Sailor's Creek]] on April 6, 1865. After the [[Battle of Cumberland Church]] on April 7, Lee's army made a third consecutive night march in an effort to stay ahead of the Union forces. Union cavalry under the command of Major General [[Philip H. Sheridan]] made a long ride of about {{convert|30|mi|km}} on April 8, 1865 in order to capture Confederate supply trains at Appomattox Station and get ahead of the Confederates, cutting off their routes of retreat. ||| ||| ||| +0 Battle of Arklow ||| Battle of Bunclody ||| While rebel casualties were estimated at about 1,000 no full casualty list seems to exist on the British side, but were probably in the region of 100 dead and wounded. The defeat at Arklow marked the third failure to extend the fight for Irish independence beyond the borders of County Wexford following the other bloody repulses at [[Battle of New Ross 1798|New Ross]] and [[Battle of Bunclody|Bunclody]]. The Irish strategy now changed to a policy of static defence against the encroaching British armies. ||| Aftermath ||| ||| +0 Battle of Arnhem ||| 6th Airborne Division advance to the River Seine ||| With the [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] still refitting after [[Operation Tonga]], and the subsequent [[6th Airborne Division advance to the River Seine|fighting in Normandy]], the task of securing the Rhine Bridgehead fell to the 1st Airborne Division under the command of [[Major-general (United Kingdom)|Major-General]] [[Roy Urquhart]]. The division was made up of three brigades of infantry (two [[Paratrooper|parachute]], one [[Glider infantry|glider borne]]), supporting [[1st Airlanding Light Regiment|artillery]] and anti-tank batteries and substantial [[Royal Engineers|Royal Engineer]] units, as well as supporting elements such as [[Royal Army Service Corps]] and [[Royal Army Medical Corps]] units. However, this was the first time the division had fought together as a complete formation. ||| Background ||| British plan ||| +0 Battle of Avesnes-le-Sec ||| Battle of Fleurus (1794) ||| The Prince of Liechtenstein also participated in many other battles. Soon after being promoted to [[major general|General-Major]] in June 1794, he fought at the [[Battle of Fleurus (1794)|Battle of Fleurus]]. He commanded a mixed cavalry-infantry brigade in Anton Sztaray's division at the [[Battle of Würzburg]] on 3 September 1796. After this action he was awarded the Commander's Cross of the Order of [[Maria Theresa]]. ||| Aftermath ||| ||| +0 Battle of Baguio (1945) ||| Battle of Luzon ||| The '''Battle of Baguio''' occurred between 21 February and 26 April 1945, and was part of the greater [[Battle of Luzon|Luzon campaign]] during the [[Philippines Campaign (1944–45)|Allied liberation of the Philippines]] at the end of [[World War II]]. ||| ||| ||| +0 Battle of Baiji (2014–15) ||| First Battle of Tikrit ||| *[[First Battle of Tikrit]] ||| See also ||| ||| +0 Battle of Baiji (October–December 2014) ||| First Battle of Tikrit ||| *[[First Battle of Tikrit]] ||| See also ||| ||| +0 Battle of Bakenlaagte ||| Battle of Magersfontein ||| Great bravery was demonstrated by the men on both sides with combined casualties numbering approximately 87 killed with 182 wounded. Colonel Benson (a veteran of the [[Battle of Magersfontein]], 11 December 1899) was to die the next morning from wounds received on the field of battle. ||| Battle ||| ||| +0 Battle of Ball's Bluff ||| First Battle of Bull Run ||| Three months after the [[First Battle of Bull Run]], Maj-Gen. George B. McClellan was building up the Army of the Potomac in preparation for an eventual advance into Virginia. ||| Background ||| ||| +0 Battle of Ballinamuck ||| Battle of Castlebar ||| The victory of [[Jean Joseph Amable Humbert|General Humbert]] at the [[Battle of Castlebar]], despite gaining him around 5,000 extra Irish recruits, had not led to a renewed outbreak of the rebellion in other areas as hoped; the defeat of the earlier revolt had devastated the Irish republican movement to the extent that few were willing to renew the struggle. A massive British army of some 26,000 men was assembled under the new [[Viceroy]] [[Charles Cornwallis, 1st Marquess Cornwallis|Lord Cornwallis]] and was steadily moving west. Abandoning Castlebar, [[Jean Joseph Amable Humbert|Humbert]] moved towards [[Ulster]] with the apparent intention of igniting a rising there but after defeating a blocking force of British troops at [[Collooney]] in [[County Sligo|Sligo]] he altered course following reports that rebellions had broken out in [[Westmeath]] and [[Longford]]. ||| Background ||| ||| +0 Battle of Ballon ||| Battle of Fontenoy ||| Following the death of [[Louis the Pious]], Nominoë initially supported Charles the Bald in the dispute between him and his brothers over control of Frankish territory. However, when Count Ricuin of [[Nantes]] was killed at the [[Battle of Fontenay (841)|Battle of Fontenoy]], Charles refused to accept [[Lambert II of Nantes|Lambert II]] as his successor, since Lambert's father, [[Lambert I of Nantes|Lambert I]], had fought against Charles. Charles replaced him with his supporter [[Renaud d'Herbauges|Renaud, Count of Herbauge]]. While Nominoë was ill, Renaud attacked Breton territory, but was killed in battle by the Bretons led by [[Erispoe]], Nominoë's son, in alliance with Lambert. This allowed Lambert to occupy Nantes with the support of Nominoë. Recovered from his illness, Nominoë hoped to take advantage of the disorder to expand into Frankish territory. ||| Background ||| ||| +0 Battle of Bardia ||| Dunkirk evacuation ||| Italy's position in the centre of the Mediterranean made it unacceptably hazardous to send ships from Britain to Egypt via that route, so British reinforcements and supplies for the area had to travel around the [[Cape of Good Hope]]. For this reason, it was more convenient to reinforce [[General (United Kingdom)|General]] [[Archibald Wavell, 1st Earl Wavell|Sir Archibald Wavell]]'s [[Middle East Command]] with troops from Australia, New Zealand and [[British Raj|India]]. Nonetheless, even when Britain was [[Operation Sealion|threatened with invasion]] after the [[Battle of France]] and equipment was urgently required to re-equip the [[British Expeditionary Force (World War II)|British Expeditionary Force]] after its losses in the [[Dunkirk evacuation]], troops and supplies were still despatched to the Middle East Command. A convoy that departed the United Kingdom in August 1940 brought guns, stores, ammunition, and three [[Armoured regiment (United Kingdom)|armoured regiments]], including the [[7th Royal Tank Regiment]], equipped with [[Matilda II (tank)|Matilda II tanks]]. ||| Background ||| Italian invasion of Egypt ||| +0 Battle of Bataan ||| Attack on Pearl Harbor ||| The '''Battle of Bataan''', fought 7 January – 9 April 1942, represented the most intense phase of [[Empire of Japan|Imperial Japan's]] [[Battle of the Philippines (1941–42)|invasion of the Philippines]] during [[World War II]]. In January 1942, forces of the [[Imperial Japanese Army]] and [[Imperial Japanese Navy|Navy]] invaded [[Luzon]] along with several islands in the Philippine Archipelago after the [[Attack on Pearl Harbor|bombing of the American naval base at Pearl Harbor]]. The commander-in-chief of all Filipino and American forces in the islands, General [[Douglas MacArthur]], consolidated all of his Luzon-based units on the [[Bataan]] Peninsula to fight against the Japanese invaders. By this time, the Japanese controlled nearly all of Southeast Asia. The [[Bataan]] peninsula and the island of [[Corregidor]] were the only remaining Allied strongholds in the region. Despite a lack of supplies, Filipino (many were U.S. Nationals) and American forces managed to fight the Japanese for three months, engaging them initially in a fighting retreat southward. As the combined Filipino and American forces made a last stand, the delay cost the Japanese valuable time and prohibited immediate victory across the Pacific. The surrender at Bataan was the largest in [[Military history of the United States|American]] and [[Military history of the Philippines|Filipino military histories]], and was the largest United States surrender since the [[American Civil War]]'s [[Battle of Harpers Ferry|Battle of Harper's Ferry]]. ||| ||| ||| +0 Battle of Bayonne ||| Battle of Toulouse (1814) ||| Hope's 19,550-man force included [[Kenneth Howard, 1st Earl of Effingham|Kenneth Howard]]'s [[1st Infantry Division (United Kingdom)|1st]] (6,800) and [[Andrew Hay (British Army officer)|Andrew Hay's]] [[5th Infantry Division (United Kingdom)|5th]] (2,750) British Divisions, [[Matthew Whitworth-Aylmer, 5th Baron Aylmer|Lord Aylmer]]'s Independent British Brigade (1,900), Thomas Bradford (1,600) and Archibald Campbell's (2,500) Portuguese Brigades, and [[Carlos de España]]'s Spanish Division (4,000). Hope's corps was joined by 10,000 Spanish troops in the divisions of Marcilla, Espeleta and [[Pablo Morillo]], but these soldiers were sent away to join Wellington's army in time to fight at the [[Battle of Toulouse (1814)|Battle of Toulouse]] on 10 April. ||| Background ||| ||| +0 Battle of Bazentin Ridge ||| First day on the Somme ||| The '''Battle of Bazentin Ridge''' {{nowrap|(14–17 July 1916),}} was part of the [[Battle of the Somme (1916)|Battle of the Somme]] {{nowrap|(1 July – 18 November)}} on the [[Western Front (World War I)|Western Front]] in France, during the [[World War I|First World War]]. The British [[Fourth Army (United Kingdom)|Fourth Army]] (General [[Henry Rawlinson, 1st Baron Rawlinson|Henry Rawlinson]]) attacked at dawn on 14 July, against the German [[2nd Army (German Empire)|2nd Army]] (General [[Fritz von Below]]) and was the start of the second phase of the battle. Dismissed beforehand by a [[France|French]] commander as 'an attack organized for [[amateur]]s by amateurs', it turned out to be 'hugely successful' for the British, in contrast to the disaster of the [[First day on the Somme]] on 1 July. The British were unable to exploit the success and the 2nd Army recovered, leading to another period of [[battle of attrition|attrition]], before the general attacks of September. ||| ||| ||| +0 Battle of Beaufort ||| Capture of Savannah ||| The '''Battle of Beaufort''', also known as the '''Battle of Port Royal Island''', was fought on February 3, 1779, near [[Beaufort, South Carolina]], during the [[American Revolutionary War]]. The inconsequential battle took place not long after [[Kingdom of Great Britain|British]] forces consolidated control around [[Savannah, Georgia]], which [[Capture of Savannah|they had captured]] in December 1778. ||| ||| ||| +0 Battle of Beaugency (1429) ||| Battle of Patay ||| :5. The [[Battle of Patay]]. ||| Background ||| ||| +0 Battle of Beaver Dams ||| Battle of Queenston Heights ||| Several American officers had earlier billeted themselves in the house of Militia Captain [[James Secord]], who had been severely wounded the previous year at the [[Battle of Queenston Heights]]. His wife, [[Laura Secord]], overheard the American officers discussing their scheme. Very early on 22 June, through the woods until she came upon a Native encampment on the Twelve Mile Creek. The warriors took her to Lieutenant [[James FitzGibbon]], who commanded the British outpost. The information she conveyed to FitzGibbon confirmed what Natives had reported since they first observed the American column near St. David's. ||| American plan ||| ||| +0 Battle of Beecher Island ||| Battle of Gettysburg ||| Forsyth hand-picked 48 men at Forts [[Fort Harker (Kansas)|Harker]] and [[Fort Hays|Hays]] and armed them with [[Spencer repeating rifle]]s. Forsyth's executive officer was Lieutenant Fredrick H. Beecher of the [[3rd Infantry Regiment (United States)|3rd Infantry]], a decorated veteran of the [[Battle of Gettysburg]]. His company rode northwest nearly to Nebraska, then turned southwest and reached [[Fort Wallace]] the night of 5 September without finding any trace of Indians. ||| Background ||| Unit formation ||| +0 Battle of Belgium ||| Eastern Front (World War II) ||| The Battle of Belgium included the first tank battle of the war, the [[Battle of Hannut]].{{sfn|Healy|2008|p=36}} It was the largest tank battle in history up to that date but was later surpassed by the battles of the [[North African campaign]] and the [[Eastern Front (World War II)|Eastern Front]]. The battle also included the [[Battle of Fort Eben-Emael]], the first strategic airborne operation using [[paratrooper]]s ever attempted. ||| ||| ||| +0 Battle of Benavente ||| Battle of Corunna ||| The '''Battle of Benavente''' (29 December 1808) was a cavalry clash in which the British cavalry of [[Henry Paget, 1st Marquess of Anglesey|Lord Paget]] defeated the elite ''[[Chasseurs à cheval]]'' of the French [[Imperial Guard (Napoleon I)|Imperial Guard]] during the [[Battle of Corunna|Corunna Campaign]] of the [[Peninsular War]]. The French chasseurs were broken and forced into the [[Esla river|River Esla]]; their commanding officer, General [[Charles, comte Lefebvre-Desnouettes|Lefebvre-Desnouettes]], was captured. The action was the first major incident in the British army's harrowing retreat to the coast and ultimate evacuation by sea. ||| ||| ||| +0 Battle of Białołęka ||| Battle of Olszynka Grochowska ||| By February 24, the Russian Army had reached the outskirts of Warsaw in two columns: one from the North under the command of General Shakhovskiy, and one from the East under the command of General Grigoriy Vladimirovich Rosen. Field Marshal von Diebitsch initially planned a full frontal assault on Warsaw to take place on February 26. The successful Polish counter-attack at Białołęka, however, prompted von Diebitsch to change his plans and attack earlier. On February 25, General Rosen received orders to attack, resulting in the [[Battle of Olszynka Grochowska]]. His forces were joined later that day by the remnants of Shakhovskiy's defeated column. ||| Aftermath ||| ||| +0 Battle of Białołęka ||| Battle of Stoczek ||| The Russo-Polish War officially began in early February 1831, a 115,000-strong Russian army crossed Polish borders, led by [[Field Marshal]] [[Hans Karl von Diebitsch]]. The [[Battle of Stoczek|first major battle]] took place on February 14, 1831 near the village of [[Stoczek Łukowski|Stoczek]] near [[Łuków]], where [[Polish cavalry]] under the command of [[Brigadier]] [[Józef Dwernicki]] defeated the Russian division of [[Teodor Geismar]]. The victory had psychological rather than militaristic significance, as it did little to slow the Russian advance towards Warsaw. Subsequent inconclusive victories at [[Dobre, Masovian Voivodeship|Dobre]] on February 17 and [[First Battle of Wawer|Wawer]] on February 19 and 20 bolstered Polish spirits, but were inconclusive. ||| Historical context ||| ||| +0 Battle of Białystok–Minsk ||| Operation Barbarossa ||| The '''Battle of Białystok–Minsk''' was a German strategic operation conducted by the [[Army Group Centre]] during the penetration of the Soviet border region in the opening stage of [[Operation Barbarossa]] lasting from 22 June to 3 July 1941. Its goal, the encirclement and destruction of the [[Red Army]]'s [[Western Front (Soviet Union)|Western Front]] forces around [[Minsk]], was accomplished. All major Soviet counter-attacks and break-through attempts failed and the defenders were defeated, allowing for the [[Wehrmacht]] to take many Soviet prisoners and to further advance into the Soviet Union at a pace so swift that some believed the Germans had effectively won the war against the Soviet Union already. ||| ||| ||| +0 Battle of Biberach (1800) ||| War of the Second Coalition ||| The '''Battle of Biberach''' on 9 May 1800 saw a [[French First Republic]] corps under [[Laurent Gouvion Saint-Cyr]] engage part of a [[Habsburg Monarchy|Habsburg Austrian]] army led by [[Pál Kray]]. After an engagement in which the Austrians suffered twice as many casualties as the French, Kray withdrew to the east. The combat occurred during the [[War of the Second Coalition]], part of the [[French Revolutionary Wars]]. [[Biberach an der Riss]] is located {{convert|35|km|mi|0}} southwest of [[Ulm]]. ||| ||| ||| +0 Battle of Booneville ||| Battle of Shiloh ||| The '''Battle of Booneville''' was fought on July 1, 1862, in [[Booneville, Mississippi]], during the [[American Civil War]]. It occurred in the aftermath of the [[Union Army|Union]] victory at the [[Battle of Shiloh]] and within the context of [[Confederate States Army|Confederate]] General [[Braxton Bragg]]'s efforts to recapture the rail junction at [[Siege of Corinth|Corinth, Mississippi]], {{convert|20|mi|km}} north of Booneville. ||| ||| ||| +0 Battle of Borneo (1941–42) ||| Second Sino-Japanese War ||| The [[Tripartite Pact]]—between the three Axis Powers of Germany, Japan and Italy—guaranteed mutual support, and this paid off for Japan in July 1941 when [[Vichy France|French]] weakness in the wake of [[Battle of France|the fall of France]] to Germany allowed Japan to [[Japanese invasion of French Indochina|occupy]] [[French Indo-China]] (now modern [[Vietnam]], [[Laos]] and [[Cambodia]]). This gave Japan land access to the Chinese mainland where it had long been engaged in military intervention and, since 1937, had been fighting a [[Second Sino-Japanese War|full-on war of invasion]] against the temporarily allied forces of the [[Kuomintang]] and the [[Communist Party of China]]. It also gave Imperial Japan a seaboard facing Sarawak and North Borneo across the China Sea. Japan turned its eyes from the war in China and towards strategic targets in the Pacific and the Dutch East Indies. In December that year, Japan struck out against U.S. possessions in Hawaii and the Philippines, declaring war on the U.S. and finally precipitating Germany's official declaration of war on America according to the Pact. ||| Background to the conflict ||| ||| +0 Battle of Brentford (1642) ||| Battle of Edgehill ||| After the [[Battle of Edgehill]] (23 October) King [[Charles I of England|Charles I]] captured [[Banbury]] (27 October) and was greeted by cheering crowds as he arrived in [[Oxford]] on 29 October. [[Prince Rupert]] swept down the [[Thames Valley]], capturing [[Abingdon, Oxfordshire|Abingdon]], [[Aylesbury]] and [[Maidenhead]], from where he attempted to capture [[Windsor, Berkshire|Windsor]] though failed due to [[Roundhead|Parliamentary]] strength there. After this many officers wanted to open peace negotiations, contrary to Rupert's desire to carry on to [[London]], but the king agreed with the officers and so the Earl of [[Robert Devereux, 3rd Earl of Essex|Essex]] managed to overtake them and reach London with his Parliamentary army by 8 November. ||| Background ||| ||| +0 Battle of Brier Creek ||| Siege of Charleston ||| [[William Moultrie]], in his memoirs of the war, wrote that the loss at Brier Creek extended the war by a year and made possible the British [[Siege of Charleston|invasion of South Carolina]] in 1780. ||| Aftermath ||| ||| +0 Battle of Britain ||| Adlertag ||| Hitler's 'Directive No. 17 – For the conduct of air and sea warfare against England' issued on 1 August attempted to keep all the options open. The Luftwaffe's ''[[Adlertag]]'' campaign was to start around 5 August, subject to weather, with the aim of gaining air superiority over southern England as a necessary precondition of invasion, to give credibility to the threat and give Hitler the option of ordering the invasion. The intention was to incapacitate the RAF so much that the UK would feel open to air attack, and would begin peace negotiations. It was also to isolate the UK and damage war production, beginning an effective blockade. ||| Background ||| German aims and directives ||| +0 Battle of Britain ||| Battle of Britain ||| The story of the battle was documented in, amongst many others, the 1969 film ''[[Battle of Britain (film)|Battle of Britain]]'', which drew many respected British actors to act key figures of the battle, including Sir [[Laurence Olivier]] as [[Hugh Dowding]] and [[Trevor Howard]] as [[Keith Park]]. Former participants of the battle served as technical advisors including [[Douglas Bader]], [[James Lacey]], [[Robert Stanford Tuck]], [[Adolf Galland]] and Dowding himself. An Italian film around the same time titled ''[[Eagles Over London]]'' (1969) also featured the Battle of Britain. ||| Film ||| ||| +0 Battle of Britain Day ||| Adlertag ||| The Battle of Britain began on 10 July 1940, when the first ''Luftwaffe'' bomber fleets began attacking convoys and [[Royal Navy]] forces in [[England|English]] ports and [[English Channel|Channel]]. The results were positive and the Germans succeeded in forcing the British to abandon the channel convoy route and to redirect shipping to ports in north-eastern Britain. With this achieved the ''Luftwaffe'' began the second phase of its air offensive, attacking RAF airfields and supporting structures on the British mainland. The codename of the offensive was ''Unternehmen Adlerangriff'' ('Operation Eagle Attack'). On 12 August, it flew its first missions in this regard. On 13 August, the ''Luftwaffe'' carried out its largest attack to date on the mainland. Christened ''[[Adlertag (Eagle Day)|Adlertag]]'' ('Eagle Day'), the attack was a failure. ||| Background ||| ||| +0 Battle of Britain Day ||| Operation Overlord ||| The end result of the air campaign against Britain in 1940 and 1941 was a decisive failure to end the war. As Hitler committed Germany to ever increasing military adventures, the ''[[Wehrmacht]]'' became increasingly overstretched and was unable to cope with a multi-front war. By 1944, the Allies were ready to launch [[Operation Overlord]], the invasion of [[Western Europe]]. The Battle of Britain ensured that the Western Allies had a base from which to launch the campaign and that there would be a Western Allied presence on the battlefield to meet the [[Soviet Union|Soviet]] [[Red Army]] in central Europe at the end of the war in May 1945. ||| Aftermath ||| Hitler's reaction and Strategic overview ||| +0 Battle of Britain Day ||| The Blitz ||| [[RAF Fighter Command]] defeated the German raids. The ''Luftwaffe'' formations were dispersed by a large cloud base and failed to inflict severe damage on the city of London. In the aftermath of the raid, Hitler postponed Operation Sea Lion. Having been defeated in daylight, the ''Luftwaffe'' turned its attention to [[The Blitz]] night campaign which lasted until May 1941. ||| ||| ||| +0 Battle of Brześć Litewski ||| Operation Barbarossa ||| The [[Brest Fortress]] was handed over to the Soviets in accordance with the Molotov-Ribbentrop Pact. {{rp|83}} It was [[Defense of Brest Fortress|besieged and captured again]] by the Wehrmacht in the beginning of [[Operation Barbarossa]] in 1941. ||| Aftermath ||| ||| +0 Battle of Buda (1849) ||| Battle of Buda (1686) ||| Buda Castle was hardly modern during the [[Battle of Buda (1686)|Battle of Buda of 1686]], and it was antiquated in 1849. It had no fortifications against direct attacks, its water defences were outdated and it was easy to fire at the castle from the nearby hills. However, the determined defenders made the attack difficult. ||| Castle ||| ||| +0 Battle of Buna–Gona ||| Kokoda Track campaign ||| The '''Battle of Buna–Gona''' was part of the [[New Guinea campaign]] in the [[Pacific war|Pacific Theatre]] during [[World War II]]. It followed the conclusion of the [[Kokoda Track campaign]] and lasted from 16 November 1942 until 22 January 1943. The battle was conducted by [[Australian Defence Force|Australian]] and [[United States armed forces|United States forces]] against the [[Empire of Japan|Japanese]] [[beachhead]]s at [[Buna, Papua New Guinea|Buna]], [[Sanananda]] and [[Gona]]. From these, the Japanese had launched an overland attack on [[Port Moresby]]. In light of developments in the [[Solomon Islands campaign]], Japanese forces approaching Port Moresby were ordered to withdraw to and secure these bases on the northern coast. Australian forces maintained contact as the Japanese conducted a well-ordered [[rearguard]] action. The [[Allies of World War II|Allied]] objective was to eject the Japanese forces from these positions and deny them their further use. The Japanese forces were skilful, well prepared and resolute in their defence. They had developed a strong network of well-concealed defences. ||| ||| ||| +0 Battle of Bussaco ||| Siege of Ciudad Rodrigo (1810) ||| In 1810, [[Napoleon I of France|Emperor Napoleon I]] ordered Masséna to drive the British from Portugal. Accordingly, the French marshal began the [[Siege of Ciudad Rodrigo (1810)|Siege of Ciudad Rodrigo]] in April. The Spanish garrison held out until 9 July when the fortress fell. The [[Battle of the Côa]] was fought soon after. The [[Siege of Almeida (1810)|Siege of Almeida]] ended suddenly with a massive explosion of the fortress magazine on 26 August. With all obstacles cleared from their path, the French could march on [[Lisbon]] in strength. ||| Background ||| Operations ||| +0 Battle of Calliano ||| Battle of Rivoli ||| Davidovich finally attacked on 17 November, with GM [[Joseph Ocskay von Ocsko]] moving from Monte Baldo and GM [[Josef Philipp Vukassovich]] advancing from the Adige River gorge. The Austrians gained the Rivoli plateau and steadily forced the outnumbered French back. Again, the brittle morale of the 85th Line snapped and the result was another rout of Vaubois' division. This field would be fought over again during the [[Battle of Rivoli]] in January 1797. ||| Aftermath ||| Rivoli: 17 November ||| +0 Battle of Cambrai (1917) ||| Hindenburg Line ||| The '''Battle of Cambrai''' (designated ''Battle of Cambrai, 1917'' by the Battlefield Nomenclature Committee; also sometimes referred to as the ''First Battle of Cambrai'') was a British offensive and German counter-offensive battle in the [[World War I|First World War]]. [[Cambrai]], in the [[Nord (département)|''Nord département'']] (''Nord-Pas-de-Calais''), was a key supply point for the [[German Empire|German]] ''Siegfried Stellung'' (part of the [[Hindenburg Line]]) and capture of the town and the nearby Bourlon Ridge would threaten the rear of the German line to the north. [[Major General]] [[Henry Hugh Tudor|Hugh Tudor]], Commander Royal Artillery ([[Commander, Royal Artillery|CRA]]) of the [[9th (Scottish) Division]], suggested trying out new artillery-infantry techniques on his sector of the front. During preparations, [[J. F. C. Fuller]], a staff officer with the [[Royal Tank Corps|Tank Corps]], was in the process of looking for a place to use tanks as raiding parties. [[General]] [[Julian Byng]], commander of the British [[Third Army (United Kingdom)|Third Army]], decided to incorporate them into the attack. ||| ||| ||| +0 Battle of Cantigny ||| American Revolutionary War ||| In the center of Cantigny, a small monument was dedicated in 2005 by the [[McCormick Foundation]] to commemorate the participation of Major [[Robert R. McCormick]] in the historic [[5th Field Artillery Regiment (United States)#1st Battalion, 5th Field Artillery|1st Battalion, 5th Field Artillery]], the oldest American military unit on continuous active duty (dating back to the [[American Revolutionary War]]), then part of the First Division. ||| Monuments ||| McCormick ||| +0 Battle of Canton (May 1841) ||| Boxer Rebellion ||| Although the 'Second Battle of Canton' had a minor effect on the course of the First Opium War, it had a major effect on the general Chinese populace. What happened at Sanyuanli is recorded as the first time that civilians took matters into their own hands to resist foreign invasion and show their lack of faith in the Qing government. This battle demonstrated that the country's rulers were powerless to stop the British invasion but that a group of civilians could succeed in driving back the British. These stories and rumors led Chinese civilians to believe that local armies and militias would be the only successful way to drive out the British and nurtured a general climate of dissatisfaction, which helped pave the way for the [[Taiping Rebellion|massive rebellions]] and [[Boxer Rebellion|anti-foreigner movements]] that came to plague the Qing authorities later on. ||| Aftermath ||| ||| +0 Battle of Canyon de Chelly ||| American Civil War ||| By the time of the [[American Civil War]] the [[Navajo people|Navajo]] was the largest nation in the [[Southwestern United States|Southwest]] and one of the largest remaining Native American nations within the United States. [[Colonel]] [[Kit Carson|Christopher H. 'Kit' Carson]] had been waging a successful campaign against the Navajos employing a [[scorched earth]] policy, destroying homes, food and supplies. It was Carson's policy to treat the Navajo people as humanely as possible, capturing instead of killing them. However, by November 1863 Carson had only sent 200 people on to the reservation at [[Fort Sumner|Bosque Redondo]]. [[Brigadier General]] [[James H. Carleton]] ordered Carson into the Navajo stronghold in [[Canyon de Chelly National Monument|Canyon de Chelly]]. The canyon had been explored once before in 1858 by Colonel [[Dixon S. Miles]]. Miles had recommended no command should re-enter it. ||| Background ||| ||| +0 Battle of Cape St. Vincent (1780) ||| Great Siege of Gibraltar ||| Admiral Rodney was escorting a fleet of supply ships to [[Great Siege of Gibraltar|relieve the Spanish siege of Gibraltar]] with a fleet of about twenty [[ships of the line]] when he encountered Lángara's squadron south of [[Cape St. Vincent]]. When Lángara saw the size of the British fleet, he attempted to make for the safety of [[Cádiz]], but the copper-sheathed British ships chased his fleet down. In a running battle that lasted from mid-afternoon until after midnight, the British captured four Spanish ships, including Lángara's flagship. Two other ships were also captured, but their final disposition is unclear; some Spanish sources indicate they were retaken by their Spanish crews, while Rodney's report indicates the ships were grounded and destroyed. ||| ||| ||| +0 Battle of Carpi (1815) ||| Battle of Occhiobello ||| After Murat was defeated at the [[Battle of Occhiobello]], the Neapolitan advance was stopped on the banks of the [[Po River]]. From here, the Austrians launched a counterattack against the Neapolitan position in northern Italy. A corps under the command of Bianchi was ordered to march of the Neapolitan position around [[Modena]] and drive the Neapolitans out of the duchy. Half of Bianchi's corps marched on the town of Carpi, whilst the other half were sent to cut off the Neaplotian line of retreat. ||| Battle ||| ||| +0 Battle of Cartagena (1758) ||| Siege of Louisbourg (1758) ||| The interception of the French fleet ensured that only limited assistance would come to the French fortress of [[Louisbourg]] in [[North America]], which was [[Siege of Louisbourg (1758)|besieged by British forces]] and fell later that year. ||| ||| ||| +0 Battle of Castiglione ||| Battle of Bautzen ||| Historian [[David G. Chandler]] writes, The form of the battle proves beyond any doubt that Napoleon's master battle plan was already clear in his mind as early as 1796. In subsequent years he might polish and improve its technique—especially the crucial matter of timing the successive stages—but all the elements of the successful attacks carried out at [[Battle of Austerlitz|Austerlitz]], [[Battle of Friedland|Friedland]] or [[Battle of Bautzen|Bautzen]] were already in existence and in operation at the battle of Castiglione. ||| Commentary ||| ||| +0 Battle of Castiglione ||| Battle of Rivoli ||| '''The Battle of Castiglione''' saw the [[Army of Italy (France)|French Army of Italy]] under General [[Napoleon Bonaparte]] attack an army of [[Habsburg Austria]] led by ''[[Feldmarschall]]'' [[Dagobert Sigmund von Wurmser]] on 5 August 1796. The outnumbered Austrians were defeated and driven back along a line of hills to the river crossing at Borghetto, where they retired beyond the [[Mincio]] River. The town of [[Castiglione delle Stiviere]] is located {{convert|10|km|mi|0}} south of [[Lake Garda]] in northern Italy. This battle was one of four famous victories won by Bonaparte during the [[War of the First Coalition]], part of the [[Wars of the French Revolution]]. The others were [[Battle of Bassano|Bassano]], [[Battle of Arcole|Arcole]], and [[Battle of Rivoli|Rivoli]]. ||| ||| ||| +0 Battle of Cedar Creek ||| Battle of Gettysburg ||| Fortunately for Sheridan, Early's men were too occupied to take notice of the Union general's dramatic arrival; they were hungry and exhausted and fell out of their ranks to pillage supplies from the Union camps. By 10 a.m., Jubal Early had developed a stunning Confederate victory, capturing 1,300 Union prisoners, 24 cannons, and driving seven infantry divisions off the field with a smaller force. But rather than exploiting his victory, Early ordered a halt in his offensive to reorganize, a decision for which he later received criticism from his surviving subordinates. John B. Gordon wrote years later, 'My heart went into my boots. Visions of the fatal halt on the first day at [[Battle of Gettysburg|Gettysburg]], and of the whole day's hesitation to permit an assault on Grant's exposed flank on the 6th of May in [[Battle of the Wilderness|The Wilderness]] rose before me.' Early wrote to Robert E. Lee, 'So many of our men had stopped in the camp to plunder (in which I am sorry to say that officers participated), the country was so open, and the enemy's cavalry so strong, that I did not deem it prudent to press further, especially as Lomax had not come up.' The two armies stood about a mile apart in lines perpendicular to the Valley Pike. At 1 p.m. Early gave a halfhearted order to Gordon to attack the Union line, but 'not if he found the enemy's line too strong to attack with success.' Gordon's division moved forward against the XIX Corps, with Kershaw and Ramseur ready to support them, but after firing a heavy volley into the Union line, they withdrew. ||| Battle ||| The 'fatal halt' ||| +0 Battle of Cedar Creek ||| Battle of the Wilderness ||| Fortunately for Sheridan, Early's men were too occupied to take notice of the Union general's dramatic arrival; they were hungry and exhausted and fell out of their ranks to pillage supplies from the Union camps. By 10 a.m., Jubal Early had developed a stunning Confederate victory, capturing 1,300 Union prisoners, 24 cannons, and driving seven infantry divisions off the field with a smaller force. But rather than exploiting his victory, Early ordered a halt in his offensive to reorganize, a decision for which he later received criticism from his surviving subordinates. John B. Gordon wrote years later, 'My heart went into my boots. Visions of the fatal halt on the first day at [[Battle of Gettysburg|Gettysburg]], and of the whole day's hesitation to permit an assault on Grant's exposed flank on the 6th of May in [[Battle of the Wilderness|The Wilderness]] rose before me.' Early wrote to Robert E. Lee, 'So many of our men had stopped in the camp to plunder (in which I am sorry to say that officers participated), the country was so open, and the enemy's cavalry so strong, that I did not deem it prudent to press further, especially as Lomax had not come up.' The two armies stood about a mile apart in lines perpendicular to the Valley Pike. At 1 p.m. Early gave a halfhearted order to Gordon to attack the Union line, but 'not if he found the enemy's line too strong to attack with success.' Gordon's division moved forward against the XIX Corps, with Kershaw and Ramseur ready to support them, but after firing a heavy volley into the Union line, they withdrew. ||| Battle ||| The 'fatal halt' ||| +0 Battle of Chancellorsville ||| Battle of Salem Church ||| The fiercest fighting of the battle—and the second bloodiest day of the Civil War—occurred on May 3 as Lee launched multiple attacks against the Union position at Chancellorsville, resulting in heavy losses on both sides. That same day, Sedgwick advanced across the Rappahannock River, defeated the small Confederate force at Marye's Heights in the [[Second Battle of Fredericksburg]], and then moved to the west. The Confederates fought a successful delaying action at the [[Battle of Salem Church]] and by May 4 had driven back Sedgwick's men to Banks's Ford, surrounding them on three sides. Sedgwick withdrew across the ford early on May 5, and Hooker withdrew the remainder of his army across U.S. Ford the night of May 5–6. The campaign ended on May 7 when Stoneman's cavalry reached Union lines east of Richmond. ||| ||| ||| +0 Battle of Chancellorsville ||| Battle of Spotsylvania Court House ||| The battlefield was a scene of widespread destruction, covered with dead men and animals. The Chancellor family, whose house was destroyed during the battle, placed the entire 854-acre property for sale four months after the battle. A smaller version of the house was rebuilt using some of the original materials, which served as a landmark for many of the veteran reunions of the late 19th century. In 1927, the rebuilt house was destroyed by fire. That same year, the [[United States Congress]] authorized the [[Fredericksburg and Spotsylvania National Military Park]], which preserves some of the land that saw fighting in the 1862 [[Battle of Fredericksburg]], the Chancellorsville Campaign, the [[Battle of the Wilderness]], and the [[Battle of Spotsylvania Court House]] (the latter two being key battles in the 1864 [[Overland Campaign]]). ||| Aftermath ||| Battlefield preservation ||| +0 Battle of Chancellorsville ||| First Battle of Bull Run ||| In the [[Eastern Theater of the American Civil War]], the basic offensive plan for the [[Union (American Civil War)|Union]] had been to advance and seize the [[Confederate States of America|Confederate]] capital, [[Richmond, Virginia]]. In the first two years of the war, four major attempts had failed: the first foundered just miles away from [[Washington, D.C.]], at the [[First Battle of Bull Run]] (First Manassas) in July 1861. Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] took an amphibious approach, landing his [[Army of the Potomac]] on the [[Virginia Peninsula]] in the spring of 1862 and coming within {{convert|6|mi|km}} of Richmond before being turned back by Gen. [[Robert E. Lee]] in the [[Seven Days Battles]]. That summer, Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] was defeated at the [[Second Battle of Bull Run]]. In December 1862, Maj. Gen. [[Ambrose Burnside]] commanded the Army of the Potomac and attempted to reach Richmond by way of [[Fredericksburg, Virginia]], where he was defeated at the [[Battle of Fredericksburg]]. This string of Union defeats was interrupted in September 1862 when Lee moved into Maryland and his campaign was turned back by McClellan at the [[Battle of Antietam]], but this represented no threat to Richmond. ||| Background ||| Union attempts against Richmond ||| +0 Battle of Changsha (1942) ||| Battle of Hong Kong ||| The offensive was originally intended to prevent Chinese forces from reinforcing the [[Commonwealth of Nations|British Commonwealth]] forces [[Battle of Hong Kong|engaged in Hong Kong]]. With the capture of Hong Kong on 25 December, however, it was decided to continue the offensive against [[Changsha]] in order to maximize the blow against the [[Kuomintang|Chinese government]]. ||| ||| ||| +0 Battle of Changsha (1944) ||| Battle of Saipan ||| Two Japanese military detachments moved on to besiege Hengyang, but the NRA's understrength Tenth Corps under the command of [[Fang Xianjue]] repelled their advance twice. The predicament in Hengyang helped hasten the crumbling of [[Hideki Tojo]]'s cabinet. In conjunction with [[Battle of Saipan|the loss of Saipan]] on 9 July 1944, Tojo and his cabinet handed in their resignation on 18 July 1944. ||| Battle of Hengyang ||| ||| +0 Battle of Cherbourg ||| Utah Beach ||| In the early hours of June 6, [[paratrooper]]s the US [[82nd Airborne Division|82nd]] and [[101st Airborne Division]]s landed at the base of the Cotentin Peninsula. Although the [[American airborne landings in Normandy|landings were scattered]], they nevertheless secured most of the routes by which the [[VII Corps (United States)|US VII Corps]] would advance from [[Utah Beach]]. The [[4th Infantry Division (United States)|US 4th Infantry Division]] landed on Utah Beach shortly after dawn with few casualties. ||| Landings ||| ||| +0 Battle of Cheriton ||| Battle of Cropredy Bridge ||| The defeat of Forth's and Hopton's army meant that the Parliamentarian armies of Essex and Waller could concentrate against the King at Oxford. Although Charles was able to partly restore the situation later in 1644 by gaining victories at [[Battle of Cropredy Bridge|Cropredy Bridge]] and [[Battle of Lostwithiel|Lostwithiel]], the Royalists could never again resume the offensive in the south of England. ||| Results ||| ||| +0 Battle of Chillianwala ||| Siege of Multan ||| The East India Company responded by announcing their intention to depose the young Maharajah, [[Duleep Singh]], annexe the Punjab and confiscate the lands of any landholders who joined the revolt. While an army under Major General Whish resumed the [[Siege of Multan]], the company ordered the formation of an Army of the Punjab under the veteran Commander in Chief, Sir [[Hugh Gough, 1st Viscount Gough|Hugh Gough]]. However, both Gough and the Governor General, the 37-year-old [[James Broun-Ramsay, 1st Marquess of Dalhousie|Lord Dalhousie]], delayed operations until after the end of the [[monsoon]] season, allowing Sher Singh to gather reinforcements and establish strong positions. ||| Prelude ||| ||| +0 Battle of Chosin Reservoir ||| World War II ||| The '''Battle of Chosin Reservoir''', also known as the '''Chosin Reservoir Campaign''' or the '''Changjin Lake Campaign''' ({{lang-ko|장진호 전투(長津湖戰鬪)}}; {{zh|s=长津湖战役|p=Cháng Jīn Hú Zhànyì}}),{{efn|name=name|Official Chinese sources refer to this battle as the Second Phase Campaign Eastern Sector (第二次战役东线). The Western Sector is the [[Battle of the Ch'ongch'on River]].}} was a decisive battle in the [[Korean War]]. 'Chosin' is the Japanese pronunciation of the Korean name, '[[Changjin]]'. The UN forces relied on Japanese language maps dating from their occupation of Korea which had only ended five years earlier at the conclusion of [[World War II]]. Shortly after the [[People's Republic of China]] entered the conflict, the [[People's Volunteer Army]] 9th Army{{efn|name=nomenclature|In Chinese military nomenclature, the term 'Army' (军) means [[Corps]], while the term 'Army Group' (集团军) means [[Field Army|Army]].}} infiltrated the northeastern part of [[North Korea]]. ||| ||| ||| +0 Battle of Château-Thierry (1918) ||| Eastern Front (World War I) ||| Despite the [[Russian Revolution|revolution in Russia]], fortune seemed to favor the Allies with the arrival of the Americans to France. However, these troops needed time to train before they could be combat effective. Recognizing the window of opportunity, Ludendorff consolidated the manpower freed up from the [[Eastern Front (World War I)|Eastern Front]] to conduct [[Spring Offensive|Operation ''Michael'']] in order to split the Allies' lines. The successes of the German [[Stormtrooper]]s [[infiltration tactics]] earned Germany approximately 40 miles of territory. But the offensive lost momentum when it surpassed its supply lines. ||| Background ||| ||| +0 Battle of Cold Harbor ||| Battle of Chickamauga ||| While action continued on the southern end of the battlefield, the three corps of Hancock, Burnside, and Warren were occupying a 5-mile line that stretched southeast to Bethesda Church, facing the Confederates under A.P. Hill, Breckinridge, and Early. At the border between the IX and V Corps, the division of Maj. Gen. [[Thomas L. Crittenden]], recently transferred from the [[Western Theater of the American Civil War|West]] following his poor performance in the [[Battle of Chickamauga]], occupied a doglegged position with an angle that was parallel to the Shady Grove Road, separated from the V Corps by a marsh known as Magnolia Swamp. Two divisions of Early's Corps&mdash;Maj. Gen. [[Robert E. Rodes]] on the left, Maj. Gen. [[John B. Gordon]] on the right&mdash;used this area as their avenue of approach for an attack that began at 7 p.m. Warren later described this attack as a 'feeler', and despite some initial successes, aided by the poor battle management of Crittenden, both Confederate probes were repulsed. ||| Battle ||| June 1 ||| +0 Battle of Cold Harbor ||| United States presidential election, 1864 ||| The battle caused a rise in anti-war sentiment in the Northern states. Grant became known as the 'fumbling butcher' for his poor decisions. It also lowered the [[morale]] of his remaining troops. But the campaign had served Grant's purpose&mdash;as ill-advised as his attack on Cold Harbor was, Lee had lost the initiative and was forced to devote his attention to the defense of Richmond and Petersburg. He beat Grant to Petersburg, barely, but spent the remainder of the war (save its final week) defending Richmond behind a fortified trench line. Although Southerners realized their situation was desperate, they hoped that Lee's stubborn (and bloody) resistance would have political repercussions by causing [[Abraham Lincoln]] to lose the [[United States presidential election, 1864|1864 presidential election]] to a more peace-friendly candidate. The [[Atlanta Campaign|taking of Atlanta]] in September dashed these hopes, and the end of the Confederacy was just a matter of time. ||| Aftermath ||| ||| +0 Battle of Columbus (1865) ||| Battle of Nashville ||| After the [[Union Army|Union]] victory in the [[Battle of Nashville]] (December 15–16, 1864), Union General [[George H. Thomas]] ordered General [[James H. Wilson]] to march into the heart of the [[Deep South]] and bring the [[Confederate States of America|Confederacy]] to its knees by destroying their supply centers at [[Selma, Alabama]], and [[Columbus, Georgia]]. ||| Events leading to the battle ||| ||| +0 Battle of Cook's Mills ||| Siege of Fort Erie ||| General [[Gordon Drummond]] had lifted the [[Siege of Fort Erie]] on 21 September 1814, and withdrew to a strong defensive position at Fort Chippawa on the north bank of [[Welland River|Chippawa Creek]]. An American division under Major General [[George Izard]] had marched overland from [[Plattsburgh, New York]] to reinforce the Americans at [[Fort Erie]] (commanded by Major General [[Jacob Brown]]). Being the senior Major General, Izard took command of the combined force. The more aggressive Brown wished to attack Drummond immediately, with the combined force numbering 6,300. Izard chose not to risk the casualties of attacking a strong defensive position. Angered at Izard's lack of action, Brown left with his division (half the army's strength) and marched to [[Sacketts Harbor, New York]], where a British attack was feared ||| Background ||| ||| +0 Battle of Corregidor ||| New Guinea campaign ||| Corregidor's defeat marked the fall of the Philippines and Asia, but Imperial Japan's timetable for the conquest of Australia and the rest of the Pacific was severely upset. Its advance was ultimately checked at the battle for [[New Guinea campaign|New Guinea]], and at [[Battle of Guadalcanal|Guadalcanal]], the turning point in the [[Pacific War]]. ||| Aftermath ||| ||| +0 Battle of Corrick's Ford ||| Battle of Rich Mountain ||| The '''Battle of Corrick's Ford''' took place on July 13, 1861, on the [[Cheat River]] in western Virginia (now the state of [[West Virginia]]) as part of the Operations in Western Virginia Campaign during the [[American Civil War]]. By later standards the battle was a minor skirmish. Often considered a final part of the [[Battle of Rich Mountain]], it was the end of a series of battles between the forces of [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]] and [[Confederate States Army|Confederate]] [[Brigadier General (CSA)|Brig. Gen.]] [[Robert S. Garnett]]. ||| ||| ||| +0 Battle of Cropredy Bridge ||| Battle of Cheriton ||| In the early part of 1644, the Royalists suffered several setbacks. Two field armies were defeated at [[Battle of Nantwich|Nantwich]] and [[Battle of Cheriton|Cheriton]], and a [[Scotland|Scottish]] [[Covenanter]] army invaded the north of England, driving the Royalists there into [[York]], where they were [[Siege of York|besieged]]. ||| Background ||| ||| +0 Battle of Crucifix Hill ||| Battle of Aachen ||| The '''Battle of Crucifix Hill''' was a [[World War II]] battle that took place on 8 October 1944, on Crucifix Hill (Haarberg) ([[Hill 239]]), next to the village of [[Haaren (Aachen)|Haaren]] in Germany and was a part of the U.S. 1st Division's campaign to seize [[Aachen|Aachen, Germany]]. The [[Battle of Aachen]] was part of the [[Drive to the Siegfried Line]]. The hill was named after a large [[crucifix]] mounted on the top of the hill. The objective of the battle was to gain control of the hill, which was laced with a maze of [[Bunker#Pillbox|pillboxes]] and [[bunker]]s, so that the main objective of encircling Aachen could be completed. The hill was held by units of the [[Nazi Germany|German]] [[246th Volksgrenadier Division (Germany)|246. ''Volksgrenadierdivision'']]. ||| ||| ||| +0 Battle of Crucifix Hill ||| Operation Overlord ||| Capt. [[Bobbie E. Brown]] was the company commander of C Company, a former boxer who had earned a battlefield commission in [[Operation Overlord|Normandy]]. During the onslaught of the nearby pillbox, Capt. Brown grabbed a [[pole charge]] and ran {{convert|100|yd|m|abbr=on}} with bullets whipping by him, and placed the charge in the pillbox, destroying it. He did this twice more to two other pillboxes, each time successfully destroying the pillbox; only on the third one was he wounded by a [[Mortar (weapon)|mortar]] round. Although he was wounded, he refused medical attention and continued up the hill. After the hill was secure, he went by himself on a [[reconnaissance]] mission to locate enemy troops beyond the hill. He deliberately drew the enemy fire to find out where enemy emplacements were. While doing this, he was wounded twice more. The information he discovered about German emplacements allowed his company to repel two German counterattacks. Only after the position was completely secure did he allow treatment for his wounds. For his actions during the Battle of Crucifix Hill, Capt. Brown received the [[Medal of Honor]]. ||| Captain Bobbie Brown ||| ||| +0 Battle of Czarny Ostrów ||| Deluge (history) ||| The '''Battle of Czarny Ostrów''' took place on July 20, 1657, during the period in [[Poland|Polish]] history known as the [[Deluge (history)|Deluge]]. Polish Crown army commanded by [[Hetman]]s [[Stefan Czarniecki]], [[Jerzy Sebastian Lubomirski|Jerzy Lubomirski]] and [[Stanisław 'Rewera' Potocki|Stanisław Potocki]], supported by [[Crimean Tatars|Crimean Tatar]]s, defeated a Transilvanian-Cossack-Moldavian-Wallachian army of [[George II Rakoczi]]. ||| ||| ||| +0 Battle of Dak To ||| Battle of Khe Sanh ||| Several members of Westmoreland's staff began to see an eerie resemblance to the [[Viet Minh]] campaign of 1953, when seemingly peripheral actions had led up to the climactic [[Battle of Dien Bien Phu]]. General Giap even laid claim to such a strategy in an announcement in September, but, to the Americans, it all seemed a bit too contrived. Yet, no understandable analysis seemed to explain Hanoi's almost suicidal military actions. They could only be explained if a situation akin to Dien Bien Phu came into being. Then, almost overnight, one emerged. In the western corner of Quang Tri Province, an isolated Marine outpost at [[Battle of Khe Sanh|Khe Sanh]] came under siege by PAVN forces that would eventually number three divisions. ||| Aftermath ||| ||| +0 Battle of Debaltseve ||| 2014 Ukrainian revolution ||| Debaltseve came under pro-Russian separatist control in April 2014, amidst [[2014 pro-Russian unrest in Ukraine|widespread unrest across eastern and southern Ukraine]] in the aftermath of the [[2014 Ukrainian revolution]]. Ukrainian forces managed to recapture the city on 28 July 2014, and continued to hold on to it firmly until January 2015. ||| Background ||| ||| +0 Battle of Debrecen ||| Operation Bagration ||| In mid August 1944, ''Generaloberst'' ([[Colonel General]]) [[Johannes Friessner|Johannes Friessner's]] Army Group South Ukraine was on the brink of collapse. To the north, the Red Army's [[Operation Bagration]] was completing the destruction of [[Army Group Centre]]. ||| Crisis in Hungary ||| ||| +0 Battle of Delium ||| Battle of Leuctra ||| In addition to showing an innovative use of a new technology, Pagondas made use of planned tactical warfare for one of the first times in recorded history. In the previous centuries, battles between Greek city states were relatively simple encounters between massed formations of hoplites, where cavalry played no important role and all depended on the unity and force of the massed ranks of the infantry, straining against the opponent. At Delium, Pagondas made use of deeper ranks, reserves, cavalry interventions, light-armed skirmishers (peltasts) and gradual changes in tactics during the battle. These novelties were to be later exploited in more famous actions of Theban troops in the following century, led by [[Epaminondas]] in the [[Battle of Leuctra]] and others. ||| Aftermath ||| ||| +0 Battle of Denain ||| Battle of Friedlingen ||| The War of Spanish Succession had raged since 1701. After over a decade of war, France was in a dark period, both financially and militarily. The early victories of [[Marshal Villars]] at the [[Battle of Friedlingen]] and the [[First Battle of Höchstädt|Battle of Höchstadt]] were followed by numerous defeats to the Allied forces, most notably the armies under [[Prince Eugene of Savoy]] and the [[John Churchill, 1st Duke of Marlborough|Duke of Marlborough]]. In 1708, after the [[Battle of Oudenaarde|rout of Oudenaarde]], nearly all the strongholds of northern France were under the control of the Austro-British coalition. There was also an economic crisis (the winter of 1708-1709 is one of the most rigorous of the 18th century) leading to famine and high mortality in the populace. ||| Background ||| ||| +0 Battle of Dinwiddie Court House ||| Battle of White Oak Road ||| The '''Battle of Dinwiddie Court House''' was fought on March 31, 1865, during the [[American Civil War]] at the end of the [[Siege of Petersburg|Richmond-Petersburg Campaign]] and in the beginning stage of the [[Appomattox Campaign]]. Along with the [[Battle of White Oak Road]] which was fought simultaneously on March 31, the battle involved the last offensive action by [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] attempting to stop the progress of [[Lieutenant general|Lieutenant General]] [[Ulysses S. Grant|Ulysses S. Grant's]] [[Union Army]] ([[Army of the Potomac]], [[Union Army of the Shenandoah|Army of the Shenandoah]] and [[Army of the James]]). Grant's forces were moving to cut the remaining Confederate supply lines and to force the Confederates to extend their defensive lines at [[Siege of Petersburg|Petersburg, Virginia]] and [[Richmond in the Civil War|Richmond, Virginia]] to the breaking point, if not to force them into a decisive open field battle. ||| ||| ||| +0 Battle of Dong Xoai ||| Battle of Binh Gia ||| From the Communist perspective, even though South Vietnam was plagued by political instability, it still had a strong army to resist the Viet Cong. So shortly after the [[Battle of Binh Gia|Binh Gia campaign]], North Vietnamese leaders reached a resolution to launch a summer offensive, to destroy the regular units of the South Vietnamese military. ||| Background ||| ||| +0 Battle of Dongshan Island ||| Dongshan Island Campaign ||| While a strategic loss for the Nationalists, the abandonment of the Eastern Mountain (Dongshan, 东山) Island did teach valuable lessons. Primarily it resulted in less overstretch and better handling of defence on islands closer to Taiwan proper. The [[Kuomintang|Nationalists]] also learned from the mistakes used in their defence and battle, as shown three years later during the [[Dongshan Island Campaign]], when they attacked and seized islands they'd previously abandoned. ||| ||| ||| +0 Battle of Drewry's Bluff ||| Peninsula Campaign ||| The '''Battle of Drewry's Bluff''', also known as the '''Battle of Fort Darling''', or '''Fort Drewry''', took place on May 15, 1862, in [[Chesterfield County, Virginia]], as part of the [[Peninsula Campaign]] of the [[American Civil War]]. Five [[Union Navy]] warships, including the [[ironclad warship|ironclads]] {{USS|Monitor|1862|6}} and {{USS|Galena|1862|2}}, steamed up the [[James River (Virginia)|James River]] to test the defenses of [[Richmond, Virginia]], the [[Confederate States of America|Confederate]] capital. They encountered submerged obstacles and deadly accurate fire from the batteries of [[Fort Darling]] at [[Drewry's Bluff]], which inflicted severe damage on ''Galena''. The Union Navy was forced to turn back. ||| ||| ||| +0 Battle of Dunkirk ||| Battle of Arras (1940) ||| A series of Allied counter-attacks—including the [[Battle of Arras (1940)|Battle of Arras]]—failed to sever the German spearhead, which reached the coast on 20 May, separating the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) near [[Armentières]], the [[First Army (France)|French 1st Army]], and the [[Belgian Army]] further to the north from the majority of French troops south of the German penetration. After reaching the Channel, the Germans swung north along the coast, threatening to capture the ports and trap the British and French forces before they could evacuate to Britain. ||| ||| ||| +0 Battle of Dunkirk ||| Operation Market Garden ||| The heaviest fighting was in the 5th Division's sector. Still on 27 May, Brooke ordered [[Major-general (United Kingdom)|Major-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Montgomery]]{{refn|'Monty' was later to win the [[Second Battle of El Alamein]], plan the [[Normandy landings]] and [[Operation Market Garden]] at [[Battle of Arnhem|Arnhem]]. He rose to the rank of field marshal and became the most celebrated British general of the Second World War, but in 1940 he was commander of the 3rd Division under Brooke.|group='Notes'}} to extend his 3rd Division's line to the left, thereby freeing [[10th Infantry Brigade (United Kingdom)|10th]] and [[11th Infantry Brigade and Headquarters South East|11th]] brigades of 4th Division to join the 5th Division at Messines Ridge. 10th Brigade arrived first, to find the enemy had advanced so far they were closing on the British field artillery. Between them, 10th and 11th brigades cleared the ridge of Germans, and by 28 May they were securely dug in east of Wytschaete. ||| Battle ||| Battle of Wytschaete ||| +0 Battle of Dürenstein ||| French Revolution ||| In a series of conflicts from 1803 to 1815 known as the [[Napoleonic Wars]], various European powers formed five coalitions against the [[First French Empire]]. Like the wars sparked by the [[French Revolution]] (1789), these further revolutionized the formation, organization, and training of European armies and led to an unprecedented militarization, mainly due to [[Levée en masse|mass conscription]]. Under the leadership of [[Napoleon I of France|Napoleon]], French power rose quickly, as the ''[[Grande Armée]]'' conquered most of Europe and it collapsed rapidly after the disastrous [[French invasion of Russia|invasion of Russia]] in 1812. Napoleon's empire ultimately suffered complete military defeat in the 1813–1814 campaigns, resulting in the [[Bourbon Restoration|restoration of the Bourbon monarchy]] in France. Although Napoleon made a spectacular return in 1815, known as the [[Hundred Days]], his defeat at the [[Battle of Waterloo]], the pursuit of his army and himself, his abdication, and his banishment to the Island of [[Saint Helena]], concluded the Napoleonic Wars. ||| Background ||| ||| +0 Battle of Dürenstein ||| Ulm Campaign ||| From 1803 to 1806, the [[War of the Third Coalition|Third Coalition]] fought the [[First French Empire]] and its [[French client republic|client states]] (see table at right). Although several [[Trafalgar Campaign|naval battles]] determined control of the seas, the outcome of the war was decided on the continent, predominantly in two major land operations in the Danube valley: the [[Ulm Campaign|Ulm campaign]] in the upper Danube, and the [[Battle of Austerlitz|Vienna campaign]], in the middle Danube valley. ||| Danube campaign ||| ||| +0 Battle of Dürenstein ||| War of the Austrian Succession ||| Until 1805, Dürenstein was probably best known as the village in which [[Third Crusade|crusader]] [[Richard I of England|Richard the Lionheart]] was held by [[Leopold V, Duke of Austria|Leopold V, Duke of Austria]]. In 1741, during the [[War of the Austrian Succession]], several hundred local villagers had held off the French and Bavarian armies, intent on capturing Vienna, by painting drain pipes to look like cannons, and beating on drums, thus suggesting the presence of a large force. ||| Battlefield commemorations ||| ||| +0 Battle of El Mazuco ||| War in the North ||| The '''Battle of El Mazuco''' was fought between 6 and 22 September 1937, between the [[Second Spanish Republic|Republican]] and [[Spanish State|Nationalist]] armies during the [[Spanish Civil War]] as a part of the [[War in the North]] campaign. The Republican defence of [[El Mazuco]] and the surrounding mountains halted the Nationalist advance into eastern [[Asturias Offensive|Asturias]], despite their forces being outnumbered sevenfold. After weeks of intense fighting over extreme terrain the defenders were eventually overwhelmed, and the Nationalists were then able to link up with their forces advancing from [[Leon (province)|León]], leading to the fall of [[Gijon|Gijón]] and the abandonment of Asturias, the last Republican province in North-West Spain. ||| ||| ||| +0 Battle of El Pla ||| Siege of Tortosa (1810) ||| The [[Siege of Tortosa (1810)|Siege of Tortosa]] ended on 2 January 1811 when the Spanish garrison surrendered to [[Louis Gabriel Suchet]]'s [[III Corps (Grande Armée)|III Corps]]. During the siege, [[Marshal of France|Marshal]] [[Jacques MacDonald]]'s [[VII Corps (Grande Armée)|VII Corps]] blocked the Catalan army of [[Luis González Torres de Navarra, Marquess of Campoverde]] from interfering with Suchet's operations. With the siege finished, MacDonald moved toward [[Lleida|Lleida (Lérida)]] with 12,000 troops. After reaching Valls, his vanguard commander Francesco Orsatelli (called Eugenio) heard that an enemy force was nearby and determined to attack it. Eugenio was mortally wounded and his brigade driven back by Sarsfeld's men. After Giuseppe Federico Palombini's brigade joined Eugenio's survivors, Sarsfield counterattacked and defeated both Italian units. Only the intervention of a handful of French cavalry led by [[Jacques-Antoine-Adrien Delort]] prevented a complete disaster. After the day's action, MacDonald found that Campoverde's main force was coming up behind him. During the night, the French marshal force-marched his troops north to [[Montblanc, Tarragona|Montblanc]] on the road to Llieda, conceding the battlefield to the Spanish. ||| ||| ||| +0 Battle of Elsenborn Ridge ||| Battle of Lanzerath Ridge ||| The U.S. troops were positioned on a slight ridge overlooking the village. During a [[Battle of Lanzerath Ridge|20-hour-long battle]], the18 man platoon, led by a 20-year old lieutenant [[Lyle Bouck|Lyle Bouck Jr.]], inflicted 93 casualties on the Germans. The U.S. troops seriously disrupted the entire German [[6th Panzer Army|German Sixth Panzer Army]] schedule of attack along the northern edge of the offensive. ||| Kampfgruppe Peiper advance ||| Battle of Lanzerath Ridge ||| +0 Battle of Fontenoy ||| Battle of Pfaffenhofen ||| Elsewhere, the Pragmatic Allies had scored considerable success in late 1744. A joint Austro-Saxon force under Charles of Lorraine and Count [[Otto Ferdinand von Abensberg und Traun|Traun]] drove [[Frederick II of Prussia|Frederick II]]'s Prussian army from [[Bohemia]]; and [[Kingdom of Sardinia|Piedmont-Sardinia]] had expelled the [[House of Bourbon|Bourbons]] from northern Italy. Further success followed with the death in January 1745 of the French [[Puppet#Non-puppetry related usages of the word|puppet]], Emperor [[Charles VII, Holy Roman Emperor|Charles VII]]. When his successor, [[Maximilian III Joseph]], hesitated over peace proposals, the Austrians launched a rapid campaign, culminating in April with the Franco-Bavarian defeat at the decisive [[Battle of Pfaffenhofen]]. Max Joseph sued for peace and gave his support for the candidacy of [[Maria Theresa]]'s husband, [[Francis I, Holy Roman Emperor|Francis Stephen]], in the coming Imperial election for the vacant throne. ||| Background ||| ||| +0 Battle of Fort Dipitie ||| Boxer Rebellion ||| The Cacos followed up their ambush and attacked the Marines again. All night long, the Americans held their ground. (Cacos were reputed to be poor marksmen and, indeed, only one Marine was wounded in the battle; altogether, about 75 Haitians were killed in the two-day battle.) Later that night, [[Boxer Rebellion]] veteran and [[Medal of Honor]] recipient [[Dan Daly]] retrieved the machine gun and killed three Haitians with his knife, earning himself his second Medal of Honor. ([[First Lieutenant]] [[Edward Albert Ostermann]] commanded one of the squads; he, too, was awarded the Medal of Honor for heroic action in this engagement.) ||| Battle ||| ||| +0 Battle of Fort Donelson ||| Battle of Belmont ||| Floyd's Confederate force of approximately 17,000 men consisted of three divisions, garrison troops, and attached cavalry. The three divisions were commanded by Floyd (replaced by Colonel [[Gabriel C. Wharton]] when Floyd took command of the entire force) and Brig. Gens. [[Bushrod Johnson]] and [[Simon Bolivar Buckner, Sr.|Simon Bolivar Buckner]]. During the battle, Johnson, the engineering officer who briefly commanded Fort Donelson in late January, was effectively superseded by Brig. Gen. [[Gideon Pillow|Gideon J. Pillow]] (Grant's opponent at his first battle at [[Battle of Belmont|Belmont]]). Pillow, who arrived at Fort Donelson on February 9, was displaced from overall command of the fort when the more-senior Floyd arrived. ||| Opposing forces ||| Confederate ||| +0 Battle of Fort Donelson ||| First Battle of Bull Run ||| Johnston wanted to give command of Fort Donelson to Beauregard, who had performed ably at [[First Battle of Bull Run|Bull Run]], but the latter declined because of a throat ailment. Instead, the responsibility went to Brig. Gen. [[John B. Floyd]], who had just arrived following an unsuccessful assignment under [[Robert E. Lee]] in western [[Virginia]]. Floyd was a wanted man in the North for alleged graft and [[secession]]ist activities when he was [[United States Secretary of War|Secretary of War]] in the [[James Buchanan]] administration. Floyd's background was political, not military, but he was nevertheless the senior brigadier general on the Cumberland River. ||| Background ||| ||| +0 Battle of Fort Henry ||| War of 1812 ||| The fort was designed to stop traffic on the river, not to withstand large-scale infantry assaults that armies would use during the war. Construction began in mid-June, using men from the 10th Tennessee Infantry and [[slavery|slaves]]. The first cannon was test fired on July 12, 1861. After this flurry of activity, the remainder of 1861 saw little action because forts on the Mississippi River had a higher priority for receiving men and artillery. General Polk also neglected Forts Henry and Donelson in favor of defending Columbus, Kentucky. In late December, additional men from the 27th Alabama Infantry arrived along with 500 slaves to construct a small fortification across the river on Stewart's Hill, within artillery range of Fort Henry, and named it Fort Heiman. In January 1862, Brig. Gen. [[Lloyd Tilghman]] assumed command of both Forts Henry and Donelson, with a combined force of 4,900 men. At Fort Henry, approximately 3,000-3,400 men in two brigades were commanded by Colonels Adolphus Heiman and [[Joseph Drake (soldier)|Joseph Drake]]. The men were armed primarily with antique flintlock rifles from the [[War of 1812]]. ||| Fort Henry ||| ||| +0 Battle of Fort McAllister (1864) ||| Battle of Shiloh ||| Sherman was overjoyed with the victory and rowed down the Ogeechee to view the fort. That evening at Gen. Hazen's Head Quarters, Lt. Col Strong, General Sherman and Gen. Hazen had supper with Major Anderson, commander of the now defeated fortification who was confined there. The next day he rowed out to Dahlgren's flagship to greet the admiral. Sherman also had reason to be proud of the troops that had taken part in the victory at Fort McAllister. These were the same troops he personally led as a division commander at [[Battle of Shiloh|Shiloh]] and a corps commander at [[Siege of Vicksburg|Vicksburg]]. ||| Battle ||| ||| +0 Battle of Fort Rivière ||| Battle of Fort Dipitie ||| When the three men exited the tunnel on the other side of the wall, they opened fire with their weapons on 60-75 rebels. Once the first wave of marines entered the stronghold, the rest of the marines and sailors attacked. Combat lasted for 10-15 minutes before the Cacos fled. Over 51 were killed and none were taken prisoner. Over 20 of the rebels were killed when they fled the fort by jumping over the [[parapet]] under heavy fire. Like at the [[Battle of Fort Dipitie]], Smedley defeated a superior enemy force with a loss of only one man wounded. The casualty was wounded by a rock when a Caco struck him in the face with it, knocking out two of the U.S. Marine [[lieutenant]]'s teeth. The Cacos, not knowing what the gunsight was used for, typically threw down their weapons and armed themselves with stones when closely encountered by U.S. Marines. ||| Battle ||| ||| +0 Battle of Forts Jackson and St. Philip ||| Siege of Vicksburg ||| Forts Jackson and St. Philip had been the shell of the Confederate defenses on the lower Mississippi, and nothing now stood between the Gulf and Memphis. After a few days spent repairing battle damage his ships had suffered, Farragut sent expeditions north to demand the surrender of other cities on the river. With no effective means of defense, [[Baton Rouge, Louisiana|Baton Rouge]] and [[Natchez, Mississippi|Natchez]] complied. At [[Vicksburg, Mississippi|Vicksburg]], however, the guns of the ships could not reach the Confederate fortifications atop the bluffs, and the small army contingent that was with them could not force the issue. Farragut settled into a siege, but was forced to withdraw when falling levels of the river threatened to strand his deep-water ships. [[Siege of Vicksburg|Vicksburg]] would not fall until another year had passed. ||| Aftermath ||| ||| +0 Battle of France ||| Schlieffen Plan ||| On 10 October 1939, the British refused Hitler's offer of peace; on 12 October, the French did the same. Franz Halder presented the first plan for ''Fall Gelb'' ('Case Yellow') on 19 October. This was the pre-war codename of plans for a campaign in the Low Countries: the ''Aufmarschanweisung N°1, Fall Gelb'' ('Deployment Instruction No. 1, Case Yellow'). Halder's plan has often been compared to the [[Schlieffen Plan]], which the Germans attempted to execute in 1914 in the opening phase of the [[World War I|First World War]]. ||| German strategy ||| Similarity to Schlieffen Plan ||| +0 Battle of Friedberg ||| Battle of Neresheim ||| Two French armies crossed the [[Rhine]] and thrust east into Germany in the [[Rhine Campaign of 1796]]. [[Jean-Baptiste Jourdan]]'s [[Army of Sambre-et-Meuse]] advanced on a more northerly route while Moreau's [[Army of Rhin-et-Moselle]] took a more southerly path. Opposing them were [[Wilhelm von Wartensleben]]'s Army of the Lower Rhine and Latour's Army of the Upper Rhine, both under the overall direction of [[Archduke Charles, Duke of Teschen]]. Moreau defeated Charles at the battles of [[Battle of Ettlingen|Ettlingen]] on 9 July and [[Battle of Neresheim|Neresheim]] on 11 August. ||| ||| ||| +0 Battle of Gazala ||| Operation Crusader ||| Following [[Operation Crusader]], in late 1941, the Eighth Army had relieved Tobruk and driven the Axis forces from [[Cyrenaica]] to [[El Agheila]]. The Eighth Army advance of {{convert|800|km|mi}} over-stretched its means of supply and in January 1942, the British reduced the front line garrison, to work on lines of communication and supply dumps, preparatory to another westwards advance against [[Tripolitania]]. The elimination of [[Force K]] from Malta, which ran into an Italian minefield off Tripoli in mid-December and the arrival of Fliegerkorps II in Sicily, neutralised the air and naval forces in Malta and more Axis supplies reached Libya. ||| Background ||| Operation Theseus ||| +0 Battle of Gefrees ||| Battle of Aspern-Essling ||| After the battle of [[Battle of Aspern-Essling]], [[Archduke Charles, Duke of Teschen|Archduke Charles]] reinforced the Austrian troops in Bohemia to a total strength of over 12,000 men and ordered a diversionary attack into Saxony. These Austrian reinforcements entered Saxony on 10 June and by the third day, an Austrian force of over 6,000 men under Major Am Ende captured the capital, [[Dresden]]. Von Thielmann and his Saxons were forced back to Gorbitz, whilst the Saxon Royal Family hurriedly fled west. Meanwhile, another force of 6,000 men under [[Paul von Radivojevich]] wheeled south into [[Kingdom of Bavaria|Bavaria]], another French ally, capturing [[Bayreuth]] on 14 June. From here, Radivojevich could threaten an invasion of the [[Kingdom of Württemberg]] or an attempt to reinforce the [[Battles of Bergisel|Tyrolean uprising]]. ||| Background ||| ||| +0 Battle of Gembloux (1940) ||| Battle of the Netherlands ||| On 10 May 1940, Nazi Germany's armed forces, the ''[[Wehrmacht]]'', invaded [[German invasion of Luxembourg in World War II|Luxembourg]], [[Battle of the Netherlands|The Netherlands]], and Belgium under the operational plan ''[[Fall Gelb]]'' (Case Yellow). The Allied Armies [[Dyle Plan|attempted to halt the German Army in Belgium]], believing it to be the main German thrust. After the Allies had fully committed the best of the Allied Armies to Belgium on the 10th through the 12th of May, the Germans enacted the second phase of their operation, a [[Manstein Plan|break through]], or sickle cut, through the [[Ardennes]], and advanced to the [[English Channel]]. ||| ||| ||| +0 Battle of Gergovia ||| Avaricum ||| Leaving two legions and all his baggage train behind in [[Sens|Agedincum]], Caesar led the remaining legions to Gergovia's aid. His sieges of [[Vellaunodunum]], [[Genabum]] and [[Neung-sur-Beuvron|Noviodunum]] en route caused Vercingetorix to lift his siege and march to meet Caesar in open battle at Noviodunum, which Caesar won. Caesar then besieged and captured [[Avaricum]] and resupplied there. ||| Prelude ||| ||| +0 Battle of Gettysburg ||| Battle of Fredericksburg ||| Prior to Gettysburg, Robert E. Lee had established a reputation as an almost invincible general, achieving stunning victories against superior numbers&mdash;although usually at the cost of high casualties to his army&mdash;during the [[Seven Days Battles|Seven Days]], the [[Northern Virginia Campaign]] (including the [[Second Battle of Bull Run]]), [[Battle of Fredericksburg|Fredericksburg]], and [[Battle of Chancellorsville|Chancellorsville]]. Only the [[Maryland Campaign]], with its tactically inconclusive [[Battle of Antietam]], had been less than successful. Therefore, historians have attempted to explain how Lee's winning streak was interrupted so dramatically at Gettysburg. Although the issue is tainted by attempts to portray history and Lee's reputation in a manner supporting different partisan goals, the major factors in Lee's loss arguably can be attributed to: (1) his overconfidence in the invincibility of his men; (2) the performance of his subordinates, and his management thereof; (3) his failing health, and (4) the performance of his opponent, George G. Meade, and the Army of the Potomac. ||| Historical assessment ||| Lee vs. Meade ||| +0 Battle of Gettysburg ||| Second Battle of Bull Run ||| Prior to Gettysburg, Robert E. Lee had established a reputation as an almost invincible general, achieving stunning victories against superior numbers&mdash;although usually at the cost of high casualties to his army&mdash;during the [[Seven Days Battles|Seven Days]], the [[Northern Virginia Campaign]] (including the [[Second Battle of Bull Run]]), [[Battle of Fredericksburg|Fredericksburg]], and [[Battle of Chancellorsville|Chancellorsville]]. Only the [[Maryland Campaign]], with its tactically inconclusive [[Battle of Antietam]], had been less than successful. Therefore, historians have attempted to explain how Lee's winning streak was interrupted so dramatically at Gettysburg. Although the issue is tainted by attempts to portray history and Lee's reputation in a manner supporting different partisan goals, the major factors in Lee's loss arguably can be attributed to: (1) his overconfidence in the invincibility of his men; (2) the performance of his subordinates, and his management thereof; (3) his failing health, and (4) the performance of his opponent, George G. Meade, and the Army of the Potomac. ||| Historical assessment ||| Lee vs. Meade ||| +0 Battle of Gettysburg ||| Second Battle of Winchester ||| By mid-June, the Army of Northern Virginia was poised to cross the Potomac River and enter [[Maryland]]. After defeating the Federal garrisons at [[Second Battle of Winchester|Winchester]] and [[Martinsburg, West Virginia|Martinsburg]], Ewell's Second Corps began crossing the river on June 15. Hill's and Longstreet's corps followed on June 24 and 25. Hooker's army pursued, keeping between the U.S. capital and Lee's army. The Federals crossed the Potomac from June 25 to 27. ||| Background and movement to battle ||| ||| +0 Battle of Ginchy ||| Battle of Guillemont ||| The '''Battle of Ginchy''' took place on 9 September 1916 during the [[Battle of the Somme (1916)|Battle of the Somme]], when the [[16th (Irish) Division|16th Division]] captured the [[Germany|German]]-held village. [[Ginchy]] is {{convert|1.5|km|mi}} north-east of Guillemont, at the junction of six roads on a rise overlooking Combles, {{convert|4|km|mi}} to the south-east. After the conclusion of the [[Battle of Guillemont]] on 6 September, [[XIV Corps (United Kingdom)|XIV Corps]] and [[XV Corps (United Kingdom)|XV Corps]] were required to complete the advance to positions which would give observation over the German third position, ready for a general attack in mid-September, for which the Anglo-French armies had been preparing since early August. British attacks from the boundary between the [[Fourth Army (United Kingdom)|Fourth Army]] and the [[Sixth Army (France)|French Sixth Army]] from Leuze Wood north to Ginchy, had begun on 3 September when the 7th Division captured the village, before being forced out by a German counter-attack. Attacks on Leuze Wood and attempts to re-take Ginchy on 4 and 5 September were also defeated by German counter-attacks. The 7th Division was relieved by the 16th Division and 55th Division on the evening of 7 September and the 5th Division was replaced by the 56th Division on the right at the army boundary. ||| ||| ||| +0 Battle of Glendale ||| Seven Days Battles ||| The '''Battle of Glendale''', also known as the '''Battle of Frayser's Farm''', '''Frazier's Farm''', '''Nelson's Farm''', '''Charles City Crossroads''', '''New Market Road''', or '''Riddell's Shop''', took place on June 30, 1862, in [[Henrico County, Virginia]], on the sixth day of the [[Seven Days Battles]] ([[Peninsula Campaign]]) of the [[American Civil War]]. ||| ||| ||| +0 Battle of Gloucester (1777) ||| Battle of Brandywine ||| Greene was accompanied by the [[Marquis de Lafayette]], a young French officer who had accompanied Washington at the [[Battle of Brandywine]]. Lafayette had been wounded in the foot in that battle, and, while it was not fully healed, he was eager to join the action. Greene ordered Lafayette out to on a reconnaissance mission to determine the location and strength of Cornwallis' army. ||| Background ||| ||| +0 Battle of Grijó ||| Second Battle of Porto ||| The '''Battle of Grijó''' ({{IPA-pt|ɡɾiˈʒɔ}}) (10–11 May 1809) was a battle that ended in victory for the [[Anglo-Portuguese Army]] commanded by [[Arthur Wellesley, 1st Duke of Wellington|Sir Arthur Wellesley]] (the future 1st [[Duke of Wellington (title)|Duke of Wellington]]) over the French army commanded by Marshal [[Nicolas Jean de Dieu Soult|Nicolas Soult]] during the second French invasion of Portugal in the [[Peninsular War]]. The next day, Wellesley drove Soult from Porto in the [[Second Battle of Porto]]. ||| ||| ||| +0 Battle of Guillemont ||| Battle of Ginchy ||| Wilfrid Miles noted in the [[History of the Great War|British Official History]], that the defence of Guillemont was judged by some observers, to be the best performance of the war by the German army on the [[Western Front (World War I)|Western Front]]. A pause in Anglo-French attacks at the end of August, to organise bigger combined attacks and postponements for bad weather, coincided with the largest counter-attack by the German army in the Battle of the Somme. Joffre, Foch and Haig abandoned attempts to organise large combined attacks, in favour of sequenced army attacks and the capture of the German defences from Cléry north of the Somme, to Guillemont from {{nowrap|3–6 September,}} brought the French Sixth and British Fourth armies onto ground which overlooked the German third position. Rain, congestion and reliefs of tired divisions then forced a pause in French attacks until 12 September. In the [[Battle of Ginchy]] (9 September) the Fourth Army captured the village, ready for the [[Battle of Flers–Courcelette]], (15–22 September). ||| ||| ||| +0 Battle of Gujrat ||| Battle of Ramnagar ||| Late in 1848, a large British and Bengal army took the field during the cold weather season under the Commander in Chief of the Bengal Army, General Sir [[Hugh Gough, 1st Viscount Gough|Hugh Gough]]. Gough already had a reputation, whether deserved or not, for unimaginative head-on tactics. On 22 November at [[Battle of Ramnagar|Ramnagar]], his cavalry were repulsed attacking a Sikh bridgehead on the east bank of the Chenab. Then on 13 January 1849, he launched a hasty frontal attack against Sher Singh's army at [[Battle of Chillianwala|Chillianwala]] near the [[Jhelum River]] and was driven back with heavy casualties. Several days' heavy rain followed, preventing either army from renewing the battle. After they had faced each other for three days, both withdrew. ||| Outbreak and course of the war ||| ||| +0 Battle of Guttstadt-Deppen ||| Siege of Kolberg (1807) ||| At the end of March 1807, Marshal [[Édouard Adolphe Casimir Joseph Mortier]] withdrew many of his troops from the [[Siege of Stralsund (1807)|Siege of Stralsund]] with the intention of using them for the [[Siege of Kolberg (1807)|Siege of Kolberg]]. His Swedish opponent, General-Leutnant [[Hans Henric von Essen (1755-1824)|Hans Henric von Essen]] immediately pushed back the outnumbered besiegers. Quickly returning with the bulk of his soldiers, Mortier drove the Swedes north of the [[Peene]] River and the two sides concluded an armistice on 29 April. This freed many of Mortier's troops for other duties and allowed Napoleon to concentrate on reducing [[Gdańsk]] (Danzig). ||| Background ||| ||| +0 Battle of Guttstadt-Deppen ||| Siege of Stralsund (1807) ||| At the end of March 1807, Marshal [[Édouard Adolphe Casimir Joseph Mortier]] withdrew many of his troops from the [[Siege of Stralsund (1807)|Siege of Stralsund]] with the intention of using them for the [[Siege of Kolberg (1807)|Siege of Kolberg]]. His Swedish opponent, General-Leutnant [[Hans Henric von Essen (1755-1824)|Hans Henric von Essen]] immediately pushed back the outnumbered besiegers. Quickly returning with the bulk of his soldiers, Mortier drove the Swedes north of the [[Peene]] River and the two sides concluded an armistice on 29 April. This freed many of Mortier's troops for other duties and allowed Napoleon to concentrate on reducing [[Gdańsk]] (Danzig). ||| Background ||| ||| +0 Battle of Głogów ||| Invasion of Poland ||| After centuries-long ambivalent [[German–Polish relations|relations with Germany]], the successful defense and the tradition of Henry's cruelty had evolved to a key element in the memory of the Polish nation. A first memorial stone was erected by the Głogów citizens on the occasion of the 850th anniversary of the battle in 1959. On 1 September 1979 a large [[Socialist realism|Socialist Realistic]] memorial to the Głogów children was inaugurated to commemorate not only the 870th anniversary but also the 40th memorial day of the German [[Invasion of Poland]]. ||| Aftermath ||| ||| +0 Battle of Hegra Fortress ||| Winter War ||| On 14 April, reports came in to the troops stationed at Hegra village stating that a train loaded with German soldiers had left [[Hell Station|Hell]] [[Train station|railway station]] and was on its way to Hegra. Not long after a train approached Hegra Station and ignored signals to stop. In response to what was interpreted as a German troop train trying to force its way through, the soldiers guarding the station opened fire on the approaching train. In what turned out to be a tragic incident of misidentification, a civilian train carrying Finnish refugees on their way home after the end of the [[Winter War]] was fired upon with one Norwegian man killed and two Finnish women wounded. ||| Background ||| Friendly fire incident ||| +0 Battle of Hel ||| Battle of Kock (1939) ||| By 14 September Polish forces on the Hel peninsula were cut off from the mainland. After initially being stalled by Polish defences, and that no relief force would be coming, gave the orders to capitulate. The Germans occupied the peninsula by 2 October. After the [[Capitulation (surrender)|capitulation]] of Hel, the only organized Polish resistance was carried out by [[Independent Operational Group Polesie]], eventually capitulated at the end of the [[Battle of Kock (1939)|Battle of Kock]]. ||| The battle ||| ||| +0 Battle of Hill 60 (Gallipoli) ||| Landing at Suvla Bay ||| The '''Battle of Hill 60''' was the last major assault of the [[Gallipoli Campaign]]. It was launched on 21 August 1915 to coincide with the attack on [[Scimitar Hill (battle)|Scimitar Hill]] made from the [[Landing at Suvla Bay|Suvla]] front by Major-General [[Beauvoir De Lisle|H. de B. De Lisle's]] [[IX Corps (United Kingdom)|British IX Corps]], Stopford having been replaced in the few days previous. Hill 60 was a low knoll at the northern end of the Sari Bair range which dominated the Suvla landing. Capturing this hill along with [[Scimitar Hill]] would have allowed the [[Anzac Cove|Anzac]] and Suvla landings to be securely linked. ||| ||| ||| +0 Battle of Hill 60 (Western Front) ||| First Battle of Ypres ||| The '''Battle of Hill 60''' ({{nowrap|17 April – 7 May 1915}}) took place near [[Hill 60 (Ypres)|Hill 60]] south of Ypres on the Western Front, during the First World War. Hill 60 had been captured by the German [[30th Division (German Empire)|30th Division]] on 11 November 1914, during the [[First Battle of Ypres]] ({{nowrap|19 October – 22 November 1914}}). Initial French preparations to raid the hill were continued by the British [[28th Division (United Kingdom)|28th Division]], which took over the line in February 1915 and then by the [[5th Division (United Kingdom)|5th Division]]. The plan was expanded into an ambitious attempt to capture the hill, despite advice that Hill 60 could not be held unless the 'Caterpillar' nearby was also occupied. It was found that Hill 60 was the only place in the area not waterlogged and a French {{convert|3|×|2|ft|m}} mine gallery was extended. ||| ||| ||| +0 Battle of Hong Kong ||| Attack on Pearl Harbor ||| The Japanese attack began shortly after 08:00 on 8 December 1941 ([[Hong Kong Time|Hong Kong local time]]), less than eight hours after the [[Attack on Pearl Harbor]] (because of the day shift that occurs on the international date line between Hawaii and Asia, the Pearl Harbor event is recorded to have occurred on 7 December). The Japanese attack was not preceded by a declaration of war and so was in clear violation of international law. [[British Army|British]], [[Canadian Army|Canadian]] and [[British Indian Army|Indian]] forces, commanded by Major-General [[Christopher Maltby]] supported by the Hong Kong Volunteer Defence Corps resisted the Japanese attack by the Japanese 21st, 23rd and the 38th Regiment, commanded by Lieutenant General [[Takashi Sakai]], but were outnumbered nearly four to one (Japanese, 52,000; Allied, 14,000) and lacked their opponents' recent combat experience. ||| Battle ||| ||| +0 Battle of Höchstädt (1800) ||| Battle of Blenheim ||| The Danube passage connecting Ulm, [[Donauwörth]], [[Ingolstadt]] and [[Regensburg]] had strategic importance in the ongoing competition for European hegemony between France and the [[Holy Roman Empire]]; the army that commanded the Danube, especially its passage through [[Duchy of Württemberg|Württemberg]] and Bavaria, could command access to the important cities of [[Munich]] and the seat of Habsburg authority: Vienna. The end result of the battle was the opposite of what had occurred on those same fields almost 100 years earlier, when the armies of the [[Grand Alliance (League of Augsburg)|Grand Alliance]] had faced the armies of France during the [[War of the Spanish Succession]]. At the Second Battle of Höchstädt in 1704, called the [[Battle of Blenheim]] by the English, the overwhelming Allied victory ensured the safety of Vienna from the Franco-Bavarian army, thus preventing the collapse of the Grand Alliance. France's loss during that engagement opened the pathway into France for the allied English and Austrian forces. ||| ||| ||| +0 Battle of Hürtgen Forest ||| Invasion of Normandy ||| By mid-September 1944, the Allied pursuit of the German army after the [[Invasion of Normandy|landings at Normandy]] was slowing down because of extended supply lines and German Army rebuilding. The next strategic objective was to move up to the [[Rhine|Rhine River]] along its entire length and prepare to cross it. [[Courtney Hodges]]′ [[First United States Army|First Army]] experienced hard resistance pushing through the Aachen Gap and perceived a potential threat from enemy forces using the Hürtgen Forest as a base. ||| Background ||| ||| +0 Battle of Hürtgen Forest ||| Siege of Bastogne ||| To the south, the Germans had somewhat more success. They swept over the vastly unprepared [[106th Infantry Division (United States)|106th Infantry Division]], overrunning two of its regiments who surrendered virtually intact, and finally capturing the key road and rail network in [[Battle of St. Vith|St. Vith]]. But they didn't get far beyond the village, as the [[7th Armored Division (United States)|7th Armored Division]] and the remaining regiment of the [[106th Infantry Division (United States)|106th Infantry Division]]—with elements of the [[28th Infantry Division (United States)|28th Infantry Division]] and the [[9th Armored Division (United States)|9th Armored Division]]—held firm outside that town. They never captured the key town of [[Siege of Bastogne|Bastogne]] and were forced to bypass it, and, although they got within a few miles of the [[Meuse (river)|Meuse River]], their advance was stopped by the [[8th Infantry Division (United States)|8th]] and [[104th Infantry Division (United States)|104th Infantry Division]], and the [[82nd Airborne Division|82nd]] and [[101st Airborne Division]]s. ||| Aftermath ||| ||| +0 Battle of Ia Drang ||| First Indochina War ||| The VC forces were in nominal control of most of the countryside by 1965 and had established military infrastructure in the [[Tây Nguyên|Central Highlands]], to the north-east of the [[Saigon]] region. Vietnamese communist forces had operated in this area during the previous decade in the [[First Indochina War]] against the French, winning a notable victory at the [[Battle of Mang Yang Pass]] in 1954. There were few reliable roads into the area, making it an ideal place for the communist forces to form bases, relatively immune from attack by the generally road-bound ARVN forces. During 1965, large groups of North Vietnamese regulars of the PAVN moved into the area, to conduct offensive operations. Attacks to the south-west from these bases threatened to cut South Vietnam in two. The U.S. command saw this as an ideal area to test new [[air mobility]] tactics. ||| Background ||| ||| +0 Battle of Imphal ||| Battle of Singapore ||| Based on his experiences in the campaigns in [[Battle of Malaya|Malaya]] and [[Battle of Singapore|Singapore]] and in the [[Japanese conquest of Burma]] in early 1942, Mutaguchi dismissed British and Indian troops as inherently inferior. The troops he had met on those occasions had generally been inadequately trained and led. The Allies had by now largely overcome the administrative and organisational problems which had crippled their early efforts in Burma, and their troops were far better trained and motivated. ||| The situation ||| Japanese plan ||| +0 Battle of Inverlochy (1645) ||| Battle of Aberdeen (1644) ||| Argyll did not stay for the battle, but instead he left the command of his army to his general, Duncan Campbell of Auchinbreck, and retired to his galley anchored on [[Loch Linnhe]]. Auchinbreck lined up the covenanters in front of Inverlochy castle, which he reinforced with 200 musketeers to protect his left flank. In the centre he placed the Campbells of Argyll and put the lowland militias on the flanks. Unlike at [[Battle of Tippermuir|Tippermuir]] and [[Battle of Aberdeen (1644)|Aberdeen]], where Montrose had annihilated hastily [[conscript]]ed and poorly trained [[militia]]s, the troops he faced at Inverlochy were veterans of the [[English Civil War|war in England]]. Montrose lined his army up in only two lines deep to avoid being out flanked, placing his 600 highlanders in the centre with the Irish on the flanks, the right being commanded by [[Alasdair MacColla|MacColla]]. The fight did not start straight away and instead skirmishes broke out along the line. This is probably because Auchinbreck and his officers believed that they were only fighting one of Montrose's lieutenants and not the man himself, believing he was still far up the glen. Just before first light, the Royalists launched their attack. ||| ||| ||| +0 Battle of Iron Works Hill ||| Battle of Trenton ||| Von Donop's forces bivouacked in Mount Holly on the night of December 23, where, according to Ewald, they plundered the town, breaking into alcohol stores of abandoned houses and getting drunk.{{sfn|Fischer|2004|p=199}} Von Donop himself took quarters in the house that Ewald described as belonging to an 'exceedingly beautiful widow of a doctor',{{sfn|Fischer|2004|p=199}} whose identity is uncertain.{{sfn|Fischer|2004|p=200}}{{sfn|Dwyer|1983|p=215}} The next day, December 24, they moved in force to drive the militia from the hill, but Griffin and his men had retreated to Moorestown during the night.{{sfn|Rizzo|2007|p=82}} For whatever reason, von Donop and his contingents remained in Mount Holly, {{convert|18|mi|km}} and a full day's march from Trenton,{{sfn|Fischer|2004|p=216}} until a messenger arrived on December 26, bringing the news of Rall's [[Battle of Trenton|defeat by Washington]] that morning.{{sfn|Rizzo|2007|p=82}} ||| Aftermath ||| ||| +0 Battle of Ismailia ||| Operation Badr (1973) ||| On October 6, 1973, Egypt launched [[Operation Badr (1973)|Operation Badr]], which started the [[Yom-Kippur War]]. It succeeded in crossing the [[Suez Canal]] and establishing bridgeheads on the east bank in Israeli-occupied [[Sinai]], and counter-attacks by launched by Israeli reserves were unsuccessful. By October 10, fighting along the front had come to a lull. ||| Background ||| ||| +0 Battle of Iwo Jima ||| Battle of Saipan ||| In the days after the landings, the Marines expected the usual Japanese [[Banzai charge|''banzai'' charge]] during the night. This had been the standard Japanese final defense strategy in previous battles against enemy ground forces in the Pacific, such as during the [[Battle of Saipan]]. In those attacks, for which the Marines were prepared, the majority of the Japanese attackers had been killed and the Japanese strength greatly reduced. However, General Kuribayashi had strictly forbidden these 'human wave' attacks by the Japanese infantrymen because he considered them to be futile. ||| Amphibious landing ||| ||| +0 Battle of Iwo Jima ||| Operation Downfall ||| At the end of the [[Battle of Leyte]] in the [[Philippines]], the [[Allies of World War II|Allies]] were left with a two-month lull in their offensive operations before the planned [[Battle of Okinawa|invasion of Okinawa]]. Iwo Jima was strategically important: it provided an [[air base]] for Japanese [[Fighter aircraft|fighter plane]]s to intercept long-range [[Boeing B-29 Superfortress|B-29 Superfortress]] bombers, and it provided a haven for Japanese naval units in dire need of any support available. In addition, it was used by the Japanese to stage [[Japanese air attacks on the Mariana Islands|air attacks on the Mariana Islands]] from November 1944 through January 1945. The capture of Iwo Jima would eliminate these problems and provide a staging area for [[Operation Downfall]] - the eventual invasion of the Japanese Home Islands. The distance of B-29 raids could (hypothetically) be cut in half, and a base would be available for [[North American P-51 Mustang|P-51 Mustang]] fighters to escort and protect the bombers. ||| Background ||| ||| +0 Battle of Jackson, Mississippi ||| Jackson Expedition ||| General Sherman appointed Brig. Gen. [[Joseph A. Mower]] to the position of military governor of Jackson and ordered him to destroy all facilities that could benefit the war effort. With the discovery of a large supply of rum, it was impossible for Mower's Brigade to keep order among the mass of soldiers and camp followers, and many acts of pillage took place. Grant left Jackson on the afternoon of May 15 and proceeded to [[Clinton, Mississippi]]. On the morning of May 16 he sent orders for Sherman to move out of Jackson as soon as the destruction was complete. Sherman marched almost immediately, clearing the city by 10 a.m.. By nightfall on May 16, Sherman's corps reached [[Bolton, Mississippi]], and the Confederacy had reoccupied what remained of Jackson. Jackson had been destroyed as a transportation center and the war industries were crushed. But more importantly the Confederate concentration of men and materials aimed at saving Vicksburg were scattered. Sherman would later lead an [[Jackson Expedition|expedition against Jackson]] following the fall of Vicksburg to clear Johnston's relief force from the area. ||| Aftermath ||| ||| +0 Battle of Jackson, Mississippi ||| Siege of Vicksburg ||| The '''Battle of Jackson''', fought on May 14, 1863, in [[Jackson, Mississippi]], was part of the [[Vicksburg Campaign]] in the [[American Civil War]]. [[Union Army|Union]] commander [[Major general (United States)|Maj. Gen.]] [[Ulysses S. Grant]] and the [[Army of the Tennessee]] defeated [[Confederate States of America|Confederate]] [[General officers in the Confederate States Army#Major general|General]] [[Joseph E. Johnston]], seizing the city, cutting supply lines, and opening the path to the west and the [[Battle of Vicksburg|Siege of Vicksburg]]. ||| ||| ||| +0 Battle of Jaffa (1917) ||| Western Front (World War I) ||| This was one of the last actions the 52nd (Lowland) Division fought in this campaign. In March 1918, they were ordered to move to the [[Western Front (World War I)|Western Front]] in France. ||| Aftermath ||| ||| +0 Battle of Jargeau ||| Battle of Patay ||| :5. The [[Battle of Patay]]. ||| Background ||| ||| +0 Battle of Java (1942) ||| Battle of the Java Sea ||| :''This article concerns the land battle of [[Java (island)|Java]] in 1942. For the preceding naval battle see [[Battle of the Java Sea]].'' ||| ||| ||| +0 Battle of Jena–Auerstedt ||| Siege of Magdeburg (1806) ||| On the Prussian side, Brunswick was mortally wounded at Auerstedt, and over the next few days the remaining forces were unable to mount any serious resistance to Murat's ruthless cavalry pursuit. In the [[Capitulation of Erfurt]] on 16 October, a large body of Prussian troops became prisoners with hardly a shot being fired. Bernadotte crushed [[Eugene Frederick Henry, Duke of Württemberg]]'s Prussian Reserve on the 17th in the [[Battle of Halle]]. Davout led his exhausted III Corps into Berlin on 25 October. Hohenlohe's force surrendered on 28 October after the [[Battle of Prenzlau]], followed soon after by the [[Capitulation of Pasewalk]]. The French ran down and captured several small Prussian columns at [[Boldekow]] on 30 October, [[Anklam]] on 1 November, [[Wolgast]] on 3 November, and [[Wismar]] on 5 November. The corps of Blücher and Winning were destroyed at the [[Battle of Lübeck]] on 6 and 7 November. The [[Siege of Magdeburg (1806)|Siege of Magdeburg]] ended on 11 November with Ney's capture of the fortress. Isolated Prussian resistance remained, but Napoleon's primary foe was now Russia, and the [[Battle of Eylau]] and the [[Battle of Friedland]] awaited. ||| Aftermath ||| ||| +0 Battle of Jenin ||| Battle of Stalingrad ||| PLO Chairman [[Yasser Arafat]], who left the [[Mukataa|compound]] in Ramallah for the first time in five months on May 14, 2002 to visit Jenin and other West Bank cities affected in Operation Defensive Shield, praised the refugees' endurance and compared the fighting to the [[Battle of Stalingrad]]. ||| Invasion aftermath ||| Military analyses ||| +0 Battle of Jerusalem ||| Battle of Cambrai (1917) ||| The enormous territorial gains of the Palestine offensive contrasted with the British Expeditionary Force's offensive on the [[Western Front (World War I)|Western Front]] at [[Battle of Cambrai (1917)|Cambrai]]. Fought in Flanders from 20 to 30 November, it ended with heavy losses and no gains. ||| Aftermath ||| Summation of campaign ||| +0 Battle of Jerusalem ||| Third Battle of Gaza ||| This series of battles was successfully fought by the [[British Empire]]'s [[XX Corps (United Kingdom)|XX Corps]], [[XXI Corps (United Kingdom)|XXI Corps]], and the [[Desert Mounted Corps]] against strong opposition from the [[Yildirim Army Group]]'s [[Seventh Army (Ottoman Empire)|Seventh Army]] in the Judean Hills and the [[Eighth Army (Ottoman Empire)|Eighth Army]] north of Jaffa on the Mediterranean coast. The loss of Jaffa and Jerusalem, together with the loss of {{convert|50|mi|km}} of territory during the [[Egyptian Expeditionary Force]] (EEF) advance from [[Gaza City|Gaza]], after the capture of [[Battle of Beersheba (1917)|Beersheba]], [[Third Battle of Gaza|Gaza]], [[Battle of Hareira and Sheria|Hareira and Sheria]], [[Battle of Tel el Khuweilfe|Tel el Khuweilfe]] and the [[Battle of Mughar Ridge]], constituted a grave setback for the [[Ottoman Army]] and the [[Ottoman Empire]]. ||| ||| ||| +0 Battle of Kakarong de Sili ||| Battle of San Juan del Monte ||| When the revolution began at Balintawak, Katipuneros to the north of [[Manila]], in the central plains aimed to join in the fight, but after an unsuccessful [[Battle of San Juan del Monte|battle]] with Spanish forces and Bonifacio, the central luzon Katipuneros lost heart and postponed most of their revolts. However, in Pandi, Bulacan and San Isidro, Nueva Ecija, the revolution had heated up. The Katipuneros in Bulacan established the Kakarong Republic and build a fort in the Real de Kakarong area. Sources say that it was like a miniature city, according to the biography of [[Gregorio del Pilar]] (then at the time a officer of the military forces of the Kakarong area), entitled 'Life and Death of a Boy General' written by [[Teodoro Kalaw]], a fort was constructed at 'Kakarong de Sili' that was like a miniature city. It had streets, an independent police force, a military band, a military arsenal with factories for bolos and field artillery, and repair shops for rifles and cartridges. The Kakarong Republic had a complete set of officials, with Canuto Villanueva as Supreme Chief and Captain General of the military forces, and [[Eusebio Roque]], also known by his nom-de-guerre 'Maestrong Sebio', then head of the Katipunan local organization (''Balangay Dimas-Alang'' serving the town of [[Pandi, Bulacan]]), as Brigadier General of the Army of the Republic. ||| Background ||| ||| +0 Battle of Kamdesh ||| Battle of Ap Bac ||| After an investigation, four officers in the chain of command were disciplined for their failure to adequately support the base. Eight aviators were awarded the Distinguished Flying Cross for helping defend the base. Staff Sergeant [[Clinton Romesha]] and Staff Sergeant [[Ty Carter]] were awarded the Medal of Honor for their actions during the battle. The Battle of Kamdesh was the first battle since the [[Battle of Ap Bac]] in 1963 for which two living Americans were awarded the Medal of Honor. ||| ||| ||| +0 Battle of Kasserine Pass ||| Allied invasion of Sicily ||| On March 6, Major General [[George S. Patton]] was temporarily removed from planning for the [[Allied invasion of Sicily]] to command II Corps. Bradley was appointed assistant Corps Commander and moved up to command of II Corps when Patton returned to planning for Sicily. Fredendall was reassigned to the United States and several other commanders were removed or promoted out of the way. Patton was not known for hesitancy and did not bother to request permission when taking action to support his command or other units requesting assistance. During the advance from [[Gafsa]], General Alexander had given detailed orders to Patton, afterwards changing II Corps' mission several times. Once beyond Maknassy, Alexander again gave orders Patton considered excessively detailed. From then on, Patton simply ignored those parts of mission orders he considered ill-advised on grounds of military expediency and/or a rapidly evolving tactical situation. ||| Aftermath ||| ||| +0 Battle of Katia ||| Battle of Romani ||| However, the Imperial reaction to these attacks was to double the strength of their forces. The [[2nd Light Horse Brigade]], and the [[New Zealand Mounted Rifles Brigade]], were sent to Katia and Romani and established a strong Imperial presence over the contested ground. Soon after, the Australian [[1st Light Horse Brigade]] was also sent forward, and the [[52nd (Lowland) Division]] arrived at Romani not long after. At the beginning of August, the [[Battle of Romani]] was fought over much of the same ground as that at Katia. ||| ||| ||| +0 Battle of Kehl (1796) ||| Siege of Kehl (1733) ||| Although separated politically and geographically, the fates of Kehl, a village on the eastern shore of the Rhine in [[Baden-Durlach]], and those of the [[Alsace|Alsatian]] city of [[Strasbourg]], on the western shore, were united by the presence of bridges and a series of gates, fortifications and [[Barrage (dam)|barrage dam]]s that allowed passage across the river. In the 1790s, the Rhine was wild, unpredictable, and difficult to cross, in some places more than four or more times wider than it is in the twenty-first century, even under non-flood conditions. Its channels and tributaries wound through marsh and meadow and created islands of trees and vegetation that were alternately submerged by floods or exposed during the dry seasons. The fortifications at Kehl and Strasbourg had been constructed by the fortress architect [[Sébastien Le Prestre de Vauban|Sébastien le Préstre de Vauban]] in the seventeenth century. The crossings had been contested before: in 1678 during the French-Dutch war, in [[Siege of Kehl (1703)|1703]] during the [[War of the Spanish Succession]] and in [[Siege of Kehl (1733)|1733]] during the [[War of the Polish Succession]]. Critical to success of the French plan would be the army's ability to cross the Rhine at will. Consequently, control of the crossings at [[Hüningen]], near the Swiss city of [[Basle|Basel]], and at Kehl, would give them ready access to most of southwestern Germany; from there, French armies could sweep north, south, or east, depending on their military goal. ||| ||| ||| +0 Battle of Khotyn (1673) ||| Battle of Vienna ||| [[Polish-Lithuanian Commonwealth|Polish-Lithuanian]] forces and Wallachian regiments were 30 thousand strong. The Turks commanded 35 thousand troops and 120 guns. In this battle rockets of [[Kazimierz Siemienowicz]] were deployed successfully. The victory allowed the Poles to revoke the unfavourable Peace of Buczacz and set the stage for the role Sobieski was to play in the [[Battle of Vienna]] in 1683. ||| ||| ||| +0 Battle of Kilkis–Lahanas ||| Battle of Doiran (1913) ||| The defeat of the 2nd Army by the Greeks was the most serious military disaster suffered by the Bulgarians in the 2nd Balkan war. To these Greeks suffered 8,828 casualties. On the Bulgarian right [[Evzones]] captured [[Gevgelija]] and the heights of Matsikovo. As a consequence the Bulgarian line of retreat through Doiran was threatened and Ivanov's army began a desperate retreat which at times threatened to become a rout. Reinforcements came too late and joined the retreat towards Strumica and the Bulgarian border. The Greeks captured [[Battle of Doiran (1913)|Dojran]] on 5 July but were unable to cut off the Bulgarian retreat through [[Struma Pass]]. On 11 July the Greeks came in contact with the Serbs and then pushed on up the [[Struma River]] until they reached [[Kresna Gorge]] on 24 July. ||| Aftermath ||| ||| +0 Battle of Kinburn (1855) ||| Battle of Sinop ||| The battle, although insignificant to the outcome of the war altogether, is notable as an early success of [[ironclad warship]]s. Although frequently hit, the French ships destroyed the Russian forts within four hours, suffering minimal casualties in the process. This battle, as well as the [[Battle of Sinop]], convinced contemporary navies to abandon wooden warships and focus on armor plating. ||| ||| ||| +0 Battle of Kleisoura Pass ||| Battle of Vevi (1941) ||| |battles=[[Battle of Metaxas Line|Metaxas Line]] - [[Battle of Pisoderi Pass|Pisoderi Pass]] - [[Battle of Vevi (1941)|Vevi]] - [[Battle of Ptolemaida|Ptolemaida]] - Kleisoura Pass - [[Battle of Siatista Pass|Siatista Pass]] - [[Battle of Lake Kastoria|Lake Kastoria]] - [[Battle of Servia|Servia]] - [[Battle of Olympus (1941)|Olympus]] - [[Battle of Thermopylae (1941)|Thermopylae]] - [[Battle of Corinth Canal|Corinth Canal]] ||| ||| ||| +0 Battle of Kobryń ||| Battle of Wizna ||| After breaking through the Polish defences in the [[Battle of Wizna]], the German forces under general Heinz Guderian started to make their way towards [[Brzesc Litewski|Brześć]], [[Kowel]] and [[Kobryn|Kobryń]]. Their aim was to cut the Polish territory in two parts and paralyse the Polish attempts to organise a line of defence east of the [[Bug River]]. ||| Eve of the battle ||| ||| +0 Battle of Kolombangara ||| Battle of Kula Gulf ||| Though at a severe cost, Ainsworth also accomplished his mission of preventing an attack on the Marines, and combined with the earlier [[Battle of Kula Gulf]], successfully deterred the Japanese from future use of Kula Gulf in reinforcing Munda. After the Battle of Kolombangara, the Japanese chose to use [[Vella Gulf]], [[Blackett Strait]], and the more constricted passage at [[Wana Wana]], resulting in a series of nightly attacks by U.S. destroyers and [[PT boat]]s against their reinforcement efforts. ||| Aftermath ||| ||| +0 Battle of Krasnokutsk–Gorodnoye ||| Siege of Veprik ||| During the end of the 17th century [[Russia]], [[Denmark-Norway]], [[Saxony]] and [[Polish-Lithuanian Commonwealth]] formed an allegiance against the [[Swedish Empire]] in order to regain what was lost in earlier wars. However, three of the original four nations were defeated in the span of seven years, leaving only Russia to stand up against the Swedish invasions. In 1707 Charles XII began his campaign of Russia and strove through victories as [[Battle of Holowczyn|Holowczyn]] – 1708 and the siege of [[Siege of Veprik|Veprik]] – 1708, but also through setbacks as the Swedish defeat at [[Battle of Lesnaya|Lesnaya]] – 1708. Charles reached the outskirts of Krasnokutsk not long after Veprik and there encountered a small force of Russians which he engaged and managed to take several prisoners who told him that Rönne would be close-by Krasnokutsk with about 5,000 dragoons. He then began his march there. ||| Prelude ||| ||| +0 Battle of Kuala Lumpur ||| Battle of Singapore ||| Little is known about the battle, since it did not bear much significance when compared to greater battles in British Malaya such as the [[Battle of Singapore]]. This piece of history was slowly forgotten by people, as Kuala Lumpur advances to being a global metropolis. ||| Aftermath ||| ||| +0 Battle of Kunlun Pass ||| Second Sino-Japanese War ||| In this battle, the [[National Revolutionary Army]] used the largest recorded number of [[tank]]s in the [[Second Sino-Japanese War]]. ||| ||| ||| +0 Battle of Kusonje ||| Siege of Bjelovar Barracks ||| The fate of the reconnaissance platoon was not known to Croatian authorities for months, adding fuel to an already volatile atmosphere in the city of Bjelovar, where the ambushed unit was originally based. This tension erupted a week later with the [[Siege of Bjelovar Barracks|blockade and capture of]] the [[Yugoslav People's Army]] ({{lang-sr|''Jugoslovenska Narodna Armija''}} – JNA) barracks in [[Bjelovar]]. ||| ||| ||| +0 Battle of Kyongju ||| Battle of Masan ||| When the North Koreans approached the Pusan Perimeter on August 5, they attempted the same frontal assault technique on the four main avenues of approach into the perimeter. Throughout August, the [[NK 6th Division]], and later the [[NK 7th Division]] engaged the [[US 25th Infantry Division]] at the [[Battle of Masan]], initially repelling a UN [[counteroffensive]] before countering with battles at [[Battle of Komam-ni|Komam-ni]] ||| Background ||| Pusan Perimeter ||| +0 Battle of La Ciotat ||| Battle of Port Cros ||| On 17 August 1944, the Allied command appointed [[Captain (naval)|Captain]] [[John D. Bulkeley]] to take charge of the operation. Bulkeley proceeded to La Ciotat with a force of one [[destroyer]], {{USS|Endicott|DD-495|6}}, 17 [[PT boat]]s and the British [[Insect class gunboat|Insect-class]] [[gunboat]]s [[Insect-class gunboat#Ships|HMS ''Scarab'']] and {{HMS|Aphis|1915|2}}. When the Allies arrived off La Ciotat, the PT boats and gunboats were sent in ahead of ''Endicott'' and sank a German merchant steamer in the harbor. The warships then bombarded targets in the city until two German ships were spotted. They were the former Italian [[Gabbiano-class corvette]] ''Antilope'', renamed ''UJ6082'' and the former [[Egypt]]ian [[Auxiliary cruiser|armed yacht]] ''Nimet Allah''. ''UJ6073'' was armed with one {{convert|3.9|in|mm|abbr=on}} gun and two torpedo tubes. Her [[sister ship]] ''UJ6081'' had been sunk two days earlier at the [[Battle of Port Cros]]. The yacht mounted only a German [[Anti-aircraft warfare|anti-aircraft]]/[[anti-tank warfare|anti-tank]] [[8.8 cm Flak 18/36/37/41|{{convert|88|mm|in|2|abbr=on}} Flak gun]]. ||| Battle ||| ||| +0 Battle of La Marfée ||| English Civil War ||| Since 1636 prominent members of the French nobility had been plotting against Richelieu. While some of them fled to [[London]] and tried to gain support from King [[Charles I of England|Charles I]] till the outbreak of the [[English Civil War]], ||| Background ||| ||| +0 Battle of Ladysmith ||| Battle of Elandslaagte ||| On 20 October, two Boer forces attacked Penn-Symons' detachment at Dundee but were driven back at the [[Battle of Talana Hill]]. The British suffered heavy casualties (including Penn-Symons, who was mortally wounded) and were cut off from Ladysmith by another Boer force which captured a railway station at Elandslaagte which lay between them. On 21 October, British troops under Colonel Ian Hamilton and White's cavalry commander, Colonel [[John French, 1st Earl of Ypres|John French]], recaptured the station in the [[Battle of Elandslaagte]]. White was unable to follow up this success by relieving Penn-Symons's force (now commanded by Brigadier General J.H. Yule) as he feared that {{formatnum:6000}} Boers from the Orange Free State were about to attack Ladysmith. This decision highlighted Ladysmith's exposed position. ||| Outbreak of war ||| ||| +0 Battle of Lake Borgne ||| Fort Bowyer ||| The defeat of the British attack in September on [[Fort Bowyer]] prevented the British from taking [[Mobile, Alabama]], and moving to cut off U.S. trade via land towards the [[Mississippi River]]. Next, the British decided to attack New Orleans and the Americans began receiving warnings of a British fleet approaching [[Louisiana]]. The warnings reached Commodore [[Daniel Patterson]] of the [[New Orleans Squadron]], who immediately began to assemble any and all types of naval defenses to protect the state's waterways and naval ports. ||| Background ||| ||| +0 Battle of Lang Son (1979) ||| Vietnam War ||| Meanwhile, the Vietnamese defense in Lạng Sơn was assigned to the 3rd Division, a veteran division of the VPA that had participated extensively during the [[Vietnam War]]. The division had about 9,950 men, assisted by several local force battalions from Lạng Sơn City and [[Văn Lãng District|Văn Lãng]] and [[Cao Lộc District]]s, as well as the 166th Artillery Regiment and the 272nd Anti-Aircraft Regiment sent from the [[1st Military Region (Vietnam People's Army)|1st Military Region]]. The total Vietnamese strength was approximately 13,000 men, meaning that they were outnumbered 10 to 1. ||| Preparations ||| ||| +0 Battle of Lanzerath Ridge ||| Battle of Elsenborn Ridge ||| On December 11, General [[Walter M. Robertson]], commander of the battle-hardened 2nd Infantry Division, was ordered to attack and seize the [[Roer River]] dams. In case he had to pull back, he chose [[Battle of Elsenborn Ridge|Elsenborn Ridge]] as his defensive line. General [[Walter E. Lauer]], commanding the 99th Infantry Division, was charged with building up the defenses around Elsenborn Ridge. Lauer knew his front was very long and very thinly manned; he gave instructions to his division's soldiers to dig in and build cover for their foxholes. ||| Background ||| ||| +0 Battle of Le Cateau ||| Battle of Mons ||| The '''Battle of Le Cateau''' was fought on 26 August 1914, after the [[United Kingdom of Great Britain and Ireland|British]] and [[France|French]] retreated from the [[Battle of Mons]] and had set up defensive positions in a fighting withdrawal against the German advance at [[Le Cateau-Cambrésis]]. ||| ||| ||| +0 Battle of Leipzig ||| Battle of Borodino ||| The [[Emperor of the French|French Emperor]] [[Napoleon I]] attempted to militarily coerce Tsar [[Alexander I of Russia|Alexander I]] of [[Imperial Russia|Russia]] into rejoining his unpopular [[Continental System]] by [[Napoleon's invasion of Russia|invading Russia]] with about 650,000 troops, collectively known as the ''[[Grande Armée]]'', and eventually occupied [[Moscow]] in late 1812, after the bloody yet indecisive [[Battle of Borodino]]. However, the Russian Tsar refused to surrender even as the French occupied the city, which was burnt by the time of its occupation. The campaign ended in complete disaster as Napoleon and his remaining forces retreated during the bitterly cold Russian winter, with sickness, starvation, and the constant harrying of Russian [[Cossacks|Cossack]] marauders and partisan forces leaving the Grande Armée virtually destroyed by the time it exited Russian territory. Making matters even worse for Napoleon, in June 1813 the combined armies of Great Britain, Portugal, and Spain, under the command of Britain's [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]], had decisively routed French forces at the [[Battle of Vitoria]] in the [[Peninsular War]], and were now advancing towards the Pyrenees and the Franco-Spanish border. With this string of defeats, the armies of France were in retreat on all fronts across Europe. ||| Background ||| ||| +0 Battle of Leipzig ||| Battle of Paris (1814) ||| With the German states of the [[Confederation of the Rhine]] defecting to the Coalition cause and Prussia officially once again becoming one of the continent's great powers after their [[War of the Fourth Coalition|severe setbacks]] of 1806, the Coalition army pressed its advantage and invaded France in early 1814 as the Tsar commanded. Though Napoleon repeatedly engaged some of their units during his [[Campaign in north-east France (1814)|counter-offensive campaign]], he was eventually forced from the throne of France after Paris [[Battle of Paris (1814)|fell to the Coalition]] and exiled to the island of [[Elba]]; the First French Empire capitulated for the first time. ||| Aftermath ||| ||| +0 Battle of Leipzig ||| Campaign in north-east France (1814) ||| With the German states of the [[Confederation of the Rhine]] defecting to the Coalition cause and Prussia officially once again becoming one of the continent's great powers after their [[War of the Fourth Coalition|severe setbacks]] of 1806, the Coalition army pressed its advantage and invaded France in early 1814 as the Tsar commanded. Though Napoleon repeatedly engaged some of their units during his [[Campaign in north-east France (1814)|counter-offensive campaign]], he was eventually forced from the throne of France after Paris [[Battle of Paris (1814)|fell to the Coalition]] and exiled to the island of [[Elba]]; the First French Empire capitulated for the first time. ||| Aftermath ||| ||| +0 Battle of Leipzig ||| War of the Third Coalition ||| With the three monarchs of the continental Coalition powers, Tsar [[Alexander I of Russia]] being at the head of the three along with King [[Frederick William III]] of Prussia and Emperor [[Francis II, Holy Roman Emperor|Francis I]] of Austria, present in the field, a substantial staff supported the Coalition commanders. Tsar Alexander I was also the supreme commander of all Coalition forces in the eastern front of the war, while Prince Schwarzenberg of Austria was the commander-in-chief of all Coalition forces in the German theatre. For the Tsar, this was the second time that he had filled in as a battlefield commander since [[Battle of Austerlitz|Austerlitz]] almost a decade prior during the [[War of the Third Coalition]]. Initially, the command was plagued with incompetence and petty rivalries in conflict with each other and its operations were prone to the vanities of the monarchs, especially from the Russian emperor, but these largely evaporated as the battle raged on, with the command largely centering on the two main commanders during the battle. ||| Preparations ||| Coalition's plans ||| +0 Battle of Lemnos (1913) ||| Battle of Elli ||| Following the loss of a number of [[Aegean Islands]] to Greece during the first phase of the war in 1912, and its first defeat at the [[Naval Battle of Elli|Battle of Elli]], the Ottoman Navy sought to check Greek progress by destroying the Greek fleet docked at the port of [[Moudros]], [[Lemnos]]. However, it faced the problem of countering the Greek flagship, the {{ship|Greek cruiser|Georgios Averof||2}}, which had already defeated them at [[Naval Battle of Elli|Elli]]. The Ottomans developed the plan to slip a fast cruiser through the Greek patrols for a raiding mission in the Aegean, hoping to draw off some Greek ships, possibly even the ''Georgios Averof'' itself, in pursuit, leaving the remainder weakened for the Ottoman fleet to attack. Indeed, the cruiser {{ship|Ottoman cruiser|Hamidiye||2}} evaded the Greek lookout ships on the night of 13/14 January 1913, and sunk a Greek transport ship at [[Syros]] the next day, also bombarding the island's harbour. This action caused concern in Athens, and an order was sent to the Fleet, commanding it to 'sail immediately in pursuit'. Admiral [[Pavlos Kountouriotis|Kountouriotis]] refused to obey, suspecting an Ottoman trap, and instead prepared for the inevitable exit of the Ottoman Fleet from the [[Dardanelles]] Straits. ||| Prelude ||| ||| +0 Battle of Leros ||| Battle of Crete ||| After the [[Battle of Greece|fall of Greece]] in April 1941 and the [[Allies of World War II|Allied]] [[Battle of Crete|loss]] of the island of [[Crete]] in May, Greece and its many islands were [[Axis Occupation of Greece|occupied]] by [[Nazi Germany|German]] and Italian forces. With the [[Armistice with Italy|surrender of Italy]] on 8 September 1943 however, the Greek islands, which were seen as strategically vital by [[Winston Churchill|Churchill]], became reachable for the first time since the loss of Crete. ||| Background ||| ||| +0 Battle of Leuctra ||| Battle of Chaeronea (338 BC) ||| [[Battle of Delium]]. Further, [[Philip II of Macedon]], who studied and lived in Thebes, was no doubt heavily influenced by the battle to develop his own, highly effective approach to tactics and armament. In turn, his son [[Alexander the Great|Alexander]] would go on to develop his father's theories to an entirely new level. Many innovations of Philip and Alexander are traced to this battle. Concentration of force, refused flank and combined arms are tactics that they used in many of their battles. Philip's victories against the Illyrians and at [[Battle of Chaeronea (338 BC)|Chaeronea]] and Alexander's triumphs at [[Battle of the Granicus|the Granicus]], [[Battle of Issus|Issus]], [[Battle of Gaugamela|Gaugamela]], and [[Battle of the Hydaspes|the Hydaspes]] owe credit to the tactical manoeuver used to vanquish the Spartans. ||| Historical significance ||| ||| +0 Battle of Leuctra ||| Battle of Delium ||| [[Battle of Delium]]. Further, [[Philip II of Macedon]], who studied and lived in Thebes, was no doubt heavily influenced by the battle to develop his own, highly effective approach to tactics and armament. In turn, his son [[Alexander the Great|Alexander]] would go on to develop his father's theories to an entirely new level. Many innovations of Philip and Alexander are traced to this battle. Concentration of force, refused flank and combined arms are tactics that they used in many of their battles. Philip's victories against the Illyrians and at [[Battle of Chaeronea (338 BC)|Chaeronea]] and Alexander's triumphs at [[Battle of the Granicus|the Granicus]], [[Battle of Issus|Issus]], [[Battle of Gaugamela|Gaugamela]], and [[Battle of the Hydaspes|the Hydaspes]] owe credit to the tactical manoeuver used to vanquish the Spartans. ||| Historical significance ||| ||| +0 Battle of Leuctra ||| Battle of the Granicus ||| [[Battle of Delium]]. Further, [[Philip II of Macedon]], who studied and lived in Thebes, was no doubt heavily influenced by the battle to develop his own, highly effective approach to tactics and armament. In turn, his son [[Alexander the Great|Alexander]] would go on to develop his father's theories to an entirely new level. Many innovations of Philip and Alexander are traced to this battle. Concentration of force, refused flank and combined arms are tactics that they used in many of their battles. Philip's victories against the Illyrians and at [[Battle of Chaeronea (338 BC)|Chaeronea]] and Alexander's triumphs at [[Battle of the Granicus|the Granicus]], [[Battle of Issus|Issus]], [[Battle of Gaugamela|Gaugamela]], and [[Battle of the Hydaspes|the Hydaspes]] owe credit to the tactical manoeuver used to vanquish the Spartans. ||| Historical significance ||| ||| +0 Battle of Leyte ||| Battle of Ormoc Bay ||| On 23 October, the approach of the enemy surface vessels was detected. US naval units moved out to intercept, and the air and naval [[Battle of Leyte Gulf]]—the largest naval battle in the Pacific {{rp|70}} and also one of the [[largest naval battle in history|largest naval battles in history]] —was fought from 23-26 October—the Japanese suffered a decisive defeat. Nonetheless by 11 December, the Japanese had succeeded in moving more than 34,000 troops to Leyte and over {{convert|10000|ST|t|lk=on|abbr=on}} of materiél, most through the port of Ormoc on the west coast, despite heavy losses to reinforcement convoys, including engagements at [[Battle of Ormoc Bay|Ormoc Bay]], because of relentless air interdiction missions by US aircraft. ||| Battle ||| Japanese counterattacks ||| +0 Battle of Lima Site 85 ||| Operation Pony Express ||| Personnel working at the TACAN site were supplied by weekly flights of the [[20th Special Operations Squadron]] based at Udorn RTAFB in Thailand operating under the codename [[Operation Pony Express]], using Lima Site 85, the {{convert|700|m|sp=us}} airstrip constructed by the [[Central Intelligence Agency]] (CIA) in the valley below. Hmong General [[Vang Pao]], who spearheaded the allied war effort against North Vietnamese and Pathet Lao forces in Military Region 2, was entrusted with the task of guarding the facility using the Hmong Clandestine Army alongside CIA-funded Thai [[Border Patrol Police]] forces. By late 1967, Lima Site 85's radar directed 55 per cent of all bombing operations against North Vietnam. ||| Background ||| ||| +0 Battle of Longewala ||| World War II ||| Notwithstanding the Indian victory, there were intelligence and strategic failures on both sides. India's intelligence failed to provide warning of such a large armoured force in the western sector. Moreover, the defending post was not heavily armed to neutralise the enemy. Finally, they did not push home the advantage by destroying the fleeing Pakistani tanks, while the IAF had them on the run. They did, however destroy or capture some 36 tanks, remaining one of the largest disproportionate tank casualties for one side in a single battle after [[World War II]]. ||| Aftermath ||| ||| +0 Battle of Lundy's Lane ||| Peninsular War ||| There had been much fighting at close quarters. Veteran British officers, who had fought against French armies in the [[Peninsular War]], were horrified at the carnage they had witnessed at Lundy's Lane. Drummond reported, '''Of so determined a Character were'' [the American] ''attacks directed against our guns that our Artillery Men were bayonetted by the enemy in the Act of loading, and the muzzles of the Enemy's Guns were advanced within a few Yards of ours'''. The battle confirmed that the American regular forces had evolved into a highly professional army. Scott is widely credited for this progress, having modelled and trained his troops using [[French Revolutionary Army]] drills and exercises, although not all the American units present at Lundy's Lane had benefitted from his personal training. ||| Outcome and analysis ||| ||| +0 Battle of Machias ||| Battle of Machias (1777) ||| The people of Machias went on to capture additional British ships, and [[Battle of Machias (1777)|fought off the landing]] of a large force intended to take control of the town in 1777. [[Privateer]]s and others operating out of Machias continued to be a thorn in the British Navy's side throughout the war. ||| ||| ||| +0 Battle of Machias (1777) ||| Battle of Machias ||| The small community of [[Machias, Maine|Machias]], located in the [[District of Maine|eastern district]] of [[Massachusetts]] that is now the state of [[Maine]], was a persistent thorn in the side of British naval authorities since the start of the [[American Revolutionary War]]. In June 1775 its citizens rose up and [[Battle of Machias|seized a small naval vessel]], and the community had ever since been a base for [[privateering]]. ||| Background ||| ||| +0 Battle of Madagascar ||| Indian Ocean raid ||| Following the Japanese conquest of [[South East Asia]] east of [[Burma]] by the end of February 1942, submarines of the [[Imperial Japanese Navy]] were moving freely throughout the north and eastern expanses of the [[Indian Ocean]]. In March 1942, Japanese aircraft carriers conducted the [[Indian Ocean raid]] upon shipping in the bay of Bengal and bases in [[Colombo]] and [[Trincomalee]] in [[Ceylon]]. This raid drove the [[British Eastern Fleet]] out of the area and they were forced to relocate to a new base at [[Kilindini]], near [[Mombasa]], in [[Kenya]]. ||| Background ||| Axis ||| +0 Battle of Magdhaba ||| Western Front (World War I) ||| The British [[War Office]]'s stated policy in October 1916 was to maintain offensive operations on the [[Western Front (World War I)|Western Front]], while remaining on the defensive everywhere else. ||| Background ||| British War Office policy ||| +0 Battle of Magierów ||| Deluge (history) ||| The '''Battle of Magierów''' took place on July 11, 1657, during the period in [[Poland|Polish]] history known as the [[Deluge (history)|Swedish Deluge]]. Polish army commanded by [[Stefan Czarniecki]], and supported by [[Crimean Tatars]], defeated a Transilvanian-Cossack-Moldavian-Wallachian army of [[George II Rakoczi]]. ||| ||| ||| +0 Battle of Majuba Hill ||| Battle of Schuinshoogte ||| * Coupled with the defeats at [[Battle of Laing's Nek|Laing's Nek]] and [[Battle of Schuinshoogte|Schuinshoogte]], this third crushing defeat at the hands of the Boers ratified the strength of the Boers in the minds of the British, arguably to have consequences in the [[Second Anglo-Boer War]]. 'Remember Majuba' became a rallying cry. ||| Notability ||| ||| +0 Battle of Malakoff ||| Battle of Kinburn (1855) ||| Even on the far left, at the opposite flagstaff and central bastions, there was severe hand-to-hand fighting. Throughout the day the bombardment mowed down the massed Russian soldiers along the whole line. The fall of the Malakoff was the end of the siege of the city. That night the Russians flied over the bridges to the north side, and on 9 September the victors took possession of the empty and burning city. The losses in the last assault had been very heavy: for the Allies over 10,000 men, for the Russians 13,000. At least nineteen generals had fallen on the final day and with the capture of Sevastopol the war was decided. No serious operations were undertaken against Gorchakov who, with the field army and the remnants of the garrison, held the heights at Mackenzie's Farm. But [[Battle of Kinburn (1855)|Kinburn]] was attacked by sea and, from the naval point of view, became the first instance of the employment of [[Ironclad warship]]s. An armistice was agreed upon on 26 February and the [[Treaty of Paris (1856)|Treaty of Paris]] was signed on 30 March 1856. ||| Battle ||| ||| +0 Battle of Malvern Hill ||| United States presidential election, 1864 ||| In the course of four hours, a series of blunders in planning and communication had caused Lee's forces to launch three failed frontal infantry assaults across hundreds of yards of open ground, unsupported by Confederate artillery, charging toward firmly entrenched Union infantry and artillery defenses. These errors provided Union forces with an opportunity to inflict heavy casualties. In the aftermath of the battle, however, the Confederate press heralded Lee as the savior of Richmond. In stark contrast, McClellan was accused of being absent from the battlefield, a harsh criticism that haunted him when he [[United States presidential election, 1864|ran for president in 1864]]. ||| ||| ||| +0 Battle of Marathon ||| Battle of Thermopylae ||| The Persian strategy, on the other hand, was probably principally determined by tactical considerations. The Persian infantry was evidently lightly armoured, and no match for hoplites in a head-on confrontation (as would be demonstrated at the later battles of [[Battle of Thermopylae|Thermopylae]] and [[Battle of Plataea|Plataea]]. ||| Strategic and tactical considerations ||| ||| +0 Battle of Marston Moor ||| Siege of Hull (1643) ||| Newcastle sent some of his army south into [[Lincolnshire]], as part of a planned 'three-pronged' advance on London, but was forced to [[Siege of Hull (1643)|besiege Hull]] with most of his forces. The siege failed, as the Parliamentarian navy could supply and reinforce the port and the garrison flooded wide areas around the city, while the Royalist detachments sent into Lincolnshire were defeated at the [[Battle of Gainsborough]] and the [[Battle of Winceby]]. ||| Background ||| The civil war in the north ||| +0 Battle of Mauropotamos ||| Muslim conquest of Sicily ||| The Abbasids were unable to exploit their success due to the internal instability of the Caliphate. Likewise, the Byzantines preferred to focus their strength against the [[Muslim conquest of Sicily|ongoing conquest]] of [[Sicily]] by the [[Aghlabids]]. Thus, a Byzantine embassy was sent to [[Baghdad]] in 845, which was warmly received. The Abbasids reciprocated with an embassy to Constantinople, where the two states agreed on a truce and a [[Arab–Byzantine prisoner exchanges|prisoner exchange]], which was held at the river [[Lamos (Cilicia)|Lamos]] on 16 September 845. A winter raid by the Arab governor of Tarsus shortly after failed disastrously, after which the Arab-Byzantine frontier remained quiet for six years. ||| Aftermath ||| ||| +0 Battle of Maya ||| Battle of Vitoria ||| After [[Arthur Wellesley, 1st Duke of Wellington|Wellington's]] decisive defeat of [[Joseph Bonaparte|King Joseph]] at [[Battle of Vitoria|Vitoria]], he advanced to capture [[San Sebastián]] and [[Pamplona]], the last French outposts on Spanish soil. ||| Background ||| ||| +0 Battle of Megiddo (1918) ||| Battle of Mughar Ridge ||| General Edmund Allenby had been appointed to succeed Murray in command of the EEF, and was encouraged to renew the offensive. After receiving reinforcements, he broke through the Ottoman defences in the [[Third Battle of Gaza]] and defeated an Ottoman attempt to make a stand to the north at the [[Battle of Mughar Ridge]]. Despite Ottoman counter-attacks, the EEF [[Battle of Jerusalem (1917)|captured Jerusalem]] in the second week in December 1917. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Battle of Rafa ||| The [[Allies of World War I|Entente Powers]] had declared war on the Ottoman Empire in November 1914. In early 1915 and in August 1916 the Ottomans, with German commanders, aid and encouragement, had attacked the [[Suez Canal]], a vital link between Britain and India, Australia and New Zealand. Under General [[Archibald Murray]], the British [[Egyptian Expeditionary Force]] (EEF) stopped the Ottoman army at the [[Battle of Romani]] and drove them back to [[Battle of Magdhaba|Magdhaba]] and across the Sinai to [[Battle of Rafa|Rafa]] to reoccupy Egyptian territory and secure the safety of the Suez Canal. Having constructed a railway and water pipeline across the desert, Murray then attacked southern Palestine. In the [[First Battle of Gaza]] and the [[Second Battle of Gaza]] in March and April 1917, the British attacks were defeated. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Battle of Sharon ||| The Battle of [[Tel Megiddo|Megiddo]] was the final Allied offensive of the [[Sinai and Palestine Campaign]] of the [[First World War]]. The contending forces were the [[Allies of World War I|Allied]] [[Egyptian Expeditionary Force]], of three [[corps]] including one of mounted troops, and the [[Ottoman Empire|Ottoman]] [[Yildirim Army Group]] which numbered three [[Field army|armies]], each the strength of barely an Allied corps. The series of battles took place in what was then the central and northern parts of Ottoman [[Palestine (region)|Palestine]] and parts of present-day [[Israel]], [[Syria]] and [[Jordan]]. After forces of the [[Arab Revolt]] attacked the Ottoman lines of communication, distracting the Ottomans, British and [[British Indian Army|Indian]] infantry [[Division (military unit)|division]]s attacked and broke through the Ottoman defensive lines in the sector adjacent to the coast in the set-piece [[Battle of Sharon (1918)|Battle of Sharon]]. The [[Desert Mounted Corps]] rode through the breach and almost [[encirclement|encircled]] the Ottoman [[Eighth Army (Ottoman Empire)|Eighth]] and [[Seventh Army (Ottoman Empire)|Seventh Armies]] still fighting in the Judean Hills. The subsidiary [[Battle of Nablus (1918)|Battle of Nablus]] was fought virtually simultaneously in the Judean Hills in front of [[Nablus]] and [[Third Transjordan attack (1918)|at crossings]] of the [[Jordan River]]. The Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was subsequently attacked in the Hills of [[Moab]] at [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 Battle of Membrillar ||| First Battle of Talca ||| Prior to the [[First Battle of Talca|fall of Talca]] in early March, [[Juan Mackenna]] had been positioned along the [[Itata River|Itata river]] with a small division of patriot troops, whilst [[Bernardo O'Higgins]] had remained with the main body of the army in [[Concepción, Chile|Concepción]]. After [[Talca]] fell to Royalist forces, however, [[Juan Mackenna|Mackenna]] realised his lines of communication with [[Bernardo O'Higgins|O'Higgins]] were now cut and that he was isolated. [[Juan Mackenna|Mackenna]], the colonel of engineers on the patriot General Staff, formed a solid defensive position, building three mutually supporting [[bastion]]s on local hills on the north bank of the north side of the [[Itata River|Itata river]] near Membrillar. The Royalist commander, [[Gabino Gaínza]], had sent a vanguard of 400 men into the hills of [[Quilo]], south of the [[Itata River|Itata river]], to prevent the two patriot commanders from reuniting. This force had been defeated in the [[Battle of El Quilo]] on the 19 March, forcing [[Gabino Gaínza|Gaínza]] to attempt a different plan. [[Gabino Gaínza|Gaínza]] instead decided to attack [[Juan Mackenna|Mackenna]]'s forces immediately, before then turning on [[Bernardo O'Higgins|O'Higgins]]. [[Chillán]] sent additional reinforcements, and [[Gabino Gaínza|Gaínza]] then crossed the [[Itata River|Itata]] to attack. ||| Background ||| ||| +0 Battle of Memel ||| Gumbinnen Operation ||| The success of the offensive in the northern sector encouraged the Soviet command to authorise the 3rd Belorussian Front to attempt to break through into the main area of East Prussia. This offensive, the [[Gumbinnen Operation]], ran into extremely strong German resistance and was halted within a few days. ||| The offensive ||| ||| +0 Battle of Merdjayoun ||| Battle of Damour ||| The 2/5th Australian Field Regiment was also part of the relief column. Lieutenant [[Arthur Roden Cutler|Arthur Roden (later Sir Roden) Cutler]] repeatedly engaged enemy tanks, enemy infantry, enemy anti-tank, and enemy machine posts with his 25-pounder field gun, his Boyes anti-tank rifle, his Bren gun, or his .303 rifle. He later lost his leg during the [[Battle of Damour]], but was awarded the [[Victoria Cross]] for his actions at both Merdjayoun and [[Damour]]. Cutler is the only Australian artilleryman to ever been awarded the VC. ||| ||| ||| +0 Battle of Mile Hill ||| Second Battle of Bull Run ||| After the failure of Army of Northern Virginia to deliver a decisive blow to the [[Army of Virginia]] at the [[Battle of Ox Hill]] following the [[Second Battle of Bull Run]], [[Robert E. Lee]] decided it unwise to pursue the Federals any further towards their [[Arlington Line|fortifications]] near [[Washington D.C.]]. Instead, he planned to move into [[Loudoun County, Virginia|Loudoun County]] to obtain forage and provisions and to reorganize the army before his planned invasion of [[Maryland]]. ||| Background ||| ||| +0 Battle of Mine Run ||| Battle of Gettysburg ||| After the [[Battle of Gettysburg]] in July, Confederate [[Full General (CSA)|Gen.]] [[Robert E. Lee]] and his command [[Retreat from Gettysburg|retreated]] back across the [[Potomac River]] into [[Virginia]]. Union commander [[Major general (United States)|Maj. Gen.]] [[George G. Meade]] was widely criticized for failing to pursue aggressively and defeat Lee's army. Meade planned new offensives in Virginia for the fall. His first attempt was a series of inconclusive duels and maneuvers in October and November known as the [[Bristoe Campaign]]. ||| Background ||| ||| +0 Battle of Mobile Bay ||| Battle of Hampton Roads ||| ''Tennessee'' had been built on the [[Alabama River]] near the town of [[Selma, Alabama|Selma]]. Her guns were prepared under the direction of Commander [[Catesby ap Roger Jones]], who had commanded [[CSS Virginia|CSS ''Virginia'']] (ex-USS ''Merrimack'') in her famous duel with {{USS|Monitor|1862|6}} on March 9, 1862, the second day of the [[Battle of Hampton Roads]]. ||| Confederate defenses ||| Sea ||| +0 Battle of Mogadishu (1993) ||| Battle of Mogadishu (2006) ||| A U.S. Army force in Mogadishu, consisting primarily of [[75th Ranger Regiment|U.S. Army Rangers]] from Bravo Company, [[3rd Ranger Battalion (United States)|3rd Battalion]], [[75th Ranger Regiment (United States)|75th Ranger Regiment]]; C Squadron, 1st Special Forces Operational Detachment-Delta (1st SFOD-D), better known as '[[Delta Force]]'; as well as Air Force Combat Controllers and [[United States Air Force Pararescue|Air Force Pararescuemen]] and helicopters from 1st Battalion, [[160th Special Operations Aviation Regiment (Airborne)|160th Special Operations Aviation Regiment]], and an attached Naval Corpsman from Seal Team 4, attempted to seize two of Aidid's high-echelon lieutenants during a meeting in the city. Shortly after the assault began, Somali militia and armed civilian fighters shot down two UH-60 Black Hawk helicopters. The subsequent operation to secure and recover the crews of both helicopters drew the raid, intended to last no more than an hour, into an overnight standoff in the city. The battle resulted in 18 deaths, 73 wounded, and one helicopter pilot and Naval Corpsman (on BeachHead after EaE) captured among the U.S. raid party and rescue forces. At least one Pakistani soldier and one Malaysian soldier were killed as part of the rescue forces. American sources estimate between 1,500 and 3,000 Somali casualties, including civilians; [[Somali National Alliance|SNA]] forces claim only 315 killed, with 812 wounded. The battle is also referred to as the '''First Battle of Mogadishu''' to distinguish it from the [[Battle of Mogadishu (2006)|Second Battle of Mogadishu]] of 2006. ||| ||| ||| +0 Battle of Mogadishu (1993) ||| Rwandan Genocide ||| Fear of a repeat of the events in Somalia shaped U.S. policy in subsequent years, with many commentators identifying the Battle of Mogadishu's graphic consequences as the key reason behind the U.S.'s failure to intervene in later conflicts such as the [[Rwandan Genocide]] of 1994. According to the U.S.'s former deputy special envoy to Somalia, Walter Clarke: 'The ghosts of Somalia continue to haunt US policy. Our lack of response in [[Rwanda]] was a fear of getting involved in something like a Somalia all over again.' ||| Aftermath ||| Policy changes and political implications ||| +0 Battle of Mogadishu (1993) ||| Unified Task Force ||| On 3 March 1993, the [[Secretary-General of the United Nations|U.N. Secretary-General]] [[Boutros Boutros-Ghali]] submitted to the [[United Nations Security Council|U.N. Security Council]] his recommendations for effecting the transition from [[Unified Task Force|UNITAF]] to [[United Nations Operation in Somalia II|UNOSOM II]]. He indicated that since Resolution 794's adoption in December 1992, UNITAF's presence and operations had created a positive impact on Somalia's security situation and on the effective delivery of humanitarian assistance (UNITAF deployed some 37,000 personnel over forty percent of southern and central Somalia). However, there was still no effective government, police, or national army with the result of serious security threats to U.N. personnel. To that end, the Security Council authorized UNOSOM II to establish a secure environment throughout Somalia, to achieve national reconciliation so as to create a democratic state. ||| Background ||| Mission shift ||| +0 Battle of Mohács (1687) ||| Battle of Buda (1686) ||| The [[Great Turkish War]] began in July 1683 with an attack on Vienna by the Ottoman army. The siege was broken by the [[Battle of Vienna]] on 12 September 1683, won by the combined forces of the [[Holy Roman Empire|Holy Roman Empire of the German Nations]] and the [[Polish–Lithuanian Commonwealth]], under the overall command of the King of Poland, [[John III Sobieski]], who led the Polish forces. From September 1683 the initiative passed to the imperial troops. In the following years, the Imperial Habsburg armies under Charles of Lorraine drove the Osmans back, conquering from them many fortresses (such as [[Esztergom]], [[Vác]], [[Pest, Hungary|Pest]]). After the [[Battle of Buda (1686)|Battle of Buda]] they laid siege to and took over the former Hungarian capital of Buda. At the end of 1686, the Ottomans made peace overtures; however, the Imperial Habsburgs now saw a chance to conquer the whole of Hungary and the peace overtures were rejected. ||| Background ||| ||| +0 Battle of Moiry Pass ||| Battle of Faughart ||| Although Bruce had a large army, he was losing large amounts of forces at every battle he was involved in. By 1318, Bruce had only 2,000 men left. At the [[Battle of Faughart]], Bruce fought the lordship with all of his surviving men. Bruce was killed by John de Bermingham at the battle and Bruce was buried at a cemetery above Faughart. ||| Dundalk ||| ||| +0 Battle of Moore's Mill ||| Battle of Kirksville ||| The '''Battle of Moore's Mill''' was an [[American Civil War]] [[battle]] that took place in Central [[Missouri]] on July 28, 1862 along Auxvasse Creek near modern day [[Calwood Township, Callaway County, Missouri|Calwood]]. This engagement, the [[Battle of Kirksville]] a week later, and the [[Battle of Compton's Ferry]] would drive the main Southern recruiters from northern Missouri. ||| ||| ||| +0 Battle of Moreuil Wood ||| Spring Offensive ||| The '''Battle of Moreuil Wood''' (30 March 1918) was an engagement of [[World War I]] that took place on the banks of the [[Arve River]] in [[France]], where the [[Canadian Cavalry Brigade]] attacked and forced the German [[23rd Division (German Empire)|23rd Saxon Division]] to withdraw from Moreuil Wood, a commanding position on the river bank. This defeat at the hands of the Allies contributed to the halt of the German [[Spring Offensive]] of 1918. During the battle, a [[Victoria Cross]] was awarded to Canadian [[Gordon Flowerdew]] of [[Lord Strathcona's Horse]]. ||| ||| ||| +0 Battle of Moscow ||| Battle of Stalingrad ||| For the first time since June 1941, Soviet forces had stopped the Germans and driven them back. This resulted in Stalin becoming overconfident and deciding to further expand the offensive. On 5 January 1942, during a meeting in the Kremlin, Stalin announced that he was planning a general spring counteroffensive, which would be staged simultaneously near Moscow, Leningrad and in southern Russia. This plan was accepted over Zhukov's objections. Low Red Army reserves and Wehrmacht tactical skill led to a bloody stalemate near Rzhev, known as the '[[Battles of Rzhev|Rzhev meat grinder]]', and to a string of Red Army defeats, such as the [[Second Battle of Kharkov]], the failed attempt at elimination of the [[Demyansk pocket]], and the encirclement of General [[Andrey Vlasov|Vlasov]]'s army near Leningrad in a failed attempt to lift the [[Siege of Leningrad|siege of the city]]. Ultimately, these failures would lead to a successful German offensive in the south and to the [[Battle of Stalingrad]]. ||| Aftermath ||| ||| +0 Battle of Motien Pass ||| Battle of Te-li-Ssu ||| General Count [[Fedor Keller]] had assumed command of the Russian Eastern Force from General Zasulich after the [[Battle of Yalu River (1904)|Battle of Yalu River]]. His force of 25,000 men held Motien Pass, in the middle of [[Liaodong Peninsula]], on the main road between Antung (modern [[Dandong]], China) and [[Liaoyang]]. Keller, a loyal friend of General [[Aleksey Kuropatkin]] and a student of General [[Mikhail Skobelev]], observed that the Japanese strategy was similar to that of the [[First Sino-Japanese War]] (i.e. that the three Japanese armies would converge on Haicheng, as they had 10 years previously). Kuropatin agreed, and in an effort to fortify his position at Haicheng, he began a series of complex and confusing troop movements as he endeavored to plug real or imaginary gaps in his defensive line. Keller, already weakened by the loss of men at the [[Battle of Te-li-Ssu]], was further forced to give up two more [[regiment]]s to Kuropatin's defenses at Haicheng. ||| Preliminary movements ||| ||| +0 Battle of Mughar Ridge ||| Battle of Beersheba (1917) ||| The '''Battle of Mughar Ridge''', officially known by the British as the '''Action of El Mughar''', took place on 13 November 1917 during the Pursuit phase of the [[Southern Palestine Offensive]] of the [[Sinai and Palestine Campaign]] in the First World War. Fighting between the advancing [[Egyptian Expeditionary Force]] (EEF) and the retreating [[Yildirim Army Group]], occurred after the [[Battle of Beersheba (1917)|Battle of Beersheba]] and the [[Third Battle of Gaza]]. Operations occurred over an extensive area north of the [[Gaza City|Gaza]] to [[Beersheba]] line and west of the road from Beersheba to [[Jerusalem]] via [[Hebron]]. ||| ||| ||| +0 Battle of Mukden ||| Second Sino-Japanese War ||| Field Marshal Oyama's plan was to form his armies into a crescent to encircle Mukden, cutting off the possibility of Russian escape. He was explicit in his orders that combat within the city of Mukden itself was to be avoided. All during the war, the Japanese had pursued a meticulous civil affairs policy aimed at avoiding civilian casualties and keeping the Chinese populace on their side – a stark contrast with the previous [[First Sino-Japanese War]] and subsequent [[Second Sino-Japanese War]]. ||| Disposition of Forces ||| ||| +0 Battle of Málaga (1937) ||| Battle of Guadalajara ||| [[Benito Mussolini]] saw the spectacular success of the Italian troops as reason to continue and increase the Italian involvement in Spain despite having agreed to the Non-Intervention Agreement. The Italian commanders failed to see that their quick victory was achieved because of good weather and the lack of experience on the part of the Andalucian Republican militiamen in armoured warfare. Plans to capture Valencia were abandoned in order to achieve a decisive victory by attacking and capturing Madrid. However, the Italians were to suffer defeat in the [[Battle of Guadalajara]]. ||| Aftermath ||| Political and military consequences ||| +0 Battle of Málaga (1937) ||| Second Battle of the Corunna Road ||| After the failure to capture [[Madrid]] and the Republican [[counter attack]] at the [[Second Battle of the Corunna Road|Battle of the Corunna Road]], the Nationalists sought to regain the initiative. A 25 mile wide strip of land in [[Andalusia|southern Spain]] along the [[Mediterranean Sea]] centering on [[Málaga]], a base of the [[Spanish Republican Navy]], was held by the Republicans and the arrival of Italian troops at the nearby port of [[Cádiz]] made an attack on Málaga logical. ||| Prelude ||| ||| +0 Battle of Nablus (1918) ||| Eastern Front (World War I) ||| Following the [[Treaty of Brest-Litovsk]] in March 1918, which ended the war on the [[Eastern Front (World War I)|Eastern Front]] between [[Imperial Russia]] and [[Imperial Germany]], the main focus of the [[Ottoman Army]] turned to the Anatolian provinces and territories lost in 1877–1878 during the [[Russo-Turkish War (1877–1878)|Russo-Turkish War]]. ||| Background ||| ||| +0 Battle of Nam River ||| Battle of the Bowling Alley ||| The 35th Infantry suffered 154 killed, 381 wounded, and two missing during the battle. The 27th Infantry lost a total of 118 killed, 382 wounded, and one captured during the Battle of Pusan Perimeter, however this included five killed and 54 wounded at the [[Battle of the Bowling Alley]] and around 150 casualties at the [[First Battle of Naktong Bulge]]. In support of the Nam River operations, the 64th Field Artillery Battalion suffered 16 killed, 27 wounded, one captured and five missing, the 159th Field Artillery Battalion lost 18 killed and 41 wounded, and the 90th Field Artillery Battalion 15 killed, 54 wounded and one missing. ||| Aftermath ||| ||| +0 Battle of Naseby ||| English Civil War ||| * [[English Civil War]] ||| See also ||| ||| +0 Battle of Nazareth ||| Spring Offensive ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks by the [[Egyptian Expeditionary Force]] (EEF) in March/April and April/May 1918, the EEF commanded by General [[Edmund Allenby]] occupied the Jordan Valley and the front line, which extended across the [[Judean Hills]] to the Mediterranean. Most of the British infantry and [[yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of reorganisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack and to acclimatise the newly arrived India Army infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. During this time the [[Occupation of the Jordan Valley]] continued. ||| Background ||| ||| +0 Battle of Neresheim ||| Battle of Friedberg ||| Moreau deserved criticism for spreading his forces too widely but he can be credited for keeping his composure despite the defeat of Duhesme. and the [[Battle of Friedberg]], both on 24 August 1796. ||| Results ||| ||| +0 Battle of Neuburg (1800) ||| Battle of Montebello (1800) ||| In the broader scheme, the series of battles beginning with the losses at [[Battle of Stockach (1800)|Stockach and Engen]] and ending at Neuburg broke the Austrian control along the strategic Danube. Similarly, in Italy, French successes at the battles at [[Battle of Montebello (1800)|Montebello]] and [[Battle of Marengo|Marengo]] forced Austrian withdrawal to the east. With France threatening Habsburg Austria from the northwest and southwest, the Austrians agreed to a cease fire. Subsequent peace negotiations were complicated by the alliance Austria had made with Britain, and which prevented her from signing any separate peace. The British entered the negotiations to bolster their weakened ally. Initially Britain, which had successfully blockaded French ports, refused the French terms and offered counter terms in September 1800. Napoleon later claimed that the Austrians did not negotiate in good faith, and sought only to gain time until 'the rainy season' (winter), when army movements would be difficult, and the Habsburgs would have an entire season to recruit. ||| Aftermath ||| ||| +0 Battle of New Bern (1864) ||| Battle of Plymouth (1864) ||| General [[Braxton Bragg]], military advisor to [[Jefferson Davis]], urged for a change in leadership. General Hoke would resume field command of the Confederate offensive against the Union-held North Carolina coast. Hoke would find greater success in his [[Battle of Plymouth (1864)|attack on Plymouth, North Carolina]]. ||| Aftermath ||| ||| +0 Battle of Newburn ||| English Civil War ||| The '''Battle of Newburn,''' sometimes known as '''Newburn Ford,''' was fought on 28 August 1640 between a Scottish [[Covenanter]] army led by [[Alexander Leslie, 1st Earl of Leven|General Alexander Leslie]] and English forces commanded by [[Edward Conway, 2nd Viscount Conway|Edward, Lord Conway]]. Conway, heavily outnumbered, was defeated, and the Scots went on to occupy the town of [[Newcastle upon Tyne|Newcastle]], obtaining a stranglehold on London's coal supply. [[Charles I of England|Charles I]] had no choice but to agree to a truce, under which the Scottish army in northern England would be paid daily expenses, pending a final treaty of peace. To raise the necessary funds Charles had to call the [[Long Parliament]], thus setting in motion a process that would lead to the outbreak of the [[English Civil War]] two years later. ||| ||| ||| +0 Battle of Ngasaunggyan ||| Battle of Pagan ||| The Battle of Ngassaunggyan was the first of three decisive battles between the two empires, the others being the [[Battle of Bhamo]] in 1283 and the [[Battle of Pagan]] in 1287. By the end of these battles, the Mongols had conquered the entire Pagan empire and installed a [[Puppet state|puppet government]]. ||| ||| ||| +0 Battle of Oberwald ||| Battle of Stockach (1799) ||| After the Swiss uprisings of 1798, the Austrians had stationed troops in the Grisons, at the request of the Canton, which had not joined the new Helvetic Republic under the protection of the French Directory. In March 1799, war had again broken out between the Austrians and its coalition allies against the French. Massena, who commanded the French army in Switzerland, surprised the Austrian division stationed in the [[Grisons]], though, and overran the countryside. To the north, after victories at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and later at Feldkirch, the Archduke Charles pushed the French out. The Swiss general [[Hotze]], in Austrian service, approached through the Grisons, and following a successful engagement at [[battle of Winterthur|Winterthur]]. The Austrians, following up on their success, over ran most of eastern Switzerland. Massena left Zurich and fell back to the River Reuss. ||| Background ||| Coalition resurgence ||| +0 Battle of Occhiobello ||| Battle of Carpi (1815) ||| The Neapolitans had sustained over 2,000 casualties during the two days of fighting with thousands more deserting. The Austrians had sustained only 400 casualties and had established a bridgehead around Occhiobello from where they would able to launch attacks against [[Battle of Carpi (1815)|Carpi]] and [[Battle of Casaglia|Casaglia]]. With the morale of Neapolitan army broken and the partisans in Lombardy unable to join his cause, Murat would eventually be forced to retire back to his original headquarters in [[Ancona]] by late April. ||| Battle ||| ||| +0 Battle of Ordal ||| Battle of Vitoria ||| [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington's]] triumph at the [[Battle of Vitoria]] made Suchet's positions in [[Valencia (province)|Valencia]] and [[Aragon]] untenable. Accordingly, the marshal withdrew his soldiers from those two places and concentrated them near [[Barcelona]]. As the French withdrew, they were followed up by Bentinck's army of 28,000 Spanish, British, Germans, and Italians. Suchet resolved to strike at Adam's advance guard near Ordal with 12,000 soldiers while [[Charles Mathieu Isidore Decaen]]'s 7,000 men advanced from the northeast. After Adam's defeat, Bentinck abandoned Vilafranca and fell back to [[Tarragona]]. Soon after, he resigned his command. ||| ||| ||| +0 Battle of Ormoc Bay ||| Battle of Leyte ||| The '''Battle of Ormoc Bay''' was a series of air-sea battles between [[Imperial Japan]] and the United States in the [[Camotes Sea]] in the [[Philippines]] from 11 November-21 December 1944, part of the [[Battle of Leyte]] in the [[Pacific War|Pacific campaign]] of [[World War II]]. The battles resulted from Japanese operations to reinforce and resupply their forces on [[Leyte (island)|Leyte]] and U.S. attempts to interdict them. ||| ||| ||| +0 Battle of Ostrach ||| Battle of Kaiserslautern ||| On 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–1798), France ranged itself against most of the European states sharing land or water borders with her, plus Portugal and the Ottoman Empire. Although the Coalition forces achieved several victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Paardeberg ||| Bloody Sunday (1900) ||| Kitchener proceeded to order his infantry and mounted troops into a series of uncoordinated frontal assaults against the Boer laager. This was despite the fact that the cost of frontal assaults against entrenched Boers had been demonstrated time and again the preceding months. It was no different this time. The British were shot down in droves. It is thought that not a single British soldier got within {{convert|200|yd|m}} of the Boer lines. By nightfall on 18 February, some 24 officers and 279 men were killed and 59 officers and 847 men wounded. Judged by British casualties it was the most severe reverse of the war and became known as [[Bloody Sunday (1900)|Bloody Sunday]]. ||| Bloody Sunday ||| ||| +0 Battle of Palmyra ||| Anglo-Iraqi War ||| In 1941 the [[Vichy French]] had substantial forces in the region and had allowed their air bases to be used as staging posts by the Germans to send aircraft to take part in the [[Anglo-Iraqi War]]. They had also allowed the Germans to use the railway system to send arms and ammunition to Iraq. On 8 June 1941 the Allies had launched two northerly attacks from [[Palestine (region)|Palestine]] and [[Emirate of Transjordan|Trans-Jordan]] into [[Lebanon]] and [[Syria]] to prevent any further interference to Allied interests in the region. ||| Background ||| ||| +0 Battle of Paris (1814) ||| Battle of Leipzig ||| Napoleon was retreating from his failed [[French invasion of Russia|invasion of Russia]] in 1812. With the Russian armies following up victory, the Sixth Coalition was formed with Russia, Austria, Prussia, Great Britain, Sweden, Spain and other nations hostile to the French Empire. Even though the French were victorious in the initial battles during their [[German Campaign (1813)|campaign in Germany]], the Coalition armies eventually joined together and defeated them at the [[Battle of Leipzig]] in the autumn of 1813. After the battle, the Pro-French German [[Confederation of the Rhine]] collapsed, thereby losing Napoleon's hold on Germany east of the [[Rhine River|Rhine]]. The supreme commander of the Coalition forces in the theatre and the paramount monarch among the three main Coalition monarchs, the Russian Tsar [[Alexander I of Russia|Alexander I]], then ordered all Coalition forces in Germany to cross the Rhine and invade France. ||| Background ||| ||| +0 Battle of Passchendaele ||| Fifth Battle of Ypres ||| Further operations and a British supporting attack along the Belgian coast from Nieuwpoort, combined with [[Operation Hush]] (an amphibious landing), were to have reached [[Bruges]] and then the Dutch frontier. The resistance of the [[4th Army (German Empire)|German 4th Army]], unusually wet weather, the onset of winter and the diversion of British and French resources to [[Italian Front (World War I)|Italy]], following the Austro-German victory at the [[Battle of Caporetto]] {{nowrap|(24 October – 19 November),}} enabled the Germans to avoid a general withdrawal, which had seemed inevitable in early October. The campaign ended in November, when the [[Canadian Corps]] captured Passchendaele, apart from local attacks in December and the new year. In 1918, the [[Battle of the Lys (1918)|Battle of the Lys]] and the [[Fifth Battle of Ypres]] were fought before the Allies occupied the Belgian coast and reached the Dutch frontier. ||| ||| ||| +0 Battle of Patay ||| Battle of Beaugency (1429) ||| After the English abandoned the [[Siege of Orléans]] on 8 May 1429, the survivors of the besieging forces withdrew to nearby garrisons along the [[Loire]]. A month later, having gathered men and supplies for the forthcoming campaign, the French army, under the nominal command of the [[Jean II, Duke of Alençon|Duke of Alençon]], set out to capture these positions and the bridges they controlled. On 12 June they took [[Battle of Jargeau|Jargeau]] by storm, then captured the bridge at [[Battle of Meung-sur-Loire|Meung-sur-Loire]] and marched on, without attacking the nearby castle, to lay siege to [[Battle of Beaugency (1429)|Beaugency]] on 15 June. ||| Background ||| ||| +0 Battle of Patay ||| Battle of Jargeau ||| After the English abandoned the [[Siege of Orléans]] on 8 May 1429, the survivors of the besieging forces withdrew to nearby garrisons along the [[Loire]]. A month later, having gathered men and supplies for the forthcoming campaign, the French army, under the nominal command of the [[Jean II, Duke of Alençon|Duke of Alençon]], set out to capture these positions and the bridges they controlled. On 12 June they took [[Battle of Jargeau|Jargeau]] by storm, then captured the bridge at [[Battle of Meung-sur-Loire|Meung-sur-Loire]] and marched on, without attacking the nearby castle, to lay siege to [[Battle of Beaugency (1429)|Beaugency]] on 15 June. ||| Background ||| ||| +0 Battle of Peking (1900) ||| Second Sino-Japanese War ||| In the [[Second Sino-Japanese War]], when the Japanese asked the Muslim General [[Ma Hongkui]] to defect and become head of a Muslim puppet state under the Japanese, Ma responded through Zhou Baihuang, the Ningxia Secretary of the Nationalist Party to remind the Japanese military chief of staff Itagaki Seishiro that many of his relatives fought and died in battle against Eight Nation Alliance forces during the Battle of Peking, including his uncle [[Ma Fulu]], and that Japanese troops made up the majority of the Alliance forces so there would be no cooperation with the Japanese. ||| Legacy ||| ||| +0 Battle of Piave River (1809) ||| Battle of Arcole ||| Archduke John deployed his right flank behind the small Alpone River between [[Soave]] and [[Albaredo d'Adige]], near the old [[Battle of Arcole|Arcole battlefield]], while his left flank defended the Adige south to [[Legnago]]. ||| Background ||| ||| +0 Battle of Pig Point ||| Battle of Fort Sumter ||| The '''Battle of Pig Point, Virginia''' was an engagement between the [[Union (American Civil War)|Union]] gunboat [[USRC Harriet Lane (1857)|USRC ''Harriet Lane'']] and a shore battery and rifle company of the [[Confederate Army]] on June 5, 1861 in the third month of the [[American Civil War]]. Pig Point is located in [[Portsmouth, Virginia]] at the mouth of the [[Nansemond River]] near [[Hampton Roads, Virginia]]. This location is about {{convert|5|mi|km}} from [[Newport News, Virginia]]. The engagement occurred before any significant battles, other than the opening [[Battle of Fort Sumter]], had taken place and received some notoriety at the time. The action was essentially inconclusive, but the Confederates repulsed the Union gunboat's attack and the defenders' gunfire wounded five of its crew. Like other early engagements between Union gunboats and Confederate shore batteries, the battle at Pig Point was an early Civil War military action in connection with the blockade by the [[Union Navy]] of the Southern States in general and the [[Chesapeake Bay]] in particular. Correspondingly, it was part of the effort by Confederate forces to deny the use of rivers in [[Virginia]] to Union military and commercial traffic. ||| ||| ||| +0 Battle of Pirot ||| Battle of Slivnitsa ||| After the Bulgarian victory at the [[Battle of Slivnitsa]], fought from 17-19 November 1885, the Bulgarian army counter-attacked. The Bulgarian troops defeated the Serbs at [[Gurgulyat]] (19 November) and [[Dragoman]] (22 November), and subsequently reached the city of [[Pirot]], where the Serbian Nišava army occupied defensive positions in the hills to the east of the town. ||| Prelude ||| ||| +0 Battle of Pokoku and Irrawaddy River operations ||| Battle of Kohima ||| The [[31st Division (Imperial Japanese Army)|Japanese 31st Division]]'s thrust [[Battle of Kohima|at Kohima]] had been a costly failure, eventually forcing it to a disastrous retreat. The [[33rd Division (Imperial Japanese Army)|Japanese 33rd Division]], [[15th Division (Imperial Japanese Army)|Japanese 15th Division]] and the [[Indian National Army|INA 1st Division]] had suffered a similar fate [[Battle of Imphal|at Imphal]]. The Japanese and allied forces lost at least fifty thousand dead.{{Citation needed|date=August 2007}} In previous years there used to be lull during the monsoon period but not this year (1944–45). The command decided that it was time to target the heart of [[Imperial Japanese Army|Japanese Army]] in Burma. General [[William Slim, 1st Viscount Slim|William 'Bill' Slim]]'s plan through the monsoon months had been pursuit of the defeated Japanese in [[Kohima]] and plains of [[Imphal]] with [[5th Indian Infantry Division]] down the Tiddim Road and [[1st (African) Division (United Kingdom)|11th East African Division]] down the [[Kabaw Valley]], until the two joined hand at Kalemyo. The next offensive plan centred on the occupation of Central Burma, as far south as [[Mandalay]] to exploit further south and destroy the Japanese forces in the Shewbo Plains, north of [[Irrawaddy River|Irrawaddy]], where armour could be used. Allied forces crossed River Chindwin and the spearheads of both corps of the Fourteenth Army (IV and XXXIII Corps) were moving into selected battle areas, which surprised Japanese as they had not anticipated any major operations during the monsoon period. The British Fourteenth Army was now faced with a major obstacle (the Irrawaddy) covered by determined Japanese. The Irrawaddy River in its middle is about {{convert|2000|yd|m}} broad and dotted with treacherous and shifting sand bars. An opposed direct crossing would have been very expensive with low percentage of success. ||| Preparation ||| ||| +0 Battle of Port Cros ||| Battle of La Ciotat ||| As result of the battle, Commander Hughes was recognized for his victory and eventually rose to the rank of [[Rear Admiral]] partly due to his involvement in this action. After the engagement, the U.S. Army occupied [[Île du Levant|Le Levant]], another island nearby. Two days later, on 17 August, the former Italian corvette ''Antilope'', renamed ''UJ6082'', and the former [[Egypt]]ian armed [[yacht]] ''Nimet Allah'' were sunk by {{USS|Endicott||6}} with help from two [[United Kingdom|British]] [[gunboat]]s at the [[Battle of La Ciotat]]. ||| Aftermath ||| ||| +0 Battle of Port Royal ||| Union blockade ||| Early in the war, the U.S. Navy had the responsibility of [[Union blockade|blockading]] the [[Southern United States|Southern]] coastline, but found this task difficult when forced to rely on fueling and resupply ports in the North for its coal-fired steamships. The problems of the blockade were considered by a [[Blockade Strategy Board|commission]] appointed by [[United States Secretary of the Navy|Secretary of the Navy]] [[Gideon Welles]]. Chairman of the commission was Capt. [[Samuel Francis Du Pont]]. ||| Preparations ||| Development of Northern strategy ||| +0 Battle of Poznań (1945) ||| Battle of Stalingrad ||| Certain cities which lay on the path of the Soviet advance were declared by [[Hitler]] to be ''[[German World War II strongholds|Festungen]]'' (strongholds), where the garrisons were ordered to mount last-ditch stands. Hitler hoped the ''Festung'' cities could hold out behind Soviet lines and interfere with the movement of supplies and lines of communication. Facing them were the experienced [[Russian guards|Guards Rifle]] troops of General [[Vasily Chuikov|V. I Chuikov]]'s [[Eighth Guards Army (Soviet Union)|8th Guards Army]] – the victors of [[Battle of Stalingrad|Stalingrad]]. ||| Background ||| ||| +0 Battle of Preston (1715) ||| Battle of Reading (1688) ||| The battle of Preston is often claimed to have been the last fought on English soil, but this depends on the definition of 'battle', for which there are different interpretations. Preston was a siege rather than a [[pitched battle]], so the [[Battle of Sedgemoor]] fought in 1685 is also a contender for the title of the last battle, as is the [[Clifton Moor Skirmish|skirmish at Clifton Moor]] near [[Penrith, England|Penrith]] in [[Cumbria]] on 18 December 1745 during the [[Jacobite Risings#The Rebellion/Rising of 1745 ('The Forty-Five')|'Forty-Five' Jacobite Rebellion]]. However, there was a great deal of savage fighting in streets all over the town during the Battle of Preston, far more than in most sieges. It was as much of a battle as, for example, the Battle of St Albans (1455) in the [[Wars of the Roses]], which was also fought in the streets of a town, but which is generally regarded as a battle and not a siege, as is the [[Battle of Reading (1688)|Battle of Reading]] of 1688. The [[Battle of Bossenden Wood]], fought on 31 May 1838, is a much later contender. ||| ||| ||| +0 Battle of Preston (1715) ||| Wars of the Roses ||| The battle of Preston is often claimed to have been the last fought on English soil, but this depends on the definition of 'battle', for which there are different interpretations. Preston was a siege rather than a [[pitched battle]], so the [[Battle of Sedgemoor]] fought in 1685 is also a contender for the title of the last battle, as is the [[Clifton Moor Skirmish|skirmish at Clifton Moor]] near [[Penrith, England|Penrith]] in [[Cumbria]] on 18 December 1745 during the [[Jacobite Risings#The Rebellion/Rising of 1745 ('The Forty-Five')|'Forty-Five' Jacobite Rebellion]]. However, there was a great deal of savage fighting in streets all over the town during the Battle of Preston, far more than in most sieges. It was as much of a battle as, for example, the Battle of St Albans (1455) in the [[Wars of the Roses]], which was also fought in the streets of a town, but which is generally regarded as a battle and not a siege, as is the [[Battle of Reading (1688)|Battle of Reading]] of 1688. The [[Battle of Bossenden Wood]], fought on 31 May 1838, is a much later contender. ||| ||| ||| +0 Battle of Prome (1942) ||| Battle of Toungoo ||| After the [[Battle of Toungoo|loss at Toungoo]], the remaining allies split the land up, and each defended their own city. The [[British Raj]] and [[British Burma]] got Prome, while Chinese forces went to [[Shwedaung]]. ||| Background ||| ||| +0 Battle of Queenston Heights ||| Siege of Detroit ||| However, the four attacks on Upper Canada failed or were not even launched. Hull was besieged in Detroit and, fearing a massacre by Britain's [[First Nations|Native American]] allies, surrendered the town and his entire army following the [[Siege of Detroit]]. Dearborn and his army remained relatively inactive at [[Albany, New York]] and seemed to be in no hurry to attempt an invasion. ||| Background ||| ||| +0 Battle of Rain ||| Battle of Blenheim ||| The battle of Lech proves more than the [[Battle of Breitenfeld (1631)|Battle of Breitenfeld]] the innovation of Gustavus Adolphus' tactical imagination. His daring frontal attack in combination with the deployment of a large part of his army for the flanking movement has similarities with the tactics of [[John Churchill, 1st Duke of Marlborough|John Churchill, Duke of Marlborough]] at the [[Battle of Blenheim|Blenheim]] battlefield, (situated in the very neighborhood of Rain) or of [[Frederick the Great]] at [[Battle of Leuthen|Leuthen]]. The disciple of Gustavus Adolphus, [[Johan Banér]], also employed a similar battle plan four years later in the [[battle of Wittstock]]. ||| Tactics ||| ||| +0 Battle of Raseiniai ||| Operation Barbarossa ||| The '''Battle of Raseiniai''' (23–27 June 1941) was a tank battle fought between the elements of the [[Fourth Panzer Army (Germany)|4th Panzer Group]] commanded by [[Erich Hoepner|Gen. Erich Hoepner]] and the [[20th Guards Motor Rifle Division|3rd Mechanized Corps]] {{ref label|Note2|b|b}} commanded by Major General Shestapolov in [[Lithuania]] 75 km northwest of [[Kaunas]] in the attempt by the commander of the [[Northwestern Front]], [[Fyodor Isodorovich Kuznetsov|Kuznetsov]] to contain and destroy German troops that had crossed the [[Neman River]] (Nemunas). The result of the battle was the almost complete destruction of Soviet armoured forces of the [[Northwestern Front]], clearing the way for the continued German offensive towards the crossings of the [[Daugava River]] (Western Dvina). This was one of the major battles during the initial phases of [[Operation Barbarossa]] known in Soviet history as the [[Border Defensive Battles]] (22–27 June 1941) as part of the larger [[Baltic Operation|Baltic Strategic Defensive Operation]]. ||| ||| ||| +0 Battle of Reims (1814) ||| Battle of Leipzig ||| The engagement took place during the 1814 campaign. After Napoleon had retreated from [[Russia]] and lost the [[Battle of Leipzig]], the allied armies had invaded France. Napoleon won a number of victories (such as the battle of Reims), but had little chance of success, with just 70,000 men against half a million allied forces. The campaign ended with the allies taking [[Paris]] on 31 March and Napoleon's abdication on 6 April. ||| Background ||| ||| +0 Battle of Reims (1814) ||| Battle of Paris (1814) ||| * [[Battle of Paris (1814)]] ||| See also ||| ||| +0 Battle of Remagen ||| Liberation of Paris ||| On September 8, 1945, the U.S. Post Office issued a three-cent stamp commemorating the [[Liberation of Paris]] from the Germans. [[First day cover]]s were illustrated with images of the [[Ludendorff Bridge]] illustrating its capture. Other countries have issued stamps commemorating the bridge's capture, including [[Nicaragua]], [[Guyana]], [[Micronesia]], and [[Republic of the Marshall Islands]]. ||| In popular culture ||| Postcards ||| +0 Battle of Rhode Island ||| Battles of Saratoga ||| Following the surrender of the [[British Army during the American War of Independence|British Army]] after the [[Battles of Saratoga]] in October 1777, [[France]] decided to formally recognize the [[United States of America]]. It had previously supported the independence effort of the [[Thirteen Colonies]] in preceding years, but by early 1778 had made the decision to openly support the American cause. France formally recognized the United States in February 1778, and war was declared between France and [[Kingdom of Great Britain|Great Britain]] in March. ||| Background ||| ||| +0 Battle of Rotterdam ||| Battle of the Netherlands ||| '''The Battle of [[Rotterdam]]''' was a [[World War II|Second World War]] battle fought during the [[Battle of the Netherlands]]. Fought between 10–14 May 1940, it was a German attempt to seize the Dutch city. It ended in a German victory, following the [[Rotterdam Blitz]]. ||| ||| ||| +0 Battle of Réunion ||| Battle of Madagascar ||| * [[Battle of Madagascar]] ||| See also ||| ||| +0 Battle of Réunion ||| Indian Ocean raid ||| After the [[Battle of Singapore]], in February 1942, the British [[Eastern Fleet]] retreated to [[Addu Atoll]] in [[Maldives]]. Then, following [[Chuichi Nagumo]]'s [[Indian Ocean raid]] in early 1942, the Fleet moved its operational base to [[Kilindini]] near [[Mombasa]] in [[Kenya]], increasing the British presence on the Eastern African coasts. Soon afterwards, the British struck the French possessions of Madagascar, under Vichy Regime control, with [[Battle of Madagascar|Operation ''Ironclad'']], on 5 May 1942. La Réunion lost her shipping communications with mainland Africa, and the attack further encouraged anti-British sentiments among the Vichy loyalists. On the other hand, De Gaulle, who had not been involved in ''Ironclad'', felt hard-pressed to re-claim La Réunion from Vichy before the British or Americans would. ||| Background ||| Strategic situation ||| +0 Battle of Sahagún ||| Battle of Benavente ||| The 15th Hussars' charge and subsequent victory meant that the French cavalry were reluctant to fight the British cavalry for the remainder of the campaign. The French 1st Provisional Chasseurs were so depleted by their losses at Sahagun that they were disbanded. The British Hussars were to gain one more victory over their French counterparts during the campaign when, on 29 December 1808, at [[Battle of Benavente|Benavente]] they drove Napoleon's elite ''Chasseurs à cheval'' of the [[Imperial Guard (Napoleon I)|Imperial Guard]] into the River Esla, capturing their commanding general, [[Charles, comte Lefebvre-Desnouettes|Lefebvre-Desnouettes]]. ||| Aftermath ||| ||| +0 Battle of Sahagún ||| Battle of Corunna ||| The '''Battle of Sahagún''' (21 December 1808) was a cavalry clash at [[Sahagún]], Spain, in which the British [[15th Hussars|15th Light Dragoons (Hussars)]] defeated two regiments of French cavalry during the [[Battle of Corunna|Corunna Campaign]] of the [[Peninsular War]]. Losses to one of the French regiments were so heavy that it was subsequently disbanded. The action marked the final phase of the British army's advance into the interior of Spain, before they began their harrowing retreat to the coast and ultimate evacuation by sea. ||| ||| ||| +0 Battle of Saint-Charles ||| Battle of Saint-Denis (1837) ||| On the morning of 25 November 1837, 2 days after [[Charles Stephen Gore|Charles Gore]]'s defeat at the [[Battle of Saint-Denis (1837)|Battle of Saint-Denis]] and the retreat to [[Sorel, Quebec|Sorel]] the troops of Colonel [[George Augustus Wetherall|George Wetherall]] about 420 regulars (from the [[1st Regiment of Foot|1st]] and [[66th Regiment of Foot|66th Regiments of Foot]]), left [[Mont-Saint-Hilaire, Quebec|St-Hilaire]] and marched on the camp at St-Charles. The camp was at that time defended by some 80 men of the parish of St-Charles and others. As they approached, the soldiers exchanged gunfire with small groups of combatants. ||| ||| ||| +0 Battle of Saint-Charles ||| Lower Canada Rebellion ||| *[[Lower Canada Rebellion]] ||| See also ||| ||| +0 Battle of Saipan ||| Battle of Iwo Jima ||| With the capture of Saipan, the American military was now only {{convert|1300|mi|nmi km|abbr=on}} away from the home islands of Japan. The victory would prove to be one of the most important strategic moments during the war in the Pacific Theater, as the Japanese mainland was now within striking distance of United States' [[Boeing B-29 Superfortress|B-29 bombers]]. From this point on, Saipan would become the launch point for retaking other islands in the Mariana chain and the [[battle of Leyte|invasion of the Philippines]] in October 1944. Four months after capture, more than 100 B-29s from [[Isely Field#Role in World War II|Saipan's Isely Field]] were regularly attacking the Philippines, the [[Ryukyu Islands]] and the Japan mainland. In response, Japanese aircraft [[Japanese air attacks on the Mariana Islands|attacked Saipan and Tinian]] on several occasions between November 1944 and January 1945. The US [[Battle of Iwo Jima|capture of Iwo Jima]] (19 February – 26 March 1945) ended further Japanese air attacks. ||| Aftermath ||| ||| +0 Battle of Salamis ||| Battle of Thermopylae ||| To block the Persian advance, a small force of Greeks blocked the pass of [[Thermopylae]], while an Athenian-dominated Allied navy engaged the Persian fleet in the nearby straits of [[Artemisium]]. In the resulting [[Battle of Thermopylae]], the rearguard of the Greek force was annihilated, whilst in the [[Battle of Artemisium]] the Greeks had heavy losses and retreated after the loss at Thermopylae. This allowed the Persians to conquer [[Boeotia]] and [[Attica]]. The Allies prepared to defend the [[Isthmus of Corinth]] whilst the fleet was withdrawn to nearby Salamis Island. ||| ||| ||| +0 Battle of Samakh ||| Battle of Tabsor ||| [[Samakh, Tiberias|Samakh]], in the centre of a rearguard line stretching from [[Capture of Tiberias|Tiberias]] through Samakh and on to [[Deraa]] was intended to cover the retreat of three Ottoman armies. The rearguard was set up to delay the advance of the [[Egyptian Expeditionary Force]] (EEF) cavalry in the Desert Mounted Corps after the [[British Empire]] infantry victories in the Judean Hills at the [[Battle of Tulkarm]], and the [[Battle of Tabsor]] during the Battle of Sharon. These and other battles fought during the Battle of Nablus including the [[Third Transjordan attack]], also part of the Battle of Megiddo, forced the retreat of the Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth]] Armies north towards Damascus. ||| ||| ||| +0 Battle of Samakh ||| Western Front (World War I) ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks in March–April and April–May 1918, by the [[Egyptian Expeditionary Force]] (EEF), which had been responsible for the Sinai and Palestine Campaign since March 1916, its commander [[General (United Kingdom)|General]] [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. He also ordered the front line be extended across the [[Judean Hills]] to the [[Mediterranean Sea]]. Most of the British infantry and [[Yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of re-organisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. ||| Background ||| ||| +0 Battle of San Jacinto ||| American Civil War ||| *The first [[USS San Jacinto (1850)|USS ''San Jacinto'']] was a [[screw frigate]] launched by the United States Navy in 1850. She was in service with the [[Africa Squadron]] in 1860 when she captured the slave ship ''Storm King''. The frigate was in service for most of the [[American Civil War]] until she wrecked in the Bahamas in 1865. ||| Legacy ||| ||| +0 Battle of San Jacinto ||| Battle of San Patricio ||| * [[Battle of San Patricio|San Patricio]] ||| ||| ||| +0 Battle of San Lorenzo de la Muga ||| Siege of Toulon ||| In 1793 the Spanish army defeated the ill-trained French armies where the Franco-Spanish border touches the [[Mediterranean Sea]]. The [[Siege of Bellegarde (1793)|Siege of Bellegarde]] resulted in the surrender of the fort to the Spanish army on 24 June. The Spanish army won the [[Battle of Truillas]] and several other actions, and seized the port of [[Collioure]] in December. In January 1794, the [[Army of the Eastern Pyrenees]] received a new commander in [[General of Division]] [[Jacques François Dugommier]]. Fresh from his triumph at the [[Siege of Toulon (1793)|Siege of Toulon]], the new leader reorganized the army. Dugommier set up supply depots, established hospitals, and improved local roads. By the time the French assumed the offensive in April 1794, their army numbered 28,000 regular soldiers, 20,000 garrison troops, and 9,000 hastily trained volunteers. ||| Background ||| ||| +0 Battle of San Pietro Infine ||| Allied invasion of Sicily ||| The Germans retreated to the island of Sicily and on the night of 9/10 July 1943, an Allied armada of 2,590 vessels launched one of the largest combined operations of World War II: the [[Allied invasion of Sicily|invasion of Sicily]]. Over the next five weeks, 500,000 Allied soldiers, sailors, and airmen fought German and Italian forces for control of the island. Although the Allied powers were victorious, the Axis managed to evacuate over 100,000 men and 10,000 vehicles from Sicily across the [[Straits of Messina]] during the first seventeen days in August. The Allies then invaded the Italian mainland in September 1943 at [[Operation Avalanche (World War II)|Salerno]], in [[Calabria]] (''Operation Baytown'') and [[Taranto]] (''[[Operation Slapstick]]''). ||| Background ||| North Africa and Sicily ||| +0 Battle of Sandwich (1460) ||| Battle of Ludford Bridge ||| [[Edward IV of England|Edward, Earl of March]] and [[Richard Neville, 5th Earl of Salisbury|Richard, Earl of Salisbury]], had fled to the English stronghold of [[Pale of Calais|Calais]] after their defeat at the [[Battle of Ludford Bridge]]. ||| Battle ||| ||| +0 Battle of Savo Island ||| New Guinea campaign ||| On August 7, 1942, Allied forces (primarily [[United States Marine Corps|U.S. Marines]]) [[Guadalcanal Campaign#Landings|landed on Guadalcanal]], [[Battle of Tulagi and Gavutu–Tanambogo#Tulagi|Tulagi]], and [[Florida Island]] in the eastern Solomon Islands. The landings were meant to deny their use to the Japanese as [[Military base|bases]], especially the nearly completed airfield at [[Henderson Field (Guadalcanal)|Henderson Field]] that was being constructed on Guadalcanal. If Japanese air and sea forces were allowed to establish forward operating bases in the Eastern Solomons they would be in a position to threaten the [[materiel|supply]] shipping routes between the US and Australia. The Allies also wanted to use the islands as launching points for a campaign to recapture the Solomons, isolate or capture the major Japanese base at [[Rabaul#World War II|Rabaul]], and support the Allied [[New Guinea campaign]], which was then building strength under General Douglas MacArthur. The landings initiated the six-month-long [[Guadalcanal campaign]]. ||| Background ||| Operations at Guadalcanal ||| +0 Battle of Scapezzano ||| Battle of Tolentino ||| Murat decided to send his main force against Bianchi and chose an area around [[Tolentino]], west of Ancona to give battle. He dispatched a division under Carascosa north along the Adriatic coast to hold Neipperg until Bianchi had been defeated. However, following intense manoeuvring and a few small skirmishes, the Neapolitans were in danger of becoming surrounded and retreated in an orderly fashion. This allowed Neipperg to threaten the main Neapolitan force under [[Joachim Murat]] engaged at the [[Battle of Tolentino]]. This engagement eventually resulted in a decisive victory for the Austrians, and the war soon ended with the [[Treaty of Casalanza]] on 20 May. ||| ||| ||| +0 Battle of Scarrifholis ||| English Civil War ||| On the other side, the English and Scottish Protestant forces in [[Ulster]] had also been split by the events of the [[English Civil War]]. Up to 1649, the Protestants were led by the [[Scotland|Scottish]] [[Covenanters]], based in [[Carrickfergus]] and a British settler army based around [[Derry]]. However, in 1649, following the execution of [[Charles I of England|Charles I]] by the English Parliament, the Protestants split into Royalist and Parliamentary factions. Most of the English settlers like Charles Coote sided with the Parliament (primarily because they disliked the Royalist's conciliatory attitude to Irish Catholics) and they took control of Derry. They were joined by a Parliamentary army sent to the Ulster by Oliver Cromwell in 1649 commanded by [[Robert Venables]] and [[Theophilus Jones (British Army officer)|Theophilus Jones]]. The Scots on the other hand, sided with the Royalists. In 1648, Royalists in Ulster had besieged Coote at [[Derry]], but Coote held out. The following year, the Scots and Royalists in Ulster were routed by Venables at the [[battle of Lisnagarvey]] in [[County Antrim|Antrim]]. After this point, the Parliamentarians assumed command of the war against the Ulster army. ||| Background ||| ||| +0 Battle of Schuinshoogte ||| Battle of Majuba Hill ||| Colley was plagued by defeat throughout the war, and although he would receive his reinforcements, his men were seriously demoralized by the string of defeats. Eventually he would be killed in action at the [[Battle of Majuba Hill]]. ||| ||| ||| +0 Battle of Seseña ||| Siege of Madrid ||| The Nationalists resumed their offensive, [[Getafe]] (13 km south of Madrid) fell on November 4 and on November 8 the Nationalists started their frontal assault on [[Siege of Madrid|Madrid]]. Nevertheless, [[Emilio Mola|Mola]] decided to retire a part of their troops from the assault on Madrid, in order to reinforce the flanks, because the fear of another tank attack. ||| Aftermath ||| ||| +0 Battle of Seven Pines ||| Peninsula Campaign ||| The '''Battle of Seven Pines''', also known as the '''Battle of Fair Oaks''' or '''Fair Oaks Station''', took place on May 31 and June 1, 1862, in [[Henrico County, Virginia]], as part of the [[Peninsula Campaign]] of the [[American Civil War]]. It was the culmination of an offensive up the [[Virginia Peninsula]] by [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]], in which the [[Army of the Potomac]] reached the outskirts of [[Richmond, Virginia|Richmond]]. ||| ||| ||| +0 Battle of Shanghai ||| Battle of Stalingrad ||| The '''Battle of Shanghai''' was the first of the twenty-two major engagements fought between the [[National Revolutionary Army]] (NRA) of the [[Republic of China (1912–1949)|Republic of China]] (ROC) and the [[Imperial Japanese Army]] (IJA) of the [[Empire of Japan]] during the [[Second Sino-Japanese War]]. It was one of the largest and bloodiest battles of the entire war, described by Peter Harmsen as [[Battle of Stalingrad|Stalingrad]] on the [[Yangtze]]. ||| ||| ||| +0 Battle of Shanghai ||| January 28 Incident ||| Since the outbreak of the war on July 7, 1937, most combat had occurred in and around [[North China]] in operations collectively known as the [[Battle of Beiping-Tientsin]]. Originally, neither China nor Japan wanted the skirmish to escalate into a full-scale war. Japan expected a quick [[ceasefire]] and further gains of Chinese territory, similar to what had happened earlier in the [[Mukden Incident]] (1931), [[January 28 Incident]] (1932), the [[Defense of the Great Wall|Great Wall Incident]] (1933), and various other settlements brokered in the mid-1930s. ||| Background ||| Strategic reasons ||| +0 Battle of Sharon ||| Battle of Megiddo (1918) ||| The '''Battle of Sharon''' fought between 19 and 25 September 1918, began the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] half a day before the [[Battle of Nablus (1918)|Battle of Nablus]], in which large formations engaged and responded to movements by the opposition, according to pre-existing plans, in the last months of the [[Sinai and Palestine Campaign]] of [[World War I]]. The fighting took place over a wide area from the [[Mediterranean Sea]] east to the [[Rafat, Jerusalem|Rafat]] [[Salients, re-entrants and pockets|salient]] in the [[Judean Hills]]. Here the [[Egyptian Expeditionary Force]] (EEF) [[XXI Corps (United Kingdom)|XXI Corps]] with the [[France|French]] [[brigade]] sized ''Détachment Français de Palestine et de Syrie'' attacked the [[Yildirim Army Group]] [[Eighth Army (Ottoman Empire)|Eighth Army]]'s [[XXII Corps (Ottoman Empire)|XXII Corps]] and [[German Empire|German]] [[Asia Korps|Asia Corps]]. The Battle of Sharon extended well behind the Ottoman front lines when the [[Desert Mounted Corps]] rode through a gap in the front line across the Plain of Sharon to occupy the [[Jezreel Valley|Esdraelon Plain]]. Meanwhile, during the Battle of Nablus the [[XX Corps (United Kingdom)|XX Corps]] attacked [[Nablus]] while [[Chaytor's Force]] held the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]] before advancing to secure bridges and fords across the [[Jordan River]], to continue the [[encirclement]] the defenders in the Judean Hills. Subsequently Chaytor's Force advanced against the [[Fourth Army (Ottoman Empire)|Fourth Army]] to capture [[Salt, Jordan|Es Salt]] and [[Amman]] after the [[Second Battle of Amman]]. ||| ||| ||| +0 Battle of Sharon ||| Battle of Nablus ||| The '''Battle of Sharon''' fought between 19 and 25 September 1918, began the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] half a day before the [[Battle of Nablus (1918)|Battle of Nablus]], in which large formations engaged and responded to movements by the opposition, according to pre-existing plans, in the last months of the [[Sinai and Palestine Campaign]] of [[World War I]]. The fighting took place over a wide area from the [[Mediterranean Sea]] east to the [[Rafat, Jerusalem|Rafat]] [[Salients, re-entrants and pockets|salient]] in the [[Judean Hills]]. Here the [[Egyptian Expeditionary Force]] (EEF) [[XXI Corps (United Kingdom)|XXI Corps]] with the [[France|French]] [[brigade]] sized ''Détachment Français de Palestine et de Syrie'' attacked the [[Yildirim Army Group]] [[Eighth Army (Ottoman Empire)|Eighth Army]]'s [[XXII Corps (Ottoman Empire)|XXII Corps]] and [[German Empire|German]] [[Asia Korps|Asia Corps]]. The Battle of Sharon extended well behind the Ottoman front lines when the [[Desert Mounted Corps]] rode through a gap in the front line across the Plain of Sharon to occupy the [[Jezreel Valley|Esdraelon Plain]]. Meanwhile, during the Battle of Nablus the [[XX Corps (United Kingdom)|XX Corps]] attacked [[Nablus]] while [[Chaytor's Force]] held the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]] before advancing to secure bridges and fords across the [[Jordan River]], to continue the [[encirclement]] the defenders in the Judean Hills. Subsequently Chaytor's Force advanced against the [[Fourth Army (Ottoman Empire)|Fourth Army]] to capture [[Salt, Jordan|Es Salt]] and [[Amman]] after the [[Second Battle of Amman]]. ||| ||| ||| +0 Battle of Sharon ||| Battle of Tabsor ||| The Battle of Sharon began on 19 September with a [[Western Front (World War One)|Western Front]] style bombardment during which two thirds of the mainly ground based heavy artillery, supported by the firepower of two [[destroyer]]s pounded Ottoman positions, while one third of the heavy artillery fired [[creeping barrage]]s to cover the infantry assaults. The XXI Corps infantry attacked simultaneously along the front line from the Mediterranean coast where the [[60th (2/2nd London) Division|60th Division]], launched an attack on the western coastal section of the front line defended by the Eighth Army's XXII Corps. During this [[Battle of Tulkarm]] the 60th Division breached the front and second line trenches to eventually capture [[Tulkarm]], the site of the Eighth Army headquarters. On their right, the main Tabsor system of trenches held by the Ottoman XXII Corps was attacked and eventually captured during the [[Battle of Tabsor]], by the [[3rd (Lahore) Division|3rd (Lahore)]], [[7th (Meerut) Division|7th (Meerut)]], and the [[75th Division (United Kingdom)|75th Division]]s. These three divisions subsequently advanced, despite the Ottoman XXII Corps being reinforced, to capture Et Tire and Masudiye Station. In the process of the battles for Tulkarm and Tabsor the 7th (Meerut) and 60th Divisions created a gap in the front line, for the Desert Mounted Corps to ride through. They rode north and eastwards to the rear to capture the defending Ottoman armies' [[lines of communication]]. The right flank of the attacking XXI Corps was protected from the Eighth Army's Asia Corps, by the [[54th (East Anglian) Division]] and the [[French colonial empire|French Colonial]] ''Détachment Français de Palestine et de Syrie'' holding and pivoting on the Rafat salient, during the [[Battle of Arara]] as the infantry battle progressed. ||| ||| ||| +0 Battle of Sharon ||| Gallipoli Campaign ||| These divisions facing the EEF's XXI Corps, were highly regarded veteran Ottoman Army formations. The 7th and 19th Infantry Divisions, had fought with distinction during the [[Gallipoli Campaign]] as part of [[Mehmet Esat Bülkat|Esat Pasa's]] [[III Corps (Ottoman Empire)|III Corps]]. ||| Prelude ||| Defending force ||| Ottoman deployment +0 Battle of Sharon ||| Sinai and Palestine Campaign ||| The '''Battle of Sharon''' fought between 19 and 25 September 1918, began the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] half a day before the [[Battle of Nablus (1918)|Battle of Nablus]], in which large formations engaged and responded to movements by the opposition, according to pre-existing plans, in the last months of the [[Sinai and Palestine Campaign]] of [[World War I]]. The fighting took place over a wide area from the [[Mediterranean Sea]] east to the [[Rafat, Jerusalem|Rafat]] [[Salients, re-entrants and pockets|salient]] in the [[Judean Hills]]. Here the [[Egyptian Expeditionary Force]] (EEF) [[XXI Corps (United Kingdom)|XXI Corps]] with the [[France|French]] [[brigade]] sized ''Détachment Français de Palestine et de Syrie'' attacked the [[Yildirim Army Group]] [[Eighth Army (Ottoman Empire)|Eighth Army]]'s [[XXII Corps (Ottoman Empire)|XXII Corps]] and [[German Empire|German]] [[Asia Korps|Asia Corps]]. The Battle of Sharon extended well behind the Ottoman front lines when the [[Desert Mounted Corps]] rode through a gap in the front line across the Plain of Sharon to occupy the [[Jezreel Valley|Esdraelon Plain]]. Meanwhile, during the Battle of Nablus the [[XX Corps (United Kingdom)|XX Corps]] attacked [[Nablus]] while [[Chaytor's Force]] held the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]] before advancing to secure bridges and fords across the [[Jordan River]], to continue the [[encirclement]] the defenders in the Judean Hills. Subsequently Chaytor's Force advanced against the [[Fourth Army (Ottoman Empire)|Fourth Army]] to capture [[Salt, Jordan|Es Salt]] and [[Amman]] after the [[Second Battle of Amman]]. ||| ||| ||| +0 Battle of Sheriffmuir ||| Battle of Preston (1715) ||| The period was fatal in the extreme to the Jacobite Pretender. The whole body of his adherents in the south had fallen into the hands of generals Willis and Carpenter at [[Battle of Preston (1715)|Preston]], and Inverness, with all the adjacent country, had been recovered to the government, through the exertions of pro-government clans including the Earl of Sutherland, Fraser Lord Lovat, the Rosses, the Munros, and the Forbeses. ||| Aftermath ||| ||| +0 Battle of Spanish Fort ||| Battle of Fort Blakely ||| With Spanish Fort's fall on April 8 and Gen. [[Robert E. Lee]]'s surrender at [[Appomattox Court House National Historical Park|Appomattox Court House]] the next day (unrelated to the fall of Spanish Fort, as Lee's forces were in Virginia), Fort Blakely remained the last organized resistance to the Union east of the Mississippi River. However, as early as April 1, when Spanish Fort's fall became inevitable, Union forces had begun moving north in order to concentrate on Fort Blakely, which eventually succumbed late on April 9 in the [[Battle of Fort Blakely]]. ||| ||| ||| +0 Battle of Speyerbach ||| Battle of Blenheim ||| This French victory has been overshadowed in history by their colossal defeat in the [[Battle of Blenheim]] nine months later. ||| Aftermath ||| ||| +0 Battle of Stalingrad ||| Battle of Moscow ||| Stalingrad's significance has been downplayed by some historians, who point either to the [[Battle of Moscow]] or the [[Battle of Kursk]] as more strategically decisive. {{fact|date=November 2015}}Others maintain that the destruction of an entire army (the largest killed, captured, wounded figures for Axis soldiers, nearly 1 million, during the war) and the frustration of Germany's grand strategy made the battle a watershed moment. At the time, however, the global significance of the battle was not in doubt. Writing in his diary on 1 January 1943, British General [[Alan Brooke]], [[Chief of the Imperial General Staff]], reflected on the change in the position from a year before: ||| Significance ||| ||| +0 Battle of Stalingrad ||| Second Battle of El Alamein ||| At that point, the British had won the [[Second Battle of El Alamein|Battle of El Alamein]] in November 1942. However, there were only about 50,000 German soldiers at El Alamein in Egypt, while at Stalingrad 200,000 Germans had been lost. ||| Significance ||| ||| +0 Battle of Staunton River Bridge ||| Siege of Petersburg ||| During the month of June 1864, Confederate General [[Robert E. Lee]] was commanding the [[Army of Northern Virginia]] in the [[Siege of Petersburg|defense]] of [[Petersburg, Virginia]], against the Union siege under the command of Union [[Lieutenant General (United States)|Lt. Gen.]] [[Ulysses S. Grant]]. The Confederate forces were dependent on the flow of supplies from the south and west along the South Side and [[Richmond and Danville Railroad]] lines, and Grant realized that without these supplies the Confederates would be forced to abandon Petersburg. ||| Background ||| ||| +0 Battle of Stockach (1799) ||| Battle of Neerwinden (1793) ||| Although the [[First Coalition]] forces achieved several initial victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Stockach (1799) ||| First Battle of Zurich ||| |battles = [[Battle of Ostrach|Ostrach]] - Stockach-[[Battle of Feldkirch|Feldkirch]]-[[Battle of Winterthur (1799)|Winterthur]]-[[First Battle of Zurich|First Zurich]]-[[Second Battle of Zurich|Second Zurich]]-[[Battle of Linth| ||| ||| ||| +0 Battle of Stones River ||| Battle of Antietam ||| Total casualties in the battle were 24,645: 12,906 on the Union side and 11,739 for the Confederates. this was the highest percentage of killed and wounded of any major battle in the Civil War, higher in absolute numbers than the infamous bloodbaths at [[Battle of Shiloh|Shiloh]] and [[Battle of Antietam|Antietam]] earlier that year. ||| Aftermath ||| ||| +0 Battle of Stones River ||| Battle of Shiloh ||| At dawn on December 31, about 6 a.m., Confederate [[William J. Hardee]] struck first, attacking the Union's right flank with the division of Maj. Gen. [[John P. McCown]], before many in Union Brig. Gen. [[Richard W. Johnson]]'s division had finished their breakfast. This was the third major battle, after [[Battle of Fort Donelson|Fort Donelson]] and [[Battle of Shiloh|Shiloh]], in which an early morning attack caught a Union army by surprise. The 10,000 Confederates who massed on their left attacked in one massive wave. McCook's deceptive campfires and the relative inexperience of McCown caused his division to drift away to the left, which left a gap in the front, but the gap was filled seamlessly by the division coming up from his rear, under Maj. Gen. [[Patrick Cleburne|Patrick R. Cleburne]]. These two divisions swept all resistance aside. Several artillery batteries were captured without having time to fire a shot. Johnson's division, on the right, suffered over 50% casualties. His neighboring Union division to the left, under Brig. Gen. [[Jefferson C. Davis]], was able to hold only briefly. ||| Battle ||| December 31, 1862 ||| +0 Battle of Tabsor ||| Battle of Nablus (1918) ||| The '''Battle of Tabsor''' was fought on 19–20 September 1918 beginning the [[Battle of Sharon]], which along with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the infantry phase of the Battle of Sharon the [[British Empire]] [[60th (2/2nd London) Division|60th Division]], [[XXI Corps (United Kingdom)|XXI Corps]] attacked and captured the section of the front line nearest the Mediterranean coast under cover of an intense artillery barrage including a [[creeping barrage]] and naval gunfire. This [[Egyptian Expeditionary Force]] (EEF) victory over the entrenched [[Eighth Army (Ottoman Empire)|Ottoman Eighth Army]], composed of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] soldiers, began the Final Offensive, ultimately resulting in the destruction of the equivalent of one [[Military of the Ottoman Empire|Ottoman army]], the retreat of what remained of two others, and the capture of many thousands of prisoners and many miles of territory from the Judean Hills to the border of modern-day Turkey. After the end of the battle of Megiddo, the [[Desert Mounted Corps]] pursued the retreating soldiers to [[Capture of Damascus (1918)|Damascus]], six days later. By the time the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire five weeks later, [[Pursuit to Haritan|Aleppo]] had been captured. ||| ||| ||| +0 Battle of Tabsor ||| Battle of Sharon ||| The '''Battle of Tabsor''' was fought on 19–20 September 1918 beginning the [[Battle of Sharon]], which along with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the infantry phase of the Battle of Sharon the [[British Empire]] [[60th (2/2nd London) Division|60th Division]], [[XXI Corps (United Kingdom)|XXI Corps]] attacked and captured the section of the front line nearest the Mediterranean coast under cover of an intense artillery barrage including a [[creeping barrage]] and naval gunfire. This [[Egyptian Expeditionary Force]] (EEF) victory over the entrenched [[Eighth Army (Ottoman Empire)|Ottoman Eighth Army]], composed of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] soldiers, began the Final Offensive, ultimately resulting in the destruction of the equivalent of one [[Military of the Ottoman Empire|Ottoman army]], the retreat of what remained of two others, and the capture of many thousands of prisoners and many miles of territory from the Judean Hills to the border of modern-day Turkey. After the end of the battle of Megiddo, the [[Desert Mounted Corps]] pursued the retreating soldiers to [[Capture of Damascus (1918)|Damascus]], six days later. By the time the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire five weeks later, [[Pursuit to Haritan|Aleppo]] had been captured. ||| ||| ||| +0 Battle of Tali-Ihantala ||| Battle of Narva (1944) ||| On July 6 the Soviet forces had some success, despite the Finnish 6th Division having 18 artillery battalions and one heavy battery for their defence. However, the Soviets were thrown back the following day, and their counterattacks at 13:30 and 19:00 that day did not amount to anything. By July 7, the focus of the Soviet attacks was already moving to the area of Vuoksi, and the Soviets now began transferring their best troops to the [[Battle of Narva (1944)|Narva front]] in Estonia, to fight the Germans and the [[20 SS|Estonians]]. From July 9, the Soviet troops no longer attempted a break-through. Nevertheless, some fighting continued. Soviet forces were ordered to cease offensive operations and take up defensive positions on July 10 as the Stavka redeployed forces to the Baltic fronts, where the Red Army was encountering 'fierce German and Baltic resistance.' ||| Ihantala: July 1 – July 9 ||| ||| +0 Battle of Tannenberg Line ||| Battle of Verdun ||| By 2 August, the 2nd Shock Army had re-deployed and assaulted, using the same tactics as previously. The men of the '''Nederland''' who survived the artillery bombardment, retreated down the slopes of the Grenadier Hill pursued by the Soviet units. In Steiner's memoirs, the intensity of the fire and the nature of the battles reminded him of the [[Battle of Verdun]]. ||| Combat ||| Finale ||| +0 Battle of Tarawa ||| Battle of the Alamo ||| | text = Last week some 2,000 or 3,000 United States Marines, most of them now dead or wounded, gave the nation a name to stand beside those of [[Battles of Lexington and Concord|Concord Bridge]], the {{USS|Bonhomme Richard|1765|2}}, the [[Battle of the Alamo|Alamo]], [[Battle of the Little Bighorn|Little Bighorn]], and [[Battle of Belleau Wood|Belleau Wood]]. The name was Tarawa. ||| Aftermath ||| ||| +0 Battle of Tayabas ||| Battle of Alapan ||| On December 14, 1897, Emilio Aguinaldo and [[Fernando Primo de Rivera, 1st Marquis of Estella|Gov. Gen. Primo de Rivera]] signed the [[Pact of Biak-na-Bato]] ending the first phase of the Philippine revolution. However, many Generals of the revolution, Like [[Paciano Rizal]] and Miguel Malvar, rejected the pact and continued the fight against Spain. Malvar took command of the disoriented and disillusioned forces of the southern provinces of [[Batangas]], [[Tayabas Province|Tayabas]] and [[Laguna (province)|Laguna]] together with Rizal, but in the end, he rounded up his followers and left for Hong Kong together with other key revolutionaries. In mid-May, 1898, Aguinaldo returned and defeated the Spaniards at [[Battle of Alapan|Alapan]] While Malvar came shortly after, gathering once again, an army from Batangas, Aguinaldo appointed him Division General and tasked him to liberate the province of Tayabas and Batangas from the remaining Spaniards there. ||| Background ||| ||| +0 Battle of Thermopylae ||| Battle of Marathon ||| The '''Battle of Thermopylae''' ({{IPAc-en|θ|ər|ˈ|m|ɒ|p|ɨ|l|iː}} {{respell|thər|MOP|i-lee}}; [[Greek language|Greek]]: {{lang|grc|Μάχη τῶν Θερμοπυλῶν}}, ''Machē tōn Thermopylōn'') was fought between an alliance of [[Ancient Greece|Greek]] [[city-state]]s, led by [[Leonidas I|King Leonidas]] of [[Sparta]], and the [[Achaemenid Empire|Persian Empire]] of [[Xerxes I]] over the course of three days, during the [[second Persian invasion of Greece]]. It took place simultaneously with the naval [[Battle of Artemisium|battle at Artemisium]], in August or September 480 BC, at the narrow coastal pass of [[Thermopylae]] ('The Hot Gates'). The Persian invasion was a delayed response to the defeat of the [[first Persian invasion of Greece]], which had been ended by the [[Classical Athens|Athenian]] victory at the [[Battle of Marathon]] in 490 BC. Xerxes had amassed a huge army and navy, and set out to conquer all of Greece. The Athenian general [[Themistocles]] had proposed that the allied Greeks block the advance of the Persian army at the pass of Thermopylae, and simultaneously block the Persian navy at the Straits of [[Battle of Artemisium|Artemisium]]. ||| ||| ||| +0 Battle of Thermopylae ||| Battle of Salamis ||| After this engagement, the Greek navy—under the command of the Athenian politician Themistocles—at Artemisium received news of the defeat at Thermopylae. Since the Greek strategy required both Thermopylae and Artemisium to be held, and given their losses, it was decided to withdraw to [[Salamis Island|Salamis]]. The Persians overran [[Boeotia]] and then captured the evacuated Athens. The Greek fleet—seeking a decisive victory over the Persian armada—attacked and defeated the invaders at the [[Battle of Salamis]] in late 480 BC. Fearful of being trapped in Europe, Xerxes withdrew with much of his army to Asia (losing most to starvation and disease), leaving [[Mardonius]] to attempt to complete the conquest of Greece. However, the following year saw a Greek army decisively defeat the Persians at the [[Battle of Plataea]], thereby ending the Persian invasion. ||| ||| ||| +0 Battle of Thermopylae ||| World War II ||| Today, the pass is not near the sea but is several kilometres inland because of [[Sedimentation#Geology|sedimentation]] in the Malian Gulf. The old track appears at the foot of hills around the plain, flanked by a modern road. Recent [[core sample]]s indicate that the pass was only 100 meters wide and the waters came up to the gates; '''Little do the visitors realize that the battle took place across the road from the monument.''' The pass still is a natural defensive position to modern armies, and [[Commonwealth of Nations|British Commonwealth]] forces in [[World War II]] made a [[Battle of Thermopylae (1941)|defense in 1941]] against the [[Nazi Germany|Nazi]] invasion metres from the original battlefield. ||| Strategic and tactical considerations ||| Topography of the battlefield ||| +0 Battle of Timor ||| Battle of Singapore ||| The Japanese high command sent a highly regarded veteran of the [[Battle of Malaya|Malayan campaign]] and the [[Battle of Singapore]], a major known as the 'Tiger of Singapore' (or 'Singapore Tiger'; his real name is unknown), to Timor. On 22 May, the 'Tiger'—mounted on a white horse—led a Japanese force towards [[Remexio]]. An Australian patrol, with Portuguese and Timorese assistance, staged an ambush and killed four or five of the Japanese soldiers. During a second ambush, an Australian sniper shot and killed the 'Tiger'. Another 24 Japanese soldiers were also killed, and the force retreated to Dili. ||| Battle ||| Australian commandos continue to resist, February – August 1942 ||| +0 Battle of Tolentino ||| Battle of Scapezzano ||| On the second day, fog delayed the start of battle until 7 o'clock. The day started well for Murat as the Neapolitan army managed to finally take Rancia Castle as well as the hills of Cantagallo. From here, the Neapolitans staged a further attack on the Austrian positions. Two Neapolitan infantry divisions, including Murat's Guard division, descended from Monte Milone against the Austrian left flank. However, the Neapolitans made the mistake of forming squares expecting a swift cavalry counterattack, which never happened. The Austrian infantry delivered a series of volleys, supported by devastating artillery fire. Meanwhile, General Mohr had also repulsed an attack on the Austrian right and the entire Neapolitan line fell back to Pollenza. With the result of the battle still undecided, Murat received word Neipperg had defeated Carascosa at the [[Battle of Scapezzano]] and was approaching. To make matters worse, he received false rumours that a British fleet had just unloaded a Sicilian army in the south of Italy, threatening his line of retreat. Unbeknownst to Murat, the British fleet were in fact sailing to blockade Naples and Ancona. Sensing the inevitable, Murat sounded the retreat, and the fighting ended. Murat fell back to Naples, but with the Austrians approaching by land and the British by sea, he had no choice but to flee to [[Corsica]] disguised as a Danish sailor. The battle proved decisive; on 20 May 1815, Austria and Naples concluded the [[Treaty of Casalanza]], restoring [[Ferdinand I of the Two Sicilies|Ferdinand IV]] to the throne. ||| Battle ||| ||| +0 Battle of Tolosa (1813) ||| Battle of the Pyrenees ||| In the late spring of 1813, the Allied army of [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]] launched a powerful offensive designed to drive King [[Joseph Bonaparte]]'s [[First French Empire|Imperial French]] army from Spain. On 21 June, Wellington's army inflicted a decisive defeat on Joseph's troops at the [[Battle of Vitoria]]. As the defeated French armies withdrew toward the [[Pyrenees]], Wellington tried to intercept Foy's column in the north and [[Bertrand Clausel]]'s forces in the south. Neither Foy nor Clausel had fought at Vitoria. Graham caught up with Foy's column, but after some fighting, the French got away. Clausel also managed to avoid being cut off, but except for the [[Siege of San Sebastian|Sieges of San Sebastian]] and [[Siege of Pamplona (1813)|Pamplona]], northern Spain was soon free of French occupation. The next pitched battle was the [[Battle of the Pyrenees]] which began on 25 July. ||| ||| ||| +0 Battle of Tora Bora ||| Death of Osama bin Laden ||| The allied forces overran [[Taliban]] and al-Qaeda positions and heard bin Laden's voice in intercepted radio transmissions several times, but they failed to kill or capture him. Bin Laden escaped to the Federated Tribal Areas of [[Pakistan]], where he would stay for nearly a decade before being [[Death of Osama bin Laden|located and killed]] by Navy SEALs of the United States Navy Special Warfare Development Group in May 2011. ||| ||| ||| +0 Battle of Tory Island ||| Action of 24 October 1798 ||| An abortive effort to support the French invasion fleet was also made by the Navy of the [[Batavian Republic]], which despatched the small frigates [[Dutch frigate Furie|''Furie'']] and [[Dutch frigate Waakzaamheid|''Waakzaamheid'']] to Ireland with military supplies on 24 October. Within hours of leaving port, both these ships were intercepted and captured by the British frigate [[HMS Sirius (1797)|HMS ''Sirius'']] under the young [[Captain (Royal Navy)|Captain]] [[Sir Richard King, 2nd Baronet|Richard King]] at the [[Action of 24 October 1798]]. ||| Savary's squadron ||| ||| +0 Battle of Tory Island ||| French Revolution ||| The rhetoric of the [[French Revolution]] inspired many Irishmen to fight for similar principles of liberty, equality, and brotherhood in their own nation; liberty in this context largely meant independence from [[Kingdom of Great Britain|Great Britain]]. ||| Background ||| ||| +0 Battle of Tory Island ||| Glorious First of June ||| French political divisions made organising an operation against Ireland difficult. The process was further hampered by the French Atlantic Fleet's defeat in 1794 at the [[Glorious First of June]] and the disastrous [[Croisière du Grand Hiver]] operation in 1795. Having lost many of its best officers during the political purges of [[Reign of Terror|The Terror]], these defeats bred a negative mentality in the French Navy, discouraging adventurous strategic thinking. ||| Background ||| Invasion attempts ||| +0 Battle of Toulouse (1814) ||| Battle of Bayonne ||| On the morning of 12 April a delegation of city officials handed over the city to the Allied army. That afternoon, Wellington got news via Bordeaux from [[Frederick Cavendish Ponsonby|Frederick Ponsonby]] of [[Napoleon]]'s abdication. A few hours later, this was confirmed when the official couriers arrived from Paris. On 17 April, Soult finally agreed to an armistice.{{sfn|Glover|2003|pp=334-335}} In the meantime, there was one more pointless bloodletting at the [[Battle of Bayonne]], caused by the French commander [[Pierre Thouvenot|Thouvenot's]] refusal to accept that the war was lost with the abdication of Napoleon. ||| Battle ||| Armistice ||| +0 Battle of Toulouse (1814) ||| Battle of Leipzig ||| The city of Toulouse was garrisoned by around 42,000 French troops, under the command of [[Marshal Soult]], Duke of [[Dalmatia]]. Imperial forces across southern France were greatly demoralised by fighting the Anglo-Allied forces in their own country, and were further shaken by news of repeated Coalition victories in northern and eastern France. Allied campaigning had gradually pushed French forces out of [[Spain]] during 1813, after endless [[guerrilla warfare|guerrilla wars]] which had resulted in more than 300,000 French casualties between 1808 and late 1813. The French suffered greater losses in manpower in southern France, as Napoleon diverted many southern forces to bolster his troops facing the Coalition armies invading northern and eastern France after an allied victory at [[Battle of Leipzig|Leipzig]] in October, 1813. ||| Prelude ||| ||| +0 Battle of Trafalgar ||| Battle of Ulm ||| The battle took place the day after the [[Battle of Ulm]], and Napoleon did not hear about it for weeks—the [[Grande Armée]] had left Boulogne to fight Britain's allies before they could combine a huge force. He had tight control over the Paris media and kept the defeat a closely guarded secret for over a month, at which point newspapers proclaimed it to have been a tremendous victory. ||| Results of the battle ||| ||| +0 Battle of Trenton ||| Battle of Long Island ||| In early December 1776, [[United States|American]] morale was very low. The Americans had been [[Battle of Long Island|ousted from New York]] by the British and their [[Hessian (soldiers)|Hessian]] auxiliaries, and the Continental Army was forced to retreat across New Jersey. Ninety percent of the Continental Army soldiers who had served at Long Island were gone. Men had deserted, feeling that the cause for independence was lost. Washington, Commander-in-Chief of the Continental Army, expressed some doubts, writing to his cousin in Virginia, 'I think the game is pretty near up.' ||| Background ||| ||| +0 Battle of Tricamarum ||| Battle of Ad Decimum ||| The '''Battle of Tricamarum''' took place on December 15, 533 between the armies of the [[Byzantine Empire]], under [[Belisarius]], and the [[Vandal Kingdom]], commanded by King [[Gelimer]], and his brother [[Tzazon]]. It followed the Byzantine victory at the [[Battle of Ad Decimum]], and eliminated the power of the Vandals for good, completing the 'Reconquest' of [[North Africa]] under the Byzantine Emperor [[Justinian I]]. The main contemporary source for the battle is [[Procopius]], ''De Bello Vandalico'', which occupies Books III and IV of his magisterial ''Wars of Justinian''. ||| ||| ||| +0 Battle of Tsaritsyn ||| Battle of Stalingrad ||| For these and later actions in the city of Tsaritsyn region, the city was renamed ''Stalingrad'' in 1925 to honor Stalin and his actions. About 17 years later the city would once again be a battlefield, this time for the decisive battle of the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]], the bloody [[Battle of Stalingrad]]. The city was renamed in 1961 to [[Volgograd]]. ||| Aftermath ||| ||| +0 Battle of Ulundi ||| Battle of Gingindlovu ||| As a result of the decisive Zulu victory at the [[battle of Isandlwana]] in January over Chelmsford's main column and the consequent defeat of the first invasion of Zululand, the British found themselves forced to launch a new invasion of Zululand. In April 1879 despite recent battles at [[Battle of Kambula|Kambula]] and [[Battle of Gingindlovu|Gingindlovu]] which had resulted in serious losses for the Zulus, the British were back at their starting point. News of the defeat at Isandlwana had hit Britain hard. In response, a flood of reinforcements had arrived in [[KwaZulu-Natal Province|Natal]] with which Chelmsford prepared a second invasion of Zululand. [[Frederic Augustus Thesiger, 2nd Baron Chelmsford|Lord Chelmsford]] was aware by mid June that [[Garnet Joseph Wolseley, 1st Viscount Wolseley|Sir Garnet Wolseley]] had superseded his command of the British forces. Chelmsford was ordered by Her Majesty's Government to '...submit and subordinate your plans to his control.' ||| Prelude ||| ||| +0 Battle of Usagre ||| Battle of Albuera ||| A week after the very bloody [[Battle of Albuera]], Marshal [[Nicolas Jean de Dieu Soult|Nicolas Soult]] sent Latour-Maubourg's cavalry to discover the position of Marshal [[William Carr Beresford]]'s [[Anglo-Portuguese Army|Allied army]]. On 25 May, the French cavalry came upon a line of Portuguese cavalry vedettes on a ridge behind the village of Usagre. Lumley posted the bulk of his forces behind the ridge, out of sight. ||| Background ||| ||| +0 Battle of Vaasa ||| Battle of Nykarleby ||| While the Swedish army was celebrating its victory at [[Battle of Nykarleby|Nykarleby]], another Swedish force, led by [[Johan Bergenstråhle]], landed in [[Vaasa]]. Adlercreutz had forgot about this landing and didn't send any troops to help Bergenstråhle. The Swedes, numbering about 1,200, landed just outside Vaasa, but the Russians, strengthened by th arrival of the retreating Russian main army turned out to be too strong. About 1,000 men managed to retreat northwards after some harsh street battles. The Swedes then joined up with the Swedish main force in Nykarleby. The Swedish commander Bergenstråhle was captured by the Russians. ||| ||| ||| +0 Battle of Vella Gulf ||| Battle of Kolombangara ||| The American forces were in a campaign of [[Leapfrogging (strategy)|island hopping]] their way towards Japan. They had [[Guadalcanal campaign|taken Guadalcanal]] the past year. After their victory in the [[Battle of Kolombangara]] on 13 July, the Japanese had established a powerful garrison of 12,400 around [[Vila, Solomon Islands|Vila]] at the southern tip of the island. This was the principal port on that island, and it supplied at night using fast destroyers as transports known as the '[[Tokyo Express]]'. Three supply runs on 19 July, 29 July, and 1 August were successful deliveries. However, by 1 August the Americans were driving the Japanese out of the airfield on [[New Georgia]] Island just south of Kolombangara. ||| Background ||| ||| +0 Battle of Vevi (1941) ||| Battle of Kleisoura Pass ||| |battles=[[Battle of Metaxas Line|Metaxas Line]] - [[Battle of Pisoderi Pass|Pisoderi Pass]] - Vevi - [[Battle of Ptolemaida|Ptolemaida]] - [[Battle of Kleisoura Pass|Kleisoura Pass]] - [[Battle of Siatista Pass|Siatista Pass]] - [[Battle of Lake Kastoria|Lake Kastoria]] - [[Battle of Servia|Servia]] - [[Battle of Olympus (1941)|Olympus]] - [[Battle of Thermopylae (1941)|Thermopylae]] - [[Battle of Corinth Canal|Corinth Canal]] ||| ||| ||| +0 Battle of Vevi (1941) ||| Battle of Thermopylae (1941) ||| |battles=[[Battle of Metaxas Line|Metaxas Line]] - [[Battle of Pisoderi Pass|Pisoderi Pass]] - Vevi - [[Battle of Ptolemaida|Ptolemaida]] - [[Battle of Kleisoura Pass|Kleisoura Pass]] - [[Battle of Siatista Pass|Siatista Pass]] - [[Battle of Lake Kastoria|Lake Kastoria]] - [[Battle of Servia|Servia]] - [[Battle of Olympus (1941)|Olympus]] - [[Battle of Thermopylae (1941)|Thermopylae]] - [[Battle of Corinth Canal|Corinth Canal]] ||| ||| ||| +0 Battle of Vianden ||| Battle of the Bulge ||| When the Germans launched the [[Battle of the Bulge]] one month later, the 30 men of the Luxembourgish militia, being hopelessly outnumbered, abandoned Vianden and withdrew to the unoccupied south of the country. Most of them continued their engagement by helping the U.S. Forces during the Battle of the Bulge. ||| Aftermath ||| ||| +0 Battle of Vienna ||| Siege of Vienna ||| Capturing the city of [[Vienna]] had long been a strategic aspiration of the Ottoman Empire, because of its interlocking control over Danubian (Black Sea to Western Europe) southern Europe, and the overland (Eastern Mediterranean to Germany) trade routes. During the years preceding this second siege (the [[Siege of Vienna|first]] had taken place in 1529), under the auspices of grand viziers from the influential [[Köprülü family]], the Ottoman Empire undertook extensive logistical preparations, including the repair and establishment of roads and bridges leading into the Holy Roman Empire and its logistical centres, as well as the forwarding of ammunition, cannon and other resources from all over the Ottoman Empire to these centres and into the Balkans. Since 1679, the [[Great Plague of Vienna|plague]] had been raging in Vienna. ||| Prelude ||| ||| +0 Battle of Villalar ||| Peninsular War ||| The Battle of Villalar would later be claimed by Spanish liberals as the blow that extinguished Castilian liberties in favor of autocratic Spanish monarchy. This view started in the 1820s, as [[Juan Martín Díez]] '''El Empecinado''', a nationalistic liberal military leader during the [[Peninsular War]], led an expedition to find and exhume the remains of the three Castilian leaders executed in 1521. Later, some city councils called for celebrations at Villalar in the 1920s. After the end of Franco's dictatorship, this view became more generalized. The [[Autonomous communities of Spain|autonomous community]] of [[Castile and León]] made April 23 the official holiday of [[Castile and León Day]] in 1986, although it had been popularly celebrated since 1976. It is celebrated yearly at Villalar, which has since the [[Second Spanish Republic]] renamed itself [[Villalar de los Comuneros]], honouring the Castilian rebels. ||| Legacy ||| ||| +0 Battle of Vitoria ||| French invasion of Russia ||| Wellington spent the winter reorganising and strengthening his forces. By contrast, Napoleon withdrew many soldiers to rebuild his main army after his [[French invasion of Russia|disastrous invasion]] of [[Russia]]. By 20 May 1813 Wellington marched 121,000 troops (53,749 British, 39,608 Spanish and 27,569 Portuguese{{sfnp|Gates|2002|p=521}}) from northern [[Portugal]] across the mountains of northern Spain and the [[Esla River]] to outflank Marshal Jourdan's army of 68,000, strung out between the [[Douro]] and the [[Tagus]]. The French retreated to Burgos, with Wellington's forces marching hard to cut them off from the road to France. Wellington himself commanded the small central force in a strategic feint, while [[Thomas Graham, 1st Baron Lynedoch|Sir Thomas Graham]] conducted the bulk of the army around the French right flank over landscape considered impassable. ||| Background ||| ||| +0 Battle of Voronezh (1942) ||| Battle of Voronezh (1943) ||| The Soviets [[Battle of Voronezh (1943)|recaptured the city]] in 1943. ||| ||| ||| +0 Battle of Voronezh (1943) ||| Battle of Voronezh (1942) ||| The '''1943 battle of Voronezh''' (often credited in [[Russian language|Russian]] as the '''liberation of Voronezh''' (освобождение Воронежа)) was a Soviet [[counter-offensive]] on recapturing the city of [[Voronezh]] during the [[Ostrogozhsk-Rossoshansk operation|Ostrogozhsk-Rossoshansk]] and [[Voronezh-Kastornensk operation|Voronezh-Kastornensk]] operations on the [[Eastern Front (World War II)|Eastern Front of World War II]]. The Nazis had captured the city in [[Battle of Voronezh (1942)|a 1942 battle]]. ||| ||| ||| +0 Battle of Vyborg Bay (1944) ||| Winter War ||| The Soviet offensive against the Finns started on June 10 and managed to break through the Finnish defensive lines at [[Beloostrov|Valkeasaari]] and [[Kuuterselkä]] on June 15. This forced the Finnish forces on the Karelian Isthmus to withdraw to the still incomplete Finnish [[VKT-line]]. Although Soviet advance forces captured [[Vyborg|Viborg]] on June 20, the main offensive got stuck in the stubborn Finnish defense of the [[Battle of Tali-Ihantala|Tali-Ihantala]] region. Despite heavy fighting and use of fresh reserves, the [[VKT-line]] bent but did not break, forcing the [[Leningrad Front]] to seek alternate routes past the Finnish defenses. The Leningrad Front followed roughly the same plan as in the [[Winter War]] and made plans for a crossing of Viborg Bay. ||| Background ||| ||| +0 Battle of Wagram ||| French Revolutionary Wars ||| With more than 300,000 combatants, Wagram was the largest battle in European history up to its time. With at least 72,000 casualties on both sides, it was also the bloodiest military engagement of the entire [[French Revolutionary Wars|Revolutionary]] and [[Napoleonic Wars]] thus far. The unusually high casualty rate was due mainly to an unprecedented concentration of artillery, on a flat battlefield, where the deadly [[roundshot]] - each army fired at least 90,000 during the two days of battle - was most effective. ||| Aftermath ||| Casualties ||| +0 Battle of Waterloo ||| Waterloo Campaign: Quatre Bras to Waterloo ||| After the [[Battle of Quatre Bras]] Wellington withdrew from [[Waterloo Campaign: Quatre Bras to Waterloo|Quatre Bras to Waterloo]]. After the simultaneous [[Battle of Ligny]] the [[Waterloo Campaign: Ligny through Wavre to Waterloo|Prussians withdrew parallel to Wellington]], drawing a third part of Napoleon's forces away from Waterloo to the separate and simultaneous [[Battle of Wavre]]. Upon learning that the Prussian army was able to support him, Wellington decided to offer battle on the [[Mont-Saint-Jean, Belgium|Mont-Saint-Jean]] [[escarpment]], across the Brussels road. Here he withstood repeated attacks by the French throughout the afternoon, aided by the progressively arriving Prussians. In the evening Napoleon committed his last reserves to a desperate final attack, which was narrowly beaten back. With the Prussians breaking through on the French right flank Wellington's Anglo-allied army counter-attacked in the center, and the French army was routed. ||| ||| ||| +0 Battle of White Oak Road ||| Battle of Dinwiddie Court House ||| The '''Battle of White Oak Road''', also known as '''The Battle of Hatcher's Run, Gravelly Run, Boydton Plank Road, White Oak Ridge''' was fought on March 31, 1865, during the [[American Civil War]] at the end of the [[Siege of Petersburg|Richmond-Petersburg Campaign]] and in the beginning stage of the [[Appomattox Campaign]]. Along with the [[Battle of Dinwiddie Court House]] which was fought simultaneously on March 31, the battle involved the last offensive action by [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] to stop the progress of [[Lieutenant general|Lieutenant General]] [[Ulysses S. Grant|Ulysses S. Grant's]] [[Union Army]] ([[Army of the Potomac]], [[Union Army of the Shenandoah|Army of the Shenandoah]] and [[Army of the James]]). Grant's forces were moving to cut the remaining Confederate supply lines and to force the Confederates to extend their defensive lines at [[Siege of Petersburg|Petersburg, Virginia]] and [[Richmond in the Civil War|Richmond, Virginia]] to the breaking point, if not to force them into a decisive open field battle. ||| ||| ||| +0 Battle of Wyoming ||| French and Indian War ||| In 1777, the British General [[John Burgoyne]] led a [[Saratoga campaign|campaign to gain control of the Hudson River]] in the [[American Revolutionary War]]. Burgoyne was weakened by loss of time and forces after the [[Battle of Oriskany]] and forced to surrender after the [[Battles of Saratoga]] in October. News of his surrender prompted France to enter the war as [[Franco-American Alliance|an American ally]]. Concerned that the French might attempt to retake parts of [[New France]] that had been lost in the [[French and Indian War]] (something they did not know the Franco-American [[Treaty of Alliance (1778)|Treaty of Alliance]] specifically forbade), the British adopted a defensive stance in [[Province of Quebec (1763-1791)|Quebec]]. They recruited [[Loyalist (American Revolution)|Loyalist]]s and allied Indians to engage in a frontier war along the northern and western borders of the [[Thirteen Colonies]]. ||| Background ||| ||| +0 Battle of Yongjiazhen ||| Pacific War ||| The '''Battle of Yongjiazhen''' (雍家镇战斗) was fought during the aftermath of [[Pacific War|World War II]] in the Yongjiazhen (雍家镇) region of central [[Anhui]], [[China]] between Communist forces and [[Kuomintang]] forces who had allied with the Japanese. The battle was part of the [[Chinese Civil War]], resulting in a victory for the [[People's Liberation Army]]. ||| ||| ||| +0 Battle of Zela ||| Battle of the Nile ||| After the defeat of the Ptolemaic forces at the [[Battle of the Nile (47 BC)|Battle of the Nile]], Caesar left [[Egypt]] and travelled through Syria, Cilicia and Cappadocia to fight Pharnaces, son of [[Mithridates VI]]. ||| Prelude ||| ||| +0 Battle of the Argenta Gap ||| Operation Baytown ||| [[Allied invasion of Sicily|Operation Husky]] — the [[Allied invasion of Sicily|invasion of Sicily]] in July 1943 — was successful, serving as a springboard for the invasion of the mainland. In September, the first Allied troops to [[Allied invasion of Italy|land in Italy]] were of the [[Eighth Army (United Kingdom)|British Eighth Army]] under the then General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]], in [[Operation Baytown]]. Further landings on 9 September 1943 saw the [[Allied invasion of Italy#Salerno landings|main attack force landing]], despite the Italian surrender to the Allied forces on the previous day. After securing the beachheads, the [[United States Army North|U.S. Fifth Army]] began its advance northwards. ||| Background ||| ||| +0 Battle of the Atlantic ||| Battle of Dunkirk ||| *British destroyers were diverted from the Atlantic. The [[Norwegian Campaign]] and the [[Fall Gelb|German invasion of the Low Countries]] and France imposed a heavy strain on the Royal Navy's destroyer flotillas. Many older destroyers were withdrawn from convoy routes to support the Norwegian campaign in April and May and then diverted to the English Channel to support the withdrawal from Dunkirk. By the summer of 1940, Britain faced a serious threat of invasion. Many destroyers were held in the Channel, ready to repel a German invasion. They suffered heavily under air attack by the ''Luftwaffe''{{'}}s ''[[Fliegerführer Atlantik]]''. Seven destroyers were lost in the Norwegian campaign, another six in the [[Battle of Dunkirk]] and a further 10 in the Channel and North Sea between May and July, many to air attack because they lacked an adequate anti-aircraft armament. Dozens of others were damaged. ||| British situation ||| ||| +0 Battle of the Atlantic ||| Battle of the River Plate ||| In the South Atlantic, British forces were stretched by the cruise of ''Admiral Graf Spee'', which sank nine merchant ships of {{GRT|50000}} in the South Atlantic and Indian Oceans during the first three months of war. The British and French formed a series of hunting groups including three [[battlecruiser]]s, three aircraft carriers, and 15 cruisers to seek the raider and her sister ''Deutschland'', which was operating in the North Atlantic. These hunting groups had no success until ''Admiral Graf Spee'' was [[Battle of the River Plate|caught off the mouth of the River Plate]] by an inferior British force. After suffering damage in the subsequent action, she took shelter in neutral Montevideo harbour and was [[Scuttling|scuttled]] on December 17, 1939. ||| Early skirmishes (September 1939 – May 1940) ||| ||| +0 Battle of the Bulge ||| Battle of Luzon ||| The Germans' initial attack included 200,000 men, 340 tanks and 280 other tracked vehicles. Between 67,200 and 125,000 of their men were killed, missing or wounded. For the Americans, 610,000 men were involved in the battle,{{sfn|Cirillo|2003|p=53}} of whom 89,000 were casualties,{{sfn|Miles|2004}} including up to 19,000 killed.{{sfn|Miles|2004}}{{sfn|MacDonald|1998|p=618}} Along with the [[Battle of Okinawa]] and the [[Battle of Luzon]], it was one of the largest and bloodiest battles fought by the United States in World War II. ||| ||| ||| +0 Battle of the Bulge ||| Battle of Vianden ||| In the center, [[Hasso von Manteuffel|von Manteuffel]]'s [[5th Panzer Army|Fifth Panzer Army]] attacked towards [[Bastogne]] and [[St. Vith]], both road junctions of great strategic importance. In the south, [[Erich Brandenberger|Brandenberger]]'s [[7th Army (Wehrmacht)|Seventh Army]] pushed towards [[Luxembourg]] in its efforts to secure the flank from Allied attacks. Only one month before 250 members of the Waffen-SS had unsuccessfully tried to recapture the town of Vianden with its castle from the [[German occupation of Luxembourg in World War II|Luxembourgish resistance]] during the [[Battle of Vianden]]. ||| Initial German assault ||| ||| +0 Battle of the Bulge ||| Eastern Front (World War II) ||| The German offensive was supported by several subordinate actions including Operations [[Operation Bodenplatte|Unternehmen Bodenplatte]], [[Operation Greif|Greif]] and [[Operation Wahrung|Währung]]. As well as stopping Allied transport over the channel to the port city of Antwerp, these operations were intended to split the British and American [[Allies of World War II|Allied]] line in half, so the Germans could then proceed to [[encirclement|encircle and destroy]] four Allied armies, forcing the [[Western Allies]] to negotiate a [[peace treaty]] in the [[Axis powers of World War II|Axis Powers]]' favor. Once that was accomplished, Hitler could fully concentrate on the [[Eastern Front (World War II)|eastern theatre of war]]. ||| ||| ||| +0 Battle of the Coral Sea ||| Battle of Tarawa ||| The delay in the advance of Japanese forces also allowed the [[United States Marine Corps]] to land on [[Funafuti]] on 2 October 1942, with a Naval Construction Battalion ([[Seabees]]) building airfields on three of the atolls of [[Tuvalu]] from which units of the [[United States Army Air Forces|USAAF]] [[Consolidated B-24 Liberator|B-24]] ''Liberator'' bombers of the [[Seventh Air Force]] operated. [[History of Tuvalu#The Pacific War and Operation Galvanic|The atolls of Tuvalu]] acted as a staging post during the preparation for the [[Battle of Tarawa]] and the [[Battle of Makin]] that commenced on 20 November 1943, which was the implementation of operation ''Galvanic''. ||| Significance ||| Situation in the South Pacific ||| +0 Battle of the Cumberland Gap (1863) ||| Battle of Gettysburg ||| Around 10:00 a.m. on September 9, Burnside sent a message to Frazer stating he now had a large enough force to carry the gap by storm. The large Union force, little combat experience and low morale (after news of [[Siege of Vicksburg|Vicksburg]] and [[Battle of Gettysburg|Gettysburg]]) all factored into Frazer's decision to surrender. Around 3:00 p.m. Frazer agreed to an [[unconditional surrender]] of all the Confederates guarding the Cumberland Gap. ||| Battle ||| ||| +0 Battle of the Cumberland Gap (1863) ||| Battle of the Cumberland Gap (June 1862) ||| Major General Ambrose Burnside, commander of the [[Army of the Ohio|Department and Army of the Ohio]], began to advance against [[Knoxville, Tennessee]]. Burnside left [[Cincinnati, Ohio]] in mid-August 1863. The direct route ran through the Confederate-held Cumberland Gap. Burnside had been delayed in earlier attempts to move out against Knoxville and thus chose not to spend the time to force a passage of the gap. Instead he detached one brigade under Colonel John F. DeCourcy to pose a threat to Brigadier General [[John W. Frazer]]'s 2,300 man garrison, while the rest of the army bypassed to the south over 40 miles in rugged mountainous terrain. DeCourcy had previously led a brigade in the [[Battle of the Cumberland Gap (June 1862)|1862 operations against the Cumberland Gap]] under [[George W. Morgan]]. ||| Background ||| ||| +0 Battle of the Cumberland Gap (June 1862) ||| Battle of the Cumberland Gap (1863) ||| General Morgan praised his division for the efficiency of their actions in the face of logistical difficulties. Even though he held a strong defensive position, Morgan was far from any Union base with no established supply lines. His reports to Maj. Gen. [[Henry W. Halleck]] however remained full of optimism. As late as August, 1862 Morgan reported he had no intentions of evacuating the gap and 'if the enemy attacks he will be crushed'. Kirby Smith's attention had been devoted to securing Chattanooga. It was not until Confederates under [[Braxton Bragg]] [[Confederate Heartland Offensive|invaded Kentucky]] that Morgan found himself facing a serious Confederate threat. Morgan was forced to abandon the gap in September 1862, but managed to conduct a masterful withdrawal through enemy territory. The Cumberland Gap would remain in Confederate control until Maj. Gen. [[Ambrose Burnside]] [[Battle of the Cumberland Gap (1863)|recaptured it]] in 1863. ||| Aftermath ||| ||| +0 Battle of the Duisburg Convoy ||| Siege of Malta (World War II) ||| The Axis forces engaged in the [[Western Desert Campaign|war against the British in North Africa]] were supplied across the Mediterranean. The [[Siege of Malta (World War II)|besieged island of Malta]] was a key British base in the Mediterranean from where the British were able to interdict Axis supplies to Libya. Allied aircraft and ships were sinking up to 60 percent of Axis shipping. ||| Background ||| ||| +0 Battle of the Dukla Pass ||| Warsaw Uprising ||| The Soviet delay and eventual failure in providing support for the insurgents led to the accusations that it was deliberate, just as in the case of the [[Warsaw Uprising]] — that [[Joseph Stalin]] wanted to weaken the Czechoslovak forces to facilitate the eventual Soviet takeover of that country. ||| Aftermath ||| ||| +0 Battle of the Hook ||| Coronation of Queen Elizabeth II ||| Shortly after on 2 June 1953, to mark the [[Coronation of Queen Elizabeth II]] the division's artillery fired red, white and blue smoke shells onto the Chinese lines (a '''[[feu de joie]]'''), followed by a salute from [[Centurion tank]]s which fired HE shells onto a single target. ||| Aftermath ||| ||| +0 Battle of the Java Sea ||| Battle of Java (1942) ||| A further two American, and one Dutch destroyer were sunk as they attempted to escape to Australia. The main ABDA naval force had been almost totally destroyed: 10 ships and approximately 2,173 sailors had been lost. The Battle of the Java Sea ended significant Allied naval operations in South-East Asia in 1942, and [[Battle of Java (1942)|Japanese land forces invaded Java]] on 28 February. The Dutch surface fleet was practically eradicated from the Asian waters and the Netherlands would never reclaim full control of its colony. The Japanese had laid open the control of one of the most important food-producing regions, Java, and by conquering the Dutch East-Indies Japan also gained ultimate control over the sources of the fourth largest oil producer in the world in 1940. ||| Aftermath ||| Consequences ||| +0 Battle of the Netherlands ||| Battle for The Hague ||| The [[Battle for The Hague|attack on The Hague]] ended in operational failure. The paratroopers were unable to capture the main airfield at [[Leidschenveen-Ypenburg|Ypenburg]] in time for the airborne infantry to land safely in their Junkers. Though one armoured car had been damaged by a bomb, the other five Landsverks, assisted by machine gun emplacements, destroyed the eighteen Junkers of the first two waves, killing many occupants. ||| Battle ||| 10 May ||| +0 Battle of the Netherlands ||| Battle of Rotterdam ||| The [[Battle of Rotterdam|attack on Rotterdam]] was much more successful. Twelve [[Heinkel He 59]] [[seaplane]]s, crowded with two platoons of troops, landed in the heart of the city and unloaded assault teams that conquered the [[Willemsbrug]], a [[bridge]] over the [[Nieuwe Maas]], to occupy a bridgehead. ||| Battle ||| 10 May ||| +0 Battle of the Nile ||| Action of 18 August 1798 ||| Nelson's first set of dispatches were captured when ''Leander'' was intercepted and defeated by ''Généreux'' in a fierce engagement off the western shore of Crete [[Action of 18 August 1798|on 18 August 1798]]. Although Nelson had previously been castigated in the press for failing to intercept the French fleet, rumours of the battle had begun to arrive in Britain from the continent in late September and the news Capel brought was greeted with celebrations right across the country. [[George III of the United Kingdom|King George III]] addressed the [[Parliament of Great Britain|Houses of Parliament]] on 20 November with the words: ||| Aftermath ||| Reaction ||| +0 Battle of the Piave River ||| Operation Michael ||| The Austrians, differently from their previous success at Caporetto and from the subsequent attempts to breakthrough on [[Monte Grappa]], did not prepare the attack as a pinpoint one, but as an all-out frontal attack, employing the entire residual strength of their army all along the front. The Austro-Hungarian formations were trained to employ the tactics developed by the Germans on the [[Western Front (World War I)|Western Front]] for the [[Spring Offensive|Operation Michael]] as Austrian officials, returning from the [[Eastern Front (World War I)|Eastern Front]], were extensively trained alongside their German counterparts. There were also innovations on the Italian side. Analyzing the defeat of Caporetto, the staff of Armando Diaz concluded that the main tactical causes of it were the lack of mobility of Italian units, caught in a too rigid defensive scheme, the too centralized command and control system, and the lack of depth of Italian defences, where too many soldiers were simply stuck on the frontline. The new schemes prepared for the battle led to the abolition of the [[Trench warfare|continuous entrenchment]] and in the development of a highly mobile defence system, in which even the smaller units were allowed to freely move between previously recognized strongpoints, independently decide to retreat or counterattack, or directly call the support of the artillery. Moreover, 13 divisions, equipped with 6000 trucks, were organized in a central reserve, ready to be sent where it was needed. ||| Prelude ||| ||| +0 Battle of the Ruhr ||| Operation Chastise ||| |[[Image:RAF roundel.svg|12px|RAF roundel]] [[Operation Chastise]]; 14 bombers in attack. [[Bouncing bomb]]s breach the [[Möhne Reservoir|Möhne]] and [[Edersee|Eder Dam]]s, but fail to disrupt the water supply or hydroelectrical power to the [[Ruhr Area]] more than briefly. Aircraft loss was 40%. ||| Bombing during the Battle ||| ||| +0 Battle of the Saintes ||| Siege of Yorktown ||| The battle is named after the [[Îles des Saintes|Saintes]] (or Saints), a group of islands between [[Guadeloupe]] and [[Dominica]] in the [[West Indies]]. The French fleet defeated here by the Royal Navy was the same French fleet that had blockaded the [[British Army during the American War of Independence|British Army]] during the [[Siege of Yorktown]]. The French suffered heavy casualties and many were taken prisoner including the Comte de Grasse. Four French ships of the line were captured (including the [[flagship]]) as well as one destroyed. Rodney was credited with pioneering the tactic of '[[Naval tactics in the Age of Sail|breaking the line]]' in the battle, though this is disputed. ||| ||| ||| +0 Battle of the Thames ||| Battle of Frenchtown ||| William Henry Harrison's force numbered at least 3,500 [[infantry]] and [[cavalry]]. He had a small detachment of regulars from the 27th U.S. Infantry and five brigades of Kentucky militia led by [[Isaac Shelby]], the 63-year-old governor of Kentucky and a hero of the [[American Revolutionary War]]. He also had 1,000 volunteer cavalry under Colonel [[Richard Mentor Johnson]]. Most were from Kentucky but some of them were from the [[River Raisin]] area, spurred on by the slogan '[[Battle of Frenchtown|Remember the River Raisin]].' ||| Forces ||| ||| +0 Battle of the Tugela Heights ||| Battle of Spion Kop ||| Buller's army had made three earlier attempts to raise the Boer siege of [[Ladysmith, KwaZulu-Natal|Ladysmith]]. The battles of [[Battle of Colenso|Colenso]], [[Battle of Spion Kop|Spionkop]] and [[Battle of Vaal Krantz|Vaal Krantz]] each resulted in embarrassing British defeats at the hands of Botha's army of Boer irregulars. In three months, British casualties rose to 3,400 men while Boer losses were much lower. On 12 February, Buller ordered a fourth attempt to relieve [[Ladysmith, KwaZulu-Natal|Ladysmith]]. He hoped to exploit his ten-to-one superiority in artillery and four-to-one advantage in numbers. ||| Background ||| ||| +0 Battle of Épehy ||| Hindenburg Line ||| The '''Battle of Épehy''' was a battle of the [[World War I|First World War]] fought on 18 September 1918, involving the [[Fourth Army (United Kingdom)|British Fourth Army]] (under the command of [[General (United Kingdom)|General]] [[Henry Rawlinson, 1st Baron Rawlinson|Henry Rawlinson]]) against [[German Empire|German]] outpost positions in front of the [[Hindenburg Line]].The village of Épehy was captured on 18 September by the [[12th (Eastern) Division]]. ||| ||| ||| +0 Battle of Öland ||| Second Anglo-Dutch War ||| While the Swedish policy was to avoid war and to consolidate its gains, Danish policy after 1660 was to seek an opportunity to regain its losses. Under the [[House of Oldenburg|Oldenburg]] King [[Frederick III of Denmark|Frederick III]], the foreign policy was aimed at isolating Sweden while setting itself up in a favorable position in future wars. Denmark attempted to position itself in the alliances among the 17th century Europe great powers. [[House of Bourbon|Bourbon]] [[early modern France|France]] and the [[House of Habsburg|Habsburg]]-dominated [[Holy Roman Empire]] competed for continental domination while the Dutch Republic and England [[Anglo-Dutch Wars|fought several wars]] over naval hegemony. At the same time, Denmark sought to rid itself of the generous toll treaties it was forced to grant Dutch merchants after the Republic's assistance in the wars against Sweden. Attempts were made to ally with both England and France, but without success. In the [[Second Anglo-Dutch War]] (1665–66) Denmark had to side with the Dutch at the [[Battle of Vågen]], souring its relations with England. In 1670 France allied with England against the Republic. Sweden's relations with France had improved greatly and in 1672 it joined the Anglo-French coalition, pushing Denmark into the Dutch camp. ||| Background ||| ||| +0 Battle of Šibenik ||| Battle of the Barracks ||| The '''Battle of Šibenik''' ({{lang-hr|Bitka za Šibenik}}), also known as the '''September War''' (''Rujanski rat''), was an armed conflict fought between the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA), supported by the [[Croatian Serb]]-established [[Serbian Autonomous Oblast of Krajina]] (SAO Krajina), and the [[Croatian National Guard]] (''Zbor Narodne Garde'' – ZNG), supported by the [[Croatian Police]]. The battle was fought to the north and west of the city of [[Šibenik]], [[Croatia]] on 16-22 September 1991, during the [[Croatian War of Independence]]. The JNA's initial orders were to relieve Croatian [[Battle of the Barracks|siege of their barracks]] in the city and isolate the region of [[Dalmatia]] from the rest of Croatia. The JNA's advance was supported by the [[Yugoslav Air Force]] and the [[Yugoslav Navy]]. ||| ||| ||| +0 Battle off Samar ||| Battle of Savo Island ||| Clifton Sprague's task unit lost two escort carriers: (''Gambier Bay'', to surface attack and ''St. Lo'', to ''kamikaze'' attack). Of the seven screening ships, fewer than half, two destroyers (''Hoel'' and ''Johnston'') and a destroyer escort (''Samuel B. Roberts'') were lost, as were several aircraft. The other four U.S. destroyers and escorts were damaged. For such a small task unit, well over a thousand Americans died, comparable to the losses suffered at the Allied defeat of the [[Battle of Savo Island]] off [[Guadalcanal campaign|Guadalcanal]] when four cruisers were sunk. It was also comparable to the combined losses of the 543 men and three ships at the [[Battle of the Coral Sea]], and 307 men and two ships at the [[Battle of Midway]]. ||| Aftermath ||| ||| +0 Battle off Ulsan ||| Battle of Port Arthur ||| At the start of the Russo-Japanese War, the bulk of the [[Russian Pacific Fleet]] was [[Battle of Port Arthur|blockaded]] within the confines of [[Lüshunkou District|Port Arthur]] by the [[Imperial Japanese Navy]]. However, the Russian subsidiary naval base at Vladivostok, although shelled by a Japanese squadron under the command of Vice Admiral [[Dewa Shigeto]] in March 1904, remained largely undamaged. Located at Vladivostok was a garrison force consisting of the light cruiser {{ship|Russian cruiser|Bogatyr||2}} and auxiliary cruiser {{ship|Russian cruiser|Lena||2}} and a stronger Vladivostok Independent Cruiser Squadron consisting of the [[armored cruiser]]s {{ship|Russian cruiser|Rossia||2}}, {{ship|Russian cruiser|Rurik|1892|2}}, and {{ship|Russian cruiser|Gromoboi||2}}. This force was under the command of Rear Admiral [[Karl Jessen]] from 15 March – 12 June 1904, Vice Admiral [[Petr Bezobrazov]] from 12 June – 16 October 1904 and from Jessen again from 15 October 1904 until the end of the war. ||| Background ||| ||| +0 Battles of Lexington and Concord ||| French and Indian War ||| The colonists had been forming militias since the 17th century, initially for local defense against [[Native Americans in the United States|Indian]] attacks. These forces also saw action in the [[French and Indian War]] between 1754 and 1763 when they fought alongside British regulars. Under provincial law, all towns were obligated to form militia companies composed of all males 16 years of age and older (there were exemptions for some categories), and to assure that the members were properly armed. The militias were formally under the jurisdiction of the provincial government, but New England militia companies elected their own officers. ||| Background ||| ||| +0 Battles of Lexington and Concord ||| Vietnam War ||| During the [[Cold War]], Revere was used not only as a patriotic symbol, but also as a capitalist one. In 1961, novelist [[Howard Fast]] published ''[[April Morning]]'', an account of the battle from a fictional 15-year-old's perspective, and reading of the book has been frequently assigned in American [[secondary school]]s. A film version was produced for television in 1987, starring [[Chad Lowe]] and [[Tommy Lee Jones]]. In the 1990s, parallels were drawn between American tactics in the [[Vietnam War]] and those of the British Army at Lexington and Concord. ||| Legacy ||| ||| +0 Battles of Lexington and Concord ||| World War II ||| Several ships of the [[United States Navy]], including two [[World War II]] [[aircraft carriers]], were named in honor of the Battle of Lexington. ||| Legacy ||| ||| +0 Battles of Narvik ||| Battle of France ||| The two naval battles in the Ofotfjord on 10 April and 13 April were fought between the British [[Royal Navy]] and [[Nazi Germany]]'s ''[[Kriegsmarine]]'', while the two-month land campaign was fought between [[Norway|Norwegian]], [[French Third Republic|French]], [[United Kingdom|British]], and [[Polish government-in-exile|Polish]] troops against German mountain troops, shipwrecked Kriegsmarine sailors and German [[paratrooper]]s (''[[Fallschirmjäger (World War II)|Fallschirmjäger]]'') from the [[1st Parachute Division (Germany)|7th Air Division]]. Although defeated at sea off Narvik, losing control of the town of Narvik and being pushed back towards the Swedish border, the Germans eventually prevailed because of the Allied [[Operation Alphabet|evacuation from Norway]] in June 1940 following the [[Battle of France]]. ||| ||| ||| +0 Battles of the Isonzo ||| Seventh Battle of the Isonzo ||| *[[Seventh Battle of the Isonzo]] – 14–17 September 1916 ||| Number of battles ||| ||| +0 Belostock Offensive ||| Osovets Offensive ||| The 2nd Belorussian Front's final objective in Operation Bagration was to advance to the [[Narew]] River in the [[Osovets Offensive]]. ||| Outcome ||| ||| +0 Black Sea campaigns (1941–44) ||| Siege of Odessa (1941) ||| The Soviets began the war in the Black Sea by a bombardment of [[Constanța]] on 26 June. During this operation, the destroyer leader ''Moskva'' was lost to mines while evading fire from coastal batteries. The Black Sea Fleet supplied the besieged garrison in [[Siege of Odessa (1941)|Odessa]] and evacuated a significant part of the force (86,000 soldiers, 150,000 civilians) at the end of October, but lost the destroyer ''Frunze'' and a gunboat to ''[[Junkers Ju 87|Stuka]]s'' in the process. The Black Sea Fleet played a valuable part in defeating the initial assault on Sevastopol. In December, there was an amphibious operation against [[Kerch]] which resulted in the recapture of the Kerch Peninsula. A naval detachment including the cruiser [[Soviet cruiser Krasnyi Krym|Krasnyi Krym]] remained in Sevastopol to give gunfire support. Soviet submarines also raided Axis shipping on the Romanian and Bulgarian coasts, sinking {{convert|29000|LT|t|lk=on|abbr=on}} of shipping. ||| Operations in 1941 ||| ||| +0 Bloody Sunday (1900) ||| Battle of Paardeberg ||| It occurred on the first day of the [[Battle of Paardeberg]]. A combined British-Canadian force of 6,000 finally trapped a group of approximately 5,000 Boer soldiers and some civilians, under [[Piet Cronjé]], in a bend of the [[Modder River]] near [[Kimberley, Northern Cape|Kimberley]], having [[Siege of Kimberley#Relief|advanced]] from south of the Modder River on the 11th. The Boers defended a series of trenches on Paardeberg Hill. ||| Background ||| ||| +0 Blue House Raid ||| Battle of Khe Sanh ||| The Blue House raid occurred on the same day when the [[Battle of Khe Sanh]] started in Vietnam and on January 31 the [[Tet Offensive]] broke out across South Vietnam, making any U.S. support for South Korean retaliation unlikely. In Saigon, Viet Cong guerrillas attempted to assassinate President [[Nguyễn Văn Thiệu]] at the [[Independence Palace]] but were quickly beaten back. Some writers have suggested that due to the similarities of both attacks by an almost identical number of commandos (31 in Seoul and 34 in Saigon, respectively) that the North Korean leaders had a certain insight into Vietnamese Communist military operations, and wanted to take advantage of the Vietnam War. [[Lyndon B. Johnson|President Johnson]] regarded the seizure of the ''Pueblo'' and the timing of the Tet Offensive to have been coordinated to divert U.S. resources away from Vietnam and to force the South Koreans to withdraw their two Divisions and Marine Brigade from South Vietnam. Unlike President Johnson, [[Charles H. Bonesteel III|General Bonesteel]] saw no such connection. He regarded the Blue House Raid as having been planned at the highest levels in North Korea, while the seizure of the ''Pueblo'' seemed merely opportunistic and the timing of the Tet Offensive as helpful but coincidental. ||| Aftermath ||| ||| +0 Bolton Massacre ||| Siege of Lathom House ||| Fairfax's army and some Lancashire Parliamentarians under Colonel [[Alexander Rigby]] began the [[Siege of Lathom House]], seat of the Earl of Derby, which was defended by his wife, the [[Charlotte Stanley, Countess of Derby|Countess of Derby]].{{sfn|Lewis|1848|pp=30–33}} However, Fairfax crossed the Pennines in late March to rejoin his father, [[Ferdinando Fairfax, 2nd Lord Fairfax of Cameron|Lord Fairfax]], in Yorkshire. ||| Background ||| ||| +0 Bombardment of Ellwood ||| Battle of Los Angeles ||| On the night of 24 February, the mysterious [[Battle of Los Angeles]] took place, in which coastal defenses responded with hours of anti-aircraft bombardment to reports of the sighting of 'enemy aircraft'. What they actually saw is still unknown. ||| Aftermath ||| ||| +0 Bombing of Dresden in World War II ||| Kristallnacht ||| The [[Semper Synagogue|Dresden synagogue]], which was burned during ''[[Kristallnacht]]'' on 9 November 1938, was rebuilt in 2001 and opened for worship on 9 November and is called the [[New Synagogue, Dresden|New Synagogue]]. The original synagogue's [[Star of David]] was installed above the entrance of the new building—Alfred Neugebauer, a local firefighter, saved it from the fire and hid it in his home until the end of the war. Dresden's Jewish population declined from 4675 in 1933, to 1265 in 1941 (the eve of the implementation of the Nazis' extermination programme), to just a handful after almost all of those who had remained were forcibly sent to [[Riga]], [[Auschwitz]] and [[Theresienstadt]] between 1941 and 1945.{{sfn|Addison|Crang|2006|loc=Chapter by Jeremy Crang (2006) 'Victor Klemperer's Dresden' pp. 83–3}} On the morning of 13 February 1945, the Jews remaining in Dresden were ordered to report for deportation on 16 February. But as one of them, [[Victor Klemperer]], recorded in his diaries: '... on the evening of this 13 February the catastrophe overtook Dresden: the bombs fell, the houses collapsed, the phosphorus flowed, the burning beams crashed on to the heads of Aryans and non-Aryans alike and Jew and Christian met death in the same firestorm; whoever of the [Jews] was spared by this night was delivered, for in the general chaos he could escape the [[Gestapo]]'. ||| Reconstruction and reconciliation ||| ||| +0 Bombing of Dresden in World War II ||| Western Front (World War II) ||| Early in 1945, after the German offensive known as the [[Battle of the Bulge]] had been exhausted — including the disastrous attack by the [[Luftwaffe]] [[Operation Bodenplatte|on New Year's Day]] involving elements of eleven combat wings of the Luftwaffe's day fighter force — and after the [[Red Army]] had launched their [[Silesian Offensives]] into pre-war German territory, the [[German Army (Wehrmacht)|German army]] was retreating on all fronts, but still resisting strongly. On 8 February 1945, the Red Army crossed the [[Oder River]], with positions just 70 km from [[Berlin]].{{sfn|Taylor|2005|p=262}} As the [[Eastern Front (World War II)|Eastern]] and [[Western Front (World War II)|Western Fronts]] were getting closer, the Western Allies started to consider how they might aid the Soviets with the use of the [[strategic bomber]] force. They planned to bomb Berlin and several other eastern cities in conjunction with the Soviet advance—to cause confusion among German troops and refugees, and hamper German reinforcement from the west. ||| Background ||| ||| +0 Bosnian general election, 2010 ||| Bosnian War ||| After the [[Bosnian War]] and the [[Dayton Accords]] that ended the war, the [[Constitution of Bosnia and Herzegovina|constitution]] set out, in Article V, a tripartite rotational presidency between the Bosniak, Croat and Serb entities. Each president serves a four-year term, with the chairman of the presidential council rotation every 8 months, with the first president being the one with most votes in the election. ||| Background ||| ||| +0 Boston Marathon bombing ||| Iraq War ||| During an initial interrogation in the hospital, Dzhokhar alleged that Tamerlan was the mastermind. He said they were motivated by extremist [[Islamist]] beliefs and the [[Iraq War|wars in Iraq]] and [[War in Afghanistan (2001–present)|Afghanistan]], and that they were self-radicalized and unconnected to any outside terrorist groups. According to him, they learned to build explosive devices from an [[Inspire (magazine)|online magazine]] of the [[al-Qaeda]] affiliate in Yemen. He was found guilty on all charges on April 8, 2015, and the following month was sentenced to death. ||| ||| ||| +0 Boxer Rebellion ||| Northern Expedition ||| The effect on China was a weakening of the dynasty and its national defense capabilities. The government structure was temporarily sustained by the Europeans. Behind the international conflict, it further deepened internal ideological differences between northern-Chinese anti-foreign royalists and southern-Chinese anti-Qing revolutionists. This scenario in the last years of the Qing dynasty gradually escalated into a chaotic [[warlord era]] in which the most powerful northern warlords were hostile towards the revolutionaries in the south who overthrew the Qing monarchy in 1911. The rivalry was not fully resolved until the northern warlords were defeated by the [[Kuomintang]]'s 1926–28 [[Northern Expedition]]. Prior to the final defeat of the Boxer Rebellion, all anti-Qing movements in the previous century, such as the [[Taiping Rebellion]], had been successfully suppressed by the Qing. ||| Long-term consequences ||| ||| +0 Boxer Rebellion ||| Second Sino-Japanese War ||| In the [[Second Sino-Japanese War]], when the Japanese asked the Muslim general [[Ma Hongkui]] to defect and become head of a Muslim puppet state under the Japanese, Ma responded through Zhou Baihuang, the Ningxia Secretary of the Nationalist Party to remind the Japanese military chief of staff [[Seishirō Itagaki|Itagaki Seishiro]] that many of his relatives fought and died in battle against Eight Nation Alliance forces during the Battle of Peking, including his uncle [[Ma Fulu]], and that Japanese troops made up the majority of the Alliance forces so there would be no cooperation with the Japanese. ||| Long-term consequences ||| ||| +0 Breakup of Yugoslavia ||| Plitvice Lakes incident ||| With the [[Plitvice Lakes incident]] of late March/early April 1991, the [[Croatian War of Independence]] broke out between the Croatian government and the rebel ethnic Serbs of the [[SAO Krajina]] (heavily backed by the by-now Serb-controlled Yugoslav People's Army). On 1 April 1991, the [[SAO Krajina]] declared that it would secede from Croatia. Immediately after Croatia's declaration of independence, Croatian Serbs also formed the [[SAO Western Slavonia]] and the [[SAO of Eastern Slavonia, Baranja and Western Srijem]]. These three regions would combine into the [[Republic of Serbian Krajina]] (RSK) on 19 December 1991. ||| The beginning of the Yugoslav Wars ||| War in Croatia ||| +0 British occupation of the Jordan Valley ||| Battle of Romani ||| The troops' general careworn appearance was very noticeable; they were not actually ill but lacked proper sleep and the effects of this deprivation were intensified by the heat, dust, humidity, pressure effect, stillness of the air, and mosquitoes which together with the cumulative effects of the hardships of the two previous years of campaigning caused a general depression. These extremely depressing effects of the region in turn contributed to the debility of troops after a period in the valley. Their shelter was most often just bivouac sheets which barely allowed the men room to sit up; there were a few [[bell tent]]s in which temperatures reached {{convert|125|°F|°C}}. However, although they worked long hours in the hot sun patrolling, digging, wiring, caring for the horses and carrying out anti-mosquito work, heat exhaustion was never a problem (as it had in the Sinai desert; in particular on the second day of the [[Battle of Romani]]) as there was easy access to large supplies of pure, cool water for drinking and washing. Springs supplied drinking water and supplies of rations and forage were transported to the valley from Jerusalem. But thirst was constant and very large quantities of fluid; more than {{convert|1|impgal|l}} were consumed, while meat rations (in the absence of refrigeration) consisted mainly of tins of '[[bully beef]]', which was often stewed by the hot conditions while still in the cans, and bread was always dry and there were few fresh vegetables. ||| Background ||| Conditions in the valley ||| +0 British occupation of the Jordan Valley ||| Spring Offensive ||| The focus shifted to the [[Spring Offensive|German Spring Offensive]] launched by Ludendorff on the [[Western Front (World War I)|Western Front]], which began the same day as the First Transjordan attack on Amman, completely eclipsing its failure. The British front in Picardy held by 300,000 soldiers collapsed when powerful assaults were launched on both sides of the Somme by a force of 750,000, forcing Gough's Fifth Army back almost to Amiens. On one day; 23 March German forces advanced {{convert|12|mi|km}} and captured 600 guns; in total 1,000 guns and 160,000 suffered the worst defeat of the war. The British War Cabinet recognised at once that the overthrow of the Ottoman Empire must be at least postponed. ||| Background ||| ||| +0 Burma Campaign ||| Operation Zipper ||| This was to be an amphibious assault on the western side of Malaya codenamed [[Operation Zipper]]. The dropping of the atomic bombs forestalled this operation, but it was undertaken post-war as the quickest way of getting occupation troops into Malaya. ||| Final operations ||| ||| +0 Burma Campaign 1944 ||| Battle of Kohima ||| The main body of the Japanese Fifteenth Army, consisting of the [[33rd Division (Imperial Japanese Army)|33rd Division]], [[15th Division (Imperial Japanese Army)|15th Division]] and the brigade-sized 'Yamamoto Force', planned to cut off and destroy the forward divisions of IV Corps before capturing Imphal. The [[IJA 31st Division|31st Division]] would meanwhile isolate Imphal by capturing [[Battle of Kohima|Kohima]]. Mutaguchi intended to exploit this victory by capturing the strategic city of [[Dimapur]], in the [[Brahmaputra River]] valley. If this could be achieved, his army would be through the mountainous border region and the whole of North East India would be open to attack. Units of the Indian National Army were to take part in the offensive and raise rebellion in India. The capture of the Dimapur railhead would also sever the land communications to the airbases used to supply the Chinese via the 'Hump', and cut off supplies to General Stilwell's forces fighting on the Northern Front. ||| Central front ||| ||| +0 Cambodian Campaign ||| Hard Hat Riot ||| Simultaneously, public opinion polls during the second week of May showed that 50 percent of the American public approved of President Nixon's actions. Fifty-eight percent blamed the students for what had occurred at Kent State. On both sides, emotions ran high. In one instance, in New York City on 8 May, pro-administration construction workers [[Hard Hat Riot|rioted]] and attacked demonstrating students. Such violence, however, was an aberration. Most demonstrations, both pro- and anti-war, were peaceful. On 20 May 100,000 construction workers, tradesmen, and office workers marched peacefully through New York City in support of the president's policies. ||| Aftermath ||| ||| +0 Cambodian Civil War ||| Operation Menu ||| On 18 March 1969, on secret orders from Nixon, the [[U.S. Air Force]] carried out the bombing of Base Area 353 (in the Fishhook region opposite South Vietnam's Tay Ninh Province) by 59 [[B-52 Stratofortress]] bombers. This strike was the first in a series of attacks on the sanctuaries that lasted until May 1970. During [[Operation Menu]], the Air Force conducted 3,875 sorties and dropped more than 108,000 tons of ordnance on the eastern border areas. ||| Setting the stage (1965–1970) ||| Operation ''Menu'' and Operation ''Freedom Deal'' ||| +0 Cambodian–Vietnamese War ||| Vietnam War ||| During the [[Vietnam War]], Vietnamese and Khmer Rouge communists had formed an alliance to fight U.S.-backed regimes in their respective countries. Despite their open display of cooperation with the Vietnamese, the Khmer Rouge leadership feared that the Vietnamese communists were scheming to form an Indochinese federation with Vietnam as the dominant force in the region. In order to preempt an attempt by the Vietnamese to dominate them, the Khmer Rouge leadership began purging Vietnamese-trained personnel within their own ranks as the [[Lon Nol]] regime capitulated in 1975. Then, in May 1975, the newly formed Democratic Kampuchea, dominated by the Khmer Rouge, began waging a war against Vietnam, which was marked by an attack on the Vietnamese island of [[Phú Quốc]]. In spite of the fighting that had occurred between the two countries, the leaders of reunified Vietnam and Kampuchea made several public diplomatic exchanges throughout 1976 to highlight the supposedly strong relations between them. However, behind the scenes, Kampuchean leaders continued to fear what they perceived as Vietnamese expansionism. As such, on 30 April 1977, they launched another major military attack on Vietnam. Shocked by the Kampuchean assault, Vietnam launched a retaliatory strike at the end of 1977 in an attempt to force the Kampuchean Government to negotiate. In January 1978, the Vietnamese military withdrew because their political objectives had not been achieved. ||| ||| ||| +0 Campaign in north-east France (1814) ||| Battle of Leipzig ||| The '''1814 campaign in north-east France''' was Napoleon's final campaign of the [[War of the Sixth Coalition]]. Following their victory at [[Battle of Leipzig|Leipzig]] (1813), Russian, Austrian and other German armies of the Sixth Coalition entered France. Despite the disproportionate forces in favour of the Coalition, Napoleon managed to inflict many defeats, especially during the [[Six Days Campaign]]. However, the Coalition kept heading towards Paris, which capitulated in March 1814. As a result, Napoleon was deposed and exiled to [[Elba]] and the victorious powers started to redraw the map of Europe during the [[Treaty of Paris (1814)|First Treaty of Paris]] and during the early stages of the [[Congress of Vienna]]. ||| ||| ||| +0 Campaign of Grodno ||| Battle of Grodno (1706) ||| The '''Campaign of Grodno''' was a plan developed by [[Johann Patkul]] and [[Otto Arnold von Paykull]] during the [[Charles XII invasion of Poland|Swedish invasion of the Polish–Lithuanian Commonwealth]], a part of the [[Great Northern War]]. Its purpose was to crush [[Charles XII|Charles XII's]] army with overwhelming force in a combined offensive of Russian and Saxon troops. The campaign, executed by [[Peter the Great|Peter I of Russia]] and [[Augustus II the Strong|Augustus II of Saxony]], began in July 1705 and lasted almost a year. In divided areas the allies would jointly strike the Swedish troops occupied in Poland, in order to neutralize the influence the Swedes had in the Polish politics. However, the Swedish forces under Charles XII successfully outmaneuvered the allies, installed a Polish king in favor of their own and finally won two decisive victories at [[Battle of Grodno (1706)|Grodno]] and [[Battle of Fraustadt|Fraustadt]] in 1706. This resulted in the [[Treaty of Altranstädt (1706)]] in which Augustus renounced his claims to the Polish throne, broke off his alliance with Russia, and established peace between Sweden and Saxony. ||| ||| ||| +0 Campaign to Suppress Bandits in Northwestern China ||| World War II ||| The '''Campaign to Suppress Bandits in [[Northwestern China]]''' (西北剿匪) was a counter-[[Guerrilla warfare|guerrilla]]/[[counter-insurgency]] campaign the [[Communist Party of China|communists]] fought against the [[Kuomintang|nationalist]] guerrilla force that mostly consisted of bandits and [[National Revolutionary Army|nationalist regular troops]] left behind after the nationalist government withdrew from mainland China. The campaign was fought during the [[Chinese Civil War]] in the post-[[World War II]] era in the northwestern China, and resulted in communist victory. ||| ||| ||| +0 Canada's Hundred Days ||| Hindenburg Line ||| '''Canada's Hundred Days''' was a series of attacks made along the [[Western Front (World War I)|Western Front]] by the [[Canadian Corps]] during the [[Hundred Days Offensive]] of World War I. Reference to this period as Canada's Hundred Days is due to the substantial role the [[Canadian Corps]] of the [[British First Army]] played in causing the defeat and/or retreat of the [[German Army (German Empire)|German Army]] in a series of major battles from [[Amiens]] to [[Mons]] which along with other Allied offensives ultimately led to Germany's final defeat and surrender. During this time, the [[Canadian Corps]] fought at [[Battle of Amiens (1918)|Amiens]], [[Second Battle of the Somme (1918)|Arras]], the [[Hindenburg Line]], the [[Battle of the Canal du Nord|Canal du Nord]], [[Bourlon Wood Memorial|Bourlon Wood]], [[Battle of Cambrai (1918)|Cambrai]], [[Denain]], [[Valenciennes]] and finally at [[Mons]], on the final day of the First World War. In terms of numbers, during those 96 days the Canadian Corps' four over-strength or 'heavy' [[Division (military)|divisions]] of roughly 100 000 men, engaged and defeated or put to flight elements of forty seven German divisions, which represented one quarter of the German forces faced by the Allied Powers fighting on the Western Front. ||| ||| ||| +0 Capture of Belgrade (1739) ||| Second Serbian Uprising ||| Except for a brief occupation during the [[Austro-Turkish War (1787–1791)]] the Austrians were never able to capture Belgrade. The Ottomans kept the city up to the [[Second Serbian Uprising|Serbian Uprising]]. In 1815 Belgrade was a city of semi-independent Serbia under Ottoman [[suzerainty]]. By the [[Treaty of Berlin (1878)]] Serbia gained full independence. ||| Aftermath ||| ||| +0 Capture of Combles ||| Operation Michael ||| Combles was attacked by the British and French on 25 September, during the [[Battle of Morval]] after several delays due to rain and poor visibility. Brigades from the 56th and 5th divisions in the north, wheeled to the right to form a south-facing flank above Combles, as the French [[2nd Infantry Division (France)|2nd Division]] attacked from the south. The British attack swiftly established the defensive flank and patrols began to probe southwards. German resistance against the French attack close to the village, particularly with machine-gun fire, held back the advance but further east, the French captured Rancourt in the afternoon and closed up to Frégicourt. Prisoners taken by the British and French, revealed that a retirement from the village was intended during the night and a constant Allied artillery barrage was maintained on the exits. Infantry patrols probed forwards and the British and French forces met at several points in and east of the village, in the early hours of 26 September. A huge amount of equipment, ammunition and engineering stores were captured in the village and on 27 September, the inter-army boundary was moved north to Morval, to assist French attacks towards Sailly-Saillisel. On 24 March 1918, Combles was recaptured by German troops, during the retreat of the 9th Division in [[Operation Michael]], the German spring offensive. The village was recaptured for the last time on 29 August, by the 18th Division, during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Sinai and Palestine Campaign ||| The '''Capture of Damascus''' occurred on 1 October 1918 after the capture of [[Battle of Haifa (1918)|Haifa]] and the victory at the [[Battle of Samakh]] which opened the way for the pursuit north from the [[Sea of Galilee]] and the [[Third Transjordan attack]] which opened the way to [[Deraa]] and the inland pursuit, after the decisive [[Egyptian Expeditionary Force]] victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] during the [[Sinai and Palestine Campaign]] of World War I. Damascus was captured when [[Desert Mounted Corps]] and [[Feisal I of Iraq|Prince Feisal]]'s Sherifial Hejaz Army encircled the city, after a cavalry pursuit northwards along the two main roads to [[Damascus]]. During the pursuit to Damascus, many rearguards established by remnants of the [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth Armies]], were attacked and captured. Prince Feisal's Sherifial Army, [[Desert Mounted Corps]]' [[Australian Mounted Division]] the [[4th Cavalry Division (British Indian Army)|4th]] and the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]]s. The important tactical success of capturing Damascus resulted in political manoeuvring by representatives from France, Britain and Prince Feisal's [[Arab Revolt|force]]. ||| ||| ||| +0 Capture of Garadaghly ||| Khojaly Massacre ||| According to the Azerbaijani news agency news.az a criminal investigation was launched by Azerbaijan in 1992 and in 2010, where Azerbaijani authorities announced 38 names wanted for crimes against humanity in [[Khojaly Massacre|Khojaly]], Garadaghly, [[Meşəli, Khojali|Meshali]], [[Bağanis Ayrum|Baghanis Ayrum]]. Six of these names are specifically related to the massacre of civilians in Garadaghly. ||| Investigation ||| ||| +0 Capture of Gueudecourt ||| Battle of Le Transloy ||| At the [[Battle of Le Transloy]] {{nowrap|(1–28 October)}} and in local operations in November, Gueudecourt was used as a jumping-off point; in the winter of 1916–1917 the area was held by the [[I Anzac Corps]], which considered the conditions around the village to be the worst on the Somme front. Gueudecourt became a backwater until 1918, when the village was lost on 24 March during [[Operation Michael]], the German spring offensive and was recaptured for the last time on 28 August, by the [[17th (Northern) Division (United Kingdom)|17th Division]], during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Jenin ||| Second Battle of Amman ||| On 19 September, the [[Battle of Megiddo (1918)|Battle of Megiddo]] commenced with the [[XXI Corps (United Kingdom)|XXI Corps]] (commanded by [[Lieutenant General]] [[Edward Bulfin]]), under cover of a [[creeping barrage]], broke through the Ottoman front line to begin the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] began the Battle of Nablus, also supported by an artillery barrage. This offensive by the XX and XXI Corps, continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]], to disengage. The Seventh Army retreated from the [[Nablus]] area towards the [[Jordan River]], crossing at the [[Jisr ed Damieh]] bridge before a rearguard at Nablus was captured. While the EEF infantry were fighting the Seventh and Eighth Armies in the Judean Hills, the [[Desert Mounted Corps]] commanded by the [[Australian]] Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry on the morning of 19 September, to ride northwards and virtually [[encirclement|encircle]] the Ottoman forces before they disengaged. The cavalry divisions captured [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah, Beisan]], and Jenin before and Samakh and the [[Capture of Tiberias]] ended the Battle of Megiddo. During this time, [[Chaytor's Force]] (temporarily detached from Desert Mounted Corps) commanded by [[Major General]] [[Edward Chaytor]], captured part of the retreating Ottoman and German column at the [[Capture of Jisr ed Damieh]] bridge over the Jordan River to cut off this line of retreat, during the [[Third Transjordan attack]]. To the east of the river, as the Ottoman Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September and [[Amman]] on 25 September. Units of Chaytor's Force captured Amman after defeating a strong Fourth Army rearguard during the [[Second Battle of Amman]]. ||| Background ||| ||| +0 Capture of Jenin ||| Spring Offensive ||| Following the [[Capture of Jericho]] in February, the commander of the [[Egyptian Expeditionary Force]] (EEF), [[General (United Kingdom)|General]] [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. In March–April and April–May 1918, the [[First Transjordan attack on Amman|First]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan attacks]] took place, while the front line across the [[Judean Hills]] to the [[Mediterranean Sea]] was defended. During this time, three-quarters of the British infantry and [[yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]]. They were replaced by [[British India Army]] infantry and cavalry which required a [[Sinai and Palestine Campaign#Reorganisations|reorganisation]]. These newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line in the Judean Hills during the summer months, as part of their training. These attacks including the [[Battle of Tell 'Asur]] and Action of Berukin in March and April, were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. This fighting [[Sinai and Palestine Campaign#Summer 1918 front line operations|continued during the summer months]]. By the middle of September the consolidated EEF was once again ready for large-scale offensive operations. ||| Background ||| ||| +0 Capture of Jenin ||| Western Front (World War I) ||| Following the [[Capture of Jericho]] in February, the commander of the [[Egyptian Expeditionary Force]] (EEF), [[General (United Kingdom)|General]] [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. In March–April and April–May 1918, the [[First Transjordan attack on Amman|First]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan attacks]] took place, while the front line across the [[Judean Hills]] to the [[Mediterranean Sea]] was defended. During this time, three-quarters of the British infantry and [[yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]]. They were replaced by [[British India Army]] infantry and cavalry which required a [[Sinai and Palestine Campaign#Reorganisations|reorganisation]]. These newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line in the Judean Hills during the summer months, as part of their training. These attacks including the [[Battle of Tell 'Asur]] and Action of Berukin in March and April, were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. This fighting [[Sinai and Palestine Campaign#Summer 1918 front line operations|continued during the summer months]]. By the middle of September the consolidated EEF was once again ready for large-scale offensive operations. ||| Background ||| ||| +0 Capture of Le Sars ||| Race to the Sea ||| Military operations began in the area in September 1914 during the [[Race to the Sea]], when the divisions of the [[II Royal Bavarian Corps|II Bavarian Corps]] advanced westwards on the north bank of the Somme, passing through Le Sars towards Albert and Amiens. The village became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}} and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity. During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} the British Fourth Army advanced close to the village and operations to capture it began on 1 October. The village was overrun by the [[23rd Division (United Kingdom)|23rd Division]] on 7 October, during the [[Battle of Le Transloy]] {{nowrap|(1 October – 5 November),}} several hundred prisoners being taken from the [[4th Ersatz Division (German Empire)|4th ''Ersatz'' Division]]. ||| ||| ||| +0 Capture of Lesboeufs ||| Hindenburg Line ||| Lesbœufs was transferred to the control of the Sixth Army a few days later to enable the French to attack Sailly-Saillisel from the west. British attacks in the vicinity continued during the [[Battle of Le Transloy]] {{nowrap|(1–28 October).}} During the rest of the winter of 1916–1917, offensive operations in the area diminished to shelling, sniper fire and trench raiding; the area became quiet after the German retreat to the [[Hindenburg Line]] in March 1917. The village was captured in March 1918 by the Germans during [[Operation Michael]], the German spring offensive and reoccupied for the final time on 29 August, by the [[38th (Welsh) Infantry Division|38th Division]], during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Lesboeufs ||| Operation Michael ||| Lesbœufs was transferred to the control of the Sixth Army a few days later to enable the French to attack Sailly-Saillisel from the west. British attacks in the vicinity continued during the [[Battle of Le Transloy]] {{nowrap|(1–28 October).}} During the rest of the winter of 1916–1917, offensive operations in the area diminished to shelling, sniper fire and trench raiding; the area became quiet after the German retreat to the [[Hindenburg Line]] in March 1917. The village was captured in March 1918 by the Germans during [[Operation Michael]], the German spring offensive and reoccupied for the final time on 29 August, by the [[38th (Welsh) Infantry Division|38th Division]], during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Martinpuich ||| Operation Michael ||| The [[15th (Scottish) Infantry Division|15th (Scottish) Division]] of the [[Fourth Army (United Kingdom)|Fourth Army]] captured the village on 15 September, during the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September)}}. Several hundred prisoners of the [[3rd Royal Bavarian Division|3rd Bavarian]] and [[45th Reserve Division (German Empire)|45th Reserve]] divisions were taken. After the village was captured, the pre-war light railway was repaired. The village was lost on 25 March 1918 during [[Operation Michael]] the German spring offensive and was recaptured for the last time on 25 August, by the [[21st Division (United Kingdom)|21st Division]]. ||| ||| ||| +0 Capture of New Orleans ||| Siege of Vicksburg ||| Lovell loaded his troops and supplies aboard the [[New Orleans, Jackson and Great Northern]] railroad and sent them to [[Camp Moore]], {{convert|78|mi}} north. All artillery and munitions were sent to [[Siege of Vicksburg|Vicksburg]]. Lovell then sent a last message to the [[Confederate States War Department|War Department]] in [[Confederate States of America#Capitals|Richmond]], “The enemy has passed the forts. It is too late to send any guns here; they had better go to Vicksburg.” Military stores, ships, and warehouses were then burned. Anything considered useful to the Union, including thousands of bales of cotton, were thrown into the river. ||| War and battle ||| The enemy at the dock ||| +0 Capture of Oppy Wood ||| Battle of Arras (1917) ||| The '''Capture of Oppy Wood''' was an engagement on the [[Western Front (World War I)|Western Front]] of the [[Great War]] on 28 June 1917.{{sfn|James|1924|p=19}} The [[Battle of Arras (1917)|Arras Offensive]] of 1917 ended with the Germans in possession of a fortified wood to the west of the [[commune]] of [[Oppy, Pas-de-Calais|Oppy]], which overlooked British positions. The wood was {{convert|1|acre|ha|adj=on}} in area and contained many German observation posts, machine-guns and trench-mortars. New German defensive tactics adopted after the Battle of the Somme, of defence in depth and rapid counter-attack, had been enforced on the German 6th Army after the disaster of 9 April. A British attack was defeated everywhere on 3 May, except at Fresnoy which was captured by the 1st Canadian Division. The attack on Oppy Wood by [[92nd Brigade (United Kingdom)|92nd Brigade]] of the [[31st Division (United Kingdom)|31st Division]] during the [[Third Battle of the Scarpe]] {{nowrap|(3–4 May),}} was repulsed with many British casualties. The area was defended by the 1st Guard Reserve Division and the 15th Reserve Division, which had not needed to call on specialist [[Eingreif division|Eingreif]] (counter-attack) divisions. ||| ||| ||| +0 Capture of Savannah ||| Siege of Savannah ||| The '''Capture of Savannah''', or sometimes the '''First Battle of Savannah''' (because of a [[Siege of Savannah|siege]] in 1779), was an [[American Revolutionary War]] battle fought on December 29, 1778 between local [[U.S.|American]] [[Patriot (American Revolution)|Patriot]] [[militia]] and [[Continental Army]] units holding the city and a [[Kingdom of Great Britain|British]] invasion force under the command of [[Lieutenant Colonel]] [[Archibald Campbell (British Army officer)|Archibald Campbell]]. It was the opening move in the British [[Southern theater of the American Revolutionary War|southern strategy]] to regain control of the rebellious southern provinces by appealing to the strong [[Loyalist (American Revolution)|Loyalist]] sentiment believed to be there. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Nazareth ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line to begin the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin the Battle of Nablus, supported by an artillery barrage. These infantry attacks by both the XX and XXI Corps, known as the Battle of Megiddo, continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to continue the Battle of Megiddo, almost [[encirclement|encircling]] the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]] before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[capture of Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture [[Third Transjordan attack|Es Salt]] on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Capture of Tiberias (1918) ||| Capture of Jenin ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line to begin the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin the Battle of Nablus, supported by an artillery barrage. These infantry attacks by both the XX and XXI Corps, known as the Battle of Megiddo, continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to continue the Battle of Megiddo, almost [[encirclement|encircling]] the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]] before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[capture of Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture [[Third Transjordan attack|Es Salt]] on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Capture of USS President ||| USS United States vs HMS Macedonian ||| At the time of the battle Commodore [[Stephen Decatur]] commanded ''President''. In 1812, while in command of the frigate [[USS United States (1797)|USS ''United States'']], he had captured the British frigate {{HMS|Macedonian}} in a [[USS United States vs HMS Macedonian|famous action]]. After his return, the British instituted a strict blockade of the American coast. ||| Prelude ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Battle of Grenada ||| On January 6, 1779, Admiral [[Jack Byron]] reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another and building in strength. But in June, while Byron went to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first [[Capture of Saint Vincent|captured]] [[Saint Vincent (island)|St Vincent]], and then [[Capture of Grenada (1779)|Grenada]]. Admiral Byron sailed in hopes of saving first one and then the other, arrived off Grenada shortly after it fell. An [[Battle of Grenada|indecisive action]] was fought off Grenada on July 6, 1779 in which Byron's fleet was significantly damaged. The war died down in the West Indies, with Byron repairing his fleet, and d'Estaing failing to capitalize on French naval superiority. Byron returned home in August. D'Estaing was ordered back to France in August, but instead answered appeals from the Americans for assistance in retaking [[Savannah, Georgia]], which [[Capture of Savannah|had fallen]] to British forces in December 1778. After the unsuccessful [[Siege of Savannah]] d'Estaing sailed for France. ||| 1778-1779 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Battle of Martinique (1780) ||| The 1780 campaign season was comparatively quiet. A French fleet under the [[Luc Urbain de Bouexic, comte de Guichen|comte de Guichen]] sparred with that of [[George Brydges Rodney]] in the inconclusive [[Battle of Martinique (1780)|Battle of Martinique]], but neither side was able to maneuver away from the other for substantive operations against the other's possessions. British authorities launched a major expedition from Jamaica, initially led by the young [[Horatio Nelson, 1st Viscount Nelson|Horatio Nelson]], to gain control of [[Captaincy General of Guatemala|Spanish Nicaragua]]. The [[San Juan Expedition (1780)|San Juan Expedition]] was a disastrous failure, and one of the most expensive British ventures in the war. ||| 1780-1781 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Capture of Saint Vincent ||| On January 6, 1779, Admiral [[Jack Byron]] reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another and building in strength. But in June, while Byron went to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first [[Capture of Saint Vincent|captured]] [[Saint Vincent (island)|St Vincent]], and then [[Capture of Grenada (1779)|Grenada]]. Admiral Byron sailed in hopes of saving first one and then the other, arrived off Grenada shortly after it fell. An [[Battle of Grenada|indecisive action]] was fought off Grenada on July 6, 1779 in which Byron's fleet was significantly damaged. The war died down in the West Indies, with Byron repairing his fleet, and d'Estaing failing to capitalize on French naval superiority. Byron returned home in August. D'Estaing was ordered back to France in August, but instead answered appeals from the Americans for assistance in retaking [[Savannah, Georgia]], which [[Capture of Savannah|had fallen]] to British forces in December 1778. After the unsuccessful [[Siege of Savannah]] d'Estaing sailed for France. ||| 1778-1779 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Capture of Savannah ||| On January 6, 1779, Admiral [[Jack Byron]] reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another and building in strength. But in June, while Byron went to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first [[Capture of Saint Vincent|captured]] [[Saint Vincent (island)|St Vincent]], and then [[Capture of Grenada (1779)|Grenada]]. Admiral Byron sailed in hopes of saving first one and then the other, arrived off Grenada shortly after it fell. An [[Battle of Grenada|indecisive action]] was fought off Grenada on July 6, 1779 in which Byron's fleet was significantly damaged. The war died down in the West Indies, with Byron repairing his fleet, and d'Estaing failing to capitalize on French naval superiority. Byron returned home in August. D'Estaing was ordered back to France in August, but instead answered appeals from the Americans for assistance in retaking [[Savannah, Georgia]], which [[Capture of Savannah|had fallen]] to British forces in December 1778. After the unsuccessful [[Siege of Savannah]] d'Estaing sailed for France. ||| 1778-1779 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Siege of Yorktown ||| On the coast of North America, the war came to its climax. When Hood arrived off the [[Chesapeake Bay]] in late August, de Grasse had not yet arrived, since he had deliberately taken a longer route to avoid notice. Hood proceeded on to New York, bringing news of de Grasse's approach (although ignorant of his strength) to Arbuthnot's successor, Admiral [[Thomas Graves, 1st Baron Graves|Thomas Graves]]. Word that [[Jacques-Melchior Saint-Laurent, Comte de Barras|de Barras]] had sailed from Newport with the entire French fleet led Graves to lead the combined fleet south to the Chesapeake, where de Grasse had in the meantime arrived. In the pivotal [[Battle of the Chesapeake]] on September 5, de Grasse got the better of the British, who ended up retreating back to New York while de Barras slipped into the Chesapeake carrying the French siege train. The naval blockade completed the encirclement of the British army of [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]] at [[Yorktown, Virginia]], where he was [[Siege of Yorktown|compelled to surrender]] on October 19. Cornwallis' surrender spelled the end of significant military operations in North America, and led to the start of peace negotiations. While they went on, the war continued in other theaters. ||| 1780-1781 ||| ||| +0 Case Black ||| Case White ||| The operation immediately followed [[Case White (1943)|Case White]] which had failed in accomplishing the same objectives: to eliminate the central Partisan formations and capture their commander, Marshal [[Josip Broz Tito]]. ||| ||| ||| +0 Caucasus Campaign ||| Armenian Genocide ||| During the Caucasus Campaign, the [[Armenian Genocide]] was carried out against the Armenian population by the Ottoman army and Kurdish irregulars. Many Armenians were forced to flee to Russian Armenia. Approximately 1.5 million Armenians were massacred during the war, though estimates vary from 800,000 to 1,800,000. ||| Atrocities ||| ||| +0 Central Plains War ||| January 28 Incident ||| China was still in turmoil, though; cliques and factions within the Kuomintang were not cemented with the retaliation of Guangdong clique leader [[Hu Hanmin]] being placed under house arrest by Chang Kai-shek, and the opposition of southern KMT key leaders that forced Chiang Kai Shek's resignation for the second time, in addition to the Communist Uprising in China's hinterland, and lack of fortification towards Japanese invasion in southern China of [[January 28 Incident]] following the creation of [[Manchukuo]] in Northeast China and [[Mukden Incident]] in North China. ||| ||| ||| +0 Chambersburg Raid ||| Battle of Antietam ||| * [[Battle of Antietam|Antietam]] ||| ||| ||| +0 Chambersburg Raid ||| Second Battle of Bull Run ||| On August 28-30, 1862, the Confederate Army of Northern Virginia commanded by General Robert E. Lee defeated Union Major General [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] at the [[Second Battle of Bull Run]] or Second Manassas. This cleared the way for the [[Maryland Campaign]], Lee's first invasion of the North. ||| Background ||| ||| +0 Chanonry of Ross ||| Scotland in the Wars of the Three Kingdoms ||| Later during the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] of the 17th century the Mackenzies were was still in possession of the Castle Chanonry of Ross. Their chief [[George Mackenzie, 2nd Earl of Seaforth]] supported the Scottish Covenantors and in 1646 the leader of the royalist army, [[James Graham, 1st Marquess of Montrose]] laid siege to the castle and took it from the Mackenzies after a siege of four days. ||| 17th and 18th century Civil Wars ||| ||| +0 Chattanooga Campaign ||| Battle of Chickamauga ||| The '''Chattanooga Campaign''' was a series of maneuvers and battles in October and November 1863, during the [[American Civil War]]. Following the defeat of [[Major general (United States)|Maj. Gen.]] [[William S. Rosecrans]]' [[Union Army|Union]] [[Army of the Cumberland]] at the [[Battle of Chickamauga]] in September, the [[Confederate States Army|Confederate]] [[Army of Tennessee]] under [[General (CSA)|Gen.]] [[Braxton Bragg]] besieged Rosecrans and his men by occupying key high terrain around [[Chattanooga, Tennessee]]. Maj. Gen. [[Ulysses S. Grant]] was given command of Union forces in the [[Western Theater of the American Civil War|West]] and significant reinforcements began to arrive with him in Chattanooga from Mississippi and the [[Eastern Theater of the American Civil War|Eastern Theater]]. ||| ||| ||| +0 Cluster bombing of Niš ||| NATO bombing of Yugoslavia ||| The '''[[Cluster bomb]]ing of [[Niš]]''' was an event that occurred on 7 May 1999 during the [[NATO bombing of Yugoslavia]]. It was the most serious incident involving civilian deaths and the use of cluster bombs. ||| ||| ||| +0 Controversies about the 2004 Madrid train bombings ||| 2003 invasion of Iraq ||| The tense political atmosphere in Spain in the period running up to the elections brought the PP to the edge of a political catastrophe. On one hand, José María Aznar was aggressively opposed to any dialogue with ETA, and based most of his campaign on the threat of terrorism (the [[September 11 attacks]] in New York reinforced his view of the war against the terrorists). On the other hand, Aznar's friendship with U.S. president George W. Bush led him to support the [[2003 invasion of Iraq]] against the views of the overwhelming majority of the population (resulting in the biggest demonstrations ever seen in Spain since the restoration of democracy in the late 1970s). This left Aznar in a complicated situation: if Basque terrorists were proven to be responsible for the massacre, it would favour the PP's campaign, but if an Islamic group appeared to cause the blast, people might blame him for earning himself (and Spain) enemies. ||| Accuracy of government statements ||| ||| +0 Coup of 18 Brumaire ||| Coup of 18 Fructidor ||| Napoleon found the Ancients resistant 'despite a massive show of military strength.' He met with heckling as he addressed them with such 'home truths' as, 'the Republic has no government' and, most likely, 'the Revolution is over.' One deputy called out, 'And the Constitution?' Napoleon replied, referring to earlier parliamentary coups, 'The Constitution! You yourselves have destroyed it. You violated it on [[Coup of 18 Fructidor|18 Fructidor]]; you violated it on [[Law of 22 Floréal Year VI|22 Floreal]]; you violated it on [[Coup of 30 Prairial VII|30 Prairial]]. It no longer has the respect of anyone.' ||| Events of 19 Brumaire ||| ||| +0 Cromwellian conquest of Ireland ||| Siege of Clonmel ||| The following spring, Cromwell mopped up the remaining [[walled town]]s in Ireland's southeast—notably the [[Confederate Ireland|Confederate]] capital of [[Kilkenny]], which surrendered on terms. The [[New Model Army]] met its only serious reverse in Ireland at the [[Siege of Clonmel]], where its attacks on the towns walls were repulsed at a cost of up to 2,000 men. The town nevertheless surrendered the following day. ||| Clonmel and the conquest of Munster ||| ||| +0 Cromwellian conquest of Ireland ||| Williamite War in Ireland ||| After the [[English Restoration|Stuart Restoration]] in 1660, [[Charles II of England]] restored about a third of the confiscated land to the former landlords in the [[Act of Settlement 1662]], but not all, as he needed political support from former parliamentarians in England. A generation later, during the [[Glorious Revolution]], many of the Irish Catholic landed class tried to reverse the remaining Cromwellian settlement in the [[Williamite War in Ireland]] (1689–91), where they fought en masse for the [[Jacobitism|Jacobites]]. They were defeated once again, and many lost land that had been regranted after 1662. As a result, Irish and English Catholics did not become full political citizens of the British state again until [[Catholic Relief Act 1829|1829]] and were legally barred from buying valuable interests in land until the [[Papists Act 1778]]. ||| Long-term results ||| ||| +0 Cruise missile strikes on Iraq (1996) ||| Operation Southern Watch ||| In response to Iraq{{'}}s moves, the United States and United Kingdom also expanded [[Operation Southern Watch]] and the southern [[Iraqi no-fly zones]] from the [[32nd parallel north|32nd parallel]] to the [[33rd parallel north|33rd parallel]], bringing it to the edges of Baghdad itself. ||| Aftermath ||| ||| +0 Death and state funeral of Kim Jong-il ||| Mozambican War of Independence ||| *{{Flag|Mozambique}} – General Secretary of the ruling [[FRELIMO]] party [[Filipe Chimoio Paúnde]] described Kim Jong-il's death as a 'sadness' for the North Korean people. 'Considering the relations that exist between the two states we also feel the loss.' North Korea 'gave its support during the [[Mozambican War of Independence|national liberation war]]' which FRELIMO fought against the colonial power Portugal, Paúnde said. ||| Reactions ||| Parties and organizations ||| +0 Defence of Kamalpur ||| Indo-Pakistani War of 1971 ||| The '''Defence of Kamalpur''' was a battle fought at Kamalpur near the border in the [[Indo-Pakistani War of 1971]] and [[Bangladesh Liberation War]]. Kamalpur, a hamlet on the border, was defended by Captain [[Ahsan Malik]] and his 140 men. He had seventy soldiers of 31 Baloch and the same number of para-military troops. ||| ||| ||| +0 Defence of the Reich ||| Battle of the Atlantic ||| The '''Defence of the Reich''' ({{lang-de|Reichsverteidigung}}) is the name given to the [[military strategy|strategic]] defensive aerial campaign fought by the ''[[Luftwaffe]]'' over [[German-occupied Europe]] and [[Germany]] itself during [[World War II]]. Its aim was to prevent the destruction of German civilians, military and civil industries by the [[Western Allies]]. The day and night air battles over Germany during war involved thousands of aircraft, units and aerial engagements to counter the Allied [[strategic bombing]] campaign. The campaign was one of the longest sustained in the history of [[aerial warfare]]. Along with the [[Battle of the Atlantic]] and the Allied [[Blockade of Germany (1939–45)|blockade of Germany]], it was the longest campaign during 1939–45. The ''Luftwaffe''{{'}}s fighter force (''[[Jagdwaffe]]'') defended the airspace of German-occupied territory against attack, first by [[RAF Bomber Command]], and then Bomber Command and the [[United States Army Air Forces]] (USAAF). ||| ||| ||| +0 Defence of the Reich ||| Bombing of Dresden in World War II ||| The intensifying campaign against German cities did not cease. Among the most controversial raids was the [[Bombing of Dresden in World War II|Bombing of Dresden]] in February 1945. The rationale of the raid was to aid the advance of the [[Red Army]] on the Eastern Front. Dresden was a communications hub which, it was believed, was transporting German reinforcements eastward. It was also thought it harboured significant industries in and around the city. Its value as a military target was and still is questioned due to the city's apparent lack of industrial potential in its centres and the late stage of the war. Soon afterwards, Allied forces conducted [[Operation Clarion]]. The operation sent thousands of bombers and fighters by day and night to target smaller cities and targets of opportunity. ||| Defeat (1945) ||| End of the area offensives ||| +0 Deluge (history) ||| Battle of Chudnov ||| On May 3, 1660, the [[Treaty of Oliva]] was signed, which ended the Polish - Swedish war. After the conclusion of the conflict, Poland - Lithuania initiated a large offensive against the Russians, who were beaten in the [[Battle of Chudnov]]. In 1661, [[Vilnius]] was recaptured (December 2), and in 1663 - 64, Polish forces invaded [[Left-bank Ukraine]]. The war with Russia ended with the [[Truce of Andrusovo]] (January 30, 1667). ||| Swedish invasion ||| 1658–1660 ||| +0 Demyansk Pocket ||| Kholm Pocket ||| The '''Demyansk Pocket''' ({{lang-de|Festung Demjansk or Kessel von Demjansk|links=no}}; {{lang-ru|Демя́нский котёл|links=no}}) was the name given to the [[Salients, re-entrants and pockets#Pocket|pocket]] of [[Wehrmacht|German troops]] encircled by the [[Red Army]] around [[Demyansk]] (Demjansk), south of [[Leningrad]], during World War II on the Eastern Front. The pocket existed mainly from 8 February-21 April 1942. A much smaller pocket was simultaneously [[Kholm Pocket|surrounded]] in [[Kholm, Kholmsky District, Novgorod Oblast|Kholm]], about {{convert|100|km|mi|abbr=on}} to the southwest. These both resulted from the German retreat following their defeat during the [[Battle of Moscow]]. ||| ||| ||| +0 Dongshan Island Campaign ||| Battle of Dongshan Island ||| Shortly before dawn on July 16, 1953, the [[Kuomintang|nationalist]] commander Hu Lien (胡琏) commanding his troops, totalling two divisions in 13 naval vessels and more than 30 motorized [[Junk (ship)|junks]], sailed toward Dongshan Island, [[Fujian]], attempting to retake the island from the [[communist]]s who took the island from the Nationalists three years earlier in the [[Battle of Dongshan Island]]. In addition to the two army divisions, an elite paratroop division totaling 2,000 personnel in two brigades was deployed for the mission, and the total Nationalist force committed was just over 10,000. The Nationalists had hoped to turn the island into another stronghold at near the enemy and use it as a steppingstone to launch strikes against the mainland, but many capable Nationalist commanders included the commander of this operation, [[Hu Lien]], remained highly doubtful this would ever succeed, and after fierce debate, a compromise was reached: a much more moderate objective of striking the island to gain a political and morale boost and then a quick withdraw before the enemy could reinforce the island, and when the situation permitted, turn the island into a stronghold like the original plan. ||| Prelude ||| ||| +0 Dongshan Island Campaign ||| Second Sino-Japanese War ||| The Communist local commander You Meiyao (游梅耀), a staff officer of the [[Chen Yi (communist)|Chen Yi]] during the [[Second Sino-Japanese War]], refused to withdraw because that would allow the Nationalists to utilise the Communist fortifications on the island, making future attempts to dislodge the Nationalists from the island very difficult. You Meiyao suggested while the reinforcement was organized as fast as possible, the local garrison would utilise the advantageous landscape and fortifications on the island to slow the enemy down by inflicting as many casualties as possible, and once the attackers were exhausted, the defenders would counterattack with reinforcements. ||| Prelude ||| ||| +0 Drive on Munda Point ||| Battle of Munda Point ||| The U.S. offensive made small gains because of limited combat experience by its soldiers, poor leadership by inexperienced US Army officers, harsh terrain and conditions on New Georgia, and effective defensive measures by the Japanese. The U.S. soldiers experienced an unusually high number of severe cases of [[combat stress reaction]]. The drive on Munda was halted on 17 July when the Japanese launched a large, ultimately unsuccessful, [[New Georgia counterattack|counterattack]] on the American forces. The Americans eventually secured the airfield in the [[Battle of Munda Point]]. ||| ||| ||| +0 Drive on Munda Point ||| New Georgia counterattack ||| The U.S. offensive made small gains because of limited combat experience by its soldiers, poor leadership by inexperienced US Army officers, harsh terrain and conditions on New Georgia, and effective defensive measures by the Japanese. The U.S. soldiers experienced an unusually high number of severe cases of [[combat stress reaction]]. The drive on Munda was halted on 17 July when the Japanese launched a large, ultimately unsuccessful, [[New Georgia counterattack|counterattack]] on the American forces. The Americans eventually secured the airfield in the [[Battle of Munda Point]]. ||| ||| ||| +0 Dunkirk evacuation ||| Battle of Belgium ||| After [[Nazi Germany]] [[invasion of Poland|invaded Poland]] in September 1939, marking the beginning of the Second World War, the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) was sent to aid in the defence of France. Germany invaded [[Battle of Belgium|Belgium]] and [[Battle of the Netherlands|the Netherlands]] on 10 May 1940, and three of their [[Panzer]] [[corps]] attacked France through the [[Ardennes]] and rapidly drove to the [[English Channel]]. By 21 May, the German forces had trapped the BEF, the remains of the Belgian forces, and three French [[field army|armies]] in an area along the northern coast of France. Commander of the BEF General [[John Vereker, 6th Viscount Gort]], immediately saw that evacuation across the Channel was the best course of action and began planning a withdrawal to Dunkirk, the closest location with good port facilities. On 22 May 1940, a halt order was issued by the German High Command, with [[Adolf Hitler]]'s approval. This gave the trapped Allied forces time to construct defensive works and pull back large numbers of troops toward Dunkirk, to fight the [[Battle of Dunkirk]]. From 28–31 May 1940, in the [[Siege of Lille (1940)|Siege of Lille]], the remaining 40,000 men of the once-formidable French First Army fought a delaying action against seven German [[Division (military)|divisions]], including three [[Panzer division|armoured divisions]]. ||| ||| ||| +0 East Cape War ||| Crimean War ||| McLean instructed retired Colonel [[George Stoddart Whitmore|George Whitmore]], a [[Crimean War]] veteran and Hawke's Bay settler, to call out 130 Hawke's Bay Militia for active service, drill them for action and join 45 Napier Rifle Volunteers who were also placed on alert. McLean requested further assistance from Fraser, who arrived in Napier on 11 October with 40 Military Settlers and a party of Wairoa ''kupapa''. The entire force was placed under Whitmore's command. ||| Omarunui and Petane ||| ||| +0 East Cape War ||| Invasion of the Waikato ||| The east coast hostilities came at the close of the [[Invasion of the Waikato|Waikato wars]] and before the outbreak of [[Te Kooti's War]], both fought nearby, but sprang from causes more closely related to the [[Second Taranaki War]]—namely, Māori resentment of punitive government [[New Zealand land confiscations|land confiscation]] coupled with the rise of the so-called Hauhau movement, an extremist part of the [[Pai Marire]] religion (also called the Hauhau), which was strongly opposed to the alienation of Māori land and eager to strengthen Māori identity. ||| ||| ||| +0 Eastern Front (World War I) ||| Gallipoli Campaign ||| After the [[Battle of Sarikamish]], the Russo-Turkish front was relatively stagnant for a year, although there were local campaigns in Azerbaijan and Lake Van in April and June. The Turks were concerned with reorganizing their army, the [[Gallipoli Campaign]], and [[Armenian Genocide|'ethnic cleansing' in Turkish Armenia]]. Meanwhile, the Caucasus Army had low priority, as Russia was preoccupied with other armies on the Eastern Front. However, the appointment of [[Grand Duke Nicholas Nikolaevich of Russia (1856-1929)|Grand Duke Nicholas Nikolaevich]] as Viceroy and Commander in the Caucasus in September 1915 radically changed the situation of the Russo-Turkish front. ||| 1915 ||| Russo-Turkish Offensive, Winter 1915-1916 ||| +0 Eastern Front (World War II) ||| Battle of the Bulge ||| Hitler's direction of the war was disastrous for the German Army, though the skill, loyalty, professionalism and endurance of officers and soldiers enabled him to keep Germany fighting to the end. [[F. W. Winterbotham]] wrote of Hitler's signal to [[Gerd von Rundstedt]] to continue the attack to the west during the [[Battle of the Bulge]]: ||| Leadership ||| Adolf Hitler ||| +0 Eastern Front (World War II) ||| Operation Solstice ||| A limited counter-attack (codenamed [[Operation Solstice]]) by the newly created [[Army Group Vistula]], under the command of ''[[Reichsführer-SS]]'' [[Heinrich Himmler]], had failed by 24 February, and the Soviets drove on to [[Pomerania]] and cleared the right bank of the Oder River. In the south, [[Operation Konrad|three German attempts]] to relieve the encircled [[Budapest]] failed and the city fell on 13 February to the Soviets. On 6 March, the [[Lake Balaton Offensive|Germans again counter-attacked]]; Hitler insisting on the impossible task of regaining the [[Danube]] River. By 16 March the attack had failed and the Red Army counterattacked the same day. On 30 March they entered [[Austria]] and captured [[Vienna]] on 13 April. ||| Conduct of operations ||| January–March 1945 ||| +0 Eastern Front (World War II) ||| Winter War ||| The two powers [[Invasion of Poland (1939)|invaded and partitioned Poland]] in 1939. After Finland refused the terms of a Soviet pact of mutual assistance, the Soviet Union attacked Finland on 30 November 1939 in what became known as the [[Winter War]] – a bitter conflict that resulted in a peace treaty on 13 March 1940, with Finland maintaining its independence but losing parts of eastern Karelia. In June 1940, the Soviet Union [[Occupation of the Baltic states|occupied and illegally annexed]] the three [[Baltic states]]—an action in violation of the [[Hague Conventions (1899 and 1907)]] and numerous bi-lateral conventions and treaties signed between the Soviet Union and Baltics. The annexations were never recognized by most Western states. The Molotov–Ribbentrop Pact ostensibly provided security to Soviets in the occupation of both the Baltics and [[Soviet occupation of Bessarabia and Northern Bukovina|the north and northeastern regions of Romania]] (Northern [[Bukovina]] and [[Bessarabia]]) although Hitler, in announcing the invasion of the Soviet Union, cited the Soviet annexations of Baltic and Romanian territory as having violated Germany's understanding of the Pact. The annexed Romanian territory was divided between the [[Ukrainian SSR|Ukrainian]] and [[Moldavian SSR|Moldavian]] Soviet republics. ||| Background ||| ||| +0 Ethnic violence in South Sudan (2011–present) ||| Second Sudanese Civil War ||| * 7–9 January: Clashes between nomadic [[Misseriya]] [[Arab]]s and the [[Dinka]] people killed 'dozens' in Abyei preceding the referendum. A source of tension was reportedly the delay in holding a separate referendum for the Abyei region. The Dinkas largely supported South Sudan's independence during the [[Second Sudanese Civil War]]. ||| Timeline of incidents ||| January 2011 ||| +0 European theatre of World War II ||| Battle of the Bulge ||| That changed when Germany mounted a major counteroffensive on December 16, 1944. The Ardennes offensive, also called the [[Battle of the Bulge]], drove back and surrounded some small American units. The Allied forces were eventually successful in driving back Germany, in what turned out to be their last major advance of the war. The battle officially ended on January 27, 1945. ||| Allied invasion of occupied France ||| ||| +0 European theatre of World War II ||| Eastern Front (World War II) ||| The '''European Theatre of World War II''', also known as the '''European War''', was a huge area of heavy fighting across [[Europe]], from [[Nazi Germany|Germany's]] and the [[Soviet Union|Soviet Union's]] joint [[invasion of Poland]] in September 1939 until the [[end of World War II in Europe|end of the war]] with the Soviet Union [[Military occupations by the Soviet Union|conquering much of Europe]] along with the German [[unconditional surrender]] on May 8, 1945 ([[Victory in Europe Day|V-E Day]]). The [[Allies of World War II|Allied forces]] fought the [[Axis powers]] on two major fronts (the [[Eastern Front (World War II)|Eastern Front]] and [[Western Front (World War II)|Western Front]]) as well as in the adjoining [[Mediterranean and Middle East Theatre]]. ||| ||| ||| +0 European theatre of World War II ||| Invasion of Iceland ||| Meanwhile, in western [[Scandinavia]], Germany [[Operation Weserübung|invaded Denmark and Norway]] in April 1940, and in response, Britain [[British occupation of the Faroe Islands|occupied the Faroe Islands]] (a Danish territory) and [[Invasion of Iceland|invaded and occupied Iceland]] (a sovereign nation with the King of Denmark as its monarch). ||| Germany assumes dominance in northern Europe ||| ||| +0 Expédition d'Irlande ||| French Revolution ||| Following the [[French Revolution]] in 1789, the cause of [[republicanism]] was taken up in many countries, including the [[Kingdom of Ireland]], at that time ruled by the [[Kingdom of Great Britain]]. ||| Background ||| ||| +0 Fall of Saigon ||| 1975 Tan Son Nhut C-5 accident ||| On April 3, President [[Gerald Ford]] announced “[[Operation Babylift]]”, which would evacuate about 2,000 orphans from the country. One of the [[Lockheed C-5 Galaxy]] planes involved in the operation [[1975 Tan Son Nhut C-5 accident|crashed]], killing 155 passengers and crew and seriously reducing the morale of the American staff. In addition to the 2,000 orphans evacuated by Babylift, [[Operation New Life]] resulted in the evacuation of over 110,000 Vietnamese refugees. ||| Evacuation ||| ||| +0 February Revolution ||| October Revolution ||| The February Revolution was followed in the same year by the [[October Revolution]], bringing [[Bolshevik]] rule and a change in Russia's social structure, and paving the way for the [[Soviet Union]]. ||| ||| ||| +0 Finnish reconquest of the Karelian Isthmus (1941) ||| Siege of Leningrad ||| The Soviet military leadership quickly learned of lessened Finnish pressure, and already at September 5 two divisions were transferred from Karelian Isthmus to the south of the city, against the Germans. Although the Finnish troops on the Karelian Isthmus didn't actively participate in the [[Siege of Leningrad]], merely just their existence contributed to the siege by hampering the supply of the city around and across the Lake Ladoga. ||| German pressure to attack Leningrad and the end of offensive ||| ||| +0 First Anglo-Dutch War ||| Battle of the Downs ||| With their victory over the Spanish fleet at the [[Battle of the Downs]] on October 21, 1639, Furthermore, many of these ships were in bad repair, so that fewer than 50 ships were seaworthy. The deficiency in the Dutch navy was to be made good by arming merchantmen. All were inferior in firepower to the largest English first and second [[Rating system of the Royal Navy|rates]]. ||| Background ||| ||| +0 First Balkan War ||| Greco-Turkish War (1897) ||| In Greece, Army officers had [[Goudi coup|revolted]] in August 1909 and secured the appointment of a progressive government under [[Eleftherios Venizelos]], which they hoped would resolve the [[History of Crete#Modern Crete|Cretan issue]] in Greece's favour. They also wanted to reverse their [[Greco-Turkish War (1897)|defeat of 1897]] at the hands of the Ottomans. An emergency military reorganization led by a French military mission had been started for that purpose, but its work was interrupted by the outbreak of war in the Balkans. In the discussions that led Greece to join the [[Balkan League]], Bulgaria refused to commit to any agreement on the distribution of territorial gains, unlike its deal with Serbia over Macedonia. Bulgaria's diplomatic policy was to push Serbia into an agreement limiting its access to Macedonia, while at the same time refusing any such agreement with Greece. Bulgaria believed that its army would be able to occupy the larger part of Aegean Macedonia and the important port city of Salonica ([[Thessaloniki]]) before the Greeks. ||| Background ||| ||| +0 First Balkan War ||| Second Balkan War ||| As a result of the war, the allies captured and partitioned almost all remaining European territories of the Ottoman Empire. Ensuing events also led to the creation of an independent [[Independent Albania|Albania]]n state. Despite its success, Bulgaria was dissatisfied over the division of the spoils in Macedonia, which provoked the start of the [[Second Balkan War]]. ||| ||| ||| +0 First Battle of Algeciras ||| Battle of the Nile ||| On 1 August 1798, the French Mediterranean Fleet was almost completely destroyed at the [[Battle of the Nile]] in [[Aboukir Bay]] off [[Egypt]]. As a result, the British [[Royal Navy]] became dominant in the [[Mediterranean Sea]] and imposed [[blockades]] on French and Spanish ports in the region, including the important naval bases of [[Toulon]] and [[Cadiz]]. ||| Background ||| ||| +0 First Battle of Bull Run ||| Battle of Fort Sumter ||| Just months after the start of the war at [[Battle of Fort Sumter|Fort Sumter]], the Northern public clamored for a march against the Confederate capital of [[Richmond, Virginia]], which they expected to bring an early end to the rebellion. Yielding to political pressure, [[Brigadier general (United States)|Brig. Gen.]] [[Irvin McDowell]] led his unseasoned Union Army across [[Bull Run (Occoquan River)|Bull Run]] against the equally inexperienced Confederate Army of Brig. Gen. [[P. G. T. Beauregard]] camped near Manassas Junction. McDowell's ambitious plan for a surprise flank attack on the Confederate left was poorly executed by his officers and men; nevertheless, the Confederates, who had been planning to attack the Union left flank, found themselves at an initial disadvantage. ||| ||| ||| +0 First Battle of Chattanooga ||| Battle of the Cumberland Gap (June 1862) ||| After Mitchel received command of all Federal troops between Nashville and Huntsville on May 29, he ordered [[Brigadier general (United States)|Brig. Gen.]] [[James Negley]] with a small division to lead an expedition to capture [[Chattanooga, Tennessee|Chattanooga]]. This force arrived before Chattanooga on June 7. Negley ordered the [[79th Pennsylvania Infantry]] out to reconnoiter. It found the Confederates entrenched on the opposite side of the river along the banks and atop Cameron Hill. Negley brought up two artillery batteries to open fire on the Rebel troops and the town and sent infantry to the river bank to act as sharpshooters. The Union bombardment of Chattanooga continued throughout June 7 and until noon on June 8. The Confederates replied, but it was uncoordinated since the undisciplined gunners were allowed to do as they wished. On June 10, Smith, who had arrived on June 8, reported that Negley had withdrawn and the Confederate loss was minor. This attack on Chattanooga was a warning that Union troops could mount assaults when they wanted. The attack also prompted [[Edmund Kirby Smith]] to withdraw Confederate troops from other areas to defend Chattanooga. This redeployment of troops allowed [[George W. Morgan]] to [[Battle of the Cumberland Gap (June 1862)|capture the Cumberland Gap]] on June 18, 1862. ||| Battle ||| ||| +0 First Battle of Donetsk Airport ||| Second Battle of Donetsk Airport ||| The '''First Battle of Donetsk Airport''' was a conflict between separatist insurgents associated with the [[Donetsk People's Republic]] and [[First Yatsenyuk Government|Ukrainian government]] forces that took place at [[Donetsk International Airport]] on 26–27 May 2014, as part of the [[War in Donbass]] that began after the [[2014 Ukrainian revolution]]. A [[Second Battle of Donetsk Airport|second battle]] broke out at the airport on 28 September 2014. ||| ||| ||| +0 First Battle of Lexington ||| Second Battle of Lexington ||| This engagement should not be confused with the [[Battle of Lexington II|Second Battle of Lexington]], which was fought on October 19, 1864, and also resulted in a Southern victory. ||| ||| ||| +0 First Battle of Murfreesboro ||| Battle of Stones River ||| The Confederates destroyed much of the Union supplies and tore up railroad track in the area, but the main result of the raid was the diversion of Union forces from a drive on Chattanooga. This raid, along with Morgan's raid into Kentucky, made possible Bragg's concentration of forces at Chattanooga and his early September invasion of Kentucky. The next action at Murfreesboro was the more prominent [[Battle of Stones River]] (known as the Battle of Murfreesboro in the South), fought December 31, 1862, to January 2, 1863. ||| Aftermath ||| ||| +0 First Battle of Zurich ||| Battle of Stockach (1799) ||| The Austrians had arrayed their own army in a line from the [[State of Tyrol|Tyrol]] to the Danube. A force of 46,000 under command of [[Count Heinrich von Bellegarde]] formed the defence of the Tyrol. Another small Austrian force of 26,000 commanded by [[Friedrich Freiherr von Hotze]] guarded the [[Vorarlberg]]. The main Austrian Army—close to 80,000 troops under the command of [[Archduke Charles, Duke of Teschen|Archduke Charles]]—had wintered in the Bavarian, Austrian, and [[Archbishopric of Salzburg|Salzburg]] territories on the eastern side of the [[Lech (river)|Lech river]]. At the battles of [[Battle of Ostrach|Ostrach]] (21 March) and [[Battle of Stockach (1799)|Stockach]] (25 March), the main Austrian force pushed the Army of the Danube back into the Black Forest. Charles made plans to cross the upper Rhine at the Swiss town of [[Schaffhausen]]. Friedrich Freiherr von Hotze brought a portion (approximately 8,000) of his force west, leaving the rest to defend the Vorarlberg. At the same time, [[Friedrich Joseph, Count of Nauendorf]], brought the left wing of the main Austrian force across the Rhine by Eglisau. They planned to unite with the main Austrian army, controlling the northern access points of [[Zürich]] and forcing an engagement with Masséna. ||| Background ||| Outbreak of war in 1799 ||| +0 First Battle of the Aisne ||| Second Battle of the Aisne ||| There were two later battles on the [[Aisne]]; the [[Second Battle of the Aisne|second]] (April–May 1917) and the [[Third Battle of the Aisne|third]] (May–June 1918). ||| Race to the Sea ||| ||| +0 First Carlist War ||| Battle of Trafalgar ||| The 1805 [[Battle of Trafalgar]] had all but shattered the Spanish navy, with the [[Peninsular War]] leaving the Spanish society overwhelmed by continuous warfare and badly damaged by looting. While the Spanish Empire collapsed, the maritime trade trickled to the Americas and Philippines, and Spain's military struggled to keep their colonies, with [[Mexican War of Independence|Mexico getting its independence in 1821]]. The customary overseas revenue to the metropolis was at a historic low, the royal coffers were empty. Financing (solvency) and recruitment to the military became an overriding concern for the Spanish Crown, with the governments under King [[Ferdinand VII]] failing to provide new solutions and stability. ||| Historical background ||| ||| +0 First English Civil War ||| Battle of Worcester ||| Convention uses the name 'The English Civil War' (1642–51) to refer collectively to the civil wars in England and the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]], which began with the raising of [[Charles I of England|King Charles I's]] standard at [[Nottingham]] on 22 August 1642, and ended on 3 September 1651 at the [[Battle of Worcester]]. There was some continued organised Royalist resistance in Scotland, which lasted until the surrender of [[Dunnottar Castle]] to Parliament's troops in May 1652, but this resistance is not usually included as part of the English Civil War. The English Civil War can be divided into three: the First English Civil War (1642–1646), the Second English Civil War (1648–1649), and the Third English Civil War (1649–1651). ||| Overview ||| ||| +0 First English Civil War ||| Irish Confederate Wars ||| During this time, the [[Irish Confederate Wars]] (another civil war), continued in Ireland, starting with the [[Irish Rebellion of 1641]] and ending with the [[Cromwellian conquest of Ireland]]. Its incidents had little or no direct connection with those of Civil War, but the wars were mixed with, and formed part of, a linked series of conflicts and civil wars between 1639 and 1652 in the kingdoms of England, [[Scotland]], and Ireland, which at that time shared a monarch, but were distinct states in political organisation. These linked conflicts are also known as the [[Wars of the Three Kingdoms]] by some recent historians, aiming to have a unified overview, rather than treating parts of the other conflicts as a background to the English Civil War. ||| Overview ||| ||| +0 First English Civil War ||| Scotland in the Wars of the Three Kingdoms ||| Convention uses the name 'The English Civil War' (1642–51) to refer collectively to the civil wars in England and the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]], which began with the raising of [[Charles I of England|King Charles I's]] standard at [[Nottingham]] on 22 August 1642, and ended on 3 September 1651 at the [[Battle of Worcester]]. There was some continued organised Royalist resistance in Scotland, which lasted until the surrender of [[Dunnottar Castle]] to Parliament's troops in May 1652, but this resistance is not usually included as part of the English Civil War. The English Civil War can be divided into three: the First English Civil War (1642–1646), the Second English Civil War (1648–1649), and the Third English Civil War (1649–1651). ||| Overview ||| ||| +0 First German phosgene attack on British troops ||| Eastern Front (World War I) ||| '''The First German phosgene attack on British troops''' took place on 19 December 1915, during [[World War I]], at [[Wieltje]] north-east of [[Ypres]] in Belgian Flanders. German gas attacks on allied troops had begun on 22 April 1915, during the [[Second Battle of Ypres]] using [[chlorine|chlorine gas]], against French and Canadian units. The surprise led to the capture of much of the [[Ypres Salient]], after which the effectiveness of gas as a weapon diminished, as the French and British produced anti-gas helmets. The German [[Walther Nernst|Nernst]]-[[Carl Duisberg|Duisberg]]-Commission investigated the feasibility of adding the much more lethal [[phosgene]] to chlorine gas. Mixed chlorine and phosgene gas was used at the end of May 1915, in attacks against French troops on the [[Western Front (World War I)|Western Front]] and on the [[Eastern Front (World War I)|Eastern Front]] against the Russian army. ||| ||| ||| +0 First Sahrawi Intifada ||| Independence Intifada (Western Sahara) ||| The '''First Sahrawi Intifada''' began in 1999 and lasted until 2004, transforming into the [[Independence Intifada (Western Sahara)|Independence Intifada]] in 2005. First Sahrawi Intifada forms a part of the wider and still ongoing [[Western Sahara conflict]]. ||| ||| ||| +0 First Siege of Missolonghi ||| Second Siege of Missolonghi ||| Missolonghi remained under Greek control, and resisted another Ottoman [[Second Siege of Missolonghi|attempt at its capture]] a year later. Its resistance achieved wider fame when [[Lord Byron]] arrived there, dying in the town of fever in April 1824. The city was besieged for a [[Third Siege of Missolonghi|third and final time]], resisting both Ottoman and Egyptian armies for almost a year, until its final fall on April 10, 1826. ||| Aftermath ||| ||| +0 Flanders Campaign ||| Battle of Tourcoing ||| The Coalition forces planned to stem Pichegru's advance with a broad attack involving several isolated columns in a scheme devised by Mack. At the [[Battle of Tourcoing]] on 17-18 May this effort became a logistical disaster as communications broke down and columns were delayed. Only a third of the allied force came into action, and were only extricated after the loss of 3,000 men.{{sfn|Fortescue|1918|pp=331-342}} Pichegru being absent on the Sambre, French command at Tourcoing had devolved onto the shoulders of [[Joseph Souham]]. On his return to the front Pichegru renewed the offensive to press his advantage but despite repeated attacks was held off at the [[Battle of Tournay]] on 22 May. ||| 1794 Campaign ||| The French counter-offensive ||| +0 Flanders Campaign ||| Siege of Dunkirk (1793) ||| York's forces began the [[Siege of Dunkirk (1793)|investment of Dunkirk]], though they were ill-prepared for a protracted siege and had still not received any heavy siege artillery. The Armée du Nord, now under command of [[Jean Nicolas Houchard]] defeated York's exposed left flank under the Hanoverian general [[Heinrich Wilhelm von Freytag|Freytag]] at the [[Battle of Hondschoote (1793)|Battle of Hondschoote]], forcing York to raise the siege and abandon his equipment. The Anglo-Hanoverians fell back in good order to [[Veurne]] (Furnes), where they were able to recover as there was no French pursuit. Houchard's plan had actually been to merely repulse the Duke of York so he could march south to relieve Le Quesnoy; on 13 September he defeated the Hereditary Prince at [[Battle of Menin (1793)|Menin]] ([[Menen]]), capturing 40 guns and driving the Dutch towards Bruges and Ghent, but three days later his forces were routed in turn by [[Johann Peter Beaulieu|Beaulieu]] at [[Battle of Courtrai (1793)|Courtrai]]. ||| 1793 campaign ||| Autumn Campaign ||| +0 Flanders Campaign ||| Waterloo Campaign ||| The Hereditary Prince would have a checkered military career in the British (Helder 1799, Wight 1800), Prussian (Jena 1806) and Austrian (Wagram 1809) armies, before becoming king of the [[Kingdom of the United Netherlands]] in 1815, where a reconstituted Dutch army fought under his son, another [[William II of the Netherlands|Prince of Orange]], in the [[Waterloo Campaign]]. ||| Legacy ||| ||| +0 Formosa Air Battle ||| Battle of Leyte Gulf ||| The '''Formosa Air Battle''' ({{lang-ja|台湾沖航空戦}}, {{zh|t=臺灣空戰}}) took place between October 10 and 20, 1944, off the eastern coasts of the [[Ryukyu Islands]], [[Formosa]], and [[Luzon]]. It was fought by the [[Imperial Japanese Navy Air Service]] and the approaching [[Task Force 38]] of the [[United States Third Fleet]] and was one of a series of [[air raids on Japan]] during the [[Pacific War]]. The attacks served to prevent Japanese aircraft from participating in the [[Battle of Leyte Gulf]] later that month. ||| ||| ||| +0 French Revolution ||| Haitian Revolution ||| Although the French Revolution had a dramatic impact in numerous areas of Europe, the French colonies felt a particular influence. As the [[Martinique|Martinican]] author [[Aimé Césaire]] put it, 'there was in each French colony a specific revolution, that occurred on the occasion of the French Revolution, in tune with it.' The [[Haitian Revolution]] (Saint Domingue) became a central example of slave uprisings in French colonies. ||| French Revolutionary Wars ||| Colonial Uprisings ||| +0 French campaign in Egypt and Syria ||| Siege of Acre (1799) ||| ** 20 May (1 Prairial an VII) – [[Siege of Acre (1799)|Siege of Acre]], French troops retire after eight assaults ||| Timeline and battles ||| ||| +0 French invasion of Russia ||| Battle of Dresden ||| Napoleon was not completely defeated by the disaster in Russia. The following year he raised an army of around 400,000 French troops supported by a quarter of a million French allied troops to contest control of Germany in an [[Sixth Coalition|even larger campaign]]. Despite being outnumbered, he won a large victory at the [[Battle of Dresden]]. It was not until the decisive [[Battle of Nations]] (October 16–19, 1813) that he was finally defeated and afterwards no longer had the troops to stop the Coalition's invasion of France. Napoleon did still manage to [[Six Days Campaign|inflict heavy losses]] and a series of minor military victories on the far larger Allied armies as they drove towards Paris, though they captured the city and forced him to abdicate in 1814. ||| Historical assessment ||| Aftermath ||| +0 Gas attacks at Hulluch ||| First German phosgene attack on British troops ||| The gas used by the German troops at Hulluch was a mixture of [[chlorine]] and [[phosgene]], which had first been used [[First German phosgene attack on British troops|against British troops on 19 December 1915]] at Wieltje, near [[Ypres]]. The German gas was of sufficient concentration to penetrate the British [[PH helmet|PH gas helmets]] and the 16th Division was unjustly blamed for poor gas discipline. It was put out that the gas helmets of the division were of inferior manufacture, to allay doubts as to the effectiveness of the helmet. Production of the [[M2 gas mask|Small Box Respirator]], which had worked well during the attack, was accelerated. ||| ||| ||| +0 Ghouta chemical attack ||| Iraq War ||| The report was met with substantial scepticism in the British media, with the ''[[Daily Mail]]'' explicitly comparing it with the '[[Iraq Dossier|dodgy dossier]]' the UK government had published in 2003 prior to the [[Iraq War]]. ||| Foreign government assessments ||| United Kingdom ||| +0 Glina massacres ||| Croatian War of Independence ||| An estimated 2,000–2,400 people were killed in the Glina massacres. In 1969, a monument was erected and a memorial museum was built to commemorate the victims of the killings. Following the [[independence of Croatia]] from [[Socialist Federal Republic of Yugoslavia|Yugoslavia]], the monument was removed by Croatian authorities in the town. After the [[Croatian War of Independence]], the local authorities failed to restore it and dismantled it instead. The memorial museum was converted into a generic cultural institution, to the dismay of the local Serbian population. ||| ||| ||| +0 Glorious First of June ||| Battle of Quiberon Bay ||| Despite these difficulties, the Channel Fleet was possessed of one of the best naval commanders of the age; its commander-in-chief, [[Richard Howe, 1st Earl Howe]], had learned his trade under [[Edward Hawke|Sir Edward Hawke]] and fought at the [[Battle of Quiberon Bay]] in 1759. ||| Fleets ||| Royal Navy ||| +0 Glorious First of June ||| Battle of Trafalgar ||| Ultimately the revolutionary excesses of the period would prove disastrous for the French Navy. Poor leadership, conflicting and arbitrary orders and the decimation of the experienced seamen in the ranks promoted a negative attitude in the French officer corps. The French battlefleet did not contest British dominance in Northern European waters again, and their raiding operations repeatedly ended in failure at the hands of more confident British squadrons and the unforgiving Atlantic weather. By 1805, when the last great French fleet to take to the sea was crushed at the [[Battle of Trafalgar]], poor training and low investment in the Navy had reduced its efficiency to levels unthinkable 20 years earlier. ||| Aftermath ||| France ||| +0 Guadalcanal Campaign ||| Actions along the Matanikau ||| In response, on 19 August, Vandegrift sent three companies of the U.S. [[5th Marine Regiment (United States)|5th Marine Regiment]] to attack the Japanese troop concentration west of the Matanikau. One company attacked across the sandbar at the mouth of the Matanikau river while another crossed the river {{convert|1000|m|yd}} inland and attacked the Japanese forces located in Matanikau village. The third landed by boat further west and attacked Kokumbuna village. After briefly occupying the two villages, the three Marine companies returned to the Lunga perimeter, having killed about 65 Japanese soldiers while losing four Marines. This action, sometimes referred to as the 'First Battle of the Matanikau', was the first of several major [[Actions along the Matanikau|actions around the Matanikau River]] during the campaign. ||| Events ||| Initial operations ||| +0 Guadalcanal Campaign ||| New Guinea campaign ||| The Guadalcanal campaign was a significant strategic [[combined arms]] victory by Allied forces over the Japanese in the Pacific theater. The Japanese had reached the peak of their conquests in the Pacific. The victories at [[Battle of Milne Bay|Milne Bay]], [[Battle of Buna-Gona|Buna-Gona]], and Guadalcanal marked the Allied transition from defensive operations to the strategic initiative in that theater, leading to offensive operations, such as the [[Solomon Islands campaign|Solomon Islands]], [[New Guinea campaign|New Guinea]], and [[Pacific Ocean theater of World War II|Central Pacific]] campaigns, that resulted in Japan's [[Surrender of Japan|eventual surrender]] and the end of World War II. ||| ||| ||| +0 Haitian Revolution ||| French Revolution ||| In France, the majority of the Estates General, an advisory body to the King, constituted itself as the [[National Assembly (French Revolution)|National Assembly]], made radical changes in French laws, and on 26 August 1789, published the [[Declaration of the Rights of Man]], declaring all men free and equal. The [[French Revolution]] shaped the course of the conflict in Saint-Domingue and was at first widely welcomed in the island. At first, wealthy whites saw it as an opportunity to gain independence from France, which would allow elite plantation-owners to take control of the island and create trade regulations that would further their own wealth and power. There were so many twists and turns in the leadership in France, and there were so many complex events in Saint-Domingue, that various classes and parties changed their alignments many times.{{Citation needed|date=July 2012}} However, the Haitian Revolution quickly became a test of the ideology of the French Revolution, as it radicalized the slavery question and forced French leaders to recognize the full meaning of their revolution. ||| Impact of the French Revolution ||| ||| +0 Haiyang Shiyou 981 standoff ||| Sino-Vietnamese War ||| While China and Vietnam are nominally brother [[socialist countries]], relations have not always been cordial. In 1979, China [[Sino-Vietnamese War|invaded Vietnam]] in response to Vietnam [[Cambodian-Vietnamese War|invading]] the Chinese-backed [[Khmer Rouge]]. The two countries sporadically fought until relations were reestablished in 1991. Due to [[Chinese domination of Vietnam|one thousand years of Chinese domination and numerous Chinese invasions over the past two millennia]], the Vietnamese public remain wary of Chinese actions. ||| Background ||| ||| +0 Hard Hat Riot ||| Cambodian Campaign ||| The '''Hard Hat Riot''' occurred on May 8, 1970 in [[Lower Manhattan]]. The [[riot]] started about noon when about 200 [[construction worker]]s mobilized by the New York State [[AFL-CIO]] attacked about 1,000 high school and college students and others [[Student Strike of 1970|protesting]] the [[Kent State shootings]], the [[Cambodian Campaign|American invasion of Cambodia]] and the [[Vietnam War]] near the intersection of [[Wall Street]] and [[Broad Street (Manhattan)|Broad Street]]. The riot, which spread to [[New York City Hall]], lasted little more than two hours. More than 70 people were injured, including four policemen. Six people were arrested. ||| ||| ||| +0 Hawthorn Ridge Redoubt ||| Battle of Albert (1916) ||| British troops continued the mine warfare begun in 1914 and an attack was made on the area by the [[29th Division (United Kingdom)|29th Division]] of [[VIII Corps (United Kingdom)|VIII Corps]] on 1 July 1916, the [[First day on the Somme]]. The attack failed, despite the detonation of a huge mine under the redoubt, which was blamed on the corps commander Lieutenant-General [[Aylmer Hunter-Weston]], who ordered the mine to be sprung ten minutes before zero hour. (The cinematographer G. H. Malins filmed the detonation of the mine under the [[redoubt]] at {{nowrap|7:20 a.m.}} on 1 July 1916, during the opening of the [[Battle of Albert (1916)|Battle of Albert]] {{nowrap|[1–13 July]}} 1916.) The Hawthorn Ridge mine was part of a [[Mines on the first day of the Somme|series of eight large and eleven small mines]] that were detonated by the British on the [[First day on the Somme]]. ||| ||| ||| +0 Hawthorn Ridge Redoubt ||| First day on the Somme ||| British troops continued the mine warfare begun in 1914 and an attack was made on the area by the [[29th Division (United Kingdom)|29th Division]] of [[VIII Corps (United Kingdom)|VIII Corps]] on 1 July 1916, the [[First day on the Somme]]. The attack failed, despite the detonation of a huge mine under the redoubt, which was blamed on the corps commander Lieutenant-General [[Aylmer Hunter-Weston]], who ordered the mine to be sprung ten minutes before zero hour. (The cinematographer G. H. Malins filmed the detonation of the mine under the [[redoubt]] at {{nowrap|7:20 a.m.}} on 1 July 1916, during the opening of the [[Battle of Albert (1916)|Battle of Albert]] {{nowrap|[1–13 July]}} 1916.) The Hawthorn Ridge mine was part of a [[Mines on the first day of the Somme|series of eight large and eleven small mines]] that were detonated by the British on the [[First day on the Somme]]. ||| ||| ||| +0 Highway of Death ||| Liberation of Kuwait campaign ||| [[Colin Powell]], then [[Chairman of the Joint Chiefs of Staff]] and the future [[Secretary of State]], said the '[[Carnival game|shooting gallery]]' scenes carnage was the reason to end the Persian Gulf War hostilities after the [[Liberation of Kuwait campaign]]. Powell wrote later in his autobiography ''My American Journey'' that 'the television coverage was starting to make it look as if we were engaged in slaughter for slaughter's sake.' ||| Controversies ||| ||| +0 Hindenburg Line ||| Hundred Days Offensive ||| A {{nowrap|35-day}} {{lang|de|''Alberich''}} timetable was prepared, for the plan to abandon the Noyon Salient. Infrastructure in the salient was destroyed and buildings demolished from {{nowrap|9 February – 15 March.}} The Anglo-French armies were not able seriously to interfere with the German retirement, which began on 16 March but construction of the Hindenburg Line was incomplete and parts were poorly sited, having been built according to the obsolete principle of a long field of fire, which forced the Germans to fight delaying actions in outpost villages for longer than anticipated.{{efn|The German order of battle after the retirement from north to south was [[23rd Reserve Division (German Empire)|23rd Reserve Division]], [[220th Division (German Empire)|220th Division]], [[26th Reserve Division (German Empire)|26th Reserve Division]], [[2nd Guards Reserve Division (German Empire)|2nd Guards Reserve Division]], [[38th Division (German Empire)|38th Division]], [[4th Division (German Empire)|4th Division]], [[50th Reserve Division (German Empire)|50th Reserve Division]], [[9th Reserve Division (German Empire)|9th Reserve Division]], [[22nd Reserve Division (German Empire)|22nd Reserve Division]], [[199th Division (German Empire)|199th Division]], [[29th Division (German Empire)|29th Division]], [[111th Division (German Empire)|111th Division]], [[221st Division (German Empire)|221st Division]], [[25th Division (German Empire)|25th Division]], [[15th Reserve Division (German Empire)|15th Reserve Division]], [[47th Division (German Empire)|47th Division]], [[46th Reserve Division (German Empire)|46th Reserve Division]], [[13th Division (German Empire)|13th Division]], [[211th Division (German Empire)|211th Division]] and [[222nd Division (German Empire)|222nd Division]].{{sfn|Kahn|1970|pp=2031}}|group=Note}} News of the demolitions and condition of the French civilians left behind, were serious blows to the prestige of the German empire in neutral countries. Labour was transferred south in February 1917, to work on the {{lang|de|''Hundingstellung''}}, from La Fère to Rethel and on the forward positions on the Aisne front, which the Germans knew were due to be attacked by the French armies. Divisions released by Operation {{lang|de|''Alberich''}} and other reinforcements, increased the German armies on the Aisne front to {{nowrap|38 divisions}} by early April. The Hindenburg Line was attacked several times in 1917, notably at St. Quentin, Bullecourt, the Aisne and Cambrai and was broken in September 1918, during the [[Hundred Days Offensive]]. ||| ||| ||| +0 Hitachi Maru Incident ||| Battle off Ulsan ||| The attack was a severe blow to Japanese public morale. Memorials were erected in [[Chidorigafuchi National Cemetery|Chidorigafuchi Park]] in Tokyo, and a mass grave commemorating the Imperial Guards was erected in [[Aoyama Cemetery]]. A monument to ''Sado Maru'' was built in [[Shiba Park]] (and was moved to [[Yasukuni Shrine]] in 1964). Kamimura received numerous death threats and came under extreme pressure to track down the Russian squadron, which he did at the [[Battle off Ulsan]] on 14 August 1904. ||| Aftermath ||| ||| +0 Hohenzollern Redoubt (1916) ||| Battle of Loos ||| The '''Hohenzollern Redoubt''' was a German defensive position on the Loos front, which was fought over by the British and German armies from the [[Battle of Loos]] {{nowrap|(25 September – 14 October 1915)}} to the beginning of the [[Battle of the Somme]] {{nowrap|(1 July – 18 November 1916)}}. Over the winter months, the 170th [[Tunnelling companies of the Royal Engineers|Tunnelling Company]] dug several galleries under the German lines, in the {{lang|de|''Hohenzollern''}} Redoubt area, which had changed hands several times since September 1915. In March 1916, the west side was held by the British and the east side was still occupied by the Germans, with the front near a new German trench known as the Chord. The Germans had an unobstructed view of the British positions, from a [[slag]] heap named {{lang|fr|''Fosse 8''}} and in previous mining operations, no man's land had become a crater field. The British front line was held by outposts, to reduce the number of troops vulnerable to mine explosions and the strain of knowing that the ground could erupt at any moment. ||| ||| ||| +0 Huaihai Campaign ||| Pingjin Campaign ||| '''Huaihai Campaign''' ({{zh|c={{linktext|淮|海|戰|役}}|p={{linktext|Huái|hǎi| Zhàn|yì}}}}) or '''Battle of Hsupeng''' ({{zh|s={{linktext|徐|蚌|会|战}}|t={{linktext|徐|蚌|會|戰}}|p={{linktext|Xú|bèng| Huì|zhàn}}}}, also '''Battle of Xu-Beng''') was a military action during 1948 and 1949 that was the decisive battle of the [[Chinese Civil War]]. It was one of the few [[conventional warfare|conventional battles]] of the war. 550,000 troops of the [[Republic of China]] (led by [[Kuomintang]]) were surrounded in [[Xuzhou]] (Hsuchow) and destroyed by the [[Communist Party of China|communist]] [[People's Liberation Army]] (PLA). This campaign is one of the three campaigns that marked the end of Nationalist dominance in northern [[China]], the other two campaigns being [[Liaoshen Campaign|Liaoshen]] and [[Pingjin Campaign|Pingjin]]. ||| ||| ||| +0 Huesca Offensive ||| Segovia Offensive ||| In April 1937, the Nationalists started an offensive against the Republican-held, [[Biscay Campaign|Biscay Province]], and, by the end of May, the Navarrese troops had reached the eastern side of Bilbao's defenses. The Republican government then decided to launch two diversionary offensives on the Aragon and [[Segovia Offensive|Madrid]] fronts in order to divert Nationalist troops. ||| Background. ||| ||| +0 Hundred Days ||| Battle of Leipzig ||| The rise of Napoleon troubled the other European powers as much as the earlier revolutionary regime had. Despite the formation of new coalitions against him, Napoleon's forces continued to conquer much of Europe. The tide of war began to turn, however, after a disastrous [[French invasion of Russia]] in 1812 that caused Napoleon to lose much of his army. The following year, during the [[War of the Sixth Coalition]], Coalition forces defeated the French in the [[Battle of Leipzig]]. ||| Background ||| Napoleon's rise and fall ||| +0 Hundred Days Offensive ||| Battle of Amiens (1918) ||| The '''Hundred Days Offensive''' was the final period of the [[World War I|First World War]], during which the [[Allies of World War I|Allies]] launched a series of offensives against the [[Central Powers]] on the [[Western Front (World War I)|Western Front]] from 8 August to 11 November 1918, beginning with the [[Battle of Amiens (1918)|Battle of Amiens]]. The offensive essentially pushed the Germans out of France, forcing them to retreat beyond the [[Hindenburg Line]], and was followed by [[Armistice with Germany (Compiègne)|an armistice]]. The term 'Hundred Days Offensive' does not refer to a specific battle or unified strategy, but rather the rapid series of Allied victories starting with the Battle of Amiens. ||| ||| ||| +0 Hundred Days Offensive ||| Hindenburg Line ||| The '''Hundred Days Offensive''' was the final period of the [[World War I|First World War]], during which the [[Allies of World War I|Allies]] launched a series of offensives against the [[Central Powers]] on the [[Western Front (World War I)|Western Front]] from 8 August to 11 November 1918, beginning with the [[Battle of Amiens (1918)|Battle of Amiens]]. The offensive essentially pushed the Germans out of France, forcing them to retreat beyond the [[Hindenburg Line]], and was followed by [[Armistice with Germany (Compiègne)|an armistice]]. The term 'Hundred Days Offensive' does not refer to a specific battle or unified strategy, but rather the rapid series of Allied victories starting with the Battle of Amiens. ||| ||| ||| +0 Hundred Days Offensive ||| Spring Offensive ||| The German [[Spring Offensive]]s on the [[Western Front (World War I)|Western Front]], which began on 21 March 1918 with Operation Michael, had petered out by July. The Germans had advanced to the [[Marne (river)|Marne]] river but failed to achieve a decisive breakthrough. When [[Operation Marne-Rheims]] ended in July, the Allied supreme commander, the French [[Ferdinand Foch]], ordered a counter-offensive which became the [[Second Battle of the Marne]]. The Germans, recognising their untenable position, withdrew from the Marne towards the north. For this victory, Foch was granted the title [[Marshal of France]]. ||| Background ||| ||| +0 Indo-Pakistani Naval War of 1971 ||| East Pakistan Air Operations, 1971 ||| On 4 December 1971, the [[INS Vikrant|INS ''Vikrant'']], the [[aircraft carrier]], was also deployed in which its [[Hawker Sea Hawk]] attack aircraft contributed in [[East Pakistan Air Operations, 1971|Air Operations]] in East Pakistan. The aircraft successfully attacked many coastal towns in East Pakistan including Chittagong and Cox's Bazaar. The continuous attacks later destroyed the [[Pakistan Air Force|PAF]]'s capability to retaliate. ||| Naval operations in the Eastern theatre ||| ||| +0 Indo-Pakistani Naval War of 1971 ||| Operation Jackpot ||| Bloody urban [[guerrilla warfare]] ensued and [[Operation Jackpot]] severely damaged the operational capability of Pakistan Navy. Before the start of the hostilities, all naval gun boats were stationed at the [[Chittagong]]. As the air operations began, the IAF aircraft damaged the ''Rajshahi'', while the ''Comilla'' was sunk on 4 December. On 5 December, the IAF sank two patrol boats in Khulna. The PNS ''Sylhet'' was destroyed on 6 December and the ''Balaghat'' on 9 December by Indian aircraft. On 11 December, the PNS ''Jessore'' was destroyed, while ''Rajshahi'' was repaired. The ''Rajashahi'' under the command of Lieutenant-Commander Shikder Hayat managed to evade the Indian blockade and reach Malaysia before the surrender on 16 December. ||| Pakistani Eastern Naval Command ||| ||| +0 Indo-Pakistani Naval War of 1971 ||| Operation Python ||| With the success of the Indian Navy's operations in East Pakistan, the Indian Navy commenced two large-scale operations, [[Operation Trident (Indo-Pakistani War of 1971)|Operation Trident]] and [[Operation Python]] in the Western front, prior to the start of formal combat between India and Pakistan. ||| ||| ||| +0 Insurgency in the Maghreb (2002–present) ||| 2015 Sousse attacks ||| *June 26: The [[2015 Sousse attacks|Sousse attacks]] at the resort at [[Port El Kantaoui]] killed 39 European tourists, mostly British citizens. ||| Timeline and order of events ||| 2015 ||| +0 Internment of Japanese Americans ||| Battle of Stalingrad ||| The Volga Germans were deported prior to the [[Battle of Stalingrad]], as they were regarded, in the 'war hysteria of the moment', as a potential '[[Fifth Column]]'. ||| Expulsions and population transfers of World War II ||| ||| +0 Invasion of Algiers in 1830 ||| First Barbary War ||| During the [[Napoleonic Wars]], the [[Regency of Algiers]] had greatly benefited from trade in the Mediterranean, and of the massive imports of food by France, largely bought on credit. The [[Bourbon Restoration]] limited trading, while the Mediterranean was completely controlled by the [[Royal Navy|British Royal Navy]], and the rebuilding [[French Navy]]. The [[dey]] attempted to remedy the decrease of his revenues by increasing taxes, which was resisted by peasants, increasing instability in the country and leading to widespread [[piracy]] against shipping from Europe and the young [[United States of America]]. This in turn led to the [[First Barbary War]] and the [[Second Barbary War]], which culminated in August 1816 when [[Lord Exmouth]] executed a naval [[Bombardment of Algiers (1816)|bombardment of Algiers]]. ||| Background ||| ||| +0 Invasion of Elba ||| Operation Diadem ||| One operation they could still carry out was the invasion of Elba (Operation Brassard), which had initially been scheduled for 25 May, at the same time as [[Operation Diadem]]. It is not known if the Germans were aware of the Allied plans, but [[Adolf Hitler]] 'attached great importance to holding Elba as long as possible.' On 12 June, the German commander in Italy—[[Field Marshal (Germany)|Field Marshal]] [[Albert Kesselring]]—was informed that 'Elba must be defended to the last man and the last cartridge.' On 14 June, German reinforcements started to arrive on Elba from [[Pianosa]]. The decision to reinforce Elba was not known to the Allies who believed the naval activity between the island and the mainland was in fact an evacuation. ||| Background ||| ||| +0 Invasion of Minorca (1781) ||| Capture of Minorca (1798) ||| Britain [[Capture of Minorca (1798)|captured Minorca again]] in 1798 during the [[French Revolutionary Wars]], but returned it permanently to Spain in 1802 following the [[Treaty of Amiens]]. ||| Aftermath ||| ||| +0 Invasion of Poland ||| Battles of Khalkhin Gol ||| The '''Invasion of Poland''', also known as the '''September Campaign''', or the 1939 Defensive War in [[Second Polish Republic|Poland]] ({{lang-pl|Kampania wrześniowa}} or ''Wojna obronna 1939 roku''), and alternatively the Poland Campaign ({{lang-de|Polenfeldzug}}) or ''[[Fall Weiss (1939)|Fall Weiss]]'' in [[Germany]] (Case White), was a joint invasion of Poland by [[Nazi Germany]], the [[Soviet Union]], and a small [[Slovak invasion of Poland (1939)|Slovak]] contingent, that marked the beginning of [[European theatre of World War II|World War II in Europe]]. The German invasion began on 1 September 1939, one week after the signing of the [[Molotov–Ribbentrop Pact]], while the [[Soviet invasion of Poland|Soviet invasion]] commenced on 17 September following the [[Vyacheslav Molotov|Molotov]]-[[Shigenori Tōgō|Tōgō]] agreement that terminated the Russian and Japanese [[Battles of Khalkhin Gol|hostilities]] in the east on 16 September. The campaign ended on 6 October with Germany and the Soviet Union dividing and annexing the whole of Poland under the terms of the [[German-Soviet Frontier Treaty]]. ||| ||| ||| +0 Invasion of Poland ||| Gleiwitz incident ||| German forces invaded Poland from the north, south, and west the morning after the [[Gleiwitz incident]]. As the Wehrmacht advanced, Polish forces withdrew from their forward bases of operation close to the Polish–German border to more established lines of defence to the east. After the mid-September Polish defeat in the [[Battle of the Bzura]], the Germans gained an undisputed advantage. Polish forces then [[Plan West|withdrew to the southeast]] where they prepared for a long defence of the [[Romanian Bridgehead]] and awaited expected support and relief from [[French Third Republic|France]] and the [[United Kingdom]]. Those two countries had pacts with Poland and had declared war on Germany on 3 September, though in the end their aid to Poland in the September campaign was very limited. ||| ||| ||| +0 Invasion of Umuahia ||| Capture of Owerri ||| Ever since the early stages of the Nigerian Civil War, both sides had been fighting for control of the [[Imo State]]. The Imo State was particularly important due to its capital, [[Owerri]]. Owerri was first invaded by the Nigerians on September 17, 1968, during [[Operation OAU]] and it was kept under Nigerian control until the [[Capture of Owerri]] in early 1969. Oguta had been attacked many times before and it became an important city during the war. It lay directly in the path of Owerri but it was heavily fortified by Biafran soldiers. Many roads connecting Oguta and Owerri to Nigerian-controlled cities were purposely destroyed by Biafran soldiers to delay attacks by the Nigerian army. After the large Nigerian loss at Owerri, Col. [[Benjamin Adekunle]] was replaced by Col. [[Olusegun Obasanjo]]. Since Oguta had been gained and lost two times in the last year, Nigerian Head of State [[Yakubu Gowon]] ordered a final attack on Oguta and Owerri. ||| Background ||| ||| +0 Invasion of the Waikato ||| First Taranaki War ||| Plans for the invasion were drawn up at the close of the [[First Taranaki War]] in 1861 but were opposed by the Colonial Office and New Zealand General Assembly and suspended by incoming Governor Sir [[George Grey]] in December of that year. Grey reactivated the invasion plans in June 1863 amid mounting tension between Kingites and the colonial government and fears of a raid on [[Auckland]] by extremist Kingite Māori. Grey used as the trigger for the invasion Kingite rejection of his ultimatum on 9 July 1863 that all Māori living between [[Auckland]] and the Waikato take an oath of allegiance to [[Queen Victoria]] or be expelled south of the [[Waikato River]]. Troops crossed into Waikato territory three days later and launched their first attack on 17 July at Koheroa, but were unable to advance for another 14 weeks. ||| ||| ||| +0 Iranian Embassy siege ||| Lufthansa Flight 181 ||| Western governments were prompted to form specialist anti-terrorist units following the '[[Munich massacre]]'. During the 1972 Olympic Games, a firefight between a group of hostage-takers and West German police left a police officer and all the hostages dead. The British government, worried that the country was unprepared for a similar crisis in the United Kingdom, ordered the formation of the Counter Revolutionary Warfare (CRW) Wing of the SAS, which became the UK's primary anti-terrorist and anti-hijacking unit. The SAS had taken part in counter-insurgency operations abroad since 1945, and had trained the bodyguards of influential people whose deaths would be contrary to British interests. Thus, it was believed to be better prepared for the role than any unit in the police or elsewhere in the armed forces. The CRW Wing's first operational experience was the storming of [[Lufthansa Flight 181]] in 1977, when a small detachment of soldiers were sent to assist [[GSG 9]]—the elite West German police unit set up after the events of 1972. ||| Background ||| Special Air Service ||| +0 Iraq War ||| Battle of Abu Ghraib ||| The [[Battle of Abu Ghraib]] on 2 April 2005 was an attack on United States forces at Abu Ghraib prison, which consisted of heavy mortar and rocket fire, under which armed insurgents attacked with grenades, small arms, and two vehicle-borne improvised explosive devices (VBIED). The U.S. force's munitions ran so low that orders to fix bayonets were given in preparation for hand-to-hand fighting. An estimated 80–120 armed insurgents launched a massive coordinated assault on the U.S. military facility and internment camp at Abu Ghraib, Iraq. It was considered to be the largest coordinated assault on a U.S. base since the Vietnam War. ||| Post-invasion phase ||| 2005: Elections and transitional government ||| +0 Iraq War in Anbar Province ||| 2006 al-Askari Mosque bombing ||| Despite the return of sovereignty to the Iraqi Interim Government on 28 June, the insurgency was still viewed by many Iraqis as legitimate and the Iraqi government as agents of the United States. In late 2004, a CIA officer said that insurgents in Ramadi were receiving financing via Syria 'to the tune of $1.2 million a month'. The insurgency continued to enjoy broad-based support throughout Iraqi society, showing few of the sectarian divisions which would become pronounced following the [[2006 al-Askari Mosque bombing]]. ||| 2004 ||| Insurgency in 2004 ||| +0 Iraq War in Anbar Province ||| Battle of Ramadi (2004) ||| On 6 April, a force of 300 insurgents [[Battle of Ramadi (2004)|attacked Marine patrols throughout Ramadi]] in an attempt to relieve pressure on Fallujah. Sixteen US Marines and an estimated 250 insurgents were killed in heavy street fighting over four days. ||| 2004 ||| Ramadi and western Anbar in 2004 ||| +0 Iraq War in Anbar Province ||| Operation Phantom Thunder ||| In June the Marine Corps launched [[Operation Alljah]] to secure Fallujah, Karma, [[Zaidon]], and the [[Lake Tharthar|Tharthar]] regions of eastern Anbar. These regions fell under the umbrella of [[Operation Phantom Thunder]], an overall offensive throughout Iraq using US and Iraqi divisions on multiple fronts in an attempt to clear the areas surrounding Baghdad. ||| 2007 ||| Operation Alljah ||| +0 Iraqi insurgency (2003–11) ||| Operation Iron Hammer (Iraq 2003) ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Together Forward ||| Baghdad is still one of the most violent regions of the country, even after the 2007 troop surge more than two thirds of the violence that takes place in Iraq happens in Baghdad even though the Iraqi Government is in firm control of the entire city. Suicide attacks and car bombs are near daily occurrences in Baghdad. The road from Baghdad to the city airport is the most dangerous in the country, if not the world. Iraqi security and police forces had also been significantly built up in the capital and, despite being constantly targeted, had enjoyed some successes such as the pacification of [[Haifa Street]], which however subsequently saw a massive surge of insurgent activity. and after the failed Coalition [[Operation Together Forward]] fell under Sunni insurgent control. The U.S. and Iraqi Forces scored many decisive victories in 2007 during the U.S. troops surge when they launched Operation Law and Order and Operation Phantam Thunder which broke the back of the insurgency and has since the saw a mass reduction in violence by 80 percent since then. ||| Scope and size of the Insurgency ||| ||| +0 Islamic rebellion in Xinjiang (1937) ||| Second Sino-Japanese War ||| Before the war Ma Hushan had exchanged messages with the Nanjing Kuomintang government and had expected them to send aid, as he said in conversations with [[Peter Fleming (writer)|Peter Fleming]]. However, in 1937, at the same time of the Soviet attack, China was invaded by Japan in the [[Second Sino-Japanese War]]. The pro-Soviet provincial forces of Sheng Shicai established their control over the whole of Xinjiang. All rivals were eliminated, and the defeat of the 36th Division caused the control of the Chinese central government in Xinjiang to cease. ||| Aftermath ||| ||| +0 Israeli–Palestinian conflict ||| War of the Camps ||| Fighting among rival Palestinian and Arab movements has played a crucial role in shaping Israel's security policy towards Palestinian militants, as well as in the Palestinian leadership's own policies.{{Citation needed|date=October 2010}} As early as the [[1936–1939 Arab revolt in Palestine|1930s revolts in Palestine]], Arab forces fought each other while also skirmishing with Zionist and British forces, and internal conflicts continue to the present day. During the [[Lebanese Civil War]], [[As-Sa'iqa|Palestinian baathists]] broke from the [[Palestine Liberation Organization]] and allied with the Shia [[Amal Movement]], [[War of the Camps|fighting a bloody civil war]] that killed thousands of Palestinians. ||| Current issues in dispute ||| Palestinian violence against other Palestinians ||| +0 Italian Front (World War I) ||| Kerensky Offensive ||| The Austrians received desperately needed reinforcements after the [[Eleventh Battle of the Isonzo]] from [[German Army (German Empire)|German Army]] soldiers rushed in after the [[Russian Empire|Russian]] [[Kerensky Offensive|offensive]] ordered by [[Alexander Kerensky|Kerensky]] of July 1917 failed. The Germans introduced [[infiltration tactics]] to the Austrian front and helped work on a new offensive. Meanwhile, mutinies and plummeting morale crippled the Italian Army from within. The soldiers lived in poor conditions and engaged in attack after attack that often yielded minimal or no military gain. ||| 1917: Germany arrives on the front ||| ||| +0 Italian Front (World War I) ||| Spring Offensive ||| Advancing deep and fast, the Austrians outran their supply lines, which forced them to stop and regroup. The Italians, pushed back to defensive lines near [[Venice]] on the [[Piave River]], had suffered 600,000 casualties to this point in the war. Because of these losses, the Italian Government called to arms the so-called ''99 Boys'' (''Ragazzi del '99''), that is, all males who were 18 years old. In November 1917, [[British Empire|British]] and French started to bolster the front line. Far more decisive than Allied help in troops was Franco-British (and US) help providing [[strategic material]]s (coal, steel, etc.), which Italy always lacked sorely. In the spring of 1918, Germany pulled out its troops for use in its upcoming [[Spring Offensive]] on the Western Front. ||| 1918: The war ends ||| Battle of the Piave River (June 1918) ||| +0 Italian War of 1521–26 ||| Battle of Pavia ||| Francis himself led a second attack on [[Milan]] in 1525. While he was initially successful in driving back the Spanish and Imperial forces, his disastrous defeat at the [[Battle of Pavia]], where he was captured and many of his chief nobles were killed, led to the end of the war. With Francis imprisoned in [[Spain]], a series of diplomatic maneuvers centered on his release ensued, including a special French mission sent by Francis' mother [[Louise of Savoy]] to the court of [[Suleiman the Magnificent]] that would result in an [[Ottoman Empire|Ottoman]] ultimatum to Charles—an unprecedented alignment between Christian and Muslim monarchs that would cause a scandal in the Christian world and lay the foundation for the [[Franco-Ottoman alliance]]. Suleiman used the opportunity to invade [[Hungary]] in the summer of 1526, defeating Charles' allies at the [[Battle of Mohács]]; but, despite these efforts, Francis would sign the [[Treaty of Madrid (1526)|Treaty of Madrid]], surrendering his claims to Italy, [[Flanders]], and [[Duchy of Burgundy|Burgundy]]. Only a few weeks after his release, however, he repudiated the terms of the treaty, starting the [[War of the League of Cognac]]. Although the Italian Wars would continue for another three decades, they would end with France having failed to regain any substantial territories in Italy. ||| ||| ||| +0 Italian auxiliary ship Olterra ||| Operation Torch ||| By the end of the autumn of 1942, the ''Olterra'' was ready for her mission. The workshop works were completed and all the supplies smuggled from Italy had reached Spain without raising any suspicion. On 6 December 1942, after taking part in [[Operation Torch]], a naval squadron consisting of the battleship {{HMS|Nelson|28|6}}, the battle cruiser {{HMS|Renown|1916|6}}, the aircraft-carriers {{HMS|Furious|47|6}} and {{HMS|Formidable|67|6}} and a number of escort units entered Gibraltar. Visintini planned a three manned torpedoes mission, each of them carrying 2 divers: the leading torpedo, driven by Visintini himself and Petty Officer [[Giovanni Magro|Magro]], the second by 2nd Lieutenant Cella and Sergeant Leone and the third by Midshipman [[Gerolamo Manisco|Manisco]] and Petty Officer Varini. The targets were designated in the following order: for Visintini, ''Nelson'', for Manisco, ''Formidable'' and for Cella, ''Furious''. ||| First incursion ||| ||| +0 Ituri conflict ||| First Congo War ||| The 1994 [[Rwandan genocide]] sent psychological shockwaves throughout the [[Great Lakes region (Africa)|Great Lakes region]]. The murder of 800,000 people on the basis of ethnicity served to make people even more aware of their tribal and linguistic affiliations. The subsequent [[Great Lakes refugee crisis|influx of Hutu refugees]] into the region, which led to the [[First Congo War]], served as further emphasis. However, it was not until the Second Congo War, which began in 1998, that the situation between the Hema and Lendu reached the level of regional conflict. Much of the northern DRC, including [[Orientale Province]], was occupied and under the nominal control of the invading [[Uganda People's Defense Force]] (UPDF) and the Ugandan-backed Kisangani faction of the rebel [[Rally for Congolese Democracy]] (RCD-K) under the leadership of [[Ernest Wamba dia Wamba]]. The widespread conflict was accompanied by an influx of [[assault rifle]]s and other firearms. While land disputes used to be fought with bows and arrows, the easy availability of small arms vastly increased the destructiveness of the fighting. ||| Background ||| ||| +0 Jackson Expedition ||| Battle of Jackson, Mississippi ||| In the [[Vicksburg Campaign]], one of the intermediate battles was the [[Battle of Jackson, Mississippi|Battle of Jackson]] on May 14, 1863, in which Maj. Gen. [[Ulysses S. Grant]]'s [[Army of the Tennessee]] captured the capital city of [[Jackson, Mississippi]], but then evacuated it to move west toward Vicksburg. During the [[Siege of Vicksburg]] Johnston had been gathering troops at Jackson, intending to relieve pressure on Lt. Gen. [[John C. Pemberton]]'s beleaguered garrison. Johnston cautiously advanced his 30,000 soldiers toward the rear of Grant's army surrounding Vicksburg. In response, Grant ordered Sherman to deal with Johnston's threat. ||| Background ||| ||| +0 January 28 Incident ||| Battle of Shanghai ||| In Chinese literature it is known as the ''January 28 Incident'' ({{zh|t=一·二八事變|s=一·二八事变|p=Yī Èrbā Shìbiàn}}), while in Western sources it is often called the ''Shanghai War of 1932'' or the ''Shanghai Incident''. In Japan it is known as the ''First Shanghai Incident'', alluding to the ''Second Shanghai Incident'', which is the Japanese name for the [[Battle of Shanghai]] that occurred during the opening stages of the [[Second Sino-Japanese War]] in 1937. ||| Naming ||| ||| +0 January 28 Incident ||| Mukden Incident ||| After the [[Mukden Incident]], Japan had acquired the vast [[northeast China|northeastern region of China]] and would eventually establish the [[Puppet state|puppet government]] of [[Manchukuo]]. However, the [[Armed Forces of the Empire of Japan|Japanese military]] planned to increase Japanese influence further, especially into [[Shanghai]] where Japan, along with the various western powers, had extraterritorial [[concession (territory)|concessions]]. ||| Background ||| ||| +0 January Events (Lithuania) ||| Operation Barbarossa ||| After Nazi Germany and the Soviet Union signed the [[Molotov–Ribbentrop Pact]] on August 23, 1939, Lithuania was added to the Soviet Union's sphere of influence. The [[German-Soviet Treaty of Friendship, Cooperation and Demarcation]] followed. In June 1940, the Red Army invaded Lithuania, establishing the [[Lithuanian Soviet Socialist Republic]]. Between the years of 1941 and 1944 Nazi Germany [[Operation Barbarossa|invaded the Soviet Union]]. Subsequently, the Lithuanian Soviet Socialist Republic was dissolved ''[[de facto]]''. However, following the [[Baltic Offensive]], Soviet rule was re-established in July 1944. ||| Background ||| ||| +0 Japanese occupation of Attu ||| Battle of Attu ||| The '''Japanese occupation of Attu''' was the result of an invasion of the [[Aleutian Islands]] during [[World War II]]. [[Imperial Japan]]ese [[Imperial Japanese Army|Army]] troops landed on 6 June 1942 at the same time as the [[Japanese occupation of Kiska|invasion]] of [[Kiska]]. The occupation ended with the [[Allies of World War II|Allied]] victory in the [[Battle of Attu]] on 30 May 1943. ||| ||| ||| +0 Jifjafa raid ||| Sinai and Palestine Campaign ||| The '''Jifjafa Raid''' (11–14 April 1916) was a long range pre-emptive operation by a composite formation of the [[British Empire]] against [[Ottoman Turkish Empire]] forces at the Jifjafa well in the [[Sinai Desert]]. During the [[Sinai and Palestine Campaign]] of the [[First World War]]. ||| ||| ||| +0 John McCain presidential campaign, 2008 ||| Iraq War ||| |publisher=New York Times|date=May 20, 2006|first=David M.|last=Herszenhorn|accessdate=August 15, 2006}} McCain's speech mentioned his unwavering support for the [[Iraq War]] and focused on hearing opposing viewpoints, listening to each other, and the relevance of opposition in a democracy. ||| Leading up to the announcement ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Battle of Song Be ||| A VC unit, estimated to be in two-regiment strength, fought the [[Battle of Song Be]], the capital of [[Phước Long Province]], about 100 miles from Saigon, on 11 May. Much farther in the north, later in the month, they ambushed an ARVN force in the north, near Quảng Ngãi, badly hurting ARVN relief troops and leaving two battalions combat ineffective. ||| 1964–65 winter offensive ||| RVN reverses in May ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Laotian Civil War ||| North Vietnam received foreign military aid shipments through its ports and rail system. This materiel (and PAVN manpower) was then shuttled south down the logistical corridor called by the Americans the Ho Chi Minh Trail (the [[Annamite Range|Truong Son]] Strategic Supply Route to the North Vietnamese). At the end of an arduous journey the men and supplies entered South Vietnam's border areas. Beginning in December 1964, however, the U.S. began a covert aerial interdiction [[Laotian Civil War|campaign in Laos]] that would continue until the end of the conflict in 1973 (see [[Operation Barrell Roll]], [[Operation Steel Tiger]], [[Operation Tiger Hound]], and [[Operation Commando Hunt]]). ||| Flow of communist supplies ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Flaming Dart ||| If the Politburo had assumed the U.S. would not use airpower against the North, they were disabused by the outcome of a February 6, 1965 VC attack attacked U.S. facilities at [[Pleiku]], killing 8 and destroying 10 aircraft. President Johnson, on February 7–8, responded with the first specifically retaliatory air raid, [[Operation Flaming Dart]] (or, more specifically, Flaming Dart I), of the broader [[Operation Rolling Thunder]] plan, which had not yet officially started. Alternatively, the North Vietnamese may have accepted the risk of being bombed, correctly predicting that even if ground troops were introduced, the U.S. would not risk the North's greatest fear: large-scale ground operations, beyond the South Vietnamese border, against the Ho Chi Minh trail. ||| 1964–65 winter offensive ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Steel Tiger ||| North Vietnam received foreign military aid shipments through its ports and rail system. This materiel (and PAVN manpower) was then shuttled south down the logistical corridor called by the Americans the Ho Chi Minh Trail (the [[Annamite Range|Truong Son]] Strategic Supply Route to the North Vietnamese). At the end of an arduous journey the men and supplies entered South Vietnam's border areas. Beginning in December 1964, however, the U.S. began a covert aerial interdiction [[Laotian Civil War|campaign in Laos]] that would continue until the end of the conflict in 1973 (see [[Operation Barrell Roll]], [[Operation Steel Tiger]], [[Operation Tiger Hound]], and [[Operation Commando Hunt]]). ||| Flow of communist supplies ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Tiger Hound ||| North Vietnam received foreign military aid shipments through its ports and rail system. This materiel (and PAVN manpower) was then shuttled south down the logistical corridor called by the Americans the Ho Chi Minh Trail (the [[Annamite Range|Truong Son]] Strategic Supply Route to the North Vietnamese). At the end of an arduous journey the men and supplies entered South Vietnam's border areas. Beginning in December 1964, however, the U.S. began a covert aerial interdiction [[Laotian Civil War|campaign in Laos]] that would continue until the end of the conflict in 1973 (see [[Operation Barrell Roll]], [[Operation Steel Tiger]], [[Operation Tiger Hound]], and [[Operation Commando Hunt]]). ||| Flow of communist supplies ||| ||| +0 Kargil War ||| Operation Meghdoot ||| Some writers have speculated that the operation's objective may also have been retaliation for India's [[Operation Meghdoot]] in 1984 that seized much of Siachen Glacier. ||| Background ||| ||| +0 Kaunas Offensive ||| Belostock Offensive ||| As with the parallel defence against the [[Belostock Offensive]] to the south, Model concentrated on a holding / delaying action using the few units available to him. The German Order of Battle for mid-July showed units from a large number of divisions in the area, but many of these were fragments that had escaped from the encirclement of the bulk of Army Group Centre in the previous phases of Operation Bagration; see deployments below. ||| Planning ||| German planning ||| +0 Kholm Pocket ||| Battle of Moscow ||| The '''Kholm Pocket''' ({{lang-de|Kessel von Cholm}}; {{lang-ru|Холмский котёл}}) was the name given for the encirclement of [[Wehrmacht|German troops]] by the [[Red Army]] around [[Kholm, Kholmsky District, Novgorod Oblast|Kholm]] south of [[Saint Petersburg|Leningrad]], during [[World War II]] on the Eastern Front, from 23 January 1942 until 5 May 1942. A much larger pocket was simultaneously [[Demyansk Pocket|surrounded]] in [[Demyansk]], about {{convert|100|km|mi|abbr=on}} to the northeast. These were the results of German retreat following their defeat during the [[Battle of Moscow]]. ||| ||| ||| +0 Kholm Pocket ||| Demyansk Pocket ||| The '''Kholm Pocket''' ({{lang-de|Kessel von Cholm}}; {{lang-ru|Холмский котёл}}) was the name given for the encirclement of [[Wehrmacht|German troops]] by the [[Red Army]] around [[Kholm, Kholmsky District, Novgorod Oblast|Kholm]] south of [[Saint Petersburg|Leningrad]], during [[World War II]] on the Eastern Front, from 23 January 1942 until 5 May 1942. A much larger pocket was simultaneously [[Demyansk Pocket|surrounded]] in [[Demyansk]], about {{convert|100|km|mi|abbr=on}} to the northeast. These were the results of German retreat following their defeat during the [[Battle of Moscow]]. ||| ||| ||| +0 Kiev Offensive (1920) ||| Battle of Kiev (1943) ||| * [[Battle of Kiev (1943)]] ||| See also ||| ||| +0 Korean DMZ Conflict (1966–69) ||| Battle of Khe Sanh ||| The seizure of the ''Pueblo'' was one of a number of crises facing the Johnson Administration in January 1968: the [[Battle of Khe Sanh]] had commenced on 21 January. President Johnson ordered a show of force with a massive deployment of U.S. air and navy assets to Korea under the code-names [[Operation Combat Fox]] (200+ combat aircraft) and [[Operation Formation Star]] (6 aircraft carriers plus support vessels) as well as the partial mobilization of reservists for the first time since the [[Cuban Missile Crisis]]. ||| January 1968 ||| American-South Korean reactions ||| +0 Kosovo War ||| First Balkan War ||| Tensions between the Serbian and Albanian communities in Kosovo simmered throughout the 20th century and occasionally erupted into major violence, particularly during the [[First Balkan War]] (1912–13), [[World War I]] (1914–18), and [[World War II]] (1939–45). After 1945 the [[League of Communists of Yugoslavia|socialist]] government under [[Josip Broz Tito]] systematically repressed all manifestations of [[nationalism]] throughout Yugoslavia, seeking to ensure that no republic or nationality gained dominance over the others. In particular, Tito diluted the power of [[Socialist Republic of Serbia|Serbia]]—the largest and most populous republic—by establishing autonomous governments in the Serbian province of [[Vojvodina]] in the north and in [[Autonomous Province of Kosovo and Metohija (1946–1974)|Kosovo]] in the south. Kosovo's borders did not precisely match the areas of ethnic Albanian settlement in Yugoslavia (significant numbers of Albanians remained in the [[Albanians in the Republic of Macedonia|Republic of Macedonia]], [[Albanians in Montenegro|Montenegro]] and [[Albanians in Serbia|Serbia]]). Kosovo's formal autonomy, established under the 1945 Yugoslav constitution, initially meant relatively little in practice. The [[UDBA|secret police]] (the UDBA) cracked down hard on nationalists. In 1956 a number of [[Albanians]] went on trial in Kosovo on charges of espionage and subversion. The threat of separatism was in fact minimal, as the few underground groups aiming for union with [[Albania]] had little political significance. Their long-term impact became substantial, though, as some—particularly the Revolutionary Movement for Albanian Unity, founded{{when|date=October 2014}} by [[Adem Demaçi]]—would eventually form the political core of the [[Kosovo Liberation Army]] (founded in 1990). Demaci himself was imprisoned in 1964 along with many of his followers. Yugoslavia underwent a period of economic and political crisis in 1969, as a massive government program of economic reform widened the gap between the rich north and poor south of the country. ||| Background ||| Kosovo in Tito's Yugoslavia (1945–1980) ||| +0 Land mine situation in Nagorno-Karabakh ||| Nagorno-Karabakh War ||| The region of [[Nagorno-Karabakh]] is considered to be one of the most heavily [[Landmine|mined]] regions of the former [[Soviet Union]]. Mines were laid from 1991-1994 by both [[Military of Azerbaijan|Azerbaijani]] and [[Nagorno-Karabakh Defense Army|Armenian]] forces during the [[Nagorno-Karabakh War]]. ||| ||| ||| +0 Landing Operation on Hainan Island ||| World War II ||| The '''Landing Operation on [[Hainan]] Island''' ({{zh|c=海南岛登陆战役|p=Hǎinándǎo Dēnglù Zhànyì}}), also known as the '''Hainan Island Campaign''' ({{zh|c=海南岛战役|labels=no}}) or the '''Hainan Campaign''' ({{zh|c=海南战役|labels=no}}) for short, was a series of battles fought between the [[Kuomintang|Kuomintang (Nationalists)]] (National Revolutionary Army, NRA) and the [[People's Liberation Army]] (PLA) during the [[Chinese Civil War]] in the post-[[World War II]] period, and resulted in a PLA victory. ||| ||| ||| +0 Landing at Nadzab ||| Bombing of Wewak ||| Vasey was concerned about the Japanese strength in the Lae area, which his staff estimated at 6,400, in addition to the 7,000 that Herring's I Corps staff estimated were in the Salamaua area. However, a more immediate danger was posed by the Japanese [[Fourth Air Army]] at Wewak. Photographs taken by Allied reconnaissance planes showed 199 Japanese aircraft on the four fields there on 13 August. On 17 August, Whitehead's heavy and medium bombers and fighters, escorted by fighters, [[Bombing of Wewak|bombed Wewak]]. Taking the Japanese by surprise, they destroyed around 100 Japanese aircraft on the ground. ||| Background ||| Planning and preparation ||| +0 Laotian Civil War ||| First Indochina War ||| The French loss at Dien Bien Phu marked the end of the [[First Indochina War]]; the French were driven to negotiate for peace. ||| Chronology of the Laotian Civil War ||| 1953–54: First North Vietnamese invasion and French defeat ||| +0 Liberation of Paris ||| Battle of Remagen ||| On 8 September 1945, the U.S. Post Office issued a three-cent stamp commemorating the liberation of Paris from the Germans. [[First day cover]]s were illustrated with images of the [[Ludendorff Bridge]] illustrating its [[Battle of Remagen|capture]]. Other countries have issued stamps commemorating the bridge's capture, including [[Nicaragua]], [[Guyana]], [[Micronesia]], and [[Republic of the Marshall Islands]]. ||| In popular culture ||| Postcards ||| +0 Liberation of Paris ||| Spanish Civil War ||| On 24 August, delayed by combat and poor roads, [[Free France|Free French]] [[Philippe Leclerc de Hauteclocque|General Leclerc]], commander of the [[2nd Armored Division (France)|2nd French Armoured Division]], disobeyed his direct superior, American field commander [[Major General]] [[Leonard T. Gerow]], and sent a vanguard (the ''colonne Dronne'') to Paris, with the message that the entire division would be there the following day. The 9th Armored Company, composed mainly of veterans of the [[Spanish Civil War]], were equipped with American [[M4 Sherman]] tanks, [[M2 Half Track Car|M2 half-tracks]], and [[General Motors Company]] trucks from the United States. They were commanded by Captain [[Raymond Dronne]]. In 1944, he became the first uniformed Allied officer to enter Paris. ||| Background ||| Entrance of the Free French 2nd Armored Division and US 4th Infantry Division (24–25 August) ||| +0 Libyan Civil War (2011) ||| Battle of Misrata ||| ''[[The Sunday Telegraph]]'' reported on 11 September that almost the entire population of [[Tawergha]], a town of about 10,000 people, had been forced to flee their homes by anti-Gaddafi fighters after their [[Battle of Tawergha|takeover of the settlement]]. The report suggested that Tawergha, which was dominated by [[black people|black]] Libyans, may have been the subject of [[ethnic cleansing]] provoked by a combination of [[racism]] and bitterness on the part of [[Misrata]]n fighters over the town's support for Gaddafi during the [[Battle of Misrata|siege of Misrata]]. ||| Impact ||| Libyan refugees ||| +0 Libyan Civil War (2014–present) ||| Libyan Civil War (2011) ||| [[Khalifa Haftar|Haftar]] and his supporters describe Operation Dignity as a 'correction to the path of [[Libyan Civil War (2011)|the revolution]]' and a '[[War on Terror|war on terrorism]]'. and has declared the establishment of the 'Islamic Emirate of Benghazi'. ||| Domestic reactions ||| ||| +0 Linyi Campaign ||| World War II ||| The '''[[Linyi]] Campaign''' (临沂战役) was a campaign fought in [[Shandong]], and it was a clash between the [[communist]]s and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after [[World War II]]. The battle was one of that of the [[Chinese Civil War]] in the immediate post [[World War II]] era, and resulted in [[Communist Party of China|communist]] victory. ||| ||| ||| +0 Little Belt Affair ||| Battle of Copenhagen (1807) ||| The '''''Little Belt'' Affair''' was a [[navy|naval]] battle on the night of 16 May 1811. It involved the [[United States]] [[frigate]] [[USS President (1800)|USS ''President'']] and the [[United Kingdom of Great Britain and Ireland|British]] [[sixth-rate]] [[HMS Little Belt (1807)|HMS ''Little Belt'']], a [[sloop-of-war]], which had originally been the Danish ship ''Lillebælt'', before being captured by the British in the 1807 [[Battle of Copenhagen (1807)|Battle of Copenhagen]]. The encounter took place off the [[North Carolina]] coast. ||| ||| ||| +0 Liège Revolution ||| Battle of Neerwinden (1793) ||| *1793 : The citizens of Liège vote for the Principality to be annexed by France, but the Austrians defeat the French at the [[Battle of Neerwinden (1793)|Battle of Neerwinden]] and put a prince-bishop back in charge of Liège. ||| Timeline ||| ||| +0 Lower Canada Rebellion ||| Battle of Saint-Charles ||| Papineau escaped to the United States, and other rebels organized in the countryside. Led by [[Wolfred Nelson]], they defeated a British force at [[Battle of Saint-Denis (1837)|Saint-Denis]] on November 23, 1837. The British troops soon beat back the rebels, defeating them at [[Battle of Saint-Charles|Saint-Charles]] on November 25 and at [[Battle of Saint-Eustache|Saint-Eustache]] on December 14. The troops pillaged and ransacked Saint-Eustache. On December 5, the government declared [[martial law]] in Montreal. ||| Organizing for armed conflict ||| ||| +0 Lower Silesian Offensive ||| Battle of Berlin ||| On February 24, faced with heavy German reinforcement, Konev closed the offensive phase of operations, having secured a small bridgehead across the Neisse near [[Forst (Lausitz)|Forst]]. This effectively defined the start lines in that sector for the [[Battle of Berlin]], or Berlin Offensive, two months later. ||| The offensive ||| ||| +0 Lublin–Brest Offensive ||| Warsaw Uprising ||| After reaching its target objectives, the offensive momentum carried on as the Soviet forces advanced on [[Warsaw]] during August (2 August – 30 September 1944); however Soviet forces did not aid the Polish [[Warsaw Uprising]], which is a matter of some controversy. ||| ||| ||| +0 Malê Revolt ||| Haitian Revolution ||| Slaves knew about the [[Haitian Revolution]] (1791−1804) and wore necklaces bearing the image of [[Jean-Jacques Dessalines|President Dessalines]], who had declared Haitian independence. ||| ||| ||| +0 March Days ||| October Revolution ||| Following the [[February Revolution]], a [[Special Transcaucasian Committee]], including Armenian, Azerbaijani and Georgian representatives, was established to administer parts of the [[South Caucasus]] under the control of the [[Russian Provisional Government]]. After the [[October Revolution]], on 11 November 1917, this committee was replaced by the [[Transcaucasian Commissariat]], also known as the ''Sejm'', with headquarters in [[Tiflis]]. The [[Transcaucasian Democratic Federative Republic#Legislature|Sejm]] opposed Bolsheviks and sought separation of the South Caucasus from Bolshevik Russia. To prevent that, on 13 November 1917, a group of Bolsheviks and [[Left Socialist-Revolutionaries]] (SR) proclaimed the Baku Soviet, a governing body which assumed power over the territory of [[Baku Governorate]] under the leadership of Bolshevik [[Stepan Shahumyan]]. Although the Baku Soviet included Azerbaijanis and Armenians who were neither Bolsheviks nor necessarily sympathetic towards the Bolshevik ideas, It is noteworthy that during the March Days of 1918, one of the ARF founders, [[Stepan Zorian]], was present in Baku. ||| Background ||| Political situation ||| +0 Marshalls–Gilberts raids ||| Battle of Midway ||| The raids had little long-term strategic impact. The IJN briefly sent two aircraft carriers to chase TFs 16 and 17, but quickly abandoned the pursuit and continued their support for the ongoing, successful conquests of the [[Philippines]] and [[Netherlands East Indies]]. The raids, however, did help lift the morale of the U.S. Navy and American public, still reeling from the [[Attack on Pearl Harbor|Pearl Harbor attack]] and loss of [[Battle of Wake Island|Wake Island]]. The raids also provided valuable experience in carrier air operations, which hardened the U.S. carrier groups for future combat against Japanese forces. For their part, the Japanese apparently did not realize that their concept of a [[perimeter defense]] using dispersed island garrisons had serious flaws in that the garrisons were too far apart to be sufficiently mutually supporting to prevent penetration by enemy carrier forces. The raids, along with the [[Doolittle Raid]] in April 1942, helped convince the IJN's [[Combined Fleet]] commander, [[Isoroku Yamamoto]], that he needed to draw the American carriers into battle as soon as possible in order to destroy them. Yamamoto's plan to do so resulted in the [[Battle of Midway]]. ||| Aftermath and significance ||| ||| +0 Mediterranean campaign of 1798 ||| Action of 18 August 1798 ||| By the time Nelson departed Alexandria, his first set of dispatches were already in French hands. ''Leander'' had been discovered off the western coast of [[Crete]] [[Action of 18 August 1798|on 18 August 1798]] by the French ship of the line [[French ship Le Généreux|''Généreux'']], one of Villeneuve's escapees. ||| Subsequent operations ||| ||| +0 Mediterranean campaign of 1798 ||| Battle of Alexandria ||| On 2 July, Bonaparte led his men to victory in the brief [[Battle of Alexandria (1798)|Battle of Alexandria]] and secured the city. He placed General [[Jean Baptiste Kléber]] in command with Rear-Admiral [[Pierre Dumanoir le Pelley]] in charge of the harbour. When Brueys learned that British frigates had been seen off the Egyptian coast, he decided that the retreat of these vessels signified that there was no danger of imminent attack by a British force and therefore failed to take precautions against attack. ||| Arrivals at Alexandria ||| Invasion of Egypt ||| +0 Mexican Indignados Movement ||| Occupy movement ||| * [[Occupy movement]] ||| See also ||| ||| +0 Mexican–American War ||| Battle of San Jacinto ||| In 1834, General [[Antonio López de Santa Ana|Antonio López de Santa Anna]] became the centralist dictator of Mexico, abandoning the federal system. He decided to quash the semi-independence of Texas, having succeeded in doing so in Coahuila (in 1824, Mexico had merged Texas and Coahuila into the massive state of [[Coahuila y Tejas]]). Finally, [[Stephen F. Austin]] called Texians to arms; they declared independence from Mexico in 1836, and after Santa Anna defeated the Texians at the [[Alamo]], he was defeated by the [[Texian Army]] commanded by General [[Sam Houston]] and captured at the [[Battle of San Jacinto]] and signed a treaty recognizing Texas' independence. ||| Anglo Colonization in Texas and the Texas Revolution ||| ||| +0 Middle Eastern theatre of World War I ||| Occupation of Constantinople ||| On 13 November 1918, the [[Occupation of Constantinople]] (present day '''[[Istanbul]]'''), the capital of the Ottoman Empire, occurred when French troops arrived, followed by British troops the next day. The occupation had two stages: the ''de facto'' stage from 13 November 1918 to 20 March 1920, and the ''de jure'' stage from de facto to the days following the [[Treaty of Lausanne]]. The occupation of Istanbul, along with the [[occupation of İzmir]], contributed to the [[establishment of the Turkish national movement]] and led to the [[Turkish War of Independence]]. ||| Aftermath ||| Military occupation ||| +0 Military history of Canada during World War II ||| Allied invasion of Sicily ||| Apart from the [[Dieppe Raid]] in August 1942, the frustrated Canadian Army fought no significant engagement in the European theatre of operations until the [[Allied invasion of Sicily|invasion of Sicily]] in the summer of 1943. With the Sicily Campaign, the Canadians had the opportunity to enter combat and later were among the first to enter Rome. ||| Mobilization and deployment ||| ||| +0 Military history of Canada during World War II ||| Attack on Pearl Harbor ||| Canada was the only country of [[the Americas]] to be [[military service|actively]] involved in the war prior to the [[Attack on Pearl Harbor]]. ||| Mobilization and deployment ||| ||| +0 Military history of Canada during World War II ||| Battle of Britain ||| Squadrons of the RCAF and individual Canadian pilots flying with the British RAF fought with distinction in [[Supermarine Spitfire|Spitfire]] and [[Hawker Hurricane|Hurricane]] fighters during the [[Battle of Britain]]. By 1 January 1943, there were enough RCAF bombers and crews in Britain to form [[No. 6 Group RCAF|No. 6 Group]], one of eight bomber groups within [[RAF Bomber Command]]. ||| Early campaigns ||| ||| +0 Military history of Canada during World War II ||| Operation Overlord ||| The second and perhaps most daunting task Canada was given was to control the English channel during [[Operation Overlord]] (The Normandy Invasion). 'On the 6th of June, 50 RCN escorts were redeployed from the North Atlantic and Canadian Waters for invasion duties'. ||| Naval warfare ||| Battle of the Atlantic ||| +0 Mirgorod direction offensive ||| Battle of Kursk ||| The '''Mirgorod direction offensive''' (3 August 1943 – 23 August 1943) was an operation conducted as part of [[Operation Polkovodets Rumyantsev]] between the [[Red Army]] and [[Wehrmacht]] forces. It was one of the operations that followed the [[Battle of Kursk]]. ||| ||| ||| +0 Moro Conflict ||| 2002 Zamboanga City bombings ||| These rebel groups, especially the [[Abu Sayyaf]] conducted several terror attacks, namely the [[2002 Zamboanga City bombings|bombings at Zamboanga]] in October 2002; the [[2004 SuperFerry 14 bombing|bombing of SuperFerry 14]] on February 2004; the [[2006 Central Mindanao bombings|simultaneous bombings in Central Mindanao]] on October 2006; the [[2007 Basilan beheading incident|beheadings of several Philippine Marines]] on July 2007; the [[Batasang Pambansa bombing]] on November 2007; and the 2009 [[July 2009 Mindanao bombings|bombings in Mindanao]]. ||| History ||| Estrada and Arroyo (1998–2010) ||| +0 Moro Conflict ||| 2006 Central Mindanao bombings ||| These rebel groups, especially the [[Abu Sayyaf]] conducted several terror attacks, namely the [[2002 Zamboanga City bombings|bombings at Zamboanga]] in October 2002; the [[2004 SuperFerry 14 bombing|bombing of SuperFerry 14]] on February 2004; the [[2006 Central Mindanao bombings|simultaneous bombings in Central Mindanao]] on October 2006; the [[2007 Basilan beheading incident|beheadings of several Philippine Marines]] on July 2007; the [[Batasang Pambansa bombing]] on November 2007; and the 2009 [[July 2009 Mindanao bombings|bombings in Mindanao]]. ||| History ||| Estrada and Arroyo (1998–2010) ||| +0 Mozambican War of Independence ||| Vietnam War ||| Although helicopters were not used in Mozambique to the same extent as they were in [[Vietnam War|Vietnam]], the [[Aérospatiale Alouette III|Alouette III]] was the most widely used, although the [[Aérospatiale Puma|Puma]] was also used with great success. Other aircraft were employed: for [[air support]] the [[T-6 Texan|T6]] and the [[Aeritalia G.91|Fiat G.91]] were used; for [[reconnaissance]], the [[Dornier Do 27]]. In the transport role, the [[Portuguese Air Force]] used mainly the [[Nord Noratlas]] and the [[C-47 Skytrain|C-47]]. The [[Portuguese Navy]] also made extensive use of patrol boats, [[landing craft]]s, and [[Inflatable boat|inflatable Zodiacs]]. ||| Conflict ||| Insurgency under Mondlane (1964–69) ||| +0 Muslim conquest of the Levant ||| Battle of Fahl ||| These were the reasons why the Muslim army moved against Fahl. Khalid commanded the advance guard and reached Fahl first and found that the plains were flooded by the Byzantines who had blocked the [[River Jordan]]. The Byzantine army was eventually defeated at the [[Battle of Fahl]] on 23 January 635. ||| Conquest Under Caliph Umar ||| Conquest of Central Levant ||| +0 NATO bombing of Yugoslavia ||| Operation Southern Watch ||| Operation Allied Force incorporated the first large-scale use of satellites as a direct method of weapon guidance. The collective bombing was the first combat use of the Joint Direct Attack Munition [[JDAM]] kit, which uses an inertial-guidance and [[GPS]]-guided tail fin to increase the accuracy of conventional gravity munitions up to 95%. The JDAM kits were outfitted on the [[B-2]]s. The [[AGM-154 Joint Standoff Weapon]] (JSOW) had been previously used in [[Operation Southern Watch]] earlier in 1999. ||| NATO forces ||| Space ||| +0 Nagorno-Karabakh War ||| Yugoslav Wars ||| In the summer of 1992, the CSCE (later to become the [[Organization for Security and Co-operation in Europe]]), created the [[OSCE Minsk Group|Minsk Group]] in Helsinki which comprised eleven nations and was co-chaired by France, Russia, and the United States with the purpose of mediating a peace deal with Armenia and Azerbaijan. However, in their annual summit in 1992, the organization failed to address and solve the many new problems that had arisen since the Soviet Union collapsed, much less the Karabakh conflict. The [[Yugoslav Wars|war in Yugoslavia]], Moldova's war with the breakaway republic of [[Transnistria]], the secessionist movement in [[Chechnya]], and Georgia's renewed disputes with Russia, [[Abkhazia]], and [[Ossetia]] were all top agenda issues that involved various ethnic groups fighting each other. ||| Escalation ||| Subsequent attempts to mediate peace ||| +0 Namibian War of Independence ||| Angolan Civil War ||| The war ended with the [[New York Accords]] signed on 22 December 1988, which also ended direct involvement of foreign troops in the [[Angolan Civil War]]. Independence came to [[Namibia]] on 21 March 1990 following elections which saw SWAPO win 55 of 72 seats in the [[National Assembly of Namibia]], enabling them to form a national government. ||| ||| ||| +0 Naroda Patiya massacre ||| Godhra train burning ||| The '''Naroda Patiya massacre'''{{efn|Since most of the killings were done in Naroda Patiya, the incident was termed Naroda Patiya massacre instead of Naroda massacre.}} took place on 28 February 2002 at [[Naroda]],{{efn|The town Naroda consists of Naroda Patiya and Naroda Gaon, located 1 km away from each other.}} in [[Ahmedabad]], India, during the [[2002 Gujarat riots]]. 97 [[Muslim]]s were killed by a mob of approximately 5,000 people, organized by the [[Bajrang Dal]], a militant wing of the [[Vishva Hindu Parishad]], and supported by the [[Bharatiya Janata Party]] which was in power in the [[Government of Gujarat|Gujarat State Government]].{{efn|{{harvnb|Human Rights Watch|2002 a}}, {{harvnb|Tehelka|2007 b}}, {{harvnb|Tehelka|2007 c}}, {{harvnb|Indian Express|2007 a}}, {{harvnb|The Hindu|2012 a}}, {{harvnb|Hindustan Times|2012 e}}}} The massacre at Naroda occurred during the [[bandh]] (strike protest) called by [[Vishwa Hindu Parishad]]; a day after the [[Godhra train burning]]. During the post-Godhra rioting,{{efn|[[Godhra train burning]] incident was considered one of the root causes for the riots that began from 28 February. Thus the following incidents were collectively termed to be a part of 'post-Godhra riots'}} which lasted over 10 hours, during which the mob looted, stabbed, sexually assaulted, gang-raped and burnt people individually and in groups. After the conflict, a curfew was imposed in the state and army troops were called in to contain further violence. ||| ||| ||| +0 National Protection War ||| Central Plains War ||| China's [[Warlord Era]] would last for years until [[Chiang Kai-shek]] unified China through the [[Northern Expedition (1926–1927)|Northern Expedition]], the [[Central Plains War]] and many other civil wars before the onset of the [[Second Sino-Japanese War]]. ||| Influence ||| ||| +0 National Protection War ||| Second Sino-Japanese War ||| China's [[Warlord Era]] would last for years until [[Chiang Kai-shek]] unified China through the [[Northern Expedition (1926–1927)|Northern Expedition]], the [[Central Plains War]] and many other civil wars before the onset of the [[Second Sino-Japanese War]]. ||| Influence ||| ||| +0 Naval Battle of Guadalcanal ||| Invasion of Tulagi (May 1942) ||| The six-month [[Guadalcanal campaign]] began on 7 August 1942, when Allied (primarily U.S.) forces landed on Guadalcanal, Tulagi, and the [[Florida Islands]] in the [[Solomon Islands]], a pre-war colonial possession of Great Britain. The landings were meant to prevent the Japanese using the islands as bases from which to threaten the [[materiel|supply]] routes between the U.S. and Australia, and to secure them as starting points for a campaign to neutralize the major [[Empire of Japan|Imperial Japanese]] military base at [[Rabaul]] and support of the Allied [[New Guinea campaign]]. The Japanese had [[Invasion of Tulagi (May 1942)|occupied Tulagi]] in May 1942 and began constructing an airfield on Guadalcanal in June 1942. ||| Background ||| ||| +0 Naval operations in the American Revolutionary War ||| Action of 9 August 1780 ||| The operations of 1780 continued without decisive battles. The British government, not feeling strong enough to blockade Brest and the Spanish ports, was compelled to regulate its movements by those of its opponents. In the Channel, it was saved from disaster by the ineptitude of the French and Spanish fleets. The only real success achieved by this numerically imposing French-Spanish force was the [[Action of 9 August 1780|capture on August 9]] of a large British convoy of ships bound for the East and West Indies carrying troops. ||| Spain enters the war, 1779–1780 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Dogger Bank (1781) ||| The rambling operations of the naval war until the close of 1780 began to assume a degree of coherence in 1781. The allies directed forces to such objectives as the capture of West Indian islands and of [[Minorca]] and Gibraltar; Britain resorted to defensive movements. The [[Dutch Republic]] was formally brought into the war, and the British government was compelled to withdraw part of its fleet from other purposes to protect the [[North Sea]] trade. A [[Battle of Dogger Bank (1781)|desperate battle]] was fought on the Dogger Bank on August 5 between Admiral Parker and Dutch Admiral [[Johan Zoutman]], both being engaged in protecting trade; but the poor state of the Dutch military meant it did not affect the general course of the war. The allies again failed to make a vigorous attack on the British forces in the Channel. They could not prevent Admiral [[George Darby]] from relieving Gibraltar and Minorca in April. Minorca was [[Invasion of Minorca, 1781|closely invested]] later and was compelled to surrender on February 5, 1782. ||| Final New World operations, 1781–1782 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of the Chesapeake ||| When Hood arrived off [[Chesapeake Bay]] in late August, de Grasse had not yet arrived, since he had deliberately taken a longer route to avoid notice. Hood proceeded on to New York, bringing news of de Grasse's approach (although ignorant of his strength) to Arbuthnot's successor, Admiral [[Thomas Graves, 1st Baron Graves|Thomas Graves]]. Word that [[Jacques-Melchior Saint-Laurent, Comte de Barras|de Barras]] had sailed from Newport with the entire French fleet led Graves to lead the combined fleet south to the Chesapeake, where de Grasse had in the meantime arrived. In the pivotal [[Battle of the Chesapeake]] on September 5, de Grasse got the better of the British, who ended up retreating back to New York while de Barras slipped into the Chesapeake carrying the French siege train. The naval blockade completed the encirclement of the British army of [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]] at [[Yorktown, Virginia]], where he was [[Siege of Yorktown|compelled to surrender]] on October 19. Cornwallis' surrender spelled the end of significant military operations in North America, and led to the start of peace negotiations. While they went on, the war continued in other theaters. ||| Final New World operations, 1781–1782 ||| ||| +0 Nazi crimes against the Polish nation ||| Invasion of Poland ||| The first mass deportation of Polish nationals by Nazi Germany occurred less than a year before the [[Invasion of Poland|outbreak of war]]. It was the eviction of Jews holding Polish citizenship, during the [[Kristallnacht]] attack of 9–10 November 1938 carried out by the ''[[Sturmabteilung|SA]]'' paramilitary forces. Approximately 30,000 Polish Jews were rounded up and sent via rail to prewar concentration camps throughout Germany, never to return. ||| 1939 September Campaign ||| ||| +0 New Georgia Campaign ||| Battle off Horaniu ||| The Japanese high command in Tokyo had already decided that no more troops would be wasted in the central Solomons. Rather than reinforce and defend Vella Lavella, it was to be used merely as a way station for the evacuation of the troops on Kolombangara that had been bypassed by the Allies with this new landing. Horaniu on the northeast coast was selected as a barge staging point and on the night of 17–18 August two Army companies and a Navy platoon were landed there. The covering force of four destroyers was met in The Slot by an American force, also made up of four destroyers under Captain Thomas J. Ryan, that had been sent to disrupt the operation. In the ensuing [[Battle off Horaniu]], no ships of either side were lost and the Japanese succeeded in establishing a barge base. ||| Outlying Islands ||| Vella Lavella ||| +0 New Georgia counterattack ||| Drive on Munda Point ||| The '''New Georgia counterattack''' was a [[counterattack]] on 17–18 July 1943 by mainly [[Imperial Japanese Army]] troops against [[United States Army]] forces during the [[Battle of New Georgia|New Georgia Campaign]] in the [[Solomon Islands]]. The U.S. and its allies were [[Drive on Munda Point|attempting]] to capture an airfield constructed by the Japanese at Munda Point on New Georgia. ||| ||| ||| +0 New Guinea campaign ||| Kokoda Track campaign ||| Buna was easily taken as the Allies had no military presence there (MacArthur wisely chose not to attempt an occupation by paratroopers since any such force would have been easily wiped out by the Japanese). The Japanese [[Invasion of Buna-Gona|occupied the village]] with an initial force of 1,500 on 21 July and by 22 August had 11,430 men under arms at Buna. Then began the grueling [[Kokoda Track campaign]], a brutal experience for both the Japanese and Australian troops involved. On 17 September, the Japanese had reached the village of Ioribaiwa, just 20 miles from the Allied airdrome at Port Moresby. The Australians held firm and began their counterdrive on 26 September. '...the Japanese retreat down the Kokoda Trail had turned into a rout. Thousands perished from starvation and disease; the commanding general, Horii, was drowned.' ||| 1942 ||| [[Kokoda Track campaign]] ||| +0 New Zealand in the Vietnam War ||| Fall of Saigon ||| From 1965 the [[Royal New Zealand Air Force]] contribution was in the form of transportation with [[No. 40 Squadron RNZAF]] providing troop transport for New Zealand, Australian and some American troops, and [[No. 41 Squadron RNZAF]] providing resupply missions from Singapore. In 1967 two RNZAF pilots were seconded to the [[Royal Australian Air Force]]'s [[No. 9 Squadron RAAF|No. 9 Squadron]], which was flying [[UH-1 Iroquois]] helicopters as troop transports. Two more RNZAF pilots joined No. 9 Squadron in 1968. By 1971 16 New Zealand pilots had served in 9 Squadron. Between 1965 and 1971 approximately 20 RNZAF personnel served as attachments to various units of the [[United States Air Force]], as [[Forward air control]]lers. The last RNZAF flight out from Vietnam was the evacuation of the New Zealand Ambassador in April 1975, just before the [[Fall of Saigon]]. ||| Military assistance ||| Royal New Zealand Air Force (RNZAF) ||| +0 Northeast Coast Campaign (1745) ||| Siege of Louisbourg (1745) ||| The '''Northeast Coast Campaign (1745)''' occurred during [[King George's War]] from 19 July until 5 September 1745. Three weeks after the British [[Siege of Louisbourg (1745)]], the [[Wabanaki Confederacy]] of Acadia retaliated by attacking [[New England]] settlements along the coast of present-day Maine below the Kennebec River, the former border of Acadia. They attacked [[England|English]] settlements on the coast of present-day [[Maine]] between [[Berwick, Maine|Berwick]] and [[Thomaston, Maine|St. Georges (Thomaston, Maine)]], within two months there were 11 raids - every town on the frontier had been attacked. Casco (also known as Falmouth and Portland) was the principal settlement. ||| ||| ||| +0 Northeast Coast Campaign (1747) ||| Siege of Louisbourg (1745) ||| In response to the New England [[Siege of Louisbourg (1745)|expedition against Louisbourg]] which finished in June 1745, the Wabanaki retaliated by attacking the New England border. Massachusetts established forts along the border with Acadia: [[Fort George (Brunswick, Maine)|Fort George]] at [[Brunswick, Maine|Brunswick]] (1715), [[Fort William Henry (Pemaquid Beach, Maine)#Fort Frederick|Fort Frederick]] was established at Pemaquid (Bristol, Maine). ||| Background ||| ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Attack on German Flatts (1778) ||| Brant joined forces with some of [[Butler's Rangers]] to [[Attack on German Flatts (1778)|attack German Flatts]] in early September. New York authorities responded to Brant's activities by [[Raid on Unadilla and Onaquaga|destroying]] the Indian towns of [[Unadilla (village), New York|Unadilla]] and [[Onaquaga]] in October; those towns had been used by Brant and the Butlers as bases of operation. Brant, the Butlers and some Senecas joined forces to take revenge by participating in [[Cherry Valley massacre|a major attack]] on [[Cherry Valley (village), New York|Cherry Valley]] in early November in which as many as 30 non-combatants were slaughtered in the aftermath. British forces from the [[Montreal]] area led by Major [[Christopher Carleton]] [[Carleton's Raid (1778)|raided]] communities in the upper Hudson River valley in October. ||| Frontier war ||| Raiding in the valleys, 1778 ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Connecticut Farms ||| In early 1780, a British attack against an American outpost in [[Westchester County, New York]] resulted in about 50 American casualties and 75 captured in the [[Battle of Young's House]]. The last notable action in the New York area was an attempt by the British to regain control of northern New Jersey in June 1780 by attacking the main Continental Army camp at [[Morristown, New Jersey|Morristown]]. The first British-Hessian thrust by [[Wilhelm von Knyphausen]] was blocked at the [[Battle of Connecticut Farms]] on June 7. A second offensive by Knyphausen on June 23 was halted in the [[Battle of Springfield (1780)|Battle of Springfield]] after stiff fighting when [[Nathanael Greene]] appeared on the scene with 2,000 troops. This put an end to British ambitions in New Jersey. ||| Skirmishes around New York ||| ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Newtown ||| The brutal frontier warfare led to calls in the Continental Congress for the army to take an active role. In 1779, Washington sent General [[John Sullivan (general)|John Sullivan]] on [[Sullivan Expedition|a punitive expedition]] to suppress Indian attacks. Sullivan and his troops systematically destroyed Iroquois villages, successfully driving the Iroquois north into Quebec. In the only major action in that expedition, Sullivan's forces defeated those of the Butlers and Brant in the [[Battle of Newtown]]. Brant led raids that specifically targeted the villages of the Oneida and the [[Tuscarora people|Tuscarora]], who also supported the American cause. This destruction of Indian villages on both sides effectively depopulated much of the Iroquois territory as the survivors of the raids became refugees, but Sullivan's expedition failed in its objective of stopping or reducing the frequency of frontier attacks. In April, a few months prior to the Sullivan Expedition, American [[Goose_Van_Schaick|Colonel Van Schaick]] led an expedition of over 500 soldiers against the [[Onondaga Indians|Onondagas]], destroying several villages. ||| Frontier war ||| Sullivan expedition, 1779 ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battles of Saratoga ||| After General [[John Burgoyne]] surrendered his army after the [[Battles of Saratoga]] in October 1777 France entered the war, recognizing the [[United States]] and entering into a military alliance. France dispatched a fleet and army across the Atlantic to aid the Americans fighting for independence, in addition to pursuing military operations in the [[Caribbean]] and the [[East Indies]]. France also applied pressure on [[Spain]] to enter the war; although this did not happen until 1779, Spanish actions in other theaters further stretched British military resources. ||| British strategy after Saratoga ||| ||| +0 Northwest Indian War ||| Battle of Newtown ||| He instructed General [[John Sullivan (general)|John Sullivan]] to [[Sullivan Expedition|attack and destroy]] Six Nations villages in upper New York. Leading about 5,000 troops, Sullivan defeated the Six Nations forces in the [[Battle of Newtown]], then destroyed over 40 Six Nations villages and all their stored crops in the fall of 1779. Because of the social disruption and crop losses, some Six Nations men, women, and children died of starvation that winter. Many Six Nations families retreated to [[Fort Niagara]] and other parts of [[Canada]], where they spent a cold and hungry winter. Their power in the present-day United States territory was lessened, and their claim to the Northwest Territories was challenged. ||| Background ||| American Revolution ||| +0 Northwest Indian War ||| Gnadenhutten massacre ||| As the war with the British came to a close, the young United States looked to secure their borders, exact revenge for Native American raids, and expand westward. In March 1782, a band of Pennsylvania militia entered [[Ohio Country]] and [[Gnadenhutten massacre|massacred]] a Christian [[Lenape]] village of [[Gnadenhutten, Ohio|Gnadenhütten]]. Two months later, Colonel [[William Crawford (soldier)|William Crawford]] led 500 volunteers deep into Ohio Country and [[Crawford expedition|attacked Native American villages]] near the [[Sandusky River]]. Crawford's force was defeated with a loss of about 70 Americans killed, and several prisoners were executed in retaliation for the Gnadenhutten massacre.{{sfnp|Dowd|1992|p=87-88}} In August of 1782, the last battle of the American Revolutionary War, the [[Battle of Blue Licks]], was fought in [[Kentucky]]. On a hill next to the Licking River in what is now [[Robertson County, Kentucky]], a force of about 50 British rangers and 300 Natives ambushed and routed 182 pursuing Kentucky militiamen. ||| Background ||| American Revolution ||| +0 November 2015 Sinjar offensive ||| Northern Iraq offensive (August 2014) ||| In August 2014, the Islamic State of Iraq and the Levant launched an [[Northern Iraq offensive (August 2014)|offensive in Northern Iraq]] and pushed into Kurdish held areas of the [[Nineveh Governorate|Nineveh Province]], capturing the city of [[Sinjar]], among others. ||| Background ||| ||| +0 Occupy Berlin ||| 15 October 2011 global protests ||| '''Occupy Berlin''' was a collaboration in [[Berlin]], [[Germany]] that has included peaceful protests and demonstrations against unregulated financial markets and other alleged social injustices. It began as a part of the [[15 October 2011 global protests]]. ||| ||| ||| +0 Occupy Canada ||| 15 October 2011 global protests ||| For the Occupy movement's first [[15 October 2011 global protests|Global Day of Action]] on October 15, 2011, rallies took place in 951 cities in 82 different countries around the world. ||| Canadian participation in the Global Day of Action ||| ||| +0 Occupy Cork ||| Occupy Dame Street ||| On 15 October 2011, simultaneous protests took place in Cork and [[Galway]] regarded by local media as having mimicked [[Occupy Wall Street]] (New York) and [[Occupy Dame Street]] (Dublin). ||| Timeline ||| ||| +0 Occupy Cork ||| Occupy Wall Street ||| On 15 October 2011, simultaneous protests took place in Cork and [[Galway]] regarded by local media as having mimicked [[Occupy Wall Street]] (New York) and [[Occupy Dame Street]] (Dublin). ||| Timeline ||| ||| +0 Occupy Glasgow ||| Occupy movement ||| '''Occupy Glasgow''' was a protest in Glasgow, Scotland, and an offshoot of the [[Occupy movement]]. The protest started on 15 October 2011 opposite the [[Glasgow City Chambers|City Chambers]] in [[George Square]], ||| ||| ||| +0 Occupy Houston ||| Occupy Wall Street ||| '''Occupy Houston''' is a Houston, Texas-based activist group best known for alleged plots against it by the Federal Bureau of Investigation, investigated and called out on in court by Occupy protester Ryan Shapiro, and for being set up by the Austin Police Department. Occupy Houston was a collaboration that has included [[Occupation (protest)|occupation protest]]s that stand in solidarity with [[Occupy Wall Street]]. {{cite web ||| ||| ||| +0 Occupy London ||| Occupy Wall Street ||| The protests began in solidarity with the [[Occupy Wall Street]] protests in New York, United States, and with support from tax avoidance protest group [[UK Uncut]] and the London-based contingent of the [[2011–2012 Spanish protests|Spanish 15M movement]]. In November a third site was opened in a disused office complex owned by [[UBS]]. Named by protesters as the ''[[Bank of Ideas]]'', the site was located in [[London Borough of Hackney|Hackney]] until occupiers were evicted in late January 2012. {{Cite news ||| ||| ||| +0 Occupy movement ||| Arab Spring ||| The Occupy movement is partly inspired by the [[Arab Spring]], ||| ||| ||| +0 Occupy movement ||| Occupy Glasgow ||| Protesters from [[Occupy Glasgow]] set up in the civic [[George Square]] on 15 October but after the council obtained a court order moved to [[Kelvingrove Park]], where the council agreed to provide running water, toilets and safety fences. ||| Protests ||| United Kingdom ||| Scotland +0 October 22 Scud missile attack ||| War of Attrition ||| As a result of the knowledge about the Egyptian Scuds able to hit deep inside Israel, Israel avoided attacking strategic targets deep inside Egypt throughout the entire war. This fear was raised by military intelligence chief [[Eli Zeira]] at a situation assessment with the Chief of Staff on October 9. This avoidance is more noticeable due to the significant strikes which were conducted by Israel during the [[War of Attrition]]. These strikes caused significant damage to the Egyptian military and forced it to retreat to defend the Egyptian front, therefore weakening its offensive capabilities. On the Syrian front, however, Israel struck deep inside Syria, damaging the Syrian war effort and even disrupting normal life in the country, attacking important power plants, petrol supplies, bridges and main roads. ||| Aftermath ||| ||| +0 October Revolution ||| February Revolution ||| It followed and capitalized on the [[February Revolution]] of the same year, which overthrew the Tsarist autocracy and established a [[Russian Provisional Government|provisional government]] composed predominantly of former nobles and aristocrats.{{citation needed|date=June 2015}} During this time, urban workers began to organize into councils (Russian: ''Soviet'') wherein revolutionaries criticized the provisional government and its actions. The October Revolution in Petrograd overthrew the provisional government and gave the power to the local [[Soviet (council)|soviet]]s. The [[Bolshevik]] party was heavily supported by the soviets. After the [[All-Russian Congress of Soviets|Congress of Soviets]], now the governing body, had its second session, it elected members of the Bolsheviks and other leftist groups such as the [[Left Socialist Revolutionaries]] to key positions within the new state of affairs. This immediately initiated the establishment of the [[Russian Socialist Federative Soviet Republic]], the world's first self-proclaimed [[socialist state]]. ||| ||| ||| +0 Operation Anklet ||| Operation Archery ||| At the same time, another raid was taking place in [[Vågsøy]]. This raid was [[Operation Archery]], on 27 December 1941, and Operation Anklet was seen as a diversionary raid for this bigger raid, intended to draw away the German naval and air forces. ||| ||| ||| +0 Operation Archery ||| Eastern Front (World War II) ||| Central to the operation was the destruction of fish-oil production and stores which the Germans used in the manufacture of high explosives. Another intention was to cause the Germans to maintain and increase forces in Norway which otherwise might be employed on the [[Eastern Front (World War II)|Eastern Front]]. ||| Objectives ||| ||| +0 Operation Basalt ||| Operation Roast ||| * Lieut. [[Anders Lassen]] (later Major, [[Victoria Cross|VC]], [[Military Cross|MC]] — see also [[Operation Roast]]) ||| ||| ||| +0 Operation Benedict ||| Battle of Britain ||| Until 10 October, the 151 Wing flew missions almost daily, either air patrols over the port of [[Murmansk]], [[Kola, Russia|Kola]] and [[Russian Shipyard Number 10]] at [[Polyarny District]], or escorting Soviet bombers that attacked German or Finnish airfields. There was aerial combat on five days during the operation, in which the fleet shot down twelve Bf 109s, one Hs 126, and two [[Junkers Ju 88]]s. Most of the shots targeted the experienced pilots of 81 Sqn, who had previously fought in the [[Battle of Britain]]. The most successful pilot C. Haw with three kills came from this unit. ||| Mission ||| ||| +0 Operation Blue Star ||| Indo-Pakistani War of 1971 ||| The Sikh community's anger and suffering was further increased by comments from leading newspaper editors, such as [[Ramnath Goenka]], terming the operation as 'A greater victory than the win over [[Indo-Pakistani War of 1971|Bangladesh]], this is the greatest victory of [[Indira Gandhi|Mrs. Gandhi]]'. {{Cite journal ||| Criticisms ||| Timing ||| +0 Operation Brevity ||| Operation Compass ||| Egypt had been [[Italian invasion of Egypt|invaded]] by Libyan-based [[Kingdom of Italy (1861–1946)|Italian]] forces in September 1940, but by February of the following year a [[Operation Compass|British counter-offensive]] had advanced well into Libya, destroying the [[Tenth Army (Italy)|Italian Tenth Army]] in the process. British attention then shifted to Greece, which was under the threat of Axis invasion. While Allied divisions were being diverted from North Africa, the Italians reinforced their positions and were supported by the arrival of the German ''[[Afrika Korps]]'' under General [[Erwin Rommel]]. Rapidly taking the offensive against his distracted and over-stretched opponent, by April 1941 Rommel had driven the British and Commonwealth forces in [[Cyrenaica]] back across the Egyptian border. Although the battlefront now lay in the border area, the port city of [[Tobruk]]—{{convert|100|mi|km}} inside Libya—had resisted the Axis advance, and its substantial Australian and British garrison constituted a significant threat to Rommel's lengthy supply chain. He therefore committed his main strength to besieging the city, leaving the front line only thinly held. ||| ||| ||| +0 Operation Camargue ||| Chinese Civil War ||| Following the Communist victory in the [[Chinese Civil War]] in 1949, the Viet Minh established close ties with China. In December 1950, the United States, concerned about growing Chinese Communist influence, started providing military aid to the French, with a first payment of US$15 million. ||| Background ||| Chinese and American backing ||| +0 Operation Charnwood ||| Operation Cobra ||| Analysis by [[Operations research#Second World War|Operational Research Section Number 2]] (ORS2) concluded that the bombing of the first aiming point north-west of Caen was accurate, finding that the centre of the 90 percent zone (the area where 90 percent of the bombs fell) was {{convert|200|–|300|yd|m}} east of the aiming point, with some spillage to the south and west. Examination of the area after its capture, indicated some destruction of German equipment, including the wreckage of ten of the forty trucks believed to be in the area at the time of the raid. The 48 hours that elapsed between the bombing and the Allied occupation of the area, allowed the Germans time to recover from any shock and disorientation and to salvage some damaged equipment. Examination of the second aiming point, 'Northern Caen', failed to reveal a 90 percent zone but it was noted that the obstructive effect of bombing a suburb was significant and had caused substantial delays to vehicles of both sides, by cratering and blocking roads. ORS2 concluded that the success of Charnwood owed little to the bombing and made recommendations including changing to instantly fused bombs, dropping larger numbers of smaller anti-personnel bombs and rapidly following-up a bombardment with ground forces to take advantage of its main effect, which was the temporary suppression of German will to resist. In [[Operation Goodwood]], [[Operation Bluecoat]], [[Operation Cobra]], [[Operation Totalize]] and [[Operation Tractable]] the 21st Army Group exploited better the effect of preparatory attacks by strategic bombers by following-up the attacks immediately. ||| Aftermath ||| Bombing ||| +0 Operation Charnwood ||| Operation Totalize ||| Analysis by [[Operations research#Second World War|Operational Research Section Number 2]] (ORS2) concluded that the bombing of the first aiming point north-west of Caen was accurate, finding that the centre of the 90 percent zone (the area where 90 percent of the bombs fell) was {{convert|200|–|300|yd|m}} east of the aiming point, with some spillage to the south and west. Examination of the area after its capture, indicated some destruction of German equipment, including the wreckage of ten of the forty trucks believed to be in the area at the time of the raid. The 48 hours that elapsed between the bombing and the Allied occupation of the area, allowed the Germans time to recover from any shock and disorientation and to salvage some damaged equipment. Examination of the second aiming point, 'Northern Caen', failed to reveal a 90 percent zone but it was noted that the obstructive effect of bombing a suburb was significant and had caused substantial delays to vehicles of both sides, by cratering and blocking roads. ORS2 concluded that the success of Charnwood owed little to the bombing and made recommendations including changing to instantly fused bombs, dropping larger numbers of smaller anti-personnel bombs and rapidly following-up a bombardment with ground forces to take advantage of its main effect, which was the temporary suppression of German will to resist. In [[Operation Goodwood]], [[Operation Bluecoat]], [[Operation Cobra]], [[Operation Totalize]] and [[Operation Tractable]] the 21st Army Group exploited better the effect of preparatory attacks by strategic bombers by following-up the attacks immediately. ||| Aftermath ||| Bombing ||| +0 Operation Cobra ||| Operation Charnwood ||| The initial attempt by I Corps to reach the city on D-Day was blocked by elements of the [[21st Panzer Division (Wehrmacht)|21st Panzer Division]] and with the Germans committing most of the reinforcements sent to meet the invasion to the defense of Caen, the Anglo-Canadian front rapidly congealed short of Second Army's objectives. |group=nb}} [[Operation Perch]] in the week following D-Day and [[Operation Epsom]] (26–30 June) brought some territorial gains and depleted its defenders but Caen remained in German hands until [[Operation Charnwood]] (7–9 July), when the Second Army managed to take the northern part of the city up to the [[River Orne]] in a frontal assault. ||| Background ||| ||| +0 Operation Cobra ||| Operation Goodwood ||| '''Operation Cobra''' was the codename for an offensive launched by the [[First United States Army]] seven weeks after the [[D-Day]] landings, during the [[Invasion of Normandy|Normandy Campaign]] of [[World War II]]. American Lieutenant General [[Omar Bradley]]'s intention was to take advantage of the German preoccupation with British and Canadian activity around the town of [[Caen]], in [[Operation Goodwood]], and immediately punch through the German defenses that were penning in his troops while the Germans were distracted and unbalanced. Once a corridor had been created, the First Army would then be able to advance into [[Brittany]], rolling up the German flanks and releasing itself of the constraints imposed by operating in the Norman [[bocage]] countryside. After a slow start the offensive gathered momentum, and German resistance collapsed as scattered remnants of broken units fought to escape to the [[Seine]]. Lacking the resources to cope with the situation, the German response was ineffectual, and the entire Normandy front soon collapsed. Operation Cobra, together with concurrent offensives by the [[Second Army (United Kingdom)|Second British]] and [[First Canadian Army|First Canadian]] Armies, was decisive in securing an Allied victory in the Normandy Campaign. ||| ||| ||| +0 Operation Colossus ||| Battle of France ||| '''Operation Colossus''' was the codename given to the first [[airborne forces|airborne]] operation undertaken by the British military, which occurred on 10 February 1941 during [[World War II]]. The British airborne establishment was formed in June 1940 by the order of the British [[Prime Minister of the United Kingdom|Prime Minister]], [[Winston Churchill]], in response to the successful airborne operations conducted by the German military during the [[Battle of France]]. Training began immediately, but a shortage of proper equipment and training facilities, as well as bureaucratic difficulties, meant that only a small number of volunteers could immediately be trained as parachute troops. The first airborne unit to be formed was actually a re-trained [[British Commandos|Commando]] unit, [[No. 2 Commando]], which was subsequently renamed as No. 11 Special Air Service Battalion and numbered approximately 350 officers and other ranks by September 1940. The battalion finished its training in December 1940, and in February 1941 thirty-eight members of the battalion, known as X Troop, were selected to conduct an airborne operation, which was intended to test the capability of the airborne troops and their equipment, as well as the ability of the [[Royal Air Force]] to accurately deliver them. ||| ||| ||| +0 Operation Commando Hunt ||| Operation Linebacker ||| ''Commando Hunt VII'' came to a close with the launching of the PAVN offensive mentioned above. This conventional attack, backed by armor, heavy artillery, and anti-aircraft units (including SAMs) rolled over the two northernmost provinces of South Vietnam while two smaller offensives were launched in central and southern parts of the country. All U.S. and South Vietnamese air assets were diverted to first slowing, and then halting the onslaught. They were then utilized in the first sustained bombing of North Vietnam since late 1968 (see [[Operation Linebacker]]). Interdiction missions were then diverted to carry out an even heavier aerial offensive against the north (see [[Operation Linebacker II]]). The end was nigh for ''Commando Hunt''. With the signing of the [[Paris Peace Accord]] in March 1973, the Vietnam War finally came to an end for the U.S. ||| 1972 ||| ||| +0 Operation Dawn 6 ||| Operation Kheibar ||| '''Operation Dawn 6''' ('''Operation ''Valfajr'' 6''' in [[Persian language|Persian]]) was a military operation conducted by the forces of the [[Islamic Republic of Iran]] against the armed forces of [[Saddam Hussein]]'s [[Iraq]]. It lasted from 22 to 24 February 1984 and, along with [[Operation Dawn 5]], it was part a larger operation to secure part of the Baghdad–Basra highway, thus cutting two of Iraq's most important cities from each other, and threatening the communications network supplying the Iraqi military on the front line. [[Operation Before the Dawn]] succeeded in capturing some high ground 15 miles from the highway, and Operation Dawn 6 was designed to exploit the Iranians' capture with a breakthrough towards the highway. However, the operation met an Iraqi defence which stood up to every attack, and the Iranians called off the attack after only two days. This led to [[Operation Kheibar]], the re-focus of the Iranian offensive towards Basra directly. ||| ||| ||| +0 Operation Doomsday ||| South-East Asian theatre of World War II ||| 1st Airborne Division was stationed in Norway until the end of the summer. It returned to Britain at the end of August, and its personnel were sent on leave. Initial plans had called for the division to be used as an Imperial Strategic Reserve, as it was believed that [[6th Airborne Division (United Kingdom)|6th Airborne Division]] would be required in the [[South-East Asian theatre of World War II|Far Eastern Theatre]]; however, when Japan surrendered in August it negated the need for 6th Airborne Division to be transferred. This created a problem, as two airborne divisions existed, but only one was included in the planned post-war British Regular Army. ||| Aftermath ||| ||| +0 Operation Dragoon ||| Operation Overlord ||| During planning stages, the 1942 operation was known as 'Anvil', to complement [[Operation Sledgehammer]], at that time the code name for the [[invasion of Normandy]]. Subsequently, both plans were renamed, Sledgehammer becoming [[Operation Overlord]], and Anvil becoming Operation ''Dragoon''. An apocryphal story holds that the name was chosen by the British prime minister, [[Winston Churchill]], who was opposed to the plan and claimed to having been '[[wikt:dragoon|dragooned]]' into accepting it. Other accounts attest that the operation was named after ''[[Draguignan]]'', a city near the invasion site. ||| Background ||| Prelude ||| +0 Operation Eagle ||| Operation Sinai (2012) ||| '''Operation Eagle''' ({{Lang-ar|عملية نسر}}) was an [[Egypt]]ian military campaign in the [[Sinai Peninsula]], that was launched in August 2011 to confront the [[Sinai insurgency]]. The campaign was aimed against [[Islamism|Islamist]] insurgents, who had been attacking the Egyptian security forces in the Sinai and using the area as a base from which to attack [[Israel]] since early 2011. Successive Egyptian operation against insurgents in 2012, named [[Operation Sinai (2012)|Operation Sinai]], was initially referred as the second part of Operation Eagle. ||| ||| ||| +0 Operation Enduring Freedom ||| Operation Anaconda ||| The [[Battle of Tora Bora]], involving U.S., British and Northern Alliance forces took place in December 2001 to further destroy the Taliban and suspected al-Qaeda in Afghanistan. In early March 2002 the United States military, along with allied Afghan military forces, conducted a large operation to destroy al-Qaeda in an operation code-named [[Operation Anaconda]]. ||| Operation Enduring Freedom – Afghanistan (OEF-A) ||| Combat operations start ||| +0 Operation Enduring Freedom ||| September 11 attacks ||| In response to the [[September 11 attacks|attacks of 11 September]], the early combat operations that took place on 7 October 2001 to include a mix of strikes from land-based [[B-1 Lancer]], [[B-2 Spirit]] and [[B-52 Stratofortress]] bombers, carrier-based [[F-14 Tomcat]] and [[F/A-18 Hornet]] fighters, and [[BGM-109 Tomahawk|Tomahawk cruise missiles]] launched from both U.S. and British ships and submarines signaled the start of Operation Enduring Freedom – Afghanistan (OEF-A). ||| Overview ||| ||| +0 Operation Enduring Freedom – Horn of Africa ||| Operation Enduring Freedom ||| '''Operation Enduring Freedom – Horn of Africa''' ('''OEF-HOA''') is the name of the [[military operation]] defined by the United States as combating militant [[Islamism]] and [[piracy]] in the [[Horn of Africa]]. It is one component of [[Operation Enduring Freedom]] (OEF), which includes eight African states stretching from the far northeast of the continent to the oil-rich [[Gulf of Guinea]] in the west. ||| ||| ||| +0 Operation Enduring Freedom – Philippines ||| Mamasapano clash ||| American and Filipino forces launched a joint operation against the Moros in the [[Mamasapano clash]], in which Moro Islamic Liberation Front (MILF) fighters manage to kill 44 Filipino police commandos and caused massive blow back for the botched raid, putting a decisive halt to American plans for its Asia military 'pivot' in the Philippines. ||| Moro reactions ||| ||| +0 Operation Flax ||| Battle of Stalingrad ||| In order to prevent this the Allied Air Forces, the RAF and the [[United States Army Air Forces]] (USAAF)—were ordered to conduct operations against Axis air power by day and night in order to prevent their resupply or withdrawal. Owing to bad weather and the need to gather intelligence, the operation, codenamed 'Flax', did not begin until 5 April. Although the Axis put up determined resistance and large scale air battles took place, the Allied Air Forces succeeded in destroying the aerial link between Axis-held [[Sicily]] and Italy. During the course of the interdiction operation, an air battle known as the 18 April ''Palmsonntag Massaker'' ('Palm Sunday Massacre') took place, in which the German [[Junkers Ju 52]] transport fleets suffered heavy losses over [[Cape Bon]], while evacuating ''Heer'' forces escaping from the Allied ground offensive [[Operation Vulcan|Operation ''Vulcan'']]. The air operation continued until 27 April. The operation destroyed Axis logistical support. Along with the attempted airlift during the [[Battle of Stalingrad]], Operation Flax inflicted such grievous losses on the German transport fleets that they were unable to recover. ||| ||| ||| +0 Operation Flax ||| Second Battle of El Alamein ||| In November 1942, American and British forces landed in North Africa under [[Operation Torch|Operation ''Torch'']]. Allied thrusts overran [[Vichy French]] [[Morocco]] and [[Algeria]] and advanced into [[Tunisia]]. The danger for the [[Axis Powers]] was now apparent. The Allied forces advancing eastward and the [[Eighth Army (United Kingdom)|British 8th Army]] advancing westward after the victory at the [[Second Battle of El Alamein]], would trap and destroy the remaining Axis forces in North Africa. In response to the crisis, and the poor state of Axis forces, reinforcements for the German ''[[Afrika Korps]]'', [[Italian Army]] and ''[[Luftwaffe]]'' were dispatched by sea and air. These reinforcements duly staved off an immediate defeat in Tunisia, the last region still in Axis hands. The poor state of the roads and rail lines in Algeria meant that Allied forces faced difficult [[Military logistics|logistic]] challenges which enabled the Axis to prolong a defence. The inexperience of U.S. forces was also apparent at the [[Battle of the Kasserine Pass]]. Nevertheless, the growing number and experience of Allied forces squeezed the Axis toward the northern tip of Tunisia. The [[Royal Air Force]] (RAF) and [[Royal Navy]] operating from [[Malta]] took a heavy toll of Axis shipping. However, Axis supplies were still reaching the besieged ''Afrika Korps'' by air. By early April, large quantities of Axis manpower was also being evacuated by air. Although the Allies held [[air superiority]] by this time, ''Luftwaffe'' transports were operating with impunity during darkness. ||| ||| ||| +0 Operation Freedom Deal ||| Operation Patio ||| The U.S. responded by first launching [[Operation Patio]], which consisted of tactical airstrikes into Cambodia as an adjunct to the highly classified [[Operation Menu]], the strategic bombardment of the Base Areas by [[Boeing B-52 Stratofortress|B-52]]s. ||| Patio ||| ||| +0 Operation Goodwood ||| Operation Cobra ||| When Operation Goodwood ended on 20 July, the armoured divisions had broken through the initial German defences and had advanced seven miles before coming to a halt in front of the Bourguébus Ridge, with armoured cars having penetrated even further south and over the ridge. The objective of the operation was a limited attack to secure Caen and the Bourguébus Ridge beyond, pinning German formations in the eastern region of the Normandy beachhead. This prevented German forces disengaging and moving south to confront US forces in their breakout operation, [[Operation Cobra]], which began on 25 July. At least one historian has called the operation the largest tank battle that the British Army has ever fought. ||| ||| ||| +0 Operation Goodwood (naval) ||| Operation Tungsten ||| Following Operation Source, the task of attacking ''Tirpitz'' was assigned to the Home Fleet's aircraft carriers. Following months of preparations, a successful attack ([[Operation Tungsten]]) involving two strike forces of 20 [[Fairey Barracuda]] dive bombers escorted by 40 fighters was conducted on 3 April 1944. While ''Tirpitz''{{'}}s crew suffered heavy casualties during this operation, the battleship was not badly damaged. ||| Background ||| ||| +0 Operation Hush ||| Battle of the Yser ||| '''Operation Hush''' was a British plan to make [[amphibious landings]] on the [[Belgium|Belgian]] coast in 1917 during [[World War I]], supported by an attack from [[Nieuwpoort, Belgium|Nieuport]] and the [[Yser]] bridgehead, which were a legacy of the [[Battle of the Yser]] (1914). Several plans were considered in 1915 and 1916, then shelved due to operations elsewhere. Operation Hush was intended to begin when the main offensive at Ypres had advanced to Roulers and Thourout, linked by advances by the French and Belgian armies in between. Operation {{lang|de|''Strandfest''}} was a German spoiling attack, conducted on 10 July by [[Naval Corps (German Empire)|Marinekorps-Flandern]], in anticipation of an Allied coastal operation. ||| ||| ||| +0 Operation Iron Triangle ||| Iraq War ||| '''Operation Iron Triangle''' was a military operation in the [[Iraq War]]. The operation was led by [[Michael D. Steele]] in 2006. The operation targeted a suspected [[al-Qaeda in Iraq]] training facility southwest of the city of Samarra near the Muthana Chemical Complex south of [[Lake Tharthar]]. ||| ||| ||| +0 Operation Jackal ||| Siege of Dubrovnik ||| The offensive marked the first significant Bosnian Serb defeat in the war and placed the HV in a favourable position to push back the VRS and remnants of the JNA holding positions north and east of [[Dubrovnik]]. The HV later re-established overland links with the city which had been under [[Siege of Dubrovnik|siege by the JNA]] since late 1991. The attack resulted in an HV/HVO victory and the capture of approximately {{convert|1800|km2|abbr=off}} of territory in and around Mostar and [[Stolac]]. ||| ||| ||| +0 Operation Jayasikurui ||| Battle of Mullaitivu (1996) ||| Following [[Operation Riviresa]] in 1995, the Sri Lankan military gained control over the Jaffna peninsula. The LTTE withdrew to the jungles of the [[Wanni]] from where in 1996 they launched an attack on an isolated [[Sri Lanka Army]] (SLA) garrison in [[Mullaitivu]]. After the [[Battle of Mullaitivu (1996)|Battle of Mullaitivu]] the LTTE gained control over the Mullaitivu district, since the government did not reestablish a base due to the lack of a land supply route to it. Instead, at the request of the deputy minister of defence, General Anurudha Ratwatte, the military forces began to plan a large scale operation to open a land route to Jaffna. ||| Background ||| ||| +0 Operation Jupiter (1944) ||| Operation Cobra ||| The British advance went well at first but fighting for Hill 112 took all day and Maltot changed hands several times. On 11 July, counter-attacks by the {{lang|de|''[[10th SS Panzer Division Frundsberg|10th SS-Panzer Division]]''}} and the [[102nd SS Heavy Panzer Battalion]] in the afternoon, forced the British off the top of Hill 112, to positions on the north-facing slope. The operation was a tactical failure for VIII Corps but a strategic success for the [[Allies of World War II|Allies]], attrition having reduced the [[II SS Panzer Corps]] to a condition from which it never recovered. Several other British operations were [[Second Battle of the Odon|conducted in the Odon valley]] during July and the [[53rd (Welsh) Infantry Division]] occupied Hill 112 almost unopposed on 4 August, after the Germans withdrew during [[Operation Cobra]] and [[Operation Bluecoat]] further west. A stone memorial to the 43rd Division was built on the hill in the late 1940s. ||| ||| ||| +0 Operation Kheibar ||| Operation Dawn 6 ||| After the unsuccessful diversionary attacks [[Operation Dawn V]] and [[Operation Dawn 6|Dawn VI]] in southern Iraq, Iran opened a front at the lakes of the [[Hawizeh Marshes]]. 250,000 Iranian troops swept through the Iraqi desert and, with the lack of air support, were very vulnerable to Iraqi mechanized forces. Due, to sanctions, Iran lacked spare parts for its American-made planes. This became a serious problem for Iran and led to heavy casualties. ||| Prelude ||| ||| +0 Operation Linebacker II ||| 1975 Australian constitutional crisis ||| The newly elected [[Prime Minister of Australia]], [[Gough Whitlam]], whose country previously pushed America to expand the war, angered the Nixon administration by criticizing the bombings in a letter to the U.S. President, chilling [[United States-Australia relations]] until Whitlam's [[1975 Australian constitutional crisis|dismissal in 1975]]; ||| Aftermath ||| ||| +0 Operation Little Saturn ||| Battle of Nikolayevka ||| At this point the Julia and Cuneense divisions were already heavily decimated and only the Tridentina division was still capable of conducting effective combat operations ([[Battle of Nikolayevka]], January 25–27). ||| Soviet counter-offensive: Operation Little Saturn ||| Second stage: January 1943 ||| +0 Operation Maitri ||| April 2015 Nepal earthquake ||| '''Operation Maitri''' ({{lang-en|''Operation Amity''}}) was a rescue and relief operation in [[Nepal]] by the government of India and [[Indian Armed Forces| Indian armed forces]] in the aftermath of the [[April 2015 Nepal earthquake]]. India's response was started within 15 minutes of the quake. ||| ||| ||| +0 Operation Martyr Yalçın ||| Military intervention against ISIL ||| The strikes against the PKK resulted in an increase in violence in the mainly [[Kurd]]ish southeast of Turkey. In conjunction to the airstrikes, [[2015 counter-terrorism operations in Turkey|large-scale domestic operations]] were conducted by the [[General Directorate of Security|police]] and [[Turkish Gendarmerie|Gendarmerie]] in over 22 [[Provinces of Turkey|Turkish provinces]]. The airstrikes have been referred to as a 'major policy shift' and a 'game changer' in the [[Military intervention against ISIL|global military intervention against ISIL]]. ||| ||| ||| +0 Operation Meghdoot ||| Kargil War ||| Operation ''Meghdoot'' was seen by some as the blueprint behind the [[Kargil War]] in 1999 when Pakistani paramilitary forces covertly occupied the Kargil region. Some obvious similarities exist between Siachen and Kargil, including their preemptive nature and the tactical advantage held by the entity who holds the heights. But while Operation ''Meghdoot'' was launched in an area of ambiguous border demarcation, the [[Line of Control]] in the [[Kargil District|Kargil region]] is clearly demarcated and therefore India received complete international support during the Kargil episode. ||| Aftermath ||| ||| +0 Operation Mincemeat ||| Battle of Kursk ||| German defensive efforts were substantially redirected: reinforcements were sent to Greece, [[Sardinia]] and [[Corsica]] instead of Sicily. British commando activities had also been carried out in Greece. The renowned general [[Erwin Rommel]] was sent to Greece to assume overall command. A group of '[[R boat]]s' (German minesweepers and minelayers) was transferred from Sicily, and three additional minefields were laid off the Greek coast. Three [[panzer]] divisions were moved to Greece – one from France, and two from the [[Eastern Front (World War II)|Eastern Front]]. The latter was perhaps the most critical move – reducing German combat strength in the [[Battle of Kursk|Kursk salient]] (influencing events on the Eastern Front was apparently neither intended nor foreseen by the British originators of the plan, who were preoccupied with their own part of the war). The Italian navy was also positioned in the general regional area of and around Greek waters, in preparatory advance to the defense of the anticipated upcoming Allied invasion of Greece. ||| 'Mincemeat swallowed rod, line and sinker' ||| ||| +0 Operation Mistral 2 ||| Operation Sana ||| The operation commenced during a [[North Atlantic Treaty Organisation]] (NATO) air campaign against the VRS codenamed [[Operation Deliberate Force]], targeting VRS air defences, artillery positions and storage facilities largely in the area of [[Sarajevo]], but also elsewhere in the country. Days after commencement of the offensive, the VRS positions to the right and to the left of the HV and the HVO advance were also attacked by the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH) in [[Operation Sana]]. The offensive achieved its objectives and set the stage for further advances of the HV, HVO and ARBiH towards Banja Luka, contributing to the resolution of the war. ||| ||| ||| +0 Operation Nordwind ||| Operation Undertone ||| Operation ''Nordwind'', although costly for both sides, was ultimately unsuccessful, and the failure of the offensive allowed the U.S. 7th Army to contain the German push towards Strasbourg. Any gains attained by the offensive were negated by the later [[Operation Undertone]]. ||| Results ||| ||| +0 Operation Overlord ||| Operation Dragoon ||| The Allies failed to reach their goals for the first day, but gained a tenuous foothold that they gradually expanded as they captured the port at [[Cherbourg-Octeville|Cherbourg]] on 26 June and the city of [[Caen]] on 21 July. A failed counterattack by German forces on 8 August led to 50,000 soldiers of the German 7th Army being trapped in the [[Falaise pocket]]. The Allies launched an invasion of southern France ([[Operation Dragoon]]) on 15 August, and the [[Liberation of Paris]] followed on 25 August. German forces retreated across the Seine on 30 August 1944, marking the close of Operation Overlord. ||| ||| ||| +0 Operation Patio ||| Operation Freedom Deal ||| The onset of the [[Cambodian Incursion]] by U.S. and South Vietnamese forces on 29 April forced an early termination on 4 May after only 156 had been flown. Operation ''Patio'' was quickly superseded by the much more extensive and destructive [[Operation Freedom Deal]]. ||| Operation ''Patio'' ||| ||| +0 Operation Perch ||| Operation Tonga ||| Next day XXX Corps in the west, pushed south to [[Tilly-sur-Seulles]] but then encountered the {{lang|de|''Panzer-Lehr Division''}} and the village changed hands several times. I Corps began the eastern thrust two days later from the [[River Orne|Orne]] bridgehead, which had been secured in [[Operation Tonga]] by British airborne forces on D-Day. I Corps was also delayed by constant counter-attacks of the {{lang|de|''21st Panzer Division''}}. With mounting casualties and no sign of an imminent German collapse, the offensive east of Caen was suspended on 13 June. ||| ||| ||| +0 Operation Phantom Phoenix ||| Operation Phantom Thunder ||| '''Operation ''Phantom Phoenix''''' was a major nationwide offensive launched by the [[Multinational Force Iraq]] (MNF-I) on 8 January 2008 in an attempt to build on the success of the two previous corps-level operations, [[Operation Phantom Thunder]] and [[Operation Phantom Strike]] and further reduce violence and secure Iraq's population, particularly in the capital [[Baghdad]]. The offensive consisted of a number of joint Coalition and Iraqi Army operations throughout northern Iraq as well as in the southern [[Baghdad Belts]]. ||| ||| ||| +0 Operation Plunder ||| Battle of the Bulge ||| These may have gone some way in mitigating the embarrassment and humiliation suffered due to the debacle of the [[Battle of the Bulge]], where forewarned of an impending German attack, the defenders did nothing and then had to rely on Montgomery - who because of this was then forced to postpone the impending [[Operation Veritable|Operation ''Veritable'']]* - taking command and organising and leading a proper and ultimately successful defence. ||| Aftermath ||| Military rivalries ||| +0 Operation Plunder ||| Normandy landings ||| Three Allied formations made the initial assault: the British [[XXX Corps (United Kingdom)|XXX]] and [[XII Corps (United Kingdom)|XII]] Corps and the [[XVI Corps (United States)|U.S. XVI Corps]]. The [[79th Armoured Division (United Kingdom)|British 79th Armoured Division]] — under [[Major-general (United Kingdom)|Major-General]] [[Percy Hobart]] — had been at the front of the [[Normandy landings]] and provided invaluable help in subsequent operations with specially adapted armoured vehicles (known as ''[[Hobart's Funnies]]''). One 'funny' was the [[Landing Vehicle Tracked#Variants|'Buffalo']] operated by the [[4th Royal Tank Regiment]] under the command of Lt. Col (later Lt. Gen) [[Alan Jolly]], an armed and armoured amphibious tracked personnel or cargo transporter able to cross soft and flooded ground. These were the transports for the spearhead infantry. ||| Battle ||| ||| +0 Operation Polyarnaya Zvezda ||| Operation Bagration ||| The relative failure of the operation compared to successes at the [[Battle of Stalingrad]] or [[Operation Bagration]] resulted in silence on the topic after the war. Neither Zhukov's or [[Meretskov]]'s memoirs make any mention of the operation or even of any specific fighting in the area after 18 January, the day the blockade of Leningrad finally ended. Zhukov's memoirs include only a short mention of the recapture of the Demyansk salient without any word on his role on the operation and then quickly focuses upon the [[Battle of Kursk]]. ||| Battle ||| ||| +0 Operation Retribution (1943) ||| Operation Vulcan ||| During the [[World War II|Second World War]], '''Operation Retribution''' was the air and naval blockade designed to prevent the seaborne evacuation of [[Axis powers|Axis forces]] from [[Tunisia]] to Sicily. (The equivalent blockade of air evacuation was [[Operation Flax]].) Axis forces were isolated in northern Tunisia and faced a [[Operation Vulcan|final Allied assault]]. ||| ||| ||| +0 Operation Rolling Thunder ||| Operation Linebacker ||| It was not until [[Operation Linebacker]] in 1972 that the problem became acute enough for the Air Force to finally take note. In the three months following the start of Linebacker in May 1972, the US lost 48 aircraft, 21 to VNAF MiGs and 27 to improved ground defenses. In the same period, only 31 MiGs were shot down by US aircraft and things worsened in the summer with 13 US aircraft lost to MiGs and only 11 MiGs shot down. General John Vogt, commander of the Seventh Air Force, reported to the AF Chief of Staff that they were losing the air war. ||| Legacy ||| ||| +0 Operation Sana ||| Operation Mistral 2 ||| '''Operation Sana''' ({{lang-bs|Operacija Sana}}) was a military offensive undertaken by the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH) in western [[Bosnia and Herzegovina]] during the [[Bosnian War]]. It was launched from the area of [[Bihać]] on 13 September 1995, against the [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS), and involved advances towards [[Bosanski Petrovac]], [[Sanski Most]] and [[Bosanska Krupa]]. At the same time, the [[Croatian Army]] (''Hrvatska vojska'' – HV) and the [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) were engaging the VRS in [[Operation Mistral 2|Operation Maestral 2]] further to the southeast. After an initial {{convert|70|km|adj=on}} advance, VRS reinforcements managed to stop the ARBiH short of Sanski Most and [[Novi Grad, Bosnia and Herzegovina|Novi Grad]], and reversed some of the ARBiH's territorial gains in a [[counterattack]]. After a part of the [[V Corps (Bosnia and Herzegovina)|ARBiH 5th Corps]] was threatened with defeat around the town of [[Ključ, Una-Sana Canton|Ključ]], the ARBiH requested assistance from the HV. ||| ||| ||| +0 Operation Sinai (2012) ||| Operation Eagle ||| '''Operation Sinai''' is an ongoing Egyptian military campaign, launched early August 2012, against Islamic militants within the [[Sinai Peninsula]] to crush the [[Sinai Insurgency]]. The operation came as a direct response to the [[2012 Egyptian-Israeli border attack]] on 5 August 2012. The operation was initially reported as part of 'Operation Nisr' ([[Operation Eagle]]), but on 3 September 2012, the Egyptian army issued a statement requesting media sources to use the official name 'Operation Sinai.' ||| ||| ||| +0 Operation Slapstick ||| Battle of Taranto ||| As it was the base of the Italian Navy, in November 1940 Taranto was attacked by the [[Royal Navy]] in what became known as the [[Battle of Taranto]]. During the attack by carrier-borne aircraft, in one night, the Italian fleet lost around half its strength; the next day, their undamaged ships were transferred from Taranto to Naples to try to protect them from similar attacks. ||| Background ||| Taranto ||| +0 Operation Slapstick ||| Operation Market Garden ||| The British 1st Airborne Division only fought in one other battle during the war. Almost a year to the day, on 17 September 1944, they took part in [[Operation Market Garden]], the airborne assault crossing of the [[River Rhine]] in the Netherlands. The 1st Airborne Division was also flown into Norway in May 1945 to accept the surrender of German forces and occupy formerly German held positions in [[Operation Doomsday]]. ||| Aftermath ||| ||| +0 Operation Solstice ||| Eastern Front (World War II) ||| '''Operation Solstice''' ({{lang-de|Unternehmen Sonnenwende}}), also known as ''Unternehmen Husarenritt'' or the 'Stargard tank battle', was one of the last [[Nazi Germany|German]] [[armoured warfare|armoured]] offensive operations on the [[Eastern Front (World War II)|Eastern Front]] in [[World War II]]. ||| ||| ||| +0 Operation Southern Watch ||| 2003 invasion of Iraq ||| '''Operation Southern Watch''' was a [[military operation]] conducted by the [[United States Department of Defense]]. [[United States Central Command]]'s Joint Task Force Southwest Asia (JTF-SWA) had the mission of monitoring and controlling the airspace south of the [[32nd parallel north|32nd Parallel]] (extended to the [[33rd parallel north|33rd Parallel]] in 1996) in [[Iraq]], following the 1991 [[Gulf War]] until the [[2003 invasion of Iraq]]. ||| ||| ||| +0 Operation Spring ||| Operation Cobra ||| '''Operation Spring''' was an offensive operation conducted by [[II Canadian Corps]] during the [[Invasion of Normandy|Normandy campaign]]. The plan was intended to create pressure on the German forces operating on the British and Canadian front simultaneously to American offensive operations in their sector known as [[Operation Cobra]], an attempt to break out from the Normandy lodgement. Specifically, Operation Spring was intended to capture Verrières Ridge and the towns on the south slope of the ridge.{{sfn|Jarymowycz|2001|pp=75–87}} However, strong German defenses on the ridge, as well as strict adherence to a defensive doctrine of counter-attacks, stalled the offensive on the first day, inflicting heavy casualties on the attacking forces, while preventing a breakout in the Anglo-Canadian sector. ||| ||| ||| +0 Operation Spring Awakening ||| Battle of the Bulge ||| Operation Spring Awakening involved many German units withdrawn from the failed [[Battle of the Bulge|Ardennes Offensive]] on the [[Western Front (World War II)|Western Front]] including the [[Sixth SS Panzer Army]]. ||| ||| ||| +0 Operation Summer '95 ||| Operation Deny Flight ||| On 27 July, Gotovina reinforced the Bosansko Grahovo axis by deploying the [[4th Guards Brigade (Croatia)|4th Guards Brigade]] on the right flank. The brigade broke through the VRS defence in its sector, advancing about {{convert|10|km|abbr=off}} and arriving within {{convert|5|km|abbr=off}} of Bosansko Grahovo. Advances in the Glamoč area were still being achieved slowly. The [[Croatian Air Force and Air Defence|Croatian Air Force]] took part in the attack the same day, using two [[Mikoyan-Gurevich MiG-21|MiG-21s]] to conduct airstrikes designed to disrupt the road network around Glamoč, violating a [[no-fly zone]] imposed by the UN and enforced by NATO as [[Operation Deny Flight]]. ||| Operation timeline ||| ||| +0 Operation Swarmer ||| 2003 invasion of Iraq ||| Other reports, however, have suggested that the lack of resistance may have been due to a lack of significant targets in the region. ''Time'' magazine's Brian Bennett reported that the area is a farming community with only 1,500 residents. ''Time'' also contested early television news reports that the operation was the largest use of air power since the [[2003 invasion of Iraq]], indicating that no air strikes had occurred. Bennett points out that the military term [[air assault]] refers specifically to moving troops into an area. Reporter Christopher Allbritton further reports that no fixed-wing aircraft were involved in the operation. However, the lack of fixed-wing aircraft and the use of airstrikes does not mean that the mission was not, by definition, an air assault. ||| ||| ||| +0 Operation Thunderbolt (1951) ||| Operation Roundup (1951) ||| }} and moved forward as ''[[Operation Roundup (1951)|Operation Roundup]]'' on 5 February. Responding to the UN advances, Chinese forces under [[Peng Dehuai]] then counter-attacked as the Fourth Phase Campaign, achieving initial successes at the [[Battle of Hoengsong]]. ||| Impact and aftermath ||| ||| +0 Operation Tiger Hound ||| Operation Steel Tiger ||| The geographic boundary of the operation was carved from the area of Laos already under bombardment under [[Operation Steel Tiger]]. This was done at the behest of the American commander in South Vietnam, General [[William C. Westmoreland]], who saw the area of Laos that bordered the five northernmost provinces of South Vietnam as an extension of his area of operations. The U.S. [[Joint Chiefs of Staff]] agreed. Unlike [[Operation Barrel Roll]] and ''Steel Tiger,'' however, the bombing in the new area would be conducted by aircraft of the South Vietnamese Air Force and by U.S. Air Force units based in South Vietnam (aircraft participating in ''Barrel Roll'' and ''Steel Tiger'' were generally based in [[Thailand]]). ||| ||| ||| +0 Operation Torch ||| Operation Vulcan ||| The setbacks at [[Battle of the Kasserine Pass|Kasserine]] forced the Allies to consolidate their forces and develop their lines of communication and administration so that they could support a major attack. The 1st and 8th Armies then attacked the Axis in April. Hard fighting followed, but the Allies cut off the Germans and Italians from support by naval and air forces between Tunisia and [[Sicily]]. On 6 May, as the culmination of [[Operation Vulcan]], the British took Tunis, and American forces reached [[Bizerte]]. By 13 May, the Axis forces in Tunisia had surrendered. This opened the way for the [[Allied invasion of Sicily]]. ||| Aftermath ||| Military consequences ||| Tunisia +0 Operation Torch ||| Western Desert Campaign ||| The [[Allies of World War II|Allies]] planned an Anglo-American invasion of north-western Africa &mdash; [[Morocco]], [[Algeria]] and [[Tunisia]], territory nominally in the hands of the [[Vichy France|Vichy French]] government. With much of [[Western Desert Campaign|North Africa]] already under Allied control, this would allow the Allies to carry out a [[pincer movement|pincer operation]] against Axis forces in North Africa. The Vichy French had around 125,000 soldiers in the territories as well as coastal artillery, 210 operational but out-of-date tanks and about 500 aircraft, half of which were [[Dewoitine D.520]] fighters — equal to many British and U.S. fighters. In addition, there were 10 or so warships and 11 submarines at [[Casablanca]]. ||| Background ||| ||| +0 Operation Turkey Buzzard ||| Operation Fustian ||| For their part, the 1st Airborne Division was to conduct three brigade-size airborne operations; the Ponte Grande road bridge south of Syracuse was to be captured by [[1st Airlanding Brigade (United Kingdom)|1st Airlanding Brigade]] ([[Operation Ladbroke]]), the port of [[Augusta, Sicily|Augusta]] was to be seized by [[2nd Parachute Brigade (United Kingdom)|2nd Parachute Brigade]] (Operation Glutton), and finally the Primasole Bridge over the River Simeto was to be taken by [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]] ([[Operation Fustian]]). ||| Background ||| ||| +0 Operation Undertone ||| Operation Nordwind ||| As the Seventh Army offensive began, the basic question was how stubbornly the Germans would defend before falling back on the Siegfried Line. Only General Milburn′s XXI Corps — on the Seventh Army′s left wing, near Saarbrücken — was fairly close to the Siegfried Line, while other units were as much as {{convert|32|km|abbr=on}} away. Making the army′s main effort in the center, General Haislip′s XV Corps faced what looked like a particularly troublesome obstacle in the town of [[Bitche]]. Surrounded by fortresses of the French [[Maginot Line]], Bitche had been taken from the Germans in December after a hard struggle, only to be relinquished in the withdrawal forced by the [[Operation Nordwind|German counteroffensive]]. On the army′s right wing, General Brooks′s VI Corps—farthest of all from the Siegfried Line—first had to get across the [[Moder River]], and one of Brooks′s divisions faced the added difficulty of attacking astride the rugged Lower [[Vosges Mountains]]. ||| Assault ||| ||| +0 Operation Vengeance ||| Attack on Pearl Harbor ||| The mission of the U.S. aircraft was specifically to kill Yamamoto and was based on [[United States Navy]] intelligence on Yamamoto's itinerary in the [[Solomon Islands]] area. The death of Yamamoto reportedly damaged the morale of Japanese naval personnel (described by [[Samuel Eliot Morison]] as being considered the equivalent of a major defeat in battle), raised the morale of the [[Allies of World War II|Allied]] forces, and was intended as revenge by U.S. leaders who blamed Yamamoto for the [[Attack on Pearl Harbor|Pearl Harbor attack]] which initiated the formal state of war between [[Empire of Japan|Imperial Japan]] and the United States. ||| ||| ||| +0 Operation Veritable ||| Battle of the Bulge ||| In the event, ''Veritable'' was delayed by the diversion of forces to stem the German attack through the [[Ardennes]] in December ([[Battle of the Bulge]]) and the advantages to the Allies of hard, frozen ground were lost. ||| Context ||| ||| +0 Operation Vulcan ||| Operation Retribution (1943) ||| In April, a major Allied air force effort ([[Operation Flax]]) had cut off Axis supplies to [[North Africa]]. The United States Army forces surrounded the last defenders at [[Enfidha|Enfidaville]], ending the Axis effort in North Africa. [[Operation Retribution (1943)|Operation Retribution]] and the control of the air and of the sea prevented any large-scale evacuation of Axis troops to Italy. ||| ||| ||| +0 Opération Chammal ||| Camp Speicher massacre ||| ISIL committed [[Persecution of Assyrians and Copts by ISIL|mass murder and other atrocities against the Assyrians]], as well as the [[Persecution of Yazidis by the Islamic State|Yazidis]]. ISIL also carried out the [[Camp Speicher massacre]] in June 2014, killing thousands of people. Until August, ISIL had controlled almost one-third of Iraq. ||| Background ||| ||| +0 Osovets Offensive ||| Belostock Offensive ||| The offensive commenced after the [[2nd Belorussian Front]] had successfully taken [[Grodno]] and [[Białystok]] in the [[Belostock Offensive]]. The Front was issued with new objectives at the end of July, being ordered to move on [[Łomża]] ({{lang-de|Lomscha}}) and [[Ostrołęka]] ({{lang-de|Scharfenwiese}}) and to enlarge bridgeheads over the [[Narew]] river in preparation for a further advance into [[East Prussia]]. ||| Operational goals ||| ||| +0 Ottoman–Habsburg wars ||| Pruth River Campaign ||| Brimming with confidence after their victories over the Russians in 1711 ([[Pruth River Campaign]]) and over the Venetians in 1715 ([[Ottoman–Venetian War (1714–18)]]), the Ottomans [[Austro-Turkish War of 1716–18|declared war]] on the Habsburg Monarchy in 1716 and marched north from Belgrade in July under the command of Grand Vizier [[Silahdar Damat Ali Pasha|Ali Pasha]]. The invasion was a catastrophe, however, and the Ottoman army was utterly destroyed and the Grand Vizier slain at the [[battle of Petrovaradin]] in August by an outnumbered Austrian army under the command of Prince Eugene, who went on to [[Siege of Belgrade (1717)|capture]] [[Belgrade]] a year later. At the subsequent [[Treaty of Passarowitz]] in 1718, the Austrians gained possession of the [[Banat]], [[Kingdom of Serbia (1718–39)|Serbia]] and [[Oltenia|Lesser Wallachia]]. ||| Endgame ||| 18th Century wars ||| +0 PNS Mehran attack ||| Operation Jackpot ||| | accessdate =2011 }} It was the biggest attack on the Navy and its assets since 1971, and is believed to be the last major attack of militant mastermind [[Ilyas Kashmiri]]. The [[Special Service Group Navy]] (SSG(N)), carried out the counter-attack, which was the largest operation led by SSG(N) since [[Operation Jackpot]] of 1971. ||| ||| ||| +0 Pacification of Rabaul ||| Bombing of Rabaul (November 1943) ||| After its capture by the South Sea Force in January 1942. Rabaul was developed into a major fleet base by the Japanese, eventually becoming the most heavily defended Japanese position in the South Pacific. Rabaul's strategic location, multiple airfields and large natural harbor made it the ideal staging base for ships, aircraft, troops and supplies during the [[New Guinea Campaign|New Guinea]] and [[Guadalcanal Campaign|Guadalcanal]] campaigns. After the Japanese lost their hold on Guadalcanal in early 1943, Allied forces began the push up the Solomon Islands to Rabaul. [[Marine Raiders]] and US Army troops landed on the [[Russell Islands]] shortly after, and an airbase was established there. US forces then pushed the Japanese out of the [[New Georgia Campaign|New Georgia]] island group in August 1943. Here, the Japanese command had invested men and supplies into building an airfield at Munda, all of which proved to be a waste. [[Fifth Air Force]] aircraft made small attacks in October, and a major Allied [[Bombing of Rabaul (November 1943)|raid on Rabaul]] took place in November. This raid destroyed 52 Japanese aircraft and five warships (most of Japan's naval warships would be withdrawn on 6 November). Then in November, US Marines landed on Bougainville, and its airfield was soon put to use by Allied forces. With the major Japanese possessions around Rabaul captured, Allied air forces could begin to neutralize Rabaul permanently. US Army troops [[Battle of Arawe|landed on Arawe]], which is located on Western New Britain, on 15 December 1943, and the 1st Marine Division [[Battle of Cape Gloucester|landed at Cape Gloucester]] on 26 December. Both landings were part of the attempted isolation of the Rabaul base. ||| Background ||| ||| +0 Pacification of Rabaul ||| Guadalcanal Campaign ||| After its capture by the South Sea Force in January 1942. Rabaul was developed into a major fleet base by the Japanese, eventually becoming the most heavily defended Japanese position in the South Pacific. Rabaul's strategic location, multiple airfields and large natural harbor made it the ideal staging base for ships, aircraft, troops and supplies during the [[New Guinea Campaign|New Guinea]] and [[Guadalcanal Campaign|Guadalcanal]] campaigns. After the Japanese lost their hold on Guadalcanal in early 1943, Allied forces began the push up the Solomon Islands to Rabaul. [[Marine Raiders]] and US Army troops landed on the [[Russell Islands]] shortly after, and an airbase was established there. US forces then pushed the Japanese out of the [[New Georgia Campaign|New Georgia]] island group in August 1943. Here, the Japanese command had invested men and supplies into building an airfield at Munda, all of which proved to be a waste. [[Fifth Air Force]] aircraft made small attacks in October, and a major Allied [[Bombing of Rabaul (November 1943)|raid on Rabaul]] took place in November. This raid destroyed 52 Japanese aircraft and five warships (most of Japan's naval warships would be withdrawn on 6 November). Then in November, US Marines landed on Bougainville, and its airfield was soon put to use by Allied forces. With the major Japanese possessions around Rabaul captured, Allied air forces could begin to neutralize Rabaul permanently. US Army troops [[Battle of Arawe|landed on Arawe]], which is located on Western New Britain, on 15 December 1943, and the 1st Marine Division [[Battle of Cape Gloucester|landed at Cape Gloucester]] on 26 December. Both landings were part of the attempted isolation of the Rabaul base. ||| Background ||| ||| +0 Pacification of Rabaul ||| New Georgia Campaign ||| After its capture by the South Sea Force in January 1942. Rabaul was developed into a major fleet base by the Japanese, eventually becoming the most heavily defended Japanese position in the South Pacific. Rabaul's strategic location, multiple airfields and large natural harbor made it the ideal staging base for ships, aircraft, troops and supplies during the [[New Guinea Campaign|New Guinea]] and [[Guadalcanal Campaign|Guadalcanal]] campaigns. After the Japanese lost their hold on Guadalcanal in early 1943, Allied forces began the push up the Solomon Islands to Rabaul. [[Marine Raiders]] and US Army troops landed on the [[Russell Islands]] shortly after, and an airbase was established there. US forces then pushed the Japanese out of the [[New Georgia Campaign|New Georgia]] island group in August 1943. Here, the Japanese command had invested men and supplies into building an airfield at Munda, all of which proved to be a waste. [[Fifth Air Force]] aircraft made small attacks in October, and a major Allied [[Bombing of Rabaul (November 1943)|raid on Rabaul]] took place in November. This raid destroyed 52 Japanese aircraft and five warships (most of Japan's naval warships would be withdrawn on 6 November). Then in November, US Marines landed on Bougainville, and its airfield was soon put to use by Allied forces. With the major Japanese possessions around Rabaul captured, Allied air forces could begin to neutralize Rabaul permanently. US Army troops [[Battle of Arawe|landed on Arawe]], which is located on Western New Britain, on 15 December 1943, and the 1st Marine Division [[Battle of Cape Gloucester|landed at Cape Gloucester]] on 26 December. Both landings were part of the attempted isolation of the Rabaul base. ||| Background ||| ||| +0 Paraguay campaign ||| May Revolution ||| The '''Paraguay campaign''' (1810–1811) was the attempt by a [[Buenos Aires]]-sponsored [[militia]], commanded by [[Manuel Belgrano]], to win the Intendency of [[Paraguay]] for the [[May Revolution|revolutionary cause]]. It is also considered for the Paraguayans as their war for independence. The first battles were fought in [[Battle of Campichuelo|Campichuelo]] and [[Battle of Campo Maracana|Maracana]] and the Argentines claimed victory in both fields. However, they were completely vanquished in the subsequent battles of [[Battle of Paraguarí|Paraguarí]] and [[Battle of Tacuarí|Tacuarí]]. The campaign ended in a military failure and Paraguay broke its links with the Spanish crown just two months after Belgrano's withdrawal, achieving full independence. ||| ||| ||| +0 Paris massacre of 1961 ||| World War II ||| The massacre appears to have been intentional, as has been demonstrated by historian Jean-Luc Einaudi, who won a trial against [[Maurice Papon]] in 1999 – the latter was convicted in 1998 on charges of [[crimes against humanity]] for his role under the [[Vichy France|Vichy collaborationist regime]] during [[World War II]]. Official documentation and eyewitnesses within the Paris police department indeed suggest that the massacre was directed by Papon. Police records show that Papon called for officers in one station to be 'subversive' in quelling the demonstrations, and assured them protection from prosecution if they participated. Many demonstrators died when they were violently herded by police into the [[River Seine]], with some thrown from bridges after being beaten unconscious. Other demonstrators were killed within the courtyard of the Paris police headquarters after being arrested and delivered there in police buses. Officers who participated in the courtyard killings took the precaution of removing identification numbers from their uniforms, while senior officers ignored pleas by other policemen who were shocked when witnessing the brutality. Silence about the events within the police headquarters was further enforced by threats of reprisals from participating officers. ||| ||| ||| +0 Peninsula Campaign ||| Battle of Seven Pines ||| As McClellan's army reached the outskirts of Richmond, a minor battle occurred at [[Battle of Hanover Court House|Hanover Court House]], but it was followed by a surprise attack by Johnston at the [[Battle of Seven Pines]] or Fair Oaks. The battle was inconclusive, with heavy casualties, but it had lasting effects on the campaign. Johnston was wounded by a Union artillery shell fragment on May 31 and replaced the next day by the more aggressive Robert E. Lee, who reorganized his army and prepared for offensive action in the final battles of June 25 to July 1, which are popularly known as the [[Seven Days Battles]]. ||| ||| ||| +0 Peninsula Campaign ||| Seven Days Battles ||| The '''Peninsula Campaign''' (also known as the '''Peninsular Campaign''') of the [[American Civil War]] was a major [[Union (American Civil War)|Union]] operation launched in southeastern [[Virginia]] from March through July 1862, the first large-scale offensive in the [[Eastern Theater of the American Civil War|Eastern Theater]]. The operation, commanded by [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]], was an amphibious [[turning movement]] against the [[Confederate States Army]] in [[Northern Virginia]], intended to capture the [[Confederate States of America|Confederate]] capital of [[Richmond, Virginia|Richmond]]. McClellan was initially successful against the equally cautious General [[Joseph E. Johnston]], but the emergence of the aggressive General [[Robert E. Lee]] turned the subsequent [[Seven Days Battles]] into a humiliating Union defeat. ||| ||| ||| +0 Persecution of Ottoman Muslims ||| Caucasus Campaign ||| Historian [[Uğur Ümit Üngör]] noted that during the [[Caucasus Campaign|Russian invasion of Ottoman lands]], 'many atrocities were carried out against the local Turks and Kurds by the Russian army and Armenian volunteers.' ||| World War I and the Turkish War of Independence ||| Caucasus Campaign ||| +0 Persian Campaign ||| Caucasus Campaign ||| During July 1915, Russian forces at the [[Caucasus Campaign]] had a general retreat which one Russian column retreated up to Persian frontier. This retreat was the consequence of events at June 1915. Yudenich planned an attack to limit the Ottomans at [[Moush]] and [[Manzikert]]. He planned to outflank from [[Doğubeyazıt|Beyazit]] and [[Persian Azerbaijan]] towards Van. However, the Russian advance toward the Caucuses campaign did not last long. The Russian forces suffered reverses. The command of Khalil Bey Eleven divisions of regular troops attacked the very center of the Russian Caucasian advance. In a few days they with [[Battle of Manzikert (1915)|Battle of Manzikert]] July 16, and later [[Battle of Kara Killisse (1915)|Battle of Kara Killisse]] the Russian army retreated. ||| Operations ||| 1915 ||| +0 Philippine resistance against Japan ||| Attack on Pearl Harbor ||| The [[Attack on Pearl Harbor]] (called ''Hawaii Operation'' or ''Operation AI'' ||| Background ||| ||| +0 Philippines Campaign (1941–42) ||| Raid at Cabanatuan ||| On 29 January 1945, US and Philippine forces liberated POWs in the [[Raid at Cabanatuan]]. ||| Aftermath ||| ||| +0 Philippines Campaign (1944–45) ||| Battle of Morotai ||| [[Aircraft carrier]]-based warplanes were already conducting [[air strike]]s and [[fighter plane|fighter]] sweeps against the Japanese in the Philippines, especially their military [[airfield]]s. [[U.S. Army]] and [[Australian Army]] troops under the American [[General of the Army|General]] [[Douglas MacArthur]], the Supreme Commander of the [[South West Pacific Theater|Southwest Pacific Theater of Operations]], had either overrun, or else isolated and bypassed, all of the Japanese Army on [[New Guinea]] and the [[Admiralty Islands]]. Before the invasion of the Philippines, MacArthur's northernmost conquest had been at [[Battle of Morotai|Morotai]] in the [[Dutch East Indies]] on September 15–16, 1944. This was MacArthur's one base that was within bomber range of the southern Philippines. ||| Planning ||| ||| +0 Philippines Campaign (1944–45) ||| Battle of Tinian ||| With victories in the [[Marianas campaign]] (on [[Battle of Saipan|Saipan]], on [[Battle of Guam (1944)|Guam]], and on [[Battle of Tinian|Tinian]], during June and July 1944), American forces were getting close to Japan itself. From the Marianas, the very long-range [[B-29 Superfortress]] [[heavy bomber]]s of the [[U.S. Army Air Forces]] (USAAF) could bomb the Japanese home islands from well-supplied [[air base]]s – ones with direct access to supplies via cargo ships and tankers. (The earlier B-29 bombing campaign against Japan had been from the end of a very long and tortuous [[military logistics|supply line]] via [[British Raj|British India]] and [[British Burma]] – one that proved to be woefully inadequate. All B-29s were transferred to the Marianas during the fall of 1944.) ||| Planning ||| ||| +0 Phoney War ||| Battle of Belgium ||| On 10 May 1940, eight months after Britain and France had declared war on Germany, German troops marched into [[Battle of Belgium|Belgium]], the [[Battle of the Netherlands|Netherlands]] and [[Invasion of Luxembourg|Luxembourg]], marking the end of the Phoney War. ||| Actions during the Phoney War ||| ||| +0 Phoney War ||| German invasion of Denmark (1940) ||| The open discussions on an [[Allies of World War II|Allied]] expedition to northern Scandinavia, also without the consent of the neutral Scandinavian countries, and the [[Altmark Incident]] on 16 February, alarmed the ''[[Kriegsmarine]]'' and Germany by threatening [[iron ore]] supplies and gave strong arguments for Germany securing the Norwegian coast. Codenamed Operation [[Operation Weserübung|''Weserübung'']], the German invasion of [[German invasion of Denmark (1940)|Denmark]] and [[Norwegian Campaign|Norway]] commenced on 9 April. From the 14th, Allied troops were landed in Norway, but by the end of the month, southern parts of Norway were in German hands. The fighting continued in [[Northern Norway|the north]] until the Allies evacuated in early June in response to the [[Battle of France|German invasion of France]]; the Norwegian forces in mainland Norway laid down their arms at midnight on 9 June. ||| German invasion of Denmark and Norway ||| ||| +0 Pingjin Campaign ||| Huaihai Campaign ||| By the winter of 1948, the balance of power in Northern China had shifted in favour of the People's Liberation Army. As the Communist [[Fourth Field Army]] led by [[Lin Biao]] and [[Luo Ronghuan]] entered North China Plain after the conclusion of [[Liaoshen Campaign]], [[Fu Zuoyi]] and the Nationalist Government decided to abandon [[Chengde]], [[Baoding]], [[Shanhai Pass]] and [[Qinhuangdao]] to withdraw the military forces to [[Beiping]], [[Tianjin]] and [[Zhangjiakou]]. The Nationalists were hoping to preserve their strength and reinforce [[Xuzhou]] where [[Huaihai Campaign|another major campaign]] was under its way. The alternative option is to retreat to nearby [[Suiyuan Province]]. ||| Background ||| ||| +0 Portuguese Restoration War ||| English Civil War ||| England was, at this time, embroiled in its own [[English Civil War|civil war]]. Portuguese problems in dealing with England arose from the fact that the English Parliament fought and won its anti-royalist war while, at the same time, Portugal's royal court continued to receive and recognize [[Kingdom of England|English]] princes and nobles. These strained relations persisted during the short-lived [[Commonwealth of England|Commonwealth period]], when the republican government that had deposed [[Charles I of England|Charles I]] ruled England and then Ireland and Scotland. ||| Context: relations among the European powers ||| Relations between Portugal and England ||| +0 Quasi-War ||| American Revolutionary War ||| The [[Ancien Régime|Kingdom of France]] had been [[France in the American Revolutionary War|a crucial ally]] of the United States in the [[American Revolutionary War]] since the spring of 1776, and had signed in 1778 a [[Treaty of Alliance (1778)|treaty of alliance]] with the United States of America [[Anglo-French War (1778–83)|against Great Britain]]. But in 1794, after the [[French Revolution]] toppled [[King of the French|that country's monarchy]], the American government came to an agreement with the [[Kingdom of Great Britain]], the [[Jay Treaty]], that resolved several points of contention between the United States and Great Britain that had lingered after the end of the American Revolutionary War. It also contained economic clauses. ||| Background ||| ||| +0 Quasi-War ||| French Revolution ||| The [[Ancien Régime|Kingdom of France]] had been [[France in the American Revolutionary War|a crucial ally]] of the United States in the [[American Revolutionary War]] since the spring of 1776, and had signed in 1778 a [[Treaty of Alliance (1778)|treaty of alliance]] with the United States of America [[Anglo-French War (1778–83)|against Great Britain]]. But in 1794, after the [[French Revolution]] toppled [[King of the French|that country's monarchy]], the American government came to an agreement with the [[Kingdom of Great Britain]], the [[Jay Treaty]], that resolved several points of contention between the United States and Great Britain that had lingered after the end of the American Revolutionary War. It also contained economic clauses. ||| Background ||| ||| +0 Quasi-War ||| United States presidential election, 1800 ||| By the autumn of 1800, the United States Navy and the Royal Navy, combined with a more conciliatory diplomatic stance by the government of [[First Consul]] [[Napoleon Bonaparte]], had reduced the activity of the French privateers and warships. The [[Convention of 1800]], signed on 30 September, ended the Franco-American War. Unfortunately for President Adams, the news did not arrive in time to help him secure a second term in the [[United States presidential election, 1800|1800 presidential election]]. ||| Conclusion of hostilities ||| ||| +0 Queen Anne's War ||| Northeast Coast Campaign (1703) ||| Throughout the war, New France and the [[Wabanaki Confederacy]] were able to thwart New England expansion into Acadia, whose border New France defined as the [[Kennebec River]] in southern [[Maine]]. In 1703, [[Michel Leneuf de la Vallière de Beaubassin]], who commanded a few French Canadians and 500 of the natives in the Wabanaki Confederacy, led attacks against [[New England]] settlements from [[Wells, Maine|Wells]] to Falmouth (present-day [[Portland, Maine]]) in the [[Northeast Coast Campaign (1703)|Northeast Coast Campaign]]. They killed or took prisoner more than 300 settlers. ||| Course of the war ||| New England and Acadia ||| +0 Queen Anne's War ||| Siege of Port Royal (1707) ||| In May 1707, Governor Dudley organized an expedition to take Port Royal. Led by [[John March]], 1,600 men failed to take the fort by [[Siege of Port Royal (1707)|siege]]; a follow-up expedition in August was also repulsed. ||| Course of the war ||| New England and Acadia ||| +0 Quintinshill rail disaster ||| Gallipoli Campaign ||| Only half the soldiers on the troop train survived. Those killed were mainly [[Territorial Force|Territorial soldier]]s from the 1/7th ([[Leith]]) Battalion, the [[Royal Scots]] heading for [[Gallipoli Campaign|Gallipoli]]. The precise death toll was never established with confidence as some bodies were never recovered, having been wholly consumed by the fire, while the roll list of the regiment was also destroyed in the fire.{{sfn|Druitt|1915|p=26}} The official death toll was 227 (215 soldiers, 9 passengers and three railway employees), but the army later reduced their 215 by one. Not counted in the 227 were four victims thought to be children,{{sfn|Druitt|1915|p=26}} but which were never claimed or identified. The soldiers were buried together in a mass grave in Edinburgh's [[Rosebank Cemetery]], where an annual remembrance is held. ||| ||| ||| +0 Raid on Genoa ||| French Revolution ||| The [[French Revolutionary Wars]], which began in 1792 as a conflict between the new [[First French Republic|French Republic]] and the [[Austrian Empire]] following the [[French Revolution]], spread in 1793 to involve a number of other European nations, including [[Kingdom of Spain|Spain]] and [[Kingdom of Great Britain|Great Britain]]. ||| Mediterranean in 1793 ||| ||| +0 Račak massacre ||| NATO bombing of Yugoslavia ||| The killings were a major factor in [[NATO]] [[NATO bombing of Yugoslavia|deciding to use force]] against the [[Federal Republic of Yugoslavia]] to end its campaign of violence against Kosovo Albanians. The incident was the subject of three forensic reports: One Yugoslavian, another [[Belarus|Belarusian]] and the third [[Finland|Finnish]]. The first two, which were commissioned by the Yugoslav government, concluded that those killed were, in fact, not civilians. ||| ||| ||| +0 Revolution of 1905 ||| Battle of Mukden ||| With the unsuccessful and bloody [[Russo-Japanese War]] (1904–1905) there was unrest in army reserve units. On 2 January 1905 [[Lüshunkou District|Port Arthur]] was lost, and the Russian [[Baltic Fleet]] was defeated at [[Battle of Tsushima|Tsushima]]; in February 1905, the Russian army was defeated at [[Battle of Mukden|Mukden]], losing almost 80,000 men in the process. Witte was dispatched to make peace, negotiating the [[Treaty of Portsmouth]] (signed {{OldStyleDate|5 September|1905|23 August}}). In 1905, there were naval mutinies at [[Sevastopol]] (see [[Sevastopol Uprising]]), [[Vladivostok]], and [[Kronstadt]], peaking in June with the [[Russian battleship Potemkin#The_mutiny|mutiny aboard the battleship ''Potemkin'']] — some sources claim over 2,000 sailors died in the restoration of order. The mutinies were disorganised and quickly crushed. Despite these mutinies, the armed forces were largely apolitical and remained mostly loyal, if dissatisfied — and were widely used by the government to control the 1905 unrest. ||| Start of the revolution ||| ||| +0 Revolutions of 1989 ||| Croatian War of Independence ||| * [[Croatian War of Independence]] (1991–95) ||| Albania and Yugoslavia ||| Breakup of Yugoslavia ||| +0 Rhodesian Bush War ||| Angolan Civil War ||| Inevitably the Bush War occurred within the context of regional Cold War in Africa, and became embroiled with a number of conflicts in several neighbouring countries as well. Such conflicts included the [[Angolan War of Independence]] (1961–1975) and [[Angolan Civil War]] (1975–2002), the [[Mozambican War of Independence]] (1964–1974) and [[Mozambican Civil War]] (1977–1992), and the [[Shaba I]] (1977) and [[Shaba II]] (1978) conflicts. ||| Background ||| Cold War politics ||| +0 Riga Offensive (1944) ||| Battle of Memel ||| The resulting offensive, the [[Battle of Memel]], was launched on October 5; [[Hovhannes Bagramyan|Bagramyan's]] [[1st Baltic Front]] shattered the [[3rd Panzer Army|Third Panzer Army]], finally severing the land connection between the German [[Army Group Centre]] and [[Army Group North]]. Schoerner's forces around Riga and in Courland were now cut off. ||| The offensive ||| ||| +0 Royal International Air Tattoo ||| Battle of Britain ||| RIAT 2010 was held on 17–18 July 2010. The themes for the show were the 70th anniversary of the [[Battle of Britain]], Training Aircraft and the 150th anniversary of [[Cadets]]. Notable visitors to the 2010 show included [[James May]] and [[David Jason]]. ||| History ||| RIAT 2010 ||| +0 Russian military intervention in the Syrian Civil War ||| November 2015 Paris attacks ||| On 17 November 2015, in the wake of the [[Metrojet Flight 9268|Russian jet crash]] over Sinai and the [[November 2015 Paris attacks|Paris attacks]], according to the Russian defence minister′s public report to the president of Russia Vladimir Putin, Russia employed the Russia-based [[Tu-160]], [[Tu-95]]MSM, and [[Tu-22M]]3 long range [[strategic bomber]]s firing [[air-launched cruise missile]]s to hit what he claimed were the IS targets in Raqqa, Deir ez-Zor as well as targets in the provinces of Aleppo and Idlib. ||| Operations by Russian military ||| Mid-November−1 Dec 2015 ||| +0 Rwandan Genocide ||| Battle of Mogadishu (1993) ||| Fear of a repeat of the events in [[Somalia]] shaped US policy in subsequent years, with many commentators identifying the graphic consequences of the [[Battle of Mogadishu (1993)|Battle of Mogadishu]] as the key reason behind the US's failure to intervene in later conflicts such as the Rwandan Genocide. After the battle, the bodies of several US casualties of the conflict were dragged through the streets of Mogadishu by crowds of local civilians and members of Aidid's [[Somali National Alliance]]. According to the US's former deputy special envoy to Somalia, Walter Clarke: 'The ghosts of Somalia continue to haunt US policy. Our lack of response in Rwanda was a fear of getting involved in something like a Somalia all over again.' ||| International response ||| United States ||| +0 Saint-Domingue expedition ||| French Revolution ||| The [[French Revolution]] led to serious social upheavals on Saint-Domingue, of which the most important was the [[St. Domingue Slave Revolt|slave revolt]] that led to the [[Abolitionism in France|abolition of slavery]] in 1793 by the civil commissioners [[Léger-Félicité Sonthonax|Sonthonax]] and [[Étienne Polverel|Polverel]], in a decision endorsed and spread to all the French colonies by the [[National Convention]] 6 months later. [[Toussaint Louverture]], a black former slave who had been made Governor by France, re-established peace, fought off Spanish and British attempts to capture the island, and reestablished prosperity by daring measures. However, he went too far in hunting down governor Don Joaquín García y Moreno (27 January 1801), who had remained in what had been [[Captaincy General of Santo Domingo|the Spanish part of the island]] following the 1795 [[Peace of Basel]], and in promulgating a self-rule constitution on 12 July 1801. ||| Context ||| ||| +0 Salamaua–Lae campaign ||| Huon Peninsula campaign ||| While the fall of Lae was clearly a victory for the Allies, and it was achieved more quickly and at lower cost than anticipated, a significant proportion of the Japanese garrison had escaped through the [[Saruwaged Range]], to the north of Lae, and would have to be fought again elsewhere. The [[Huon Peninsula campaign]] was the result. ||| Aftermath ||| ||| +0 Schlieffen Plan ||| Battle of Mulhouse ||| |[[Battle of Mulhouse]] ||align='right'|7–10 August ||| Prelude ||| Battle of the Frontiers ||| +0 Schweinfurt–Regensburg mission ||| Operation Overlord ||| Because of diversions of groups to the [[Operation Torch|invasion of North Africa]], the bomber force in England had been limited in size to four groups of B-17s and two of [[B-24]]s until May 1943. At that time, and in conjunction with the [[Pointblank Directive]] to destroy the Luftwaffe in preparation for [[Operation Overlord]], the B-17 force had expanded fourfold and was organized into the 1st and 4th Bombardment Wings (which due to their large size would soon be re-designated Bomb Divisions). The 1st Bombardment Wing, which included all of the original B-17 groups, was based in the [[English Midlands]] while the 4th Bombardment Wing stations were located in [[East Anglia]]. ||| The mission plan ||| ||| +0 Scotland in the Wars of the Three Kingdoms ||| Battle of Aberdeen (1644) ||| In the Autumn of 1644, the Royalists marched across the Highlands to [[Perth, Scotland|Perth]], where they smashed a Covenanter force at the [[battle of Tippermuir]]. Shortly afterwards, another Covenanter militia met a similar fate [[Battle of Aberdeen (1644)|outside Aberdeen]]. Unwisely, Montrose let his men pillage Perth and Aberdeen after taking them, leading to hostility to his forces in an area where Royalist sympathies had been strong. ||| Tippermuir, Aberdeen and Inverlochy ||| ||| +0 Scotland in the Wars of the Three Kingdoms ||| Battle of Dunbar (1650) ||| The threat posed by King Charles II with his new Covenanter allies was considered to be the greatest facing the new English Republic so [[Oliver Cromwell]] left some of his lieutenants in Ireland to continue the [[Cromwellian conquest of Ireland|suppression of the Irish Royalists]] and returned to England in May. He arrived in Scotland on 22 July 1650, advancing along the east coast towards Edinburgh. By the end of August, his army was reduced by disease and running out of supplies, so he was forced to order a retreat towards his base at the port of Dunbar. A Scottish Covenanter army under the command of [[David Leslie (Scottish general)|David Leslie]] had been shadowing his progress. Seeing some of Cromwell's sick troops being taken on board the waiting ships, Leslie made ready to attack what he believed was a weakened remnant (though some historians report that he was ordered to fight against his better judgment by the Covenanter General Assembly). Cromwell seized the opportunity, and the [[New Model Army]] inflicted a crushing defeat on the Scots at the subsequent [[Battle of Dunbar (1650)|Battle of Dunbar]] on 3 September. Leslie's army, which had strong ideological ties to the radical [[Kirk Party]], was destroyed, losing over 14,000 men killed, wounded and taken prisoner. Cromwell's army then took [[Edinburgh]] and by the end of the year his army had occupied much of southern Scotland. ||| Scotland and the Second and Third English Civil Wars ||| Third Civil War===<!-- This section is linked from [[Bass Rock]] --& ||| +0 Scullabogue Barn massacre ||| Battle of New Ross (1798) ||| A farm and out-buildings in the townland of Scullabogue (also spelled ''Scullaboge''; {{Lang-ga|Scolbóg}}) were used as a staging post for rebel forces before the 1798 [[Battle of New Ross (1798)|Battle of New Ross]]. The main camp for the rebels was located a mile from Scullabogue on top of Carrigbyrne Hill. ||| Background ||| ||| +0 Second Balkan War ||| Battle of Cannae ||| The Serbian front had become static. King Constantine, seeing that the Bulgarian Army at his front had already been defeated, ordered the Greek Army to march further into Bulgarian territory and take the capital city of Sofia. Constantine wanted a decisive victory despite objections by his Prime Minister, [[Eleftherios Venizelos]], who realized that the Serbs, having won their territorial objectives, now adopted a passive stance and shifted the weight of carrying the rest of the war to the Greeks. In the pass of Kresna ([[Battle of Kresna Gorge]]), the Greeks were ambushed by the Bulgarian 2nd and 4th Army which had newly arrived from the Serbian front and had taken defensive positions there. By 8 July, the Greek army was outnumbered by the now counterattacking Bulgarian armies, and the Bulgarian General Staff, attempting to encircle the Greeks in a [[Battle of Cannae|Cannae]]-type battle was applying pressure on their flanks. At 15 July, the Bulgarian army, under heavy pressure, was forced to abandon Gorna Dzhumaya. ||| Greek offensive ||| ||| +0 Second Balkan War ||| First Balkan War ||| The '''Second Balkan War''' was a conflict which broke out when [[Kingdom of Bulgaria|Bulgaria]], dissatisfied with its share of the spoils of the [[First Balkan War]], attacked its former allies, [[Kingdom of Serbia|Serbia]] and [[Kingdom of Greece|Greece]], on 16 ([[Old Style|O.S.]])/29 June 1913. Serbian and Greek armies repulsed the Bulgarian offensive and counter-attacked, entering Bulgaria. With Bulgaria also having previously engaged in territorial disputes with [[Kingdom of Romania|Romania]], this war provoked Romanian intervention against Bulgaria. The [[Ottoman Empire]] also took advantage of the situation to regain some lost territories from the [[First Balkan War|previous war]]. When Romanian troops approached the capital [[Sofia]], Bulgaria asked for an armistice, resulting in the [[Treaty of Bucharest (1913)|Treaty of Bucharest]], in which Bulgaria had to cede portions of its First Balkan War gains to Serbia, Greece and Romania. In the [[Treaty of Constantinople (1913)|Treaty of Constantinople]], it lost [[Edirne]] to the Ottomans. ||| ||| ||| +0 Second Battle of Amman ||| Battle of Megiddo (1918) ||| The '''Second Battle of Amman''' was fought on 25 September 1918 during the [[Third Transjordan attack]] as part of the [[Battle of Nablus (1918)|Battle of Nablus]] which together with the main [[Battle of Sharon]] form the major set piece offensive known as the [[Battle of Megiddo (1918)|Battle of Megiddo]] of the [[Sinai and Palestine Campaign]] in World War I. After cutting the road from Nablus to [[Salt, Jordan|Es Salt]] on 22 September [[Chaytor's Force]] captured the bridge over the [[Jordan River]] at [[Capture of Jisr ed Damieh|Jisr ed Damieh]] while units of the [[Seventh Army (Ottoman Empire)|Seventh Army]] and remnants of the [[Eighth Army (Ottoman Empire)|Eighth Army]] were still in retreating towards the bridge from the [[Judean Hills]]. Having cut this line of retreat, Chaytor's Force proceeded eastwards to attack and capture Es Salt, before riding on to attack and capture the [[Ottoman Empire|Ottoman]] rearguard of the [[Fourth Army (Ottoman Empire)|Fourth Army]] defending [[Amman]]. These [[British Empire]] victories of the Third Transjordan attack over [[Yildirim Army Group]] forces, followed two unsuccessful EEF attacks across the Jordan River in [[First Transjordan attack on Amman (1918)|March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|April]] 1918. ||| ||| ||| +0 Second Battle of Artois ||| Second Battle of Champagne ||| The British attacks at Festubert forced the Germans back {{convert|3|km|mi}} and diverted reserves from the French but the French gained little more ground, despite firing double the amount of artillery ammunition, at the cost of many casualties to both sides. On 18 June, the main offensive was stopped and local attacks were ended on 25 June. The French offensive had advanced the front line about {{convert|3|km|mi}} towards Vimy Ridge, on an {{convert|8|km|mi|adj=on}} front. The failure to break through, despite the expenditure of {{nowrap|2,155,862 shells}} and the loss of {{nowrap|102,500 casualties,}} led to recriminations against Joffre; the German 6th Army lost {{nowrap|73,072 casualties.}} A lull followed until the [[Second Battle of Champagne]], the [[Third Battle of Artois]] and the [[Battle of Loos]] in September. ||| ||| ||| +0 Second Battle of Bull Run ||| Battle of Gettysburg ||| James Longstreet was criticized for his performance during the battle and the postbellum advocates of the [[Lost Cause of the Confederacy|Lost Cause]] claimed that his slowness, reluctance to attack, and disobedience to Gen. Lee on August 29 were a harbinger of his controversial performance to come on July 2, 1863, at the [[Battle of Gettysburg]]. Lee's biographer, [[Douglas Southall Freeman]], wrote: 'The seeds of much of the disaster at Gettysburg were sown in that instant—when Lee yielded to Longstreet and Longstreet discovered that he would.' ||| Aftermath ||| ||| +0 Second Battle of Bull Run ||| Peninsula Campaign ||| After the collapse of Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] in the [[Seven Days Battles]] of June 1862, [[President of the United States|President]] [[Abraham Lincoln]] appointed John Pope to command the newly formed Army of Virginia. Pope had achieved some success in the [[Western Theater of the American Civil War|Western Theater]], and Lincoln sought a more aggressive general than McClellan. ||| Background and plans ||| ||| +0 Second Battle of Bull Run ||| Seven Days Battles ||| After the collapse of Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] in the [[Seven Days Battles]] of June 1862, [[President of the United States|President]] [[Abraham Lincoln]] appointed John Pope to command the newly formed Army of Virginia. Pope had achieved some success in the [[Western Theater of the American Civil War|Western Theater]], and Lincoln sought a more aggressive general than McClellan. ||| Background and plans ||| ||| +0 Second Battle of El Alamein ||| Battle of Stalingrad ||| Rommel knew full well that the British Commonwealth forces would soon be strong enough to launch an offensive against his army. His only hope now relied on the German forces fighting in the [[Battle of Stalingrad]] to quickly defeat the Soviet forces and moving south through the [[Caucasus|Trans-Caucasus]] and threatening Iran (Persia) and the Middle East. This would require large numbers of British Commonwealth forces to be sent from the Egyptian front to reinforce British forces in Iran, leading to the postponement of any offensive against his army. Using this delay, Rommel hoped to convince the German High Command to reinforce his forces for the eventual link-up between ''Panzer'' Army Africa and the German armies battling their way through southern Russia, enabling them to finally defeat the British and Commonwealth armies in North Africa and the Middle East. ||| Prelude ||| Axis plan ||| +0 Second Battle of El Alamein ||| Eastern Front (World War II) ||| With the failure of their offensive at Alam el Halfa, the Axis forces were now on the defensive, but losses had not been excessive. The German and Italian supply lines were over-stretched and had been relying on captured Allied supplies and equipment that had long since been consumed. Rommel had been advised by both the German and Italian staffs that his army could not be properly supplied so far from the ports of Tripoli and Benghazi. Despite these warnings, Rommel pressed ahead with his advance to Alamein and as predicted, the supply echelons could not deliver the required supplies from the ports to the front. On the other hand, the British Commonwealth forces were being re-supplied with men and materials from the United Kingdom, India, Australia and New Zealand, as well as with trucks and the newly-introduced Sherman tanks from the United States. Rommel continued to request equipment, supplies and fuel, but the main focus of the German war machine was on the [[Eastern Front (World War II)|Eastern Front]], and very limited supplies reached North Africa. ||| Prelude ||| Axis plan ||| +0 Second Battle of Fallujah ||| Vietnam War ||| The battle proved to be the bloodiest of the war and the bloodiest battle involving American troops since the [[Vietnam War]]. Comparisons with the [[Battle of Hue City]] and the [[Pacific War|Pacific campaign]] of [[World War II]] were made. ||| Aftermath ||| ||| +0 Second Battle of Newbury ||| Battle of Cheriton ||| In the early months of 1644, the Parliamentarians had won victories at [[Battle of Cheriton|Cheriton]] in the south of England and [[Battle of Nantwich|Nantwich]] in the northwest. Also, they had secured the allegiance of the Scottish [[Covenanter]]s, who sent an army into the north east. These developments both distracted the Royalists and weakened their forces around [[Oxford]], [[Charles I of England|King Charles's]] wartime capital. ||| Background ||| ||| +0 Second Battle of Rivas ||| First Battle of Rivas ||| The '''Second Battle of Rivas''' occurred on 11 April 1856 between [[Costa Rican]] militia under General Mora and the [[Nicaragua]]n forces of [[William Walker (filibuster)|William Walker]]. The lesser known [[First Battle of Rivas]] took place on 29 June 1855 between Walker's forces and the forces of the Chamorro government of Nicaragua. ||| ||| ||| +0 Second Battle of Sirte ||| Battle of Cape Matapan ||| At dusk, about 19:00, the Italians gave up and turned for home. Without [[radar]], they would have been at a significant disadvantage in a night action, as in the [[Battle of Cape Matapan]]. ||| The battle ||| ||| +0 Second Battle of Târgu Frumos ||| Eastern Front (World War II) ||| Despite German claims that the Soviet attack was a full-fledged offensive, it appears now that the battle of Târgu Frumos was a relatively small-scale operation in the context of 1944's fighting on the [[Eastern Front (World War II)|Eastern Front]], even though a Soviet success would have put the Red Army into a much stronger position for its eventual attack into Romania. ||| Historiography ||| ||| +0 Second Battle of Winchester ||| Battle of Gettysburg ||| The nature of the inquiry was later changed from investigating who disobeyed orders to evacuate Winchester, to the discovery of the events and nature of the retreat from Winchester. Milroy was exonerated and claimed that his brilliant defensive action at Winchester was instrumental in causing the timing of the [[Battle of Gettysburg]], leading to the overall Union victory for the campaign. Despite this, Halleck insisted that Milroy not be given any more commands. ||| Aftermath ||| A division lost, two battalions gained ||| +0 Second Battle of the Aisne ||| Battle of Cambrai (1917) ||| The British prolonged the Arras offensive into mid-May, despite uncertainty about French intentions, high losses and diminishing success, before moving their forces northwards to Flanders. The British captured [[Battle of Messines (1917)|Messines Ridge]] on 7 June and spent the rest of the year on the offensive in the [[Battle of Passchendaele|Third Battle of Ypres]] ({{nowrap|31 July – 10 November}}) and the [[Battle of Cambrai (1917)|Battle of Cambrai]] ({{nowrap|20 November – 8 December}}). The French conducted limited attacks at Verdun in August, which recaptured much of the remaining ground lost in 1916 and at Malmaison in October, which captured the west end of the Chemin des Dames and forced the Germans to withdraw from the ridge to the north bank of [[Ailette (river)|the Ailette]]. French Army morale recovered from the strategic failure of the Nivelle Offensive after Pétain introduced reforms increasing the welfare of French troops; {{nowrap|40–62 mutineers}} were shot as scapegoats. ||| ||| ||| +0 Second Battle of the Isonzo ||| First Battle of the Isonzo ||| After the failure of the [[First Battle of the Isonzo]], two weeks earlier, [[Luigi Cadorna]], commander-in-chief of the Italian forces, decided for a new thrust against the enemy lines with a heavier artillery support. ||| Overview ||| ||| +0 Second Battle of the Somme (1918) ||| Battle of Amiens (1918) ||| On 15 August 1918, [[Douglas Haig, 1st Earl Haig|Field Marshal Douglas Haig]] refused demands from [[Ferdinand Foch|Marshal Ferdinand Foch]] to continue the [[Battle of Amiens (1918)|Amiens offensive]], as that attack was faltering as the troops outran their supplies and artillery, and German reserves were being moved to the sector. Instead, Haig began to plan for an offensive at [[Battle of Albert (1918)|Albert]], which opened on 21 August. The main attack was launched by the [[British Third Army]], with the [[II Corps (United States)|United States II Corps]] attached. ||| Battle ||| ||| +0 Second Battle of the Somme (1918) ||| Hundred Days Offensive ||| *[[Hundred Days Offensive]] (1918) ||| See also ||| ||| +0 Second Boer War ||| Battle of Majuba Hill ||| The Trekkers initially followed the eastern coast towards Natal and then, after Britain annexed the [[Colony of Natal|Natal]] in 1843, journeyed northwards towards the interior. There they established two independent Boer republics: the South African Republic (1852; also known as the Transvaal Republic) and the Orange Free State (1854). The British recognised the two Boer republics in 1852 and 1854, but attempted British annexation of the Transvaal in 1877 led to the [[First Boer War]] in 1880–81. After the British suffered defeats, particularly at the [[Battle of Majuba Hill]] (1881), the independence of the two republics was restored subject to certain conditions; relations, however, remained uneasy. ||| Origins ||| ||| +0 Second Intifada ||| Sabra and Shatila massacre ||| The Palestinians, some 10 days earlier, had just observed their annual memorial day for the [[Sabra and Shatila massacre]]. The [[Kahan Commission]] had concluded that [[Ariel Sharon]], who was Defense Minister during the Sabra and Shatila massacre, was found to bear ''personal responsibility'' {{cite book ||| Timeline ||| 2000 ||| Sharon visits Temple Mount +0 Second Italian War of Independence ||| Crimean War ||| The Piedmontese, following their defeat by Austria in the [[First Italian War of Independence]], recognised their need for allies. This led [[Camillo Benso, conte di Cavour]], the prime minister of the Kingdom of Piedmont-Sardinia, to attempt to establish relations with other European powers, partially through Piedmont's participation in the [[Crimean War]]. In the [[Treaty of Paris (1856)|peace conference]] at [[Paris]] following the Crimean War, Cavour attempted to bring attention to efforts for Italian unification. He found Britain and France to be sympathetic, but entirely unwilling to go against Austrian wishes, as any movement towards Italian independence would necessarily threaten Austria's territory in [[Lombardy]] and [[Venetia (region)|Venetia]]. Private talks between Napoleon III and Cavour after the conference identified Napoleon as the most likely, albeit still uncommitted, candidate for aiding Italy. ||| Background ||| ||| +0 Second Siege of Missolonghi ||| First Siege of Missolonghi ||| After the [[First Siege of Missolonghi|first unsuccessful attempt]] to take the town in 1822, another expedition to western [[Central Greece]] was undertaken by [[Mustafa Reshiti|Mustai Pasha]] of [[Shkoder]]. Mustai proceeded through the city of [[Trikala]] to [[Karpenisi]], where a first Greek attempt to stop his advance resulted in the [[Battle of Karpenisi]]. During this battle, the Ottoman casualties were 1,200 troops, but the Greeks lost their commander, [[Markos Botsaris]]. The second unsuccessful Greek attempt to stop Mustai at Mount Kaliakouda, on 29 August 1823, resulted in 200 Greek casualties. ||| Background ||| ||| +0 Second Siege of Zaragoza ||| First Siege of Zaragoza ||| As a part of the [[Dos de Mayo]] (2 May) uprising the city had already successfully resisted a [[First Siege of Zaragoza|first siege]] from 15 June 1808 to 14 August 1808. This was one of the first times in history that a regular army was defeated by irregulars in street fighting. ||| Historical context ||| ||| +0 Second Sino-Japanese War ||| Battle of Kunlun Pass ||| ** {{Flagdeco|Republic of China (1912–1949)}} [[Battle of Kunlun Pass]] December 1939 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +0 Second Sino-Japanese War ||| Battles of Khalkhin Gol ||| Japan lost a separate local confrontation with the Soviet Union at the [[Battles of Khalkhin Gol]] in May – September 1939. The defeat left the Japanese army reluctant to fight the Soviets again. ||| Foreign support for China ||| Soviet support ||| +0 Second Sino-Japanese War ||| Boxer Rebellion ||| On the night of July 7, 1937, Chinese and Japanese troops exchanged fire in the vicinity of the Lugou (or Marco Polo) bridge, a crucial access-route to Beijing. What began as confused, sporadic skirmishing soon escalated into a full-scale battle in which [[Battle of Beiping–Tianjin|Beijing]] and its port city of Tianjin fell to Japanese forces (July–August 1937). On July 29, some 5,000 troops of the 1st and 2nd Corps of the East Hopei Army mutinied, turning against the Japanese garrison. In addition to Japanese military personnel, some 260 civilians living in Tongzhou in accordance with the [[Boxer Protocol]] of 1901, which was signed after Japan invaded China during the [[Boxer Rebellion]] and engaged in [[Boxer Rebellion#Occupation, looting, and atrocities|atrocities and massacres against civilians]], participated in the uprising (predominantly Japanese including the police force and also some ethnic Koreans). The Chinese then set fire to and destroyed much of the city. Only around 60 Japanese civilians survived, who provided both journalists and later historians with firsthand witness accounts. As a result of the violence of the mutiny against Japanese civilians, the [[Tungchow mutiny]], as it came to be called, strongly shook public opinion within Japan. Most{{quantify|date=May 2015}} historians regard the initial skirmishes at the bridge, known as the [[Marco Polo Bridge Incident]], as the beginning of the Second Sino-Japanese War. ||| Course of the war ||| 1937: Full-scale invasion of China ||| +0 Second Sino-Japanese War ||| Central Plains War ||| In 1930, large-scale [[Central Plains War|civil war]] broke out between warlords who had fought in alliance with the Kuomintang during the Northern Expedition and the central government under Chiang. In addition, the [[Communist Party of China|Chinese Communists]] (CPC, or Communist Party of China) revolted against the central government following a [[Shanghai massacre of 1927|purge of its members]] by the KMT in 1927. The Chinese government diverted much attention into fighting these civil wars, following a policy of 'first internal pacification, then external resistance' ({{zh|c=攘外必先安內|links=no}}). ||| Background ||| Communist Party of China ||| +0 Second Sino-Japanese War ||| Shanghai massacre of 1927 ||| In 1930, large-scale [[Central Plains War|civil war]] broke out between warlords who had fought in alliance with the Kuomintang during the Northern Expedition and the central government under Chiang. In addition, the [[Communist Party of China|Chinese Communists]] (CPC, or Communist Party of China) revolted against the central government following a [[Shanghai massacre of 1927|purge of its members]] by the KMT in 1927. The Chinese government diverted much attention into fighting these civil wars, following a policy of 'first internal pacification, then external resistance' ({{zh|c=攘外必先安內|links=no}}). ||| Background ||| Communist Party of China ||| +0 Segovia Offensive ||| Huesca Offensive ||| In April 1937, the Nationalists started an offensive against the [[Second Spanish Republic|Republican]] held, [[Biscay Campaign|Biscay Province]], and, by the end of May, the Navarrese troops had reached the eastern side of Bilbao's defenses. The Republican government then decided to launch two diversionary offensives on the [[Huesca Offensive|Aragon]] and Madrid fronts in order to divert Nationalist troops. ||| Background ||| ||| +0 Seven Days Battles ||| Battle of Glendale ||| The Seven Days began on Wednesday, June 25, 1862, with a Union attack in the minor [[Battle of Oak Grove]], but McClellan quickly lost the initiative as Lee began a series of attacks at [[Battle of Beaver Dam Creek|Beaver Dam Creek]] ([[Mechanicsville, Virginia|Mechanicsville]]) on June 26, [[Battle of Gaines's Mill|Gaines's Mill]] on June 27, the minor actions at [[Battle of Garnett's & Golding's Farm|Garnett's and Golding's Farm]] on June 27 and 28, and the attack on the Union rear guard at [[Battle of Savage's Station|Savage's Station]] on June 29. McClellan's [[Army of the Potomac]] continued its retreat toward the safety of [[Harrison's Landing]] on the [[James River (Virginia)|James River]]. Lee's final opportunity to intercept the Union Army was at the [[Battle of Glendale]] on June 30, but poorly executed orders allowed his enemy to escape to a strong defensive position on Malvern Hill. At the [[Battle of Malvern Hill]] on July 1, Lee launched futile frontal assaults and suffered heavy casualties in the face of strong infantry and artillery defenses. ||| ||| ||| +0 Seven Days Battles ||| Peninsula Campaign ||| The '''Seven Days Battles''' were a series of six major battles over the seven days from June 25 to July 1, 1862, near [[Richmond, Virginia]], during the [[American Civil War]]. [[Confederate States Army|Confederate]] General [[Robert E. Lee]] drove the invading [[Union Army|Union]] [[Army of the Potomac]], commanded by [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]], away from Richmond and into a retreat down the [[Virginia Peninsula]]. The series of battles is sometimes known erroneously as the '''Seven Days Campaign''', but it was actually the culmination of the [[Peninsula Campaign]], not a separate campaign in its own right. ||| ||| ||| +0 Seven Days Battles ||| Second Battle of Bull Run ||| The Seven Days Battles ended the Peninsula Campaign. The Army of the Potomac encamped around Berkeley Plantation, birthplace of [[William Henry Harrison]]. The Union defensive position was a strong one that Lee did not consider attacking, withdrawing instead to the defenses of Richmond. With its back to the James River, the army was protected by Union gunboats, but suffered heavily from heat, humidity, and disease. In August, they were withdrawn by order of President Lincoln to reinforce the Army of Virginia in the [[Northern Virginia Campaign]] and the [[Second Battle of Bull Run]]. ||| Aftermath ||| ||| +0 Shangani Patrol ||| Battle of Shiroyama ||| |p=v}} For clarity, consistency and ease of reading, this article uses the term 'Matabele' to refer to the people, and calls their language 'Sindebele'.}} Headed by Major [[Allan Wilson (army officer)|Allan Wilson]], the patrol was attacked just north of the [[Shangani River]] in [[Matabeleland]] in [[Rhodesia (name)|Rhodesia]] (today Zimbabwe). Its dramatic [[last stand]], sometimes called 'Wilson's Last Stand', achieved a prominent place in the British public imagination and, subsequently, in Rhodesian history, mirroring events such as the [[Battle of Shiroyama]] in Japan, the [[Battle of the Alamo|Alamo massacre]] in Texas and the ancient Greeks' last stand at [[Battle of Thermopylae|Thermopylae]]. ||| ||| ||| +0 Shangani Patrol ||| Battle of Thermopylae ||| |p=v}} For clarity, consistency and ease of reading, this article uses the term 'Matabele' to refer to the people, and calls their language 'Sindebele'.}} Headed by Major [[Allan Wilson (army officer)|Allan Wilson]], the patrol was attacked just north of the [[Shangani River]] in [[Matabeleland]] in [[Rhodesia (name)|Rhodesia]] (today Zimbabwe). Its dramatic [[last stand]], sometimes called 'Wilson's Last Stand', achieved a prominent place in the British public imagination and, subsequently, in Rhodesian history, mirroring events such as the [[Battle of Shiroyama]] in Japan, the [[Battle of the Alamo|Alamo massacre]] in Texas and the ancient Greeks' last stand at [[Battle of Thermopylae|Thermopylae]]. ||| ||| ||| +0 Siachen conflict ||| Kargil War ||| One of the factors behind the [[Kargil War]] in 1999 when Pakistan sent infiltrators to occupy vacated Indian posts across the [[Line of Control]] was their belief that India would be forced to withdraw from Siachen in exchange of a Pakistani withdrawal from Kargil. Both sides had previously desired to disengage from the costly military outposts but after the Kargil War, India decided to maintain its military outposts on the glacier, wary of further Pakistani incursions into Kashmir if they vacate from the Siachen Glacier posts without an official recognition from Pakistan of the current positions. ||| Kargil War ||| ||| +0 Siege of Acre (1799) ||| French campaign in Egypt and Syria ||| The '''Siege of Acre''' of 1799 was an unsuccessful French [[siege]] of the [[Ottoman Empire|Ottoman]]-defended, walled city of [[Acre, Israel|Acre]] (now Akko in modern [[Israel]]) and was the turning point of [[Napoleon I of France|Napoleon's]] [[French campaign in Egypt and Syria|invasion of Egypt and Syria]]. It was one of Napoleon's few defeats. ||| ||| ||| +0 Siege of Alexandria ||| Battle of Alexandria ||| The battle between the British and French at [[Battle of Alexandria|Canope]] on 21 March 1801 resulted in a French repulse. The French under Menou, disheartened by this failure, retired to Alexandria. With Abercrombie's death, [[John Hely-Hutchinson, 2nd Earl of Donoughmore|John Hely-Hutchinson]] succeeded as commander of the British force in August. He now intended to lay siege to Alexandria and bottle Menou up. ||| Background ||| ||| +0 Siege of Boston ||| Invasion of Canada (1775) ||| In early September, Washington began drawing up plans for two moves: first, to dispatch 1,000 men from Boston and [[Invasion of Canada (1775)|invade Quebec]], and second, to launch an attack on Boston. ||| Siege ||| Stalemate ||| +0 Siege of Brussels ||| Battle of Prestonpans ||| The French were boosted by the fact that a large part of the [[Pragmatic Army|Allied army]] was forced to return to Britain where a [[Jacobite Rising of 1745]] had broken out and [[Bonnie Prince Charlie]] had won a stunning victory at the [[Battle of Prestonpans]]. This left very few troops to actively oppose the French forces. After the French made two breaches in the [[Fortifications of Brussels|walls of Brussels]], the Austrian defenders were compelled to surrender on 22 February in a siege that lasted just three weeks. ||| ||| ||| +0 Siege of Budapest ||| Battle of Berlin ||| With the exception of [[Operation Frühlingserwachen|Operation Spring Awakening]] (''Unternehmen Frühlingserwachen''), which was launched in March 1945, the siege of Budapest was the last major operation on the southern front for the Germans. The siege further depleted the ''Wehrmacht'' and especially the ''Waffen-SS''. For the Soviet troops, the Siege of Budapest was a final rehearsal before the [[Battle of Berlin]]. It also allowed the Soviets to launch the [[Vienna Offensive]]. On 13 April 1945, exactly two months after the Budapest surrender, Vienna fell. ||| Aftermath ||| ||| +0 Siege of Budapest ||| Operation Overlord ||| In October 1944, after successive Allied victories at [[Operation Overlord|Normandy]] and [[Falaise pocket|Falaise]], and after the collapse of the Eastern Front following the stunning success of the Soviet summer offensive, [[Operation Bagration|Bagration]], [[Horthy]] again attempted to negotiate a separate peace with the [[Allies of World War II|Allies]]. Upon hearing of Horthy's efforts, Hitler launched [[Operation Panzerfaust]] to keep Hungary on the Axis side, and forced Horthy to abdicate. Horthy and his government were replaced by 'Hungarist' [[Ferenc Szálasi]], led by the far-right [[Nazism|National Socialist]] [[Arrow Cross Party]]. As the new right-wing government and its German allies prepared the defense of the capital, [[IX SS Mountain Corps]], consisting of two [[Waffen SS]] divisions, was sent to Budapest to strengthen the city's defense. ||| General situation ||| ||| +0 Siege of Cawnpore ||| Anglo-Persian War ||| Nana Sahib decided to use these prisoners for bargaining with the East India Company. The first relief force assembled under Havelock included [[64th (2nd Staffordshire) Regiment of Foot|64th Regiment of Foot]] and [[78th Regiment of Foot|78th Highlanders]] (brought back from the [[Anglo-Persian War]]), the first arrivals of the diverted [[Second Opium War|China expedition]], [[5th Regiment of Foot|5th Fusiliers]], part of the [[90th Regiment of Foot|90th Light Infantry]] (seven companies), the [[84th (York and Lancaster) Regiment of Foot|84th (York and Lancaster)]] from Burma, and EIC Madras European Fusiliers, brought up to [[Calcutta]] from [[Madras]]. {{cite book ||| Bibighar massacre ||| ||| +0 Siege of Ciudad Rodrigo (1810) ||| Battle of Bussaco ||| A defensive battle, the [[Battle of Bussaco]], was fought, which gave the French a bloody nose, before the British and Portuguese fell back on the [[Lines of Torres Vedras]] which were completed as the troops arrived. The lines were designed to enable a successful defence of [[Lisbon]] and avoid a British evacuation of the peninsular, as had happened after the [[Battle of Corunna]] in January 1809. ||| Aftermath ||| ||| +0 Siege of Clonmel ||| Cromwellian conquest of Ireland ||| The '''Siege of Clonmel''' took place in April – May 1650 during the [[Cromwellian conquest of Ireland]] when the town of [[Clonmel]] in [[County Tipperary]] was besieged by [[Oliver Cromwell]]'s [[New Model Army]]. Cromwell's 8,000 men eventually took the town from its 2,000 Irish defenders, but not before they suffered losses of around 2,000 soldiers. Most were killed after being caught in a trap by [[Hugh Dubh O'Neill|Hugh Dubh ('Black Hugh') O'Neill]] on 17 May 1650. ||| ||| ||| +0 Siege of Corfu (1798–99) ||| Action of 18 August 1798 ||| The capitulation agreed between the French and Russians was an honourable one, including a provision for the French troops to be conveyed to Toulon. The remaining French ships in the harbour were taken by the allies, including the ''Leander'' which had been captured from the Royal Navy on [[Action of 18 August 1798|18 August 1798]]; the Russians returned her to the British. ||| Aftermath ||| ||| +0 Siege of Delhi ||| Battle of Badli-ki-Serai ||| On 8 June, they found the mutineers had entrenched themselves outside the city. They drove the large but disorganised rebel force from the field at the [[Battle of Badli-ki-Serai]], {{convert|6|mi|km}} west of Delhi and settled into camp on the high ground {{convert|2|mi|km}} north of Delhi. {{rp|475}} The British had captured Delhi ridge, and the Bengal infantry units' barracks to the west of it. As a gesture of defiance and contempt, they set fire to the barracks. This was a senseless act, as it condemned the besiegers (and all their sick and wounded and noncombatants) to live in tents through the hot weather and [[monsoon]] rain seasons. ||| Company Moves ||| ||| +0 Siege of Derry ||| Glorious Revolution ||| In the '[[Glorious Revolution]]' of 1688, [[James II of England|James II]] (King of England, Ireland and Scotland), a [[Roman Catholic]] convert, was ousted from power by his [[Protestantism|Protestant]] daughter [[Mary II of England|Mary]] and her husband [[William III of England|William of Orange]]. Most of the Irish population were Catholic, and James had given them some real concessions during his reign. He had made an Irish Catholic the [[Lord Deputy of Ireland]] ([[Richard Talbot, 1st Earl of Tyrconnell|Richard Talbot]]), and re-admitted Catholics into the [[Parliament of Ireland|Irish Parliament]], public office, and had replaced Protestant officers with Roman Catholic officers in the army. Irish Catholics also hoped that James would re-grant them their lands, which had been seized after the [[Cromwellian conquest of Ireland]] (1649–53). James thus looked to Ireland to muster support in re-gaining his kingdoms just as his father, Charles I had done in the Civil War of the 1640s. ||| Background ||| ||| +0 Siege of Detroit ||| Battle of Queenston Heights ||| The British gained an important post on American territory and won control over Michigan Territory and the Detroit region for most of the following year. Brock was hailed as a hero, and Tecumseh's influence over the confederation of natives was strengthened. Brock left Colonel Henry Procter in command at Amherstburg and Detroit, and went to the Niagara River, intending to mount a pre-emptive attack into New York State to forestall an American attack across the river. He was thwarted by an armistice arranged by [[George Prevost|Sir George Prevost]]. This ended in September. The Americans attacked in October near [[Queenston, Ontario|Queenston]]. At the ensuing [[Battle of Queenston Heights]], Brock was killed leading a hasty counter-attack to recover a battery which had been captured by the Americans. The American troops in the attack were taken prisoner. A third invasion of Canada took place in November to capture Montreal. After accidentally firing on each other in the dark, they gave up and returned without even crossing the border. 'The whole Canadian campaign had produced nothing but “disaster, defeat, disgrace, and ruin and death,” the Green-Mountain Farmer, a Vermont newspaper, reported in January 1813. ||| Aftermath ||| ||| +0 Siege of Fort St. Jean ||| Battle of Longue-Pointe ||| Allen, who was already renowned for his bravado in the action at Fort Ticonderoga, decided, when he reached Longueuil on September 24, to attempt the capture of Montreal. In the [[Battle of Longue-Pointe]], this effort failed on the next day, with Allen and a number of men captured by the British. ||| Siege begins ||| ||| +0 Siege of Fort Wayne ||| Battle of the Thames ||| The defeats at the [[Battle of Fort Harrison]] and at Fort Wayne caused many Native Americans to lose confidence in their chiefs. Many of them turned instead to the influential leadership of [[Tecumseh]] and joined his confederacy. No major Indian attacks occurred in the [[Indiana Territory]] for the rest of the war, but it was not until Tecumseh's defeat at the [[Battle of the Thames]] that the Indian threat was really eliminated. ||| Aftermath ||| ||| +0 Siege of Fort Wayne ||| Siege of Detroit ||| Since 1811, after the severe defeat at the [[Battle of Tippecanoe]], Native American tribes on the Northwest frontier had been growing bitter at the U.S. presence there. Encouraged by other British/Native American victories at places such as [[Battle of Fort Dearborn|Fort Dearborn]] and [[Siege of Detroit|Detroit]], native tribes began to undertake campaigns against other smaller American outposts. ||| Background ||| ||| +0 Siege of Fredriksten ||| Battle of Dynekilen ||| Charles' troops attempted to take Frederiksten by storm on July 4. His troops took the town after fierce fighting, but the citizens set fire to their own houses, forcing Charles, unable to take the fortress, to retreat and await the arrival of heavy siege guns. Unfortunately for the invading army the entire Swedish transport fleet was captured or destroyed by the Norwegian naval hero [[Tordenskjold]] at the [[Battle of Dynekilen]] in Bohuslen. Running low on supplies, Charles retreated hastily across the [[Svinesund]] and burned the bridges behind him. By July 12, 1716 all Swedish troops had been withdrawn from the area around Fredriksten. ||| Background ||| ||| +0 Siege of Hull (1643) ||| Battle of Marston Moor ||| On 11 October, the Royalists had been defeated at the [[Battle of Winceby]] in Lincolnshire. These two defeats ended Royalist hopes of advancing on London and threw them on the defensive. The Parliamentarians began their advance into Yorkshire that was to culminate with Newcastle being [[siege of York|besieged in York]] and the consequent [[Battle of Marston Moor]]. ||| Aftermath ||| ||| +0 Siege of Hull (1643) ||| Siege of Hull (1642) ||| On 14 September, Fairfax ordered the sluices be opened and the banks of the Humber be broken, as had happened in the [[Siege of Hull (1642)|first siege of Hull]] in 1642. This flooded the surrounding land to a distance of two miles. ||| Siege ||| ||| +0 Siege of Hüningen (1796–97) ||| Battle of Stockach (1799) ||| There were personal victories. After the capitulation, Francis II, the Holy Roman Emperor, appointed Fürstenberg as [[Proprietor (Inhaber)|Colonel and Proprietor]] of the Infantry Regiment Nr. 36, which bore his name until his death in [[Battle of Stockach (1799)|battle]] in 1799. ||| Aftermath ||| ||| +0 Siege of Hüningen (1796–97) ||| Battle of Tourcoing ||| On 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–1798), France ranged itself against most of the European states sharing land or water borders with her, plus Portugal and the Ottoman Empire. Coalition forces achieved several victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], but these were countered by French victories at [[Battle of Tourcoing|Tourcouring (1794)]], [[Siege of Dunkirk (1793)|Dunkirk]], and [[Battle of Haguenau (1793)|Haguenau]]. For the French, the [[Rhine Campaign of 1795]] proved especially disastrous, although they had achieved some success in other theaters of war (see for example, [[War of the Pyrenees|War of the Pyrenees (1793–1795)]]. ||| Background ||| ||| +0 Siege of Kraków (1655) ||| Battle of Wojnicz ||| On September 25, the Swedes attacked [[Kazimierz]], pillaging it after capture. On the same day, they tried to enter Krakow itself, but Polish counterattack forced them to retreat. On the next day, Charles Gustav ordered an artillery barrage, leaving Arvid Wittenberg with 8,000 soldiers. The Swedish king himself headed with a smaller army towards Wojnicz, where he once again defeated the Poles in the [[Battle of Wojnicz]] (October 3). News of this battle quickly reached Krakow, together with Swedish demands for capitulation. Since Polish royal army units, scattered around the city, did not engage themselves in any skirmishes with the Swedes, the defenders of Krakow felt abandoned, without hope of any support. Nevertheless, they continued to fight. ||| The Siege ||| ||| +0 Siege of Kut ||| Battle of Alesia ||| The pursuing Ottoman forces arrived on 7 December 1915. Once it became clear the Ottomans had enough forces to lay siege to Kut, Townshend ordered his cavalry to escape south, which it did, led by [[Gerard Leachman|Lieut. Colonel Gerard Leachman DSO]]. The Ottoman forces numbered around 11,000 men and increasing steadily with additional reinforcements arriving constantly, were commanded by the respected but elderly German general and military historian [[Colmar Freiherr von der Goltz|Baron von der Goltz]]. Goltz knew the Ottoman army well, as he had spent 12 years working on modernizing the Ottoman army from 1883 to 1895. After three attacks in December, Goltz directed the building of siege fortifications facing Kut. Like [[Julius Caesar|Caesar]] at the [[Battle of Alesia|Alesia]],{{OR|date=August 2014}} he prepared for an attack from Basra, using the [[Tigris River]], by building defensive positions further down the river designed to cut off a river-borne relief. ||| The siege ||| ||| +0 Siege of Ladysmith ||| Siege of Mafeking ||| The relief was widely celebrated, followed by much larger celebrations after the [[Siege of Mafeking]]. There were four [[Victoria Cross]]es awarded during the siege, [[John Norwood]] on 30 October 1899. At Wagon Hill on 6 January 1900, [[Herman Albrecht]] and [[Robert James Thomas Digby-Jones]] (who both died), and [[James Edward Ignatius Masterson]]. ||| Aftermath ||| ||| +0 Siege of Leningrad ||| Battle of Stalingrad ||| The 872 days of the siege caused unparalleled famine in the Leningrad region through disruption of utilities, water, energy and food supplies. This resulted in the deaths of up to 1,500,000 [[Piskaryovskoye Memorial Cemetery]] alone in Leningrad holds half a million civilian victims of the siege. Economic destruction and human losses in Leningrad on both sides exceeded those of the [[Battle of Stalingrad]], the [[Battle of Moscow]], or the [[atomic bombings of Hiroshima and Nagasaki]]. The siege of Leningrad is the [[Most lethal battles in world history|most lethal siege in world history]], and some historians speak of the siege operations in terms of [[genocide]], as a 'racially motivated starvation policy' that became an integral part of the unprecedented German war of extermination against populations of the Soviet Union generally. ||| Effect on the city ||| ||| +0 Siege of Leningrad ||| Russian Revolution ||| The capture of Leningrad was one of three strategic goals in the German [[Operation Barbarossa]] and the main target of Army Group North. The strategy was motivated by [[Leningrad]]'s political status as the former capital of [[Russia]] and the symbolic capital of the [[Russian Revolution (1917)|Russian Revolution]], its military importance as a main base of the Soviet [[Baltic Fleet]] and its industrial strength, housing numerous arms factories. ||| Background ||| ||| +0 Siege of Leningrad ||| Winter War ||| By August 1941, the Finns had advanced to within 20 km of the northern suburbs of Leningrad at the 1939 Finnish-Soviet border, threatening the city from the north; they were also advancing through [[East Karelia]], east of Lake Ladoga, and threatening the city from the east. The Finnish forces crossed the pre-[[Winter War]] border on the [[Karelian Isthmus]] by eliminating Soviet [[Salients, re-entrants and pockets|salients]] at Beloostrov and Kirjasalo, thus straightening the frontline so that it ran along the old border near the shores of Gulf of Finland and Lake Ladoga, and those positions closest to Leningrad still lying on the pre-Winter War border. According to Soviet claims, the Finnish advance was stopped in September through resistance by the [[Karelian Fortified Region]]; ||| Establishment ||| Finnish participation ||| +0 Siege of Louisbourg (1758) ||| Battle of Cartagena (1758) ||| As they had in 1757, the French planned to defend Louisbourg by a large naval build-up. However, the French fleet sailing from [[Toulon]] was blockaded in [[Cartagena, Spain|Cartagena]] by a British force, and a relief force was defeated at the [[Battle of Cartagena (1758)|Battle of Cartagena]]. After this the French abandoned their attempt to reinforce Louisbourg from the Mediterranean, meaning there would be few ships available to actively oppose the British off Louisbourg. ||| Background ||| ||| +0 Siege of Lyme Regis ||| Battle of Lostwithiel ||| Maurice retreated to Exeter, while the Earl of Essex continued down into [[Devon]] and [[Cornwall]], after sending Blake to [[Sieges of Taunton|capture Taunton]]. Essex's campaign failed, suffering a total defeat at the [[Battle of Lostwithiel]] in early September 1644. His remaining forces retreated back to Dorset, leaving only Plymouth, Lyme Regis and Taunton under Parliamentarian control in the south-west. ||| Aftermath ||| ||| +0 Siege of Mafeking ||| Jameson Raid ||| Like the British government, the local politicians feared that increased military activity might provoke a Boer attack, so Baden-Powell decided to obtain many of his own stores, organise his own transport and recruit in secret. With barely trained forces and aware of the Boers' greatly superior numbers, [[commando]] tactics and the failure of the earlier [[Jameson Raid]], Baden-Powell decided that the best way to tie down Boer troops would be through defence rather than attack. Consequently, he chose to hold the town of Mafeking due to its location - both near the border and on the railway between [[Bulawayo]] and [[Kimberley, South Africa|Kimberley]] - and because of its status as a local administrative centre. As well, the town had good stocks of food and other necessities. ||| Prelude ||| ||| +0 Siege of Malta (World War II) ||| Operation Pedestal ||| In August, [[Operation Pedestal]] brought vital relief to the besieged island, but at heavy cost. It was attacked from the sea, but also by air. Some 146 Ju 88s, 72 Bf 109s, 16 Ju 87s, 232 Italian fighters, and 139 Italian bombers (a large number being the highly effective torpedo bomber the [[Savoia-Marchetti SM.79]]) took part in the action against the convoy.{{sfn|Spooner|1996|p= 179}} Out of the 14 merchant ships sent, nine were sunk. Moreover, the [[aircraft carrier]] HMS ''Eagle'', one cruiser and three destroyers were sunk by a combined effort from the Italian Navy, ''Kriegsmarine'' and ''Luftwaffe''. Nevertheless, the operation though costly in lives and ships, was vital in bringing in much-needed war materials and supplies.{{sfn|Hogan|1978|p= 140}} British destroyers saved 950 of ''Eagle{{'}}s'' crew.{{sfn|Hogan|1978|p= 142}} The Italian air force had played the central role against the convoy. Indeed, according to Sadkovich and others, to pretend that the air offensive against Malta had been a purely German affair is misleading.{{sfn|Sadkovich|1989|p=48}} According to Sadkovich, 'from 1940 to 1943 the Italians flew 35,724 sorties against the island and the Germans 37,432 – but 31,391 of the ||| Luftwaffe returns (December 1941 – August 1942) ||| Axis target convoys ||| +0 Siege of Multan ||| First Anglo-Sikh War ||| Multan had been captured and incorporated into the [[Sikh Empire]] of [[Ranjit Singh]] in 1818. In 1845, although the population was almost entirely [[Muslim|Moslem]], it was ruled by a [[Hindu]] vassal, [[Dewan Mulraj]]. In that year, the [[First Anglo-Sikh War]] broke out, and was won by the British East India Company. There was an uneasy peace for three years, during which Mulraj attempted to maintain practical independence while being nominally subject to the East India Company. ||| Background ||| ||| +0 Siege of Odessa (1941) ||| Battle of Stalingrad ||| [[Orders, decorations, and medals of the Soviet Union|The Medal]] [[Medal 'For the Defence of Odessa'|'For the Defence of Odessa']] was established on 22 December 1942. Approximately 38,000 people have been awarded (servicemen of the Soviet Army, Navy, Ministry of Internal Affairs, and civil citizens who took part in the defense of Odessa). [[Odessa]] was one of the first four Soviet cities to be awarded the title of '[[Hero City]]' in 1945 (the others being [[Siege of Leningrad|Leningrad]], [[Battle of Stalingrad|Stalingrad]], [[Siege of Sevastopol (1941–42)|Sevastopol]]). ||| Soviet Recognition of the Defenders of Odessa ||| ||| +0 Siege of Odessa (1941) ||| Operation Barbarossa ||| The '''Siege of Odessa''' also known as '''the Defence of Odessa''' was part of the [[Eastern Front (World War II)|Eastern Front]] theatre of [[World War II]] in 1941. The campaign was fought by the [[Axis powers]] of [[Germany]] and [[Romania]] against the Soviet Union for control of [[Odessa]], a port on the [[Black Sea]]. On 22 June 1941 [[Axis powers|the Axis]] invaded the [[Soviet Union]] during [[Operation Barbarossa]]. ||| ||| ||| +0 Siege of Petersburg ||| Battle of Staunton River Bridge ||| On June 25, Wilson and Kautz continued tearing up track south to the Staunton River Bridge at Roanoke Station (modern-day [[Randolph, Virginia|Randolph]]), where they encountered approximately 1,000 'Old Men and Boys' (the Home Guard), commanded by Capt. Benjamin L. Farinholt, dug in with earthworks and prepared artillery positions at the bridge. The [[Battle of Staunton River Bridge]] was a minor affair in which Kautz attempted multiple frontal assaults against the Home Guard, but his men never came closer than {{convert|80|yd|m}}. Lee's cavalry division closed on the Federals from the northeast and skirmished with Wilson's rear guard. Casualties on the Union side amounted to 42 killed, 44 wounded, and 30 missing or captured; Confederate losses were 10 killed and 24 wounded. Kautz's men gave up and retreated to the railroad depot at 9 p.m. Despite these relatively minor losses, the two Union cavalry generals decided to abandon their mission, leaving the Staunton River bridge intact and having inflicted only minor damage on the railroads. ||| Initial attempts to cut the railroads (June 21–30) ||| Wilson-Kautz Raid (June 22 – July 1) {{anchor|Wilson-Kautz}} ||| +0 Siege of Porto Ferrajo ||| Battle of Hohenlinden ||| In 1800, French [[First Consul]] [[Napoleon Bonaparte]] advanced into Italy, achieving victories against the [[Austrian Empire]] at the battles of [[Battle of Marengo|Marengo]] and [[Battle of Hohenlinden|Hohenlinden]]. After a year of warfare, the French and Austrians signed the [[Treaty of Lunéville]] on 9 February 1801, which divided Northern Italy between the states and awarded the [[Grand Duchy of Tuscany]] to the French. ||| Invasion ||| ||| +0 Siege of Savannah ||| Capture of Savannah ||| The '''Siege of Savannah''' or the '''Second Battle of Savannah''' was an encounter of the [[American Revolutionary War]] in 1779. The year before, the city of [[Savannah, Georgia]], had been [[Capture of Savannah|captured]] by a [[Kingdom of Great Britain|British]] expeditionary corps under [[Lieutenant-Colonel]] [[Archibald Campbell (British Army officer)|Archibald Campbell]]. The siege itself consisted of a joint [[Franco-American alliance|Franco-American]] attempt to retake Savannah, from September 16 to October 18, 1779. On October 9 a major assault against the British siege works failed. During the attack, Polish nobleman Count [[Casimir Pułaski]], leading the combined [[cavalry]] forces on the American side, was mortally wounded. With the failure of the joint American-French attack, the [[siege]] failed, and the British remained in control of Savannah until July 1782, near the end of the war. ||| ||| ||| +0 Siege of Sloviansk ||| 2014 Ukrainian revolution ||| On 12 April 2014, as [[2014 pro-Russian unrest in Ukraine|unrest grew in eastern Ukraine]] following the [[2014 Ukrainian revolution]], masked men in [[Battledress|fatigues]], armed with [[Kalashnikov rifle|Kalashnikov assault rifle]]s, captured the city administration building. As tensions in the city increased, the insurgents began to take [[journalist]]s and others captive, instigating a [[Hostage|hostage crisis]]. The [[Security Service of Ukraine]] said on 18 April that 'Sloviansk remains the hottest point in the region'. ||| ||| ||| +0 Siege of Surakarta ||| General Offensive of 1 March 1949 ||| The '''Siege of Surakarta''' (7 August 1949) was a campaign of the [[Indonesian National Revolution]]. The Indonesian Republican forces ([[Military of Indonesia|TNI]]) briefly infiltrated the city of [[Surakarta]] (also known as Solo) before being repulsed by Dutch special forces [[Korps Speciale Troepen|(RST)]]. Despite the defeat, the battle, together with [[General Offensive of 1 March 1949|an earlier attack on Yogyakarta]] provided a morale boost for the Indonesians. ||| ||| ||| +0 Siege of Tripoli ||| Third Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Turin ||| Battle of Ramillies ||| The '''Siege of Turin''' (14 May-7 September 1706) was undertaken by [[Philippe II, Duke of Orléans]] and [[Maréchal de camp|General]] [[Louis d'Aubusson de la Feuillade]] against the [[Duchy of Savoy|Savoyard]] city of [[Turin]] during the [[War of the Spanish Succession]]. The [[French Royal Army (1652–1830)|French Royal Army]] was unable to break down Turin's defences or obtain the city's surrender. The besiegers were attacked on 7 September by a [[Habsburg Austria]]n relief column under [[Prince Eugene of Savoy]] and [[Victor Amadeus II of Sardinia|Victor Amadeus, Duke of Savoy]] and routed at the '''Battle of the Stura'''. The siege of Turin was broken and the withdrawal of French forces from northern [[Italy]] began. Coupled with its twin disaster in [[Flanders]]&mdash;the destruction of a French army at the [[Battle of Ramillies]]&mdash;Turin marked 1706 as the ''[[annus horribilis]]'' for [[Louis XIV of France]]. ||| ||| ||| +0 Siege of Vicksburg ||| Battle of Fort Donelson ||| On July 3, Pemberton sent a note to Grant, who, as at [[Battle of Fort Donelson|Fort Donelson]], first demanded [[unconditional surrender]]. But Grant reconsidered, not wanting to feed 30,000 hungry Confederates in Union prison camps, and offered to [[Prisoners of war parole|parole]] all prisoners. Considering their destitute state, dejected and starving, he never expected them to fight again; he hoped they would carry home the stigma of defeat to the rest of the Confederacy. In any event, it would have occupied his army and taken months to ship that many prisoners north. ||| Surrender and aftermath ||| ||| +0 Siege of Vienna ||| Battle of Vienna ||| The '''Siege of Vienna''' in 1529 was the first attempt by the [[Ottoman Empire]], led by [[Suleiman the Magnificent]], to capture the city of [[Vienna]], Austria. The siege signalled the pinnacle of the Ottoman Empire's power and the maximum extent of [[Ottoman wars in Europe|Ottoman expansion in central Europe]]. Thereafter, 150 years of bitter military tension and reciprocal attacks ensued, culminating in the [[Battle of Vienna]] of 1683, which marked the start of the 15-year-long [[Great Turkish War]]. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Aleppo (1918) ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Sharon ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Capture of Damascus (1918) ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Imperial War Cabinet ||| Qualified approval from the Supreme War Council for a decisive offensive to annihilate Ottoman armies and crush resistance was contained in Joint Note No. 12. It was claimed that the destruction of the Ottoman Empire 'would have far-reaching results upon the general military situation.' Early in February 1918 General [[Jan Christiaan Smuts]] (a member of the [[Imperial War Cabinet]]) was sent to confer with Allenby regarding the implementation of the Joint Note. ||| Winter 1917–1918 ||| Westerners versus Easterners ||| +0 Sinai and Palestine Campaign ||| Third Battle of Gaza ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Western Front (World War I) ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sino-Vietnamese War ||| Fall of Saigon ||| The United States played an ever-increasing role in supporting South Vietnam through the period. The U.S. had supported French forces in the First Indochina War, sent supplies and military advisers to South Vietnam throughout the 1950s and early 1960s, and eventually took over most of the fighting against both North Vietnam and the Viet Cong by the mid-1960s. By 1968, over 500,000 American troops were involved in the Vietnam War. Due to a lack of clear military success and facing [[Opposition to United States involvement in the Vietnam War|increasingly strident opposition]] to the war in the U.S., American forces began a slow withdrawal in 1969 while attempting to [[Vietnamization|bolster South Vietnam's military]] so that they could take over the fighting. In accordance with the [[Paris Peace Accords]] by 29 March 1973 all U.S. combat forces had left South Vietnam, however North Vietnamese combat forces were allowed to remain in place. North Vietnam [[1975 Spring Offensive|attacked South Vietnam]] in early 1975 and [[Fall of Saigon|South Vietnam fell]] on 30 April 1975. ||| Background ||| Vietnam War ||| +0 Sino-Vietnamese War ||| Sino-Soviet border conflict ||| In response to China's attack, the Soviet Union sent several naval vessels and initiated an arms airlift to Vietnam. However the Soviet Union felt that there was simply no way that they could directly support Vietnam against China; the distances were too great to be an effective ally, and any sort of reinforcements would have to cross territory controlled by China or U.S. allies. The only realistic option would be to restart the [[Sino-Soviet border conflict|unresolved border conflict with China]]. Vietnam was important to Soviet policy but not enough for the Soviets to go to war over. When Moscow did not intervene, Beijing publicly proclaimed that the Soviet Union had broken its numerous promises to assist Vietnam. ||| Course of the war ||| Chinese withdrawal ||| +0 Slovakia Summit 2005 ||| Iraq War ||| Topics of discussion at the summit are partly private, but included [[Politics of Russia|Russian democracy]] (this was the main topic at the subsequent press conference), the situation in [[Iran]], the [[North Korea and weapons of mass destruction|North Korean nuclear talks]] and other international topics. One of the objects of the summit activities was to improve relations between the U.S. and Europe. Notably, Slovakia is an ally of the U.S. in the [[Iraq War]] and contributed troops to the [[Coalition of the willing]]. ||| The summit ||| ||| +0 Smiling Buddha ||| Indo-Pakistani War of 1971 ||| India continued to harbour ambivalent feelings about nuclear weapons, and accorded low priority to their production until the [[Indo-Pakistani War of 1971]]. In December 1971, [[Richard Nixon]] sent a [[carrier battle group]] led by the {{ship|USS|Enterprise|CVN-65}} into the [[Bay of Bengal]] in an attempt to intimidate India. The Soviet Union responded by sending a submarine armed with nuclear missiles from Vladivostok to trail the US task force. The Soviet response demonstrated the [[Deterrence theory|deterrent value]] and significance of nuclear weapons and [[ballistic missile]] submarines to Indira Gandhi. ||| History ||| Secrecy and test preparations, 1972–74 ||| +0 Snake War ||| American Civil War ||| In August 1854, Native attacks on several pioneer trains along the [[Snake River]] culminated in the [[Ward Massacre]] on August 20, 1854, in which Native Americans killed 21 people. The following year, the US Army mounted the punitive [[Winnas Expedition]]. From 1858 at the end of the [[Spokane-Coeur d'Alene-Paloos War]], the US Army protected the migration to Oregon by sending out escorts each spring. Natives continued to attack migrant trains, especially stragglers such as the Myers party, killed in the [[Salmon Falls Massacre]] of September 13, 1860. As Federal troops withdrew in 1861 to return east for engagements of the [[American Civil War]], California Volunteers provided protection to the emigrants. Later the Volunteer Regiment of Washington and the [[1st Oregon Cavalry]] replaced Army escorts on the emigrant trails. ||| Background ||| ||| +0 Snake War ||| Apache Wars ||| The Snake War was not defined by one large battle but was a series of [[guerrilla]] skirmishes by the Indians, and American patrols from many small camps, taking place across California, Utah, Nevada, Oregon, and Idaho. Unlike other Indian Wars, the Snake War lacked notable leaders on either side. Probably the most well-known Indian leader was Pahninee aka [[Chief Paulina]] and the most well-known U.S. Army commander in the Snake War may have been [[George Crook]]. He later led operations in the [[Apache Wars]]. He also played a significant role for the Union in the Civil War. Many of the U.S. troops fighting in the beginning of the war were volunteer regiments from the states of Oregon and California. ||| About the war ||| ||| +0 South African Border War ||| Operation Uric ||| This [[list of operations of the South African Border War]] details the various military operations conducted by the SADF during the conflict, many of which involved incursions into Angola. Additionally, the SADF provided covert assistance to the [[Rhodesian Security Forces]] for raids conducted against [[ZANLA]] and [[ZANU]] bases in Angola and Mozambique ([[Operation Uric]] and [[Operation Vanity]]). ||| Military operations ||| ||| +0 South-East Asian theatre of World War II ||| Battle of Hong Kong ||| The Allies suffered many disastrous defeats in the first six months of the war. Two major British warships, [[HMS Repulse (1916)|HMS ''Repulse'']] and [[HMS Prince of Wales (53)|HMS ''Prince of Wales'']] were [[Sinking of Prince of Wales and Repulse|sunk by a Japanese air attack]] off [[British Malaya|Malaya]] on 10 December 1941. Following the [[Japanese Invasion of Thailand|invasion]], the government of [[Thailand]] formally allied itself with Japan on 21 December. Japan invaded Hong Kong in the [[Battle of Hong Kong]] on 8 December, culminating in surrender on 25 December. January saw the invasions of [[Burma]] and the [[Dutch East Indies]] and the capture of [[Manila]] and [[Kuala Lumpur]]. ||| Initial Japanese successes ||| ||| +0 South-East Asian theatre of World War II ||| Easter Sunday Raid ||| Qualification: For operations against Japanese aircraft and naval units by squadrons based in Ceylon during the Japanese attacks of [[Easter Sunday Raid|April 1942]]. ||| Air war in South East Asia ||| ||| +0 South-East Asian theatre of World War II ||| Operation Overlord ||| It was only after the war in Europe was clearly coming to an end that large British forces were dispatched to the Indian Ocean again. Following the neutralisation of the German fleet in late 1943 and early 1944, forces from the [[Home Fleet]] were released, and the success of [[Operation Overlord]] in June meant even more craft could be sent, including precious amphibious assault shipping. ||| Indian Ocean naval campaigns 1942–45 ||| ||| +0 Spanish–American War ||| Battle of Santiago de Cuba ||| Although the main issue was Cuban independence, the ten-week war was fought in both the Caribbean and the Pacific. US naval power proved decisive, allowing expeditionary forces to disembark in Cuba against a Spanish garrison already brought to its knees by nationwide Cuban insurgent attacks and further wasted by [[yellow fever]]. With two obsolete Spanish squadrons sunk in [[Battle of Santiago de Cuba|Santiago de Cuba]] and [[Battle of Manila Bay|Manila Bay]] and a third, more modern fleet recalled home to protect the Spanish coasts, Madrid [[Suing for peace|sued for peace]].<ref name='108–109'>{{harvnb|Dyal|1996| ||| ||| ||| +0 Spring Offensive ||| Hindenburg Line ||| By late April 1918, the danger of a German breakthrough had passed. The German Army had suffered heavy casualties and now occupied ground of dubious value which would prove impossible to hold with such depleted units. In August 1918, the Allies began a counter-offensive with the support of 1–2 million fresh American troops and using new artillery techniques and operational methods. This [[Hundred Days Offensive]] resulted in the Germans retreating or being driven from all of the ground taken in the Spring Offensive, the collapse of the [[Hindenburg Line]] and the capitulation of the [[German Empire]] that November. ||| ||| ||| +0 Spring Offensive ||| Hundred Days Offensive ||| By late April 1918, the danger of a German breakthrough had passed. The German Army had suffered heavy casualties and now occupied ground of dubious value which would prove impossible to hold with such depleted units. In August 1918, the Allies began a counter-offensive with the support of 1–2 million fresh American troops and using new artillery techniques and operational methods. This [[Hundred Days Offensive]] resulted in the Germans retreating or being driven from all of the ground taken in the Spring Offensive, the collapse of the [[Hindenburg Line]] and the capitulation of the [[German Empire]] that November. ||| ||| ||| +0 St. John River Campaign ||| Siege of Louisbourg (1758) ||| After the [[Siege of Louisbourg (1758)]], the second wave of the [[Expulsion of the Acadians]] began with the [[Ile Saint-Jean Campaign]] (campaign against present-day [[Prince Edward Island]]), and the removal of Acadians from Ile Royale ([[Cape Breton Island|Cape Breton, Nova Scotia]]). As a result, Acadians fled these areas for the villages along the banks of the Saint John River, including the largest communities at Grimrose (present day Gagetown, New Brunswick) and Sainte-Anne des Pays-Bas. ||| Historical context ||| ||| +0 Strategic bombing during World War II ||| Operation Downfall ||| While the bombing campaign against Japan continued, the U.S. and its allies were preparing to [[Operation Downfall|invade the Japanese home islands]], which they anticipated to be heavily costly in terms of life and property. On 1 April 1945, U.S. troops [[Battle of Okinawa|invaded the island of Okinawa]] and fought there fiercely against not only enemy soldiers, but also enemy civilians who were willing to or forced to fight the American invaders. After two and a half months of fierce fighting, 12,000 U.S. servicemen, 107,000 Japanese soldiers, and at least 150,000 Okinawan civilians were killed. Given the casualty rate in Okinawa, American commanders realized the true grisly picture of what would have happened if hundreds of thousands of its men stormed the Japanese home islands and penetrating though Japanese heavy defenses by fighting house-to-house, cave-to-cave, setting up trenches in unsaturated areas to defend against Japanese attacks, etc. When President [[Harry Truman]] was briefed on what would have happened during the invasion of Japan, he could not afford such a horrendous casualty rate, let alone the fact that over 400,000 U.S. servicemen died fighting in both the European and Pacific theaters of the war. ||| Asia ||| United States bombing of Japan ||| Nuclear bombing +0 Strategic bombing during World War II ||| Rotterdam Blitz ||| The Germans used the threat of bombing Rotterdam to try to get the Dutch to come to terms and surrender. After a second ultimatum had been issued by the Germans, it appeared their effort had failed and on 14 May 1940, ''[[Luftwaffe]]'' bombers were ordered to [[Rotterdam Blitz|bomb Rotterdam]] in an effort to force the capitulation of the besieged city. ||| Europe ||| Early war in Europe ||| The Western Front, 1939 to June 1940 +0 Subtropical Storm Andrea (2007) ||| Juno Beach ||| In Florida, waves of over 10 feet (3 m) in height capsized a boat near [[Lantana, Florida|Lantana]]; the two occupants were rescued without injury. Additionally, the waves displaced a sailboat that had previously been washed ashore in [[Juno Beach, Florida|Juno Beach]]. Large waves flooded a parking lot and destroyed several fences and tree branches at [[Jupiter, Florida|Jupiter Beach]], which resulted in its temporary closure; nearby a maintenance shed was destroyed. Eight [[Leatherback sea turtle|Leatherback Sea Turtle]] nests in [[Boca Raton, Florida|Boca Raton]] were destroyed after the surf reached the dunes. One death occurred when a surfer drowned in the rough waves off the coast at [[New Smyrna Beach, Florida|New Smyrna Beach]] in [[Volusia County, Florida|Volusia County]]. {{cite news|author=CNN Staff Writer|year=2007|title=Atlantic's first named storm whips up wildfires ||| Impact ||| Florida ||| +0 Sunflower Student Movement ||| 2014 Ukrainian revolution ||| Polish media group Niezalezna — which owns several print and online news outlets in Poland, including the daily ''[[Gazeta Polska Codziennie]]'', the weekly ''[[Gazeta Polska]]'' and the monthly ''Nowe Panstwo'' — received a letter from the [[Taipei Economic and Cultural Representative Office|Taipei Economic and Cultural Bureau]] in Poland, protesting its use of an analogy between the occupation of the Executive Yuan compound by protesters and the consequent violent crackdown by police and the [[2014 Ukrainian revolution|occupation]] of the central square, Maidan, in the Ukrainian capital, Kiev, by protesters who were also treated brutally by the police. Hanna Shen, the journalist who wrote the story and other reports about the movement, expressed shock about receiving the letter: ||| Reactions ||| International response ||| +0 Super Bowl IV ||| Battle of New Orleans ||| [[Trumpet]]ers [[Al Hirt]] and [[Doc Severinsen]] 'faced off' during the pregame show in a 'Battle of the Horns'. A planned hot-air balloon race fizzled when the balloon marked NFL and carrying a 'Viking' lifted off prematurely, failed to gain altitude, and crashed into the stands in the end zone. The [[Apollo XII]] astronauts were given a special presentation by [[John Mackey (American football)|John Mackey]], president of the NFL Players Association, and then Severinsen, backed by the [[Southern University]] Marching Band, played the national anthem, which was also recited by actor [[Pat O'Brien (actor)|Pat O'Brien]]. Actress and singer [[Carol Channing]] was featured during a halftime show that paid tribute to [[Mardi Gras]] in New Orleans and was titled 'Way Down Yonder'. The Southern Marching Band was also featured during the halftime show, playing 'Get Ready' and several New Orleans jazz standards with Hirt and [[Lionel Hampton]]. The band also did a dance routine to 'Rampart Street', and performed the background music to a [[Battle of New Orleans]] recreation. ||| Television and entertainment ||| ||| +0 Swedish Intervention in the Winter War ||| Battle of Salla (1939) ||| The Swedish Intervention in the Winter War was a short-lived but successful attempt by the [[Swedish Volunteer Corps (Winter War)|Swedish Volunteer Corps]], along with other [[Nordic countries|Nordic]] volunteers, to prevent a Soviet invasion of Finland during the [[Winter War]]. The volunteers only engaged in a few skirmishes on ground and in the air, the only major battles they participated in being the battles of [[Battle of Salla (1939)|Salla]] and [[Battle of Honkaniemi|Honkaniemi]]. The term 'volunteers' have often been used to describe the Nordic military support for Finland in the Winter War, although involvement by the government of Sweden has been debated over time. Nevertheless, the Swedish military sent enormous amounts of aid to Finland, including: ||| ||| ||| +0 Syrian Civil War spillover in Lebanon ||| Cedar Revolution ||| Since the [[Cedar Revolution]] in 2005 and the withdrawal of the [[Syrian occupation of Lebanon|occupying Syrian forces]] from the country, the Lebanese political spectrum has been divided between the anti-Syrian government March 14 alliance and the pro-Syrian government March 8 alliance. ||| Background ||| ||| +0 Taganrog during World War II ||| Eastern Front (World War II) ||| In the summer months of 1941, the 'Taganrog Instrumental Factory named after J. Stalin' began production of artillery shells. In the spring of 1941, the [[Beriev|State Aviation Factory no.31]] began producing the brand-new fighters [[Lavochkin-Gorbunov-Goudkov LaGG-3|LAGG-3]], later increasing the number of planes assembled to at least 6 airplanes per day following the opening of the [[Eastern Front (World War II)|Eastern Front]]. The 'Taganrog factory named after Molotov' ('Krasny Gidropress') produced mines and spare parts for tanks. ||| Defense of Taganrog ||| ||| +0 Taliban insurgency ||| War in North-West Pakistan ||| The '''Taliban insurgency''' began shortly after the group's fall from power following the [[War in Afghanistan (2001–14)|2001 War in Afghanistan]]. The [[Taliban]] forces are fighting against the [[Presidency of Hamid Karzai|Afghan government]], led by [[President of Afghanistan|President]] [[Hamid Karzai]], and against the [[United States Armed Forces|US]]-led [[International Security Assistance Force]] (ISAF). The insurgency has spread to some degree over the [[Durand Line]] border to neighboring [[Pakistan]], in particular the [[War in North-West Pakistan|Waziristan]] region and [[Khyber Pakhtunkhwa]]. The Taliban conduct low-intensity warfare against civilians, the [[Afghan National Security Forces]] and their NATO trainers. Regional countries, particularly Pakistan and [[Iran]], are often accused of funding and supporting the insurgent groups. ||| ||| ||| +0 Tallinn Offensive ||| Battle of Narva (1944) ||| Attacks by [[Leningrad Front]] had pushed [[Army Group North]] west of [[Lake Peipus]], resulting in a series of [[Battle of Narva (1944)|operations around Narva]]. ||| Background ||| Prelude ||| +0 Task Force Baum ||| Battle of the Bulge ||| Originally, all of the Oflag camp's occupants were [[Serbs|Serb]] officers. The camp was later split into sections of American officers on one side and Serbs in the other. Most of the American portion of the camp was hastily upgraded in January 1945 after an influx of POWs from the [[Battle of the Bulge]], which began 16 December of the previous year. ||| Camp Hammelburg ||| ||| +0 Tehran Conference ||| Battle of Stalingrad ||| Before the Tripartite Dinner Meeting of 29 November 1943 at the Conference, Churchill presented Stalin with a specially commissioned ceremonial sword (the '[[Sword of Stalingrad]]', made in [[Sheffield]]), as a gift from King [[George VI]] to the citizens of Stalingrad and the Soviet people, commemorating [[Battle of Stalingrad|the Soviet victory at Stalingrad]]. When Stalin received the sheathed sword, he took it with both hands, kissed the scabbard, and handed it to [[Marshal]] [[Kliment Voroshilov]], who mishandled it, causing the sword to fall to the ground.<ref name='Beevor-Stalingrad'> ||| Proceedings ||| Dinner meeting ||| +0 Tehran Conference ||| Operation Overlord ||| The U.S. and Great Britain wanted to secure the cooperation of the Soviet Union in defeating Germany. Stalin agreed, but at a price: the U.S. and Britain would accept Soviet domination of eastern Europe, support the [[Yugoslav Partisans]], and agree to a westward shift of the border between [[Poland]] and the Soviet Union. The leaders then turned to the conditions under which the Western Allies would open a new front by invading northern France ([[Operation Overlord]]), as Stalin had pressed them to do since 1941. Up to this point Churchill had advocated the expansion of joint operations of British, American, and [[British Commonwealth|Commonwealth]] forces in the Mediterranean, as Overlord in 1943 was physically impossible due to a lack of shipping, which left the Mediterranean and Italy as viable goals for 1943. It was agreed Overlord would occur by May 1944; Stalin agreed to support it by launching a concurrent major offensive on Germany's eastern front to divert German forces from northern France. ||| Proceedings ||| Main conference ||| +0 Ten Days' Campaign ||| November Uprising ||| For the Belgians all seemed lost. Fearing the total disintegration of the army, Leopold called for international support on 8 August. [[Sylvain Van de Weyer]] was sent to attempt to solicit support from [[United Kingdom|Great Britain]] while [[François Lehon]] was sent to [[July Monarchy|France]].{{sfn|Witte|2010|p=86}} Although the British government was reluctant to send troops to support Belgium, the French immediately dispatched a force without informing the other [[Great Powers]].{{sfn|Witte|2010|p=87}} The movement of French troops into Belgium particularly worried the British, who felt that it could represent a threat to the [[Balance of power (international relations)|European balance of power]].{{sfn|Witte|2010|p=87}} The French army under Marshal [[Étienne Maurice Gérard|Étienne Gérard]] crossed the border the next day. The Dutch had taken a risk by invading Belgium without the support of its allies; Russia had wanted to assist but was having trouble suppressing the [[November Uprising|Polish revolution]], and Prussia would not risk sending troops without Russia being able to secure its western borders;{{sfn|Pirenne|1948|pp=32-4}} now they faced a possible war with the French. After an intervention by the British, the Dutch halted their advance and a ceasefire was signed on 12 August. The last Dutch troops returned to the Netherlands around 20 August, whilst only Antwerp remained occupied. ||| The military campaign ||| ||| +0 Tenth Battle of the Isonzo ||| Eleventh Battle of the Isonzo ||| Casualties continued to be high: 157,000 Italian losses were sustained, with a further 75,000 Austro-Hungarian casualties. With morale in the Italian army plunging Cadorna planned one further breakthrough attempt as he massed the greatest number of divisions and artillery yet along the [[Soča]] (Isonzo) river. Accordingly the [[Eleventh Battle of the Isonzo]] was initiated some two months later on 19 August 1917. ||| The offensive ||| ||| +0 Thanh Hóa Bridge ||| Operation Rolling Thunder ||| With the beginning of [[Operation Rolling Thunder]] (the bombing campaign against strategic targets in North Vietnam), the decision was made in March 1965 to interdict the North Vietnamese rail system, including the Thanh Hóa bridge. The Vietnamese, realizing the importance of the bridge, had set up an impressive air defense network, stationing five air defense regiments in the area. ||| Operation Rolling Thunder ||| ||| +0 The Barricades ||| Chernobyl disaster ||| During [[World War II]] Latvia had been occupied by USSR. In 1985, [[Mikhail Gorbachev]] introduced [[glasnost]] and [[perestroika]] policies, hoping to salvage the failing Soviet economy. The reforms also lessened restrictions on [[Freedom (political)|political freedom]] in the Soviet Union. This led to [[unintended consequence]]s as problems within the Soviet Union and crimes of the Soviet regime, previously kept secret and denied by the government, were exposed, causing public dissatisfaction, further deepened by the [[Soviet war in Afghanistan (1979–1989)|war in Afghanistan]] and the [[Chernobyl disaster]]. Another unintended consequence of Glasnost for the Soviet central authorities was the long-supressed nationalist sentiments that were released in the [[Soviet Republics|republics of the Soviet Union]]. ||| Background ||| ||| +0 The Barricades ||| World War II ||| During [[World War II]] Latvia had been occupied by USSR. In 1985, [[Mikhail Gorbachev]] introduced [[glasnost]] and [[perestroika]] policies, hoping to salvage the failing Soviet economy. The reforms also lessened restrictions on [[Freedom (political)|political freedom]] in the Soviet Union. This led to [[unintended consequence]]s as problems within the Soviet Union and crimes of the Soviet regime, previously kept secret and denied by the government, were exposed, causing public dissatisfaction, further deepened by the [[Soviet war in Afghanistan (1979–1989)|war in Afghanistan]] and the [[Chernobyl disaster]]. Another unintended consequence of Glasnost for the Soviet central authorities was the long-supressed nationalist sentiments that were released in the [[Soviet Republics|republics of the Soviet Union]]. ||| Background ||| ||| +0 The Blitz ||| Battle of Britain Day ||| It was decided to focus on bombing Britain's industrial cities in daylight to begin with. The main focus of the bombing operations was against the city of London. The first major raid in this regard took place on 7 September. On 15 September, on a date known as the [[Battle of Britain Day]], a large-scale raid was launched in daylight, but suffered significant loss for no lasting gain. Although there were a few large air battles fought in daylight later in the month and into October, the Luftwaffe switched its main effort to night attacks in order to reduce losses. This became official policy on 7 October. The air campaign soon got underway against London and other British cities. However, the Luftwaffe faced limitations. Its aircraft—[[Dornier Do 17]], [[Junkers Ju 88]], and [[Heinkel He 111]]s—were capable of carrying out strategic missions, ||| Background ||| Change in strategy ||| +0 Third Battle of Gaza ||| Sinai and Palestine Campaign ||| The '''Third Battle of Gaza''' was fought on the night of 1/2 November 1917 between British and Ottoman forces during the [[Sinai and Palestine Campaign]] of [[World War I]], and came after the [[Egyptian Expeditionary Force]] (EEF) victory at the [[Battle of Beersheba (1917)|Battle of Beersheba]] had ended the [[Stalemate in Southern Palestine]]. The fighting occurred at the beginning of the [[Southern Palestine Offensive]], and together with [[Battle of Hareira and Sheria|attacks on Hareira and Sheria]] on 6–7 November and the continuing [[Battle of Tel el Khuweilfe]] which had been launched by General [[Edmund Allenby]] on 1 November, it eventually broke the [[Gaza City|Gaza]] to [[Beersheba]] line defended by the [[Yildirim Army Group]]. Despite having held this line since March 1917, the [[Ottoman Army]] was forced to evacuate Gaza and Tel el Khuweilfe during the night of 6/7 November. Only Sheria held out for most of the 7 November before it too was captured. ||| ||| ||| +0 Third Battle of Winchester ||| Battle of Cedar Creek ||| The battle marked a turning point in the Shenandoah Valley in favor of the [[Union (American Civil War)|North]]. Early's army for the most part remained intact but suffered further defeats at [[Battle of Fisher's Hill|Fisher's Hill]] and [[Battle of Tom's Brook|Tom's Brook]]. Exactly a month later, the Valley Campaigns came to a close after Early's defeat at the [[Battle of Cedar Creek]]. Victory in the Valley, along with other Union victories in the fall of 1864, helped win re-election for [[Abraham Lincoln]]. ||| Aftermath ||| ||| +0 Third Battle of Winchester ||| World War II ||| The battle was particularly damaging due to the number of casualties among key commanders. In the Union army, Brig. Gen. [[David Allen Russell|David A. Russell]] was killed and Brig. Gens. [[Emory Upton]], [[George H. Chapman]], and [[John B. McIntosh]] were seriously wounded. Confederate Maj. Gen. [[Robert E. Rodes]] was killed and Maj. Gen. [[Fitzhugh Lee]], Brig. Gens. [[William Terry (congressman)|William Terry]], [[Archibald Godwin]], and Col. [[William Wharton (general)|William Wharton]] were wounded. Also among the Confederate dead was Col. [[George S. Patton, Sr]]. His grandson and namesake would become the famous U.S. general of [[World War II]], [[George S. Patton]], Jr. ||| Aftermath ||| ||| +0 Third Battle of the Aisne ||| Nivelle Offensive ||| The Germans had held the Chemin des Dames Ridge from the [[First Battle of the Aisne]] in September 1914 to 1917, when General [[Charles Mangin|Mangin]] captured it during the [[Second Battle of the Aisne]] (in the [[Nivelle Offensive]]). ||| Background ||| ||| +0 Third Battle of the Aisne ||| Second Battle of the Aisne ||| The Germans had held the Chemin des Dames Ridge from the [[First Battle of the Aisne]] in September 1914 to 1917, when General [[Charles Mangin|Mangin]] captured it during the [[Second Battle of the Aisne]] (in the [[Nivelle Offensive]]). ||| Background ||| ||| +0 Tondern raid ||| Battle of Taranto ||| The German Naval Airship Division quickly had the double hangar Toska repaired, but Tondern was abandoned as an active base, and ordered to be used only as an emergency landing site. Defences at the other bases were improved and at [[Nordholz]] a swathe of the countryside near [[Nordholz Naval Airbase|the local airbase]] was burned off so as to prevent it being set alight by enemy bombs. The British conducted no other carrier raids during the war but other raids were being planned. From 1917 onwards a raid on the German High Seas Fleet was being mooted using the new torpedo-carrying [[Sopwith Cuckoo]]. The Cuckoo was not available in sufficient numbers until early 1919 and the project was still-born. The concept was revived during the Second World War and eventually resulted in the successful [[Battle of Taranto|raid on the Italian port of Taranto]] in 1940. ||| Aftermath ||| ||| +0 Tyrolean Rebellion ||| Battle of Wagram ||| The Tyroleans celebrated the news that Napoleon had suffered his first defeat at the [[Battle of Aspern-Essling]] on May 22. Nevertheless, after the French again gained the upper hand at the [[Battle of Wagram]] on July 5/6, [[Archduke Charles of Austria]] signed the [[Armistice of Znaim]] whereafter the Austrian forces withdraw from Tyrol. Thus, the rebels, who had their strongholds in Southern Tyrol, were left fighting alone. They however were able to inflict several defeats to the French and Bavarians forces under Marshal Lefebvre in July, culminating in a complete French retreat after the [[Battles of Bergisel|Third Battle of Bergisel]] on August 12/13. Hofer now took over the administration of the unoccupied territories at Innsbruck; large parts of Tyrol enjoyed a brief period of independence. ||| The war of the Fifth Coalition and outbreak and course of the rebellion ||| ||| +0 UC Davis pepper-spray incident ||| Occupy Wall Street ||| [[Occupy Wall Street]] (OWS) began on September 17, 2011, in New York City's [[Zuccotti Park]] in the [[Wall Street]] financial district with protests focused on social and [[economic inequality]], high unemployment, greed, as well as corruption, and the undue influence of corporations—particularly that of the [[financial services]] sector—on government. The protesters' slogan, ''[[We are the 99%]]'', refers to the growing [[income inequality in the United States|difference in wealth]] in the U.S. between the wealthiest 1% and the rest of the population. The protests grew into a world-wide movement known as the [[Occupy movement]] and make use of a variety of [[civil disobedience]] tactics. [[Occupy Cal]] grew out of this movement as a series of protests at [[UC Berkeley]]. ||| Background ||| ||| +0 USS Panay incident ||| Battle of Nanking ||| The three Standard Oil tankers were also bombed and destroyed, and the captain of ''Mei An'' and many Chinese civilian passengers were killed. The vessels had been helping to evacuate the families of Standard Oil's employees and agents from Nanking during the [[Battle of Nanking|Japanese attack on that city]]. ||| Incident ||| ||| +0 Ukrainian War of Independence ||| Brusilov Offensive ||| During the [[First World War]] Ukraine was in the front lines of the main combatants: the [[Triple Entente|Entente]]-allied [[Russian Empire]] and [[Romania during World War I|Romania]], and the [[Central Powers]] of the [[German Empire]] and [[Austria-Hungary]]. By the start of 1917 – after the [[Brusilov Offensive]] – the [[Imperial Russian Army]] held a front line which partially reclaimed [[Volhynia]] and eastern [[Galicia (eastern Europe)|Galicia]]. ||| Background ||| ||| +0 Ukrainian War of Independence ||| Kerensky Offensive ||| The [[February Revolution]] of 1917 encouraged many ethnic groups in the Russian Empire to demand greater autonomy and various degrees of [[self-determination]]. A month later, the [[Ukrainian People's Republic]] was declared in [[Kiev]] as an autonomous entity with close ties to the [[Russian Provisional Government]], and governed by a [[socialist]]-dominated [[Central Council of Ukraine|Tsentralna Rada]] ('Central Council'). The weak and ineffective Provisional Government in [[Petrograd]] continued its loyalty to the entente and the increasingly unpopular war, launching the [[Kerensky Offensive]] in the summer of 1917. This Offensive was a complete disaster for the [[Imperial Russian Army]]. The German counter-attack caused Russia to lose all their gains of 1916, as well as destroy the [[morale]] of its army, which caused the near-complete disintegration of the armed forces and the governing apparatus all over the vast Empire. Many deserting soldiers and officers – particularly ethnic Ukrainians – had lost faith in the future of the Empire, and found the increasingly self-determinant Central Rada a much more favourable alternative. [[Nestor Makhno]] began his [[Anarchist Manifesto|anarchist activity]] in the south of Ukraine by disarming deserting Russian soldiers and officers who crossed the [[Gaychur River]] next to [[Huliaipole|Gulyai Pole]], while in the east in the industrial [[Donets Basin]] there were frequent strikes by [[Bolshevik]]-infiltrated [[trade union]]s. ||| Background ||| ||| +0 Ulm Campaign ||| French Revolutionary Wars ||| Europe had been by then embroiled in the [[French Revolutionary Wars]] since 1792. After five years of war, the [[French First Republic|French Republic]] subdued the [[First Coalition]] in 1797. A [[Second Coalition]] was formed in 1798 but this too was defeated by 1801. [[United Kingdom of Great Britain and Ireland|Britain]] remained the only opponent for the new [[French Consulate]]. In March 1802, France and Britain agreed to end hostilities under the [[Treaty of Amiens]]. For the first time in ten years, all of Europe was at peace. There were many problems between the two sides and implementing the agreements they had reached at Amiens seemed to be a growing challenge. Britain resented having to turn over all colonial conquests since 1793 and France was angry that British troops had not evacuated the island of [[Malta]]. In May 1803, Britain declared war on France. ||| Prelude ||| ||| +0 Ulm Campaign ||| War of the Fourth Coalition ||| The victory at Ulm did not end the war, since a large Russian army under [[Mikhail Illarionovich Kutuzov|Kutuzov]] was still near [[Vienna]]. The Russians withdrew to the northeast to await reinforcements and to link up with surviving Austrian units. The French followed and captured Vienna on November 12. On December 2, the decisive French victory at [[Battle of Austerlitz|Austerlitz]] removed Austria from the war. The resulting [[Treaty of Pressburg (1805)|Treaty of Pressburg]] in late December brought the Third Coalition to an end and left Napoleonic France as the major power in Central Europe, leading to the [[War of the Fourth Coalition]] with [[Kingdom of Prussia|Prussia]] and Russia the following year. ||| ||| ||| +0 Union blockade ||| Battle of Port Royal ||| In the initial phase of the blockade, Union forces concentrated on the Atlantic Coast. The November 1861 [[Battle of Port Royal|capture of Port Royal]] in South Carolina provided the Federals with an open ocean port and repair and maintenance facilities in good operating condition. It became an early base of operations for further expansion of the blockade along the Atlantic coastline, ||| Operations ||| Scope ||| +0 United States Senate elections, 2006 ||| Iraq War ||| [[Lawyer]] and [[Iraq War]] [[veteran]] [[Paul Hackett (politician)|Paul Hackett]], who [[Ohio second congressional district election, 2005|narrowly lost]] to [[Jean Schmidt]] in the 2nd congressional district on August 2, 2005, said in October 2005 he would seek the Democratic nomination to challenge DeWine. Rep. [[Sherrod Brown]] announced his candidacy that same month. Hackett withdrew from the race on February 14, 2006. Both DeWine and Brown won their primaries easily. An October 12 Rasmussen Reports poll had Brown leading DeWine 46% to 41%. ||| Partial list of races ||| Ohio ||| +0 United States presidential election, 1800 ||| Quasi-War ||| The '''United States presidential election of 1800''' was the 4th quadrennial [[United States presidential election|presidential election]]. It was held from Friday, October 31 to Wednesday, December 3, 1800. In what is sometimes referred to as the ''''Revolution of 1800''',' Vice President [[Thomas Jefferson]] defeated President [[John Adams]]. The election was a [[realigning election]] that ushered in a generation of [[Democratic-Republican Party (United States)|Democratic-Republican Party]] rule and the eventual demise of the [[United States Federalist Party|Federalist Party]] in the [[First Party System]]. It was a long, bitter re-match of the 1796 election between the pro-French and pro-decentralization Democratic-Republicans under Jefferson and [[Aaron Burr]], against incumbent Adams and Charles Pinckney's pro-British and pro-centralization Federalists. The chief political issues included opposition to the tax imposed by Congress to pay for the mobilization of the new army and the navy in the [[Quasi-War]] against France in 1798, and the [[Alien and Sedition Acts]], by which Federalists were trying to stifle dissent, especially by Democratic-Republican newspaper editors. ||| ||| ||| +0 United States presidential election, 1824 ||| Battle of New Orleans ||| Since no candidate received a majority of the electoral votes, the presidential election was thrown into the [[United States House of Representatives|U.S. House of Representatives]]. Following the provisions of the [[Twelfth Amendment to the United States Constitution|Twelfth Amendment]], only the top three candidates in the electoral vote were admitted as candidates in the House: Andrew Jackson, John Quincy Adams, and William Harris Crawford. Henry Clay, who happened to be [[Speaker of the United States House of Representatives|Speaker of the House]] at the time, was left out. Clay detested Jackson and had said of him, 'I cannot believe that [[Battle of New Orleans|killing 2,500 Englishmen at New Orleans]] qualifies for the various, difficult, and complicated duties of the Chief Magistracy.' with 13 states, followed by Jackson with 7, and Crawford with 4. ||| 1825 Contingent election ||| ||| +0 United States presidential election, 1864 ||| Battle of Cold Harbor ||| For much of 1864, Lincoln himself believed he had little chance of being re-elected. Confederate forces had triumphed at the [[Battle of Mansfield]], the [[Battle of the Crater]], and the [[Battle of Cold Harbor]]. In addition, the war was continuing to take a very high toll in terms of casualties. The prospect of a long and bloody war started to make the idea of 'peace at all cost' offered by the [[Copperheads (politics)|Copperheads]] look more desirable. Because of this, McClellan was thought to be a heavy favorite to win the election. Unfortunately for Lincoln, Frémont's campaign got off to a good start. ||| General election ||| ||| +0 Upper Canada Rebellion ||| Patriot War ||| The '''Upper Canada Rebellion''' was an insurrection against the [[Oligarchy|oligarchic]] government of the British colony of [[Upper Canada]] (present day [[Ontario]]) in December 1837. While public grievances had existed for years, it was the [[Lower Canada Rebellion|Rebellion]] in [[Lower Canada]] (present day [[Quebec]]) that emboldened rebels in Upper Canada to openly revolt soon after. The Upper Canada Rebellion was largely defeated shortly after it began, although resistance lingered until 1838 (and became more violent) - mainly through the support of the [[Hunters' Lodges]], a secret anti-British, US-based militia that emerged around the [[Great Lakes]]. They launched the [[Patriot War]] in 1838-39. The rebellion led directly to [[John Lambton, 1st Earl of Durham|Lord Durham]]'s [[Report on the Affairs of British North America]] and to ''[[Act of Union 1840|The British North America Act, 1840]]'' which partially reformed the British provinces into a unitary system. Some historians argue that the rebellions in 1837 should be viewed in the wider context of the late 18th and early 19th century [[Atlantic Revolutions|Atlantic revolutions]]. The [[American Revolutionary war]] in 1776, the [[French Revolution]] of 1789–1799, the [[Haitian Revolution]] of 1791-1804, the [[Irish Rebellion of 1798]], and the independence struggles of Spanish America (1810–1825) were inspired by similar democratic ideals, although they were tinged with [[republicanism]] as well. Great Britain's [[Chartism|Chartists]] sought similar democratic goals. ||| ||| ||| +0 Upper Canada Rebellion ||| War of 1812 ||| Both before and after the [[War of 1812]], the government of Upper Canada continued to fear what it suspected might be a growing interest in American-inspired republicanism in the province. Reasons for this can be found in the pattern of settlement across the province over the previous half-century. Although the British had originally hoped that an orderly settlement in Upper Canada would inspire the former American colonies to abandon their [[republic]]an ||| Issues ||| Political issues ||| The alien question +0 Utah Beach ||| Battle of Cherbourg ||| The 4th Infantry Division landed 21,000 troops on Utah at the cost of only 197 casualties. Airborne troops arriving by parachute and glider numbered an additional 14,000 men, with 2,500 casualties. Around 750 men were lost in engineering units, 70th Tank Battalion, and seaborne vessels sunk by the enemy. German losses are unknown. [[Battle of Cherbourg|Cherbourg was captured]] on June 26, but by this time the Germans had destroyed the port facilities, which were not brought back into full operation until September. ||| ||| ||| +0 Vasylkiv terrorists case ||| 2014 Ukrainian revolution ||| Following the [[2014 Ukrainian revolution]], on February 24 they were released. ||| ||| ||| +0 Vistula–Oder Offensive ||| Operation Bagration ||| In the wake of the successful [[Operation Bagration]], the [[1st Belorussian Front]] managed to secure two [[bridgehead]]s west of the Vistula river between 27 July and 4 August 1944. ||| Background ||| ||| +0 Volcano and Ryukyu Islands campaign ||| Battle of Iwo Jima ||| The campaign took place in the [[Bonin Islands|Volcano]] and [[Ryukyu Islands|Ryukyu]] island groups. The two main land battles in the campaign were the [[Battle of Iwo Jima]] (February 16-March 26, 1945) and the [[Battle of Okinawa]] (April 1-June 21, 1945). One major naval battle occurred, called [[Operation Ten-Go]] (April 7, 1945) after the operational title given to it by the Japanese. ||| ||| ||| +0 Vyborg–Petrozavodsk Offensive ||| Battle of Ilomantsi ||| The psychological effect of the offensive on the Finnish leadership should not be underestimated. Even though the Finns had stopped the offensive at the Karelian Isthmus after 100 km and the [[Battle of Ilomantsi]] had shown that the Finnish army was still a viable fighting force, At the same time western allies had already made their crucial breakthrough in Normandy and driving fast to west. ||| Aftermath ||| ||| +0 Vyborg–Petrozavodsk Offensive ||| Battle of Vuosalmi ||| The offensive continued on June 25, when the Red Army breached the [[VKT-line]] at Tali, between the [[Vyborg Bay|Viborg Bay]] and the [[Vuoksi river]]. On June 26 the Finnish president [[Risto Ryti|Ryti]] [[Ryti-Ribbentrop Agreement|gave the guarantee]] to Ribbentrop that Finland would fight to the end alongside with Germany. When it became evident that a breakthrough was not possible at Ihantala, the Leningrad Front attempted to double envelope the defenders with the twin assaults at the [[Battle of Vyborg Bay (1944)|Viborg Bay]] and [[Battle of Vuosalmi|Vuosalmi]]. However, the Finnish army was able to hold its positions on these sectors of the front. On July 12 Stavka ordered Leningrad front to release offensive elements from the Finnish front, and on July 15, the Red Army troops were ordered to assume a defensive posture, and offensive elements (mostly armor) were transferred to the German front for use in [[Operation Bagration]]. ||| Virojoki-Lappeenranta Offensive ||| ||| +0 Vyborg–Petrozavodsk Offensive ||| Battle of Vyborg Bay (1944) ||| The offensive continued on June 25, when the Red Army breached the [[VKT-line]] at Tali, between the [[Vyborg Bay|Viborg Bay]] and the [[Vuoksi river]]. On June 26 the Finnish president [[Risto Ryti|Ryti]] [[Ryti-Ribbentrop Agreement|gave the guarantee]] to Ribbentrop that Finland would fight to the end alongside with Germany. When it became evident that a breakthrough was not possible at Ihantala, the Leningrad Front attempted to double envelope the defenders with the twin assaults at the [[Battle of Vyborg Bay (1944)|Viborg Bay]] and [[Battle of Vuosalmi|Vuosalmi]]. However, the Finnish army was able to hold its positions on these sectors of the front. On July 12 Stavka ordered Leningrad front to release offensive elements from the Finnish front, and on July 15, the Red Army troops were ordered to assume a defensive posture, and offensive elements (mostly armor) were transferred to the German front for use in [[Operation Bagration]]. ||| Virojoki-Lappeenranta Offensive ||| ||| +0 Vyborg–Petrozavodsk Offensive ||| Eastern Front (World War II) ||| The '''Vyborg–Petrozavodsk Offensive''' or '''Karelian offensive'''{{#tag:ref|Finnish historiography uses titles ''Kesän 1944 suurhyökkäys'' (literally ''Summer 1944 Great Offensive'') or ''Kesän 1944 torjuntataistelut'' (literally ''Summer 1944 Defensive Battles'').|group='Notes'}} was a strategic operation by the [[Soviet Union|Soviet]] [[Leningrad Front|Leningrad]] and [[Karelian Front]]s against Finland on the [[Karelian Isthmus]] and [[East Karelia]] fronts of the [[Continuation War]], on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]]. The Soviet forces captured East Karelia and [[Vyborg|Viborg]].{{clarify|why is a Swedish language name given priority when the municipality was unilingually Finnish speaking?|date=January 2013}} After that, however, the fighting reached a stalemate. ||| ||| ||| +0 Walcheren Campaign ||| Peninsular War ||| The '''Walcheren Campaign''' was an unsuccessful British expedition to the [[Netherlands]] in 1809 intended to open another front in the [[Austrian Empire]]'s struggle with [[First French Empire|France]] during the [[Fifth Coalition|War of the Fifth Coalition]]. Around 40,000 soldiers, 15,000 horses together with field artillery and two [[siege train]]s crossed the [[North Sea]] and landed at Walcheren on 30{{nbsp}}July. This was the largest British expedition of that year, larger than the army serving in the [[Peninsular War]] in Portugal. The Walcheren Campaign involved little fighting, but heavy losses from the sickness popularly dubbed [[Walcheren_fever#Napoleonic_Wars|'Walcheren Fever']]. Although more than 4,000 British troops died during the expedition, only died 106 in combat; the survivors withdrew on 9{{nbsp}}December. ||| ||| ||| +0 War in Afghanistan (1978–present) ||| Afghan presidential election, 2009 ||| A [[loya jirga]] (grand assembly) was convened in June 2002 by former King [[Zahir Shah]], who returned from exile after 29 years. Hamid Karzai was elected President for the two years in the jirga, in which the Afghan Interim Authority was also replaced with the Transitional Islamic State of Afghanistan (TISA). A constitutional loya jirga was held in December 2003, adopting the new [[Constitution of Afghanistan|2004 constitution]], with a presidential form of government and a bicameral legislature. Karzai was elected in the [[Afghan presidential election, 2004|2004 presidential election]] followed by winning a second term in the [[Afghan presidential election, 2009|2009 presidential election]]. Both the [[Afghan parliamentary election, 2005|2005]] and the [[Afghan parliamentary election, 2010|2010 parliamentary election]]s were also successful. ||| Islamic Republic and NATO ||| ||| +0 War in Afghanistan (1978–present) ||| Operation Enduring Freedom ||| Following the [[September 11 attacks]] inside the United States in 2001, [[2001-present war in Afghanistan|NATO intervened in Afghanistan]] under [[Operation Enduring Freedom]]. The purpose of this was to defeat [[Al-Qaeda]], to remove the Taliban from power, and to create a viable democratic state. ||| ||| ||| +0 War in Afghanistan (1978–present) ||| Vietnam War ||| The [[Government of the Soviet Union|Soviet government]] realized that a military solution to the conflict would require far more troops. Because of this they discussed troop withdrawals and searched for a political and peaceful solution as early as 1980, but they never took any serious steps in that direction until 1988. Early Soviet military reports confirm the difficulties the Soviet army had while fighting on the mountainous terrain, for which the Soviet army had no training whatsoever. Parallels with the [[Vietnam War]] were frequently referred to by Soviet army officers. ||| Rise and fall of communism ||| Soviet intervention and withdrawal ||| +0 War in Afghanistan (2001–14) ||| Battle of Chora ||| During the summer, NATO forces achieved tactical victories at the [[Battle of Chora]] in Orūzgān, where Dutch and [[Australian Army#Current deployments|Australian]] ISAF forces were deployed. ||| An insurgency gains strength ||| 2007: Coalition offensive ||| +0 War in Afghanistan (2001–14) ||| Operation Falcon Summit ||| Further NATO operations included the [[Battle of Panjwaii]], [[Operation Mountain Fury]] and [[Operation Falcon Summit]]. NATO achieved tactical victories and area denial, but the Taliban were not completely defeated. NATO operations continued into 2007. ||| An insurgency gains strength ||| 2006: Southern Afghanistan ||| +0 War in North-West Pakistan ||| 2009 Lahore police academy attacks ||| In retaliation on 30 March, the militant groups [[2009 Lahore police academy attacks|attacked]] the [[Lahore police academy attack|Police Academy]] in Munawan town, killing and taking hostage police cadets. In an operation led by [[Punjab Police (Pakistan)|Punjab Police]], the units of [[Elite Police]] had managed to retake the academy. Lasting about eight hours, the police suspension ended with 18 people killed in the attack, including eight policemen, eight militants and two civilians deaths. At least, ~95 policemen were wounded and four gunmen were captured by the [[Elite Police]]. ||| Public support and unified military operations ||| Defeat of the militants in Bajaur ||| +0 War in North-West Pakistan ||| Battle of Tora Bora ||| In the aftermath of [[Battle of Tora Bora]] (lit. ''Black Caves''), formal troop deployment was begun by the [[Pakistan Army]], at the behest of the [[Government of Pakistan|Pakistan Government]], in 2002. The [[Islam in Pakistan|conservative parties]], most notably the [[Pakistan Muslim League (N)|Pakistan Muslim League]], Criticism of Musharraf and the United States grew in [[Peshawar]] by a massive [[Mazdoor Kisan Party|communist party]] in 2003, demanding an end to the operations. ||| Background ||| ||| +0 War in Somalia (2006–09) ||| Ogaden War ||| * 1977–1978 [[Ogaden War]] ||| Background ||| Historic background ||| +0 War in Vietnam (1954–59) ||| Korean War ||| Starting in 1952, a more senior officer, [[Lieutenant general (United States)|lieutenant general]] (LTG) [[John W. O'Daniel]], Commanding General, U.S. Army, Pacific (USARPAC), made three fact-finding trips to France, after Marshal [[Jean de Lattre de Tassigny]], dying of cancer, had been replaced by General [[Raoul Salan]] on 1 April 1952, and after General Henri-Eugene Navarre had succeeded General Salan in May of the following year. While he had no effect on French operations, he did build relationships. O'Daniel had been a [[Division (military)|division]] commander during the [[Korean War]], so was not unknown since the French had forces in that war. ||| U.S. missions to Indochina ||| ||| +0 War in the North ||| Battle of El Mazuco ||| The '''War in the North''', in the [[Spanish Civil War]] was the campaign in which the Nationalist forces defeated and occupied the parts of northern [[Spain]] that remained loyal to the [[Second Spanish Republic|Republican]] government. The campaign included several separate battles. The [[Biscay Campaign]] resulted in the loss of the part of the [[Basque Country (autonomous community)|Basque Country]] still held by the Republic and [[Battle of Bilbao|Bilbao]], the greatest Spanish industrial center. This part of the campaign saw the [[Bombing of Guernica]] and [[Durango, Spain|Durango]]. The [[Battle of Santander]] caused the loss of the province of Santander in [[Cantabria]]n [[Old Castile|Castile]] for the Republic. The [[Battle of El Mazuco]] lead to the capture of the Republican-controlled part of [[Asturias]] and the fall of [[Gijón]], the Republic's last stronghold in the North, to the Nationalists. The campaign ended on October 21, 1937 with a decisive and total Nationalist victory. ||| ||| ||| +0 War of Jenkins' Ear ||| Spanish Armada ||| The extreme ease with which the British destroyed Porto Bello led to a change in British plans. Instead of Vernon concentrating his next attack on Havana as expected, in order to conquer Cuba, he planned to attack [[Cartagena de Indias]]. Located in Colombia, it was the main port of the Viceroyalty and main point of the [[Spanish treasure fleet|West Indian fleet]] for sailing to the [[Iberian Peninsula]]. In preparation the British gathered in [[Jamaica]] one of the largest fleets ever assembled. It consisted of 186 ships (60 more than the famous [[Spanish Armada]] of [[Philip II of Spain|Philip II]]), bearing 2,620 artillery pieces and more than 27,000 men. Of that number, 10,000 were soldiers responsible for initiating the assault. There were also 12,600 sailors, 1,000 [[Jamaica]]n slaves and [[macheteros]], and 4,000 recruits from [[Virginia]]. The latter were led by [[Lawrence Washington (1718–1752)|Lawrence Washington]], the older half-brother of [[George Washington]], future President of the United States. ||| Conduct of the War ||| Third attack on Cartagena de Indias (13 March – 20 May 1741) ||| +0 War of Jenkins' Ear ||| War of the Spanish Succession ||| At the conclusion of the [[War of the Spanish Succession]], the [[Treaty of Utrecht]] in 1713 gave Britain a thirty-year [[asiento]], or contract-right, to supply an unlimited number of slaves to the Spanish colonies, and 500 tons of goods per year. This provided British traders and smugglers potential inroads into the (traditionally) closed markets in Spanish America. But Britain and Spain were often at war during this period, fighting one another in the [[War of the Quadruple Alliance]] (1718–20), the [[Blockade of Porto Bello]] (1726) and the [[Anglo-Spanish War (1727)|Anglo-Spanish War]] (1727–1729). ||| Background ||| ||| +0 War of the Fifth Coalition ||| Battle of Corunna ||| Unhappy with this change of policy of the Portuguese government, Napoleon sent an army to invade Portugal. On 17 October 1807, 24,000 He then unleashed his troops against [[John Moore (British soldier)|Moore]]'s British forces. The British were swiftly driven to the coast, and, after a last stand at the [[Battle of Corunna]] in January 1809, withdrew from Spain entirely. ||| Background ||| Iberia Peninsula (1807–1809) ||| +0 War of the Fifth Coalition ||| Battle of Trafalgar ||| After the [[War of the Oranges]], Portugal adopted a double policy. On the one hand John, [[John VI of Portugal|Prince of Brazil]], as regent of Portugal, signed the [[Treaty of Badajoz (1801)|Treaty of Badajoz]] with France and Spain by which he assumed the duty to close the ports to British trade. On the other hand, not wanting to breach the [[Treaty of Windsor (1386)]] with Portugal's oldest ally, Britain, he allowed for such trade to continue and maintained secret diplomatic relations with them. However, after the Franco-Spanish defeat in the [[Battle of Trafalgar]], John grew bold and officially resumed diplomatic and trade relations with Britain. ||| Background ||| Iberia Peninsula (1807–1809) ||| +0 War of the Pacific ||| Battle of Hampton Roads ||| Both sides employed late 19th-century military technology such as [[breech-loading]] rifles and cannons, remote-controlled [[land mine]]s, [[armor-piercing]] shells, naval [[torpedoes]], [[torpedo boats]], and purpose-built [[landing craft]]. The second generation of [[ironclad]]s (i.e. designed after the [[Battle of Hampton Roads]]) were employed in battle for the first time. That was significant for a conflict where no major power was involved, and attracted British, French, and U.S. observers. During the war, Peru developed the ''[[Toro Submarino]]'' ('Submarine Bull'). She never saw action, and was scuttled at the end to prevent her capture. ||| Military analysis ||| Technology ||| +0 War of the Second Coalition ||| Saint-Domingue expedition ||| In December 1801, an [[Saint-Domingue expedition|expedition was sent to Saint-Domingue]] to quell [[Haitian Revolution|the revolution that had started there in 1791]] once and for all, but the [[Blockade of Saint-Domingue|blockade of the Caribbean island]] by the British fleet made the sending of reinforcements impossible. ||| The war ||| 1801 ||| +0 War of the Sixth Coalition ||| Battle of Maya ||| The allies chased the retreating French, reaching the Pyrenees in early July. [[Marshal Soult]] was given command of the French forces and began a counter-offensive, dealing the allied generals two sharp defeats at the [[Battle of Maya]] and the [[Battle of Roncesvalles (1813)|Battle of Roncesvalles]]. Yet, he was put again onto the defensive by the [[British army]] and its [[Portuguese Army|Portuguese]] allies, lost momentum, and finally fled after the allied victory at the [[Battle of Sorauren]] (28 and 30 July). ||| Peninsular War ||| ||| +0 War of the Sixth Coalition ||| Battle of the Pyrenees ||| The [[Battle of the Pyrenees]] saw Wellington fighting very far from his supply line and winning by a mixture of manoeuvre, shock and persistent hounding of the French forces. ||| Peninsular War ||| ||| +0 Waterloo Campaign ||| Battle of Occhiobello ||| |9 April||The high point for the Neapolitans as Murat attempted to force a crossing of the River Po. However, he is defeated at the [[Battle of Occhiobello]] and for the remainder of the war, the Neapolitans would be in full retreat. ||| Timeline ||| ||| +0 Waterloo Campaign: Waterloo to Paris (25 June – 1 July) ||| Battle of Waterloo ||| After the their defeat at the [[Battle of Waterloo]] on 18 June 1815, the French [[Army of the North (France)|Army of the North]], under the command of [[Napoleon Bonaparte]] retreated in disarray back towards France. As agreed by the two Seventh Coalition commanders in chief, the [[Duke of Wellington]], commander of the Anglo-allied army, and [[Prince Blücher]], commander of the Prussian army, the French were to be closely pursued by units of the Prussian army. ||| ||| ||| +0 Waterloo Campaign: Waterloo to Paris (2–7 July) ||| Battle of Waterloo ||| After the their defeat at the [[Battle of Waterloo]] on 18 June 1815, the French [[Army of the North (France)|Army of the North]], under the command of [[Napoleon Bonaparte]] retreated in disarray back towards France. As agreed by the two Seventh Coalition commanders in chief, the [[Duke of Wellington]], commander of the Anglo-allied army, and [[Prince Blücher]], commander of the Prussian army, the French were to be closely pursued by units of the Prussian army. ||| ||| ||| +0 Wesley Clark presidential campaign, 2004 ||| Iraq War ||| Clark, coming from a non-political background, had no position papers to define his agenda for the public. Once in the campaign, however, several volunteers established a network of connections with the media, and Clark began to explain his stances on a variety of issues. He was, as he had told ''[[The Washington Post]]'' in October, pro-choice and pro-affirmative action. He called for a repeal of recent Bush [[tax cut]]s for people earning more than $200,000 and suggested providing healthcare for the uninsured by altering the current system rather than transferring to a completely new [[universal health care]] system. He backed environmental causes such as promising to reverse 'scaled down rules' the Bush administration had applied to the [[Clean Air Act (United States)|Clean Air]] and [[Clean Water Act]]s and dealing with [[global warming]] by reducing greenhouse gas emissions. Clark also proposed a global effort to strengthen American relations with other nations, reviewing the [[USA PATRIOT Act|PATRIOT Act]], and investing $100 billion in [[homeland security]]. Finally, he put out a budget plan that claimed to save $2.35 trillion over ten years through a repeal of the [[Bush tax cuts]], sharing the cost of the [[Iraq War]] with other nations, and cutting government waste. ||| Campaign ||| ||| +0 Western New Guinea campaign ||| Battle of Wakde ||| * [[Battle of Wakde]] ||| Major battles and sub-campaigns ||| ||| +0 Western Tai'an Campaign ||| Huaihai Campaign ||| '''Western [[Tai'an]] Campaign''' was a series of battles fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. The communists also refer this campaign as '''Campaign to Move Eastward''' (东进战役), and viewed this campaign as the prelude to [[Huaihai Campaign]]. ||| ||| ||| +0 Williamite War in Ireland ||| Cromwellian conquest of Ireland ||| On 12 March 1689 James landed in [[Kinsale]], Ireland, with 6,000 French soldiers. He first marched on [[Dublin]], where he was well received and, with a Jacobite army of Catholics, Protestant Royalists and French, then marched north, joining the [[Siege of Derry]] on 18 April. James found himself leading a predominantly Irish Catholic movement, and on 7 May he presided over an Irish Parliament composed almost entirely of Catholic gentry. He reluctantly agreed to the Parliament's demand for an Act declaring that the Parliament of England had no right to pass laws for Ireland. He also agreed, again reluctantly, to restore to Irish Catholics the lands confiscated from their families after the [[Cromwellian conquest of Ireland]], by confiscating the lands of those (predominantly Protestants) who opposed him and supported William. This parliament was later named the [[Patriot Parliament]] by Irish nationalists. ||| Campaign in Ulster ||| ||| +0 Winter War ||| Russian Revolution ||| The outbreak of the First World War and the collapse of the Russian Empire during the [[Russian Revolution]] and [[Russian Civil War]] of 1917–1920 gave Finland a window of opportunity; on 6 December 1917, the [[Senate of Finland]] [[Finland's Declaration of Independence|declared the nation's independence]]. The new [[Bolshevik]] Russian government was weak, and with the threat of [[Russian Civil War|civil war]] looming Soviet Russia recognized the new Finnish government just three weeks after the declaration of independence. Sovereignty was fully achieved in May 1918 after a short [[Finnish Civil War|civil war]] and the expulsion of Bolshevik troops. ||| Background ||| Politics of Finland ||| +0 World War II in Yugoslavia ||| Invasion of Yugoslavia ||| On 6 April 1941 the [[Kingdom of Yugoslavia]] was [[Invasion of Yugoslavia|invaded]] from all sides by the Axis powers of Germany, Italy, and [[Hungary during World War II|their ally Hungary]]. ||| 1941 ||| Invasion ||| +0 World War II in Yugoslavia ||| Spanish Civil War ||| At the very beginning, the Partisan forces were relatively small, poorly armed, and without any infrastructure. But they had two major advantages over other military and [[paramilitary]] formations in former Yugoslavia: the first and most immediate advantage was a small but valuable cadre of [[Spanish Civil War]] veterans. Unlike some of the other military and paramilitary formations, these veterans had experience with a modern war fought in circumstances quite similar to those found in World War II Yugoslavia. In Slovenia, the Partisans likewise drew on the experienced [[TIGR]] members to train troops. ||| 1941 ||| Early resistance ||| +0 Xinhai Revolution ||| 2011 Chinese pro-democracy protests ||| Meanwhile, the ideals of democracy are far from realised on the mainland. For example, the Chinese premier [[Wen Jiabao]] once said in a speech that without real democracy, there is no guarantee of economic and political rights; but he led a [[2011 crackdown on dissidents in the People's Republic of China|2011 crackdown]] against the peaceful [[2011 Chinese pro-democracy protests|Chinese jasmine protests]]. ||| Legacy ||| Modern evaluation ||| +0 Xinjiang conflict ||| Nagorno-Karabakh War ||| The [[2015 Bangkok bombing]] is suspected to have been carried out by the [[Pan-Turkism|Pan-Turkic]] neo-fascist [[Turkish nationalism|Turkish ultra-nationalist]] organization [[Grey Wolves (organization)|Grey Wolves]] due to Thailand's deportation of Uyghur terrorist suspects back to China instead of allowing them to travel to Turkey for asylum. A Turkish man named Adem Karadag was arrested by the Thai police in connection to the bombing with Turkish passports. Bomb making materials were found in his apartment. The Grey Wolves are described by the media as a terrorist group and became famous for their assassinations and killings of journalists, liberals, and leftists in Turkey, their member [[Mehmet Ali Ağca]]'s [[Pope John Paul II assassination attempt|assassination attempt on Pope John Paul II]], and their involvement in the [[Nagorno-Karabakh War]] and the [[First Chechen War|Chechen war]] due to the Muslim and Turkic populations of those areas since their aim is the unification of all Muslim Turkic peoples into one state spanning from Central Asia to the Balkans. ||| Timeline ||| 2015 Bangkok bombing ||| +0 Yorktown campaign ||| Siege of Savannah ||| French military planners had to balance competing demands for the 1781 campaign. After a series of unsuccessful attempts at cooperation with the Americans (leading to failed assaults on [[Battle of Rhode Island|Newport, Rhode Island]] and [[Siege of Savannah|Savannah, Georgia]]), they realized more active participation in North America was needed. However, they also needed to coordinate their actions with [[Spain]], where there was potential interest in making an assault on the British stronghold of [[Jamaica]]. It turned out that the Spanish were not interested in operations against Jamaica until after they had dealt with an expected British attempt to reinforce [[Great Siege of Gibraltar|besieged Gibraltar]], and merely wanted to be informed of the movements of the [[West Indies]] fleet. ||| Background ||| French and American planning for 1781 ||| +1 1979 Kurdish rebellion in Iran ||| Kurdish separatism in Iran ||| '''1979 Kurdish rebellion in Iran''' some two months after the completion of the Iranian Revolution, and became the largest among the [[Consolidation of the Iranian Revolution|nationwide uprisings]] in Iran against the new regime and one of the most intense [[Kurdish separatism in Iran|Kurdish rebellions]] in modern Iran. Initially, Kurdish movements were trying to align with the new government of Iran, seeking to emphasize their Muslim identity and seek common grounds with the Shia's. KDPI even briefly branded itself as non-'separatist' organization, allegedly criticizing those calling for independence, but nevertheless calling for political autonomy. The relations however quickly deteriorated between the Kurds and the new Islamic government, and though Shi'a Kurds and some tribal leaders turned towards the new Shi'a Islamic State, Sunni Kurdish leftists continued the nationalist project in their enclave in Kurdistan Province. Denise, N. ''The Kurds And the State: Evolving National Identity in Iraq, Turkey, And Iran'':p.145 2005. Siracuse University Press. 'Instead of creating a cohesive Kurdish nationalist movement, some Kurdish leaders such as Husayni's brother Shaykh Jalal accepted Iraqi military assistance and formed a Sunni militia opposed to the Iranian government and Kurdish nationalist parties. Qasimlu differentiated his real Kurdish nationalist party from traitors within the KDPI. Others, such as the prominent Ghani Bolourian, tried to negotiate with the central government. After the revolution some Shi'a Kurds from Ilam, Kermanshah and West Azerbaijan turned away from Kurdish nationalists and towards non-Kurdish Shi'a communities. Sunni Kurdish leftists continued to direct the nationalist project in their enclave in Kurdistan Province, having marginal influence over Shi'a Kurds in other regions.' ||| ||| ||| +1 1991 Tifariti offensive ||| Western Sahara War ||| '''Operation Rattle''' also known as the '''1991 Tifariti offensive''', was the last military operation in the [[Western Sahara War]] by the [[Royal Moroccan Army]] against the [[Sahrawi people|Sahrawi]] [[guerrilla]] fighters of the [[Polisario Front]], seeking independence for [[Western Sahara]]. A ceasefire (accorded to be in effect from 6 September 1991) had been agreed between the parts on July. During August and the first days of September 1991, the Royal Moroccan Army (RMA) conducted offensive operations in the areas of [[Mehaires]], [[Tifariti]], [[Bir Lahlou]], [[Mijek]] and [[Agwanit]], resulting in multiple Sahrawi civilian casualties, the destruction of Tifariti and Bir Lahlou, poisoning of the wells and subsequently depopulation of the area. ||| ||| ||| +1 1991 Yugoslav campaign in Croatia ||| Croatian War of Independence ||| The '''1991 Yugoslav campaign in Croatia''' was a series of engagements between the [[Yugoslav People's Army]] (JNA), the [[Yugoslav Navy]] and the [[Yugoslav Air Force]], and the [[Croatian National Guard]] (ZNG) then the [[Croatian Army]] (HV) during the [[Croatian War of Independence]]. The JNA was originally deployed in order to preserve [[SFR Yugoslavia|Yugoslavia]], and the initial plan of the campaign entailed the military occupation of Croatia and the removal of the Croatian leadership [[Croatian parliamentary election, 1990|elected in 1990]]. The JNA intervention was the culmination of its involvement in the confiscation of weapons from Croatia's [[Territorial Defense Forces (Yugoslavia)|Territorial Defence]], and in the [[Log revolution|Croatian Serb revolt]] that had begun in August 1990. From that time, the JNA had been frequently deployed to form a buffer zone between the insurgents and the ZNG or the Croatian police. In effect, these JNA buffer zones often secured the territorial gains of the insurgents and led to an increasingly hostile relationship between the JNA and Croatia. The JNA campaign plan was amended shortly before the campaign to include the relief of [[Battle of the Barracks|JNA barracks besieged by the ZNG]]. The besieging and subsequent capture of several JNA facilities allowed Croatia to arm its previously poorly equipped military and to equip new recruits. ||| ||| ||| +1 1991 protest in Split ||| Croatian War of Independence ||| The siege of Kijevo was lifted days after the protest through negotiations and two weeks after the JNA blockaded the village. However, the arrangement proved short-lived as JNA units, again led by Mladić, attacked Kijevo and destroyed a substantial part of the village. The attack began when Croatian forces refused to surrender to Croatian Serb leader [[Milan Martić]]. It was one of the first instances where the JNA openly sided with the insurgent Serbs in the rapidly escalating [[Croatian War of Independence]]. ||| Aftermath ||| ||| +1 2003 invasion of Iraq ||| War on Terror ||| Shortly after 11 September 2001 (on 20 September), Bush addressed a [[Joint session of the United States Congress|joint session of Congress]] (simulcast live to the world), and announced his new '[[War on Terror]]'. This announcement was accompanied by the doctrine of 'pre-emptive' military action, later termed the [[Bush Doctrine]]. Allegations of a connection between Saddam Hussein and al-Qaeda were made by some [[Federal government of the United States|U.S. Government]] officials who asserted that a highly secretive relationship existed between Saddam and the radical [[Islamism|Islamist]] militant organization al-Qaeda from 1992 to 2003, specifically through a series of meetings reportedly involving the [[Iraqi Intelligence Service]] (IIS). Some Bush advisers favored an immediate invasion of Iraq, while others advocated building an international coalition and obtaining United Nations authorization. Bush eventually decided to seek UN authorization, while still reserving the option of invading without it. ||| Prelude to the invasion ||| ||| +1 2010–12 Algerian protests ||| Arab Spring ||| The '''2010–12 Algerian protests''' was a continuing series of protests taking place throughout [[Algeria]], which started on 28 December 2010. They have been inspired by similar [[Arab Spring|protests across the Middle East and North Africa]]. Causes cited by the protestors include [[unemployment]], the lack of housing, food-price [[inflation]], [[Political corruption|corruption]], restrictions on [[freedom of speech]] and poor [[living conditions]]. While localised protests were already commonplace over previous years, extending into December 2010, an unprecedented wave of simultaneous protests and riots, sparked by sudden rises in staple food prices, erupted all over the country starting in January 2011. These were quelled by government measures to lower food prices, but were followed by a wave of [[self-immolation]]s, most of them in front of government buildings. Opposition parties, unions, and human rights organisations then began to hold weekly demonstrations, despite these being illegal without government permission under the ongoing [[state of emergency]]; the government suppressed these demonstrations as far as possible, but in late February yielded to pressure and lifted the state of emergency. Meanwhile, protests by unemployed youth, typically citing unemployment, ''hogra'' (oppression), and infrastructure problems, resumed, occurring almost daily in towns scattered all over the country. ||| ||| ||| +1 2011 southern Israel cross-border attacks ||| Sinai insurgency ||| | partof = [[Sinai insurgency]] and the [[Gaza–Israel conflict]] ||| ||| ||| +1 2011–12 Moroccan protests ||| Arab Spring ||| The '''Moroccan protests''' are a series of demonstrations across [[Morocco]] which occurred from 20 February 2011 to the spring of 2012. They were inspired by [[Arab Spring|other protests in the region]]. The protests were organized by the '''20 February Movement'''. ||| ||| ||| +1 2015 Saint-Denis raid ||| November 2015 Paris attacks ||| Following the [[November 2015 Paris attacks]], French police identified [[Abdelhamid Abaaoud]] as the suspected mastermind of the attacks. After learning that a relative of Abaaoud might be located in Saint-Denis, police organised surveillance of and ultimately an assault on the location. ||| ||| ||| +1 2nd Parachute Brigade in Southern France ||| Operation Dragoon ||| The British [[2nd Parachute Brigade (United Kingdom)|2nd Parachute Brigade]] was part of the [[Operation Rugby]] airborne landings in August 1944. The operation was carried out by an ad hoc airborne formation called the [[1st Airborne Task Force]]. Operation Rugby was itself part of the [[Operation Dragoon]] invasion of Southern France by the American [[United States Army Europe|7th Army]]. The airborne task force, landed in the [[River Argens]] valley with the objective of preventing German reinforcements from reaching the landing beaches. The landings were mainly an American operation and the [[brigade]] was the only [[British Army]] formation involved. ||| ||| ||| +1 6 June 1975 Micalense Farmers' Protest ||| Carnation Revolution ||| The '''6 June 1975 Micalense Farmers' Protest''', or simply the ''6 June'' (as it is known locally), was an organized protest by [[São Miguel Island|Micalense]] farmers, in [[Ponta Delgada]], the capital of the then-[[Ponta Delgada (district)|Autonomous District of the same name]], following the [[Carnation Revolution]]. Inspired by rural property-owners and right-wing factions, the protest forced the resignation of the civil governor and inspired a series of terrorist acts, that ultimately led to the creation of the [[Regional Junta of the Azores]], and the basis of modern Azorean politics. ||| ||| ||| +1 Action of 10 April 1795 ||| French Revolutionary Wars ||| The '''Action of 10 April 1795''' was a minor naval engagement during the [[French Revolutionary Wars]] in which a squadron of [[French Navy]] [[frigates]] was intercepted by a British battle squadron under Rear-Admiral [[John Colpoys]] which formed part of the [[blockade]] of the French naval base of [[Brest, France|Brest]] in [[Brittany]]. The French squadron split up in the face of superior British numbers, the three vessels seeking to divide and outrun the British pursuit. One frigate, [[French frigate Gloire (1778)|''Gloire'']] was followed by the British frigate [[HMS Astraea (1781)|HMS ''Astraea'']] and was ultimately brought to battle in a closely fought engagement. Although the ships were roughly equal in size, the British ship was easily able to defeat the French in an engagement lasting just under an hour. ||| ||| ||| +1 Action of 14 February 1944 ||| World War II ||| The '''Action of 14 February 1944''' refers to the sinking of a [[Nazi Germany|German]] [[U-boat]] off the [[Strait of Malacca]] during [[World War II]] by a [[United Kingdom|British]] [[submarine]]. It was one of the few naval engagements of the [[Pacific War|Asian and Pacific theater]] involving German and [[Italy|Italian]] forces. ||| ||| ||| +1 Action of 18 June 1793 ||| French Revolutionary Wars ||| The '''Action of 18 June 1793''' was the first decisive and one of the most celebrated encounters between British and French [[frigates]] during the [[French Revolutionary Wars]]. The action occurred off [[Start Point, Devon|Start Point]] in Devon, when the British frigate [[HMS Nymphe (1780)|HMS ''Nymphe'']] encountered and chased the French frigate [[French frigate Cléopâtre|''Cléopâtre'']]. During the previous month, ''Cléopâtre'' and another frigate, [[French frigate Sémillante (1792)|''Sémillante'']], had been successfully raiding British merchant shipping in the [[English Channel]] and Eastern Atlantic from their base at [[Cherbourg]]. In response, the British frigates ''Nymphe'' and [[HMS Venus (1758)|HMS ''Venus'']] had been ordered to intercept and defeat the French frigates and on 27 May ''Venus'' and ''Sémillante'' fought an inconclusive engagement off [[Cape Finisterre]]. ||| ||| ||| +1 Action of 21 July 1781 ||| American Revolutionary War ||| The attack took place in the context of the [[Franco-American alliance]] against [[Great Britain]] in the [[American Revolutionary War]]. A possible reason for the French attack was to take back Louisburg, which the British had taken from them in the French and Indian War. ||| Background ||| ||| +1 Action of 22 August 1795 ||| French Revolutionary Wars ||| The '''Action of 22 August 1795''' was a minor naval engagement during the [[French Revolutionary Wars]] between a squadron of four British [[Royal Navy]] [[frigates]] and two frigates and a [[cutter (ship)|cutter]] from the [[Dutch Navy|Navy]] of the [[Batavian Republic]]. The engagement was fought off the [[Norway|Norwegian]] coastal island of [[Eigerøya]], then in [[Denmark-Norway|Danish Norway]], the opposing forces engaged in protecting their respective countries' trade routes to the [[Baltic Sea]]. War between Britain and the Batavian Republic began, undeclared, in the spring of 1795 after the [[Admiralty]] ordered British warships to intercept Batavian shipping following the conquest of the [[Dutch Republic]] by the [[First French Republic|French Republic]] in January 1795. ||| ||| ||| +1 Action of 23 August 1967 ||| Operation Rolling Thunder ||| The '''Action of 23 August 1967''' was a major air battle which involved elements of the [[Vietnam People's Air Force]] (VPAF) and the [[United States Air Force]] (USAF). The air battle took place over the skies of North Vietnam as part of [[Operation Rolling Thunder]], during the [[Vietnam War]]. ||| ||| ||| +1 Action of 5 July 1942 ||| World War II ||| The '''Action of 5 July 1942''' was a naval engagement fought during the [[Aleutian Islands Campaign]] of [[World War II]]. During the action, the [[United States Navy|American]] [[submarine]] {{USS|Growler|SS-215|6}} attacked three [[Imperial Japan|Japanese]] warships anchored off [[Kiska]] island. It was the first action of ''Growler''{{'}}s career and ended with the loss of dozens of Japanese sailors. ||| ||| ||| +1 Action of 9 February 1799 (South Africa) ||| French Revolutionary Wars ||| The '''Action of 9 February 1799''' was a minor naval engagement of the [[French Revolutionary Wars]] between a British [[Royal Navy]] [[frigate]] and a French [[privateer]] frigate fought {{convert|100|nmi|km}} west of the southeastern coast of what is now [[Natal, South Africa|Natal]] in [[South Africa]]. The 32-gun French frigate ''[[French frigate Prudente (1790)|Prudente]]'' had since the start of the war been part of a squadron operating from [[Isle de France (Mauritius)|Île de France]] (now [[Mauritius]]). This squadron had dispersed during 1798, with the ships sent on independent [[commerce raiding]] operations across the British trade routes in the [[Indian Ocean]]. ''Prudente'' had subsequently been seized in the autumn of that year by [[Anne Joseph Hippolyte de Maurès, Comte de Malartic]], the Governor of Île de France, and sold to a private raiding company. ||| ||| ||| +1 Action of the Hohenzollern Redoubt ||| Western Front (World War I) ||| The '''Action of the Hohenzollern Redoubt''' took place 13 – 19 October 1915, towards the end and immediately after the [[Battle of Loos]] (25 September – 15 October 1915), at the [[Hohenzollern Redoubt (fortification)|Hohenzollern Redoubt]] ({{lang|de|''Hohenzollernwerk''}}) near [[Auchy-les-Mines]] in France on the [[Western Front (World War I)|Western Front]] in [[World War I]]. The British [[9th (Scottish) Division|9th Division]] captured this [[strongpoint]] of [[German Army (German Empire)|German forces]] and then lost it to a German counter-attack. The final British assault on 13 October failed and resulted in {{nowrap|3,643 casualties,}} mostly in the first few minutes. In the [[History of the Great War|British Official History]], [[James Edward Edmonds|J. E. Edmonds]] wrote that 'The fighting [from 13–14 October] had not improved the general situation in any way and had brought nothing but useless slaughter of infantry'. ||| ||| ||| +1 Adlertag ||| Western Front (World War II) ||| After the declaration of war on [[Nazi Germany]] by Britain and [[France]] in the aftermath of the German invasion of Poland, nine months of stalemate took place along the [[Western Front (World War II)|Western Front]]. After the [[Polish Campaign]], in October 1939, the planners of the ''[[Oberkommando der Luftwaffe]]'' (''Luftwaffe'' High Command) and the ''[[Oberkommando der Wehrmacht]]'' (Supreme Command of the Armed Forces) turned their attentions to [[Western Europe]]. ||| Background ||| Strategic overview ||| +1 Adlertag ||| World War II ||| Overclaiming in [[aerial warfare]] is not uncommon. During the Battle of Britain (and, indeed, the rest of the [[World War II|Second World War]]), both sides claimed to have shot down and destroyed more enemy aircraft on the ground and in the air than they had in reality. RAF Fighter Command claimed 78 German aircraft shot down on 13 August 1940. Conversely, the ''Luftwaffe'' claimed to have destroyed 70 Hawker Hurricanes and Spitfires in the air and a further 18 Blenheim bombers in the air alone. This was an exaggeration of 700 percent. ||| Aftermath ||| Overclaiming ||| +1 Air Battle of South Korea ||| Korean War ||| The '''Air Battle of South Korea''' was an air campaign early in the [[Korean War]] occurring roughly from June 25 to July 20, 1950 over [[South Korea]] between the air forces of [[North Korea]] and the [[United Nations]], including the countries of South Korea, the [[United States]] and the [[United Kingdom]]. The month-long fight for air supremacy over the country saw several small engagements over airfields in [[Seoul]] and [[Taejon]] and ultimately ended in victory for the UN air force, which was able to destroy the small North [[Korean People's Air Force]]. ||| ||| ||| +1 Air raid on Bari ||| World War II ||| The '''air raid on Bari''' was an air attack by [[Nazi Germany|German]] [[bomber]]s on [[Allies of World War II|Allied]] forces and shipping in [[Bari]], Italy, on 2 December 1943 during [[World War II]]. In the attack, 105 German [[Junkers Ju 88]] bombers of [[Luftflotte 2|''Luftflotte'' 2]], achieving complete surprise, bombed shipping and personnel operating in support of the Allied [[Italian Campaign (World War II)|Italian campaign]], sinking 27 cargo and transport ships and a [[schooner]] in Bari harbour. ||| ||| ||| +1 Al-Qaeda insurgency in Yemen ||| War on Terror ||| The '''al-Qaeda insurgency in Yemen''' refers to the armed conflict between the [[Yemeni government]] with [[United States]] assistance, and [[al-Qaeda]]-affiliated cells. The strife is often categorized as a sub-conflict in the greater [[War on Terror|Global War on Terror]]. ||| ||| ||| +1 Aleutian Islands Campaign ||| Pacific War ||| The '''Aleutian Islands Campaign''' was a struggle over the [[Aleutian Islands]], part of the [[Alaska Territory]], in the [[American Theater (World War II)|American theater]] and the [[Pacific War|Pacific theater]] of [[World War II]] starting on 3 June 1942. A small [[Japan]]ese force occupied the islands of [[Attu Island|Attu]] and [[Kiska]], but the remoteness of the islands and the difficulties of weather and terrain meant that it took nearly a year for a far larger U.S./Canadian force to eject them. The islands' strategic value was their ability to control Pacific [[Great circle|Great Circle]] routes. This control of the Pacific transportation routes is why [[U.S. General]] [[Billy Mitchell]] stated to the [[U.S. Congress]] in 1935, 'I believe that in the future, whoever holds Alaska will hold the world. I think it is the most important strategic place in the world.' The Japanese reasoned that control of the Aleutians would prevent a possible U.S. attack across the Northern Pacific. Similarly, the U.S. feared that the islands would be used as bases from which to launch aerial assaults against the [[West Coast of the United States|West Coast]]. ||| ||| ||| +1 Ambush of Geary ||| American Revolutionary War ||| The '''Ambush of Geary''' was a skirmish of the [[American Revolutionary War]] fought on 14 December 1776 near [[Ringoes]] in [[Amwell Township, New Jersey|Amwell Township]], [[Hunterdon County, New Jersey]]. [[Cornet (military rank)|Cornet]] Francis Geary, the leader of a company of dragoons, was shot in an ambush set up by local militiamen. ||| ||| ||| +1 Atlantic raid of June 1796 ||| French Revolutionary Wars ||| The '''Atlantic raid of June 1796''' was a short campaign containing three connected minor naval engagements fought in the [[Western Approaches]] comprising [[Royal Navy]] efforts to eliminate a squadron of French [[frigates]] operating against British commerce during the [[French Revolutionary Wars]]. Although Royal Navy dominance in the Western Atlantic had been established, French commerce raiders operating on short cruises were having a damaging effect on British trade, and British frigate squadrons regularly patrolled from [[Cork (city)|Cork]] in search of the raiders. One such squadron comprised the 36-gun frigates [[HMS Unicorn (1794)|HMS ''Unicorn'']] and [[HMS Santa Margarita (1779)|HMS ''Santa Margarita'']], patrolling in the vicinity of the [[Scilly Isles]], which encountered a French squadron comprising the frigates [[HMS Tribune (1797)|''Tribune'']] and [[HMS Thames (1758)|''Tamise'']] and the [[corvette]] [[French corvette Légėre (1793)|''Légėre'']]. ||| ||| ||| +1 Bali Strait Incident ||| French Revolutionary Wars ||| The '''Bali Strait Incident''' was an encounter between a powerful [[French Navy]] [[frigate]] squadron and a convoy of British [[East India Company]] [[East Indiamen]] merchant ships in the [[Bali Strait]] on 28 January 1797. The incident took place admidst the East Indies campaign of the [[French Revolutionary Wars]] {{mdash}} repeated French attempts to disrupt the highly valuable British trade routes with [[British India]] and [[Qing Dynasty]] [[China]]. In 1796, a large squadron of French frigates arrived in the [[Indian Ocean]] under the command of [[Contre-amiral]] [[Pierre César Charles de Sercey]]. In July this force sailed on a [[commerce raiding]] cruise off [[British Ceylon]], but a subsequent attack into the [[Straits of Malacca]] was driven off in [[Action of 9 September 1796|an inconclusive engagement]] with two British [[ships of the line]] off Northeastern [[Sumatra]]. Forced to make repairs, Sercey took his squadron to the allied Batavian city of [[Djakarta|Batavia]], sheltering there until January 1797. ||| ||| ||| +1 Baltimore riot of 1861 ||| American Civil War ||| The '''Baltimore riot of 1861''' (also called the '''Pratt Street Riot''' and the '''Pratt Street Massacre''') was a conflict on April 19, 1861, in [[Baltimore]], Maryland, between [[Copperhead (politics)|anti-War Democrats]] (the largest party in Maryland), as well as [[Confederate States of America|Confederate]] sympathizers, and members of the Massachusetts militia en route to Washington for Federal service. It produced the first deaths by hostile action in the [[American Civil War]]. ||| ||| ||| +1 Battle for Caen ||| Operation Overlord ||| The '''Battle for Caen''' from June–August 1944 was a battle of the [[World War II|Second World War]] between [[Allies of World War II|Allied]] forces of the mainly Anglo-Canadian [[Second Army (United Kingdom)|Second Army]] and [[German Army (Wehrmacht)|German]] forces of {{lang|de|''Panzergruppe West''}} during the [[Operation Overlord|Battle of Normandy]]. The Allies aimed to take [[Caen]], one of the largest cities in [[Normandy]] on [[Normandy landings|D-Day]]. Caen was an important Allied objective because it lay astride the [[Orne River]] and [[Canal de Caen à la Mer|Caen Canal]]; these two water obstacles could strengthen a German defensive position if not crossed. Caen was a road hub and the side which held it could shift forces rapidly. The area around Caen was open, compared to the [[bocage]] country in the west of Normandy and was valuable land for airfields. ||| ||| ||| +1 Battle in Shakhtarsk Raion ||| War in Donbass ||| From 6 April, as part of the [[2014 pro-Russian unrest in Ukraine|rising unrest]] in Ukraine in the aftermath of the [[2014 Ukrainian revolution]], insurgents affiliated with the [[Donetsk People's Republic]] (DPR) captured towns and cities across [[Donetsk Oblast]], including Shakhtarsk Raion. The raion is in a crucial position between the Donetsk and Lugansk People's Republics, and Russia. Government forces launched an offensive against insurgent forces in Donetsk and Luhansk oblasts of Ukraine on 7 April, resulting in the [[War in Donbass]]. War reached Shakhtarsk Raion on 16 July, after insurgents retreated from most of northern Donetsk Oblast. Fighting took place across the raion, in an attempt by the government to cut-off insurgent supply lines, and to reach the crash site of [[Malaysia Airlines Flight 17]]. ||| Events by location ||| ||| +1 Battle of 42nd Street ||| World War II ||| The '''Battle of 42nd Street''' (27 May 1941) was a battle fought during [[World War II]] on the Greek island of [[Crete]]. On 20 May, [[Nazi Germany]] launched an [[Airborne forces|airborne]] [[Battle of Crete|invasion of Crete]]. A week later, after the British and Commonwealth forces defending the island had been forced to withdraw towards [[Canea]], a force of several understrength Australian and New Zealand infantry [[battalion]]s established a defensive line along the Hania to Tsikslaria road (Tsikalarion) south-east of Canea, forming a [[rearguard]] for the withdrawing troops. On 27 May, as a German [[battalion]] advanced towards the road, the Anzac defenders carried out a bayonet charge that inflicted heavy casualties on the German attackers, which forced them to withdraw and briefly halted the German advance. ||| ||| ||| +1 Battle of Abaran ||| Caucasus Campaign ||| The '''Battle of Bash Abaran''' ({{lang-hy|Բաշ Աբարանի ճակատամարտ}} ''Bash Abarani chakatamart'', {{lang-tr|Baş-Abaran Muharebesi}}) was a battle of [[Caucasus Campaign]] of World War I that took place in the vicinity of [[Aparan|Bash Abaran]], in 1918. The Armenian victories at Bash Abaran, [[Battle of Sardarabad|Sardarabad]] and [[Battle of Karakilisa|Karakilisa]], halted the [[Ottoman Empire|Ottoman]] invasion of Eastern Armenia and were instrumental in allowing the formation of the short-lived [[First Republic of Armenia]]. {{cite book ||| ||| ||| +1 Battle of Ad-Dawrah ||| Gulf War ||| The '''Battle of Ad-Dawrah''' was a naval engagement fought on the night of 18 January and into 19 January in 1991 during the [[Gulf War]]. In the battle, [[Coalition of the Gulf War|Coalition forces]] captured an [[Iraq]]i offshore oil field forty miles from the [[Kuwait]]i shore. The 29 POWs captured were the first POWs of the war. It was also the first surface engagement after the Coalition intervened in the war. ||| ||| ||| +1 Battle of Adwalton Moor ||| English Civil War ||| The '''Battle of Adwalton Moor''' was a battle in the [[English Civil War]] on 30 June 1643. ||| ||| ||| +1 Battle of Alavus ||| Finnish War ||| The '''Battle of Alavus''' took place on 17 August 1808 in the vicinity of the town of [[Alavus]] ({{lang-sv|Alavo}}), as part of the [[Finnish War]]. The Finnish army, under the command of [[general]] [[Carl Johan Adlercreutz]] defeated a smaller Russian force and drove it southwards. It was the last in a string of Swedish successes during the summer of 1808, and marked the turning point in the war. ||| ||| ||| +1 Battle of Albemarle Sound ||| American Civil War ||| The '''Battle of Albemarle Sound''' was an inconclusive naval battle fought in May 1864 along the coast of [[North Carolina]] during the [[American Civil War]]. Three [[Confederate States|Confederate]] warships, including an [[ironclad]], engaged eight [[Union (American Civil War)|Union]] [[gunboat]]s. The action ended indecisively due to the sunset. ||| ||| ||| +1 Battle of Albert (1916) ||| Battle of the Somme ||| The '''Battle of Albert''' (1–13 July 1916), comprised the first two weeks of Anglo-French offensive operations in the [[Battle of the Somme]]. The Allied preparatory artillery bombardment commenced on 24 June and the Anglo-French infantry attacked on 1 July, on the south bank from [[Foucaucourt-en-Santerre|Foucaucourt]] to the Somme and from the Somme north to [[Gommecourt, Pas-de-Calais|Gommecourt]], {{convert|2|mi|km}} beyond [[Serre]]. The French Sixth army and the right wing of the British Fourth Army inflicted a considerable defeat on the German 2nd Army but from the Albert-Bapaume road to Gommecourt the British attack was a disaster, where most of the {{circa|60,000 British}} casualties of the day were incurred. Against Marshal [[Joseph Joffre|Joffre]]'s wishes, General [[Douglas Haig, 1st Earl Haig|Sir Douglas Haig]] abandoned the offensive north of the road, to reinforce the success in the south, where the Anglo-French forces pressed forward through several intermediate lines, until close to the German second position. ||| ||| ||| +1 Battle of Alesia ||| Gallic Wars ||| The '''Battle of Alesia''' or '''Siege of Alesia''' took place in September, 52 BC, around the [[Gauls|Gallic]] ''[[oppidum]]'' of [[Alesia (city)|Alesia]], a major town centre and [[hill fort]] of the [[Mandubii]] tribe. It was fought by an army of the [[Roman Republic]] commanded by [[Julius Caesar]], aided by cavalry commanders [[Mark Antony]], [[Titus Labienus]] and [[Gaius Trebonius]], against a confederation of [[List of peoples of Gaul|Gallic tribes]] united under the leadership of [[Vercingetorix]] of the [[Arverni]]. It was the last major engagement between [[Gauls]] and Romans, marking the turning point of the [[Gallic Wars]] in favour of Rome. The Siege of Alesia is considered one of Caesar's greatest military achievements and a classic example of [[siege warfare]] and [[Investment (military)|investment]]. The battle of Alesia can safely be described as marking the end of Celtic dominance in France, Belgium, Switzerland and Northern Italy. ||| ||| ||| +1 Battle of Alma ||| Crimean War ||| The '''Battle of the Alma''' (20 September 1854), which is usually considered the first battle of the [[Crimean War]] (1853-1856), took place just south of the [[Alma River (Ukraine)|River Alma]] in the [[Crimean Peninsula|Crimea]]. An Anglo-French force under [[Jacques Leroy de Saint Arnaud]] and [[FitzRoy Somerset, 1st Baron Raglan]] defeated General [[Aleksandr Sergeyevich Menshikov]]'s [[Russia]]n army, which lost around 6,000 troops. ||| ||| ||| +1 Battle of Ambon ||| World War II ||| The '''Battle of Ambon''' (30 January–3 February 1942) occurred on the island of [[Ambon Island|Ambon]] in the [[Dutch East Indies]] (Indonesia), during [[World War II]]. A [[Empire of Japan|Japanese]] invasion was resisted by [[Netherlands|Dutch]] and Australian forces. The chaotic and sometimes bloody fighting was followed by a series of major [[Japanese war crimes]]. ||| ||| ||| +1 Battle of Amstetten ||| War of the Third Coalition ||| The '''Battle of Amstetten''' was a minor engagement during the [[War of the Third Coalition]] between the [[First French Empire]] and the alliance of [[Austrian Empire|Austria]] and [[Russian Empire|Russia]]. It occurred on 5 November 1805, when the retreating Russo-Austrian troops, led by [[Mikhail Kutuzov]], were intercepted by [[Marshal of France|Marshal]] [[Joachim Murat]]'s cavalry and a portion of Marshal [[Jean Lannes]]' corps. [[Pyotr Bagration]] defended against the advancing French troops and allowed the Russian troops to retreat. This was the first fight in which a major part of the Russian Army opposed a significant number of French troops in the open. The total number of [[Russian Empire|Russo]]-[[Austrian Empire|Austrian]] troops was around 6,700, while the French troops numbered roughly 10,000 troops. The Russo-Austrian forces suffered more casualties but were still able to successfully retreat. ||| ||| ||| +1 Battle of Apple River Fort ||| Black Hawk War ||| As a consequence of an 1804 treaty between the [[Governor]] of [[Indiana Territory]] and a group of Sauk and Fox leaders regarding land settlement, the Sauk and Fox tribes vacated their lands in [[Illinois]] and moved west of the [[Mississippi]] in 1828. However, Sauk Chief [[Black Hawk (chief)|Black Hawk]] and others disputed the treaty, claiming that the full tribal councils had not been consulted, nor did those representing the tribes have authorization to cede lands. Angered by the loss of his birthplace, between 1830–31 Black Hawk led a number of incursions across the [[Mississippi River]], but was persuaded to return west each time without bloodshed. In April 1832, encouraged by promises of alliance with other tribes and the British, he again moved his so-called 'British Band' of around 1000 warriors and non-combatants into Illinois. A number of other engagements followed, and the militias of [[Michigan Territory]] and Illinois were mobilized to hunt down Black Hawk's Band. The conflict became known as the [[Black Hawk War]]. ||| Background ||| ||| +1 Battle of Aranzueque ||| First Carlist War ||| The '''Battle of Aranzueque''' was a September 1837 confrontation at the village of [[Aranzueque]], [[Spain]] during the [[First Carlist War]]. ||| ||| ||| +1 Battle of Arkansas Post (American Revolutionary War) ||| American Revolutionary War ||| The '''Battle of Arkansas Post''' (also known as the '''Colbert Raid''' or '''Colbert Incident''') was a [[battle]] of the [[American Revolutionary War]] fought at [[Arkansas Post]] on April 17, 1783. It was a part of a series of small battles fought between [[Spain|Spanish]] and [[Kingdom of Great Britain|British]] forces in the [[Lower Mississippi River|Lower Mississippi]] region from 1779, when Spain entered the war on the side of the [[United States]], to the war's end. ||| ||| ||| +1 Battle of Arklow (1649) ||| Irish Confederate Wars ||| The '''Battle of Arklow''' took place at Glascarrig on the coast road through [[Arklow]] in [[County Wicklow]] during November 1649. It was fought between the armies of [[Confederate Ireland]] (allied with the [[Royalist]]s), and the English [[Roundheads|Parliamentarians]] during the [[Irish Confederate Wars]]. ||| ||| ||| +1 Battle of Arras (1914) ||| Race to the Sea ||| The '''Battle of Arras''' (also known as the First Battle of Arras, {{nowrap|1–4 October 1914),}} was an attempt by the [[Military history of France#Modern period|French Army]] to outflank the [[German Army (German Empire)|German Army]], which was attempting to do the same thing during the '[[Race to the Sea]]', a misleading term for reciprocal attempts by both sides, to exploit conditions created during the [[First Battle of the Aisne]].{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} At the First Battle of Picardy {{nowrap|(22–26 September)}} each side had attacked expecting to advance round an open northern flank and found instead that troops had arrived from further south and extended the flank northwards. ||| ||| ||| +1 Battle of Arras (1940) ||| World War II ||| The '''Battle of Arras''' (1940) took place during the [[Battle of France]] of the [[World War II|Second World War]]. It was an [[Allies of World War II|Allied]] [[counterattack|counter-attack]] against the [[Flanking maneuver|flank]] of the [[German Army (Wehrmacht)|German army]], near the town of [[Arras]], in north-eastern France. The German forces were pushing north towards the [[English Channel|channel coast]], to trap the Allied forces that had advanced east into [[Belgium]]. The counter-attack at Arras was an Allied attempt to cut through the German armoured spearhead and frustrate the German advance. Although the Allies initially made gains, they were repulsed by German forces and forced to withdraw to avoid [[encirclement]]. ||| ||| ||| +1 Battle of Athens (1864) ||| American Civil War ||| The '''Battle of Athens''' was fought in [[Athens, Alabama]] ([[Limestone County, Alabama]]), on January 26, 1864, as part of the [[American Civil War]]. The [[Union Army|Union]] force was a company under [[Captain (U.S. Army)|Captain]] [[Emil Adams]] from the [[9th Illinois Mounted Infantry regiment]]. The [[Confederate States Army|Confederate]] force was the [[1st Regiment Alabama Volunteer Cavalry (Confederate)|1st Alabama Cavalry]], under [[Lieutenant Colonel (United States)|Lieutenant Colonel]] [[Moses Wright Hannon|Moses W. Hannon]]. ||| ||| ||| +1 Battle of Aussig ||| Hussite Wars ||| The '''Battle of Aussig''' ({{lang-de|Schlacht bei Aussig}}) or '''Battle of Ústí nad Labem''' ({{lang-cs|Bitva u Ústí nad Labem}}) was fought on 16 June 1426, between [[Roman Catholic Church|Roman Catholic]] crusaders and the [[Hussite]]s during the Fourth Crusade of the [[Hussite Wars]]. It was fought near Aussig ([[Ústí nad Labem]]) in northern [[Kingdom of Bohemia|Bohemia]]. ||| ||| ||| +1 Battle of Bab El Oued ||| Algerian War ||| The '''Battle of Bab el Oued''', or occasionally the '''Siege of Bab el Oued''', ({{lang-fr|link=no|Bataille de Bab el Oued}}) was a battle of the [[Algerian War]] (1954–1962) between ''[[Organisation de l'Armée Secrète]]'' (OAS) militants opposed to Algerian independence and the [[France|French army]] in a traditionally working-class European quarter of [[Algiers]] from 23 March to 6 April 1962. ||| ||| ||| +1 Battle of Badli-ki-Serai ||| Indian Rebellion of 1857 ||| The '''Battle of Badli-ki-Serai''' was fought early in the [[Indian Rebellion of 1857]], or ''First War of Indian Independence'' as it has since been termed in Indian histories of the events. A British and [[Gurkha]] force defeated a force of [[sepoy]]s who had rebelled against the [[British East India Company]]. The British victory allowed them to besiege and ultimately capture [[Delhi]]. ||| ||| ||| +1 Battle of Balikpapan (1945) ||| Pacific War ||| }} composed of the [[18th Brigade (Australia)|18th]], [[21st Brigade (Australia)|21st]] and [[25th Brigade (Australia)|25th Infantry Brigades]], with [[KNIL]] troops, made an [[amphibious landing]], codenamed '''Operation Oboe Two''' a few miles north of [[Balikpapan]], on the island of [[Borneo]]. The landing had been preceded by heavy [[bombing]] and shelling by Australian and US air and naval forces. The Japanese were outnumbered and outgunned, but like the other battles of the [[Pacific War]], many of them fought to the death. ||| ||| ||| +1 Battle of Ball's Bluff ||| American Civil War ||| The '''Battle of Ball's Bluff''' in Loudoun County, Virginia on October 21, 1861, was one of the early battles of the [[American Civil War]], in which [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]]'s Army of the Potomac (Union) suffered a humiliating defeat. ||| ||| ||| +1 Battle of Bautzen (1945) ||| World War II ||| The '''Battle of Bautzen''' (or '''Battle of Budziszyn''', April 1945) was one of the last battles of the [[Eastern Front (WWII)|Eastern Front]] during [[World War II]]. It was fought on the extreme southern flank of the [[Battle of the Oder–Neisse#Spremberg-Torgau Offensive|Spremberg-Torgau Offensive]], seeing days of pitched street fighting between forces of the [[Polish Second Army]] and elements of the Soviet [[52nd Army (Soviet Union)|52nd Army]] and [[5th Guards Army (Soviet Union)|5th Guards Army]]{{Ref label|a|a|none}} on one side and elements of German [[Army Group Center]] in the form of the remnants of the [[4th Panzer Army|4th Panzer]] and [[17th Army (Wehrmacht)|17th]] armies on the other. ||| ||| ||| +1 Battle of Bazentin Ridge ||| Battle of the Somme ||| The '''Battle of Bazentin Ridge''' {{nowrap|(14–17 July 1916),}} was part of the [[Battle of the Somme (1916)|Battle of the Somme]] {{nowrap|(1 July – 18 November)}} on the [[Western Front (World War I)|Western Front]] in France, during the [[World War I|First World War]]. The British [[Fourth Army (United Kingdom)|Fourth Army]] (General [[Henry Rawlinson, 1st Baron Rawlinson|Henry Rawlinson]]) attacked at dawn on 14 July, against the German [[2nd Army (German Empire)|2nd Army]] (General [[Fritz von Below]]) and was the start of the second phase of the battle. Dismissed beforehand by a [[France|French]] commander as 'an attack organized for [[amateur]]s by amateurs', it turned out to be 'hugely successful' for the British, in contrast to the disaster of the [[First day on the Somme]] on 1 July. The British were unable to exploit the success and the 2nd Army recovered, leading to another period of [[battle of attrition|attrition]], before the general attacks of September. ||| ||| ||| +1 Battle of Bear Valley ||| American Indian Wars ||| The '''Battle of Bear Valley''' was a small engagement fought in 1918 between a band of [[Yaqui people|Yaqui]]s and a detachment of [[United States Army]] soldiers. On January 9, 1918, elements of the American [[10th Cavalry Regiment]] detected about thirty armed [[Yaqui]]s in [[Bear Valley, Arizona|Bear Valley]], [[Arizona]], a large area that was commonly used as a passage across the international border with [[Mexico]]. A short firefight ensued, which resulted in the death of the Yaqui commander and the capture of nine others. Though the conflict was merely a skirmish, it was the last time the United States Army engaged hostile [[Indigenous peoples of the Americas|native Americans]] in combat and thus has been seen as one of the final battles of the [[American Indian Wars]]. ||| ||| ||| +1 Battle of Beiping–Tianjin ||| Second Sino-Japanese War ||| The '''Battle of Beiping–Tianjin''' ({{zh|t=平津作戰|s=平津作战|p=Píng Jīn Zùozhàn}}), also known as the 'Peiking-Tientsin Operation' or by the Japanese as the {{nihongo|North China Incident|北支事変|Hokushi jihen}} (25–31 July 1937) was a series of battles of the [[Second Sino-Japanese War]] fought in the proximity of [[Beiping]] (now Beijing) and [[Tianjin]]. It resulted in a Japanese victory. ||| ||| ||| +1 Battle of Benburb ||| Wars of the Three Kingdoms ||| The '''Battle of Benburb''' took place on 5 June 1646 during the [[Irish Confederate Wars]], the Irish theatre of the [[Wars of the Three Kingdoms]]. It was fought between the forces of [[Confederate Ireland]] under [[Owen Roe O'Neill]] and a [[Scotland|Scottish]] [[Covenanter]] and [[Old English (Ireland)|Anglo-Irish]] army under [[Robert Monro]]. The battle ended in a decisive victory for the Irish Confederates and ended the Scottish hopes of conquering Ireland and imposing their own religious settlement there. ||| ||| ||| +1 Battle of Bladensburg ||| War of 1812 ||| The '''Battle of Bladensburg''' took place during the [[War of 1812]]. The defeat of the American forces there allowed the [[United Kingdom of Great Britain and Ireland|British]] to [[Burning of Washington|capture and burn the public buildings]] of [[Washington, D.C.]] It has been called 'the greatest disgrace ever dealt to American arms'. ||| ||| ||| +1 Battle of Blue Licks ||| American Revolutionary War ||| The '''Battle of Blue Licks''', fought on August 19, 1782, was one of the last battles of the [[American Revolutionary War]]. The battle occurred ten months after [[Charles Cornwallis, 1st Marquess Cornwallis|Lord Cornwallis's]] famous surrender at [[siege of Yorktown|Yorktown]], which had effectively ended the war in the east. On a hill next to the [[Licking River (Kentucky)|Licking River]] in what is now [[Robertson County, Kentucky]] (but was then in [[Kentucky County, Virginia]]<!--not necessarily correct, since Kentucky County was divided in 1780-->), a force of about 50 American and Canadian [[Loyalist (American Revolution)|Loyalist]]s along with 300 [[Native Americans in the United States|American Indians]] ambushed and routed 182 Kentucky [[militia (United States)|militiamen]]. It was the last victory for the Loyalists and Natives during the frontier war. ||| ||| ||| +1 Battle of Bolivar Heights ||| American Civil War ||| The '''Battle of Bolivar Heights''' (16 October 1861) was an early battle of the [[American Civil War]]. Occurring two years after [[John Brown (abolitionist)|John Brown]]'s raid on [[Harpers Ferry]], [[Virginia]], in 1859, [[Confederate States Army]] colonel [[Turner Ashby]] attempted to take the strategic [[Bolivar Heights]] from Union colonel [[John White Geary]]. After a six-hour battle, the Confederates were ultimately repulsed, and the Union planted flags on the ridge. ||| ||| ||| +1 Battle of Boyra ||| Bangladesh Liberation War ||| '''The Battle of Boyra''', on 22 November 1971, was an aerial interception fought between the [[Indian Airforce]] and intruding [[Pakistani Air Force]] jets that inadvertently crossed into Indian Airspace while performing a close air support mission against the [[Mukti Bahini]], the [[Bengali people|Bengali]] [[Guerrilla warfare|Guerrilla]] freedom fighters, and a [[Battalion]] size detachment of the [[Indian Army]] which were fighting in the [[Battle of Garibpur]] against the [[Pakistani Armed Forces]] as part of the [[Bangladesh Liberation War]]. ||| ||| ||| +1 Battle of Braga (1809) ||| Peninsular War ||| The '''Battle of Braga''' or '''Battle of Póvoa de Lanhoso''' or '''Battle of Carvalho d'Este''' (20 March 1809) saw an [[First French Empire|Imperial French]] corps led by [[Marshal of France|Marshal]] [[Nicolas Soult]] attack a Portuguese army commanded by Baron Christian Adolph Friedrich von Eben. Soult's professional soldiers slaughtered large numbers of their opponents, who were mostly badly disciplined and poorly armed [[militia]]. The action occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Braga]] is situated about {{convert|45|km|mi|0}} north-northeast of [[Porto]] (Oporto). ||| ||| ||| +1 Battle of Bregalnica ||| Second Balkan War ||| The '''Battle of Bregalnica''' was fought between the [[History of Independent Bulgaria|Kingdom of Bulgaria]] army and the [[Kingdom of Serbia]] during the [[Second Balkan War]]. ||| ||| ||| +1 Battle of Brihuega ||| War of the Spanish Succession ||| The '''Battle of Brihuega''' took place on 8 December 1710 in the [[War of the Spanish Succession]], during the allied retreat from Madrid to [[Barcelona]]. The [[Kingdom of Great Britain|British]] [[rearguard]] under [[James Stanhope, 1st Earl Stanhope|Lord Stanhope]] was [[Strategy of the central position|cut off]] within the town of [[Brihuega]] and overwhelmed by a Franco-Spanish army under the [[Louis Joseph, duc de Vendôme|duc de Vendôme]]. Brihuega with other events brought an end to the British participation in the war. ||| ||| ||| +1 Battle of Brunete ||| Spanish Civil War ||| The '''Battle of Brunete''' (6 July - 25 July 1937), fought 15 miles west of [[Madrid]], was a [[Second Spanish Republic|Republican]] attempt to alleviate the pressure exerted by the [[Nationalist Spain|Nationalists]] on the capital and on the [[Cantabria|north]] during the [[Spanish Civil War]]. Although initially successful, the Republicans were forced to [[Withdrawal (military)|retreat]] from [[Brunete]] and suffered devastating casualties from the battle. ||| ||| ||| +1 Battle of Buda (1686) ||| Great Turkish War ||| After the unsuccessful second siege of Vienna by the [[Turkish People|Turks]] in 1683, which started the [[Great Turkish War]], an imperial counteroffensive started for the re-conquest of Hungary, so that the Hungarian capital [[Buda]] could be freed from the Turks. ||| ||| ||| +1 Battle of Bure ||| Battle of the Bulge ||| The '''Battle of Bure''' was part of the [[Battle of the Bulge]], which lasted from the 2 to 5 January 1945 during the final months of the [[World War II|Second World War]]. The battle was fought as part of the allied counterattack to rid the German held ground of the 'Bulge' which forced them on the defensive. [[XXX Corps (United Kingdom)|British XXX Corps]] with [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] attached was tasked with clearing the area East of [[Dinant]], [[Rochfort]], [[Gupont]] and [[Bure, Belgium|Bure]]. In a tough battle Bure was secured after nearly three days of heavy fighting whilst Gupont and Rochefort were both cleared with little resistance and the advance continued. ||| ||| ||| +1 Battle of Calabria ||| World War II ||| The '''Battle of Calabria''', (known to the Italian Navy as the '''Battle of Punta Stilo''') was a [[naval battle]] during the [[Battle of the Mediterranean]] in [[World War II]]. It was fought between the [[Kingdom of Italy (1861-1946)|Italian]] [[Regia Marina|Royal Navy]] (''[[Regia Marina]]'') and the British [[Royal Navy]] and the [[Royal Australian Navy]]. The battle occurred 30 miles to the east of [[Punta Stilo]], [[Calabria]], on 9 July 1940. It was one of the few [[pitched battle]]s of the Mediterranean campaign during [[World War II]] involving large numbers of ships on both sides. Both sides claimed victory, but in fact the battle was a draw and everyone returned to their bases as soon as possible. After the battle the [[Allies of World War II|Allies]] claimed to have achieved some sort of 'moral ascendancy' over the Italian Navy; conversely, the Italian propaganda depicted the clash as a victory of their own. ||| ||| ||| +1 Battle of Calcinato ||| War of the Spanish Succession ||| The '''Battle of Calcinato''' was fought on 19 April 1706 near [[Calcinato]], Italy, during the [[War of the Spanish Succession]], between the forces of Bourbon France and Spain and those of the Austrian Habsburgs. It ended in a victory for [[Louis Joseph, duc de Vendôme|Marshal Vendôme's]] French and Spanish army. ||| ||| ||| +1 Battle of Caldiero (1809) ||| War of the Fifth Coalition ||| In the '''Battle of Caldiero''' or '''Battle of Soave''' or '''Battle of Castelcerino''' from 27 to 30 April 1809, an Austrian army led by [[Archduke John of Austria]] defended against a Franco-Italian army headed by [[Eugène de Beauharnais]], the [[Viceroy]] of the [[Kingdom of Italy (Napoleonic)|Kingdom of Italy]]. The outnumbered Austrians successfully fended off the attacks of their enemies in actions at [[San Bonifacio]], [[Soave]], and Castelcerino before retreating to the east. The clash occurred during the [[War of the Fifth Coalition]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Campbell's Station ||| American Civil War ||| The '''Battle of Campbell's Station''' was a battle of the [[Knoxville Campaign]] of the [[American Civil War]], occurring on November 16, 1863, at Campbell's Station, (now [[Farragut, Tennessee|Farragut]]), [[Knox County, Tennessee]]. ||| ||| ||| +1 Battle of Cape Passaro ||| War of the Quadruple Alliance ||| The '''Battle of Cape Passaro''' (or '''Passero''') was the defeat of a Spanish fleet under Admirals [[Antonio de Gaztañeta]] and [[Fernando Chacón]] by a British fleet under Admiral George [[George Byng, 1st Viscount Torrington|Byng]], near [[Cape Passero]], Sicily, on 11 August 1718, four months before the [[War of the Quadruple Alliance]] was formally declared. ||| ||| ||| +1 Battle of Carbisdale ||| Wars of the Three Kingdoms ||| The '''Battle of Carbisdale''' (also known as ''Invercarron'') took place close to the Village of [[Culrain, Scotland|Culrain]] on 27 April 1650 and was part of the [[Wars of the Three Kingdoms]]. It was fought by the [[Cavalier|Royalist]] leader [[James Graham, 1st Marquess of Montrose]], against the Scottish Government of the time, dominated by [[Archibald Campbell, 1st Marquess of Argyll]] and a grouping of radical [[Covenanters]], known as the [[Kirk Party]]. The battlefield has been inventoried and protected by [[Historic Scotland]] under the Scottish Historical Environment Policy of 2009. ||| ||| ||| +1 Battle of Carpi ||| War of the Spanish Succession ||| The '''Battle of Carpi''' was a series of manoeuvres in the summer of 1701, and the first battle of the [[War of the Spanish Succession]] that took place on July 9, 1701 between [[France]] and [[Austria]]. ||| ||| ||| +1 Battle of Caulk's Field ||| War of 1812 ||| The '''Battle of Caulk's Field''' occurred during the [[War of 1812]]. Similar to the [[Battle of Craney Island]] a year earlier, [[United States|American]] [[militia]] units were able to repulse a [[United Kingdom of Great Britain and Ireland|British]] landing attempt along the shores of the [[Chesapeake Bay]]. ||| ||| ||| +1 Battle of Cedar Creek ||| American Civil War ||| The '''Battle of Cedar Creek''', or '''Battle of Belle Grove''', fought October 19, 1864, was the culminating battle of the [[Valley Campaigns of 1864]] during the [[American Civil War]]. [[Confederate States Army|Confederate]] [[Lieutenant General (CSA)|Lt. Gen.]] [[Jubal Early]] launched a surprise attack against the encamped army of [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[Philip Sheridan]], across [[Cedar Creek (North Fork Shenandoah River)|Cedar Creek]], northeast of [[Strasburg, Virginia]]. During the morning fighting, seven Union infantry divisions were forced to fall back and lost numerous prisoners and cannons. Early failed to continue his attack north of [[Middletown, Virginia|Middletown]], and Sheridan, dramatically riding to the battlefield from [[Winchester, Virginia|Winchester]], was able to rally his troops to hold a new defensive line. A Union counterattack that afternoon routed Early's army. ||| ||| ||| +1 Battle of Chalgrove Field ||| English Civil War ||| The '''Battle of Chalgrove''' was a small battle during the [[English Civil War]] in the county of [[Oxfordshire]]. It took place around 09:00 hours on the morning of 18 June 1643 in Chalgrove Field, northeast of [[Chalgrove]] in [[Oxfordshire]]. It was a minor [[Cavalier|Royalist]] victory and is notable for the mortal wounding of [[Roundhead|Parliamentarian]] colonel, [[John Hampden]], who died six days later of his wounds. ||| ||| ||| +1 Battle of Changde ||| Second Sino-Japanese War ||| The '''Battle of Changde''' ('''Battle of Changteh'''; {{zh|t=常德會戰|s=常德会战|p=Chángdé Huìzhàn}}) was a major engagement in the [[Second Sino-Japanese War]] in and around the [[China|Chinese]] city of [[Changde]] (Changteh) in the province of [[Hunan]]. During the battle, [[Imperial Japan|Japan]] extensively used [[chemical weapons]]. ||| ||| ||| +1 Battle of Cherbourg ||| Western Front (World War II) ||| The '''Battle of Cherbourg''' was part of the [[Operation Overlord|Battle of Normandy]] during [[World War II]]. It was fought immediately after the successful [[Allies of World War II|Allied]] [[Normandy landings|landings on June 6, 1944]]. Allied troops mainly [[United States Army|American]] isolated and captured the fortified port, which was considered vital to the [[Western Front (World War II)|campaign in Western Europe]], in a hard-fought, month-long campaign. ||| ||| ||| +1 Battle of Cheriton ||| English Civil War ||| The '''Battle of Cheriton''' was an important [[Parliament of England|Parliamentarian]] victory in the [[English Civil War]]. It took place on 29 March 1644 and resulted in the defeat of a [[Cavalier|Royalist]] army, which threw [[Charles I of England|King Charles I]] onto the defensive for the remainder of the year. ||| ||| ||| +1 Battle of Chillianwala ||| Second Anglo-Sikh War ||| The '''Battle of Chillianwala''' was fought during the [[Second Anglo-Sikh War]] in the [[Chillianwala]] region of [[Punjab region|Punjab]] ([[Mandi Bahauddin]]), now part of modern-day [[Pakistan]]. The battle was one of the bloodiest fought by the [[British East India Company]]. Both armies held their positions at the end of the battle and both sides claimed victory. ||| ||| ||| +1 Battle of Chippawa ||| War of 1812 ||| The '''Battle of Chippawa''' (sometimes incorrectly spelled ''Chippewa'') was a victory for the [[United States Army]] in the [[War of 1812]], during an invasion of [[Upper Canada]] along the [[Niagara River]] on July 5, 1814. ||| ||| ||| +1 Battle of Connecticut Farms ||| American Revolutionary War ||| The '''Battle of Connecticut Farms''', fought June 7, 1780, was one of the last major battles between British and American forces in the northern colonies during the [[American Revolutionary War]]. Hessian General [[Wilhelm von Knyphausen]], in command of the British garrison at [[New York City]], made an attempt to reach the principal [[Continental Army]] encampment at [[Morristown, New Jersey]]. Knyphausen's advance was strongly met by companies of the [[New Jersey]] militia at Connecticut Farms (present-day [[Union Township, Union County, New Jersey|Union Township]]). After stiff resistance, the militia were forced to withdraw, but the battle and skirmishing that preceded it sufficiently delayed Knyphausen's advance that he remained there for the night. After realizing that further advance on Morristown would probably be met by even more resistance, Knyphausen withdrew back toward New York. ||| ||| ||| +1 Battle of Corpus Christi ||| American Civil War ||| The '''Battle of Corpus Christi''' was fought between August 12 and August 18 1862, during the [[American Civil War]]. [[United States Navy]] forces blockading [[Texas]] fought a small land and sea engagement with [[Confederate States of America|Confederate]] forces in and around [[Corpus Christi Bay]] and bombarded [[Corpus Christi, Texas|Corpus Christi]]. [[Union (American Civil War)|Union]] forces defeated [[Confederate States Navy]] ships operating in the area but were repulsed when they landed on the coast. ||| ||| ||| +1 Battle of Corregidor (1945) ||| Pacific War ||| The surrender of Corregidor in 1942 and the ensuing grisly fate of its 11,000 American and Filipino defenders led to a particular sense of moral purpose in General [[Douglas MacArthur]], and as shown in the subsequent campaigns for the liberation of the Philippine archipelago, he showed no hesitation in committing the bulk of US and Philippine forces under his command. To the American soldier, Corregidor was more than a military objective; long before the campaign to recapture it, the ''Rock'' had become an important symbol in United States history as the last Pacific outpost of any size to fall to the enemy in the early stages of the [[Pacific War]]. ||| ||| ||| +1 Battle of Delaware Bay ||| American Revolutionary War ||| The '''Battle of Delaware Bay''', or the '''Battle of Cape May''', was a naval engagement fought between the [[Kingdom of Great Britain]] and [[United States]] during the [[American Revolutionary War]]. A British squadron of three vessels attacked three American [[privateer]]s, which were escorting a fleet of merchantmen. The ensuing combat in [[Delaware Bay]], near [[Cape May]], ended with an American victory over a superior British force. ||| ||| ||| +1 Battle of Denain ||| War of the Spanish Succession ||| The '''Battle of Denain''' was fought on 24 July 1712, as part of the [[War of the Spanish Succession]]. It resulted in a French victory under [[Claude Louis Hector de Villars|Marshal Villars]] against Austrian and [[Netherlands|Dutch]] forces under [[Prince Eugene of Savoy]]. ||| ||| ||| +1 Battle of Dettingen ||| War of the Austrian Succession ||| The '''Battle of Dettingen''' ({{lang-de|Schlacht bei Dettingen}}) took place on 27 June 1743 at [[Karlstein am Main|Dettingen]] on the [[River Main]], Germany, during the [[War of the Austrian Succession]]. The British forces, in alliance with those of [[Electorate of Brunswick-Lüneburg|Hanover]] and [[Hesse]], defeated a [[Military history of France|French]] army under the [[Adrien-Maurice, 3rd duc de Noailles|duc de Noailles]]. It was the last time that a [[British monarch]] (in this case [[George II of Great Britain|George II]]) personally led his troops into battle. The battle straddled the river about 18 miles east of [[Frankfurt]], with guns on the [[Hesse|Hessian]] bank but most of the combat on the flat [[Bavaria]]n bank. The village of Dettingen is today the town of [[Karlstein am Main]], in the extreme northwest of Bavaria. ||| ||| ||| +1 Battle of Doiran (1913) ||| Second Balkan War ||| The '''Battle of Doiran''' was a battle of the [[Second Balkan War]], fought between the [[Bulgaria]]n and the [[Greece|Greek]] army. The battle took place in June 1913. ||| ||| ||| +1 Battle of Dongshan Island ||| Chinese Civil War ||| The '''Battle of Dongshan Island''' ({{zh|c=东山岛战斗}}) was a battle fought between the [[Kuomintang|Nationalists]] and the [[Communist]]s during the last days of the [[Chinese Civil War]] over the control of the Eastern Mountain (Dongshan, 东山) Island at the southern tip of [[Fujian]], [[China]]. It resulted in the [[Communist]]s taking the island from the [[Kuomintang|nationalists]]. ||| ||| ||| +1 Battle of Dragashani ||| Greek War of Independence ||| The '''Battle of Dragashani''' (or '''Battle of Drăgășani''') was fought on June 19, 1821 in [[Drăgășani]], [[Wallachia]], between the [[Ottoman Empire|Ottoman]] forces of [[Ottoman Dynasty|Sultan]] [[Mahmud II]] and the [[Greece|Greek]] [[Filiki Etaireia]] insurgents. It was a prelude to the [[Greek War of Independence]]. ||| ||| ||| +1 Battle of Dublin ||| Irish Civil War ||| The '''Battle of Dublin''' was a week of [[urban warfare|street battles]] in Dublin from 28 June to 5 July 1922 that marked the beginning of the [[Irish Civil War]]. Six months after the [[Anglo-Irish Treaty]] ended the recent [[Irish War of Independence]], it was fought between [[National Army (Ireland)|the forces]] of the new [[Provisional Government of the Irish Free State|Provisional Government]], and a section of the [[Irish Republican Army (1922–1969)|Irish Republican Army]] (IRA) who opposed the Treaty. The fighting began with an assault by Provisional Government forces on the [[Four Courts]] building, which had been occupied by the Anti-Treaty IRA, and ended in a decisive victory for the Provisional Government. ||| ||| ||| +1 Battle of Dunbar (1650) ||| Wars of the Three Kingdoms ||| Although the Scottish and English parliaments were initially allies in the [[Wars of the Three Kingdoms]], they did not remain so for the entire conflict. Differences in approaches to religion eventually came to the fore with the rise in power and influence of an [[Independent (religion)|Independents]] faction in the English Parliament, in particular its dominance of the [[New Model Army]] which alarmed the still Presbyterian-dominated Scottish Parliament. This was not what Scotland's Presbyterian commissioners had envisioned when they signed the [[Solemn League and Covenant]] along with their English counterparts. Thus there came a gradual realisation among some Covenanting Scots that a rapproachement or engagement with the King was perhaps the only way to achieve the 'true religion' throughout Britain. This idea was hotly contested in Scotland. Only a few were willing to act on such a proposal when the so-called [[Engagers]], unable to persuade the whole Covenanting movement of the wisdom of their strategy, decided they would show their compatriots the way through action rather than words. They invaded England in 1648 without the approval of the [[Parliament of Scotland|Scottish Parliament]] or [[General Assembly of the Church of Scotland|General Assembly]]. However, the [[James Hamilton, 1st Duke of Hamilton|Duke of Hamilton]] proved to be a poor general and was easily defeated by the English parliamentary forces at the [[Battle of Preston (1648)|Battle of Preston]]. After the defeat of the Engagers the opposing [[Kirk Party]] seized control of the wheels of government in Scotland, with the result that from this point on more power was held by Presbyterian ministers than by Presbyterian nobles such as the [[Earl of Argyll]]. Not surprisingly, with the declining power and influence of the moderately Royalist Presbyterians and the rise of the more militantly Covenanter Kirk Party, the Scottish government became even more overtly and rigidly Presbyterian. Those who had opposed engaging with the King in 1648 were now effectively governing Scotland. However, even the most militant of Covenanters realised that the English Parliament was never going to enact the [[Westminster Confession]] and that the only chance of their Presbyterianism being instituted throughout Britain was through its acceptance by the King. Thus it was that on 23 June 1650 [[Charles II of England|Charles II]] landed in Scotland at [[Garmouth, Moray|Garmouth]] in [[Moray]] and by prior agreement, despite his [[Anglican]] and [[Roman Catholic]] sympathies, signed on his arrival the [[Covenanter|1638 National Covenant]] and [[Solemn League and Covenant|1643 Solemn League and Covenant]] before being proclaimed [[King of Scots]]. This infuriated the English Parliament's [[Commonwealth of England|Council of State]] who decided on a pre-emptive invasion of Scotland. [[Thomas Fairfax, 3rd Lord Fairfax of Cameron|Sir Thomas Fairfax]], the Army's commander, disagreed with this strategy against Protestant 'brethren' and resigned; his generalship being taken by [[Oliver Cromwell]]. [[John Lambert (general)|John Lambert]] was made Sergeant Major General and appointed as the Army's second-in-command. ||| Background ||| ||| +1 Battle of Ekeren ||| War of the Spanish Succession ||| The '''Battle of Ekeren''', June 30, 1703 was a battle of the [[War of the Spanish Succession]]. The [[France|French]] surrounded a [[Netherlands|Dutch]] force, which barely avoided destruction. This battle ended hope of a decisive allied victory in the [[Spanish Netherlands]] in 1703. ||| ||| ||| +1 Battle of El Pla ||| Peninsular War ||| The '''Battle of Pla''' (15 January 1811) saw an [[First French Empire|Imperial French]] column made up of two Italian brigades clash with a [[Kingdom of Spain|Spanish]] division under the command of [[Pedro Sarsfield]]. The Spanish troops held steady and repulsed the attack of the first brigade, then counterattacked and defeated both brigades. The combat occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. The action was fought near [[El Pla de Santa Maria]], north of [[Valls]], [[Spain]]. ||| ||| ||| +1 Battle of Elands River (1900) ||| Second Boer War ||| The '''Battle of Elands River''' was an engagement of the [[Second Boer War]] that took place between 4 and 16 August 1900 in western [[Transvaal Colony|Transvaal]]. The battle was fought by the [[Elands River]] between a force of 2,000 to 3,000 [[Boer]]s who attacked a garrison of 500 Australian, [[Rhodesia]]n, Canadian and British soldiers, who were stationed at Brakfontein Drift near the Elands River to act as a garrison for a British supply dump. Over the course of 13 days, the garrison was heavily shelled and attacked with small arms. Outnumbered and surrounded, the garrison was asked to surrender, but refused. The siege was subsequently lifted when the garrison was relieved by a 10,000-strong column led by [[Herbert Kitchener, 1st Earl Kitchener|Lord Kitchener]]. ||| ||| ||| +1 Battle of Elli ||| First Balkan War ||| The '''Battle of Elli''' ({{lang-el|Ναυμαχία της Έλλης}}, {{lang-tr|İmroz Deniz Muharebesi}}) took place near the mouth of the [[Dardanelles]] on {{OldStyleDate|16 December|1912|3 December}} as part of the [[First Balkan War]] between the fleets of the [[Kingdom of Greece]] and the [[Ottoman Empire]]. It was the largest sea battle of the [[Balkan Wars]]. ||| ||| ||| +1 Battle of Eniwetok ||| World War II ||| The '''Battle of Eniwetok''' was a battle of the [[Pacific War|Pacific campaign]] of [[World War II]], fought between 17 February 1944 and 23 February 1944, on [[Eniwetok Atoll]] in the [[Marshall Islands]]. ||| ||| ||| +1 Battle of Fair Garden ||| American Civil War ||| The '''Battle of Fair Garden''' was a minor cavalry battle of the [[American Civil War]] between the Army of Ohio and The Department of East Tennessee, occurring on January 27, 1864, in [[Sevier County, Tennessee]]. Despite the small size of the battle, both side incurred considerable casualties. ||| ||| ||| +1 Battle of Festubert ||| Western Front (World War I) ||| '''The Battle of Festubert''' (15–25 May 1915) was an attack by the [[British army]] in the Artois region of [[France]] on the [[Western Front (World War I)|western front]] during [[World War I]]. The offensive formed part of a series of attacks by the French Tenth Army and the British First Army in the [[Second Battle of Artois]] {{nowrap|(3 May – 18 June 1915)}}. After the failure of the attempted breakthrough by the First Army in the attack at Aubers Ridge (9 May 1915) tactics of a short hurricane bombardment and an infantry advance with unlimited objectives, were replaced by the French practice of slow and deliberate artillery-fire intended to prepare the way for an infantry attack. A continuous three-day bombardment by the British heavy artillery was planned, to cut wire and demolish German machine-gun posts and infantry strong-points. The German defences were to be captured by a continuous attack, by one division from Rue du Bois to Chocolat Menier Corner and by a second division {{convert|600|yd|m}} north, which was to capture the German trenches to the left of Festubert village. The objectives were {{convert|1000|yd|m}} forward, rather than the {{convert|3000|yd|m}} depth of advance intended at Aubers Ridge. The battle was the first British attempt at attrition. ||| ||| ||| +1 Battle of Fleurus (1794) ||| French Revolutionary Wars ||| The '''Battle of Fleurus''', on 26 June 1794, was a major engagement between the army of the [[First French Republic]], under General [[Jean-Baptiste Jourdan]], and the Coalition Army ([[Kingdom of Great Britain|Great Britain]], [[Hanover]], [[Dutch Republic]], and [[Habsburg Monarchy]]), commanded by [[Prince Josias of Coburg]], in the most decisive battle of the [[Flanders Campaign]] in the [[Low Countries]] during the [[French Revolutionary Wars]]. Both sides had forces in the area numbering in the vicinity of 80,000 men, but the [[France|French]] were able to more effectively concentrate their troops in order to achieve victory against the [[First Coalition]]. The Allied defeat led to the permanent loss of the [[Austrian Netherlands]] and to the destruction of the [[Dutch Republic]]. The battle marked a turning point for the French army which afterwards remained ascendant throughout the rest of the [[War of the First Coalition]]. ||| ||| ||| +1 Battle of Fort Sumter ||| American Civil War ||| The '''Battle of Fort Sumter''' (April 12-14, 1861) was the [[bombardment]] and surrender of [[Fort Sumter]], near [[Charleston, South Carolina]], that started the [[American Civil War]]. Following declarations of [[secession]] by [[Confederate States of America#Secession|seven Southern states]], South Carolina demanded that the [[US Army]] abandon its facilities in Charleston Harbor. On December 26, 1860, Major [[Robert Anderson (Civil War)|Robert Anderson]] of the U.S. Army surreptitiously moved his small command from the vulnerable [[Fort Moultrie]] on [[Sullivan's Island, South Carolina|Sullivan's Island]] to Fort Sumter, a substantial fortress controlling the entrance of Charleston Harbor. An attempt by U.S. President [[James Buchanan]] to reinforce and resupply Anderson, using the unarmed merchant ship ''[[Star of the West]]'', failed when it was fired upon by shore batteries on January 9, 1861. South Carolina authorities then seized all Federal property in the Charleston area, except for Fort Sumter. ||| ||| ||| +1 Battle of France ||| World War II ||| The '''Battle of France''', also known as the '''Fall of France''', was the German invasion of [[France]] and the [[Low Countries]] during the [[World War II|Second World War]], beginning on 10 May 1940, defeating primarily French forces. The battle consisted of two main operations. In the first, ''Fall Gelb'' (Case Yellow), German armoured units pushed through the [[Ardennes]] and then along the [[Somme (river)|Somme]] valley to cut off and [[Encirclement|surround]] the [[Allies of World War II|Allied]] units that had advanced into Belgium. When British, Belgian and adjacent French forces were pushed back to the sea by the highly mobile and well-organized German operation, the British government decided to evacuate the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) as well as several French divisions at [[Battle of Dunkirk|Dunkirk]] in [[Dunkirk evacuation|Operation Dynamo]]. ||| ||| ||| +1 Battle of Fuengirola ||| Peninsular War ||| The town of [[Fuengirola]] has been an important trade town since the Middle Ages. To defend it against invasion from the sea, the [[Moors]] had built a stone castle on a hill between the [[Mediterranean]] and the [[Fuengirola River]]. During the [[Peninsular War]] the area of [[Costa del Sol]] was considered of secondary importance and it was seized by the French forces with little opposition and until 1810 the partisan activity in the region was close to none. That is why, after suffering losses in the fights in the interior, some Polish units of the [[Duchy of Warsaw]] were sent there in October 1810 to serve as a garrison and to rest. ||| Background ||| ||| +1 Battle of Garnett's & Golding's Farm ||| Peninsula Campaign ||| The '''Battle of Garnett's and Golding's Farms''' took place June 27–28, 1862, in [[Henrico County, Virginia]], as part of the [[Seven Days Battles]] of the [[American Civil War]]'s [[Peninsula Campaign]]. While the [[Battle of Gaines's Mill|battle at Gaines's Mill]] raged north of the [[Chickahominy River]], the forces of [[Confederate States Army|Confederate]] general [[John B. Magruder]] conducted a reconnaissance in force that developed into a minor attack against the [[Union Army|Union]] line south of the river at Garnett's Farm. The Confederates attacked again near Golding's Farm on the morning of June 28 but in both cases were easily repulsed. The action at the Garnett and Golding farms accomplished little beyond convincing McClellan that he was being attacked from both sides of the Chickahominy. ||| ||| ||| +1 Battle of Garnett's & Golding's Farm ||| Seven Days Battles ||| The '''Battle of Garnett's and Golding's Farms''' took place June 27–28, 1862, in [[Henrico County, Virginia]], as part of the [[Seven Days Battles]] of the [[American Civil War]]'s [[Peninsula Campaign]]. While the [[Battle of Gaines's Mill|battle at Gaines's Mill]] raged north of the [[Chickahominy River]], the forces of [[Confederate States Army|Confederate]] general [[John B. Magruder]] conducted a reconnaissance in force that developed into a minor attack against the [[Union Army|Union]] line south of the river at Garnett's Farm. The Confederates attacked again near Golding's Farm on the morning of June 28 but in both cases were easily repulsed. The action at the Garnett and Golding farms accomplished little beyond convincing McClellan that he was being attacked from both sides of the Chickahominy. ||| ||| ||| +1 Battle of Gazala ||| World War II ||| The '''Battle of Gazala''' (near modern town of ''Ayn al Ghazālah'') was fought during the [[Western Desert Campaign]] of the [[World War II|Second World War]], around the port of [[Tobruk]] in [[Libya]] from 26 May to 21 June 1942. The combatants on the [[Axis Powers|Axis]] side were the [[German Panzer Army Afrika|''Panzerarmee Afrika'']] ([[Colonel-General]] [[Erwin Rommel]]), consisting of [[Nazi Germany|German]] and [[Kingdom of Italy (1861–1946)|Italian]] units and the [[Allies of World War II|Allied]] forces of the [[British Eighth Army|Eighth Army]] (Lieutenant-General [[Neil Ritchie]]) under the supervision of the Commander-in-Chief Middle East, General Sir [[Claude Auchinleck]]. The Axis distracted the British with a decoy attack in the north and made the main attack round the southern flank of the Gazala position. The advance succeeded but the defence of the French garrison of [[Bir Hakeim]] at the southern end of the line left the Axis with a long and vulnerable supply route behind the British line. ||| ||| ||| +1 Battle of Glenmalure ||| Desmond Rebellions ||| '''The Battle of Glenmalure''' ({{lang-ga|Cath Ghleann Molúra}}) took place in [[Republic of Ireland|Ireland]] in 1580 during the [[Desmond Rebellions]]. An Irish [[Catholic church|Catholic]] force made up of the [[Gaels|Gaelic]] clans from the [[Wicklow Mountains]] led by [[Fiach MacHugh O'Byrne]] and James Eustace, Viscount Baltinglas of [[the Pale]], defeated an [[England|English]] army under [[Arthur Grey, 14th Baron Grey de Wilton]], at the O'Byrnes' mountain stronghold of [[Glenmalure]]. ||| ||| ||| +1 Battle of Gloucester (1775) ||| American Revolutionary War ||| The '''Battle of Gloucester''' was a [[skirmish]] fought early in the [[American Revolutionary War]] at [[Gloucester, Massachusetts]] on August 8 or 9, 1775. [[Royal Navy]] [[Captain (Royal Navy)|Captain]] [[John Linzee]], commanding the [[sloop-of-war]] [[HMS Falcon (1771)|HMS ''Falcon'']], spotted two [[schooner]]s that were returning from the [[West Indies]]. After capturing one schooner, Linzee chased the second one into Gloucester Harbor, where it was grounded. The townspeople called out their [[militia]], captured British seamen sent to seize the grounded schooner, and recovered the captured ship as well. ||| ||| ||| +1 Battle of Gloucester (1777) ||| American Revolutionary War ||| The '''Battle of Gloucester''' was a skirmish fought on November 25, 1777, during the [[Philadelphia campaign]] of the [[American Revolutionary War]]. It was the first battlefield command for the [[Marquis de Lafayette]]. ||| ||| ||| +1 Battle of Goliad ||| Texas Revolution ||| The '''Battle of Goliad''' was the second skirmish of the [[Texas Revolution]]. In the early-morning hours of October 9, 1835, rebellious Texas settlers attacked the [[Mexican Army]] soldiers garrisoned at [[Presidio La Bahía]], a fort near the [[Mexican Texas]] settlement of [[Goliad, Texas|Goliad]]. La Bahía lay halfway between the only other large garrison of Mexican soldiers (at [[Presidio San Antonio de Bexar]]) and the then-important Texas port of [[Copano, Texas|Copano]]. ||| ||| ||| +1 Battle of Goodenough Island ||| Pacific War ||| The '''Battle of Goodenough Island''' (22–27 October 1942), also known as Operation Drake, was a battle of the [[Pacific War|Pacific campaign]] of [[World War II]]. The [[Allies of World War II|Allies]] attacked the [[Special Naval Landing Forces|''Kaigun Rikusentai'']] (Special Naval Landing Force) stranded on [[Goodenough Island]], [[Territory of Papua|Papua]], during the [[Battle of Milne Bay]] to deny the Japanese the ability to use the island prior to the [[Buna campaign]]. 'Drake Force', consisting of the [[Australia]]n [[2/12th Battalion (Australia)|2/12th Battalion]] and attachments, landed on the southern tip of Goodenough Island at [[Mud Bay, Goodenough Island|Mud Bay]] and [[Taleba Bay]] on 22 October, and following a short but heavy fight, the Japanese forces withdrew to [[Fergusson Island]] on 27 October. After the battle, Goodenough Island was developed by the Allies and became a major base which they used for further operations later in the war. ||| ||| ||| +1 Battle of Gravia Inn ||| Greek War of Independence ||| The '''Battle of Gravia Inn''' ({{lang-el|Μάχη στο Χάνι της Γραβιάς}}) was fought between [[Greece|Greek revolutionaries]] and the [[Ottoman Empire]] during the [[Greek War of Independence]]. The Greek leader, [[Odysseas Androutsos]], with a group of 120 men defeated an [[Ottoman army]] numbering 9,000 men and artillery under the command of [[Omer Vrioni]]. ||| ||| ||| +1 Battle of Greenbrier River ||| American Civil War ||| The '''Battle of Greenbrier River''', also known as the '''Battle of Camp Bartow''', took place on October 3, 1861 in [[Pocahontas County, West Virginia|Pocahontas County, Virginia]] (now [[West Virginia]]) as part of the Operations in Western Virginia Campaign during the [[American Civil War]]. ||| ||| ||| +1 Battle of Guanzhong (1946–47) ||| Chinese Civil War ||| '''The Battle of Guanzhong''' (关中战斗) was a battle fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during the [[Chinese Civil War]] in the post-[[World War II]] era and resulted in [[communist]] victory. ||| ||| ||| +1 Battle of Guillemont ||| Western Front (World War I) ||| Wilfrid Miles noted in the [[History of the Great War|British Official History]], that the defence of Guillemont was judged by some observers, to be the best performance of the war by the German army on the [[Western Front (World War I)|Western Front]]. A pause in Anglo-French attacks at the end of August, to organise bigger combined attacks and postponements for bad weather, coincided with the largest counter-attack by the German army in the Battle of the Somme. Joffre, Foch and Haig abandoned attempts to organise large combined attacks, in favour of sequenced army attacks and the capture of the German defences from Cléry north of the Somme, to Guillemont from {{nowrap|3–6 September,}} brought the French Sixth and British Fourth armies onto ground which overlooked the German third position. Rain, congestion and reliefs of tired divisions then forced a pause in French attacks until 12 September. In the [[Battle of Ginchy]] (9 September) the Fourth Army captured the village, ready for the [[Battle of Flers–Courcelette]], (15–22 September). ||| ||| ||| +1 Battle of Guttstadt-Deppen ||| War of the Fourth Coalition ||| In the '''Battle of Guttstadt-Deppen''' on 5 and 6 June 1807, troops of the [[Russian Empire]] led by General [[Levin August, Count von Bennigsen]] attacked the [[First French Empire]] corps of [[Marshal of France|Marshal]] [[Michel Ney]]. The Russians pressed back their opponents in an action that saw Ney fight a brilliant rear guard action with his heavily outnumbered forces. During the 6th, Ney successfully disengaged his troops and pulled back to the west side of the [[Pasłęka|Pasłęka (Passarge) River]]. The action occurred during the [[War of the Fourth Coalition]], part of the [[Napoleonic Wars]]. [[Dobre Miasto|Dobre Miasto (Guttstadt)]] is on Route 51 about {{convert|20|km|mi|0|sp=us}} southwest of [[Lidzbark Warmiński|Lidzbark Warmiński (Heilsberg)]] and {{convert|24|km|mi|0|sp=us}} north of [[Olsztyn|Olsztyn (Allenstein)]]. The fighting occurred along Route 580 which runs southwest from Guttstadt to [[Kalisty|Kalisty (Deppen)]] on the Pasłęka. ||| ||| ||| +1 Battle of Haktang-ni ||| Korean War ||| The '''Battle of Haktang-Ni''' was a skirmish in the [[Korean War]] fought between [[Belgian United Nations Command|a largely Belgian]] United Nations (UN) contingent and Communist [[Chinese People's Volunteers]] between 9–13 October 1951, just north of the city of [[Chorwon]] just over the [[North Korea]]n border. ||| ||| ||| +1 Battle of Haman ||| Korean War ||| The '''Battle of Haman''' was one engagement in the larger [[Battle of Pusan Perimeter]] between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from August 31 to September 19, 1950, in the vicinity of [[Haman County]] in [[South Korea]]. The engagement ended in a victory for the United Nations after large numbers of [[United States]] and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack on the town of Haman. ||| ||| ||| +1 Battle of Hel ||| Invasion of Poland ||| The '''Battle of Hel''' was one of the longest battles of the [[Invasion of Poland (1939)|Invasion of Poland]] during [[World War II]]. ||| ||| ||| +1 Battle of Hill Eerie ||| Korean War ||| The '''Battle of Hill Eerie''' refers to several [[Korean War]] engagements between the [[United Nations]] forces and the [[Chinese military|Chinese Communist Forces]] (CCF) in 1952 at Hill Eerie, a military outpost about ten miles west of [[Ch'orwon]]. It was taken several times by both sides; each sabotaging the others' position. ||| ||| ||| +1 Battle of Hlobane ||| Anglo-Zulu War ||| The '''Battle of Hlobane''' was a battle of the [[Anglo-Zulu War]] of 1879 that took place at [[Hlobane]], near the current town of [[Vryheid]] in [[KwaZulu-Natal]], South Africa. ||| ||| ||| +1 Battle of Hohenlinden ||| French Revolutionary Wars ||| The '''Battle of Hohenlinden''' was fought on 3 December 1800 during the [[French Revolutionary Wars]]. A [[French First Republic|French]] army under [[Jean Victor Marie Moreau]] won a decisive victory over the [[Habsburg Monarchy|Austrians]] and [[Electorate of Bavaria|Bavarians]] led by [[Archduke John of Austria]]. After being forced into a disastrous retreat, the allies were compelled to request an armistice that effectively ended the [[War of the Second Coalition]]. [[Hohenlinden]] is 33 km east of [[Munich]] in modern Germany. ||| ||| ||| +1 Battle of Horseshoe Bend (1814) ||| War of 1812 ||| The '''Battle of Horseshoe Bend''' (also known as ''Tehopeka'', ''Tohopeka'', ''Cholocco Litabixbee'', or ''The Horseshoe''), was fought during the [[War of 1812]] in the [[Mississippi Territory]], now central [[Alabama]]. On March 27, 1814, [[United States]] forces and [[Native Americans in the United States|Indian]] allies under Major General [[Andrew Jackson]] defeated the [[Red Sticks]], a part of the [[Creek people|Creek]] Indian tribe who opposed American expansion, effectively ending the [[Creek War]]. ||| ||| ||| +1 Battle of Inkerman ||| Crimean War ||| The '''Battle of Inkerman''' was fought during the [[Crimean War]] on 5 November 1854 between the allied armies of [[United Kingdom of Great Britain and Ireland|Britain]], [[Second French Empire|France]] and [[Ottoman Empire]] against the Imperial [[Russian Empire|Russia]]n Army. The battle broke the will of the Russian Army to defeat the allies in the field, and was followed by the [[Siege of Sevastopol (1854–1855)|Siege of Sevastopol]]. The role of troops fighting mostly on their own initiative due to the foggy conditions during the battle has earned the engagement the name 'The Soldier's Battle'. ||| ||| ||| +1 Battle of Inverlochy (1645) ||| Wars of the Three Kingdoms ||| Montrose, through his lieutenant, MacColla, (who commanded the [[Irish expedition to Scotland 1644|2000 Irish troops]] sent by the [[Confederate Ireland|Irish Confederates]]), was able to use this conflict to rally [[Clan Donald]] against [[Clan Campbell]]. In many respects, the Battle of Inverlochy was as much part of the clan war between these two deadly enemies and their allies as it was part of the [[Wars of the Three Kingdoms]], and that is how it was portrayed in Gaelic folklore. ||| ||| ||| +1 Battle of Jackson, Mississippi ||| American Civil War ||| The '''Battle of Jackson''', fought on May 14, 1863, in [[Jackson, Mississippi]], was part of the [[Vicksburg Campaign]] in the [[American Civil War]]. [[Union Army|Union]] commander [[Major general (United States)|Maj. Gen.]] [[Ulysses S. Grant]] and the [[Army of the Tennessee]] defeated [[Confederate States of America|Confederate]] [[General officers in the Confederate States Army#Major general|General]] [[Joseph E. Johnston]], seizing the city, cutting supply lines, and opening the path to the west and the [[Battle of Vicksburg|Siege of Vicksburg]]. ||| ||| ||| +1 Battle of Jaguarão ||| Uruguayan War ||| The '''Battle of Jaguarão''' was fought in the town of [[Jaguarão]] in the then province of [[Rio Grande do Sul]], on 27 January 1865, between the Imperial Brazilian Army and a Uruguayan militia during the [[Uruguayan War]]. ||| ||| ||| +1 Battle of Jordanów ||| Invasion of Poland ||| The '''Battle of Jordanów''' took place on 1–3 September 1939, during the [[Invasion of Poland (1939)|Invasion of Poland]] and the opening stages of [[World War II]]. It was fought between the [[German XVIII Panzer Corps]] of Gen.E.Beyer and the [[Polish 10th Motorized Cavalry Brigade]] under Col. [[Stanisław Maczek]]. ||| ||| ||| +1 Battle of Jordanów ||| World War II ||| The '''Battle of Jordanów''' took place on 1–3 September 1939, during the [[Invasion of Poland (1939)|Invasion of Poland]] and the opening stages of [[World War II]]. It was fought between the [[German XVIII Panzer Corps]] of Gen.E.Beyer and the [[Polish 10th Motorized Cavalry Brigade]] under Col. [[Stanisław Maczek]]. ||| ||| ||| +1 Battle of Ka-san ||| Battle of Pusan Perimeter ||| The '''Battle of Ka-san''' was an engagement between [[United Nations]] (UN) and [[North Korean]] forces early in the [[Korean War]] from September 1 to September 15, 1950, in the vicinity of [[Ka-san]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Kaiapit ||| World War II ||| The '''Battle of Kaiapit''' was an action fought in 1943 between Australian and [[Empire of Japan|Japanese]] forces in [[New Guinea]] during the [[Finisterre Range campaign]] of [[World War II]]. Following the landings [[landing at Nadzab|at Nadzab]] and [[landing at Lae|at Lae]], the [[Allies of World War II|Allies]] attempted to exploit their success with an advance into the upper [[Markham Valley]], starting with [[Kaiapit]]. The Japanese intended to use Kaiapit to threaten the Allied position at [[Nadzab]], and to create a diversion to allow the Japanese garrison at [[Lae]] time to escape. ||| ||| ||| +1 Battle of Kampot ||| Cambodian Civil War ||| The '''Battle of Kampot''' was a major battle of the [[Vietnam War]], also a part of the [[Cambodian Civil War]]. From February 26 to April 2, 1974, Cambodian government troops battled [[Khmer Rouge]] guerillas for the control of [[Kampot (city)|Kampot]] city. ||| ||| ||| +1 Battle of Kasserine Pass ||| World War II ||| The '''Battle of Kasserine Pass''' took place during the [[Tunisia Campaign]] of [[World War II]] in February 1943. Kasserine Pass is a {{convert |2|mi|km|abbr=on}} wide gap in the Grand Dorsal chain of the [[Atlas Mountains]] in west central [[Tunisia]]. The [[Axis powers|Axis forces]] led by ''[[Generalfeldmarschall]]'' [[Erwin Rommel]], were primarily from the ''Afrika Korps'' Assault Group, elements of the Italian ''Centauro'' Armoured Division and two [[Panzer division]]s detached from the [[5th Panzer Army]] against [[Allies of World War II|Allied forces]] of the [[II Corps (United States)|U.S. II Corps]] ([[Major general (United States)|Major General]] [[Lloyd Fredendall]]) and the British [[6th Armoured Division (United Kingdom)|6th Armoured Division]] ([[Major-general (United Kingdom)|Major General]] [[Charles Keightley]]), parts of the British [[First Army (United Kingdom)|First Army]] ([[Lieutenant-general (United Kingdom)|Lieutenant-General]] [[Kenneth Arthur Noel Anderson|Kenneth Anderson]]). ||| ||| ||| +1 Battle of Kałuszyn ||| World War II ||| Losses on both sides were significant. The commanding officer of 44th regiment, Maj. Krawutschke, committed suicide. In the course of the heavy fighting, the town was almost completely destroyed [http://www.minskmaz.com.pl/phist,3,Kaluszyn.html]. Most of the substantial Jewish population of the town was deported by Germans to the [[Warsaw ghetto]] or [[Treblinka]][http://www.jewishgen.org/yizkor/kaluszyn/kal411.html]. After the end of [[World War II]], the battle of Kałuszyn was one of 24 battles of the Polish Defensive War to be featured at the [[Tomb of Unknown Soldier in Warsaw]]. ||| Aftermath ||| ||| +1 Battle of Kilcullen ||| Irish Rebellion of 1798 ||| The outbreak of the [[Irish Rebellion of 1798|rebellion]] on the night of 23/24 May 1798 led to failed assaults on [[battle of Ballymore-Eustace|Ballymore-Eustace]], [[battle of Naas|Naas]], and [[battle of Prosperous|Prosperous]]. As news of the rising spread throughout [[Kildare]], [[Kilcullen]] rebels began to mobilise in the ancient hill-top churchyard in the townland now known as [[Old Kilcullen]]. About 200 had gathered by daybreak, including a number of survivors of the attack on [[battle of Ballymore-Eustace|Ballymore-Eustace]], when they were spotted by local military under the command of Lieutenant General [[Ralph Dundas]], Commander of the Army of the Midlands, whose headquarters, [[Castlemartin House and Estate|Castle Martin]], was located only three miles away. Dundas quickly mustered a combined force of about 120 [[infantry]], [[cavalry]] and [[dragoons]] and marched to disperse the rebel gathering. ||| Old Kilcullen 7 a.m ||| ||| +1 Battle of Killala ||| Irish Rebellion of 1798 ||| The '''Battle of Killala''' was an engagement during the [[Irish Rebellion of 1798]]. It was fought on Sunday, 23 September 1798, between forces of the British Crown and a combined force of Irish rebels and a small number of French troops at [[Killala]], [[County Mayo]], Ireland. ||| ||| ||| +1 Battle of Kings Mountain ||| American Revolutionary War ||| The '''Battle of Kings Mountain''' was a [[decisive victory]] in [[South Carolina]] for the [[Patriot (American Revolution)|Patriot]] militia over the [[Loyalist (American Revolution)|Loyalist]] militia in the [[Southern theater of the American Revolutionary War|Southern campaign]] of the [[American Revolutionary War]]. The battle took place on October 7, 1780, {{convert|9|mi}} south of the present-day town of [[Kings Mountain, North Carolina]] in rural [[Cherokee County, South Carolina]], where the Patriot militia defeated the Loyalist militia commanded by British Major [[Patrick Ferguson]] of the [[71st Regiment of Foot, Fraser's Highlanders|71st Foot]]. ||| ||| ||| +1 Battle of Kitcheners' Wood ||| Western Front (World War I) ||| On the night of 22 April 1915, the Germans launched the first [[poison gas]] attack of the war on the [[Western Front (World War I)|western front]]. The object of their attack was the [[Ypres Salient]], and they concentrated their initial attack on two French divisions, the 45th (Algerian) and 79th (Territorial). Attacking in the evening of the 21st, the two French divisions found themselves ill-prepared to cope with the [[chlorine]] gas and promptly broke, leaving a gap in the line four miles wide. ||| Background ||| ||| +1 Battle of Ko Chang ||| Franco-Thai War ||| The '''Battle of Ko Chang''' took place on 17 January 1941 during the [[Franco-Thai War]] and resulted in a decisive victory by the [[Vichy French|French]] over the [[Thailand|Royal Thai]] [[Royal Thai Navy|Navy]]. During the battle, a flotilla of French warships attacked a smaller force of Thai vessels, including a [[coastal defence ship]]. ||| ||| ||| +1 Battle of Kolberg (1945) ||| World War II ||| The '''Battle of Kolberg''' or '''Battle of Kołobrzeg''' (also, battle for '''Festung Kolberg''') was the taking of the city of [[Kołobrzeg]], then the city of ''Kolberg'' in German [[Pomerania Province (1815-1945)|Pomerania]] by the [[Soviet Army]] and its [[Ludowe Wojsko Polskie|Polish allies]] from [[Nazi Germany|Nazi German]] forces during the [[World War II]] [[East Pomeranian Offensive]]. Between March 4 and March 18, 1945, there was major [[urban fighting]] of the [[Soviet Union|Soviet]] and Polish forces against the German army for the control over the city. The Germans succeeded in evacuating much of their military personnel and refugees from the city via sea before it was taken by the Poles on March 18. ||| ||| ||| +1 Battle of Korsakov ||| Russo-Japanese War ||| The '''Battle of Korsakov''', a [[Naval battle|naval engagement]] of the [[Russo-Japanese War]], was fought on 20 August 1904. The battle foiled an attempt by the Russian [[cruiser]] {{ship|Russian cruiser|Novik|1900|2}} at escaping [[Lüshunkou|Port Arthur]] to join with Russian forces at Vladivostok after the Russian Pacific Squadron was scattered after the [[Battle of the Yellow Sea]]. ''Novik'' was caught coaling at Korsakov on the island of Sakhalin by the {{ship|Japanese cruiser|Tsushima||2|up=yes}}. After attempting to escape and fighting an engagement with ''Tsushima'', ''Novik''{{'}}s crew scuttled their vessel before ''Tsushima'' and the newly arrived cruiser {{ship|Japanese cruiser|Chitose||2}} could finish off the Russian ship. ||| ||| ||| +1 Battle of Kowel ||| Eastern Front (World War I) ||| The Brusilov offensive began on June 4, 1916, it was the greatest [[Russian Empire|Russian]] feat of arms during World War I, and among the [[most lethal battles in world history]]. It was a major offensive against the armies of the [[Central Powers]] on the [[Eastern Front (World War I)|Eastern Front]]. Mounting pressure from the western Allies caused the Russians to hurry their preparations. Brusilov amassed four armies totalling 40 infantry divisions and 15 cavalry divisions. He faced 39 Austrian infantry divisions and 10 cavalry divisions formed in a row of three defensive lines, although later German reinforcements were brought up. ||| Background ||| ||| +1 Battle of Košare ||| Kosovo War ||| The '''Battle of Košare''' ({{lang-sr|Бој на Кошарама, ''Boj na Košarama''; or ''Пакао Кошара'', ''Pakao Košara''}}; {{lang-sq|Beteja e Kosharës}}) was fought during the [[Kosovo War]] between the [[Military of Serbia and Montenegro|FR Yugoslav Forces]] and the [[Kosovo Liberation Army]] (KLA), the latter supported by the [[NATO]] and [[Albanian Army]]. The battle was fought around Košare on the border between FR Yugoslavia and Albania from 9 April until 10 June during the [[NATO bombing of FR Yugoslavia]]. ||| ||| ||| +1 Battle of Kramatorsk ||| 2014 pro-Russian unrest in Ukraine ||| An entrenched standoff between the [[Armed Forces of Ukraine]] and pro-Russian insurgents affiliated with the [[Donetsk People's Republic]] took place from 12 April until 5 July 2014. During the [[2014 pro-Russian unrest in Ukraine|rising unrest in Ukraine]] in the aftermath of the [[2014 Ukrainian revolution]], the city of [[Kramatorsk]] in [[Donetsk Oblast]] came under the control of the breakaway [[Donetsk People's Republic]] on 12 April. In an effort to retake the city, the Ukrainian government launched a counter-offensive against the separatist insurgents, who had taken up positions in the city. The insurgents withdrew from city on 5 July, allowing Ukrainian forces to subsequently recapture the city, ending the standoff. ||| ||| ||| +1 Battle of Kupres (1942) ||| World War II in Yugoslavia ||| The '''Battle of Kupres''' ({{Lang-hr|Bitka za Kupres}}) was a battle fought in 1942 during [[World War II in Yugoslavia]] between the forces of the [[Independent State of Croatia]] and the [[Yugoslav Partisans]], in and around the town of [[Kupres]] in western [[Bosnia (region)|Bosnia]]. The Partisans launched three concentrated attacks against the garrison of 1,500 men during the nights of 11/12 August, 14 August and 19 August. Although outnumbered, the [[Black Legion (Ustaše militia)|Black Legion]], [[Croatian Home Guard (Independent State of Croatia)|Croatian Home Guard]] and local militia units successfully defended the town against several Partisan brigades. ||| ||| ||| +1 Battle of Kupres (1994) ||| Bosnian War ||| The '''Battle of Kupres''' ([[Bosnian language|Bosnian]], [[Croatian language|Croatian]], {{lang-sr|''Bitka za Kupres''}}) was a battle of the [[Bosnian War]], fought between the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH) and the [[Croatian Defence Council]] (HVO) on one side and the [[Army of Republika Srpska]] (VRS) on the other from 20 October to 3 November 1994. It marks the first tangible evidence of the [[Bosniak]]-[[Bosnian Croat|Croat]] alliance set out in the [[Washington Agreement]] of March 1994, brokered by the [[United States]] to end the [[Croat–Bosniak War]] fought between the ARBiH and the HVO in [[Bosnia and Herzegovina]]. The ARBiH and the HVO were not coordinated at first, rather they launched separate operations aimed at capture of [[Kupres]]. ||| ||| ||| +1 Battle of Kurikara ||| Genpei War ||| The {{nihongo|'''battle of Kurikara'''|倶利伽羅峠の戦い|Kurikara tōge no tatakai}}, also known as the '''battle of Tonamiyama''' (砺波山), was a crucial engagement in Japan's [[Genpei War]]; in this battle the tide of the war turned in the favor of the [[Minamoto clan]]. ||| ||| ||| +1 Battle of Kwajalein ||| World War II ||| The '''Battle of Kwajalein''' was fought as part of the [[Pacific War|Pacific campaign]] of [[World War II]]. It took place from 31 January-3 February 1944, on [[Kwajalein Atoll]] in the [[Marshall Islands]]. Employing the hard-learned lessons of the [[battle of Tarawa]], the United States launched a successful twin assault on the main islands of Kwajalein in the south and [[Roi-Namur]] in the north. The Japanese defenders put up stiff resistance, although outnumbered and under-prepared. The determined defense of Roi-Namur left only 51 survivors of an original garrison of 3,500. ||| ||| ||| +1 Battle of La Malmaison ||| Nivelle Offensive ||| The final French action of the 1917 campaign of the [[World War I|First World War]], which had begun with the [[Nivelle Offensive]], was the '''Battle of La Malmaison''' ({{lang|fr|''Bataille de la Malmaison''}}) from {{nowrap|23–27 October.}} The French captured the village and fort of [[La Malmaison]] and took control of the [[Chemin des Dames]] ridge. The German 7th Army had discovered French preparations for the attack and also identified the date and time. General [[Max von Boehn (general)|Max von Boehn]] chose to defend the front positions, rather than treat them as an advanced zone and conduct the main defence north of the {{lang|de|''Canal de l'Oise à l'Aisne''}}. The German artillery was outnumbered three-to-one and on the front of the 14th Division, {{nowrap|32 German}} batteries were confronted by {{nowrap|125 French,}} which silenced most of the German guns before the attack. Gas from French bombardments on low-lying land near the canal in the Ailette valley, became so dense that the carriage of ammunition and supplies to the German front positions and removal of the wounded was made impossible. ||| ||| ||| +1 Battle of Labuan ||| Battle of North Borneo ||| The '''Battle of Labuan''' was an engagement fought between [[Allies of World War II|Allied]] and [[Empire of Japan|Japanese]] forces on the island of [[Labuan]] off Borneo during June 1945. It formed part of the Australian [[Battle of North Borneo|invasion of North Borneo]], and was initiated by the Allied forces as part of a plan to capture the [[Brunei Bay]] area and develop it into a base to support future offensives. ||| ||| ||| +1 Battle of Lacolle Mills (1812) ||| War of 1812 ||| The '''Battle of Lacolle River''' was fought on November 20, 1812, during the [[War of 1812]]. In this relatively short and fast battle, a very small garrison of [[Lower Canada|Canadian]] militia, with the assistance of Kahnawake [[Mohawk nation|Mohawk]] warriors, defended a makeshift log guardhouse on the Montreal road at the bridge over the Lacolle River (present day village of [[Lacolle, Quebec]]). ||| ||| ||| +1 Battle of Leeds ||| English Civil War ||| The '''Battle of Leeds''' was a battle in the [[English Civil War]] on 23 January 1643. ||| ||| ||| +1 Battle of Loos ||| Western Front (World War I) ||| The '''Battle of Loos''' was a [[World War I]] battle that took place in 1915 on the [[Western Front (World War I)|Western Front]]. It was the biggest British attack of 1915, the first time that the British used [[Poison gas in World War I|poison gas]] and the first mass engagement of [[Kitchener's Army|New Army]] units. The Allies tried to break through the German defences in [[County of Artois|Artois]] and [[Champagne (historical province)|Champagne]] and restore a war of movement. Despite improved methods, more ammunition and better equipment, the Franco-British attacks were contained by the German armies, except for local losses of ground. British casualties at Loos were about twice as high as German losses. ||| ||| ||| +1 Battle of Lopera ||| Spanish Civil War ||| The '''Battle of Lopera''' took place between 27 and 29 December 1936 during the [[Spanish Civil War]]. This battle took place during the Nationalist's [[Aceituna Campaign|Aceituna offensive]]. On 27 December, the XIV International Brigade launched an attack in order to occupy the Nationalist-held town of Lopera, but the attack failed after two days and the Brigade suffered appalling casualties. ||| ||| ||| +1 Battle of Lowestoft ||| Second Anglo-Dutch War ||| The '''Battle of Lowestoft''' took place on 13 June ([[New Style]]) 1665 during the [[Second Anglo-Dutch War]]. ||| ||| ||| +1 Battle of Lubrze ||| Deluge (history) ||| The '''Battle of Lubrze''' was a night battle which took place during the [[Deluge (history)|Deluge]] (part of the [[Second Northern War]]) in August 1656 between Polish forces under [[voivode]] of Kalisz [[Andrzej Karol Grudziński]] and a Swedish-Brandenburg force under [[Jan Wejhard von Wrzesowicz]]. Swedish-Brandenburg forces were coming to provide relief to the besieged town of [[Kalisz]], invested by Polish army under voivode of [[Malbork]] [[Jakub Wejher]], brother of [[Ludwik Weyher]]. ||| ||| ||| +1 Battle of Luding Bridge ||| Long March ||| The '''Battle of Luding Bridge''' ({{zh|s={{linktext|泸|定|桥}}|t={{linktext|瀘|定橋}}|p={{linktext|Lú|dìng| Qiáo}}}}) of 1935 was a controversial crossing of the [[Luding Bridge]] by the soldiers of the Fourth Regiment of the Chinese Workers and Peasants' Army during the [[Long March]]. The bridge, situated over the [[Dadu River (Sichuan)|Dadu River]] in [[Luding County]], [[Garzê Tibetan Autonomous Prefecture]], [[Sichuan]], China, was located about 80 [[kilometer]]s west of the city of [[Ya'an]] and was a river crossing vital to the Red Army. ||| ||| ||| +1 Battle of Maastricht ||| Western Front (World War II) ||| The '''Battle of Maastricht''' was one of the first battles that took place during the German Campaign on the [[Western Front (World War II)|Western Front]] during [[World War II]]. [[Maastricht]] was a key city in order to capture the Belgian [[Fort Eben-Emael]] and split the allied armies in half. ||| ||| ||| +1 Battle of Malvern Hill ||| Peninsula Campaign ||| The Seven Days Battles were the climax of the [[Peninsula Campaign]], during which McClellan's Army of the Potomac sailed around the Confederate lines, landed at the tip of the [[Virginia Peninsula]], southeast of Richmond, and struck inland towards the Confederate capital. Confederate [[commander-in-chief]] [[Joseph E. Johnston]] fended off McClellan's repeated attempts to take the city, slowing Union progress on the peninsula to a crawl. When Johnston was wounded, Lee took command and launched a series of counterattacks, collectively called the Seven Days Battles. These attacks culminated in the action on Malvern Hill. ||| ||| ||| +1 Battle of Malvern Hill ||| Seven Days Battles ||| The '''Battle of Malvern Hill''', also known as the '''Battle of Poindexter's Farm''', was fought on July 1, 1862 between the [[Confederate States of America|Confederate]] [[Army of Northern Virginia]], led by [[General (CSA)|Gen.]] [[Robert E. Lee]], and the [[Union (Civil War)|Union]] [[Army of the Potomac]] under [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]]. It was the final battle of the [[Seven Days Battles]] during the [[American Civil War]], taking place on a {{convert|130|ft|m|adj = on}} elevation of land known as [[Malvern Hill]], near the Confederate capital of [[Richmond, Virginia]] and just one mile (1.6 km) from the [[James River]]. More than fifty thousand soldiers from each side took part, using more than two hundred pieces of artillery and three warships. ||| ||| ||| +1 Battle of Manado ||| Pacific War ||| The '''Battle of Manado''' was a battle of the [[Pacific War|Pacific Theatre]] of World War II. It occurred at [[Manado]] (also spelled Menado) on the Minahasa peninsula on the northern part of the island of Celebes (now known as [[Sulawesi]]), from 11–13 January 1942 as an attempt to open a passage to attack Australia through the eastern part of [[Dutch East Indies]]. ||| ||| ||| +1 Battle of Medellín ||| Peninsular War ||| In the [[Peninsular War]], the '''Battle of Medellín''' was fought on 28 March 1809 and resulted in a victory of the [[France|French]] under Marshal [[Claude Victor|Victor]] against the [[Spain|Spanish]] under General [[Gregorio García de la Cuesta|Don Gregorio Garcia de la Cuesta]]. The battle marked the first major effort by the French to occupy Southern Spain, a feat mostly completed with the victory at the [[Battle of Ocana]] later in the year. ||| ||| ||| +1 Battle of Messines (1917) ||| Western Front (World War I) ||| The '''Battle of Messines''' {{nowrap|(7–14 June 1917)}} was an offensive conducted by the British [[Second Army (United Kingdom)|Second Army]], under the command of [[Herbert Plumer, 1st Viscount Plumer|General Sir Herbert Plumer]], on the [[Western Front (World War I)|Western Front]] near the village of [[Mesen|Messines]] in Belgian [[West Flanders]] during the [[First World War]].{{efn|Spellings and place names follow the usage in the British Official History (1948) except in the sections where the source is in German, when equivalent forms are used. Modern Belgian usage has been avoided, because the Belgian state has French, Dutch and German as [[Languages of Belgium|official languages]] and a local system of precedence, not relevant to events in 1917.{{sfn|Portal Belgium.be|2012|nopp=y}}}} The [[Nivelle offensive]] in April and May had failed to achieve its more ambitious aims, led to the demoralisation of French troops and the dislocation of the Anglo-French strategy for 1917. The offensive at Messines forced the Germans to move reserves to Flanders from the Arras and Aisne fronts, which relieved pressure on the French. The tactical objective of the attack at Messines was to capture the German defences on the ridge, which ran from [[Ploegsteert Wood|Ploegsteert]] (Plugstreet) Wood in the south, through Messines and Wytschaete to Mt. Sorrel, to deprive the German 4th Army of the high ground south of [[Ypres]]. The ridge commanded the British defences and back areas further north, from which the British intended to conduct the 'Northern Operation', to advance to Passchendaele Ridge, then capture the Belgian coast up to the Dutch frontier. ||| ||| ||| +1 Battle of Metz ||| World War II ||| The '''Battle of Metz''' was a battle fought during [[World War II]] at the city of [[Metz]], France, from late September 1944 through mid-December between the [[United States Army]] and the [[German Army (Wehrmacht)|German Army]]. Following the [[Operation Cobra]] Allied breakout after the [[Normandy landings]] the U.S. Third Army attacked the heavily fortified city. {{cite video ||| ||| ||| +1 Battle of Mine Run ||| American Civil War ||| The '''Battle of Mine Run''', also known as '''Payne's Farm''', or '''New Hope Church''', or the '''Mine Run Campaign''' (November 27 - December 2, 1863), was conducted in [[Orange County, Virginia]], in the [[American Civil War]]. ||| ||| ||| +1 Battle of Minorca (1939) ||| Spanish Civil War ||| The '''Battle of Minorca''' took place in [[Minorca]] between the 7 and 9 February 1939 during the [[Spanish Civil War]]. ||| ||| ||| +1 Battle of Mont Saint-Quentin ||| Western Front (World War I) ||| The '''Battle of Mont Saint-Quentin''' was a battle on the [[Western Front (World War I)|Western Front]] during [[World War I]]. As part of the [[Allies of World War I|Allied]] counteroffensives on the Western Front in the late summer of 1918, the [[Australian Corps]] crossed the [[Somme River]] on the night of August 31, and broke the [[German Empire|German]] lines at [[Mont Saint-Quentin]] and [[Péronne, Somme|Péronne]]. The [[Fourth Army (United Kingdom)|British Fourth Army]]'s commander, General [[Henry Rawlinson, 1st Baron Rawlinson|Henry Rawlinson]], described the Australian advances of August 31 – September 4 as the greatest military achievement of the war. During the battle Australian troops stormed, seized and held the key height of Mont Saint-Quentin (overlooking Péronne), a pivotal German defensive position on the line of the Somme. ||| ||| ||| +1 Battle of Monte Cassino ||| World War II ||| The '''Battle of Monte Cassino''' (also known as the '''Battle for Rome''' and the '''Battle for Cassino''') was a costly series of four assaults by the [[Allies of World War II|Allies]] against the [[Winter Line]] in [[Italy]] held by [[Axis powers|Axis]] forces during the [[Italian Campaign (World War II)|Italian Campaign]] of [[World War II]]. The intention was a [[Breakthrough (military)|breakthrough]] to [[Rome]]. ||| ||| ||| +1 Battle of Montebello (1859) ||| Second Italian War of Independence ||| The '''Battle of Montebello''' was fought on May 20, 1859 at Montebello (in what is now [[Lombardy]], northern [[Italy]]). It was a minor engagement of the [[Second Italian War of Independence]], fought between [[Kingdom of Sardinia|Piedmontese]] cavalry and French infantry against Austrian troops.Because of this battle, the Austrian commander in chief was obliged to keep some troops to cover the southern part of the front. ||| ||| ||| +1 Battle of Montjuïc (1641) ||| Catalan Revolt ||| '''Battle of Montjuïc''' took place on 26 January 1641 during the [[Catalan Revolt]]. A [[Kingdom of Spain|Spanish]] force under [[Pedro Fajardo de Zúñiga y Requesens|Pedro Fajardo]] launched an attack on a [[Catalonia|Catalan]] rebel force, made up mainly of [[Miquelet (militia)|Miquelet]] militias led by [[Francesc de Tamarit]], and their [[France|French]] allies. ||| ||| ||| +1 Battle of Moscow ||| Eastern Front (World War II) ||| The '''Battle of Moscow''' ({{lang-ru|Битва за Москву}}) is the name given by Soviet historians to two periods of strategically significant fighting on a {{convert|600|km|mi|abbr=on}} sector of the [[Eastern Front (World War II)|Eastern Front]] during [[World War II]]. It took place between October 1941 and January 1942. The Soviet defensive effort frustrated [[Adolf Hitler|Hitler]]'s attack on [[Moscow]], capital of the [[Union of Soviet Socialist Republics]] (USSR) and the largest Soviet city. Moscow was one of the primary [[Strategic goal (military)|military]] and political objectives for [[Axis forces]] in their [[Operation Barbarossa|invasion of the Soviet Union]]. ||| ||| ||| +1 Battle of Málaga (1937) ||| Spanish Civil War ||| The '''Battle of Málaga''' was the culmination of an offensive in early [[Spanish Civil War chronology 1937|1937]] by the combined [[Nationalist Spain|Nationalist]] and [[Kingdom of Italy (1861–1946)|Italian]] forces to eliminate [[Second Spanish Republic|Republican]] control of the [[Málaga (province)|province of Málaga]] during the [[Spanish Civil War]]. The participation of [[Morocco|Moroccan]] [[regulares|regulars]] and Italian [[tank]]s from the recently arrived [[Corpo Truppe Volontarie]] resulted in a complete [[rout]] of the [[Spanish Republican Army]] and the capitulation of [[Málaga]] in less than a week. ||| ||| ||| +1 Battle of Nam River ||| Battle of Pusan Perimeter ||| The '''Battle of Nam River''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from August 31 to September 19, 1950, in the vicinity of the [[Nam River (Korea)|Nam River]] and the [[Naktong River]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops were able to repel a North Korean attack across the river. ||| ||| ||| +1 Battle of Nam River ||| Korean War ||| The '''Battle of Nam River''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from August 31 to September 19, 1950, in the vicinity of the [[Nam River (Korea)|Nam River]] and the [[Naktong River]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops were able to repel a North Korean attack across the river. ||| ||| ||| +1 Battle of Narva (1700) ||| Great Northern War ||| The '''Battle of [[Narva]]''' ({{lang-rus|Битва на Нарве}}; {{lang-sv|Slaget vid Narva}}) on 19 November 1700 (30 November, [[New Style|N.S.]]) was an early battle in the [[Great Northern War]]. A [[Sweden|Swedish]] relief army under [[Charles XII of Sweden]] defeated a [[Russia]]n siege force three to four times its size. Before, Charles XII had forced [[Denmark-Norway]] to sign the [[Treaty of Travendal]]. Narva was not followed by further advances of the Swedish army into Russia, instead, Charles XII turned southward to expel [[August the Strong]] from [[Livonia]] and [[Polish–Lithuanian Commonwealth|Poland-Lithuania]]. Tsar [[Peter the Great]] of Russia took Narva in a [[Battle of Narva (1704)|second battle]] in 1704. ||| ||| ||| +1 Battle of Narva (1704) ||| Great Northern War ||| The '''Battle of Narva''' was the second [[Tsardom of Russia|Russian]] siege of [[Swedish Empire|Swedish]] [[Narva]] during the [[Great Northern War]], resulting in the capture of the town by Russia on August 9, 1704, and the subsequent massacre of some of its Swedish inhabitants. ||| ||| ||| +1 Battle of Nashville ||| American Civil War ||| The '''Battle of Nashville''' was a two-day battle in the [[Franklin-Nashville Campaign]] that represented the end of large-scale fighting in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]]. It was fought at [[Nashville, Tennessee]], on December 15–16, 1864, between the [[Confederate States Army|Confederate]] [[Army of Tennessee]] under [[Lieutenant General (CSA)|Lieutenant General]] [[John Bell Hood]] and Federal forces under [[Major general (United States)|Major General]] [[George H. Thomas]]. In one of the largest victories achieved by the [[Union Army]] during the war, Thomas attacked and routed Hood's army, largely destroying it as an effective fighting force. ||| ||| ||| +1 Battle of New Orleans ||| War of 1812 ||| The '''Battle of New Orleans''' was a series of engagements fought between December 24, 1814, and January 8, 1815, together constituting the final major and most one-sided battle of the [[War of 1812]]. ||| ||| ||| +1 Battle of Newtown ||| American Revolutionary War ||| The '''Battle of Newtown''' (August 29, 1779), was a major battle of the [[Sullivan Expedition]], an armed offensive led by General [[John Sullivan (general)|John Sullivan]] that was ordered by the [[Continental Congress]] to end the threat of the [[Iroquois]] who had sided with the [[Kingdom of Great Britain|British]] in the [[American Revolutionary War]]. [[John Butler (pioneer)|John Butler]] and [[Joseph Brant]] did not want to make a stand at Newtown, but proposed instead to harass the enemy on the march, but they were overruled by [[Sayenqueraghta]] and other Indian chiefs. The '''Battle of Chemung''' (August 13, 1779) was the only other major battle of the [[Sullivan Expedition]] where the Continental force lost six dead and nine wounded. ||| ||| ||| +1 Battle of Niš (1689) ||| Great Turkish War ||| The '''Battle of Niš''' was fought on 24 September 1689, near the city of [[Niš]] in southern [[Serbia]], between the forces of the [[Ottoman Empire]], and the forces of the [[Holy Roman Empire]] as part of the [[Great Turkish War]]. ||| ||| ||| +1 Battle of Nájera ||| Castilian Civil War ||| Peter and Henry had been in armed conflict, the [[Castilian Civil War]], for some time before the intervention of foreign powers was sought. Peter begged assistance from the Black Prince in [[Bordeaux]] to restore him to his throne. [[James IV of Majorca]] also agreed to support Peter. ||| ||| ||| +1 Battle of Oenophyta ||| First Peloponnesian War ||| The '''Battle of Oenophyta''' took place between [[Athens]] and the [[Boeotia]]n [[city-state]]s in 457 BC during the [[First Peloponnesian War]]. ||| ||| ||| +1 Battle of Old Fort Wayne ||| American Civil War ||| The '''Battle of Old Fort Wayne''' (also known as '''Maysville''', '''Beattie's Prairie''', or '''Beaty's Prairie''') was an [[American Civil War]] battle on October 22, 1862 in [[Delaware County, Oklahoma|Delaware County]] in what is now eastern [[Oklahoma]], a part of the [[Trans-Mississippi Theater]]. ||| ||| ||| +1 Battle of Orašje ||| Bosnian War ||| The '''Battle of Orašje''' was fought during the [[Bosnian War]], from 5 May to 10 June 1995, between the [[Bosnian Serb]] [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS) and the [[Bosnian Croat]] [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) for control of the town of [[Orašje]] and its surrounding area on the south bank of the [[Sava River]]. The offensive [[codename]]d '''Operation Flame-95''' ({{lang-sr|''Operacija Plamen-95''}}) and referred to by Croatian sources as '''Operation Revenge''' ({{lang-hr|Operacija Osveta}}) was actually fought with varying intensity, with periods of combat interspersed by lulls lasting two to seven days. The heaviest fighting was reported on 15 May, when the VRS managed to break through a portion of the HVO defences near the village of Vidovice, but the breach was successfully contained and the lost ground was recovered by the HVO. ||| ||| ||| +1 Battle of Ordal ||| Peninsular War ||| The '''Battle of Ordal''' on 12 and 13 September 1813 saw a [[First French Empire]] corps led by [[Marshal of France|Marshal]] [[Louis Gabriel Suchet]] make a night assault on a position held by [[Lieutenant General]] [[Lord William Bentinck]]'s smaller Anglo-Allied and Spanish advance guard. The Allies, under the tactical direction of [[Colonel]] [[Frederick Adam]], were defeated and driven from a strong position at the Ordal defile largely because they failed to post adequate pickets. In an action the next morning at [[Vilafranca del Penedès]], the Allied cavalry clashed with the pursuing French horsemen. The actions occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. Ordal and El Lledoner are located on Highway N-340 between [[Molins de Rei]] and Vilafranca. ||| ||| ||| +1 Battle of Ormoc Bay ||| World War II ||| The '''Battle of Ormoc Bay''' was a series of air-sea battles between [[Imperial Japan]] and the United States in the [[Camotes Sea]] in the [[Philippines]] from 11 November-21 December 1944, part of the [[Battle of Leyte]] in the [[Pacific War|Pacific campaign]] of [[World War II]]. The battles resulted from Japanese operations to reinforce and resupply their forces on [[Leyte (island)|Leyte]] and U.S. attempts to interdict them. ||| ||| ||| +1 Battle of Ostrovo ||| Uprising of Peter Delyan ||| The '''Battle of Ostrovo''' occurred in 1041 near [[Arnissa|Ostrovo]], an area close to the [[Lake Ostrovo|lake of the same name]] in modern northern [[Greece]]. In 1040 [[Peter Delyan]] led an [[Uprising of Peter Delyan|uprising]] against the [[Byzantine Empire|Byzantines]] and was proclaimed [[Bulgarian Empire|Emperor of Bulgaria]]. He quickly occupied the western Balkan lands from [[Belgrade]] to [[Larissa]] but in the next year he was betrayed by his cousin [[Alusian of Bulgaria|Alusian]], who deserted from the army and blinded him. Though blind, [[Peter Delyan]] remained in command and met the Byzantines near Ostrovo. The battle itself is unclear but the Bulgarians were defeated mainly with the help of the [[Varangian Guard]], led by [[Harald Hardrada]]. The fate of the Bulgarian leader is also unknown; he may have perished in the battle. As a result the uprising was crushed and Bulgaria remained under Byzantine rule until 1185. ||| ||| ||| +1 Battle of Ostrołęka (1831) ||| November Uprising ||| The '''Battle of Ostrołęka''' of 26 May 1831 was one of the largest engagements of [[Poland]]'s [[November Uprising]]. Throughout the day, [[Poland|Polish]] forces under [[Jan Zygmunt Skrzynecki|Jan Skrzynecki]] fought for the control over the town of [[Ostrołęka]] against the assaulting [[Imperial Russia|Russian]] forces of [[Hans Karl von Diebitsch]]. Although by the end of the day the town was still in Polish hands and the two sides suffered comparable losses, the battle is usually considered a Polish defeat because of the Russian army's almost unlimited strategic reinforcement capability. The Polish Army could not similarly replenish its casualties. ||| ||| ||| +1 Battle of Overloon ||| World War II ||| The '''Battle of Overloon''' was a battle fought in the [[World War II|Second World War]] battle between [[Allies of World War II|Allied forces]] and the [[German Army (Wehrmacht)|German Army]] which took place in and around the village of [[Overloon]] in the south-east of the [[Netherlands]] between 30 September and 18 October 1944. The battle, which resulted in an Allied victory, ensued after the Allies launched ''Operation Aintree''. The Allies went on to liberate the town of [[Venray]]. ||| ||| ||| +1 Battle of P'ohang-dong ||| Battle of Pusan Perimeter ||| The '''Battle of P'ohang-dong''' was an engagement between [[United Nations]] and [[North Korean]] forces early in the [[Korean War]], with fighting continuing from 5–20 August 1950 around the town of [[P'ohang-dong]], [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after their forces were able to drive off an attempted offensive by three North Korean divisions in the mountainous eastern coast of the country. ||| ||| ||| +1 Battle of Palmito Ranch ||| American Civil War ||| The '''Battle of Palmito Ranch''' is generally reckoned as the final battle of the [[American Civil War]], since it was the last engagement between organized forces of the [[Union Army]] and [[Confederate States Army]], involving casualties. It was fought on May 12 and 13, 1865, on the banks of the Rio Grande east of [[Brownsville, Texas]], and a few miles from the seaport of [[Matamoros–Brownsville Metropolitan Area|Los Brazos de Santiago]] (now known as Matamoros). ||| ||| ||| +1 Battle of Palmyra ||| World War II ||| The '''Battle of Palmyra''' (1 July 1941) was part of the Allied invasion of [[Syria]] during the [[Syria-Lebanon campaign]] in [[World War II]]. British mechanized cavalry and an [[Arab Legion]] desert patrol broke up a [[Vichy French]] mobile column northeast of the city of [[Palmyra]]. They captured four officers and 60 men, which provoked the surrender of the Vichy garrison at Palmyra. ||| ||| ||| +1 Battle of Pea Ridge ||| American Civil War ||| The '''Battle of Pea Ridge''' (also known as the '''Battle of [[Elkhorn Tavern]]''') was a land battle of the [[American Civil War]]. It was fought March 6–8, 1862, at [[Pea Ridge, Arkansas|Pea Ridge]] in northwest [[Arkansas]], near [[Leetown, Arkansas|Leetown]]. [[United States Army|United States forces]], led by [[Brigadier general (United States)|Brig. Gen.]] [[Samuel Ryan Curtis|Samuel Curtis]], moved south from central Missouri, driving Confederate forces into northwestern Arkansas. [[General officers in the Confederate States Army#Major general|Maj. Gen.]] [[Earl Van Dorn]] launched a Confederate counteroffensive, hoping to recapture northern Arkansas and Missouri. Curtis held off the Confederate attack on the first day and drove Van Dorn's force off the field on the second. The battle, one of the few in which a Confederate army outnumbered its opponent, essentially cemented [[Union (American Civil War)|Federal]] control of [[Missouri]] and northern Arkansas. ||| ||| ||| +1 Battle of Pentemili beachhead ||| Turkish invasion of Cyprus ||| '''Pentemili''' is the Cyprus beach where troops first landed on the morning of 20 July 1974 in the [[Turkish invasion of Cyprus]]. It is located 5 miles (8 km) west of [[Kyrenia]], thus the name. For 3 days (20–22 July 1974), heavy fighting took place around the beachhead between Turkish and [[Greek Cypriots|Greek Cypriot]] forces. ||| ||| ||| +1 Battle of Piave River (1809) ||| War of the Fifth Coalition ||| The '''Battle of Piave River''' was fought on 8 May 1809 between the Franco-Italian army under the command of [[Eugène de Beauharnais]] and an Austrian army led by [[Archduke John of Austria]]. The Austrian commander made a stand behind the [[Piave (river)|Piave River]] but he suffered a defeat at the hands of his numerically superior foes. The combat took place near [[Nervesa della Battaglia]], [[Italy]] during the [[War of the Fifth Coalition]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Pilckem Ridge ||| Western Front (World War I) ||| The '''Battle of Pilckem Ridge''', 31 July – 2 August 1917, was the opening attack of the main part of the [[Third Battle of Ypres]] in the [[First World War]]. The battle took place in the [[Ypres Salient]] area of the [[Western Front (World War I)|Western Front]].{{efn|J. P. Harris (2008) called the battle a major success, citing Prior and Wilson.{{sfn|Harris|2008|p=366}}}} The Allied attack had mixed results; a substantial amount of ground was captured and a large number of casualties inflicted on the German defenders, except on the tactically vital Gheluvelt plateau on the right flank. The German defenders also recaptured some ground on the XIX Corps front, from the Ypres–Roulers railway, north to St. Julien. After several weeks of changeable weather, heavy rainfall began in the afternoon of 31 July and had a serious effect on operations in August, causing more problems for the British who were advancing into the area devastated by artillery fire and which was partly flooded. The battle became controversial, with disputes about the predictability of the August deluges and for its mixed results, which in much British writing were blamed on misunderstandings between Gough and Haig and on faulty planning, rather than on the resilience of the German defence. ||| ||| ||| +1 Battle of Port Louis ||| French Revolutionary Wars ||| The '''Battle of Port Louis''' was a minor naval engagement of the [[French Revolutionary Wars]], fought on 11 December 1799 at the mouth of the [[Tombeau River]] near [[Port Louis]] on the French [[Indian Ocean]] island of [[Isle de France (Mauritius)|Île de France]], later known as [[Mauritius]]. ''Preneuse'' had originally been part of a powerful squadron of six frigates sent to the Indian Ocean in 1796 under the command of [[Contre-amiral]] [[Pierre César Charles de Sercey]], but the squadron dispersed in 1798 and by the summer of 1799 ''Preneuse'' was the only significant French warship remaining in the region. The battle was the culmination of a three-month raiding cruise by the 40-gun [[French Navy]] [[frigate]] [[French frigate Preneuse (1795)|''Preneuse'']], commanded by Captain [[Jean-Matthieu-Adrien Lhermitte]]. Ordered to [[commerce raiding|raid British commerce]] in the [[Mozambique Channel]], Lhermitte's cruise had been eventful, with an inconclusive encounter with a squadron of small British warships in [[Algoa Bay]] on 20 September and an engagement with the 50-gun [[HMS Jupiter (1778)|HMS ''Jupiter'']] during heavy weather on 9–11 October. ||| ||| ||| +1 Battle of Port Walthall Junction ||| American Civil War ||| The '''Battle of Port Walthall Junction''' was fought May 6–7, 1864, between [[Union Army|Union]] and [[Confederate States Army|Confederate]] forces during the [[Bermuda Hundred Campaign]] of the [[American Civil War]]. Although initially successful, the Confederates were eventually defeated, allowing Union forces to cut a railroad. ||| ||| ||| +1 Battle of Portland ||| First Anglo-Dutch War ||| The naval '''Battle of Portland''', or '''Three Days' Battle''' took place during 18-20 February 1653 (28 February – 2 March 1653 ([[Gregorian calendar]])),{{efn|name=date|During this period in English history dates of events are usually recoded in the [[Julian calendar]], while those the Netherlands are recorded in the [[Gregorian calendar]]. In this article dates are in the Julian calendar with the start of the year adjusted to 1 January (see [[Old Style and New Style dates]]).<!--NB. This is per [[WP:OSNS]]-->}} during the [[First Anglo-Dutch War]], when the fleet of the [[Commonwealth of England]] under General at Sea [[Robert Blake (admiral)|Robert Blake]] was attacked by a fleet of the [[Dutch Republic]] under Lieutenant-Admiral [[Maarten Tromp]] escorting merchant shipping through the [[English Channel]]. The battle failed to settle supremacy of the English Channel, although both sides claimed victory, and ultimate control over the Channel would only be decided at the [[Battle of the Gabbard]] which allowed the English to blockade the Dutch coast until the [[Battle of Scheveningen]], where Admiral Maarten Tromp would meet his fate at the hands of an English musket ball. As such, it can be considered a slight setback for the English nation and another example of Dutch superiority regarding pure seamanship at the time. It also illustrated England's drive to control the seas, which would ultimately allow it to become the prime maritime power of the world. ||| ||| ||| +1 Battle of Potidaea ||| Peloponnesian War ||| The '''Battle of Potidaea''' was, with the [[Battle of Sybota]], one of the catalysts for the [[Peloponnesian War]]. It was fought near [[Potidaea]] in 432 BC between [[Athens]] and a combined army from [[Corinth, Greece|Corinth]] and Potidaea, along with their various allies. ||| ||| ||| +1 Battle of Pydna ||| Third Macedonian War ||| The '''Battle of Pydna''' took place in 168 BC between [[Roman Republic|Rome]] and [[Macedonia (ancient kingdom)|Macedon]] during the [[Third Macedonian War]]. The battle saw the further ascendancy of Rome in the [[Hellenistic period|Hellenistic world]] and the end of the [[Antigonid]] line of [[List of kings of Macedon|kings]], whose power traced back to [[Alexander the Great]]. ||| ||| ||| +1 Battle of Ramales ||| First Carlist War ||| The '''Battle of Ramales''', a battle of the [[First Carlist War]], occurred at [[Ramales]] in [[Cantabria]] on May 12, 1839. The Liberals were commanded by [[Baldomero Espartero]], the Carlists by [[Rafael Maroto]]. ||| ||| ||| +1 Battle of Rathmines ||| Irish Confederate Wars ||| The '''Battle of Rathmines''' was fought in and around what is now the [[Dublin]] suburb of [[Rathmines]] in August 1649, during the [[Irish Confederate Wars]], the Irish theatre of the [[Wars of the Three Kingdoms]]. It was fought between an English [[Parliament of England|Parliamentarian]] army under [[Michael Jones (soldier)|Michael Jones]] which held Dublin and an army composed of [[Confederate Ireland|Irish Confederate]] and English [[Cavalier|Royalist]] troops under the command of the [[James Butler, 1st Duke of Ormonde|Earl of Ormonde]]. The battle ended in the rout of the Confederate /Royalist army and facilitated the landing in Ireland of [[Oliver Cromwell]] and the [[New Model Army]] several days later, who in the next four years completed the [[Cromwellian conquest of Ireland]]. ||| ||| ||| +1 Battle of Saigon (1968) ||| Vietnam War ||| The '''First Battle of Saigon''', fought during the [[Tet Offensive]] of the [[Vietnam War]], was the coordinated attack by communist forces, including both the [[North Vietnam]]ese Army and the [[Viet Cong]], against [[Saigon]], the capital of [[South Vietnam]]. ||| ||| ||| +1 Battle of Saint Kitts ||| American Revolutionary War ||| The '''Battle of Saint Kitts''', also known as the '''Battle of Frigate Bay''', was a naval battle that took place on 25 and 26 January 1782 during the [[American Revolutionary War]] between a British fleet under Rear-Admiral [[Samuel Hood, 1st Viscount Hood|Sir Samuel Hood]] and a larger French fleet under the [[Comte de Grasse]]. ||| ||| ||| +1 Battle of Saint-Denis (1678) ||| Franco-Dutch War ||| '''The Battle of Saint-Denis''' was fought on 14–15 August 1678 between a French army commanded by the [[François Henri de Montmorency-Bouteville, duc de Luxembourg|Marshal Luxembourg]] and a Dutch army under [[William III of England|William III]] near [[Saint-Denis (Mons)|Saint-Denis]], a village outside [[Mons]], then part of the [[Spanish Netherlands]] (now [[Belgium]]). It was the last battle of the [[Franco-Dutch War]] (1672–1678), fought ''after'' the peace was signed between France and the Netherlands in the [[Treaty of Nijmegen]] on 10 August. ||| ||| ||| +1 Battle of Saltholm ||| Gunboat War ||| The '''Battle of Saltholm''' was fought on 9 June 1808 during the [[Gunboat War]]. [[Denmark|Danish]] and [[Norway|Norwegian]] ships attacked a British convoy off the island of [[Saltholm]] in [[Øresund|Øresund Strait]] near [[Copenhagen]]. ||| ||| ||| +1 Battle of San Juan del Monte ||| Philippine Revolution ||| On July 25, 1987, former [[President of the Philippines|President]] [[Corazon Aquino|Corazon C. Aquino]] signed Executive Order 292 which declared the last Sunday of August each year as a public holiday in the Philippines. This commemorates the [[Cry of Pugad Lawin]] and the start of the [[Philippine Revolution]]. ||| Legacy ||| ||| +1 Battle of Sandepu ||| Russo-Japanese War ||| The '''Battle of Sandepu''', (also known as the '''Battle of Heikoutai''') ({{lang-ja|黒溝台会戦}} (''Kokkōdai no kaisen''), {{lang-ru|Сражение при Сандепу}}) was a major land battle of the [[Russo-Japanese War]]. It was fought within a group of villages about {{convert|36|mi|km}} southwest of [[Mukden]], [[Manchuria]]. ||| ||| ||| +1 Battle of Sappony Church ||| American Civil War ||| The '''Battle of Sappony Church''' was an engagement of the [[American Civil War]], between the [[Confederate States of America]] and the [[United States|Union]], which took place on June 28, 1864, during the [[Wilson-Kautz Raid]] of the [[Richmond–Petersburg Campaign]]. ||| ||| ||| +1 Battle of Savo Island ||| World War II ||| The '''Battle of Savo Island''', also known as the '''First Battle of Savo Island''' and, in Japanese sources, as the {{nihongo|'''First Battle of the Solomon Sea'''|第一次ソロモン海戦|Dai-ichi-ji Soromon Kaisen}}, and colloquially among Allied Guadalcanal veterans as '''The Battle of the Five Sitting Ducks''', was a [[naval battle]] of the [[Pacific War|Pacific Campaign]] of [[World War II]], between the [[Imperial Japanese Navy]] and [[Allies of World War II|Allied]] naval forces. The battle took place on August 8–9, 1942 and was the first major naval engagement of the [[Guadalcanal campaign]], and the first of several naval battles in the straits later named [[Ironbottom Sound]], near the island of [[Guadalcanal]]. ||| ||| ||| +1 Battle of Scapezzano ||| Neapolitan War ||| The '''Battle of Scapezzano''' was a short engagement in the [[Neapolitan War]] on 1 May 1815 between an [[Austrian Empire|Austrian]] [[corps]] under [[Adam Albert von Neipperg]] and [[Napoleonic Kingdom of Naples|Neapolitan]] division under [[Michele Carascosa]]. ||| ||| ||| +1 Battle of Scheveningen ||| First Anglo-Dutch War ||| The '''Battle of Scheveningen''' (also known as the '''Battle of Texel''' or the '''Battle of Ter Heijde''') was the final [[naval battle]] of the [[First Anglo-Dutch War]]. It took place on 31 July 1653 (10 August [[Gregorian calendar]]) {{efn|name=date|During this period in English history dates of events are usually recorded in the [[Julian calendar]], while those the Netherlands are recorded in the [[Gregorian calendar]]. In this article dates are in the Julian calendar with the start of the year adjusted to 1 January (see [[Old Style and New Style dates]]).<!--NB. this is per [[WP:OSNS]]-->}} between the fleets of the [[Commonwealth of England]] and the [[Dutch Republic|United Provinces]], and had no clear victory. ||| ||| ||| +1 Battle of Selma ||| American Civil War ||| The '''Battle of Selma''' was a military engagement near the end of the [[American Civil War]]. It was fought in [[Selma, Alabama|Selma]], [[Alabama]], on April 2, 1865, a town of about ten thousand inhabitants. [[Union Army]] forces under [[Major General]] [[James H. Wilson]] defeated a [[Confederate States Army|Confederate Army]] force under [[Lieutenant General]] [[Nathan Bedford Forrest]]. ||| ||| ||| +1 Battle of Shangcai ||| Chinese Civil War ||| '''Battle of Shangcai''' was a series of clashes fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. The battle is also called the '''Blocking Actions at Shangcai''' (上蔡阻击战) by the [[Communist Party of China|communists]], who launched the battle to support their [[Eastern Hennan Campaign]], with intention to prevent the nationalist force from reinforce their comrades-in-arms fighting the [[Eastern Hennan Campaign]]. ||| ||| ||| +1 Battle of Shiroyama ||| Satsuma Rebellion ||| The {{Nihongo|'''Battle of Shiroyama'''|城山の戦い|Shiroyama no tatakai}} took place on 24 September 1877, in [[Kagoshima, Kagoshima|Kagoshima]], [[Japan]]. It was the final battle of the [[Satsuma Rebellion]], where the heavily outnumbered [[samurai]] under [[Saigō Takamori]] made their [[last stand]] against [[Imperial Japanese Army]] troops under the command of Generals [[Yamagata Aritomo]] and [[Kawamura Sumiyoshi]]. The battle culminated in the annihilation of Saigō's army as well as his death, marking the end of the Satsuma Rebellion. ||| ||| ||| +1 Battle of Skerki Bank ||| World War II ||| The '''Battle of Skerki Bank''' was a [[World War II]] [[naval battle]] which took place near [[Skerki Bank]] in the [[Mediterranean Sea]] on the early hours of 2 December 1942 between [[United Kingdom|British]] and [[Kingdom of Italy (1861–1946)|Italian]] forces, as the last naval battle held in Mediterranean during 1942. ||| ||| ||| +1 Battle of Slankamen ||| Great Turkish War ||| The '''Battle of Slankamen''' (also ''Battle of Szlankamen'' in some sources) was fought near [[Stari Slankamen|Slankamen]] in the [[Ottoman Empire|Ottoman]] [[Sanjak of Syrmia]] (modern-day [[Vojvodina]] region, [[Serbia]]) on August 19, 1691, between the [[Ottoman Empire]], and the forces of [[Austria]] and states of the [[Holy Roman Empire]] as part of the [[Great Turkish War]]. ||| ||| ||| +1 Battle of Slater's Knoll ||| World War II ||| The '''Battle of Slater's Knoll''' (28 March – 6 April 1945) was a battle during the [[World War II|Second World War]] fought between Australian and Japanese forces on [[Bougainville Island]]. Part of the [[Bougainville campaign]], the battle occurred as a force of about 3,300 Japanese from the [[6th Division (Imperial Japanese Army)|Japanese 6th Division]] supported by a sizeable concentration of artillery launched a counterattack against the main Australian offensive, concentrating their attacks on Slater's Knoll near the Puriata River. The Australian troops belonged to the [[7th Brigade (Australia)|7th Brigade]], with the [[25th Battalion (Australia)|25th Battalion]] being the most heavily engaged, although the [[9th Battalion (Australia)|9th Battalion]] and the [[61st Battalion (Australia)|61st Battalion]] also took part in the fighting. ||| ||| ||| +1 Battle of Snuol ||| Vietnam War ||| The '''Battle of Snuol''' was a major battle of the [[Vietnam War]], conducted by the [[Army of the Republic of Vietnam]] as part of ''Operation Toàn Thắng TT02''. The battle lasted from January 5 to May 30, 1971. ||| ||| ||| +1 Battle of Somosierra ||| Peninsular War ||| The '''Battle of Somosierra''' occurred November 30, 1808, in the [[Peninsular War]], when a [[Grande Armée|French army]] under [[Napoleon I]] forced a passage through the [[Sierra de Guadarrama]] shielding [[Madrid]]. ||| ||| ||| +1 Battle of South Shanxi ||| Second Sino-Japanese War ||| The '''Battle of South Shanxi''' ({{zh|t=晉南會戰|s=晋南会战|p=Jìn Nán Huìzhàn}}), also known as the '''Battle of Jinnan''' and '''Zhongtiao Mountains Campaign''' (中条山战役) by the Chinese and as the '''Chungyuan Operation''' by the Japanese, was one of the 22 major engagements between the [[National Revolutionary Army]] and the [[Imperial Japanese Army]] during the [[Second Sino-Japanese War]] (1937-1945). ||| ||| ||| +1 Battle of Spanish Fort ||| American Civil War ||| The '''Battle of Spanish Fort''' took place from March 27 to April 8, 1865 in [[Baldwin County, Alabama]], as part of the Mobile Campaign of the [[Western Theater of the American Civil War | Western Theater]] of the [[American Civil War]]. ||| ||| ||| +1 Battle of Spencer's Ordinary ||| American Revolutionary War ||| The '''Battle of Spencer's Ordinary''' was an inconclusive [[skirmish]] that took place on 26 June 1781, late in the [[American Revolutionary War]]. [[Kingdom of Great Britain|British]] forces under Lieutenant Colonel [[John Graves Simcoe]] and American forces under Colonel [[Richard Butler (general)|Richard Butler]], light detachments from the armies of General [[Charles Cornwallis, 1st Marquess Cornwallis|Lord Cornwallis]] and the [[Gilbert du Motier, marquis de Lafayette|Marquis de Lafayette]] respectively, clashed near a tavern (the '[[wikt:ordinary|ordinary]]') at a road intersection not far from [[Williamsburg, Virginia]]. ||| ||| ||| +1 Battle of Spotsylvania Court House ||| American Civil War ||| The '''Battle of Spotsylvania Court House''', sometimes more simply referred to as the '''Battle of Spotsylvania''' (or the 19th-century spelling '''Spottsylvania'''), was the second major battle in [[Lieutenant general (United States)|Lt. Gen.]] [[Ulysses S. Grant]]'s 1864 [[Overland Campaign]] of the [[American Civil War]]. Following the bloody but inconclusive [[Battle of the Wilderness]], Grant's army disengaged from [[Confederate States Army|Confederate]] [[General (CSA)|General]] [[Robert E. Lee]]'s army and moved to the southeast, attempting to lure Lee into battle under more favorable conditions. Elements of Lee's army beat the [[Union Army|Union]] army to the critical crossroads of Spotsylvania Court House, Virginia and began entrenching. Fighting occurred on and off from May 8 through May 21, 1864, as Grant tried various schemes to break the Confederate line. In the end, the battle was tactically inconclusive, but with almost 32,000 casualties on both sides, it was the costliest battle of the campaign. ||| ||| ||| +1 Battle of St Fagans ||| Second English Civil War ||| The '''Battle of St. Fagans''' was a [[pitched battle]] in the [[Second English Civil War]] in 1648. A detachment from the [[New Model Army]] defeated an army of former [[Roundheads|Parliamentarian]] soldiers who had rebelled and were now fighting against Parliament. ||| ||| ||| +1 Battle of Stalingrad ||| World War II ||| The '''Battle of Stalingrad''' (23 August 1942 – 2 February 1943) was a major battle of [[World War II]] in which [[Nazi Germany]] and its allies fought the [[Soviet Union]] for control of the city of [[Volgograd|Stalingrad (now Volgograd)]] in [[Southern Russia]], on the eastern boundary of Europe. ||| ||| ||| +1 Battle of Stockach (1799) ||| French Revolutionary Wars ||| The '''[First] Battle of Stockach''' occurred on 25 March 1799, when French and Austrian armies fought for control of the geographically strategic [[Hegau]] region in present day [[Baden-Württemberg]]. In the broader military context, this battle constitutes a keystone in the first campaign in southwestern Germany during the Wars of the [[Second Coalition]], part of the [[French Revolutionary Wars]]. ||| ||| ||| +1 Battle of Stäket ||| Great Northern War ||| The '''Battle of Stäket''' was a minor battle during the [[Great Northern War]]. A probing [[Russia]]n force, circumventing [[Vaxholm Castle]], attempted to pass through [[Baggensstäket]], a very narrow passage in the [[Stockholm archipelago]]. After a desperate counterattack by [[Södermanlands regemente (infantry)|Södermanlands regemente]] the Russian force departed. ||| ||| ||| +1 Battle of Suwon Airfield ||| Korean War ||| The '''Battle of Suwon Airfield''' was the first aerial battle of the [[Korean War]] occurring on June 27, 1950 over [[Kimpo Airfield]] and [[Suwon Air Base|Suwon Airfield]]. The battle, between aircraft of the [[United States]] and [[North Korea]], ended in a victory for the [[US Air Force]] after nine of its aircraft successfully shot down seven [[North Korean People's Air Force]] aircraft. It was the first direct engagement of the [[Air Battle of South Korea]]. ||| ||| ||| +1 Battle of Svay Rieng ||| Vietnam War ||| The '''Battle of Svay Rieng''' was the last major offensive operation of the [[Vietnam War]] to be mounted by the [[ARVN|South Vietnamese army]] against the Communist [[People's Army of Vietnam]] (PAVN) forces. ||| ||| ||| +1 Battle of Tabu-dong ||| Korean War ||| The '''Battle of Tabu-dong''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from September 1 to September 18, 1950, in the vicinity of Tabu-dong, north of [[Taegu]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Taejon ||| Korean War ||| The '''Battle of Taejon''' (14–21 July 1950) was an early battle of the [[Korean War]], between [[United States|American]] and [[North Korean]] forces. Forces of the [[United States Army]] attempted to defend the headquarters of the [[24th Infantry Division (United States)|24th Infantry Division]]. The 24th Infantry Division was overwhelmed by numerically superior forces of the [[Korean People's Army]] (KPA) at the major city and transportation hub of [[Taejon]]. The 24th Infantry Division's regiments were already exhausted from the previous two weeks of delaying actions to stem the advance of the KPA. ||| ||| ||| +1 Battle of Taillebourg ||| Saintonge War ||| After the Taillebourg engagement, which permitted them to control the eponymous strategic bridge, the Franco-Poitevins exploited their advantage. On 23 June, a more decisive battle took place at Saintes. The Anglo-Poitevins were beaten once more, in definitive fashion. Henry of England was not there at the time, having returned to [[Gascony]] after the setback at Taillebourg. These two actions constituted the [[Saintonge War]]. ||| The second phase ||| ||| +1 Battle of Tarvis (1797) ||| French Revolutionary Wars ||| In the '''Battle of Tarvis''' (21-23 March 1797) three divisions of a [[First French Republic]] army commanded by [[Napoleon Bonaparte]] attacked several columns of the retreating [[Habsburg Monarchy|Habsburg Austrian]] army led by [[Archduke Charles, Duke of Teschen]]. In three days of confused fighting, French divisions directed by [[André Masséna]], [[Jean Joseph Guieu]], and [[Jean-Mathieu-Philibert Sérurier]] succeeded in blocking the Tarvis Pass and capturing 3,500 Austrians under [[Adam Bajalics von Bajahaza]]. The engagement occurred during the [[War of the First Coalition]], part of the [[French Revolutionary Wars]]. [[Tarvisio]] today is located in far northeast Italy, {{convert|27|km|mi|0}} southwest of [[Villach]], Austria. ||| ||| ||| +1 Battle of Te-li-Ssu ||| Russo-Japanese War ||| The '''Battle of Te-li-ssu''' ({{lang-ja|Japanese 得利寺の戦い ''Tokuriji no tatakai''}}), also called '''Battle of Wafangou''' ({{lang-ru|Бой у Вафангоу}}) after the nearby railway station, was a land battle of the [[Russo-Japanese War]]. It was fought at a hamlet some {{convert|80|mi|km|abbr=on}} north of [[Lüshunkou|Port Arthur]], [[Manchuria]]. The hamlet is known today as ''Delisi'', and is located just north of [[Wafangdian]], [[Liaoning Province]], [[China]]. It was fought on 14–15 June 1904 between the Japanese Second Army under General [[Yasukata Oku]] and the Russian First Siberian Army Corps under Lieutenant General [[Georgii Stackelberg]]. ||| ||| ||| +1 Battle of Tiger Hill ||| Kargil War ||| The '''Battle of Tiger Hill''' encompasses the battles fought in and around the peak of [[Tiger Hill, Kargil|Tiger Hill]] between [[Indian Army]] and [[Kargil war#Occupation by Pakistan|Pakistani]] forces from the final week of May till second week of June 1999 during the [[Kargil War]] in 1999. The battle, with the concomitant [[Battle of Tololing|battle for the adjoining peak of Tololing]], culminated in Indian forces capturing it. ||| ||| ||| +1 Battle of Tipton's Island ||| War of 1812 ||| In April 1813, during the [[War of 1812]], a Kickapoo war party killed two white settlers eight miles from [[Fort Vallonia]]. The war party continued towards the fort, killing another settler and wounding three more. ||| ||| ||| +1 Battle of Tolentino ||| Hundred Days ||| The '''Battle of Tolentino''' was fought on 2 – 3 May 1815 near [[Tolentino]], Kingdom of Naples in what is now [[Marche]], [[Italy]]: it was the decisive battle in the [[Neapolitan War]], fought by the Napoleonic [[Kingdom of Naples|King of Naples]] [[Joachim Murat]] to keep the throne after the [[Congress of Vienna]]. The battle itself shares many parallels with the [[Battle of Waterloo]]. Both occurred during the [[Hundred Days]] following Napoleon's return from exile and resulted in a decisive victory for the Seventh Coalition leading to the restoration of a [[House of Bourbon|Bourbon]] king. ||| ||| ||| +1 Battle of Trnava (1430) ||| Hussite Wars ||| The '''Battle of Trnava''' or '''Battle of Nagyszombat''' was a battle in the [[Hussite Wars]] between the [[Hussites]] and the [[Hungarians|Hungarian]]-Royalists-[[Serbs|Serbian]] army near [[Trnava]] (Nagyszombat) in the [[Kingdom of Hungary]] (today in [[Slovakia]]) on July 11, 1430. The battle ended in Hussite victory. ||| ||| ||| +1 Battle of Tsushima ||| Russo-Japanese War ||| The '''Battle of Tsushima''' ({{lang-ru|Цусимское сражение}}, ''Tsusimskoye srazheniye''), commonly known as the ''“Sea of Japan Naval Battle”'' (Japanese: 日本海海戦, ''Nihonkai-Kaisen'') in [[Japan]] and the ''“Battle of Tsushima Strait”'', was a major naval battle fought between Russia and Japan during the [[Russo-Japanese War]]. It was naval history's only decisive sea battle fought by modern steel [[battleship]] fleets, ||| ||| ||| +1 Battle of Uijeongbu ||| Korean War ||| The '''Battle of Uijeongbu''' was a battle fought in [[Uijeongbu]] during the [[Korean War]]. It began on the June 25, 1950, when the North Koreans invaded South Korea. ||| ||| ||| +1 Battle of Ulundi ||| Anglo-Zulu War ||| The '''Battle of Ulundi''' took place at the [[Zulu Kingdom|Zulu]] capital of [[Ulundi]] on 4 July 1879 and was the last major battle of the [[Anglo-Zulu War]]. The British army broke the military power of the [[Zulu Kingdom|Zulu nation]] by defeating the main Zulu army and immediately afterwards capturing and razing the capital of Zululand, the royal kraal of Ulundi. ||| ||| ||| +1 Battle of Vella Gulf ||| Pacific War ||| The {{nihongo|'''Battle of Vella Gulf'''|ベラ湾夜戦|Berawan yasen}} was a [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]] fought on the night of 6–7 August 1943, in [[Vella Gulf]] between [[Vella Lavella]] Island and [[Kolombangara]] Island in the [[Solomon Islands]] of the Southwest Pacific. ||| ||| ||| +1 Battle of Venta del Pozo ||| Peninsular War ||| The '''Battle of Venta del Pozo''', also known as the '''Battle of Villodrigo''' by the French, was a rear-guard action fought as part of the [[Peninsular War]] on 23 October 1812 between an Anglo-German force led by Major-General [[Stapleton Cotton]] against French cavalry under Major-Generals [[Jean-Baptiste Théodore Curto|Jean-Baptiste Curto]] and [[Pierre François Joseph Boyer|Pierre Boyer]]. The result was a French tactical victory. ||| ||| ||| +1 Battle of Videau's Bridge ||| American Revolutionary War ||| The '''Battle of Videau's Bridge''' was an engagement of the [[American Revolutionary War]] fought on January 2, 1782 near [[Charleston, South Carolina]]. The British routed an American force opposing a foraging expedition they sent from Charleston. The British claimed to kill 57 and capture 20 Americans. ||| ||| ||| +1 Battle of Villalar ||| Revolt of the Comuneros ||| The '''Battle of Villalar''' was a battle in the [[Revolt of the Comuneros]] fought on April 23, 1521 near the town of [[Villalar de los Comuneros|Villalar]] in [[Valladolid]] province, [[Habsburg Spain|Spain]]. The royalist supporters of [[Charles V, Holy Roman Emperor|King Charles I]] won a crushing victory over the comuneros rebels. Three of the most important rebel leaders were captured, [[Juan López de Padilla|Juan de Padilla]], [[Juan Bravo (rebel)|Juan Bravo]], and [[Francisco Maldonado]]. They were executed the next day, effectively ending armed resistance to Charles I. ||| ||| ||| +1 Battle of Villers-Bocage ||| Battle for Caen ||| Under the command of Brigadier [[William Hinde (soldier)|William 'Loony' Hinde]], the 22nd Armoured Brigade group reached Villers-Bocage without serious incident in the morning of 13 June. The leading elements advanced eastwards from the town on the Caen road to Point 213, where they were ambushed by [[Tiger I]] tanks of the [[SS Heavy Panzer Battalion 101|101st SS Heavy Panzer Battalion]]. In fewer than {{nowrap|15 minutes}} numerous tanks, anti-tank guns and transport vehicles were destroyed, many by [[Schutzstaffel|SS]]-''[[Obersturmführer]]'' [[Michael Wittmann]]. The Germans then attacked the town and were repulsed, losing several Tigers and Panzer IV. After six hours Hinde ordered a withdrawal to a more defensible position on a knoll west of Villers-Bocage. Next day the Germans attacked the defensive 'Brigade Box' in the '''Battle of the Island'''. The British inflicted a costly repulse on the Germans and then retired from the [[wikt:salient#Noun|salient]]. The [[Battle for Caen]] continued east of Villers-Bocage, which was captured in ruins on 4 August, after two raids by the strategic bombers of the [[Royal Air Force]]. ||| ||| ||| +1 Battle of Vrbanja bridge ||| Bosnian War ||| The '''Battle of Vrbanja bridge''' was an armed confrontation which occurred on 27 May 1995 between [[United Nations]] (UN) [[peacekeeping|peacekeepers]] from the [[French Army]] and elements of the [[Army of Republika Srpska]] (VRS), after the VRS seized French-manned [[United Nations Protection Force]] (UNPROFOR) [[observation post]]s on both ends of the [[Vrbanja bridge]] crossing of the [[Miljacka]] river in [[Sarajevo]], [[Bosnia and Herzegovina]] during the [[Bosnian War]]. Upon seizing the bridge, the VRS took the French peacekeepers hostage. A platoon of 30 French peacekeepers subsequently re-captured the bridge with the support of 70 French infantrymen and direct fire from armoured vehicles, in an action which saw the first French Army [[bayonet]] charge since the [[Korean War]]. During the French assault, elements of the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH) opened fire on the VRS-held observation posts, accidentally wounding one French hostage. ||| ||| ||| +1 Battle of Vĩnh Yên ||| First Indochina War ||| The '''Battle of Vĩnh Yên''' ({{lang-vi|Trận Vĩnh Yên}}), which occurred from 13 to 17 January 1951, was a major engagement in the [[First Indochina War]] between the [[French Union]] and the [[Việt Minh]]. The French Union forces, led by World War II hero [[Jean de Lattre de Tassigny]], inflicted a decisive defeat on the Việt Minh forces, which were commanded by [[Võ Nguyên Giáp]]. The victory marked a turn in the tide of the war, which was previously characterized by a number of Việt Minh victories. ||| ||| ||| +1 Battle of Washington ||| American Civil War ||| The '''Battle of Washington''' took place from March 30 to April 19, 1863, in [[Beaufort County, North Carolina]], as part of [[Confederate States Army|Confederate]] [[Lieutenant General (CSA)|Lt. Gen.]] [[James Longstreet]]'s [[Tidewater region of Virginia|Tidewater]] operations during the [[American Civil War]]. This battle is sometimes referred to as the '''Siege of Little Washington'''. ||| ||| ||| +1 Battle of Wawon ||| Korean War ||| The '''Battle of Wawon''' ({{lang-tr|Kunuri Muharebeleri}}), also known as the '''Battle of Wayuan''' ({{zh|s=瓦院战斗|p=Wǎ Yuàn Zhàn Dòu}}), was a series of delay actions of the [[Korean War]] that took place from November 27–29, 1950 near Wawon in present-day [[North Korea]]. After the collapse of the US [[Eighth United States Army|Eighth Army]]'s right flank during the [[Battle of the Ch'ongch'on River]], the Chinese [[38th Army (People's Republic of China)|38th Corps]] advanced rapidly towards the critical road junction at [[Kunu-ri]] in an effort to cut off United Nations forces' retreat route. In what was considered to be [[Turkey]]'s first real combat action since the [[Turkish War of Independence|aftermath of World War I]], {{Cite web ||| ||| ||| +1 Battle of West Hubei ||| Second Sino-Japanese War ||| The '''Battle of West Hubei''' ({{zh|t=鄂西會戰|s=鄂西会战|p=È Xī Huìzhàn}}), was one of the 22 major engagements between the [[National Revolutionary Army]] and [[Imperial Japanese Army]] during the [[Second Sino-Japanese War]]. It was also one of the four major battles that took place in [[Hubei]]. ||| ||| ||| +1 Battle of Wiesloch (1799) ||| French Revolutionary Wars ||| The '''Battle of Wiesloch''' ({{lang-de|[[:de:Schlacht bei Wiesloch#Zweiter Koalitionskrieg|Schlacht bei Wiesloch]]}}) occurred on 3 December 1799, during the [[War of the Second Coalition]], part of the [[French Revolutionary Wars]]. Lieutenant Field Marshal [[Anton Count Sztáray de Nagy-Mihaly]] commanded the far right wing protecting the main Austrian army in Swabia, under the command of [[Archduke Charles, Duke of Teschen]]. With the victory at Wiesloch (on 3 December), Sztáray's force drove the French from the right bank of the Rhine and relieved the fortress at [[Philippsburg]]. ||| ||| ||| +1 Battle of Wiesloch (1799) ||| War of the Second Coalition ||| The '''Battle of Wiesloch''' ({{lang-de|[[:de:Schlacht bei Wiesloch#Zweiter Koalitionskrieg|Schlacht bei Wiesloch]]}}) occurred on 3 December 1799, during the [[War of the Second Coalition]], part of the [[French Revolutionary Wars]]. Lieutenant Field Marshal [[Anton Count Sztáray de Nagy-Mihaly]] commanded the far right wing protecting the main Austrian army in Swabia, under the command of [[Archduke Charles, Duke of Teschen]]. With the victory at Wiesloch (on 3 December), Sztáray's force drove the French from the right bank of the Rhine and relieved the fortress at [[Philippsburg]]. ||| ||| ||| +1 Battle of Yellow Tavern ||| American Civil War ||| The '''Battle of Yellow Tavern''' was fought on May 11, 1864, as part of the [[Overland Campaign]] of the [[American Civil War]]. [[Union Army | Union]] [[cavalry]] under [[Major general (United States) | Maj. Gen.]] [[Philip Sheridan]] was detached from the [[Army of the Potomac]] to conduct a raid on [[Richmond in the American Civil War | Richmond, Virginia]], and challenge legendary [[Confederate States Army|Confederate]] cavalry commander Maj. Gen. [[J.E.B. Stuart]]. The Confederate force was outnumbered and outgunned and Stuart was mortally wounded while attempting to rally his men, dying the next day. ||| ||| ||| +1 Battle of Zapote Bridge (1897) ||| Philippine Revolution ||| The '''Battle of Zapote Bridge''' was fought on February 17, 1897 as part of the [[Philippine Revolution]]. [[Katipunan|Filipino revolutionary forces]] led by General [[Emilio Aguinaldo]] defeated Spanish forces under the command of [[Governor-General of the Philippines|Governor-General]] [[Camilo de Polavieja]]. In this battle, General [[Edilberto Evangelista]] (a Filipino civil engineer, trench builder and member of the [[Katipunan]]) was killed. ||| ||| ||| +1 Battle of Zborov (1917) ||| Kerensky Offensive ||| The '''Battle of Zborov''' (''Зборовское сражение'' in [[Russian language|Russian]], ''Schlacht bei Zborów'' in [[German language|German]], ''bitva u Zborova'' in [[Czech language|Czech]], ''bitka pri Zborove'' in [[Slovak language|Slovak]]) was a small part of the [[Kerensky Offensive]], (the last [[Russian Empire|Russian]] offensive in [[World War I]], taking place in July 1917). The battle was the first significant action of the [[Czechoslovak Legions]] (volunteers fighting against the [[Central Powers]]) on the [[Eastern Front (World War I)|Eastern Front]] and the only successful action of the failed offensive in Ukraine. ||| ||| ||| +1 Battle of Zeeland ||| Battle of France ||| The '''Battle of Zeeland''' was a little-known struggle on the [[Western Front (World War II)|Western Front]] during the early stages of the [[Nazi Germany|German]] [[Battle of France|assault]] on [[France]] and the [[Low Countries]] during [[World War II]]. Several [[Netherlands|Dutch]] and [[France|French]] units attempted to hold off the German onslaught by making a determined defense of the Dutch province of [[Zeeland]]. The battle lasted eight days and was a disappointing defeat for the French and Dutch forces defending the province. ||| ||| ||| +1 Battle of al-Musayfirah ||| Great Syrian Revolt ||| The '''battle of al-Musayfirah''' was one of the major military engagements between [[Druze]] rebels and the [[Army of the Levant|French Army]] on 17 September 1925, during the early stage of the [[Great Syrian Revolt]], which continued on until 1927. After initial rebel victories against French forces at [[Battle of al-Kafr|al-Kafr]] and then [[Battle of al-Mazraa|al-Mazraa]], an advance guard of the French Army, then under the leadership of General [[Maurice Gamelin]], was dispatched to the village of [[al-Musayfirah]] on 15 September. After clearing the village of its inhabitants, they set up fortifications in preparation for an assault on [[al-Suwayda]]. ||| ||| ||| +1 Battle of the Admin Box ||| Burma Campaign ||| The '''Battle of the Admin Box''' (sometimes referred to as the '''Battle of Ngakyedauk''' or the '''Battle of Sinzweya''') took place on the Southern Front of the [[Burma Campaign]] from 5 to 23 February 1944, in the [[South-East Asian Theatre of World War II]]. ||| ||| ||| +1 Battle of the Bowling Alley ||| Korean War ||| In the '''Battle of the Bowling Alley ''' (August 12–25, 1950), [[United Nations]] (UN) forces defeated [[North Korean]] (NK) forces early in the [[Korean War]] near the city of [[Taegu]], [[South Korea]]. The battle took place in a narrow valley, dubbed the 'Bowling Alley', which was north of Taegu. It followed a week of fighting between the [[North Korean People's Army]] [[NK 13th Division|13th Division]] and the [[Republic of Korea Army]]'s (ROK) [[ROK 1st Division|1st Division]] along the latter's last defensible line in the hills north of the city. Reinforcements, including the [[US Army]]'s [[US 27th Infantry|27th]] and [[US 23rd Infantry|23rd Infantry Regiment]]s were committed to bolster the South Koreans' defenses. This battle and several others were smaller engagements of the [[Battle of Pusan Perimeter]]. ||| ||| ||| +1 Battle of the Ch'ongch'on River ||| Korean War ||| The '''Battle of the Ch'ongch'on River''', also known as the '''Battle of the Ch'ongch'on''' or the '''Second Phase Campaign Western Sector''' ({{zh|s=第二次战役西线|p=Dì Èr Cì Zhàn Yì Xī Xiàn}}), was a decisive battle in the [[Korean War]], and it took place from November 25 to December 2 in 1950, along the [[Ch'ongch'on River]] Valley in the northwestern part of [[North Korea]]. In response to the successful [[People's Republic of China|Chinese]] First Phase Campaign against the [[United Nations Command (Korea)|United Nations forces]], General [[Douglas MacArthur]] launched the Home-by-Christmas Offensive to evict the Chinese forces from Korea and to end the war. Anticipating this reaction, the Chinese [[People's Volunteer Army]] Commander [[Peng Dehuai]] planned a counteroffensive, dubbed the 'Second Phase Campaign', against the advancing UN forces. ||| ||| ||| +1 Battle of the Col de Panissars ||| Aragonese Crusade ||| It was the last battle of the [[Aragonese Crusade]], a papally-sanctioned war on behalf of [[Charles of Valois]] to secure the Aragonese throne from the excommunicate king Peter, who [[War of the Sicilian Vespers|had conquered]] [[Sicily]] against papal interests. The battle followed on the heels of the [[Battle of Les Formigues|naval victory at Les Formigues]] on 4 September. ||| ||| ||| +1 Battle of the Dukla Pass ||| Eastern Front (World War II) ||| The '''Battle of the Dukla Pass''', also known as the '''Dukla / Carpatho-Dukla / Rzeszów-Dukla / Dukla-Prešov Offensive''' was the scene of bitterly contested battle for the [[Dukla Pass]] (borderland between Poland and [[Slovakia]]) on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]] between [[Nazi Germany]] and the [[Soviet Union]] in September–October 1944. It was part of the Soviet [[East Carpathian Strategic Offensive]] that also included the [[Carpathian-Uzhgorod Offensive]]. The operation's primary goal to provide support for the Slovaks was not achieved, however it concluded the full liberation of the [[Ukraine]] in its modern borders by the occupation of the [[Subcarpathian]] region as a territory of the former [[Carpatho-Ukraine]]. ||| ||| ||| +1 Battle of the Dukla Pass ||| World War II ||| The '''Battle of the Dukla Pass''', also known as the '''Dukla / Carpatho-Dukla / Rzeszów-Dukla / Dukla-Prešov Offensive''' was the scene of bitterly contested battle for the [[Dukla Pass]] (borderland between Poland and [[Slovakia]]) on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]] between [[Nazi Germany]] and the [[Soviet Union]] in September–October 1944. It was part of the Soviet [[East Carpathian Strategic Offensive]] that also included the [[Carpathian-Uzhgorod Offensive]]. The operation's primary goal to provide support for the Slovaks was not achieved, however it concluded the full liberation of the [[Ukraine]] in its modern borders by the occupation of the [[Subcarpathian]] region as a territory of the former [[Carpatho-Ukraine]]. ||| ||| ||| +1 Battle of the Gebora ||| Peninsular War ||| The '''Battle of the Gebora''' was a minor battle of the [[Peninsular War]] between [[Enlightenment Spain|Spanish]] and [[First French Empire|French]] armies. It occurred on 19 February 1811, near [[Badajoz]], Spain, where an outnumbered French force routed and nearly destroyed the Spanish Army of [[Extremadura]]. ||| ||| ||| +1 Battle of the Komandorski Islands ||| World War II ||| The '''Battle of the Komandorski Islands''' was a [[naval battle]] between [[United States|American]] and [[Empire of Japan|Japanese]] forces which took place on 27 March 1943 in the North Pacific area of the Pacific Ocean, south of the Soviet [[Komandorski Islands]]. It is considered one of the most unusual naval engagements of [[World War II]], in that it was a daylight surface engagement in which air support played a negligible role and in which the inferior force emerged victorious. ||| ||| ||| +1 Battle of the Netherlands ||| World War II ||| The '''Battle of the Netherlands''' ({{lang-nl|Slag om Nederland}}) was part of [[Battle of France|Case Yellow]] ({{lang-de|Fall Gelb}}), the [[Nazi Germany|German]] invasion of the [[Low Countries]] (Belgium, Luxembourg, and the Netherlands) and France during [[World War II]]. ||| ||| ||| +1 Battle of the North Cape ||| World War II ||| The '''Battle of the North Cape''' was a [[World War II|Second World War]] naval battle which occurred on 26 December 1943, as part of the [[Arctic naval operations of World War II|Arctic Campaign]]. The [[Nazi Germany|German]] [[battleship]] {{Ship|German battleship|Scharnhorst||2}}, on an operation to attack [[Arctic Convoys]] of [[war materiel|war matériel]] from the [[Western Allies]] to the [[USSR]], was brought to battle and sunk by Royal Navy forces—the battleship {{HMS|Duke of York|17|6}} plus several cruisers and destroyers—off [[Norway]]'s [[North Cape, Norway|North Cape]]. ||| ||| ||| +1 Battle of the Sierra Guadalupe ||| Spanish Civil War ||| The '''Battle of the Sierra Guadalupe''' ({{lang-en|Guadalupe Mountains}}), also known as the '''Tagus Campaign''', was a continuation of the [[Nationalist Spain|Nationalist]] Army's race north toward [[Madrid]] in the early stages of the [[Spanish Civil War]]. In late August 1936, the three [[Regulares]] columns of [[Juan Yagüe|General Yagüe]]'s [[Army of Africa (Spain)|Army of Africa]] dashed through the [[Sierra de Guadalupe, Spain|Sierra de Guadalupe]] Mountains, also known as ''Sierra de Villuercas'', in central [[Spain]] and forded across the [[Tagus River]], capturing several towns and routing the Republicans in a succession of rapid advances. ||| ||| ||| +1 Battle of Île Ronde ||| French Revolutionary Wars ||| The '''Battle of Île Ronde''' was a minor naval engagement between small [[French Navy]] and British [[Royal Navy]] squadrons off [[Isle de France (Mauritius)|Île de France]], now named [[Mauritius]], in the early stages of the [[French Revolutionary Wars]]. The battle was fought over control of the waters around Île de France, which was under [[blockade]] from the British squadron as French warships and [[privateers]] operating from the island posed a significant threat to vital British trade routes connected to [[British India]] and [[Qing dynasty|China]]. ||| ||| ||| +1 Battle of Ösel Island ||| Great Northern War ||| The '''Battle of Osel Island''' took place on May 24, 1719 (O.S.), during the [[Great Northern War]]. It was fought near the island of [[Saaremaa]] (Ösel). It led to a victory for the Russian captain [[Naum Senyavin]], whose forces captured three enemy vessels, sustaining as few as eighteen casualties. It was the first Russian naval victory which did not involve ramming or boarding actions. ||| ||| ||| +1 Battle of Đồng Hới ||| Vietnam War ||| The '''Battle of Đồng Hới''' was a clash between [[United States Navy]] warships and three [[North Vietnam]]ese air force [[MiG-17F]] [[fighter bomber]]s, several [[torpedo boat]]s and shore batteries on April 19, 1972 during the [[Vietnam War]]. This was the first time US warships faced an air raid since the end of World War II. ||| ||| ||| +1 Battles of Lexington and Concord ||| American Revolutionary War ||| The '''Battles of Lexington and Concord''' were the first military engagements of the [[American Revolutionary War]]. They were fought on April 19, 1775, in [[Middlesex County, Massachusetts|Middlesex County]], [[Province of Massachusetts Bay]], within the towns of [[Lexington, Massachusetts|Lexington]], [[Concord, Massachusetts|Concord]], [[Lincoln, Massachusetts|Lincoln]], [[Arlington, Massachusetts|Menotomy (present-day Arlington)]], and [[Cambridge, Massachusetts|Cambridge]], near [[Boston]]. The battles marked the outbreak of open armed conflict between the [[Kingdom of Great Britain]] and [[Thirteen Colonies|thirteen of its colonies]] on the mainland of [[British America]]. ||| ||| ||| +1 Bear River Massacre ||| American Civil War ||| When the [[American Civil War]] began in 1861, President [[Abraham Lincoln]] was concerned that California, which had just recently become a state, would be cut off from the rest of the Union. He ordered several regiments to be raised from the population of California to help protect mail routes and the communications lines of the West. ||| Outbreak of the Civil War ||| ||| +1 Belgorod-Khar'kov Offensive Operation ||| Eastern Front (World War II) ||| |partof=the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]] ||| ||| ||| +1 Bishops' Wars ||| Wars of the Three Kingdoms ||| The '''Bishops' Wars''' ({{lang-la|Bellum Episcopale}}) were conflicts, both political and military, which occurred in 1639 and 1640 centred on the nature of the governance of the [[Church of Scotland]], and the rights and powers of the Crown. They constitute part of a larger political [[Wars of the Three Kingdoms|conflict across Scotland, England and Ireland]], and are often considered a prelude to the [[English Civil War]]s. They were so named due to the central conflict between [[Charles I of England|Charles I]], who favoured an [[Episcopal polity|episcopal]] system of church government for Scotland (that is, with bishops), and the desire of much of the polity of Scotland for a [[Presbyterian polity|presbyterian]] system of governance (without bishops). ||| ||| ||| +1 Bog Wallow Ambush ||| American Civil War ||| The '''Bog Wallow Ambush''' was a small unit action during the [[American Civil War]] that took place between [[Confederate States of America|Confederate]] forces under Captain [[J. Fred. Waring]] and Union forces under Colonel [[George W. Taylor (general)|George W. Taylor]] on December 4, 1861, in [[Fairfax County, Virginia]], as part of [[major general|Maj. Gen.]] [[George B. McClellan]]'s operations in northern Virginia. The Union force set up an ambush for the Confederate force on the [[Braddock Road (Northern Virginia)|Braddock Road]]. The action resulted in a Union victory. ||| ||| ||| +1 Bombardment of Callao ||| War of the Pacific ||| ''This article is for the '''Bombardment of Callao''' during the [[War of the Pacific]], for the conflict during the [[Chincha Islands War]] see [[Battle of Callao]].'' ||| ||| ||| +1 Bonneville Expedition (1857) ||| Apache Wars ||| The '''Bonneville Expedition''' was a military operation launched by the [[United States Army]] in 1857 during the [[Chiricahua]] [[Apache Wars]]. [[Colonel]] [[Benjamin Bonneville]] was in command of the party which entered the frontier from [[Fort Fillmore]], [[New Mexico]]. Heading west across the desert where the expedition engaged in two small but significant battles. The first was fought in the [[Black Range]] and the second along the [[Gila River]] near present day [[Safford, Arizona|Safford]], [[Arizona]]. ||| ||| ||| +1 Caesar's invasions of Britain ||| Gallic Wars ||| In the course of his [[Gallic Wars]], [[Julius Caesar]] invaded [[Great Britain|Britain]] twice: in 55 and 54 BC. The first invasion, in late summer, may have been intended as a mere reconnaissance-in-force expedition, or as a full-scale invasion—but if it was an invasion, it was unsuccessful. It gained the Romans little else besides a beachhead on the coast of [[Kent]]. The second invasion achieved more: the Romans installed a king, [[Mandubracius]], who was friendly to Rome, and they forced the submission of Mandubracius's rival, [[Cassivellaunus]]. No territory was conquered and held for Rome; instead, all Roman-occupied territory was restored to the allied [[Trinovantes]], along with the promised tribute of the other tribes in what is now eastern England. ||| ||| ||| +1 Campaign in north-east France (1814) ||| War of the Sixth Coalition ||| The '''1814 campaign in north-east France''' was Napoleon's final campaign of the [[War of the Sixth Coalition]]. Following their victory at [[Battle of Leipzig|Leipzig]] (1813), Russian, Austrian and other German armies of the Sixth Coalition entered France. Despite the disproportionate forces in favour of the Coalition, Napoleon managed to inflict many defeats, especially during the [[Six Days Campaign]]. However, the Coalition kept heading towards Paris, which capitulated in March 1814. As a result, Napoleon was deposed and exiled to [[Elba]] and the victorious powers started to redraw the map of Europe during the [[Treaty of Paris (1814)|First Treaty of Paris]] and during the early stages of the [[Congress of Vienna]]. ||| ||| ||| +1 Campaign to Suppress Bandits in Northeast China ||| Chinese Civil War ||| '''Campaign to Suppress Bandits in [[Northeast China]]''' (东北剿匪) was a counterinsurgency / counter [[guerrilla]] campaign fought between the bandits turned guerrillas allied with [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. ||| ||| ||| +1 Capitulation of Dornbirn ||| War of the Third Coalition ||| The '''Capitulation of Dornbirn''' (13 November 1805) saw the French [[VII Corps (Grande Armée)|VII Corps]] under [[Marshal of France|Marshal]] [[Pierre Augereau]] face an [[Austrian Empire|Austrian]] force led by [[Franz Jellacic]]. Isolated near [[Lake Constance]] (Bodensee) by superior numbers of French troops, Jellacic surrendered his command. The event occurred during the [[War of the Third Coalition]], part of the [[Napoleonic Wars]]. [[Dornbirn]] is located in the Austrian province of [[Vorarlberg]], about {{convert|12|km|mi|0}} south of [[Bregenz]] at the eastern end of Lake Constance. ||| ||| ||| +1 Capture of Lesboeufs ||| Battle of the Somme ||| '''Lesboeufs''' (or '''Lesbœufs''') ({{IPA-fr|lebø}}) is a village on the D 74 between Gueudecourt and Morval, about {{Convert|30|mi|km|}} north-east of [[Amiens]]; Le Transloy lies to the north-west and Bapaume is to the north. French Territorials fought the [[II Royal Bavarian Corps|II Bavarian Corps]] on the north bank of the Somme in late September 1914, after which the front line moved west past Lesbœufs. Little military activity occurred round the village until the beginning of the [[Battle of the Somme]], when German troops passed through the village in the first weeks of the battle. During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} advances by the right flank corps of the British [[Fourth Army (United Kingdom)|Fourth Army]], brought the front line forward to the {{lang|de|''Gallwitz Riegel''}} trenches west of Lesbœufs but exhaustion prevented the British from reaching their third objective, a line east of Morval, Lesbœufs and Gueudecourt. ||| ||| ||| +1 Capture of Martinpuich ||| Battle of the Somme ||| '''Martinpuich''' is situated {{convert|18|mi|km}} south of Arras, near the junction of the D 929 and D 6 roads, opposite Courcelette. The village lies south of [[Le Sars]], west of [[Flers, Somme|Flers]] and north-west of [[Attacks on High Wood|High Wood]]. In September 1914, during the [[Race to the Sea]], the divisions of the [[XIV Corps (German Empire)|XIV Corps]] advanced westwards, on the north bank of the Somme towards Albert and Amiens, passing through Martinpuich. The village became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}} and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity. ||| ||| ||| +1 Capture of Oppy Wood ||| Western Front (World War I) ||| The '''Capture of Oppy Wood''' was an engagement on the [[Western Front (World War I)|Western Front]] of the [[Great War]] on 28 June 1917.{{sfn|James|1924|p=19}} The [[Battle of Arras (1917)|Arras Offensive]] of 1917 ended with the Germans in possession of a fortified wood to the west of the [[commune]] of [[Oppy, Pas-de-Calais|Oppy]], which overlooked British positions. The wood was {{convert|1|acre|ha|adj=on}} in area and contained many German observation posts, machine-guns and trench-mortars. New German defensive tactics adopted after the Battle of the Somme, of defence in depth and rapid counter-attack, had been enforced on the German 6th Army after the disaster of 9 April. A British attack was defeated everywhere on 3 May, except at Fresnoy which was captured by the 1st Canadian Division. The attack on Oppy Wood by [[92nd Brigade (United Kingdom)|92nd Brigade]] of the [[31st Division (United Kingdom)|31st Division]] during the [[Third Battle of the Scarpe]] {{nowrap|(3–4 May),}} was repulsed with many British casualties. The area was defended by the 1st Guard Reserve Division and the 15th Reserve Division, which had not needed to call on specialist [[Eingreif division|Eingreif]] (counter-attack) divisions. ||| ||| ||| +1 Central Plains War ||| Chinese Civil War ||| After the Northeast Army's entrance to Central China, [[Manchuria]]'s defense was considerably weakened. It indirectly led to Japan's aggression in the [[Mukden Incident]]. In a wider view, this battle reflected the weakness behind the Nationalist government's unification. The [[Kuomintang]] was unable to resolve internal disputes between the central government and the regional powers through political methods, and had to resort to military measures. Even though Chiang Kai-shek, who represented the central government, managed to achieve victory, the methods he used, including bribery of subordinates of the opposition, were not consistently effective. It did nothing to cement unity among the cliques in the party. The [[Xi'an Incident]] in 1936 and the collapse of the Kuomintang force in the [[Chinese Civil War]] are, to an extent, due the recurrence of this internal conflict. ||| Aftermath ||| ||| +1 Colmar Pocket ||| World War II ||| The '''Colmar Pocket''' ({{lang-fr|Poche de Colmar}}; {{lang-de |Brückenkopf Elsaß}}) was the area held in central [[Alsace]], [[France]] by the [[Nazi Germany|German]] [[19th Army (Wehrmacht)|Nineteenth Army]] from November 1944 – February 1945, against the [[Sixth United States Army Group|U.S. 6th Army Group]] during [[World War II]]. It was formed when 6th AG liberated southern and northern Alsace and adjacent eastern [[Lorraine (province)|Lorraine]], but could not clear central Alsace. During [[Operation Nordwind]] in December 1944, the 19th Army attacked north out of the Pocket in support of other German forces attacking south from the [[Saarland|Saar]] into northern Alsace. In late January and early February 1945, the [[French First Army]] (reinforced by the [[XXI Corps (United States)|U.S. XXI Corps]]) cleared the Pocket of German forces. ||| ||| ||| +1 Convoy SC 7 ||| World War II ||| '''SC-7''' was the code name for a large Allied [[World War II]] [[convoy]] of 35 merchant ships and six escorts which sailed eastbound from [[Sydney, Nova Scotia]] for [[Liverpool]] and other [[United Kingdom]] ports on 5 October 1940. While crossing the Atlantic, the convoy was intercepted by one of the [[U-boat|German Navy's submarine]] [[Wolfpack (naval tactic)|wolfpacks]]. During the ensuing [[naval battle|battle]], the escort was completely overwhelmed and 20 of the 35 cargo vessels were sunk and 2 more damaged, with 141 lives lost. ||| ||| ||| +1 Convoys HX 229/SC 122 ||| World War II ||| The battle around convoys '''HX 229''' and '''SC 122''' occurred during March 1943 in the [[Battle of the Atlantic (1939-1945)|Battle of the Atlantic]], and was the largest convoy battle of [[World War II]]. British merchant shipping was formed into [[convoy]]s for protection against German submarine attack. ''[[Kriegsmarine]]'' tactics against convoys employed multiple-submarine [[Wolfpack (naval tactic)|wolfpack]] tactics in nearly simultaneous surface attacks at night. Patrolling aircraft restricted the ability of submarines to converge on convoys during daylight. The North Atlantic winters offered the longest periods of darkness to conceal surfaced submarine operations. The winter of 1942–43 saw the largest number of submarines deployed to the mid-Atlantic before comprehensive anti-submarine aircraft patrols could be extended into that area. ||| ||| ||| +1 Damour massacre ||| Lebanese Civil War ||| The '''Damour massacre''' took place on January 20, 1976, during the 1975–1990 [[Lebanese Civil War]]. [[Damour]], a [[Maronite Christianity in Lebanon|Maronite]] town on the main highway south of [[Beirut]], was attacked by [[Palestine Liberation Organisation]] units. Part of its population died in battle or in the [[massacre]] that followed, and the remainder were forced to flee. ||| ||| ||| +1 Dano-Swedish War (1657–58) ||| Second Northern War ||| The '''Dano-Swedish War of 1657–58''' was a conflict between [[Swedish Empire|Sweden]] and [[Denmark–Norway]] during the [[Second Northern War]]. In 1657, [[Charles X of Sweden]] and his Swedish army were [[Deluge (history)|bogged down]] in [[Polish–Lithuanian Commonwealth|Poland]]. [[Frederick III of Denmark|Frederick III]] saw this as an opportunity to recover [[Second Treaty of Brömsebro (1645)|the territories lost in 1645]] and attacked Sweden. The outbreak of war with Denmark provided Charles with an excuse to withdraw from the Polish campaign and move against Denmark. ||| ||| ||| +1 Defence of Pukekohe East 1863 ||| New Zealand Wars ||| [[Invasion of Waikato|Invasion of the Waikato]], part of the [[New Zealand Wars]]. On 13 September and 14 September 1863, 11 settlers and 6 militia men inside a half completed stockade around the Pukekohe East church held off a [[Māori people|Māori]] [[taua]] or war party of approximately 200 men from [[Ngāti Maniapoto]] and [[Ngāti Pou]] [[iwi]], until they were relieved by detachments of the 18th, 65th and 70th Regiments. In a series of actions around the stockade the taua sustained 20% casualties and retreated. ||| ||| ||| +1 Defense of Harbin ||| Japanese invasion of Manchuria ||| The '''Defense of Harbin''' occurred during the early [[Second Sino-Japanese War]], as part of the campaign of the [[Japanese invasion of Manchuria|Invasion of Manchuria]] by forces of the [[Empire of Japan]] from 25 January to 4 February 1932. ||| ||| ||| +1 Defense of Hengyang ||| Second Sino-Japanese War ||| The '''Battle of Hengyang''' was the longest defense of a single city of the entire [[Second Sino-Japanese War]]. When [[Changsha]] fell to the [[Imperial Japanese Army]] on June 19, 1944, [[Hengyang]] became their next target. The reorganized 11th Army, consisting of 10 divisions, 4 brigades, and over 100,000 men, assumed the task of attacking Hengyang. ||| ||| ||| +1 Defense of Sihang Warehouse ||| Second Sino-Japanese War ||| The '''defense of Sihang Warehouse''' ({{zh|t=四行倉庫|p=Sìháng Cāngkù}}) took place from October 26 to November 1, 1937, and marked the beginning of the end of the three-month [[Battle of Shanghai]] in the opening phase of the [[Second Sino-Japanese War]]. Defenders of the warehouse held out against numerous waves of [[Imperial Japanese Army|Japanese forces]] and covered [[National Revolutionary Army|Chinese forces]] retreating west during the Battle of Shanghai. ||| ||| ||| +1 Destruction of Neuss ||| Cologne War ||| The '''Destruction of Neuss''' occurred in July 1586, during the [[Cologne War]]. [[Alexander Farnese, Duke of Parma|Alexander Farnese, Duke of Parma's]] troops surrounded the city of [[Neuss]], an important Protestant garrison in the Electorate of Cologne. After the city refused to capitulate, Parma's army reduced the city to rubble, through a combination of artillery fire, destructive house to house fighting, plundering; during the battle, a fire started that destroyed most of the rest of the city. In total, approximately 3000 civilians died, of a population of approximately 4500, and the entire garrison was killed. ||| ||| ||| +1 Dnieper–Carpathian Offensive ||| Eastern Front (World War II) ||| After the slackening of the Soviet effort at the end of February, the [[Oberkommando des Heeres|OKH]], the headquarters for the [[Eastern Front (World War II)|Eastern Front]] believed any further offensive effort in that sector unlikely. ||| Battle ||| Second phase ||| Proskurov–Chernovtsy Offensive +1 Dos de Mayo Uprising ||| Peninsular War ||| The '''Dos de Mayo''' of 1808, was a rebellion by the people of [[Madrid]] against the occupation of the city by French troops, provoking a brutal repression by the [[First French Empire|French Imperial forces]] and triggering the [[Peninsular War]]. ||| ||| ||| +1 Easter Sunday Raid ||| World War II ||| The '''Easter Sunday Raid''' (or '''Battle of Ceylon''') was an air attack by [[aircraft carrier|carrier]]-based aircraft of the [[Imperial Japanese Navy]] against [[Colombo]], [[Ceylon]] (now Sri Lanka), on [[Easter Sunday]], 5 April 1942, during [[World War II]]. This attack was part of the [[Indian Ocean Raid]], and was followed a few days later by a similar attack on [[Trincomalee]]. The targets were [[United Kingdom|British]] warships, harbour installations, and air bases; the object was to disrupt the war effort of [[Commonwealth of Nations|British Commonwealth]] nations and force the [[British Eastern Fleet]] to leave [[Asia]]n waters. ||| ||| ||| +1 Eelam War I ||| Sri Lankan Civil War ||| '''Eelam War I''' is the name given to the initial phase of the [[Sri Lankan Civil War|armed conflict]] between the government of [[Sri Lanka]] and the [[LTTE]]. Although tensions between the government and Tamil militant groups had been brewing since the 1970s, full-scale war did not break out until an attack by the LTTE on a [[Sri Lanka Army]] patrol in [[Jaffna]], in the north of the country, on July 23, 1983, which killed 13 soldiers. The attack, and the subsequent riots in the south (dubbed [[Black July]]), are generally considered as the start of the conflict. ||| ||| ||| +1 Egyptian 25th Brigade ambush ||| Yom Kippur War ||| '''Egyptian 25th Brigade ambush''' was a [[battle]] that occurred on October 17, 1973, the eleventh day of the [[Yom Kippur War]], east of the [[Great Bitter Lake]], in the [[Sinai Peninsula]]. The ambush was conducted by the [[Israel Defense Forces]]' [[162nd Division (IDF)|162nd Division]], against the 25th Brigade of the [[Egypt]]ian army. The Israelis' goal was the destruction of the brigade, which attempted to disrupt the Israeli crossing of the [[Suez Canal]]. ||| ||| ||| +1 Ehden massacre ||| Lebanese Civil War ||| The '''Ehden massacre''' ([[Arabic]]: مجزرة إهدن ) took place on 13 June 1978, part of the 1975–1990 [[Lebanese Civil War]]. It was an inter-Christian attack that occurred between [[Maronites|the Maronite]] clans. ||| ||| ||| +1 First Anglo-Dutch War ||| Anglo-Dutch Wars ||| The '''First Anglo-Dutch War''' ({{lang-nl|Eerste Engels-Nederlandse oorlog}}) (1652–54) (called the '''First Dutch War''' in England) was a conflict fought entirely at sea between the navies of the [[Commonwealth of England]] and the [[United Provinces of the Netherlands]]. Caused by disputes over trade, the war began with English attacks on Dutch merchant shipping, but expanded to vast fleet actions. Ultimately, it resulted in the English Navy gaining control of the seas around England, and forced the Dutch to accept an English monopoly on trade with England and her colonies. It was the first of the [[Anglo-Dutch Wars]]. ||| ||| ||| +1 First Battle of Algeciras ||| French Revolutionary Wars ||| The '''First Battle of Algeciras''' was a naval battle fought on 6 July 1801 (17 messidor an IX of the [[French Republican Calendar]]) between a squadron of British [[Royal Navy]] [[ships of the line]] and a smaller [[French Navy]] squadron at anchor in the fortified Spanish port of [[Algeciras]] in the [[Strait of Gibraltar]]. The British outnumbered their opponents, but the French position was protected by Spanish gun batteries and the complicated [[shoals]] that obscured the entrance to [[Algeciras Bay]]. The French squadron, under Contre-Admiral [[Charles Linois]], had stopped at Algeciras ''en route'' to the major Spanish naval base at [[Cadiz]], where they were to form a combined French and Spanish fleet for operations against Britain and its allies in the [[French Revolutionary Wars]]. The British, under Rear-Admiral [[Sir James Saumarez]], sought to eliminate the French squadron before it could reach Cadiz and form a force powerful enough to overwhelm Saumarez and launch attacks against British forces in the [[Mediterranean Sea]]. ||| ||| ||| +1 First Battle of Donetsk Airport ||| War in Donbass ||| The '''First Battle of Donetsk Airport''' was a conflict between separatist insurgents associated with the [[Donetsk People's Republic]] and [[First Yatsenyuk Government|Ukrainian government]] forces that took place at [[Donetsk International Airport]] on 26–27 May 2014, as part of the [[War in Donbass]] that began after the [[2014 Ukrainian revolution]]. A [[Second Battle of Donetsk Airport|second battle]] broke out at the airport on 28 September 2014. ||| ||| ||| +1 First Battle of Höchstädt ||| War of the Spanish Succession ||| The '''First Battle of Höchstädt''' was fought on 20 September 1703, near [[Höchstädt an der Donau|Höchstädt]] in [[Bavaria]], and resulted in a [[France|French]]-[[Bavaria]]n victory under Marshal [[Claude Louis Hector de Villars|Villars]] against the [[Austria]]ns under General [[Hermann Otto II of Limburg Stirum|Hermann Otto]] of [[Limburg Stirum|Limburg Styrum]]. The battle was part of the [[War of the Spanish Succession]] (1701–1714) over who had the right to succeed Charles II as king of Spain. ||| ||| ||| +1 First Battle of Kharkov ||| World War II ||| Kharkov was one of the most populated Soviet cities during [[World War II]]. It was rated at 901,000 people on 1 May 1941. In September 1941 the population skyrocketed to one million 500 thousand people, due to multiple evacuees from other cities. After multiple attacks and many deaths, the population of Kharkov decreased to 180 – 190 thousand, which was the size after the liberation of the city in August 1943. ||| Importance of Kharkov ||| Population of Kharkov ||| +1 First Battle of Maryang San ||| Korean War ||| The '''First Battle of Maryang San''' (3–8 October 1951), also known as the '''Defensive Battle of Maliangshan''' ({{zh|s=马良山防御战|p=Mǎliáng Shān Fángyù Zhàn}}), was fought during the [[Korean War]] between United Nations (UN) forces—primarily Australian and British—and the Chinese communist [[People's Volunteer Army]]. The fighting occurred during a limited UN offensive by [[I Corps (United States)|US I Corps]], codenamed [[Operation Commando (1951)|Operation Commando]]. This offensive ultimately pushed the Chinese back from the [[Imjin River]] to the [[Jamestown Line]] and destroyed elements of four Chinese [[Field army|armies]] following heavy fighting.{{refn|In Chinese military nomenclature, the term 'Army' (军) means [[Corps]], while the term 'Army Group' (集团军) means [[Field Army]].|group=Note}} The much smaller battle at Maryang San took place over a five-day period, and saw the [[3rd Battalion, Royal Australian Regiment]] (3 RAR) dislodge a numerically superior Chinese force from the tactically important Kowang-San (Hill 355) and Maryang San (Hill 317) features, in conjunction with other units of the [[1st Commonwealth Division]]. ||| ||| ||| +1 First Battle of Newbury ||| First English Civil War ||| The '''First Battle of Newbury''' was a battle of the [[First English Civil War]] that was fought on 20 September 1643 between a Royalist army, under the personal command of [[Charles I of England|King Charles]], and a Parliamentarian force led by the [[Robert Devereux, 3rd Earl of Essex|Earl of Essex]]. Following a year of Royalist successes in which they took [[Banbury]], [[Oxford]] and [[Reading, Berkshire|Reading]] without conflict before storming [[Storming of Bristol|Bristol]], the Parliamentarians were left without an effective army in the field. When Charles [[Siege of Gloucester|laid siege to Gloucester]], Parliament was forced to muster a force under Essex with which to beat Charles's forces off. After a long march, Essex surprised the Royalists and forced them away from Gloucester before beginning a retreat to London. Charles rallied his forces and pursued Essex, overtaking the Parliamentarian army at Newbury and forcing them to march past the Royalist force to continue their retreat. ||| ||| ||| +1 First Battle of Pocotaligo ||| American Civil War ||| The '''First Battle of Pocotaligo''' was a battle in the [[American Civil War]] fought on May 29, 1862 near [[Yemassee, South Carolina|Yemassee]], [[South Carolina]]. The Union objective was to sever the [[Charleston and Savannah Railroad]] and thus isolate [[Charleston, South Carolina]]. ||| ||| ||| +1 First Battle of the Corunna Road ||| Spanish Civil War ||| The '''First Battle of the Corunna Road''' took place between 29 November and 3 December 1936 during the [[Spanish Civil War]]. The Nationalists tried to isolate Madrid from the west, cutting the Corunna Road, but the Republican army rejected the attack. ||| ||| ||| +1 First Battle of the Stronghold ||| Modoc War ||| The '''First Battle of the Stronghold''' (January 17, 1873) was the second battle in the [[Modoc War]] of 1872–1873. The battle was fought between the [[United States]] Army under Lieutenant Colonel [[Frank Wheaton]] and a band of the [[Native Americans in the United States|Native American]] [[Modoc people|Modoc]] tribe from [[Oregon]] and [[California]], led by [[Kintpuash|Captain Jack]] (Kintpuash in Modoc). ||| ||| ||| +1 First day on the Somme ||| Battle of the Somme ||| The '''first day on the Somme''', 1 July 1916, was the opening day of the [[Battle of Albert (1916)|Battle of Albert]] {{nowrap|(1–13 July),}} the name given by the British to the first two weeks of the [[Battle of the Somme]]. Nine corps of the French [[Sixth Army (France)|Sixth Army]], the British [[Fourth Army (United Kingdom)|Fourth]] and the [[Third Army (United Kingdom)|Third]] armies, attacked the German [[2nd Army (German Empire)|2nd Army]] of General [[Fritz von Below]], from Foucaucourt south of the Somme northwards to Serre, north of the Ancre and at Gommecourt, which was {{convert|2|mi|km}} beyond, in the Third Army area. The objective of the attack was to capture the German first and second positions from Serre south to the Albert–Bapaume road and the first position from the road south to Foucaucourt. ||| ||| ||| +1 Formosa Air Battle ||| Pacific War ||| The '''Formosa Air Battle''' ({{lang-ja|台湾沖航空戦}}, {{zh|t=臺灣空戰}}) took place between October 10 and 20, 1944, off the eastern coasts of the [[Ryukyu Islands]], [[Formosa]], and [[Luzon]]. It was fought by the [[Imperial Japanese Navy Air Service]] and the approaching [[Task Force 38]] of the [[United States Third Fleet]] and was one of a series of [[air raids on Japan]] during the [[Pacific War]]. The attacks served to prevent Japanese aircraft from participating in the [[Battle of Leyte Gulf]] later that month. ||| ||| ||| +1 Fort Lee Historic Park ||| American Revolutionary War ||| '''Fort Lee''', originally '''Fort Constitution''', was an [[American Revolutionary War]] fort located on the crest of the [[Hudson Palisades]] in what was then [[Hackensack Township, New Jersey]] opposite [[Fort Washington (New York)|Fort Washington]] at the northern end of [[Manhattan|Manhattan Island]]. ||| Fort Lee (American Revolutionary War) ||| ||| +1 General Offensive of 1 March 1949 ||| Indonesian National Revolution ||| The '''General Offensive of 1 March 1949''' was an offensive during the [[Indonesian National Revolution]]. ||| ||| ||| +1 Glorious First of June ||| French Revolutionary Wars ||| The '''Glorious First of June''' (also known in France as the '''{{lang|fr|''Bataille du 13 prairial an 2''}}''' or '''{{lang|fr|''Combat de Prairial''}}''') [[#notea|[Note A]]] of 1794 was the first and largest [[fleet action]] of the naval conflict between the [[Kingdom of Great Britain]] and the [[First French Republic]] during the [[French Revolutionary Wars]]. ||| ||| ||| +1 Gospić massacre ||| Croatian War of Independence ||| The '''Gospić massacre''' was the killing of 100–120 civilians in [[Gospić]], [[Croatia]] during the last two weeks of October 1991, during the [[Croatian War of Independence]]. The majority of the victims were ethnic [[Serbs]], arrested in Gospić and the nearby coastal town of [[Karlobag]]. Most of them were arrested on 16–17 October. Some of the detainees were taken to the [[Perušić]] barracks and executed in Lipova Glavica near the town, while others were shot in the Pazarište area of Gospić. The killings were ordered by the Secretary of [[Lika]] Crisis Headquarters, Tihomir Orešković, and the commander of the 118th Infantry Brigade of the [[Croatian National Guard]], [[Lieutenant Colonel]] [[Mirko Norac]]. ||| ||| ||| +1 Gothic Line ||| World War II ||| The '''Gothic Line''' ({{lang-de|Gotenstellung}}; {{lang-it|Linea Gotica}}) formed [[Generalfeldmarschall|Field Marshal]] [[Albert Kesselring]]'s last major line of defence in the [[Italian Campaign (World War II)|Italian Campaign]] during the final stages of the [[World War II|Second World War]] along the summits of the northern part of the [[Apennine Mountains]] during the fighting retreat of the [[Wehrmacht|German]] forces in [[Italy]] against the [[Allied Armies in Italy]] commanded by [[General (United Kingdom)|General]] [[Sir]] [[Harold Alexander, 1st Earl Alexander of Tunis|Harold Alexander]]. ||| ||| ||| +1 Guadalcanal Campaign ||| World War II ||| The '''Guadalcanal Campaign''', also known as the '''Battle of Guadalcanal''' and [[code-name]]d '''Operation Watchtower''', originally applying only to an operation to take the island of [[Tulagi]], by [[Allies of World War II|Allied]] forces, was a military campaign fought between 7 August 1942 and 9 February 1943 on and around the island of [[Guadalcanal]] in the [[Pacific War|Pacific theater]] of [[World War II]]. It was the first major offensive by [[Allies of World War II|Allied]] forces against the [[Empire of Japan]]. ||| ||| ||| +1 Gukurahundi ||| Rhodesian Bush War ||| Before the [[Rhodesian Bush War]], the main opposition party, ZAPU, split into two groups in 1963, the split-away group being ZANU. ||| Background ||| ||| +1 Gunboat War ||| French Revolutionary Wars ||| The naval conflict between Britain and Denmark commenced with the [[Battle of Copenhagen (1801)|First Battle of Copenhagen]] in 1801 when [[Horatio Nelson]]'s squadron of Admiral Parker's fleet attacked the Danish capital. This came as a basis of Denmark-Norway's policy of [[armed neutrality]] during the latter stages of the [[French Revolutionary Wars]], where Denmark used its naval forces to protect trade flowing within, into and out of the Danish-Norwegian waters. Hostilities between Denmark-Norway and the United Kingdom broke out again by the [[Battle of Copenhagen (1807)|Second Battle of Copenhagen]] in 1807, when the British attacked the Danish capital to ensure that the Danish-Norwegian fleet did not fall into the hands of [[Napoleon]]. ||| Background ||| ||| +1 Hainan Island Operation ||| Second Sino-Japanese War ||| The '''Hainan Island Operation''', or {{nihongo||海南島作戦|'''Kainan-tō sakusen'''}} in [[Japanese language|Japanese]], was part of a campaign by the [[Empire of Japan]] during the [[Second Sino-Japanese War]] to [[blockade]] the [[Republic of China]] and prevent it from communicating with the outside world as well as to prevent imports of much-needed arms and materials. ||| ||| ||| +1 Highway of Death ||| Gulf War ||| The '''Highway of Death''' ({{Lang-ar|طريق الموت}} ''ṭarīq al-mawt'') refers to a six-lane [[highway]] between Kuwait and Iraq, officially known as '''Highway 80'''. It runs from [[Kuwait City]] to the border town of [[Safwan]] in Iraq and then on to the Iraqi city of [[Basra]]. The road had been used by Iraqi armored divisions for the 1990 [[Invasion of Kuwait]]. The road was repaired after the [[Gulf War|Persian Gulf War]] and used by U.S. and British forces in the initial stages of the [[2003 invasion of Iraq]]. ||| ||| ||| +1 Huaiyin–Huai'an Campaign ||| Chinese Civil War ||| The [[Huaiyin District, Huai'an|Huaiyin]]-[[Huai'an]] Campaign (两淮战役) was a campaign consisted of several battles fought between the [[Kuomintang|nationalists]] and the [[communist]]s during the [[Chinese Civil War]] in the immediate post-[[World War II]] era, and resulted in communists taking the city of [[Huaiyin District, Huai'an|Huaiyin]] and the city of [[Huai'an]]. Sometimes this campaign is separated into two by the communists as '''[[Huaiyin District, Huai'an|Huaiyin]] Campaign''' (淮阴战役) and '''[[Huai'an]] Campaign''' (淮安战役) respectively. ||| ||| ||| +1 Huon Peninsula campaign ||| World War II ||| The '''Huon Peninsula campaign''' was a series of battles fought in north-eastern [[Papua New Guinea]] in 1943–1944 during the [[World War II|Second World War]]. The campaign formed the initial part of an offensive that the [[Allies of World War II|Allies]] launched in the Pacific in late 1943 and resulted in the Japanese being pushed north from [[Lae]] to [[Sio, Papua New Guinea|Sio]] on the northern coast of New Guinea over the course of a four-month period. For the Australians, a significant advantage was gained through the technological edge that Allied industry had achieved over the Japanese by this phase of the war, while the Japanese were hampered by a lack of supplies and reinforcements due to Allied interdiction efforts at sea and in the air. ||| ||| ||| +1 Indo-Pakistani Naval War of 1971 ||| Bangladesh Liberation War ||| The '''Indo-Pakistani Naval war of 1971''' consisted of a series of naval battles fought between the Indian and Pakistani Navy during the [[Indo-Pakistani War of 1971]]. The battles were an integral part of India-Pakistan War and the [[Bangladesh Liberation War]]. The series of naval operations began by the [[Indian Navy]] to exert pressure from the seas while the Indian Army and Indian Air Force moved in to close the ring round East Pakistan from several directions on land. The naval operations incorporated the [[Maritime Interdiction Operations|naval interdiction]], air defence, ground support, and logistics missions. ||| ||| ||| +1 Indo-Pakistani Naval War of 1971 ||| Indo-Pakistani War of 1971 ||| The '''Indo-Pakistani Naval war of 1971''' consisted of a series of naval battles fought between the Indian and Pakistani Navy during the [[Indo-Pakistani War of 1971]]. The battles were an integral part of India-Pakistan War and the [[Bangladesh Liberation War]]. The series of naval operations began by the [[Indian Navy]] to exert pressure from the seas while the Indian Army and Indian Air Force moved in to close the ring round East Pakistan from several directions on land. The naval operations incorporated the [[Maritime Interdiction Operations|naval interdiction]], air defence, ground support, and logistics missions. ||| ||| ||| +1 Invasion of Ceylon (1795) ||| French Revolutionary Wars ||| The '''Invasion of Ceylon''' was a military campaign fought as a series of [[amphibious operations]] between the summer of 1795 and spring of 1796 between the garrison of the Batavian colonies on the [[Indian Ocean]] island of [[Ceylon]] (now Sri Lanka) and a British invasion force sent from [[British India]]. The [[Dutch Republic]] had been a British ally during the [[French Revolutionary Wars]], but was overrun by the [[First French Republic|French Republic]] in the winter of 1794 and reformed into the [[client state]] of the [[Batavian Republic]]. The British government, working with the exiled [[Stadtholder]] [[William V, Prince of Orange|William of Orange]], ordered the seizure of Batavian assets including colonies of the former [[Dutch Empire]]. Among the first territories to be attacked were those on the coast of the island of [[Ceylon]], with operations initially focused on the trading port at [[Trincomalee]]. ||| ||| ||| +1 Invasion of Normandy ||| Operation Overlord ||| The '''Invasion of Normandy''' was the invasion by and establishment of [[Allies of World War II|Western Allied]] forces in [[Normandy]], during [[Operation Overlord]] in 1944 during [[World War II]]; the largest amphibious invasion to ever take place. ||| ||| ||| +1 Invasion of Normandy ||| World War II ||| The '''Invasion of Normandy''' was the invasion by and establishment of [[Allies of World War II|Western Allied]] forces in [[Normandy]], during [[Operation Overlord]] in 1944 during [[World War II]]; the largest amphibious invasion to ever take place. ||| ||| ||| +1 Invasion of Poland ||| World War II ||| Following several German-staged incidents (like the [[Gleiwitz incident]], a part of [[Operation Himmler]]), which German propaganda used as a [[pretext]] to claim that German forces were acting in [[self-defence]], the first regular act of war took place on 1 September 1939, at 04:40, when the ''Luftwaffe'' [[Bombing of Wieluń|attacked the Polish town of Wieluń]], destroying 75% of the city and killing close to 1,200 people, most of them civilians. This invasion subsequently began [[World War II]]. Five minutes later, the old German [[pre-dreadnought battleship]] ''[[German battleship Schleswig-Holstein|Schleswig-Holstein]]'' opened fire on the Polish military transit depot at [[Battle of Westerplatte|Westerplatte]] in the [[Free City of Danzig]] on the [[Baltic Sea]]. At 08:00, German troops—still without a formal declaration of war issued—[[Battle of Mokra|attacked near the Polish town of Mokra]]. The [[Battle of the Border]] had begun. Later that day, the Germans attacked on Poland's western, southern and northern borders, while German aircraft began raids on Polish cities. The main axis of attack led eastwards from Germany proper through the western Polish border. Supporting attacks came from [[East Prussia]] in the north, and a co-operative German-[[Slovak Republic (1939–1945)|Slovak]] tertiary attack by units ([[Field Army Bernolák|Field Army 'Bernolák']]) from German-allied [[Slovak Republic (1939–1945)|Slovakia]] in the south. All three assaults converged on the Polish capital of Warsaw. ||| Details of the campaign ||| Phase 1: German invasion ||| +1 Invasion of the Waikato ||| New Zealand Wars ||| The '''Invasion of the Waikato''' was the biggest and most important campaign of the 19th century [[New Zealand Wars]], fought in the [[North Island]] of [[New Zealand]] between the military forces of the colonial government and a federation of [[Iwi|Māori tribe]]s known as the '[[Māori King Movement|Kingitanga Movement]]' The [[Waikato]] is a territorial region with a northern boundary somewhat south of the city of [[Auckland]]. ||| ||| ||| +1 Iraq spring fighting of 2004 ||| Iraq War ||| The '''Iraq Spring Fighting of 2004''' (April 4, 2004 - June 24, 2004) was a series of [[operational warfare|operational]] offensives and various major engagements during the [[Iraq War]]. It was a turning point in the war: before, the conflict was simply US/Coalition versus insurgents, but the Spring Fighting marked the entrance of [[militia]]s and religiously based ([[Shi'a]] and [[Sunni]]) militant Iraqi groups, such as the [[Mahdi Army]] into the arena of conflict. ||| ||| ||| +1 Italian War of 1521–26 ||| Italian Wars ||| The '''Italian War of 1521–26''', sometimes known as the '''Four Years' War''', was a part of the [[Italian Wars]]. The war pitted [[Francis I of France]] and the [[Republic of Venice]] against the [[Holy Roman Emperor]] [[Charles V, Holy Roman Emperor|Charles V]], [[Henry VIII of England]], and the [[Papal States]]. The conflict arose from animosity over the election of Charles as Emperor in 1519–20 and from [[Pope Leo X]]'s need to ally with Charles against [[Martin Luther]]. ||| ||| ||| +1 Japanese invasion of French Indochina ||| Second Sino-Japanese War ||| In September 1940, the {{nihongo|'''Japanese invaded Vichy French Indochina'''|仏印進駐|Futsu-in shinchū}} to prevent the [[Republic of China (1912-1949)|Republic of China]] from importing arms and fuel through [[French Indochina]] along the [[Sino-Vietnamese Railway]], from the port of [[Haiphong]] through [[Hanoi]] to [[Kunming]] in [[Yunnan]]. The fighting, which lasted several days before the [[Vichy France|French authorities]] reached an agreement with the Japanese, took place in the context of the ongoing [[Second Sino-Japanese War|Sino-Japanese War]] and [[World War II]]. Japan was able to occupy [[Tonkin]] in northern Indochina, tightening the blockade of China and making a continuation of the drawn-out [[Battle of South Guangxi]] unnecessary. ||| ||| ||| +1 Joint warfare in South Vietnam, 1963–69 ||| Vietnam War ||| In the [[Vietnam War]], after the assassinations of [[Ngo Dinh Diem]] and [[John F. Kennedy]] in late 1963 and the [[Gulf of Tonkin incident]] in 1964 and the continuing political instability in the South, the United States made a policy commitment to begin '''joint warfare in South Vietnam''', a period of gradual escalation and Americanization, involving the commitment of large-scale combat forces from the United States and allied countries. It was no longer assumed the [[Republic of Vietnam]] could create a desirable situation without major external assistance.<ref name=INR-VN4>{{citation ||| ||| ||| +1 Junkersdorf massacre ||| Cologne War ||| The '''Junkersdorf massacre''' (3 July 1586) was an incident in the [[Cologne War]] of 1583–1588. ||| ||| ||| +1 Juno Beach ||| Western Front (World War II) ||| In 1942, the Western Allies agreed to open a second front (the [[Western Front (World War II)|Western Front]]) in Western Europe to take pressure off the beleaguered [[Red Army]] in the [[Soviet Union]]. ||| Background ||| Invasion of Normandy ||| +1 Kamenets-Podolsky pocket ||| World War II ||| The '''Battle of the [[Kamianets-Podilskyi]] pocket''' (or Battle of Tarnopol) was a Soviet effort to surround and destroy the [[Wehrmacht]]'s [[1st Panzer Army]] of [[Army Group South]]. The envelopment occurred in March 1944 on the [[Eastern Front (World War II)|Eastern Front]] during the [[World War II|Second World War]]. The [[Red Army]] successfully created the pocket, trapping some 200,000 German soldiers inside. Under the command of Generaloberst [[Hans-Valentin Hube]] and with the direction of Fieldmarshal [[Erich von Manstein]], the German forces in the pocket were able to fight their way out and escape by mid-April. This event is sometimes referred to as '''Hube's Pocket'''. ||| ||| ||| +1 Kokoda Track campaign ||| World War II ||| The '''Kokoda Track campaign''' or '''Kokoda Trail campaign''' was part of the [[Pacific War]] of [[World War II]]. The campaign consisted of a series of battles fought between July and November 1942 between [[Military history of Japan#Showa Period - World War II|Japanese]] and [[Allies of World War II|Allied]]—primarily Australian—forces in what was then the Australian territory of [[Papua (Australian territory)|Papua]]. Following a landing near Gona, on the north coast of [[New Guinea]], on the night of 21/22 July, Japanese forces attempted to advance south overland through the mountains of the [[Owen Stanley Range]] to seize [[Port Moresby]] as part of a strategy of isolating Australia from the United States. Initially only limited Australian forces were available to oppose them; and, after making rapid progress, the Japanese [[South Seas Force]] under Major General [[Tomitaro Horii]] clashed with under-strength Australian forces from the [[Papuan Infantry Battalion]] and the Australian [[39th Battalion (Australia)|39th Battalion]] on 23 July at Awala, forcing them back to Kokoda. Following a confused night battle on 28/29 July, the Australians were again forced to withdraw. The Australians attempted to recapture Kokoda on 8 August without success, which resulted in heavy casualties on both sides; and the 39th Battalion was subsequently forced back to Deniki. A number of Japanese attacks were subsequently fought off by the Australian [[Australian Army Reserve|Militia]] over the following week; yet, by 14 August, they began to withdraw over the Owen Stanley Range, down the [[Kokoda Track]] towards Isurava. ||| ||| ||| +1 Kosovo Operation (1944) ||| World War II ||| The '''Kosovo Operation''' (October 15-November 20, 1944) was a series of military operations leading up to one final push during [[World War II]], launched by the Bulgarian army (commanded by [[Major general|Major General]] [[Kiril Stanchev]]) with the assistance of [[Yugoslav Partisans|Yugoslav]] and [[Albanian resistance during World War II|Albanian]] Partisans to expel [[Nazi Germany|German]] forces from [[Kosovo]] and prevent the retreat of German forces from Greece. The operation resulted in the capture of Kosovo by the Communists. ||| ||| ||| +1 Lahore Front ||| Indo-Pakistani War of 1965 ||| The '''Battle of Lahore''' ([[Urdu]]: {{Nastaliq|لاہور کی لڑائی}}, [[Hindi]]: लाहौर की लड़ाई ''Lāhaur kī laḍ.āī'') or the '''Lahore Front''' were a series of battles in the [[Indo-Pakistani War of 1965]] fought in around Lahore. The battle ended with an Indian tactical victory. However Indian forces halted their assault on Lahore once they had reached captured the village of [[Battle of Burki|Burki]]. ||| ||| ||| +1 Lawrence Massacre ||| American Civil War ||| By the beginning of the [[American Civil War]], Lawrence was already a target for pro-slavery ire, having been seen as the anti-slavery stronghold in the state and, more importantly, a staging area for Union and [[Jayhawker]] incursions into Missouri. Initially, the town and surrounding area were extremely vigilant and reacted strongly to any rumors that enemy forces might be advancing on the town. However, by the summer of 1863, none of the threats had materialized, so citizen fears had declined and defense preparations were relaxed. ||| Background ||| ||| +1 Little Belt Affair ||| War of 1812 ||| The ''Little Belt'' Affair was one of many incidents and events that led to the [[War of 1812]]. ||| ||| ||| +1 Lublin–Brest Offensive ||| Operation Bagration ||| The '''Lublin–Brest Offensive''' ({{lang-ru|Люблин‐Брестская наступательная операция}}, 18 July – 2 August 1944) was a part of the [[Operation Bagration]] strategic offensive by the Soviet [[Red Army]] to clear the [[Nazi German]] forces from the central‐eastern [[Poland]]. The offensive was executed by the left (southern) wing of the [[1st Belorussian Front]] and took place during July 1944; it was opposed by the German [[Army Group North Ukraine]] and [[Army Group Centre]]. ||| ||| ||| +1 Matanikau Offensive ||| World War II ||| The '''Matanikau Offensive''', from 1–4 November 1942, sometimes referred to as the '''Fourth Battle of the Matanikau''', was an engagement between United States (U.S.) [[United States Marine Corps|Marine]] and [[United States Army|Army]] and [[Empire of Japan|Imperial Japanese]] [[Imperial Japanese Army|Army]] forces around the [[Matanikau River]] and [[Point Cruz]] area on [[Guadalcanal]] during the [[Guadalcanal campaign]] of [[World War II]]. The action was one of the last of a series of engagements between U.S. and Japanese forces near the Matanikau River during the campaign. ||| ||| ||| +1 May 1941 Sanski Most revolt ||| World War II ||| The [[Independent State of Croatia]] (NDH) was a [[World War II]] [[puppet state]] of [[Nazi Germany]] and [[Kingdom of Italy (1861-1946)|Italy]]. It was created on 10 April 1941 from part of [[Democratic Federal Yugoslavia]] which had been occupied by the [[Axis powers]]. The Independent State of Croatia consumed most of current day [[Croatia]] and [[Bosnia and Herzegovina]] and part of [[Serbia]]. ||| Background ||| ||| +1 Naousa massacre ||| Greek War of Independence ||| The '''Massacre of Naoussa''' or '''Destruction of Naoussa''' was a bloody event of the [[Greek War of Independence]] that occurred on 13 April 1822. ||| ||| ||| +1 Naval Battle of Kaliakra ||| First Balkan War ||| During the course of the [[First Balkan War]], the Ottoman Empire's supplies were dangerously limited after the battles in [[Battle of Kirk Kilisse|Kirk Kilisse]] and [[battle of Lule Burgas|Lule Burgas]] and the sea route from the Romanian port [[Constanţa]] to [[Istanbul]] became vital for the Ottomans. The Ottoman navy also imposed a blockade on the Bulgarian coast and on 15 October, the commander of the cruiser ''Hamidiye'' threatened to destroy Varna and [[Balchik]], unless the two towns surrendered. ||| ||| ||| +1 Occupy Melbourne ||| Occupy movement ||| '''Occupy Melbourne''' was a [[social movement]] which took place from late 2011 to mid 2012 in [[Melbourne]], [[Australia]] as part of the global [[Occupy movement]]. Participants expressed grievances concerning [[economic inequality]], [[social injustice]], corruption in the financial sector, [[corporate greed]] and the influence of companies and [[lobbying|lobbyists]] on government. Protests began on 15 October 2011 in [[City Square, Melbourne|City Square]] with a 6-day-long protest encampment, from which people were forcibly evicted by [[Victoria Police]] at the request of the [[City of Melbourne]] CEO on 21 October 2011. A significantly diminished number of protesters set up camp at [[Father Bob]]'s church at his invitation until his retirement in January 2012. Physical manifestations of the movement had largely dissipated by mid-2012 though it adopted a strategy of decentralisation and became influential in the creation of new community networks, affinity groups and collectives. ||| ||| ||| +1 October 13 massacre ||| Lebanese Civil War ||| The '''October 13 Massacre''' took place on 13 October 1990, during the final period of the [[Lebanese Civil War]], when hundreds of [[Lebanese Army]] [[soldiers]] were executed after they surrendered to the [[Syrian Army]]. ||| ||| ||| +1 Operation Arbead II ||| Iraq War ||| '''Operation Arbead II''' was an operation of the [[Iraq War]]. ||| ||| ||| +1 Operation Barrel Roll ||| Vietnam War ||| '''Operation ''Barrel Roll''''' was a covert [[U.S. Air Force]] [[2nd Air Division]] (later the [[Seventh Air Force]]) and [[U.S. Navy]] [[Task Force 77 (U.S. Navy)|Task Force 77]], [[Air interdiction|interdiction]] and [[close air support]] campaign conducted in the [[Kingdom of Laos]] between 14 December 1964 and 29 March 1973 concurrent with the [[Vietnam War]]. ||| ||| ||| +1 Operation Baytown ||| Allied invasion of Italy ||| '''Operation Baytown''' on 3 September 1943 was part of the [[Allied invasion of Italy]], itself part of the [[Italian Campaign (World War II)|Italian Campaign]], during the [[World War II|Second World War]]. ||| ||| ||| +1 Operation Bluecoat ||| World War II ||| '''Operation Bluecoat''' was an attack by the [[British Army]] during the [[Operation Overlord|Battle of Normandy]], lasting from 30 July until 7 August 1944, during the [[World War II|Second World War]]. The geographical objectives of the attack, launched by [[VIII Corps (United Kingdom)|VIII Corps]] and [[XXX Corps (United Kingdom)|XXX Corps]] of the [[Second Army (United Kingdom)|British Second Army]], were to secure the road junction of [[Vire]] and the high ground of [[Mont Pinçon]]. Operationally, the attack was made to support the success of [[Operation Cobra]] by the [[First United States Army|first US Army]] as it broke out on the western flank of the Normandy beachhead and tactically to exploit the withdrawal of the [[2nd Panzer Division (Wehrmacht)|2nd Panzer Division]] from a quiet area for [[Operation Lüttich]] a counter-offensive against the Americans. ||| ||| ||| +1 Operation Bretagne ||| First Indochina War ||| '''Operation Bretagne''' was a [[French Union]] military operation between 1 December 1952 and 4 January 1953, during the [[First Indochina War]]. ||| ||| ||| +1 Operation Bribie ||| Vietnam War ||| '''Operation Bribie''' (17–18 February 1967), also known as the Battle of Ap My An, was fought during the [[Vietnam War]] in [[Phuoc Tuy Province|Phuoc Tuy province]] between [[Australian Defence Force|Australian forces]] from the [[6th Battalion, Royal Australian Regiment]] (6 RAR) and two [[Company (military)|companies]] of [[Viet Cong]] from [[VC D445 Battalion|D445 Battalion]], likely reinforced by [[North Vietnam]]ese regulars. During the night of 16 February the Viet Cong attacked a [[South Vietnamese Regional Force]] compound at Lang Phuoc Hai, before withdrawing the following morning after heavy fighting with South Vietnamese forces. Two hours later a Viet Cong company was subsequently reported to have formed a tight perimeter in the rainforest {{convert|2|km|mi}} north of Lang Phuoc Hai, near the abandoned hamlet of Ap My An. In response the Australians mounted a quick reaction force operation. Considering that the Viet Cong would attempt to withdraw as they had during previous encounters, forces from [[1st Australian Task Force]] (1 ATF) would subsequently be inserted into blocking positions on the likely withdrawal route in an attempt to intercept and destroy them. ||| ||| ||| +1 Operation Charnwood ||| World War II ||| '''Operation Charnwood''' was an offensive by [[British Army|British]] and [[Canadian Army|Canadian troops]] that took place from 8 to 9 July 1944, during the [[Battle for Caen]] in the [[World War II|Second World War]]. The operation was intended to at least partially capture the German-occupied French city of [[Caen]] ({{IPA-fr|kɑ̃}}), which was an important objective for the [[Allies of World War II|Allies]] during the opening stages of [[Operation Overlord]], the codename for the Battle of Normandy. It was also hoped that the attack would forestall the transfer of German [[Panzer division|armoured units]] from the Anglo-Canadian sector to the lightly screened American sector, where a major American offensive was being planned. The British and Canadians advanced on a broad front and by the evening of the second day had taken Caen up to the [[Orne River|Orne]] and [[River Odon|Odon]] rivers. ||| ||| ||| +1 Operation Chastise ||| World War II ||| Prior to [[World War II]], the British [[Air Ministry]] had identified Germany's heavily industrialised [[Ruhr Valley]], and especially its dams, as important strategic targets: in addition to providing [[hydro-electric power]] and pure water for steel-making, they also supplied drinking water and water for the canal transport system. The methods used to attack the dams had been carefully worked out. Calculations indicated that repeated air strikes with large bombs could be effective, but required a degree of accuracy which [[RAF Bomber Command|Bomber Command]] had been unable to attain in the face of enemy defences. ||| Background ||| ||| +1 Operation Crusader ||| North African Campaign ||| While it may have proved a limited success, Operation Crusader showed Rommel's ''Afrika Korps'' could be beaten and is a fine illustration of the dynamic, back and forth fighting which characterized the [[North African Campaign]]. ||| Aftermath ||| ||| +1 Operation Desert Shield (Iraq) ||| Iraq War ||| '''Operation Desert Shield''' was a 2006 operation by the [[Iraqi insurgency (Iraq War)|Iraqi insurgency]] and [[al-Qaeda in Iraq]], planned in December 2005 as a push against American forces during the [[Iraq War]]. The goal was to destabilize the American foothold in the [[Al Anbar Governorate|Anbar province]] over the course of six months. ||| ||| ||| +1 Operation Dwarka ||| Indo-Pakistani War of 1965 ||| As the [[Indo-Pakistani War of 1965]] broke out between [[India]] and [[Pakistan]] over [[Kashmir]], armies and air forces of both nations were involved in intense fighting in the [[Punjab, Pakistan|Punjab]] region and in [[Kashmir]]. To relieve pressure on the southern front, [[Pakistan]] decided to use its navy in the war by launching a quick strike on Indian coast. The primary objective of the attack ostensibly was to destroy the [[radar]] station at Dwarka which Pakistani Naval intelligence believed had a [[Huff-Duff]] beacon to guide Indian bombers. Pakistani high command also hoped to divert the operations of the [[Indian Air Force]] away from the north. ||| ||| ||| +1 Operation Freedom Deal ||| Vietnam War ||| '''Operation ''Freedom Deal''''' was a U.S. [[Seventh Air Force]] [[interdiction]] and [[close air support]] campaign waged in [[Cambodia]] (later, the [[Khmer Republic]]) between 19 May 1970 and 15 August 1973, during the [[Vietnam War]]. The initial targets of the operation were the base areas and border sanctuaries of the [[People's Army of Vietnam]] (PAVN) and the [[Khmer Rouge]]. As time went on most of the bombing was carried out to support the Cambodian government in its struggle against the communist Khmer Rouge. The area in which the bombing took place was expanded to include most of the eastern one-half of Cambodia. ||| ||| ||| +1 Operation Frequent Wind ||| Vietnam War ||| '''Operation Frequent Wind''' was the final phase in the evacuation of American civilians and 'at-risk' Vietnamese from [[Saigon]], [[South Vietnam]] prior to the takeover of the city by the [[North Vietnamese Army]] (PAVN) in the [[Fall of Saigon]]. It was carried out on 29–30 April 1975, during the last days of the [[Vietnam War]]. More than 7,000 people were evacuated by helicopter from various points in Saigon. The airlift resulted in a number of enduring images. ||| ||| ||| +1 Operation Friction ||| Gulf War ||| | partof = the [[Gulf War]] ||| ||| ||| +1 Operation Hailstone ||| World War II ||| '''Operation ''Hailstone''''' (known in Japan as {{lang-ja|トラック島空襲}} ''Torakku-tō Kūshū'', lit. 'the airstrike on Truk Island') was a massive naval air and surface attack launched on February 16–17, 1944, during [[World War II]] by the [[United States Navy]] against the [[Empire of Japan|Japanese]] naval and air base at [[Chuuk Lagoon|Truk]] in the [[Caroline Islands]], a pre-war Japanese territory. ||| ||| ||| +1 Operation Hammer (1997) ||| Iraqi Kurdish Civil War ||| The operations objectives were to destroy PKK units in Northern Iraq, to strengthen [[Massoud Barzani]]'s [[Kurdistan Democratic Party]] in its ongoing [[Iraqi Kurdish Civil War|Civil War]] with [[Jalal Talabani]]'s [[Patriotic Union of Kurdistan]] in the hope that the KDP would prevent further PKK raids into Turkey, and to counter Iranian influence in the region as Turkey accused [[Iran]] of supporting the PKK, and over 2,000 Iranian forces had entered Iraqi Kurdistan that year to aid the PUK. [http://www.meforum.org/384/turkey-and-iran-face-off-in-kurdistan Turkey and Iran Face off in Kurdistan] ||| ||| ||| +1 Operation Hong Kil Dong ||| Vietnam War ||| '''Operation Hong Kil Dong''' was the largest South Korean operation of the [[Vietnam War]]. The 48-day-long operation was claimed by South Korea as a major success as they claimed to have forces thwarted VPA/NLF infiltration into friendly areas. The results of the operation were a kill ratio of 24:1 in the Korean's report: 638 Vietnamese to 26 South Koreans. 98 crew-served and 359 individual weapons were captured in the aftermath. ||| ||| ||| +1 Operation Jaywick ||| World War II ||| '''Operation Jaywick''' was a special operation undertaken in [[World War II]]. In September 1943, 14 [[commando]]s and [[sailor]]s from the [[Allies of World War II|Allied]] [[Z Special Unit]] raided [[Empire of Japan|Japanese]] shipping in [[Singapore]] Harbour, sinking seven ships. ||| ||| ||| +1 Operation Krohcol ||| World War II ||| '''Operation Krohcol''', or the '''Battle for The Ledge''', was a British operation in December 1941 to move into southern [[Thailand]] following the [[Battle of Malaya|Japanese invasion]] of [[British Malaya|Malaya]] and [[Japanese invasion of Thailand|of Thailand]] during [[World War II]]. It was authorised by Lieutenant-General [[Arthur Percival]] as a 'mini Matador' after [[Operation Matador (1941)|Operation Matador]], a pre-emptive strike into Thailand which had been opposed by the British government and was not carried out. Due to delays in authorisation by Percival and in the forwarding of his order, the need to reorganise the troops for Krohcol instead of Matador, and resistance from Thai policemen the Krohcol column did not reach the Ledge in time. ||| ||| ||| +1 Operation Ladbroke ||| Allied invasion of Sicily ||| '''Operation ''Ladbroke''''' was a [[Military glider|glider]] landing by [[British Army|British]] [[airborne forces|airborne troops]] during the [[World War II|Second World War]] near [[Syracuse, Italy|Syracuse]], [[Sicily]], that began on 9 July 1943 as part of the [[Allied invasion of Sicily|Allied invasion of the island]]. The first Allied mission using large numbers of the aircraft, the operation was carried out from [[Tunisia]] by [[glider infantry]] of the [[1st Airlanding Brigade (United Kingdom)|British 1st Airlanding Brigade]], with a force of 136 [[Waco CG-4|Wacos]] and eight [[Airspeed Horsa|Horsas]]. The objective was to establish a large invasion force on the ground near the town of Syracuse, secure the Ponte Grande Bridge and ultimately take control of the city itself with its strategically vital docks, as a prelude to the full-scale invasion of Sicily. ||| ||| ||| +1 Operation Little Saturn ||| World War II ||| '''Operation Saturn''', revised as '''Operation Little Saturn''', was a [[Red Army]] operation on the [[Eastern Front (WWII)|Eastern Front]] of [[World War II]] that led to battles in the northern [[Caucasus]] and [[Donets Basin]] regions of the [[Soviet Union]] from December 1942 to February 1943. ||| ||| ||| +1 Operation Mallard ||| Normandy landings ||| '''Operation Mallard''' was the codename for an [[airborne forces]] operation which was conducted by the [[British Army]] on 6 June 1944, as part of the [[Normandy landings]]. ||| ||| ||| +1 Operation Market Sweep ||| Iraq War ||| During the [[2003 Invasion of Iraq]], or [[Iraq War]], '''Operation Market Sweep''' was a successful raid into the downtown [[Fallujah]] [[Firearm|arms]] [[arms industry|market]] by troops from the 505th Parachute Infantry Regiment of the [[U.S. 82nd Airborne Division]] on 13 January 2004. ||| ||| ||| +1 Operation Pony Express ||| Vietnam War ||| The '''''Pony Express''''' was the covert transportation of, and the provision of aerial support for, indigenous soldiers and material operating across the [[Laos|Laotian]] and [[North Vietnamese]] borders during the [[Vietnam War]]. ||| ||| ||| +1 Operation Rah-e-Nijat ||| War in North-West Pakistan ||| The '''Operation Rah-e-Nijat''' ({{lang-en|''Path to Salvation''}}; [[Urdu language|Urdu:]] آپریشن راہ نجات) was a strategic offensive [[military operation]] by the [[Joint Chiefs of Staff Committee|unified command]] of [[Pakistan Armed Forces]] against the [[Tehrik-i-Taliban|Tehrik-i-Taliban (TTP)]] and their extremist allies in the [[South Waziristan]] area of the [[Federally Administered Tribal Areas]] that began on June 19, 2009; a major ground-naval-air offensive was subsequently launched on October 17. It became the integral part of the [[War in North-West Pakistan|war in Western fronts]] which led the [[encirclement]] and destruction of Taliban forces in the region, although the Taliban leadership escaped to lawless areas of neighboring [[Afghanistan]]. ||| ||| ||| +1 Operation Samen-ol-A'emeh ||| Siege of Abadan ||| see: [[Siege of Abadan]] ||| Prelude ||| ||| +1 Operation Samwest ||| World War II ||| During [[World War II]], '''Operation Samwest''' (5–12 June 1944) was a large raid conducted by 116 [[Free French]] [[paratroop]]s of the [[1st Marine Infantry Parachute Regiment|4th Special Air Service Regiment]]. Their objective was to hinder movement of German troops from west [[Brittany]] to the [[Normandy]] beaches via ambush and sabotage attempts. ||| ||| ||| +1 Operation Slapstick ||| Allied invasion of Italy ||| '''Operation Slapstick''' was the [[code name]] for a British landing from the sea at the Italian [[port of Taranto]] during the [[World War II|Second World War]]. The operation, one of three landings during the [[Allied invasion of Italy]] in September 1943, was undertaken by [[British Army|British]] [[Airborne forces|airborne troops]] of the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]]. ||| ||| ||| +1 Operation Steel Tiger ||| Vietnam War ||| '''Operation ''Steel Tiger''''' was a covert U.S. [[2nd Air Division]], later [[Seventh Air Force]] and [[U.S. Navy]] [[Task Force 77 (U.S. Navy)|Task Force 77]] aerial interdiction effort targeted against the infiltration of [[People's Army of Vietnam]] (PAVN) men and material moving south from the [[Democratic Republic of Vietnam]] (DRV or North Vietnam) through southeastern [[Laos]] to support their military effort in the [[Republic of Vietnam]] (RVN or South Vietnam) during the [[Vietnam War]]. ||| ||| ||| +1 Operation Swath-10 ||| Croatian War of Independence ||| '''Operation Swath-10''' ({{lang-hr|Operacija Otkos-10}}) was a military offensive undertaken by the [[Croatian Army]] (''Hrvatska vojska'', or HV) against the [[SAO Western Slavonia]] [[Territorial Defense Forces (Yugoslavia)|Territorial Defense Forces]] on [[Bilogora]] Mountain in western [[Slavonia]]. Occurring from 31 October to 4 November 1991, during the [[Croatian War of Independence]], the operation was a Croatian victory and its success set the stage for follow-up advances by Croatian forces on [[Papuk]] Mountain in Operation Papuk-91 in late November and December. By the end of the year the HV gained control of Papuk, securing transport routes between eastern Slavonia and the rest of [[Croatia]]. ||| ||| ||| +1 Operation Uric ||| Rhodesian Bush War ||| '''Operation ''Uric''''' (or '''Operation ''Bootlace''''' for the South Africans) was a cross-border raid carried out in [[Mozambique]] by operatives of the [[Rhodesian Security Forces]] during the [[Rhodesian Bush War]], with combat assistance from the [[South African Air Force]]. During the operation, which took place from 1 to 7 September 1979, up to 400 Rhodesian and South African military personnel attacked bridges and a major staging point for [[Zimbabwe African National Liberation Army]] (ZANLA) insurgents in [[Gaza Province]]. The battle eventually drew in elements of the [[Military of Mozambique|Mozambican army]] and police, who sustained heavy casualties. Along with [[Operation Miracle (Rhodesia)|Operation Miracle]], this was one of the largest Rhodesian external operations of the war. ||| ||| ||| +1 Operation Uzice ||| World War II ||| '''Operation ''Uzice''''' was the first major counter-insurgency operation by the [[Nazi Germany|German]] [[Wehrmacht]] on the occupied territory of the [[Kingdom of Yugoslavia]] during [[World War II]]. The operation was directed against the [[Užice Republic]], the first of several 'free territories' liberated by the [[Yugoslav Partisans]]. It was named after the town of [[Užice]], and is associated with the '''First Enemy Offensive''' ({{lang-sh-Latn|Prva neprijateljska ofenziva/ofanziva}}) in [[Socialist Federal Republic of Yugoslavia|Yugoslavia]]n historiography. The security forces of the German-installed [[Government of National Salvation|puppet regime]] of [[Milan Nedić]] also participated in the offensive. ||| ||| ||| +1 Operation Vrbas '92 ||| Bosnian War ||| '''Operation Vrbas '92''' ({{lang-sr|Операција Врбас '92}}) was a military offensive undertaken by the [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS) in June–October 1992, during the [[Bosnian War]]. The goal of the operation was the destruction of a [[Salients, re-entrants and pockets|salient]] around the central Bosnian town of [[Jajce]], which was held by the [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) and the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH). The intensity of fighting varied considerably and involved several major VRS offensive efforts interspersed by relative lulls in fighting. Jajce fell to the VRS on 29 October 1992, and the town's capture was followed by the destruction of all its [[mosques]] and Roman Catholic churches. ||| ||| ||| +1 Operation Whirlwind ||| Croatian War of Independence ||| '''Operation Whirlwind''' ({{lang-hr|Operacija Vihor}}) was a failed [[Croatian Army]] (HV) offensive in the [[Banovina (region)|Banovina]] region of [[Croatia]], fought from 11-13 December 1991, during the early stages of the [[Croatian War of Independence]]. The offensive employed a single infantry [[brigade]] as the main attacking force, supported by a bridging unit and a handful of tanks and [[armoured personnel carrier]]s. Although the offensive met hardly any resistance in its initial stage, achieving tactical surprise, the operation was poorly planned, supported and executed as a result of limited training and combat experience. The offensive established a short-lived [[bridgehead]], evacuated in panic two days after the operation commenced, under tank and mortar fire from the [[Yugoslav People's Army]] (JNA) deployed north of [[Glina, Croatia|Glina]]. ||| ||| ||| +1 Outpost Snipe ||| World War II ||| The defence of '''Outpost Snipe''' in [[Egypt]] took place in the [[Second Battle of El Alamein]], part of the [[Western Desert Campaign]] during the [[World War II|Second World War]]. On the night of {{nowrap|26/27 October}} 1942, the 2nd [[Battalion]] of the [[Rifle Brigade (Prince Consort's Own)|Rifle Brigade]] (part of the [[18th Infantry Brigade (United Kingdom)|7th Motor Brigade]]), with 13 × [[Ordnance QF 6 pounder|6-pounder]] anti-tank guns and the 239th Battery, 76th Anti-Tank Regiment RA, with six more 6-pounders, was ordered to occupy a desert feature known as ''Snipe'', a small depression in the landscape suitable for an outpost. Once consolidated it could be used as a jumping-off point for an advance by the [[24th Armoured Brigade]]. ||| ||| ||| +1 Pacific War ||| World War II ||| The '''Pacific War''', sometimes called the '''Asia-Pacific War''', was the theatre of [[World War II]] that was fought in the [[Pacific Ocean|Pacific]] and [[East Asia]]. It was fought over a vast area that included the [[Pacific Ocean theatre of World War II|Pacific Ocean and islands]], the [[South West Pacific theatre of World War II|South West Pacific]], [[South-East Asian theatre of World War II|South-East Asia]], and [[Second Sino-Japanese War|in China]] (including the [[Soviet–Japanese War (1945)|1945 Soviet–Japanese conflict]]). ||| ||| ||| +1 Package Q Strike ||| Gulf War ||| The '''Package Q [[Airstrike]]''' was the largest air strike of the [[Gulf War]], ||| ||| ||| +1 Passover massacre ||| Second Intifada ||| * 'It can therefore be asked whether the 'human bomb' offensive starting with the Passover massacre on 27 March 2002...' Brigitte L. Nacos, 'The Terrorist Calculus Behind 9–11: A Model for Future Terrorism?' in [[C. Augustus Martin|Gus Martin]]. ''The New Era of Terrorism: Selected Readings'', Sage Publications Inc, 2004, ISBN 0-7619-8873-4, p. 176. was a [[suicide bombing]] carried out by [[Hamas]] at the Park Hotel in [[Netanya]], Israel on 27 March 2002, during a [[Passover seder]]. Thirty civilians were killed in the attack and 140 were injured. It was the deadliest attack against Israelis during the [[Second Intifada]]. ||| ||| ||| +1 Pescadores Campaign ||| Sino-French War ||| The '''Pescadores Campaign''' which took place in late March, 1885, was one of the last campaigns of the [[Sino-French War]] (August 1884–April 1885). It was fought to capture a strategically important island group off the western coast of [[Formosa]] (Taiwan). Admiral [[Amédée Courbet]], with part of the French [[Far East Squadron]], bombarded the Chinese coastal defences around the principal town of [[Makung]] (馬公) on Penghu Island (澎湖島) and landed a battalion of marine infantry which routed the Chinese defenders and occupied Makung. ||| ||| ||| +1 Philippines Campaign (1944–45) ||| World War II ||| The '''Philippines campaign of 1944–45''', (Operation Musketeer I, II, and III) the '''Battle of the Philippines 1944–45''', or the '''Liberation of the Philippines''' was the American and [[Philippines|Filipino]] campaign to defeat and expel the [[Empire of Japan|Imperial Japanese forces]] occupying the [[Commonwealth of the Philippines|Philippines]], during [[World War II]]. The [[Imperial Japanese Army|Japanese Army]] had overrun all of the Philippines during the first half of 1942. The Liberation of the Philippines commenced with [[amphibious warfare|amphibious landing]]s on the eastern [[Leyte|Philippine island of Leyte]] on October 20, 1944, and hostilities in a small part of the Philippines continued through the end of the war in August 1945. But [[Douglas MacArthur|Gen. Douglas MacArthur]] declared the Philippines has been liberated on July 5, 1945 ||| ||| ||| +1 Phoney War ||| World War II ||| The '''Phoney War''' refers to the relatively quiet eight-month period at the start of [[World War II]] between the declaration of war by the [[Western Allies]] ([[United Kingdom]] and [[France]]) against [[Nazi Germany]] on {{date|1939-9-3}} just after the [[Invasion of Poland]] and the German [[Blitzkrieg]] in May 1940, that was marked by a lack of major military land operations by the Allies on Germany's [[Western Front (World War II)|Western Front]]. ||| ||| ||| +1 Pingjin Campaign ||| Chinese Civil War ||| '''Pingjin Campaign''' ({{zh|s=平津战役|t=平津戰役|p=Píngjīn Zhànyì}}), also known as the '''Battle of Pingjin''', was part of the three major campaigns launched by the [[People's Liberation Army]] during the late stage of the [[Chinese Civil War]] against the [[Nationalist Government (China)|Nationalist Government]]. It began on 29 November 1948 and ended on 31 January 1949, lasting a total of 64 days. This campaign marked the end of Nationalist dominance in the [[North China Plain]]. The term Pingjin refers to the cities [[Beijing|Bei''ping'']] (now [[Beijing]]) and [[Tianjin|Tian''jin'']]. ||| ||| ||| +1 Plitvice Lakes incident ||| Croatian War of Independence ||| The '''Plitvice Lakes incident''' ({{lang-hr|Krvavi Uskrs na Plitvicama}} or ''Plitvički krvavi Uskrs'', both translating as 'Plitvice Bloody Easter') was an armed clash at the beginning of the [[Croatian War of Independence]]. It was fought between Croatian police and armed forces from the [[Serb]]-established [[SAO Krajina]] at the [[Plitvice Lakes]] in [[Croatia]], on 31 March 1991. The fighting followed the SAO Krajina's takeover of the [[Plitvice Lakes National Park]] and resulted in Croatia recapturing the area. The clash resulted in one killed on each side and contributed to the worsening ethnic tensions. ||| ||| ||| +1 Protests in Sudan (2011–13) ||| Arab Spring ||| '''Protests in Sudan''', also nicknamed as the Sudanese [[wikt:intifada|Intifada]], began in January 2011 as part of the [[Arab Spring]] regional protest movement. Unlike in other Arab countries, popular uprisings in [[Sudan]] had succeeded in toppling the government prior to the Arab Spring in 1964 and 1985. Demonstrations in Sudan however were less common throughout the summer of 2011, during which [[South Sudan]] seceded from Sudan, but resumed in force later that year and again in June 2012, shortly after the government passed its much criticized austerity plan. ||| ||| ||| +1 Quasi-War ||| French Revolutionary Wars ||| The '''Quasi-War''' ({{lang-fr|Quasi-guerre}}) was an [[undeclared war]] fought almost entirely at sea between the [[United States|United States of America]] and the [[French First Republic|French Republic]] from 1798 to 1800. After the toppling of the French crown during [[French Revolutionary Wars|its revolutionary wars]], the United States refused to continue repaying its debt to France on the grounds that it had been owed to [[Ancien Régime|a previous regime]]. French outrage led to a series of attacks on American shipping, ultimately leading to retaliation from the Americans and the end of hostilities with the signing of the [[Convention of 1800]] shortly thereafter. ||| ||| ||| +1 Raid of Richmond ||| American Revolutionary War ||| The '''Richmond Campaign''' was a group of [[British Army|British]] military actions against the capital of [[Virginia]], [[Richmond, Virginia|Richmond]], and the surrounding area, during the [[American Revolutionary War]]. Led by American turncoat [[Benedict Arnold]], the Richmond Campaign is considered one of his greatest successes while serving under the British Army, and one of the most notorious actions that Arnold ever performed. ||| ||| ||| +1 Renegade period of the Apache Wars ||| American Indian Wars ||| The last Apache raid into the United States occurred as late as 1924 when a band of natives stole some horses from [[Arizona]] settlers. This is considered to be the very end of the [[American Indian Wars]]. ||| Geronimo raids ||| ||| +1 Resistance at Nenjiang Bridge ||| Second Sino-Japanese War ||| The '''Resistance at Nenjiang Bridge''' was a small battle fought between forces of the Chinese [[National Revolutionary Army]] against the [[Imperial Japanese Army]] and collaborationist forces, after the [[Mukden Incident]] during the [[Japanese invasion of Manchuria|Invasion of Manchuria]] in 1931, prior to the start of the [[Second Sino-Japanese War]]. It marked the start of the [[Jiangqiao Campaign]]. ||| ||| ||| +1 Saborsko massacre ||| Croatian War of Independence ||| The '''Saborsko massacre''' ({{lang-hr|Pokolj u Saborskom}},{{sfn|Jutarnji list|27 March 2006}} {{lang-sr|''Operacija Saborsko''}}){{sfn|Rupić|2007|p=499}} was the killing of 29 [[Croat]] residents of the village of [[Saborsko]] on 12 November 1991, following the seizure of the village in a [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) and [[Croatian Serb]] offensive during the [[Croatian War of Independence]]. The fall of the town occurred as part of a JNA and Croatian Serb operation to capture a Croatian-held [[Salients, re-entrants and pockets|pocket]] centered on the town of [[Slunj]], southeast of [[Karlovac]]. While the bulk of the civilian population fled with the surviving [[Croatian police|Croatian forces]], those who remained in Saborsko were rounded up and either killed or expelled. The bodies of the victims were retrieved from two mass graves and several individual graves in 1995. ||| ||| ||| +1 Sabotage at the General Post Office in Zagreb ||| World War II ||| '''Sabotage at the General Post Office in Zagreb''' took place during the [[World War II|Second World War]] on Sunday, 14 September 1941. [[Zagreb]] was the [[capital city]] of the [[Independent State of Croatia]] (NDH), a [[puppet state]] of [[Nazi Germany]]. ||| ||| ||| +1 Saudi Arabian-led intervention in Yemen ||| Yemeni Civil War (2015) ||| The '''Saudi Arabian-led intervention in Yemen''' began in 2015 to influence the outcome of the [[Yemeni Civil War (2015)|Yemeni Civil War]]. Saudi Arabia, spearheading a coalition of nine [[Arab states]], began carrying out [[airstrike]]s in neighbouring [[Yemen]] and imposing an aerial and naval blockade on 26 March, heralding a military intervention codenamed Operation ''Decisive Storm'' ({{lang-ar|عملية عاصفة الحزم}} ''`Amaliyyat `Āṣifat al-Ḥazm''). ||| ||| ||| +1 Sbarro restaurant suicide bombing ||| Second Intifada ||| After the suicide bombing, [[Palestinian people|Palestinian]] university students at the [[An-Najah National University|An-Najah University]] in the [[West Bank]] city of [[Nablus]] created an exhibition celebrating the first anniversary of the [[Second Intifada]]. {{cite news|date=24 September 2001|url= http://www2.ljworld.com/news/2001/sep/24/gruesome_exhibit_marks/|title=Gruesome exhibit marks anniversary of uprising ||| Palestinian exhibit ||| ||| +1 Scotland in the Wars of the Three Kingdoms ||| Wars of the Three Kingdoms ||| Between 1644 and 1651 [[Kingdom of Scotland|Scotland]] was involved in the [[Wars of the Three Kingdoms]], a series of [[civil war]]s that were fought in Scotland, England ([[English Civil War]]) and in Ireland ([[Irish Confederate Wars]]). These wars followed other related conflicts: the [[Bishops Wars]] (between Scotland and England) and the [[Irish Rebellion of 1641]]. ||| ||| ||| +1 Second Battle of Amba Alagi ||| East African Campaign (World War II) ||| The '''Battle of Amba Alagi''' was fought in May 1941, during [[World War II]], part of the [[East African Campaign (World War II)|East African Campaign]]. ||| ||| ||| +1 Second Battle of Bull Run ||| American Civil War ||| The '''Second Battle of Bull Run''' or '''Second Manassas''' was fought August 28–30, 1862 in [[Prince William County, Virginia]], as part of the [[American Civil War]]. It was the culmination of an offensive campaign waged by [[Confederate States Army|Confederate]] [[General (CSA)|Gen.]] [[Robert E. Lee]]'s [[Army of Northern Virginia]] against [[Union Army|Union]] [[Major General (CSA)|Maj. Gen.]] [[John Pope (military officer)|John Pope]]'s [[Army of Virginia]], and a battle of much larger scale and numbers than the [[First Battle of Bull Run]] (or ''First Manassas'') fought on July 21, 1861 on the same ground. ||| ||| ||| +1 Second Battle of Dragoon Springs ||| American Civil War ||| The '''Second Battle of Dragoon Springs''' was one of two skirmishes involving [[Apache]] [[warrior]]s and [[Confederate States of America|Confederate]] [[soldiers]] in Arizona. It was fought during the [[American Civil War]] on May 9, 1862 and was a response to the [[First Battle of Dragoon Springs]] in which Confederate forces were defeated. Four men were killed in the first skirmish and several heads of livestock were captured. The rebel commander [[Captain (land)|Captain]] [[Sherod Hunter]], ordered his foraging squad to take back the livestock from [[Cochise]]'s warriors, during which five Apaches were killed. Confederate casualties were zero. ||| ||| ||| +1 Second Battle of El Alamein ||| North African Campaign ||| The '''Second Battle of El Alamein''' (23 October – 11 November 1942) took place near the [[Egypt]]ian railway halt of [[El Alamein]]. With the Allies victorious, it marked a major turning point in the [[Western Desert Campaign]] of the Second World War. It followed the [[First Battle of El Alamein]], which had stalled the [[Axis Powers|Axis]] advance into Egypt, after which, in August 1942, [[Lieutenant General (United Kingdom)|Lieutenant-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] had taken command of the British [[Eighth Army (United Kingdom)|Eighth Army]] from General [[Claude Auchinleck]]. This victory turned the tide in the [[North African Campaign]] and ended the Axis threat to [[Egypt]], the [[Suez Canal]], and of gaining access to the Middle Eastern and Persian oil fields via North Africa. From a psychological perspective, Second El Alamein revived the morale of the Allies, being the first major offensive against the Axis since the start of the European war in 1939 in which the Western Allies had achieved a decisive victory. The battle coincided with the Allied invasion of [[French North Africa]] in [[Operation Torch]], which started 8 November. ||| ||| ||| +1 Second Battle of Zurich ||| War of the Second Coalition ||| The '''Second Battle of Zurich''' (25–26 September 1799) was a key victory by the Republican French army in Switzerland led by [[André Masséna]] over an Austrian and Russian force commanded by [[Alexander Korsakov]] near [[Zurich]]. It broke the stalemate that had resulted from the [[First Battle of Zurich]] three months earlier and led to the withdrawal of [[Russia]] from the [[War of the Second Coalition|Second Coalition]]. Most of the fighting took place on both banks of the river [[Limmat]] up to the gates of Zurich, and within the city itself. ||| ||| ||| +1 Second English Civil War ||| English Civil War ||| The '''Second English Civil War''' (1648–1649) was the second of three wars known collectively as the [[English Civil War]] (or ''Wars''), which refers to the series of armed conflicts and political machinations which took place between [[Parliament of England|Parliamentarians]] and [[Cavalier|Royalist]]s from 1642 until 1651 and also include the [[First English Civil War]] (1642–1646) and the [[Third English Civil War]] (1649–1651). ||| ||| ||| +1 Second Guangxi Campaign ||| Second Sino-Japanese War ||| However, after the [[Kwantung Army]] was defeated during the [[Soviet invasion of Manchuria]], and the Americans dropped atomic bombs on [[Hiroshima]] and [[Nagasaki]], the Japanese had surrendered and the eight-year-long [[Second Sino-Japanese War]] finally came to an end. ||| ||| ||| +1 Segovia Offensive ||| Spanish Civil War ||| The '''Segovia Offensive''' was a Republican diversionary offensive which took place between 31 May and 6 June 1937, during the [[Spanish Civil War]]. The main goal of the offensive was to occupy Segovia and divert Nationalist forces from their advance on Bilbao. After a brief initial advance the offensive failed due to Nationalist air superiority. ||| ||| ||| +1 Short Hills raid ||| Upper Canada Rebellion ||| The '''Short Hills raid''' was a raid by the [[Hunter Patriots]] on the [[Niagara Peninsula]] from June 21 to June 23, 1838, during the [[Upper Canada Rebellion]]. ||| ||| ||| +1 Shyrokyne standoff (February–July 2015) ||| War in Donbass ||| The '''Shyrokyne standoff (February–July 2015)''' was a battle for the control of the strategic village of [[Shyrokyne]], located approximately 11km east of Mariupol city limits, between Ukrainian forces, led by the [[Azov Battalion]], and Russian backed separatists. It is part of the larger [[War in Donbass]]. The [[Azov battalion]] launched a surprise offensive against pro-Russian separatists associated with the [[Donetsk People's Republic]] (DPR) on 10 February 2015 with the aim of pushing the separatist forces away from Mariupol city limits. The village is located just {{convert|10|km|mi|frac=5}} from the Ukrainian-controlled city of [[Mariupol]], and was used as a launching point for separatist attacks on the city, which served as the administrative centre of [[Donetsk Oblast]] whilst DPR forces control [[Donetsk]] city. Fighting continued until 3 July 2015, when DPR forces unilaterally withdrew from Shyrokyne. ||| ||| ||| +1 Sichuan invasion ||| Second Sino-Japanese War ||| The '''Szechwan Invasion''', also known as the '''Chongqing Operation''', '''Chongqing Campaign''' or '''Operation 5''', was the [[Imperial Japanese Army]]'s failed plan to destroy the [[Chongqing]]-based [[Chiang Kai-shek]] government during the [[Second Sino-Japanese War]]. It was to be a stepping stone for [[Japan]]'s final control of the [[China|Chinese]] mainland. ||| ||| ||| +1 Siege of Acre (1189–91) ||| Third Crusade ||| The '''Siege of Acre''' was one of the first confrontations of the [[Third Crusade]], lasting from August 28, 1189 until July 12, 1191, and the first time in history that the [[King of Jerusalem]] was compelled to personally see to the defence of the Holy Land. Nevertheless, it was a key victory for the Crusaders and a serious defeat for Saladin, who had hoped to destroy the whole of the Crusader kingdom. ||| ||| ||| +1 Siege of Barcelona (1706) ||| War of the Spanish Succession ||| The '''Siege of Barcelona''' took place between 3 and 27 April 1706 during the [[War of the Spanish Succession]] when a Franco-Spanish army led by [[Philip V of Spain|Philip V]] laid siege to [[Barcelona]] in an attempt to recapture it following its [[Siege of Barcelona (1705)|fall to an English-led Allied army the previous year]]. ||| ||| ||| +1 Siege of Cuartel de la Montaña ||| Spanish Civil War ||| The '''Siege of Cuartel de la Montaña''' was the two-day siege of the military barracks which marked the initial failure of the uprising against the [[Second Spanish Republic]] in [[Madrid]], [[Spain]] on 18–20 July 1936, at the start of the [[Spanish Civil War]]. The bulk of the security forces in Madrid remained loyal to the government, and supported by workers' militias, crushed the uprising. ||| ||| ||| +1 Siege of Danzig (1655–60) ||| Second Northern War ||| The '''Siege of Danzig''' took place between 1655 and 1660 when a Swedish force tried to capture this important [[Baltic Sea]] port city from the [[Polish-Lithuanian Commonwealth]] during the [[Second Northern War]]. After 5 years of fighting around Danzig ([[Gdańsk]]), the Swedish force which has made little ground surrendered. ||| ||| ||| +1 Siege of Derry ||| Williamite War in Ireland ||| The '''Siege of Derry''' ({{lang-ga|Léigear Dhoire}}) involved a pre-emptive lockdown of the gates of [[Derry]] in December 1688 and a violent defensive action lasting from 18 April to 28 July 1689, during the [[Williamite War in Ireland]]. The city, a [[Williamite]] stronghold, was besieged by a [[Jacobitism|Jacobite]] army until it was relieved by [[Royal Navy]] ships. The siege is commemorated yearly in August by the [[Apprentice Boys of Derry]]. ||| ||| ||| +1 Siege of Dunkirk (1793) ||| French Revolutionary Wars ||| The '''Siege of Dunkirk''' took place in 1793 when [[Kingdom of Great Britain|British]], [[Electorate of Hanover|Hanoverian]], [[Habsburg Monarchy|Austrian]], and [[Landgraviate of Hessen-Kassel|Hesse-Kassel]] troops under the command of [[Prince Frederick, Duke of York]] besieged the fortified French border port of [[Dunkirk]] as part as the [[Flanders campaign]] of the [[French Revolutionary Wars]]. Following a Coalition defeat at the [[Battle of Hondshoote (1793)|Battle of Hondshoote]] they were forced to raise the siege and withdraw northeast. ||| ||| ||| +1 Siege of Eshowe ||| Anglo-Zulu War ||| The '''Siege of Eshowe''' was part of a three-pronged attack on the [[Zulu Kingdom|Zulu]] [[Impi]]s of king [[Cetshwayo]] at [[Ulundi]] during the [[Anglo-Zulu War]]. After a successful incursion as far as [[Eshowe]] (then also known as '''Fort Ekowe''' or '''kwaMondi''' ), Colonel [[Charles Pearson (soldier)|Charles Pearson]] was besieged there for two months by the Zulus. ||| ||| ||| +1 Siege of Fort Erie ||| War of 1812 ||| The '''Siege of Fort Erie''' was one of the last and most protracted engagements between [[United Kingdom of Great Britain and Ireland|British]] and [[United States|American]] forces during the Niagara campaign of the American [[War of 1812]]. The Americans successfully defended [[Old Fort Erie|Fort Erie]] against the British Army but subsequently abandoned it because of shortage of supplies. ||| ||| ||| +1 Siege of Fort Ticonderoga (1777) ||| American Revolutionary War ||| In September 1775, early in the [[American Revolutionary War]], the American [[Continental Army]] embarked on an [[Invasion of Canada (1775)|invasion of Quebec]]. The invasion ended in disaster in July 1776, with the army chased back to [[Fort Ticonderoga]] by a large British army that arrived in [[Province of Quebec (1763-1791)|Quebec]] in May 1776. A small [[Continental Navy]] fleet on [[Lake Champlain]] was defeated in the October 1776 [[Battle of Valcour Island]]. The delay required by the British to build their fleet on Lake Champlain caused General [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]] to hold off on attempting an assault on Ticonderoga in 1776. Although his advance forces came within three miles of Ticonderoga, the lateness of the season and the difficulty of maintaining supply lines along the lake in winter caused him to withdraw his forces back into Quebec. ||| Background ||| ||| +1 Siege of Giarabub ||| World War II ||| The '''Siege of Giarabub''' (now [[Jaghbub, Libya|Jaghbub]]) in [[Libya]], was an engagement between [[Commonwealth of Nations|Commonwealth]] and [[Fascist Italy (1922–43)|Italian]] forces, in the [[Western Desert Campaign|Western Desert]] during [[World War II]]. In the aftermath of {{lang|it|''Operazione E''}}, the invasion of Libya by the Italian [[Tenth Army (Italy)|10th Army]] {{nowrap|(9–16 September 1940),}} [[Operation Compass]] {{nowrap|(9–16 December)}} by the [[Western Desert Force]] (WDF), the [[Battle of Sidi Barrani]] and the pursuit of the 10th Army into Cyrenaica {{nowrap|(16 December 1940 – 9 February 1941),}} the fortified Italian position at the [[Al Jaghbub Oasis]] was besieged by parts of the [[6th Division (Australia)|6th Australian Division]]. ||| ||| ||| +1 Siege of Hull (1642) ||| English Civil War ||| The '''Siege of Hull''' in 1642 was the first major action of the [[English Civil War]]. ||| ||| ||| +1 Siege of Lille (1667) ||| War of Devolution ||| The '''Siege of Lille''' took place during the [[War of Devolution]]. [[Louis XIV]]'s forces besieged [[Lille]] from August 10 to September 26, 1667. It was the only major engagement of the war. Lille was the first major victory for [[Vauban]]'s siege techniques. Louis XIV, arguing that the Spanish dowry of his wife [[Maria Theresa]] of Austria had not been paid, began to expand French borders to the north and east, invading the Spanish [[Netherlands]]. This began a conflict with Spain that became the War of Devolution. After taking Charleroi, Tournai and Douai, French troops laid siege to Lille, at that time part of the county of [[Flanders]] under Spanish rule. Siege techniques applied by the French military engineer Vauban were instrumental in their capture. ||| ||| ||| +1 Siege of Lille (1708) ||| War of the Spanish Succession ||| The '''Siege of Lille''' (12 August - 10 December 1708) was the salient operation of the 1708 campaign season during the [[War of the Spanish Succession]]. After an obstinate defence of 120 days, the French garrison surrendered the city and citadel of [[Lille]], commanded by [[Marshal of France|Marshal]] [[Louis François, duc de Boufflers|Boufflers]], to the forces of the [[John Churchill, 1st Duke of Marlborough|Duke of Marlborough]] and [[Prince Eugene of Savoy|Prince Eugene]]. ||| ||| ||| +1 Siege of Lucknow ||| Indian Rebellion of 1857 ||| The '''Siege of Lucknow''' ([[Hindi]]: लखनऊ की घेराबंदी; {{lang-ur|{{Nastaliq|لکھنؤ کا محاصرہ}}}}) was the prolonged defence of the [[Residencies of British India|Residency]] within the city of [[Lucknow]] during the [[Indian Rebellion of 1857]]. After two successive relief attempts had reached the city, the defenders and civilians were evacuated from the Residency, which was then abandoned. ||| ||| ||| +1 Siege of Mantua (1799) ||| War of the Second Coalition ||| The '''Siege of Mantua (1799)''' was a four-month effort by the [[Habsburg Monarchy|Austrian]] army to regain a presence in [[northern Italy]] after being excluded from that region by [[Napoleon I of France|Napoleon Bonaparte]] through the successful [[French First Republic|French]] [[Siege of Mantua (1796-1797)|Siege of Mantua]] in 1797. In April 1799, the Austrians placed a [[military]] [[blockade]] around [[Mantua]] as part of the [[War of the Second Coalition]] with the intent of conquering the French by [[Attrition warfare|attrition]]. As their own attrition and diminishing food supplies weakened the Austrian army, they received reinforcements and [[Frontal assault|attacked]] on 4 July 1799. By the end of the month, the French agreed to [[capitulation (surrender)|surrender]]. ||| ||| ||| +1 Siege of Mostar ||| Bosnian War ||| The '''Siege of Mostar''' was fought between 1992 and 1993. Initially, it involved the [[Croatian Defence Council]] (HVO) and the 4th Corps of the [[ARBiH]] fighting against the Yugoslav People's Army (JNA) after [[Bosnia and Herzegovina]] declared independence from [[Socialist Federal Republic of Yugoslavia|Yugoslavia]]. However, as the conflict matured and as the political landscape changed, the Bosnian Croats and Bosnian Muslims began to fight against each other, culminating in an episode of the [[Bosnian War]] that was known as the [[Croat-Bosniak War|Croat-Bosniak Conflict]]. ||| ||| ||| +1 Siege of Odessa (1941) ||| World War II ||| The '''Siege of Odessa''' also known as '''the Defence of Odessa''' was part of the [[Eastern Front (World War II)|Eastern Front]] theatre of [[World War II]] in 1941. The campaign was fought by the [[Axis powers]] of [[Germany]] and [[Romania]] against the Soviet Union for control of [[Odessa]], a port on the [[Black Sea]]. On 22 June 1941 [[Axis powers|the Axis]] invaded the [[Soviet Union]] during [[Operation Barbarossa]]. ||| ||| ||| +1 Siege of Oxford ||| English Civil War ||| The '''Siege of Oxford''' refers to the [[First English Civil War|English Civil War]] military campaigns waged to [[siege|besiege]] the [[Cavalier|Royalist]] controlled city of [[Oxford]], involving three short engagements over twenty-five months, which ended with a [[Roundhead|Parliamentarian]] victory in June 1646. ||| ||| ||| +1 Siege of Patras (1821) ||| Greek War of Independence ||| The '''Siege of Patras''' was one of the first events of the [[Greek War of Independence]] (1821-1830). After the outbreak of the revolution, the Greeks of Patras tried to capture the main [[Patras Castle|fortress]] of the city. After a long period and several sieges, finally the Ottomans restored the order and [[Patras]] remained under Ottoman control almost until the end of the war. ||| ||| ||| +1 Siege of Pizzighettone ||| War of the Polish Succession ||| The '''Siege of Pizzighettone''' was the first major military engagement of the northern Italian campaigns of the [[War of the Polish Succession]]. Troops from [[France]] and the [[Kingdom of Sardinia]] began blockading the [[Habsburg Monarchy|Habsburg]] [[Duchy of Milan|Milanese]] fortress at [[Pizzighettone]] on 11 November 1733, commencing siege operations on 15 November. On 30 November the commander of the Austrian garrison negotiated a capitulation in which he promised to withdraw toward [[Mantua]] on 9 December if no relief arrived. As no reinforcements appeared by that time, the fortress' garrison withdrew with full honors on 9 December. ||| ||| ||| +1 Siege of Porto Ferrajo ||| French Revolutionary Wars ||| The '''Siege of Porto Ferrajo''' was a French attempt to force the surrender of the [[Grand Duchy of Tuscany|Tuscan]] fortress town of [[Portoferraio|Porto Ferrajo]] (now Portoferraio) on the island of [[Elba]] following the French occupation of mainland Tuscany in 1801 during the [[French Revolutionary Wars]]. The Tuscan garrison was heavily outnumbered, but received significant support from British [[Royal Navy]] forces who controlled the [[Mediterranean Sea]] and ensured that supplies reached the garrison and that French supply convoys were intercepted. The French began the siege with 1,500 men in May 1801, later reinforced to more than 5,000, but could not make an impression on the fortresses defences, instead seeking to starve the defenders into submission with the support of a squadron of [[French Navy]] [[frigates]] operating off the coast. ||| ||| ||| +1 Siege of Prairie du Chien ||| War of 1812 ||| The '''Siege of Prairie du Chien''' was a [[United Kingdom of Great Britain and Ireland|British]] victory in the far western theater of the [[War of 1812]]. During the war, [[Prairie du Chien, Wisconsin|Prairie du Chien]] was a small frontier settlement with residents loyal to both [[United States|American]] and British causes. By 1814, both nations were anxious to control the site because of its importance to the [[fur trade]] and its strategic location at the intersection of the [[Mississippi River]] and the [[Fox-Wisconsin Waterway]], a transportation route linking the Mississippi with the [[Great Lakes]]. ||| ||| ||| +1 Siege of Sevastopol (1941–42) ||| Eastern Front (World War II) ||| The '''Siege of Sevastopol''' also known as the '''Defence of Sevastopol''' ({{lang-ru|Оборона Севастополя}}, [[Romanization of Russian|transliteration]]: ''Oborona Sevastopolya'') took place on the [[Eastern Front (World War II)|Eastern Front]] of the [[Second World War]]. The campaign was fought by the [[Axis powers]] of Germany, [[Romania]], and Italy against the [[Soviet Union]] for control of [[Sevastopol]], a port in the [[Crimea]] on the [[Black Sea]]. On 22 June 1941 the Axis invaded the Soviet Union during [[Operation Barbarossa]]. Axis land forces reached the Crimea in the autumn of 1941 and overran most of the area. The only objective not in Axis hands was Sevastopol. Several attempts were made to secure the city in October and November 1941. A major attack was planned for late November, but heavy rains delayed the Axis attack until 17 December 1941. Under the command of [[Erich von Manstein]], Axis forces were unable to capture Sevastopol during this first operation. Soviet forces launched an amphibious landing on the Crimean peninsula at [[Battle of the Kerch Peninsula (1942)|Kerch]] in December 1941 to relieve the siege and force the Axis to divert forces to defend their gains. The operation saved Sevastopol for the time being, but the bridgehead in the eastern Crimea was eliminated in May 1942. ||| ||| ||| +1 Siege of Sloviansk ||| 2014 pro-Russian unrest in Ukraine ||| On 12 April 2014, as [[2014 pro-Russian unrest in Ukraine|unrest grew in eastern Ukraine]] following the [[2014 Ukrainian revolution]], masked men in [[Battledress|fatigues]], armed with [[Kalashnikov rifle|Kalashnikov assault rifle]]s, captured the city administration building. As tensions in the city increased, the insurgents began to take [[journalist]]s and others captive, instigating a [[Hostage|hostage crisis]]. The [[Security Service of Ukraine]] said on 18 April that 'Sloviansk remains the hottest point in the region'. ||| ||| ||| +1 Siege of Smerwick ||| Second Desmond Rebellion ||| The '''Siege of Smerwick''' took place at [[Ard na Caithne]] (formerly known as Smerwick) in 1580, during the [[Second Desmond Rebellion]] in Ireland. A 400–500 strong force of Papal soldiers (Spanish and Italian troops) captured the town but were forced to retreat to nearby Dún an Óir (The Fort of Gold, possibly a persistent mistranscription for Dún an Áir, The Fort of Slaughter), where they were besieged by the [[English Army]]. The defenders eventually surrendered and most of them were then [[massacre]]d on the orders of the English commander, the [[Lord Deputy of Ireland]], [[Arthur Grey, 14th Baron Grey de Wilton|Arthur Grey]]. ||| ||| ||| +1 Siege of Thorn (1703) ||| Great Northern War ||| The '''Siege of Thorn''' was set during the [[Great Northern War]], between Sweden and Saxony from May to October 14, 1703. The Swedish army was commanded by [[Charles XII of Sweden]] and the Saxon by General von Kanitz. The siege ended with a victory for Sweden, and the whole garrison surrendered to the Swedes. ||| ||| ||| +1 Siege of Tobruk ||| Western Desert Campaign ||| The '''Siege of Tobruk''' lasted for 241 days in 1941, after [[Axis powers|Axis]] forces advanced through Cyrenaica from El Agheila in [[Operation Sonnenblume]] against the British [[Western Desert Force]] (WDF) in [[Libya]], during the [[Western Desert Campaign]] (1940–1943) of the [[World War II|Second World War]]. In late 1940, the British had defeated the Italian 10th Army during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941)}} and trapped the remnants at Beda Fomm. German troops and Italian reinforcements reached Libya, while much of the WDF was sent to Greece and replaced by a skeleton force, short of equipment and supplies. ||| ||| ||| +1 Siege of York ||| English Civil War ||| '''The Siege of York''' in 1644 was a prolonged contest for [[York]] during the [[English Civil War]], between the Scottish [[Covenanter]] army and the [[Parliament of England|Parliamentarian]] armies of the Northern Association and Eastern Association, and the [[Cavalier|Royalist]] Army under the [[William Cavendish, 1st Duke of Newcastle|Marquess of Newcastle]]. It lasted from 22 April until 1 July when the city was relieved by [[Prince Rupert of the Rhine]]. Rupert and Newcastle were defeated the next day at the decisive [[Battle of Marston Moor]], and the siege resumed until the city was surrendered on easy terms on 16 July. ||| ||| ||| +1 Siege of Yorktown ||| American Revolutionary War ||| The '''Siege of Yorktown''', also known as the '''Battle of Yorktown''', the '''Surrender at Yorktown''' or the '''German Battle''', ending on October 19, 1781 at [[Yorktown, Virginia]], was a decisive victory by a combined force of American [[Continental Army]] troops led by General [[George Washington]] and [[France in the American Revolutionary War|French Army troops]] led by the [[Jean-Baptiste Donatien de Vimeur, comte de Rochambeau|Comte de Rochambeau]] over a [[British Army]] commanded by British lord and Lieutenant General [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]]. The culmination of the [[Yorktown campaign]], the siege proved to be the last major land battle of the [[American Revolutionary War]] in the North American theater, as the surrender by Cornwallis, and the capture of both him and his army, prompted the British government to negotiate an end to the conflict. The battle boosted faltering American morale and revived French enthusiasm for the war, as well as undermining popular support for the conflict in Great Britain. ||| ||| ||| +1 Sieges of Taunton ||| First English Civil War ||| The '''sieges of Taunton''' were a series of three blockades during the [[First English Civil War]]. The town of [[Taunton]], in [[Somerset]], was considered to be of strategic importance because it controlled the main road from [[Bristol]] to [[Devon]] and [[Cornwall]]. [[Robert Blake (admiral)|Robert Blake]] commanded the town's [[Roundhead|Parliamentarian]] defences during all three sieges, from September 1644 to July 1645. ||| ||| ||| +1 Sinking of USS Housatonic ||| American Civil War ||| The '''Sinking of USS ''Housatonic''''' on 17 February 1864 during the [[American Civil War]] was an important turning point in [[naval warfare]]. The [[Confederate States]] [[Confederate States Navy|Navy]] [[submarine]], ''[[H.L. Hunley]]'' made her first and only attack on a [[Union (American Civil War)|Union]] [[United States Navy|Navy]] warship when she staged a clandestine night attack on the {{USS|Housatonic|1861|6}} in [[Charleston, SC|Charleston]] harbor. The ''Hunley'' approached just under the surface, avoiding detection until the last moments, then embedded and remotely detonated a [[spar torpedo]] that rapidly sank the {{convert|1240|LT|MT}} [[sloop-of-war]] with the loss of five Union sailors. The ''Hunley'' became renowned as the first submarine to successfully sink an enemy vessel in combat, and was the direct progenitor of what would eventually become international [[submarine warfare]], although the victory was [[Pyrrhic victory|Pyrrhic]] and short-lived, since the submarine did not survive the attack and was lost with all eight Confederate crewmen. ||| ||| ||| +1 Sino-Vietnamese War ||| Third Indochina War ||| The '''Sino-Vietnamese War''' ({{lang-vi|Chiến tranh biên giới Việt-Trung}}; {{zh|s=中越战争|t=中越戰爭|p=Zhōng-Yuè Zhànzhēng}}), also known as the '''[[Third Indochina War]]''', was a brief border war fought between the [[People's Republic of China]] and the [[Socialist Republic of Vietnam]] in early 1979. China launched the offensive in response to Vietnam's [[Cambodian–Vietnamese War|invasion and occupation of Cambodia]] in 1978 (which ended the rule of the Chinese-backed [[Khmer Rouge]]). ||| ||| ||| +1 South Sulawesi Campaign ||| Indonesian National Revolution ||| The '''South Sulawesi Campaign''' (10 December 1946 – 21 February 1947) was a campaign of the [[Indonesian National Revolution]]. It pitted local Indonesian Republicans on the island of [[Sulawesi]] against the returning Dutch who sought to re-assert their authority. The Dutch counter-insurgency offensive was masterminded by the controversial [[Raymond Westerling]], a [[Captain (land)|Captain]] in the KNIL ([[Royal Netherlands East Indies Army]]). Westerling's operation, which started in December 1946 and ended in February 1947, succeeded in eliminating the insurgency and undermining local support for the Republicans by instituting summary executions of suspected enemy fighters. ||| ||| ||| +1 Spanish Revolution of 1936 ||| Spanish Civil War ||| The '''Spanish Revolution''' was a workers' [[social revolution]] that began during the outbreak of the [[Spanish Civil War]] in 1936 and resulted in the widespread implementation of [[anarchism in Spain|anarchist]] and more broadly [[libertarian socialism|libertarian socialist]] organizational principles throughout various portions of the country for two to three years, primarily [[Catalonia]], [[Anarchist Aragon]], [[Andalusia]], and parts of the [[Valencian Community]]. Much of the [[economy of Spain]] was put under worker control; in anarchist strongholds like [[Catalonia]], the figure was as high as 75%, but lower in areas with heavy influence by the [[Communist Party of Spain]].{{Citation needed|date=July 2014}} Factories were run through worker committees, [[agriculture|agrarian]] areas became collectivized and run as libertarian socialist [[commune]]s. Even places like hotels, barber shops, and restaurants were collectivized and managed by their workers. ||| ||| ||| +1 St. John River expedition ||| American Revolutionary War ||| The '''St. John River expedition''' was an attempt by a small number of [[Militia (United States)#History|militia]] commanded by [[John Allan (colonel)|John Allan]] to bring the [[American Revolutionary War]] to [[Nova Scotia]] in late 1777. With minimal logistical support from [[Massachusetts]] and approximately 100 volunteer militia and [[First Nations|Natives]], Allan's forces occupied the small settlement at the mouth of the [[Saint John River (Bay of Fundy)|Saint John River]] (present-day [[Saint John, New Brunswick]], then part of [[Sunbury County, Nova Scotia]]) in June 1777. ||| ||| ||| +1 Swatow Operation ||| Second Sino-Japanese War ||| The '''Swatow Operation''', (June 21–27, 1939) was part of a campaign by Japan during the [[Second Sino-Japanese War]] to blockade China in order to prevent it from communicating with the outside world and importing needed arms and materials. Control of [[Shantou|Swatow]] would provide a base to make the blockade of [[Guangdong]] province more effective. ||| ||| ||| +1 Taiyuan massacre ||| Boxer Rebellion ||| The '''Taiyuan massacre''' took place during the [[Boxer Rebellion]], July 9, 1900, in [[Taiyuan]], [[Shanxi]] province, [[North China]]. Reports at the time alleged that [[Yuxian (Qing dynasty)|Yuxian]], governor of [[Shanxi]], ordered the killings of 45 Christian missionaries and village Christians, including children. ||| ||| ||| +1 Tangail Airdrop ||| Indo-Pakistani War of 1971 ||| The '''Tangail Airdrop''' was an airborne operation mounted on 11 December 1971 by the [[Para Commandos (India)|2nd Parachute Battalion]] Group of the [[Indian Army]] during the [[Indo-Pakistani War of 1971]]. The main objective of the operation was the capture of Poongli Bridge on the [[Jamuna River (Bangladesh)|Jamuna]] which would cut off the 93 Brigade of Pakistani Army which was retreating from the north to defend [[Dacca]] and its approaches. The [[Paratroop]] unit was also tasked to link up with the advancing [[Maratha Light Infantry]] on the ground to advance towards the East Pakistani capital. ||| ||| ||| +1 Tet 1969 ||| Vietnam War ||| '''Tet 1969''' refers to the attacks mounted by principally [[North Vietnam]]ese forces in February 1969 in [[South Vietnam]] during the [[Vietnam War]], one year after the original [[Tet Offensive]]. ||| ||| ||| +1 Thanh Hóa Bridge ||| Vietnam War ||| The '''Thanh Hóa Bridge''' (Vietnamese: Cầu Hàm Rồng, Hàm Rồng Bridge), spanning the [[Song Ma]] river, is situated {{Convert|3|mi|km}} northeast of [[Thanh Hóa]] ({{audio|Thanh Hóa.ogg|listen|help=no}}), the capital of [[Thanh Hóa Province]] in [[Vietnam]]. The Vietnamese gave it the nickname '''Hàm Rồng''' (''Dragon's Jaw''). In 1965 during the [[Vietnam War]], it was the objective of many attacks by [[United States Air Force|US Air Force]] and [[United States Navy|US Navy]] aircraft which would fail to destroy the bridge until 1972, even after hundreds of attacks. In their first air combat, a small force of seemingly mismatched [[MiG-17]]s inflicted significant losses on much larger and more advanced American [[F-105 Thunderchief]] at a cost of 3 of their own, with an [[F-100 Super Sabre]] claiming the first probable American kill of the conflict. The encounter led to significant changes in American tactics and training, and a return to dog-fighting in air combat doctrine. Eventually, in 1972, the bridge was destroyed by USAF [[F-4 Phantoms]] using [[laser-guided bomb]]s and US Navy [[Vought A-7 Corsair II|Vought A-7s]] with advanced and conventional bombs. ||| ||| ||| +1 The Battle of the Corvin Passage ||| Hungarian Revolution of 1956 ||| The '''Battle of the Corvin Passage''' ({{lang-hu|Corvin közi csata}}) was a battle of the [[Hungarian Revolution of 1956]]. The battle is known for starting the career of [[Gergely Pongrátz]] , founder of [[Jobbik]] ||| ||| ||| +1 The Engagement at Gommecourt (The Somme WWI) ||| Battle of the Somme ||| The '''Engagement at Gommecourt''', [[France]] which took place on July 1st, 1916 was one part of the larger [[Battle of the Somme]] which was fought near the [[Somme River]] in France approximately between July 1st and November 1st of 1916 and was one of the bloodiest battles in history. Overall, the engagement at Gommecourt importantly is representative of the bloody and strategically ineffective nature of trench style warfare which characterized much of the combat experienced during WWI. ||| ||| ||| +1 The Hardest Day ||| World War II ||| '''The Hardest Day''' was the name of a [[World War II|Second World War]] air battle fought during the [[Battle of Britain]] on 18 August 1940 between the [[Germany|German]] ''[[Luftwaffe]]'' and [[United Kingdom|British]] [[Royal Air Force]] (RAF). ||| ||| ||| +1 Third Battle of Artois ||| Western Front (World War I) ||| The '''Third Battle of Artois''' was on the [[Western Front (World War I)|Western Front]] of [[World War I]], is also known as the ''Loos–Artois Offensive'' and included the big British offensive, known as the [[Battle of Loos]]. The offensive, meant to complement the [[Second Battle of Champagne]], was the last attempt of 1915 by the French commander-in-chief [[Joseph Joffre]] to exploit an Allied numerical advantage over Germany. Joffre's plan was for simultaneous attacks in [[Champagne-Ardenne]] and [[Artois]], to capture the railways at [[Attigny, Ardennes|Attigny]] and [[Douai]], to force a German withdrawal from the Noyon salient. ||| ||| ||| +1 Tianjin–Pukou Railway Operation ||| Second Sino-Japanese War ||| The Japanese 津浦線作戦 or '''Tientsin–Pukow Railway Operation''' (Early August to mid November, 1937) was a follow up operation to the [[Battle of Beiping-Tianjin|Peiking Tientsin Operation]] of the Japanese army in North China at the beginning of the [[Second Sino-Japanese War]]. The Japanese advanced following the line of the [[Tianjin-Pukou Railway]] to the [[Yellow River]]. ||| ||| ||| +1 Tuareg rebellion (2012) ||| Northern Mali conflict ||| The '''Tuareg Rebellion of 2012''' was an early stage of the [[Northern Mali conflict]]; from January to April 2012, a war was waged against the [[Politics of Mali|Malian government]] by rebels with the goal of attaining [[independence]] for the northern region of [[Mali]], known as [[Azawad]]. ||| ||| ||| +1 United States Army Air Forces in the South Pacific Area ||| World War II ||| During [[World War II]], the [[United States Army Air Forces]] engaged in combat against the [[Empire of Japan]] in the [[South West Pacific theatre of World War II|South Pacific]] Area. As defined by the [[United States Department of War|War Department]], this consisted of the Pacific Ocean areas which lay south of the [[Equator]] between longitude 159° East and 110° West. It included New Zealand, [[New Caledonia]], [[New Hebrides]], Fiji, and most of the [[Solomon Islands]]. ||| ||| ||| +1 Utah Beach ||| Normandy landings ||| '''Utah Beach''' was the [[code name]] for one of the five sectors of the [[Allies of World War II|Allied]] invasion of [[German occupation of France during World War II|German-occupied France]] in the [[Normandy landings]] on June 6, 1944, during [[World War II]]. The westernmost of the five landing beaches, Utah is on the [[Cotentin Peninsula]], west of the mouths of the [[Douve]] and [[Vire (river)|Vire]] rivers. Amphibious landings at Utah were undertaken by [[United States Army]] troops, with sea transport and [[naval artillery|naval artillery support]] provided by the [[U.S. Navy]] and elements of the British [[Royal Navy]]. ||| ||| ||| +1 Valley of Tears ||| Yom Kippur War ||| The '''Valley of Tears''' ({{lang-he-n|עֵמֶק הַבָּכָא}}, ''Emek HaBakha'') is the name given to an area in the [[Golan Heights]] after it became the site of a major battle in the 1973 [[Yom Kippur War]], known as the '''Valley (or Vale) of Tears Battle'''. Although massively outnumbered, the Israeli forces managed to hold their positions and on the fourth day of the battle the Syrians withdrew. ||| ||| ||| +1 Walcheren Campaign ||| War of the Fifth Coalition ||| The '''Walcheren Campaign''' was an unsuccessful British expedition to the [[Netherlands]] in 1809 intended to open another front in the [[Austrian Empire]]'s struggle with [[First French Empire|France]] during the [[Fifth Coalition|War of the Fifth Coalition]]. Around 40,000 soldiers, 15,000 horses together with field artillery and two [[siege train]]s crossed the [[North Sea]] and landed at Walcheren on 30{{nbsp}}July. This was the largest British expedition of that year, larger than the army serving in the [[Peninsular War]] in Portugal. The Walcheren Campaign involved little fighting, but heavy losses from the sickness popularly dubbed [[Walcheren_fever#Napoleonic_Wars|'Walcheren Fever']]. Although more than 4,000 British troops died during the expedition, only died 106 in combat; the survivors withdrew on 9{{nbsp}}December. ||| ||| ||| +1 Wanshan Archipelago Campaign ||| Chinese Civil War ||| The '''Wanshan Archipelago Campaign''' (万山群岛战役) was a campaign fought between the [[communist]] and the [[Kuomintang|nationalist]] forces during the [[Chinese Civil War]] for the control of [[Wanshan Archipelago]] (''Wanshan Qundao'',万山群岛), and resulted in [[communist]] victory. The [[archipelago]] consists of 48 islands strategically located at the mouth of the [[Pearl River (China)|Pearl River]], a chokepoint on the communication lines to [[Hong Kong]] and [[Macau]]. The largest island is the Laurel Mountain (Guishan, 桂山) Island, which was formerly known as Trash Tail (Lajiwei, 垃圾尾) Island. Other major islands include Outer Linding (Wailinding, 外伶仃) Island, Dong'ao (东澳) Island, Tri-gate (Sanmen, 三门) Island, Greater Ten-thousand Mountain ([[Dawanshan Dao|Da Wanshan]], 大万山) Island, Lesser Ten-thousand Mountain ([[Xiaowanshan Dao|Xiao Wanshan]], 小万山) Island, Burden Pole (Dangan, 担杆) Islands, and Jianpeng (佳蓬) Islands. ||| ||| ||| +1 War in Somalia (2009–present) ||| Somali Civil War ||| The '''2009–present phase of the [[Somali Civil War]]''' is concentrated in southern [[Somalia]]. It began in early February 2009, with the conflict between the forces of the [[Federal Government of Somalia]] assisted by [[African Union]] peacekeeping troops and various militant Islamist groups and factions. The violence has displaced thousands of people in the southern part of the country. The conflict has also seen [[sectarian]] violence between the moderate [[Sufi]]s [[Ahlu Sunna Waljama'a|ASWJ]], and the Islamists [[Al-Shabaab (militant group)|Al-Shabaab]]. ||| ||| ||| +1 War in the North ||| Spanish Civil War ||| The '''War in the North''', in the [[Spanish Civil War]] was the campaign in which the Nationalist forces defeated and occupied the parts of northern [[Spain]] that remained loyal to the [[Second Spanish Republic|Republican]] government. The campaign included several separate battles. The [[Biscay Campaign]] resulted in the loss of the part of the [[Basque Country (autonomous community)|Basque Country]] still held by the Republic and [[Battle of Bilbao|Bilbao]], the greatest Spanish industrial center. This part of the campaign saw the [[Bombing of Guernica]] and [[Durango, Spain|Durango]]. The [[Battle of Santander]] caused the loss of the province of Santander in [[Cantabria]]n [[Old Castile|Castile]] for the Republic. The [[Battle of El Mazuco]] lead to the capture of the Republican-controlled part of [[Asturias]] and the fall of [[Gijón]], the Republic's last stronghold in the North, to the Nationalists. The campaign ended on October 21, 1937 with a decisive and total Nationalist victory. ||| ||| ||| +1 Western Desert Campaign ||| World War II ||| The '''Western Desert Campaign''' or the '''Desert War''', took place in the [[Libyan Desert|Western Desert]] of Egypt and Libya and was a theatre in the [[North African Campaign]] during the [[World War II|Second World War]]. The campaign began in September 1940, with the [[Italian invasion of Egypt]]. The Italians halted to bring up supplies, and [[Operation Compass]], a British five-day raid in December 1940, led to the destruction of the Italian [[Tenth Army (Italy)|10th Army]]. [[Benito Mussolini]] sought help from Hitler and a small German blocking detachment {{lang|de|(''Sperrverband'')}} was sent to Tripoli under [[List of Adolf Hitler's directives|Directive 22]] (11 January), being the first units of the ''[[Afrika Korps]]'' (''Generalleutnant'' [[Erwin Rommel]]), under nominal Italian command but Italian dependency on [[Nazi Germany]] made it the dominant partner. ||| ||| ||| +1 Western Sahara War ||| Western Sahara conflict ||| The '''Western Sahara War''' ({{lang-ar|حرب الصحراء الغربية}}, {{lang-fr|Guerre du Sahara}}, {{lang-es|Guerra del Sahara Occidental}}) was an armed struggle between the [[Sahrawi people|Sahrawi]] [[indigenous peoples|indigenous]] [[Polisario Front]] and [[Morocco]] between 1975 and 1991, being the most significant phase of the [[Western Sahara conflict]]. The conflict erupted after the withdrawal of [[Spain]] from the [[Spanish Sahara]] in accordance with the [[Madrid Accords]] (signed under the pressure of the [[Green March]]), by which it transferred administrative control of the territory to [[Morocco]] and [[Mauritania]], but not the sovereignty. In late 1975, Moroccan government organized the Green March of some 350,000 Moroccan citizens, escorted by around 20,000 troops, who entered [[Western Sahara]], trying to establish a Moroccan presence. While at first met with just minor resistance by the POLISARIO, Morocco later engaged a long period of guerrilla warfare with the Sahrawi nationalists. During the late 1970s, the Polisario Front, desiring to establish an independent state in the territory, successively fought both [[Mauritania]] and [[Morocco]]. In 1979, [[Mauritania]] withdrew from the conflict after signing a peace treaty with the POLISARIO. The war continued in low intensity throughout the 1980s, though Morocco made several attempts to take the upper hand in 1989–1991. A cease-fire agreement was finally reached between the Polisario Front and [[Morocco]] in September 1991. Some sources put the final death toll between 10,000 and 20,000 people. ||| ||| ||| +1 Withdrawal of U.S. troops from Iraq ||| Iraq War ||| The '''withdrawal of U.S. military forces from Iraq''' began in December 2007 with the end of the [[Iraq War troop surge of 2007]] and was completed by December 2011, bringing an end to the [[Iraq War]]. The number of U.S. military forces in Iraq peaked at 170,300 in November 2007. ||| ||| ||| diff --git a/openks/data/SeRI_mod/train_pair.dat b/openks/data/SeRI_mod/train_pair.dat new file mode 100644 index 00000000..3e3bdc61 --- /dev/null +++ b/openks/data/SeRI_mod/train_pair.dat @@ -0,0 +1,6157 @@ +-1 1969 Northern Ireland riots ||| Battle of the Bogside ||| The disorder led to the [[Battle of the Bogside]] in Derry, a three-day riot in the [[Bogside]] district between the RUC and the nationalist/Catholic residents. In support of the Bogsiders, nationalists and Catholics launched protests elsewhere in Northern Ireland. Some of these led to attacks by loyalists working alongside the police. The most bloody rioting was in Belfast, where seven people were killed and hundreds more wounded. Scores of houses, most of them owned by Catholics, as well as businesses and factories were burned-out. In addition, thousands of mostly Catholic families were driven from their homes. In certain areas, the RUC helped the loyalists and failed to protect Catholic areas. Events in Belfast have been viewed by some as a [[pogrom]] against the Catholic and nationalist minority. ||| ||| ||| +-1 2002 Gujarat riots ||| Naroda Patiya massacre ||| On 29 July 2012, an Indian court gave the verdict in the [[Naroda Patiya massacre]] case and convicted 32 people, including former state minister [[Maya Kodnani]] and Hindu leader [[Babu Bajrangi]] of involvement in the attacks. The court case began in 2009, and over 300 people (including victims, witnesses, doctors, and journalists) had testified before the court. For the first time, the verdict acknowledged the role of a politician in inciting Hindu mobs. Activists asserted that the verdict would embolden the opponent of Narendra Modi, the then chief minister of Gujarat, in the crucial run-up to state elections later that year, when Modi would be seeking a third term (Him and BJP eventually went on to win the elections ||| Criminal prosecutions ||| Naroda Patiya Massacre ||| +-1 2003 invasion of Iraq ||| Battle of Nasiriyah ||| The invasion was preceded by an [[air strike]] on the Presidential Palace in Baghdad on 19 March 2003. The following day, coalition forces launched an incursion into [[Basra Province]] from their massing point close to the Iraqi-Kuwaiti border. While the special forces launched an amphibious assault from the [[Persian Gulf]] to secure [[Basra]] and the surrounding petroleum fields, the main invasion army moved into southern Iraq, occupying the region and engaging in the [[Battle of Nasiriyah]] on 23 March. Massive air strikes across the country and against Iraqi command and control threw the defending army into chaos and prevented an effective resistance. On 26 March, the [[173rd Airborne Brigade]] was [[Operation Northern Delay|airdropped]] near the northern city of [[Kirkuk]], where they joined forces with [[Kurdish people|Kurdish]] rebels and fought several actions against the [[Iraqi army]] to secure the northern part of the country. ||| ||| ||| +-1 2003 invasion of Iraq ||| Operation Northern Delay ||| The invasion was preceded by an [[air strike]] on the Presidential Palace in Baghdad on 19 March 2003. The following day, coalition forces launched an incursion into [[Basra Province]] from their massing point close to the Iraqi-Kuwaiti border. While the special forces launched an amphibious assault from the [[Persian Gulf]] to secure [[Basra]] and the surrounding petroleum fields, the main invasion army moved into southern Iraq, occupying the region and engaging in the [[Battle of Nasiriyah]] on 23 March. Massive air strikes across the country and against Iraqi command and control threw the defending army into chaos and prevented an effective resistance. On 26 March, the [[173rd Airborne Brigade]] was [[Operation Northern Delay|airdropped]] near the northern city of [[Kirkuk]], where they joined forces with [[Kurdish people|Kurdish]] rebels and fought several actions against the [[Iraqi army]] to secure the northern part of the country. ||| ||| ||| +-1 2006 Lebanon War ||| 2006 Hezbollah cross-border raid ||| Hezbollah named the attack '[[2006 Hezbollah cross-border raid|Operation Truthful Promise]]' after leader [[Hassan Nasrallah]]'s public pledges over the prior year and a half to seize Israeli soldiers and swap them for [[Lebanese prisoners in Israel|four Lebanese held by Israel]]: ||| Beginning of conflict ||| Hezbollah cross-border raid ||| +-1 2011 military intervention in Libya ||| Operation Ellamy ||| * {{Flag|United Kingdom}}: '''[[Operation Ellamy]]''' ||| Enforcement ||| Operation names ||| +-1 2014 pro-Russian unrest in Ukraine ||| War in Donbass ||| From the end of February 2014, demonstrations by pro-Russian and anti-government groups took place in major cities across the [[Eastern Ukraine|eastern]] and [[Southern Ukraine|southern]] regions of [[Ukraine]], in the [[2013–15 Ukrainian crisis|aftermath]] of the [[Euromaidan]] movement and the [[2014 Ukrainian revolution]]. During the first stage of the unrest, [[Crimea]] was [[Annexation of Crimea by the Russian Federation|annexed]] by the [[Russian Federation]] after a [[2014 Crimean crisis|crisis in the region]], [[2014 Russian military intervention in Ukraine|Russian military intervention]], and an internationally criticized [[Crimean status referendum, 2014|referendum]]. Protests in [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] [[Oblasts of Ukraine|oblasts]] escalated into an [[War in Donbass|armed separatist insurgency]]. ||| ||| ||| +-1 2015 Ramadan attacks ||| 2015 Kuwait mosque bombing ||| [[2015 Sousse attacks|One attack at a Tunisian beach resort]] killed 39; [[2015 Kuwait mosque bombing|a bombing at a Shia mosque in Kuwait City]] killed 27 and injured several; while in [[Kobanî]] a [[Kobanî massacre|large-scale massacre]] by ISIL resulted in more than 223 civilians murdered, in line with over 79 assailants (including 13 suicide bombers) and 23 Kurdish militiamen, dubbed the second largest massacre by ISIL since summer 2014; a suicide bombing by ISIL in [[Al-Hasakeh]], also in Syria, resulted in 20 fatalities; finally, one man was [[decapitated]], while several were injured during the [[Saint-Quentin-Fallavier attack]] in France. ||| ||| ||| +-1 2015 Ramadan attacks ||| 2015 Sousse attacks ||| [[2015 Sousse attacks|One attack at a Tunisian beach resort]] killed 39; [[2015 Kuwait mosque bombing|a bombing at a Shia mosque in Kuwait City]] killed 27 and injured several; while in [[Kobanî]] a [[Kobanî massacre|large-scale massacre]] by ISIL resulted in more than 223 civilians murdered, in line with over 79 assailants (including 13 suicide bombers) and 23 Kurdish militiamen, dubbed the second largest massacre by ISIL since summer 2014; a suicide bombing by ISIL in [[Al-Hasakeh]], also in Syria, resulted in 20 fatalities; finally, one man was [[decapitated]], while several were injured during the [[Saint-Quentin-Fallavier attack]] in France. ||| ||| ||| +-1 Algerian War ||| Paris massacre of 1961 ||| * ''[[Nuit noire]]'' by [[Alain Tasma]] (2005, on the [[Paris massacre of 1961]]) ||| Films ||| ||| +-1 American Civil War ||| Battle of Antietam ||| In September 1862, the [[Battle of Antietam]] provided this opportunity, and the subsequent [[War Governors' Conference]] added support for the proclamation. ||| Victory and aftermath ||| Emancipation ||| Emancipation Proclamation +-1 American Civil War ||| Battle of Chickamauga ||| The one clear Confederate victory in the West was the [[Battle of Chickamauga]]. Bragg, reinforced by Lt. Gen. [[James Longstreet]]'s corps (from Lee's army in the east), defeated Rosecrans, despite the heroic defensive stand of Maj. Gen. [[George Henry Thomas]]. Rosecrans retreated to [[Chattanooga, Tennessee|Chattanooga]], which Bragg then besieged. ||| War ||| Western theater ||| +-1 American Civil War ||| Battle of Fort Donelson ||| The Union's key strategist and tactician in the West was [[Ulysses S. Grant]], who won victories at Forts [[Battle of Fort Henry|Henry]] and [[Battle of Fort Donelson|Donelson]] (by which the Union seized control of the [[Tennessee River|Tennessee]] and [[Cumberland River|Cumberland]] Rivers); the [[Battle of Shiloh]];{{sfn|McPherson|1988|pp=405–413}} and the [[Siege of Vicksburg|Battle of Vicksburg]],{{sfn|McPherson|1988|pp=637–638}} which cemented Union control of the Mississippi River and is considered one of the [[Turning point of the American Civil War|turning points]] of the war. Grant marched to the relief of Rosecrans and defeated Bragg at the [[Chattanooga Campaign|Third Battle of Chattanooga]],{{sfn|McPherson|1988|pp=677–680}} driving Confederate forces out of Tennessee and opening a route to Atlanta and the heart of the Confederacy. ||| War ||| Western theater ||| +-1 American Civil War ||| Battle of Fort Henry ||| The Union's key strategist and tactician in the West was [[Ulysses S. Grant]], who won victories at Forts [[Battle of Fort Henry|Henry]] and [[Battle of Fort Donelson|Donelson]] (by which the Union seized control of the [[Tennessee River|Tennessee]] and [[Cumberland River|Cumberland]] Rivers); the [[Battle of Shiloh]];{{sfn|McPherson|1988|pp=405–413}} and the [[Siege of Vicksburg|Battle of Vicksburg]],{{sfn|McPherson|1988|pp=637–638}} which cemented Union control of the Mississippi River and is considered one of the [[Turning point of the American Civil War|turning points]] of the war. Grant marched to the relief of Rosecrans and defeated Bragg at the [[Chattanooga Campaign|Third Battle of Chattanooga]],{{sfn|McPherson|1988|pp=677–680}} driving Confederate forces out of Tennessee and opening a route to Atlanta and the heart of the Confederacy. ||| War ||| Western theater ||| +-1 American Civil War ||| Battle of Fredericksburg ||| When the cautious McClellan failed to follow up on Antietam, he was replaced by Maj. Gen. [[Ambrose Burnside]]. Burnside was soon defeated at the [[Battle of Fredericksburg]]{{sfn|McPherson|1988|pp=571–574}} on December 13, 1862, when more than 12,000 Union soldiers were killed or wounded during repeated futile frontal assaults against Marye's Heights. After the battle, Burnside was replaced by Maj. Gen. [[Joseph Hooker]]. ||| War ||| Eastern theater ||| +-1 American Civil War ||| Battle of Seven Pines ||| Maj. Gen. [[George B. McClellan]] took command of the Union [[Army of the Potomac]] on July 26 (he was briefly general-in-chief of all the Union armies, but was subsequently relieved of that post in favor of Maj. Gen. [[Henry Halleck|Henry W. Halleck]]), and the war began in earnest in 1862. Upon the strong urging of President Lincoln to begin offensive operations, McClellan attacked Virginia in the spring of 1862 by way of the [[Virginia Peninsula|peninsula]] between the [[York River (Virginia)|York River]] and [[James River]], southeast of Richmond. Although McClellan's army reached the gates of Richmond in the [[Peninsula Campaign]],{{sfn|Foote|1974|p=464–519}} {{sfn|McPherson|1988|pp=424–427}} [[Joseph E. Johnston|Johnston]] halted his advance at the [[Battle of Seven Pines]], then General [[Robert E. Lee]] and top subordinates [[James Longstreet]] and Stonewall Jackson defeated McClellan in the [[Seven Days Battles]] and forced his retreat.{{sfn|McPherson|1988|pp=538–544}} The [[Northern Virginia Campaign]], which included the [[Second Battle of Bull Run]], ended in yet another victory for the South.{{sfn|McPherson|1988|pp=528–533}} McClellan resisted General-in-Chief Halleck's orders to send reinforcements to [[John Pope (military officer)|John Pope's]] Union [[Army of Virginia]], which made it easier for Lee's Confederates to defeat twice the number of combined enemy troops. ||| War ||| Eastern theater ||| +-1 American Civil War ||| Battle of Shiloh ||| The Union's key strategist and tactician in the West was [[Ulysses S. Grant]], who won victories at Forts [[Battle of Fort Henry|Henry]] and [[Battle of Fort Donelson|Donelson]] (by which the Union seized control of the [[Tennessee River|Tennessee]] and [[Cumberland River|Cumberland]] Rivers); the [[Battle of Shiloh]];{{sfn|McPherson|1988|pp=405–413}} and the [[Siege of Vicksburg|Battle of Vicksburg]],{{sfn|McPherson|1988|pp=637–638}} which cemented Union control of the Mississippi River and is considered one of the [[Turning point of the American Civil War|turning points]] of the war. Grant marched to the relief of Rosecrans and defeated Bragg at the [[Chattanooga Campaign|Third Battle of Chattanooga]],{{sfn|McPherson|1988|pp=677–680}} driving Confederate forces out of Tennessee and opening a route to Atlanta and the heart of the Confederacy. ||| War ||| Western theater ||| +-1 American Civil War ||| Peninsula Campaign ||| Maj. Gen. [[George B. McClellan]] took command of the Union [[Army of the Potomac]] on July 26 (he was briefly general-in-chief of all the Union armies, but was subsequently relieved of that post in favor of Maj. Gen. [[Henry Halleck|Henry W. Halleck]]), and the war began in earnest in 1862. Upon the strong urging of President Lincoln to begin offensive operations, McClellan attacked Virginia in the spring of 1862 by way of the [[Virginia Peninsula|peninsula]] between the [[York River (Virginia)|York River]] and [[James River]], southeast of Richmond. Although McClellan's army reached the gates of Richmond in the [[Peninsula Campaign]],{{sfn|Foote|1974|p=464–519}} {{sfn|McPherson|1988|pp=424–427}} [[Joseph E. Johnston|Johnston]] halted his advance at the [[Battle of Seven Pines]], then General [[Robert E. Lee]] and top subordinates [[James Longstreet]] and Stonewall Jackson defeated McClellan in the [[Seven Days Battles]] and forced his retreat.{{sfn|McPherson|1988|pp=538–544}} The [[Northern Virginia Campaign]], which included the [[Second Battle of Bull Run]], ended in yet another victory for the South.{{sfn|McPherson|1988|pp=528–533}} McClellan resisted General-in-Chief Halleck's orders to send reinforcements to [[John Pope (military officer)|John Pope's]] Union [[Army of Virginia]], which made it easier for Lee's Confederates to defeat twice the number of combined enemy troops. ||| War ||| Eastern theater ||| +-1 American Civil War ||| Seven Days Battles ||| Maj. Gen. [[George B. McClellan]] took command of the Union [[Army of the Potomac]] on July 26 (he was briefly general-in-chief of all the Union armies, but was subsequently relieved of that post in favor of Maj. Gen. [[Henry Halleck|Henry W. Halleck]]), and the war began in earnest in 1862. Upon the strong urging of President Lincoln to begin offensive operations, McClellan attacked Virginia in the spring of 1862 by way of the [[Virginia Peninsula|peninsula]] between the [[York River (Virginia)|York River]] and [[James River]], southeast of Richmond. Although McClellan's army reached the gates of Richmond in the [[Peninsula Campaign]],{{sfn|Foote|1974|p=464–519}} {{sfn|McPherson|1988|pp=424–427}} [[Joseph E. Johnston|Johnston]] halted his advance at the [[Battle of Seven Pines]], then General [[Robert E. Lee]] and top subordinates [[James Longstreet]] and Stonewall Jackson defeated McClellan in the [[Seven Days Battles]] and forced his retreat.{{sfn|McPherson|1988|pp=538–544}} The [[Northern Virginia Campaign]], which included the [[Second Battle of Bull Run]], ended in yet another victory for the South.{{sfn|McPherson|1988|pp=528–533}} McClellan resisted General-in-Chief Halleck's orders to send reinforcements to [[John Pope (military officer)|John Pope's]] Union [[Army of Virginia]], which made it easier for Lee's Confederates to defeat twice the number of combined enemy troops. ||| War ||| Eastern theater ||| +-1 American Civil War ||| Siege of Vicksburg ||| The Union's key strategist and tactician in the West was [[Ulysses S. Grant]], who won victories at Forts [[Battle of Fort Henry|Henry]] and [[Battle of Fort Donelson|Donelson]] (by which the Union seized control of the [[Tennessee River|Tennessee]] and [[Cumberland River|Cumberland]] Rivers); the [[Battle of Shiloh]];{{sfn|McPherson|1988|pp=405–413}} and the [[Siege of Vicksburg|Battle of Vicksburg]],{{sfn|McPherson|1988|pp=637–638}} which cemented Union control of the Mississippi River and is considered one of the [[Turning point of the American Civil War|turning points]] of the war. Grant marched to the relief of Rosecrans and defeated Bragg at the [[Chattanooga Campaign|Third Battle of Chattanooga]],{{sfn|McPherson|1988|pp=677–680}} driving Confederate forces out of Tennessee and opening a route to Atlanta and the heart of the Confederacy. ||| War ||| Western theater ||| +-1 American Civil War ||| Union blockade ||| Hostilities began on April 12, 1861, when Confederate forces fired upon [[Fort Sumter]]. While in the [[Western Theater of the American Civil War|Western Theater]] the Union made significant permanent gains, in the [[Eastern Theater of the American Civil War|Eastern Theater]], battle was inconclusive in 1861–62. The autumn 1862 Confederate campaigns into Maryland and Kentucky failed, dissuading British intervention. Lincoln issued the Emancipation Proclamation, which made ending slavery a war goal. To the west, by summer 1862 the Union destroyed the Confederate river navy, then much of their western armies and seized New Orleans. The 1863 Union siege of Vicksburg split the Confederacy in two at the Mississippi River. In 1863, [[Robert E. Lee]]'s Confederate incursion north ended at the Battle of Gettysburg. Western successes led to [[Ulysses S. Grant]]'s command of all Union armies in 1864. Inflicting an ever tightening [[Union blockade|naval blockade]] of Confederate ports, the Union marshaled the resources and manpower to attack the Confederacy from all directions, leading to the fall of Atlanta to [[William T. Sherman]] and his march to the sea. The last significant battles raged around the Siege of Petersburg. Lee's escape attempt ended with his surrender at Appomattox Court House, on April 9, 1865. While the military war was coming to an end, the political reintegration of the nation was to take another 12 years of the [[Reconstruction Era]]. ||| ||| ||| +-1 American Indian Wars ||| Apache Wars ||| * [[Apache Wars]] (1849–1924) ||| West of the Mississippi (1811–1924) ||| ||| +-1 American Indian Wars ||| Bannock War ||| * [[Bannock War]] (1878) ||| West of the Mississippi (1811–1924) ||| ||| +-1 American Indian Wars ||| Creek War ||| In the period after the American Revolution, 1783-1812, British merchants and government agents supplied weapons to Indians living in the United States, in the hope that if a war broke out the Indians would fight with them. The British planned to set up an Indian nation in what is now the Ohio-Wisconsin area to block further American expansion. The U.S. protested and finally, in [[War of 1812|1812]], went to war. Most Indian tribes, especially those allied with [[Tecumseh]], supported the British and were ultimately defeated by General [[William Henry Harrison]]. The War of 1812 became caught up in internal Native American rivalries as well; the [[Creek War]] was in part an internal conflict as well as one in which some of the nation allied with the United States and other bands allied with the British. The latter were defeated by General [[Andrew Jackson]]. ||| East of the Mississippi (1775–1842) ||| ||| +-1 American Indian Wars ||| Jicarilla War ||| ** [[Jicarilla War]] (1849–1855) ||| West of the Mississippi (1811–1924) ||| ||| +-1 American Indian Wars ||| Navajo Wars ||| The tribes or bands in the southwest had been engaged in cycles of trading and fighting each other and foreign settlers for centuries prior to the United States' purchasing their region from Mexico in 1848 and 1853. These conflicts with the United States involved every non-pueblo tribe in this region and often were a continuation of Mexican–Spanish conflicts. The [[Navajo Wars|Navajo]] and [[Apache wars|Apache conflicts]] are perhaps the best known. The last major campaign of the U.S. military against native Americans in the Southwest involved 5,000 troops in the field, which caused the Apache [[Geronimo]] and his band of 24 warriors, women and children to surrender in 1886. ||| West of the Mississippi (1811–1924) ||| Southwest ||| +-1 American Indian Wars ||| Northwest Indian War ||| * [[Northwest Indian War]] (1785–1795) ||| East of the Mississippi (1775–1842) ||| ||| +-1 American Indian Wars ||| Snake War ||| * [[Snake War]] (1864–1869) ||| West of the Mississippi (1811–1924) ||| ||| +-1 American Revolutionary War ||| Battle of Camden ||| The remnants of the southern Continental Army began to withdraw to [[North Carolina]] but were pursued by Lt. Colonel [[Banastre Tarleton]], who defeated them at the [[Waxhaw Massacre|Waxhaws]] on May 29, 1780. With these events, organized American military activity in the region collapsed, though the war was carried on by partisans such as [[Francis Marion]]. Cornwallis took over British operations, while [[Horatio Gates]] arrived to command the American effort. On August 16, 1780, Gates was defeated at the [[Battle of Camden]] in South Carolina, setting the stage for Cornwallis to invade North Carolina. Georgia and South Carolina were thus both restored to Britain for the time being. ||| Second phase, 1778–1781 ||| Georgia and the Carolinas, 1778–1781 ||| +-1 American Revolutionary War ||| Battle of Quebec (1775) ||| Two Quebec-bound expeditions were undertaken. On September 28, 1775, Brigadier General [[Richard Montgomery]] marched north from [[Fort Ticonderoga]] with about 1,700 militiamen, [[Siege of Fort St. Jean|besieging and capturing Fort St. Jean]] on November 2 and then Montreal on November 13. General Carleton escaped to [[Quebec City]] and began preparing that city for an attack. The [[Arnold's expedition to Quebec|second expedition]], led by Colonel Arnold, went through the wilderness of what is now northern Maine. Logistics were difficult, with 300 men turning back, and another 200 perishing due to the harsh conditions. By the time Arnold reached Quebec City in early November, he had but 600 of his original 1,100 men. Montgomery's force joined Arnold's, and they [[Battle of Quebec (1775)|attacked Quebec City]] on December 31, but were defeated by Carleton in a battle that ended with Montgomery dead, Arnold wounded, and over 400 Americans taken prisoner. ||| First phase, 1775–1778 ||| Outbreak of the War 1775–1776 ||| Quebec +-1 American Revolutionary War ||| Battle of Rhode Island ||| In August 1778 the Americans attempted to capture British-held [[Newport, Rhode Island]] with the assistance of France, but [[Battle of Rhode Island|the effort failed]] when the French withdrew their support. The war in the north then bogged down into a stalemate, with neither side capable of attacking the other in any decisive manner. The British instead attempted to wear out American resolve by launching various raiding expeditions such as [[Tryon's raid|Tryon's raid against Connecticut]] in July 1779. In that year the Americans won two morale-enhancing victories by capturing posts at [[Battle of Stony Point|Stony Point]] and [[Battle of Paulus Hook|Paulus Hook]], although the British quickly retook them. In October 1779 the British voluntarily abandoned Newport and Stony Point in order to consolidate their forces. ||| Second phase, 1778–1781 ||| Northern theater after Saratoga, 1778–1781 ||| +-1 American Revolutionary War ||| Battle of Stony Point ||| In August 1778 the Americans attempted to capture British-held [[Newport, Rhode Island]] with the assistance of France, but [[Battle of Rhode Island|the effort failed]] when the French withdrew their support. The war in the north then bogged down into a stalemate, with neither side capable of attacking the other in any decisive manner. The British instead attempted to wear out American resolve by launching various raiding expeditions such as [[Tryon's raid|Tryon's raid against Connecticut]] in July 1779. In that year the Americans won two morale-enhancing victories by capturing posts at [[Battle of Stony Point|Stony Point]] and [[Battle of Paulus Hook|Paulus Hook]], although the British quickly retook them. In October 1779 the British voluntarily abandoned Newport and Stony Point in order to consolidate their forces. ||| Second phase, 1778–1781 ||| Northern theater after Saratoga, 1778–1781 ||| +-1 American Revolutionary War ||| Battle of Trenton ||| On July 2, 1776, the [[Continental Congress]] [[United States Declaration of Independence|formally voted for independence, and issued its Declaration on July 4]]. The British were meanwhile mustering forces to suppress the revolt. [[William Howe, 5th Viscount Howe|Sir William Howe]] outmaneuvered and defeated Washington, capturing New York City and New Jersey. Washington was able to [[Battle of Trenton|capture a Hessian detachment at Trenton]] and drive the British out of most of New Jersey. In 1777 Howe's army launched a campaign against the national capital at Philadelphia, failing to aid [[Saratoga Campaign|Burgoyne's separate invasion force from Canada]]. Burgoyne's army was trapped, and surrendered after the [[Battles of Saratoga]] in October 1777. This American victory encouraged France [[France in the American Revolutionary War|to enter the war in 1778]], followed by its ally Spain in 1779. ||| ||| ||| +-1 American Revolutionary War ||| Battle of White Marsh ||| The armies met at [[Battle of White Marsh|White Marsh]] in December, where after some skirmishing Howe decided to retire, ignoring the vulnerability of Washington's rear, where an attack could have cut off Washington from his baggage and provisions. ||| First phase, 1775–1778 ||| Campaigns of 1777–1778 ||| Pennsylvania +-1 American Revolutionary War ||| Battles of Saratoga ||| On July 2, 1776, the [[Continental Congress]] [[United States Declaration of Independence|formally voted for independence, and issued its Declaration on July 4]]. The British were meanwhile mustering forces to suppress the revolt. [[William Howe, 5th Viscount Howe|Sir William Howe]] outmaneuvered and defeated Washington, capturing New York City and New Jersey. Washington was able to [[Battle of Trenton|capture a Hessian detachment at Trenton]] and drive the British out of most of New Jersey. In 1777 Howe's army launched a campaign against the national capital at Philadelphia, failing to aid [[Saratoga Campaign|Burgoyne's separate invasion force from Canada]]. Burgoyne's army was trapped, and surrendered after the [[Battles of Saratoga]] in October 1777. This American victory encouraged France [[France in the American Revolutionary War|to enter the war in 1778]], followed by its ally Spain in 1779. ||| ||| ||| +-1 American Revolutionary War ||| Great Siege of Gibraltar ||| Spain entered the war as a French ally with the goal of recapturing [[Gibraltar]] and [[Minorca]], which had been captured by an Anglo-Dutch force in 1704. [[Great Siege of Gibraltar|Gibraltar was besieged]] for more than three years, but the British garrison stubbornly resisted and was resupplied twice: once after Admiral [[George Rodney|Rodney]]'s victory over [[Juan de Lángara]] in the 1780 [[Battle of Cape St. Vincent (1780)|'Moonlight Battle']], and again by Admiral [[Richard Howe, 1st Earl Howe|Richard Howe]] in 1782. Further Franco-Spanish efforts to capture Gibraltar were unsuccessful. One notable success took place on February 5, 1782, when Spanish and French forces [[Invasion of Minorca, 1781|captured Minorca]], which Spain retained after the war. Ambitious plans for an invasion of Great Britain in 1779 [[Armada of 1779|had to be abandoned]]. ||| Britain vs. France, Spain, Mysore, and Holland 1778–1783 ||| Europe ||| +-1 American Revolutionary War ||| Siege of Savannah ||| On December 29, 1778, an expeditionary corps from Clinton's army in New York captured [[Savannah, Georgia]]. An attempt by French and American forces to [[Siege of Savannah|retake Savannah]] failed on October 9, 1779. Clinton then [[siege of Charleston|besieged Charleston]], capturing it and most of the southern Continental Army on May 12, 1780. With relatively few casualties, Clinton had seized the South's biggest city and seaport, providing a base for further conquest. ||| Second phase, 1778–1781 ||| Georgia and the Carolinas, 1778–1781 ||| +-1 American Theater (World War II) ||| Aleutian Islands Campaign ||| This article includes attacks on continental territory, extending {{convert|200|miles}} into the ocean, which is today under the sovereignty of the [[United States]], [[Canada]], [[Mexico]], and several other smaller states. The best known events in North America during World War II were the [[Aleutian Islands Campaign]], the [[Battle of the St. Lawrence]], and the attacks on [[Newfoundland]]. ||| ||| ||| +-1 Anglo-Dutch Wars ||| Battle of Portland ||| After some inconclusive minor fights the English were successful in the first major battle, [[General at Sea]] [[Robert Blake (admiral)|Robert Blake]] defeating the Dutch Vice-Admiral [[Witte de With]] in the [[Battle of the Kentish Knock]] in October 1652. Believing that the war was all but over, the English divided their forces and in December were routed by the fleet of Lieutenant-Admiral Maarten Tromp at the [[Battle of Dungeness]] in the [[English Channel]]. The Dutch were also victorious in March 1653 at the [[Battle of Leghorn]] near Italy and had gained effective control of both the [[Mediterranean]] and the [[English Channel]]. Blake, recovering from an injury, rethought, together with [[George Monck, 1st Duke of Albemarle|George Monck]], the whole system of [[Naval tactics in the Age of Sail|naval tactics]], and after the winter of 1653 used the [[line of battle]], first to drive the Dutch navy out of the English Channel in the [[Battle of Portland]] and then out of the [[North Sea]] in the [[Battle of the Gabbard]]. The Dutch were unable to effectively resist as the [[States General of the Netherlands]] had not in time heeded the warnings of their admirals that much larger warships were needed. In the final [[Battle of Scheveningen]] on 10 August 1653 Tromp was killed, a blow to Dutch morale, but the English had to end their blockade of the Dutch coast. As both nations were by now exhausted and Cromwell had dissolved the warlike [[Rump Parliament]], ongoing peace negotiations could be brought to fruition, albeit after many months of slow diplomatic exchanges. ||| The first war (1652–1654) ||| ||| +-1 Anglo-Dutch Wars ||| Battle of Scheveningen ||| After some inconclusive minor fights the English were successful in the first major battle, [[General at Sea]] [[Robert Blake (admiral)|Robert Blake]] defeating the Dutch Vice-Admiral [[Witte de With]] in the [[Battle of the Kentish Knock]] in October 1652. Believing that the war was all but over, the English divided their forces and in December were routed by the fleet of Lieutenant-Admiral Maarten Tromp at the [[Battle of Dungeness]] in the [[English Channel]]. The Dutch were also victorious in March 1653 at the [[Battle of Leghorn]] near Italy and had gained effective control of both the [[Mediterranean]] and the [[English Channel]]. Blake, recovering from an injury, rethought, together with [[George Monck, 1st Duke of Albemarle|George Monck]], the whole system of [[Naval tactics in the Age of Sail|naval tactics]], and after the winter of 1653 used the [[line of battle]], first to drive the Dutch navy out of the English Channel in the [[Battle of Portland]] and then out of the [[North Sea]] in the [[Battle of the Gabbard]]. The Dutch were unable to effectively resist as the [[States General of the Netherlands]] had not in time heeded the warnings of their admirals that much larger warships were needed. In the final [[Battle of Scheveningen]] on 10 August 1653 Tromp was killed, a blow to Dutch morale, but the English had to end their blockade of the Dutch coast. As both nations were by now exhausted and Cromwell had dissolved the warlike [[Rump Parliament]], ongoing peace negotiations could be brought to fruition, albeit after many months of slow diplomatic exchanges. ||| The first war (1652–1654) ||| ||| +-1 Anglo-Dutch Wars ||| Raid on the Medway ||| This war, provoked in 1664, contained quite a few great English victories in battle such as James II's taking of the Dutch colony of [[New Netherland]] (present day New York), but also Dutch victories, such as the capture of the ''Prince Royal'' during the [[Four Days Battle]] in 1666 which was the subject of a famous painting by [[Willem van de Velde, the younger|Willem van de Velde]]. However, the [[Raid on the Medway]], in June 1667, ended the war with a Dutch victory. It is considered one of the most humiliating defeats in British military history: a flotilla of ships led by [[Michiel de Ruyter|Admiral de Ruyter]] sailed up the river Thames, broke through the defensive chains guarding the [[Medway]], burned part of the English fleet docked at [[Chatham, Kent|Chatham]] and towed away the [[HMS Unity|Unity]] and the [[Royal Charles]], pride and normal flagship of the English fleet. The greatly expanded Dutch navy was for numerous years after the world's strongest. The Dutch Republic was at the zenith of its power. ||| The second war (1665–1667) ||| ||| +-1 Anglo-Nepalese War ||| Battle of Nalapani ||| * [[Battle of Nalapani]] ||| See also ||| ||| +-1 Anglo-Persian War ||| Battle of Khushab ||| Outram advanced further on the 6th and 7th, but seeing the enemy retreat into the mountains beyond his reach and being short of rations, he decided not to risk a mountain pursuit but instead to fall back to the wells near Khoosh-Ab or [[Khvosh Ab, Bushehr|Khushab]] for a logistic pause, before returning to Bushire. The Persians, encouraged by the retreat of Havelock's forces, occupied with 8000 men a position dominating Outram's camp, catching the British in a potentially dangerous situation. Outram attacked this position on 7–8 February in the [[Battle of Khushab]], ultimately managed to inflict a defeat on the Persians in what turned out to be the largest battle of the war, with 70-200 Persian dead. ||| 1857 ||| Battle of Khushab ||| +-1 Anglo-Zulu War ||| Battle of Gingindlovu ||| While Woods was thus engaged, Chelmsford's column was marching on Eshowe. On 2 April this force was attacked en route at [[Battle of Gingindlovu|Gingindlovu]], the Zulu being repulsed. Their losses were heavy, estimated at 1,200 while the British only suffered two dead and 52 wounded. The next day they relieved Pearson's men. They evacuated Eshowe on 5 April, after which the Zulu forces burned it down. ||| British invasion and repulse ||| ||| +-1 Anglo-Zulu War ||| Battle of Intombe ||| On 12 March, an armed escort of stores marching to Luneberg, was defeated by about 500 Zulus at the [[Battle of Intombe]]; the British force suffered 80 killed and all the stores were lost. The first troops arrived at Durban on 7 March. On the 29th a column, under Lord Chelmsford, consisting of 3,400 British and 2,300 African soldiers, marched to the relief of [[Eshowe]], entrenched camps being formed each night. ||| British invasion and repulse ||| ||| +-1 Anti-austerity protests in Ireland ||| Occupy Cork ||| Occupy camps continued into 2012. [[Occupy Cork]] occupied the NAMA owned Stapleton House on [[Oliver Plunkett Street]]. By June 2012 all camps in the [[Republic of Ireland]] had been dismantled. 7 Members of Occupy Dame Street staged a demonstration in a [[Bank of Ireland]] branch in Dublin on 23 July, forcing it to temporarily close. ||| 2012 ||| ||| +-1 Apache Wars ||| Battle of Cookes Canyon ||| After the [[American Civil War]] began in April 1861, Mangas Coloradas and Cochise, his son-in-law, struck an alliance, agreeing to drive all Americans and Mexicans out of Apache territory. Their campaigns against the Confederates were the battles of [[Siege of Tubac|Tubac]], [[Battle of Cookes Canyon|Cookes Canyon]], [[Battle of the Florida Mountains|Florida Mountains]], [[Battle of Pinos Altos|Pinos Altos]] and [[Battle of Dragoon Springs|Dragoon Springs]]. Other Apache bands fought the Rebels as well; [[Mescalero Apache]] attacked and captured a herd of livestock at [[Fort Davis National Historic Site|Fort Davis]] on August 9, 1861, with the Apache killing two guards in the process. The Army sent out a patrol to try to retrieve the livestock, and the Apache killed them all. Mangas Coloradas and Cochise were joined in their campaign by the chief Juh and the notable warrior Geronimo. They thought that they had achieved some success when the Americans closed the Butterfield Overland Stagecoach and Army troops departed, but those actions were related to the beginning of the [[American Civil War]]. ||| Wars ||| Chiricahua Wars ||| +-1 Arab Revolt ||| Battle of Aqaba ||| In 1917, Lawrence arranged a joint action with the Arab irregulars and forces under [[Auda Abu Tayi]] (until then in the employ of the Ottomans) against the port city of [[Aqaba]]. This is now known as the [[Battle of Aqaba]]. Aqaba was the only remaining Ottoman port on the Red Sea and threatened the right flank of the [[Egyptian Expeditionary Force]] defending Egypt and preparing to advance into [[Sanjak]] Maan of the [[Syria Vilayet]]. Even as the Hashemite armies advanced, they still encountered sometimes fierce opposition from local residents. In July 1917, residents of the town of Karak fought against the Hashemite forces and turned them back. Later in the year British intelligence reports suggested that most of the tribes in the region east of the Jordan River were 'firmly in the Ottoman camp.' Allenby's victories led directly to the capture of [[Jerusalem]] just before Christmas 1917. ||| Conflicts ||| 1917 ||| +-1 Arab Spring ||| 2011 military intervention in Libya ||| *Government defeated by [[Libyan Civil War (2011)|armed revolt]] with [[United Nations Security Council Resolution 1973|UN-mandated]] [[2011 military intervention in Libya|military intervention]] ||| Timeline ||| Summary of conflicts by country ||| +-1 Arab Spring ||| Egyptian Revolution of 2011 ||| Others have argued that television, specifically the constant live coverage by ''[[Al Jazeera]]'' and the sporadic live coverage by [[BBC News]] and others, was highly important for the [[Egyptian Revolution of 2011]] as the cameras provided exposure and prevented mass violence by the Egyptian government in Tahrir Square, as opposed to the lack of such live coverage and the more widespread violence in Libya. The ability of protesters to focus their demonstrations on a single area and be covered live was fundamental in Egypt, but was not possible in Libya, Bahrain and Syria. ||| Analysis ||| Social media and the Arab Spring ||| +-1 Arab Spring ||| Libyan Civil War (2011) ||| *Government defeated by [[Libyan Civil War (2011)|armed revolt]] with [[United Nations Security Council Resolution 1973|UN-mandated]] [[2011 military intervention in Libya|military intervention]] ||| Timeline ||| Summary of conflicts by country ||| +-1 Arab separatism in Khuzestan ||| 2005 Ahvaz unrest ||| In 2005, a wide scale [[2005 Ahvaz unrest|unrest]] broke out in Ahvaz and the surrounding towns. Consequently, a series of [[Ahvaz bombings|bombings]] was carried out in Ahvaz and other cities in Iran, blamed upon Sunni Arab separatist groups of Khuzestan. ||| History ||| Civil unrests 2005-present ||| +-1 Arauco War ||| Battle of Andalien ||| In 1550, a new expedition was launched, consisting of a naval force under Pastene, and a land force of two hundred Spaniards mounted and foot and a number of [[Mapochoes|Mapocho]] auxiliaries under Valdivia. They planned to reunite on the shores of the Bay of Concepción. The expedition advanced beyond the [[Itata River]] and [[Laja River (Chile)|Laja River]], to the shores of the [[Bío-Bío River]]. Along the way they had several battles with groups of [[Mapuche]]s as they explored the region killing many with little loss to themselves. After spending over a week in the area and encountering increasing opposition, the Spanish marched toward the Sea through the valleys of the Laja and Bío-Bío rivers, towards the coast at Penco. On the banks of the [[Andalién River]], they camped for two days between the river and a lake, where they were attacked on the second night by a large force of [[Mapuche|Araucanians]] under their [[toqui]] [[Ainavillo]] in the [[Battle of Andalien]]. The night attack was defeated in a furious battle, the Spaniards suffered one killed and many wounds to men and especially their mounts. After a day treating their wounds they continued towards their rendezvous at the Bay of Concepción. There Valdivia began building a fort at what is now Penco. ||| Spanish conquest ||| Founding of Concepción, Imperial, and Valdivia ||| +-1 Armenian Genocide ||| Deportation of Armenian intellectuals on 24 April 1915 ||| The '''Armenian Genocide''' was the [[Imperial Government (Ottoman Empire)|Ottoman government]]'s systematic extermination of its minority [[Armenians|Armenian]] subjects inside their historic homeland, which lies within the territory constituting the present-day [[Turkey|Republic of Turkey]]. The total number of people killed as a result has been estimated at between 800,000 and 1.5 million. The starting date is conventionally held to be 24 April 1915, the day Ottoman authorities rounded up and arrested, subsequently executing, some [[Deportation of Armenian intellectuals on 24 April 1915|250 Armenian intellectuals and community leaders]] in [[Istanbul|Constantinople]]. ||| ||| ||| +-1 Austro-Prussian War ||| Battle of Bezzecca ||| The Austrians were more successful in their war with Italy, defeating the Italians on land at the [[Battle of Custoza (1866)|Battle of Custoza]] (June 24), and on sea at the [[Battle of Lissa (1866)|Battle of Lissa]] (July 20). However, Italy's '[[Hunters of the Alps]]' led by [[Giuseppe Garibaldi|Garibaldi]] defeated the Austrians at the [[Battle of Bezzecca]] on July 21, conquered the lower part of [[Trentino]], and moved towards [[Trento]]. The Prussian peace with Austria forced the Italian government to seek an armistice with Austria on August 12. According to the [[Treaty of Vienna (1866)|Treaty of Vienna]], signed on October 12, Austria ceded [[Venetia (region)|Venetia]] to France, which, in turn, ceded it to Italy (for details of operations in Italy, see [[Third Italian War of Independence]]). ||| Course of the war ||| ||| +-1 Austro-Prussian War ||| Battle of Custoza (1866) ||| The Austrians were more successful in their war with Italy, defeating the Italians on land at the [[Battle of Custoza (1866)|Battle of Custoza]] (June 24), and on sea at the [[Battle of Lissa (1866)|Battle of Lissa]] (July 20). However, Italy's '[[Hunters of the Alps]]' led by [[Giuseppe Garibaldi|Garibaldi]] defeated the Austrians at the [[Battle of Bezzecca]] on July 21, conquered the lower part of [[Trentino]], and moved towards [[Trento]]. The Prussian peace with Austria forced the Italian government to seek an armistice with Austria on August 12. According to the [[Treaty of Vienna (1866)|Treaty of Vienna]], signed on October 12, Austria ceded [[Venetia (region)|Venetia]] to France, which, in turn, ceded it to Italy (for details of operations in Italy, see [[Third Italian War of Independence]]). ||| Course of the war ||| ||| +-1 Austro-Prussian War ||| Battle of Gitschin ||| * 29 June, [[Battle of Gitschin]] (Jičín): Prussians defeat Austrians. ||| Course of the war ||| Major battles ||| +-1 Austro-Prussian War ||| Battle of Langensalza (1866) ||| Except for Saxony, the other German states allied to Austria played little role in the main campaign. Hanover's army defeated Prussia at the [[Battle of Langensalza (1866)|Second Battle of Langensalza]] on 27 June 1866, but, within a few days, they were forced to surrender by superior numbers. Prussian armies fought against Bavaria on the [[Main (river)|Main river]], reaching [[Nuremberg]] and [[Frankfurt]]. The Bavarian fortress of [[Würzburg]] was shelled by Prussian artillery, but the garrison defended its position until armistice day. ||| Course of the war ||| ||| +-1 Balkan Wars ||| Battle of Doiran (1913) ||| The Greek army was also successful. It retreated according to plan for two days while [[Thessaloniki]] was cleared of the remaining Bulgarian regiment. Then the Greek army counter-attacked and defeated the Bulgarians at [[Battle of Kilkis-Lahanas|Kilkis-Lahanas]] (Kukush), after which the mostly Bulgarian town was destroyed and its population expelled. The Greek army then divided its forces and advanced in two directions. Part proceeded east and occupied [[Western Thrace]]. The rest of the Greek army advanced up to the [[Struma River]] valley, defeating the Bulgarian army in the battles of [[Battle of Doiran (1913)|Doiran]] and Mt. Beles, and continued its advance to the north towards [[Sofia]]. In the [[Battle of Kresna Gorge|Kresna straits]] the Greeks were ambushed by the Bulgarian 2nd and 1st Army newly arrived from the Serbian front that had already taken defensive positions there following the Bulgarian victory at [[battle of Kalimanci|Kalimanci]]. ||| Second Balkan War ||| ||| +-1 Balkan Wars ||| First Balkan War ||| The [[First Balkan War]] broke out when the League member states attacked the Ottoman Empire on 8 October 1912 and ended seven months later by the [[Treaty of London (1913)|Treaty of London]] on 30 May 1913. (Five years later, the Ottoman Empire would lose virtually all of its possessions in the Balkans, as a result of WW-I). ||| ||| ||| +-1 Bangladesh Liberation War ||| 1971 Bangladesh genocide ||| }} ({{lang-bn|মুক্তিযুদ্ধ}} ''{{transl|bn|Muktijuddho}}''), also known as the '''Bangladesh War of Independence''', or simply the '''Liberation War''' in Bangladesh, was a [[revolution]] and [[armed conflict]] sparked by the rise of the [[Bengali nationalism|Bengali nationalist]] and [[self-determination]] movement in [[East Pakistan]] and the [[1971 Bangladesh genocide]]. It resulted in the [[independence]] of the [[People's Republic of Bangladesh]]. The war began after the [[Pakistan]]i [[military junta]] based in [[West Pakistan]] launched [[Operation Searchlight]] against the people of East Pakistan on the night of 25 March 1971. It pursued the systematic elimination of nationalist Bengali civilians, students, [[intelligentsia]], religious minorities and armed personnel. The junta annulled the results of the [[Pakistani general election, 1970|1970 election]]s and arrested [[Prime Minister-elect]] [[Sheikh Mujibur Rahman]]. ||| ||| ||| +-1 Bangladesh Liberation War ||| Indo-Pakistani War of 1971 ||| India joined the war on 3 December 1971, after Pakistan launched [[Operation Chengiz Khan|preemptive air strikes]] on North India. The subsequent [[Indo-Pakistani War of 1971|Indo-Pakistani War]] witnessed engagements on two war fronts. With [[air supremacy]] achieved in the eastern theatre; and the rapid advance of the [[Mitro Bahini|Allied Forces]] of Bangladesh and India, Pakistan [[Surrender of Pakistan|surrendered]] in Dacca on 16 December 1971. ||| ||| ||| +-1 Battle for Caen ||| Operation Goodwood ||| As part of a minor follow-up to [[Operation Goodwood]], [[The Calgary Highlanders]] had managed to establish preliminary positions on Verrières at Point 67, on the northern spur of the ridge. ||| Battle ||| Operation Atlantic ||| +-1 Battle of Belgium ||| Battle of Fort Eben-Emael ||| The Battle of Belgium included the first tank battle of the war, the [[Battle of Hannut]].{{sfn|Healy|2008|p=36}} It was the largest tank battle in history up to that date but was later surpassed by the battles of the [[North African campaign]] and the [[Eastern Front (World War II)|Eastern Front]]. The battle also included the [[Battle of Fort Eben-Emael]], the first strategic airborne operation using [[paratrooper]]s ever attempted. ||| ||| ||| +-1 Battle of Britain ||| Kanalkampf ||| * 10 July – 11 August: ''[[Kanalkampf]]'' ('the Channel battles') ||| Phases of the battle ||| ||| +-1 Battle of Britain ||| The Hardest Day ||| 18 August, which had the greatest number of casualties to both sides, has been dubbed '[[The Hardest Day]]'. Following this grinding battle, exhaustion and the weather reduced operations for most of a week, allowing the Luftwaffe to review their performance. 'The Hardest Day' had sounded the end for the Ju 87 in the campaign. This veteran of ''Blitzkrieg'' was too vulnerable to fighters to operate over Britain. So as to preserve the ''Stuka'' force, Göring withdrew them from the fighting. This removed the main Luftwaffe precision-bombing weapon and shifted the burden of pinpoint attacks on the already-stretched ''Erpro'' 210. The Bf 110 proved too clumsy for dogfighting with single-engined fighters, and its participation was scaled back. It would only be used when range required it or when sufficient single-engined escort could not be provided for the bombers. ||| Phases of the battle ||| Main assault ||| +-1 Battle of Crete ||| Battle of 42nd Street ||| Troops of the German 141st Mountain Regiment blocked a section of the road between Souda and Chania. On the morning of 27 May, the New Zealand [[Māori Battalion|28th (Māori) Battalion]], the [[2/7th Australian Infantry Battalion|Australian 2/7th Battalion]] and the [[2/8th Australian Infantry Battalion|Australian 2/8th Battalion]] cleared the road by a [[Bayonet|bayonet charge]] (the '[[Battle of 42nd Street]]'). Freyberg concurrently ordered his troops to withdraw to the south coast to be evacuated. ||| Battle ||| 23–27 May ||| +-1 Battle of France ||| Battle of the Grebbeberg ||| The French 7th Army failed to block the German armoured reinforcements from the [[9th Panzer Division (Wehrmacht)|9th ''Panzer'' division]], which reached [[Rotterdam]] on 13 May. That same day in the east, following the [[Battle of the Grebbeberg]] in which a Dutch counter-offensive to contain a German breach had failed, the Dutch retreated from the [[Grebbe line]] to the New Water Line. The Dutch Army, still largely intact, surrendered in the evening of 14 May after the [[Rotterdam Blitz|Bombing of Rotterdam]] by the ''Luftwaffe''. [[Heinkel He 111]] medium bombers of [[Kampfgeschwader 54|''Kampfgeschwader'' 54]] (Bomber Wing 54) destroyed the centre of the city, an act which has remained controversial. The Dutch Army considered its strategic situation to have become hopeless and feared further destruction of the major Dutch cities. The capitulation document was signed on 15 May. However, Dutch forces continued fighting [[Battle of Zeeland|in Zeeland]] (where the French army had entered) and in the [[Dutch empire|colonies]] while [[Wilhelmina of the Netherlands|Queen Wilhelmina]] established a [[government in exile]] in Britain. ||| ''Fall Gelb'' ||| Northern front ||| The Netherlands +-1 Battle of France ||| Dunkirk evacuation ||| The '''Battle of France''', also known as the '''Fall of France''', was the German invasion of [[France]] and the [[Low Countries]] during the [[World War II|Second World War]], beginning on 10 May 1940, defeating primarily French forces. The battle consisted of two main operations. In the first, ''Fall Gelb'' (Case Yellow), German armoured units pushed through the [[Ardennes]] and then along the [[Somme (river)|Somme]] valley to cut off and [[Encirclement|surround]] the [[Allies of World War II|Allied]] units that had advanced into Belgium. When British, Belgian and adjacent French forces were pushed back to the sea by the highly mobile and well-organized German operation, the British government decided to evacuate the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) as well as several French divisions at [[Battle of Dunkirk|Dunkirk]] in [[Dunkirk evacuation|Operation Dynamo]]. ||| ||| ||| +-1 Battle of France ||| Italian invasion of France ||| Adding to this grave situation, [[Kingdom of Italy (1861–1946)|Italy]] declared war on France and Britain on 10 June. Italy was not prepared for war and made little impact during the last two weeks of fighting in the [[Italian invasion of France]]. Italian dictator [[Benito Mussolini]] was aware of this and sought to profit from German successes. ||| ''Fall Rot'' ||| French problems ||| +-1 Battle of France ||| Rotterdam Blitz ||| The French 7th Army failed to block the German armoured reinforcements from the [[9th Panzer Division (Wehrmacht)|9th ''Panzer'' division]], which reached [[Rotterdam]] on 13 May. That same day in the east, following the [[Battle of the Grebbeberg]] in which a Dutch counter-offensive to contain a German breach had failed, the Dutch retreated from the [[Grebbe line]] to the New Water Line. The Dutch Army, still largely intact, surrendered in the evening of 14 May after the [[Rotterdam Blitz|Bombing of Rotterdam]] by the ''Luftwaffe''. [[Heinkel He 111]] medium bombers of [[Kampfgeschwader 54|''Kampfgeschwader'' 54]] (Bomber Wing 54) destroyed the centre of the city, an act which has remained controversial. The Dutch Army considered its strategic situation to have become hopeless and feared further destruction of the major Dutch cities. The capitulation document was signed on 15 May. However, Dutch forces continued fighting [[Battle of Zeeland|in Zeeland]] (where the French army had entered) and in the [[Dutch empire|colonies]] while [[Wilhelmina of the Netherlands|Queen Wilhelmina]] established a [[government in exile]] in Britain. ||| ''Fall Gelb'' ||| Northern front ||| The Netherlands +-1 Battle of Imphal ||| Battle of Sangshak ||| Meanwhile, Imphal had been left vulnerable to the Japanese 15th Division. The only force left covering the northern approaches to the base, Indian 50th Parachute Brigade, was roughly handled in the [[Battle of Sangshak]] by a regiment from the Japanese 31st Division on its way to Kohima. The Japanese 60th Regiment cut the main road a few miles north of Imphal on 28 March, while the 51st Regiment advanced on Imphal from the north-east, down the valley of the [[Iril River]] and a track from Litan, {{convert|23|mi|km}} north-east of Imphal. ||| Opening phases of the battle ||| Sangshak-Litan ||| +-1 Battle of Leyte Gulf ||| Battle off Samar ||| The battle consisted of four separate engagements between the opposing forces: the [[Battle of Leyte Gulf#The Battle of the Sibuyan Sea .2824 October.29|Battle of the Sibuyan Sea]], the [[Battle of Leyte Gulf#Battle of Surigao Strait (25 October)|Battle of Surigao Strait]], the [[Battle of Leyte Gulf#The Battle of Cape Enga. C3.B1o .2825.E2.80.9326 October.29|Battle of Cape Engaño]] and the [[Battle off Samar]], as well as other actions. ||| ||| ||| +-1 Battle of the Barracks ||| Siege of Bjelovar Barracks ||| On 29 September, Croatian forces captured two barracks and three storage depots in and around [[Bjelovar]] after a [[Siege of Bjelovar Barracks|day-long battle]], while the fourth storage facility was blown up by its commanding officer, JNA [[Major]] [[Milan Tepić]]. The explosion killed all the defenders and 11 members of the besieging force. It was heard {{convert|20|km|abbr=off}} away and caused damage in nearby villages. ||| Timeline ||| September ||| +-1 Battle of the Bulge ||| Battle of Elsenborn Ridge ||| The Germans achieved total surprise on the morning of 16 December 1944 due to a combination of Allied overconfidence, preoccupation with Allied offensive plans, and poor [[aerial reconnaissance]]. The Germans attacked a weakly defended section of the Allied line, taking advantage of heavily overcast weather conditions, which grounded the Allies' overwhelmingly superior air forces. Fierce resistance on the northern shoulder of the offensive around [[Battle of Elsenborn Ridge|Elsenborn Ridge]] and in the south around [[Bastogne]] blocked German access to key roads to the northwest and west that they counted on for success. Columns of armor and infantry that were supposed to advance along parallel routes found themselves on the same roads. This and terrain that favored the defenders threw the German advance behind schedule and allowed the Allies to reinforce the thinly placed troops. Improved weather conditions permitted air attacks on German forces and [[supply line]]s, which sealed the failure of the offensive. In the wake of the defeat, many experienced German units were left severely depleted of men and equipment, as survivors retreated to the defenses of the [[Siegfried Line]]. ||| ||| ||| +-1 Battle of the Marshes ||| Operation Kheibar ||| After heavy losses at the beginning due to [[human wave]] attacks, 15,000 casualties and little progress, Iran began developing new tactics, involving [[amphibious assault]], and deployed a regular army division, the [[92nd Armored Division (Iran)|92nd Armored Division]]. Although the Iranians suffered heavy losses against the Iraqi artillery, tanks, air strikes and gunboats, Iran eventually managed to invade the oil rich [[Majnoun Islands]] with [[Operation Kheibar]] and nearly break the Iraqi lines before being driven back to the marshes and Majnoon Island. ||| ||| ||| +-1 Battle of the Mediterranean ||| Battle of Calabria ||| The first clash between the rival fleets—the [[Battle of Calabria]]—took place on 9 July, just four weeks after the start of hostilities. This was inconclusive, and was followed by a series of small surface actions during the summer, among them the [[Battle of the Espero Convoy|battle of the ''Espero'' convoy]] and the [[battle of Cape Spada]]. ||| History ||| First actions ||| +-1 Battle of the Mediterranean ||| Battle of Cape Passero (1940) ||| *12 October, the [[Battle of Cape Passero (1940)|Battle of Cape Passero]]. One destroyer and two Italian torpedo boats sunk, the cruiser {{HMS|Ajax|22|6}} seriously damaged. ||| Major naval actions of the campaign ||| 1940 ||| +-1 Battle of the Mediterranean ||| Battle of Skerki Bank ||| *2 December, the [[Battle of Skerki Bank]]. Italian convoy is attacked and destroyed. ||| Major naval actions of the campaign ||| 1942 ||| +-1 Battle of the Mediterranean ||| Battle of Taranto ||| *11 November, the [[Battle of Taranto]]. An aerial attack on the Italian fleet in harbour, three battleships are sunk in shallow waters, one of them is disabled for the rest of the war. ||| Major naval actions of the campaign ||| 1940 ||| +-1 Battle of the Mediterranean ||| First Battle of Sirte ||| Following the battle of Crete in the summer of 1941, the Royal Navy regained its ascendancy in the central Mediterranean in a series of successful convoy attacks, (including the [[Battle of the Duisburg Convoy|''Duisburg'' convoy]] and [[Battle of Cape Bon (1941)|Cap Bon]]), until the events surrounding the [[First Battle of Sirte]] and the [[Raid on Alexandria (1941)|Raid on Alexandria]] in December swung the balance of power towards the Axis. ||| History ||| Later actions ||| +-1 Battle of the Mediterranean ||| Raid on Algiers ||| *11 December, the [[Raid on Algiers]]. Manned torpedoes attack Allied shipping, two steamships are sunk. ||| Major naval actions of the campaign ||| 1942 ||| +-1 Battle of the Mediterranean ||| Scuttling of the French fleet in Toulon ||| In 1942, as part of the occupation of Vichy France during '[[Case Anton]]', the Germans intended to capture the French fleet at [[Toulon]]. This was thwarted by determined action by French commanders; the [[Scuttling of the French fleet in Toulon|bulk of the fleet was scuttled at anchor]]. ||| Main Combatants ||| Vichy French Fleet ||| +-1 Battle of the Mediterranean ||| Second Battle of Sirte ||| A series of hard fought convoy battles (such as the [[Second Battle of Sirte]] in March, Operations [[Operation Harpoon (1942)|''Harpoon'']] and [[Operation Vigorous|''Vigorous'']] in June and Operation ''Pedestal'' in August), ensured Malta's survival until the Allies regained the advantage in November 1942. ||| History ||| Later actions ||| +-1 Battle of the Netherlands ||| Rotterdam Blitz ||| The battle ended soon after the devastating [[Rotterdam Blitz|bombing of Rotterdam]] by the German Luftwaffe and the subsequent threat by the Germans to bomb other large Dutch cities if Dutch forces refused to surrender. The Dutch General Staff knew it could not stop the bombers and surrendered in order to prevent other cities from suffering the same fate. The Netherlands remained under German occupation until 1945, when the last Dutch territory was liberated. ||| ||| ||| +-1 Black Hawk War ||| Battle of Bad Axe ||| Commanded by General [[Henry Atkinson (soldier)|Henry Atkinson]], the US troops tracked the British Band. Militia under Colonel [[Henry Dodge]] caught up with the British Band on July 21 and defeated them at the [[Battle of Wisconsin Heights]]. Black Hawk's band was weakened by hunger, death, and desertion and many native survivors retreated towards the Mississippi. On August 2, US soldiers attacked the remnants of the British Band at the [[Battle of Bad Axe]], killing many or capturing most who remained alive. Black Hawk and other leaders escaped, but later surrendered and were imprisoned for a year. ||| ||| ||| +-1 Bosnian War ||| Bosnian Genocide ||| In a statement in September 2008 to the [[United Nations General Assembly]], Dr [[Haris Silajdžić]], said that 'According to the [[International Committee of the Red Cross|ICRC]] data, 200,000 people were killed, 12,000 of them children, up to 50,000 women were raped, and 2.2 million were forced to flee their homes. This was a veritable [[Bosnian Genocide|genocide]] and sociocide'. ||| Impact of the war ||| Casualties ||| Other statistics +-1 Bosnian War ||| Operation Mistral 2 ||| The [[International Criminal Tribunal for the former Yugoslavia|ICTY]] ruled this event as genocide in the ''Krstić'' case. In line with the Croat-Bosniak [[Split Agreement]], Croatian forces operated in western Bosnia in [[Operation Summer '95]] and in early August launched [[Operation Storm]], taking over the [[Republic of Serbian Krajina|Serb Krajina]] in Croatia. With this, the Bosniak-Croat alliance gained the initiative in the war, taking much of western Bosnia from the VRS in several operations, including: [[Operation Mistral 2]] and [[Operation Sana]]. VRS forces committed several major massacres during 1995: the [[Tuzla massacre]] on 25 May, the [[Srebrenica massacre]] and the second [[Markale massacre]] on 28 August. On 30 August, the [[Secretary General of NATO]] announced the start of in [[Operation Deliberate Force]], widespread airstrikes against Bosnian Serb positions supported by UNPROFOR rapid reaction force artillery attacks. ||| Course of the war ||| 1995 ||| +-1 Bosnian War ||| Operation Sana ||| The [[International Criminal Tribunal for the former Yugoslavia|ICTY]] ruled this event as genocide in the ''Krstić'' case. In line with the Croat-Bosniak [[Split Agreement]], Croatian forces operated in western Bosnia in [[Operation Summer '95]] and in early August launched [[Operation Storm]], taking over the [[Republic of Serbian Krajina|Serb Krajina]] in Croatia. With this, the Bosniak-Croat alliance gained the initiative in the war, taking much of western Bosnia from the VRS in several operations, including: [[Operation Mistral 2]] and [[Operation Sana]]. VRS forces committed several major massacres during 1995: the [[Tuzla massacre]] on 25 May, the [[Srebrenica massacre]] and the second [[Markale massacre]] on 28 August. On 30 August, the [[Secretary General of NATO]] announced the start of in [[Operation Deliberate Force]], widespread airstrikes against Bosnian Serb positions supported by UNPROFOR rapid reaction force artillery attacks. ||| Course of the war ||| 1995 ||| +-1 Bosnian War ||| Operation Storm ||| The [[International Criminal Tribunal for the former Yugoslavia|ICTY]] ruled this event as genocide in the ''Krstić'' case. In line with the Croat-Bosniak [[Split Agreement]], Croatian forces operated in western Bosnia in [[Operation Summer '95]] and in early August launched [[Operation Storm]], taking over the [[Republic of Serbian Krajina|Serb Krajina]] in Croatia. With this, the Bosniak-Croat alliance gained the initiative in the war, taking much of western Bosnia from the VRS in several operations, including: [[Operation Mistral 2]] and [[Operation Sana]]. VRS forces committed several major massacres during 1995: the [[Tuzla massacre]] on 25 May, the [[Srebrenica massacre]] and the second [[Markale massacre]] on 28 August. On 30 August, the [[Secretary General of NATO]] announced the start of in [[Operation Deliberate Force]], widespread airstrikes against Bosnian Serb positions supported by UNPROFOR rapid reaction force artillery attacks. ||| Course of the war ||| 1995 ||| +-1 Bosnian War ||| Siege of Sarajevo ||| It was principally a territorial conflict, initially between the Serb forces mainly organized in the [[Army of Republika Srpska]] (VRS) on the one side, and the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH) which was largely composed of Bosniaks, and the Croat forces in the [[Croatian Defence Council]] (HVO) on the other side. The Croats also aimed at securing parts of Bosnia and Herzegovina as Croatian. forces. Events such as the [[Siege of Sarajevo]] and the [[Srebrenica massacre]] later became iconic of the conflict. ||| ||| ||| +-1 Boxer Rebellion ||| Battle of Peking (1900) ||| The Muslim Gansu Braves under the general [[Ma Fulu]] engaged in fierce fighting during the [[Battle of Peking (1900)|Battle of Peking]] at [[Zhengyangmen|Zhengyang Gate]] against the Eight Nation Alliance. Ma Haiyan died of exhaustion after the imperial court reached its destination, and his son [[Ma Qi]] took over his posts. ||| Boxer War ||| Evacuation of the Qing imperial court from Beijing to Xi'an ||| +-1 Boxer Rebellion ||| Siege of the International Legations ||| Chinese officialdom was split between those supporting the Boxers and those favoring conciliation, led by [[Yikuang, Prince Qing|Prince Qing]]. The supreme commander of the Chinese forces, the Manchu General [[Ronglu]] (Junglu), later claimed that he acted to protect the besieged foreigners. The [[Eight-Nation Alliance]], after being initially turned back, brought 20,000 armed troops to China, defeated the Imperial Army, and captured Beijing on August{{nbsp}}14, lifting the [[Siege of the International Legations|siege of the Legations]]. Uncontrolled plunder of the capital and the surrounding countryside ensued, along with the summary execution of those suspected of being Boxers. ||| ||| ||| +-1 Brabant Revolution ||| Battle of Falmagne ||| By mid-1790, Habsburg Austria ended [[Austro-Turkish War (1787–91)|its war with the Ottoman Empire]] and prepared to suppress the Brabant revolutionaries. The new [[Holy Roman Emperor]], [[Leopold II, Holy Roman Emperor|Leopold II]], was a liberal like his predecessor but proposed an amnesty for the rebels. After defeating a Statist army at the [[Battle of Falmagne]], the territory was quickly overrun by Holy Roman forces and the revolution was defeated by December. The Austrian reestablishment was short-lived, however, and the territory was soon overrun by the French during the [[French Revolutionary Wars]]. ||| ||| ||| +-1 Bruce campaign in Ireland ||| Battle of Faughart ||| The '''Bruce campaign''' was a three-year military campaign by [[Edward Bruce]], brother of the Scottish king [[Robert the Bruce]], in Ireland. It lasted from his landing at [[Larne]] in 1315 to his defeat and death in 1318 at the [[Battle of Faughart]] in [[County Louth]]. ||| ||| ||| +-1 Brusilov Offensive ||| Battle of Kowel ||| Finally, on June 18 a weak and poorly prepared offensive commenced under Evert. On July 24 [[Alexander von Linsingen]] [[Battle of Kowel|counterattacked]] the Russians south of Kovel and temporarily checked them. On July 28 Brusilov resumed his own offensive, and although his armies were short on supplies he reached the [[Carpathian Mountains]] by September 20. The Russian high command started transferring troops from Evert's front to reinforce Brusilov, a transfer Brusilov strongly opposed because more troops only served to clutter his front. ||| Battle ||| ||| +-1 Caucasian War ||| Russo-Circassian War ||| Russian control of the [[Georgian Military Highway]] in the center divided the Caucasian War into the [[Russo-Circassian War]] in the west and the [[Murid]] War in the east. ||| ||| ||| +-1 Caucasus Campaign ||| Battle of Ardahan ||| On December 15, 1914, at the [[Battle of Ardahan]] the city Ardanuch was captured. It was an operation commanded by German Lt. Col. Stange. The mission of Stange Bey Detachment was to conduct highly visible operations to distract and pin Russian units. Stange Bey's initial mission was to operate in the Chorok region. The unit was materially assisted by the rebellious Adjars of the country, who seized the road. Later Enver modified the original plan toward supporting the Battle of Sarikamish. It was ordered to cut the Russian support link to Sarikamish-Kars line. On January 1, this unit was in Ardahan. ||| Operations ||| 1914 ||| +-1 Caucasus Campaign ||| Battle of Manzikert (1915) ||| By June 13, Russian units were back to their starting line. On June 19, the Russians launched another offensive. This time northwest to Lake Van. The Russians, under Oganovski, launched an offense into the hills west of Manzikert. The Russians underestimated the size of the Ottoman arm, and were surprised by a large Turkish force at the [[Battle of Manzikert (1915)|counterattack]]. Russian forces began to march from Manzikert towards Mush. However, they were not aware of the fact that the Turkish IX Corps, together with the 17th and 28th Divisions was moving to Mush as well. Although the conditions were extremely difficult, the Turks were executing a very efficient operation of reorganization. 1st and 5th Expeditionary Forces were positioned to the south of the Russian offensive force and a “Right Wing Group” was established under the command of Brigadier General Abdülkerim Paşa. This group was independent from the Third Army and Abdülkerim Paşa was directly reporting to Enver Paşa. The Turks were ready to face the Russian attacks. ||| Operations ||| 1915 ||| +-1 Chilean War of Independence ||| Battle of El Toro ||| As San Martín worked to establish internal stability, O'Higgins also looked to defend the country against further external threats by the Spanish and continue to roll back imperial control. He developed the Chilean navy as a line of defense against seaborne attacks, placing the [[Scotland|Scotsman]] [[Thomas Cochrane, 10th Earl of Dundonald|Lord Cochrane]] in the post of admiral. In 1820, Cochrane administered a stunning blow to the remaining royalist forces in a [[capture of Valdivia|successful attack]] on a [[Valdivian fort system|complex of fortifications at Valdivia]]. Later Cochrane disembarked troops under commander [[William Miller (Peruvian general)|William Miller]] at northern [[Chiloé Island]] in order to conquer the last Spanish stronghold in Chile, the [[Archipelago of Chiloé]]. This failed attempt ended in the minor but significant [[Battle of Agüi]]. Later on, [[Georges Beauchef]] headed from Valdivia an expedition to secure [[Osorno, Chile|Osorno]] so that the Spanish would not reoccupy Valdivia from the land. Beauchef inflicted a decisive defeat on the royalists at the [[Battle of El Toro]]. ||| Patria Nueva ||| Incorporation of Valdivia and Chiloé ||| +-1 Chilean War of Independence ||| Second Battle of Cancha Rayada ||| During the preceding time, [[Joaquín de la Pezuela]] was installed as a new viceroy in Peru. He resolved to recall his son-in-law, [[Mariano Osorio]], sending him south with another expeditionary force. The troops disembarked at Concepcion, and recruited a number of Amerindians to join their ranks. Meanwhile, Bernardo O'Higgins moved north to somehow stop the advance of the royalists. However, his forces were surprised and very badly beaten at the [[Second Battle of Cancha Rayada]] on March 18, 1818. In the confusion, a false rumor spread that San Martin and O'Higgins had died, and a panic seized the patriot troops, many of whom agitated for a full retreat back across the Andes to Mendoza. In these critical circumstances, the erstwhile Manuel Rodríguez jumped to the lead, haranguing and rallying the soldiers with the cry '''There's still a country, citizens!''' He named himself Supreme Director, a position which he would occupy for exactly 30 hours, which was the time the living, but wounded, O'Higgins took to return to Santiago and reclaim command. ||| Patria Nueva ||| ||| +-1 Chincha Islands War ||| Battle of Papudo ||| Even before Chile and Peru were formally allied, Spain had suffered a humiliating naval defeat at the [[Battle of Papudo|Naval Battle of Papudo]] on November 26, 1865. During this engagement, the Chilean corvette ''[[Esmeralda (1855)|Esmeralda]]'' captured the Spanish schooner ''[[Covadonga (ship)|Covadonga]]'', taking the crew prisoner and seizing the Admiral's war correspondence. This humiliation was too much for Admiral [[Juan Manuel Pareja|Pareja]], and he committed suicide two days later aboard his flagship.{{sfn|Farcau|2000|p=17}} Following the Admiral's death, the general command of the Spanish fleet in the [[Pacific]] was assumed by Commodore [[Casto Méndez Núñez]], who quickly received a promotion to rear admiral. ||| War with Chile ||| Naval battle of Papudo ||| +-1 Chinese Civil War ||| Huaihai Campaign ||| This strategy enabled the CPC to access an almost unlimited supply of manpower for both combat and logistical purposes, despite suffering heavy casualties throughout many of the war's campaigns. For example, during the [[Huaihai Campaign]] alone the CPC was able to mobilize 5,430,000 peasants to fight against the KMT forces. ||| Resumed fighting (1946&ndash;1950) ||| Background and disposition of forces ||| +-1 Chinese Civil War ||| Landing Operation on Hainan Island ||| The Communists' other amphibious operations of 1950 were more successful: they led to the [[Landing Operation on Hainan Island|Communist conquest of Hainan Island]] in April 1950, [[Wanshan Archipelago Campaign|capture of Wanshan Islands]] off the [[Guangdong]] coast (May–August 1950) and of [[Zhoushan Island]] off [[Zhejiang]] (May 1950). ||| Resumed fighting (1946&ndash;1950) ||| Fighting subsides ||| +-1 Chinese Civil War ||| New Fourth Army incident ||| The situation came to a head in late 1940 and early 1941 when clashes between Communist and KMT forces intensified. In December 1940 Chiang demanded that the CPC's [[New Fourth Army]] evacuate [[Anhui]] and [[Jiangsu]] Provinces due to its provocation and harassment of KMT forces in this area. Under intense pressure, the New Fourth Army commanders complied. In 1941 they were [[New Fourth Army incident|ambushed]] by KMT forces during their evacuation, which led to several thousand deaths. ||| Second Sino-Japanese War (1937&ndash;1945) ||| ||| +-1 Chinese Civil War ||| Northern Expedition ||| File:Nationalist China 1929 - 1937.PNG|Situation in China in 1929: After the [[Northern Expedition]], the KMT had direct control over east-central China, while the rest of China proper and Manchuria was under the control of warlords loyal to the Nationalist government. ||| Communist insurgency (1927&ndash;1937) ||| ||| +-1 Cisplatine War ||| Battle of Juncal ||| Ituzaingó was the only battle of some magnitude in the whole war. A series of smaller clashes ensued, including the [[Battle of Sarandí]], and the naval Battles of [[Battle of Juncal|Juncal]] and [[Battle of Monte Santiago|Monte Santiago]]. Scarcity of volunteers severely hampered Brazilian response, and by 1828 the war effort had become extremely burdensome and increasingly unpopular in Brazil. That year, Rivera reconquered the territory of the former Eastern Jesuit Missions. ||| Conflict ||| ||| +-1 Cisplatine War ||| Battle of Monte Santiago ||| Ituzaingó was the only battle of some magnitude in the whole war. A series of smaller clashes ensued, including the [[Battle of Sarandí]], and the naval Battles of [[Battle of Juncal|Juncal]] and [[Battle of Monte Santiago|Monte Santiago]]. Scarcity of volunteers severely hampered Brazilian response, and by 1828 the war effort had become extremely burdensome and increasingly unpopular in Brazil. That year, Rivera reconquered the territory of the former Eastern Jesuit Missions. ||| Conflict ||| ||| +-1 Creek War ||| Battle of Burnt Corn ||| The first clashes between the Red Sticks and United States forces occurred on July 21, 1813. A group of territorial militia intercepted a party of Red Sticks returning from [[Spanish Florida]], where they had acquired arms from the Spanish governor at [[Pensacola]]. The Red Sticks escaped and the soldiers looted what they found. Seeing the Americans looting, the Creek regrouped and attacked and defeated the Americans. The [[Battle of Burnt Corn]], as the exchange became known, broadened the Creek Civil War to include American forces. <!--(Ehle p. 104-105)--> ||| Course of the war ||| ||| +-1 Creek War ||| Battle of Horseshoe Bend (1814) ||| Jackson spent the next month building roads and training his force. In mid March, he moved against the Red Stick force concentrated on the [[Tallapoosa River|Tallapoosa]] at Tohopeka (Horseshoe Bend). He first moved south along the [[Coosa River|Coosa]], about half the distance to the Creek position, and established a new outpost at [[Fort Williams (Alabama)|Fort Williams]]. Leaving another garrison there, he then moved on Tohopeka with a force of about 3,000 effectives augmented by 600 Cherokee and Lower Creek allies. The [[Battle of Horseshoe Bend (1814)|Battle of Horseshoe Bend]], which occurred on March 27, was a decisive victory for Jackson, effectively ending the Red Stick resistance. <!--(Adams 795-796)--> ||| Course of the war ||| Tennessee campaign ||| +-1 Creek War ||| Battle of Talladega ||| Jackson departed [[Fayetteville, Tennessee]] on October 7, 1813. He joined his cavalry in [[Huntsville, Alabama|Huntsville]] and crossed the Tennessee, establishing [[Fort Deposit]]. He then marched to the Coosa and built his advanced base at [[Fort Strother]]. Jackson's first successful actions, the battles of [[Battle of Tallushatchee|Tallushatchee]] and [[Battle of Talladega|Talladega]], occurred in November. <!--(Adams pp. 784-786, Mahon pp. 236-237)--> ||| Course of the war ||| Tennessee campaign ||| +-1 Creek War ||| Battle of Tallushatchee ||| Jackson departed [[Fayetteville, Tennessee]] on October 7, 1813. He joined his cavalry in [[Huntsville, Alabama|Huntsville]] and crossed the Tennessee, establishing [[Fort Deposit]]. He then marched to the Coosa and built his advanced base at [[Fort Strother]]. Jackson's first successful actions, the battles of [[Battle of Tallushatchee|Tallushatchee]] and [[Battle of Talladega|Talladega]], occurred in November. <!--(Adams pp. 784-786, Mahon pp. 236-237)--> ||| Course of the war ||| Tennessee campaign ||| +-1 Crimean War ||| Battle of Eupatoria ||| * [[Battle of Eupatoria]], 17 February 1855 ||| Chronology of major battles of the war ||| ||| +-1 Crimean War ||| Battle of Kinburn (1855) ||| In April 1855, they supported an invasion of [[Kerch]] and operated against [[Siege of Taganrog|Taganrog]] in the [[Sea of Azov]]. In September they moved against Russian installations in the [[Dnieper]] estuary, [[Battle of Kinburn (1855)|attacking Kinburn]] in the first use of [[ironclad]] ships in naval warfare. ||| Battles ||| Black Sea theatre ||| +-1 Crimean War ||| Battle of Sinop ||| The Russians sent a [[Russian Navy|fleet]] to Sinop in northern [[Anatolia]]. In the [[Battle of Sinop]] on 30 November 1853 they destroyed a patrol squadron of Ottoman [[frigate]]s and [[corvette]]s while they were anchored in port. Public opinion in the UK and France was outraged and demanded war. Sinop provided the United Kingdom and France with the ''[[casus belli]]'' ('cause for war') for declaring war against Russia. On 28 March 1854, after Russia ignored an Anglo-French ultimatum to withdraw from the Danubian Principalities, the UK and France formally declared war. ||| The 'Eastern Question' ||| First hostilities ||| Battle of Sinop +-1 Crimean War ||| Battle of Suomenlinna ||| In August 1855, [[Battle of Bomarsund|Russian Bomarsund fortress]] on [[Åland|Åland Island]]s was captured and destroyed by a combined British and French navy force. In the same month, the Western Allied Baltic Fleet [[Battle of Suomenlinna|tried to destroy heavily defended Russian dockyards at Sveaborg]] outside [[Helsinki]]. More than 1000 enemy guns tested the strength of the fortress for two days. Despite the shelling, the sailors of the 120-gun ship ''Rossiya'', led by Captain Viktor Poplonsky, defended the entrance to the harbor. The Allies fired over 20,000 shells but were unable to defeat the Russian batteries. A massive new fleet of more than 350 gunboats and mortar vessels was prepared, but before the attack was launched, the war ended. ||| Battles ||| Baltic theatre ||| +-1 Crimean War ||| Charge of the Light Brigade ||| The Crimean War was one of the first conflicts to use modern technologies such as explosive naval [[Shell (projectile)|shells]], railways, and [[Telegraphy|telegraph]]s. {{rp|at=Preface}} The war was one of the first to be documented extensively in written reports and [[war photography|photographs]]. As the legend of the '[[Charge of the Light Brigade]]' demonstrates, the war quickly became an iconic symbol of logistical, medical and tactical failures and mismanagement. The reaction in the UK was a demand for professionalization, most famously achieved by [[Florence Nightingale]], who gained worldwide attention for pioneering modern nursing while treating the wounded. ||| ||| ||| +-1 Croatian War of Independence ||| Operation Medak Pocket ||| [[Operation Medak Pocket]] took place in a [[Salients, re-entrants and pockets|salient]] south of Gospić, from September 9–17. The offensive was undertaken by the Croatian army to stop Serbian artillery in the area from shelling nearby Gospić. ||| Course of the war ||| 1993: Croatian military advances ||| +-1 Croatian War of Independence ||| Pakrac clash ||| The conflict escalated into armed incidents in the majority-Serb populated areas. The Serbs [[Pakrac clash|attacked Croatian police units]] in Pakrac in early March, ||| Course of the war ||| 1991: Open hostilities begin ||| First armed incidents +-1 Croatian War of Independence ||| Vukovar massacre ||| The [[Vukovar massacre]] took place in November; ||| Course of the war ||| 1991: Open hostilities begin ||| Peak of the war +-1 Cuban Revolution ||| Battle of Santa Clara ||| On 31 December 1958, the [[Battle of Santa Clara]] took place in a scene of great confusion. The city of [[Santa Clara, Cuba|Santa Clara]] fell to the combined forces of Che Guevara, Cienfuegos, and Revolutionary Directorate (RD) rebels led by Comandantes Rolando Cubela, Juan ('El Mejicano') Abrahantes, and [[William Alexander Morgan]]. News of these defeats caused Batista to panic. He fled Cuba by air for the [[Dominican Republic]] just hours later on 1 January 1959. Comandante William Alexander Morgan, leading RD rebel forces, continued fighting as Batista departed, and had captured the city of [[Cienfuegos]] by 2 January. ||| Final offensive and rebel victory ||| ||| +-1 Desmond Rebellions ||| Siege of Carrigafoyle Castle ||| In the summer of 1580 English troops under [[William Pelham (lord justice)|William Pelham]] and locally raised Irish forces under the Earl of Ormonde retook the south coast, destroyed the lands of the Desmonds and their allies and killed their tenants. They captured [[Siege of Carrigafoyle Castle|Carrigafoyle]], the principal Desmond castle at the mouth of the [[River Shannon|Shannon]] at Easter 1580, cutting off the Geraldine forces from the rest of the country and prevented a landing of foreign troops into the main Munster ports. ||| Second Desmond Rebellion ||| ||| +-1 Dhofar Rebellion ||| Battle of Mirbat ||| As a result of the various measures undertaken by the Omani government, ''firqats'' and regular SAF, the rebels were being deprived both of local support and supplies from the PDRY. To retrieve the situation, they mounted a major attack on the coastal town of Mirbat during the monsoon season of 1972. On 19 July 1972, at the [[Battle of Mirbat]], 250 ''Adoo'' attacked 100 assorted ''Firqat'' under training, paramilitary ''askars'' (armed police) and a detachment of the Special Air Service. In spite of the low khareef cloud cover, air support from [[BAC Strikemaster|Strikemaster]] aircraft was available, and helicopters landed SAS reinforcements. The ''Adoo'' were repulsed with heavy losses. ||| History ||| Defeat of the rebellion ||| +-1 Dissident Irish Republican campaign ||| 2009 Massereene Barracks shooting ||| In March 2009 came the first security force fatalities since the end of the Troubles. The Real IRA [[2009 Massereene Barracks shooting|shot dead two British soldiers]] as they collected a delivery outside Massereene British Army barracks in [[Antrim, County Antrim|Antrim]]. Two other soldiers and two civilian deliverymen were also wounded by gunfire. ||| The campaign ||| 2009 onward ||| +-1 Division of the Mongol Empire ||| Toluid Civil War ||| The '''division of the Mongol Empire''' began when [[Möngke Khan]] died in 1259 with no declared successor, precipitating infighting between members of the [[Tolui]] family line for the title of [[Khagan|Great Khan]] that escalated to the [[Toluid Civil War]]. This civil war, along with the [[Berke–Hulagu war]] and the subsequent [[Kaidu–Kublai war]] greatly weakened the authority of the Great Khan over the entirety of the [[Mongol Empire]] and the empire fractured into autonomous khanates, including the [[Golden Horde]] in the northwest, the [[Chagatai Khanate]] in the middle, the [[Ilkhanate]] in the southwest, and the [[Yuan dynasty]] in the east based in modern-day [[Beijing]], although the Yuan emperors held the nominal title of [[Khagan]] of the empire. The four khanates each pursued their own separate interests and objectives, and fell at different times. ||| ||| ||| +-1 Donghak Peasant Revolution ||| Battle of Ugeumchi ||| Growing Japanese dominance in the Korean peninsula had caused anxiety for the rebels. From September to October, the Southern and Northern <!--span style='background-color:#FFEF00;'>Jeob</span --> leaders negotiated over the plans for the future in [[Nonsan|Samrye]]. In October 12, a coalition army of Northern and Southern Jeobs were formed, and the army, numbering 25,000~200,000 (records differ), went on to attack Gongju. After a number of battles, the rebel army was decisively defeated in the [[Battle of Ugeumchi]], and the rebels were again defeated in the [[Battle of Taein]]. Hostility continued deep into the spring of 1895. The rebel leaders were captured in various locations in the [[Honam|Honam Region]], and most were executed by a mass hanging in March. ||| ||| ||| +-1 Eastern Front (World War I) ||| Battle of Tannenberg ||| In the opening months of the war, the [[Imperial Russian Army]] attempted an [[Russian invasion of East Prussia (1914)|invasion]] of eastern Prussia in the [[Northwestern Front (Russian Empire)|northwestern theater]], only to be [[Battle of Tannenberg|beaten back]] by the Germans after some [[Battle of Gumbinnen|initial success]]. At the same time, in the south, they successfully [[Battle of Galicia|invaded Galicia]], defeating the Austro-Hungarian forces there. ||| ||| ||| +-1 Eastern Front (World War I) ||| Brusilov Offensive ||| The Italian operations during 1916 had one extraordinarily positive result: Austrian divisions were pulled away from the Russian southern front. This allowed the Russian forces to organize a counter-offensive. The [[Brusilov Offensive]] was a large tactical assault carried out by Russian forces against Austro-Hungarian forces in Galicia. General [[Alexei Brusilov]] believed victory against the Central Powers was possible if close attention was paid to preparation. Brusilov suggested that the Russians should attack on a wide front, and to position their trenches a mere seventy-five yard away from Austrian trenches. ||| 1916 ||| Brusilov Offensive ||| +-1 Eastern Front (World War I) ||| Russian invasion of East Prussia (1914) ||| In the opening months of the war, the [[Imperial Russian Army]] attempted an [[Russian invasion of East Prussia (1914)|invasion]] of eastern Prussia in the [[Northwestern Front (Russian Empire)|northwestern theater]], only to be [[Battle of Tannenberg|beaten back]] by the Germans after some [[Battle of Gumbinnen|initial success]]. At the same time, in the south, they successfully [[Battle of Galicia|invaded Galicia]], defeating the Austro-Hungarian forces there. ||| ||| ||| +-1 Eastern Front (World War I) ||| Second Battle of the Masurian Lakes ||| After the [[Second Battle of the Masurian Lakes]], the German and Austro-Hungarian troops in the Eastern Front functioned under a unified command. The offensive soon turned into a general advance and then a strategic retreat by the Russian army. The cause of the reverses suffered by the Russian army was not so much errors in the tactical sphere, as the deficiency in technical equipment, particularly in artillery and ammunition as well as the corruption and incompetence of the Russian officers. Only by 1916 did buildup of Russian war industries increase production of war material and improve the supply situation. ||| 1915 ||| ||| +-1 Eastern Front (World War II) ||| Battle of Memel ||| Under the pressure of the Soviet [[Baltic Offensive (1944)|Baltic Offensive]], the German Army Group North [[Tallinn Offensive|were withdrawn]] to fight in the sieges of [[Moonzund Landing Operation|Saaremaa]], [[Courland Pocket|Courland]] and [[Battle of Memel|Memel]]. ||| Conduct of operations ||| Autumn 1944 ||| +-1 Eastern Front (World War II) ||| Battle of Narva (1944) ||| The rapid progress of Operation Bagration threatened to cut off and isolate the German units of [[Army Group North]] bitterly [[Battle of Narva (1944)|resisting the Soviet advance]] towards [[Tallinn]]. In a ferocious [[Battle of Tannenberg Line|attack at the Sinimäed Hills]], Estonia, the Soviet [[Leningrad Front]] failed to break through the defence of the smaller, well-fortified [[Battle of Narva (1944)#Formation of Army Detachment 'Narwa'|army detachment 'Narwa']] in [[Battle of Narva (1944)#Terrain|terrain not suitable for large-scale operations]]. ||| Conduct of operations ||| Summer 1944 ||| +-1 Eastern Front (World War II) ||| Battle of Stalingrad ||| After Germany's initial success at the [[Battle of Kiev (1941)|Battle of Kiev]] in 1941, Hitler saw the Soviet Union as militarily weak and ripe for immediate conquest. On 3 October 1941, he announced, 'We have only to kick in the door and the whole rotten structure will come crashing down.' Thus, Germany expected another short Blitzkrieg and made no serious preparations for prolonged warfare. However, following the decisive Soviet victory at the [[Battle of Stalingrad]] in 1943 and the resulting dire German military situation, Hitler and his Nazi propaganda proclaimed the war to be a German defence of Western civilization against destruction by the vast '[[Bolshevism|Bolshevik]] hordes' that were pouring into Europe. ||| Ideologies ||| German ideology ||| +-1 Eastern Front (World War II) ||| Battle of Uman ||| [[Army Group South]], with the [[1st Panzer Group]], the [[6th Army (Wehrmacht)|6th]], [[11th Army (Wehrmacht)|11th]] and [[17th Army (Wehrmacht)|17th Armies]], was tasked with advancing through [[Galicia (Central Europe)#Second World War and Distrikt Galizien|Galicia]] and into [[Ukraine]]. Their progress, however, was rather slow, and they took heavy casualties in a [[Battle of Brody (1941)|major tank battle]]. With the corridor towards [[Kiev]] secured by mid-July, the 11th Army, aided by two Romanian armies, fought its way through [[Bessarabia]] towards [[Odessa]]. The 1st Panzer Group turned away from Kiev for the moment, advancing into the Dnieper bend (western [[Dnipropetrovsk Oblast]]). When it joined up with the southern elements of Army Group South at [[Uman, Ukraine|Uman]], the Group [[Battle of Uman|captured about 100,000 Soviet prisoners]] in a huge encirclement. Advancing armored divisions of the Army Group South met with Guderian's 2nd Panzer Group near [[Lokhvytsia|Lokhvytsa]] in mid September, cutting off large numbers of Red Army troops in the pocket east of Kiev. ||| Conduct of operations ||| Operation Barbarossa: Summer 1941 ||| +-1 Eastern Front (World War II) ||| Operation Bagration ||| ''Wehrmacht'' planners were convinced that the Soviets would attack again in the south, where the front was fifty miles from [[Lviv]] and offered the most direct route to [[Berlin]]. Accordingly, they stripped troops from Army Group Centre, whose front still protruded deep into the Soviet Union. The Germans had transferred some units to France to counter the [[invasion of Normandy]] two weeks before. The Belorussian Offensive (codenamed [[Operation Bagration]]), which began on 22 June 1944, was a massive Soviet attack, consisting of four Soviet army groups totaling over 120 divisions that smashed into a thinly held German line. They focused their massive attacks on Army Group Centre, not Army Group North Ukraine as the Germans had originally expected. More than 2.3 million Soviet troops went into action against German Army Group Centre, which boasted a strength of fewer than 800,000 men. At the points of attack, the numerical and quality advantages of the Soviets were overwhelming: the Red Army achieved a ratio of ten to one in tanks and seven to one in [[aircraft]] over their enemy. The Germans crumbled. The capital of [[Belarus]], [[Minsk]], was taken on 3 July, trapping some 100,000 Germans. Ten days later the Red Army reached the prewar [[Poland|Polish]] border. ''Bagration'' was by any measure, one of the largest single operations of the war. By the end of August 1944, it had cost the Germans ~400,000 dead, wounded, missing and sick, from whom 160,000 were captured, as well as 2,000 tanks and 57,000 other vehicles. In the operation, the Red Army lost ~180,000 dead and missing (765,815 in total, including wounded and sick plus 5,073 Poles), ||| Conduct of operations ||| Summer 1944 ||| +-1 Eastern Front (World War II) ||| Operation Barbarossa ||| The war was fought between Nazi Germany, its allies and Finland, against the Soviet Union. The conflict began on 22 June 1941 with the [[Operation Barbarossa]] offensive, when [[Axis powers|Axis]] forces crossed the borders described in the [[German–Soviet Nonaggression Pact]], thereby invading the Soviet Union. The war ended on 9 May 1945, when [[Wehrmacht|Germany's armed forces]] [[Unconditional surrender|surrendered unconditionally]] following the [[Battle of Berlin]] (also known as the [[Berlin Offensive]]), a strategic operation executed by the [[Red Army]]. The states that provided forces and other resources for the German war effort included the [[Axis Powers]] – primarily Romania, Hungary, Italy, pro-Nazi Slovakia, and Croatia. The [[anti-Soviet]] Finland, which had fought the [[Winter War]] against the Soviet Union, also joined the offensive. The ''Wehrmacht'' forces were also assisted by anti-[[Communist]] [[Partisan (military)|partisans]] in places like Western Ukraine, the [[Baltic states]], and later by [[Crimean Tatars]]. Among the most prominent volunteer army formations was the [[Blue Division|Spanish Blue Division]], sent by Spanish dictator [[Francisco Franco]] to keep his ties to the Axis intact. ||| Forces ||| ||| +-1 Eastern Front (World War II) ||| Operation Mars ||| While the German 6th and 4th Panzer Armies had been fighting their way into Stalingrad, Soviet armies had congregated on either side of the city, specifically into the Don [[bridgehead]]s that the Romanians did not reduce, and it was from these that they struck on 19 November 1942. In Operation ''[[Operation Uranus|Uranus]]'', two Soviet fronts punched through the Romanian lines and converged at [[Kalach-na-Donu|Kalach]] on 23 November, trapping 300,000 Axis troops behind them. A simultaneous offensive on the Rzhev sector known as Operation ''[[Operation Mars|Mars]]'' was supposed to advance to Smolensk, but was a failure, with German tactical flair winning the day. ||| Conduct of operations ||| Stalingrad: Winter 1942 ||| +-1 Eastern Front (World War II) ||| Siege of Leningrad ||| Hitler then decided to resume the advance on Moscow, re-designating the panzer groups as panzer armies for the occasion. [[Battle of Moscow|Operation Typhoon]], which was set in motion on 30 September, saw the 2nd Panzer Army rush along the paved road from [[Oryol]] (captured 5 October) to the [[Oka River]] at [[Plavsk]], while the 4th Panzer Army (transferred from Army Group North to Centre) and 3rd Panzer armies surrounded the Soviet forces in two huge pockets at [[Vyazma]] and [[Bryansk]]. Army Group North positioned itself in front of [[Saint Petersburg|Leningrad]] and attempted to cut the rail link at [[Mga]] to the east. This began the 900-day [[Siege of Leningrad]]. North of the [[Arctic Circle]], a German–Finnish force [[Operation Silver Fox|set out for Murmansk]] but could get no further than the [[Zapadnaya Litsa River]], where they settled down. ||| Conduct of operations ||| Moscow and Rostov: Autumn 1941 ||| +-1 Eastern Front (World War II) ||| Tallinn Offensive ||| Under the pressure of the Soviet [[Baltic Offensive (1944)|Baltic Offensive]], the German Army Group North [[Tallinn Offensive|were withdrawn]] to fight in the sieges of [[Moonzund Landing Operation|Saaremaa]], [[Courland Pocket|Courland]] and [[Battle of Memel|Memel]]. ||| Conduct of operations ||| Autumn 1944 ||| +-1 English Civil War ||| Battle of Edgehill ||| The first [[pitched battle]] of the war, fought at [[Battle of Edgehill|Edgehill]] on 23 October 1642, proved inconclusive, and both the Royalists and Parliamentarians claimed it as a victory. ||| First English Civil War (1642–1646) ||| ||| +-1 English Civil War ||| Battle of Marston Moor ||| With the help of the Scots, Parliament won at [[Battle of Marston Moor|Marston Moor]] (2 July 1644), ||| First English Civil War (1642–1646) ||| ||| +-1 English Civil War ||| Battle of Roundway Down ||| In 1643 the Royalist forces won at [[Battle of Adwalton Moor|Adwalton Moor]], and gained control of most of [[Yorkshire]]. Subsequent battles in the west of England at [[Battle of Lansdowne|Lansdowne]] and at [[Battle of Roundway Down|Roundway Down]] also went to the Royalists. ||| First English Civil War (1642–1646) ||| ||| +-1 English Civil War ||| Battle of St Fagans ||| In the spring of 1648 unpaid Parliamentarian troops in Wales changed sides. Colonel [[Thomas Horton (soldier)|Thomas Horton]] defeated the Royalist rebels at the [[Battle of St Fagans]] (8 May) ||| Second English Civil War (1648–1649) ||| ||| +-1 English Civil War ||| First English Civil War ||| The '''English Civil War''' (1642–1651) was a series of armed conflicts and political machinations between Parliamentarians ('[[Roundhead]]s') and Royalists ('[[Cavalier]]s') in the [[Kingdom of England]] over, principally, the manner of its government. The [[First English Civil War|first]] (1642–46) and [[Second English Civil War|second]] (1648–49) wars pitted the supporters of [[Charles I of England|King Charles I]] against the supporters of the [[Long Parliament]], while the [[Third English Civil War|third]] (1649–51) saw fighting between supporters of [[Charles II of England|King Charles II]] and supporters of the [[Rump Parliament]]. The war ended with the Parliamentarian victory at the [[Battle of Worcester]] on 3 September 1651. ||| ||| ||| +-1 English Wars (Scandinavia) ||| Gunboat War ||| The '''English Wars''' ({{lang-da|Englandskrigene}}) were a series of conflicts between [[England]] and [[Sweden]] with [[Denmark-Norway]] as part of the [[Napoleonic Wars]]. It is named after the most prominent [[England|region]] of its other main participant, the [[United Kingdom of Great Britain and Ireland|United Kingdom]], which declared war on Denmark-Norway due to disagreements over the neutrality of Danish trade and to prevent the Danish fleet falling into the hands of the [[First French Empire]]. It began with the first battle of [[Battle of Copenhagen (1801)|Copenhagen]] in 1801 and its latter stage from 1807 onwards was followed by the [[Gunboat War]], the [[Dano-Swedish War of 1808-1809]] and the Swedish invasion of [[Holstein]] in 1814. ||| ||| ||| +-1 Eritrean War of Independence ||| Eritrean Civil Wars ||| At the end of the 1980s, the Soviet Union informed Mengistu that it would not be renewing its defence and cooperation agreement. With the cessation of Soviet support and supplies, the Ethiopian Army's morale plummeted, and the EPLF, along with other Ethiopian rebel forces, began to advance on Ethiopian positions. The joint effort to overthrow the [[Mengistu]], Marxist regime was a joint effort of mostly [[EPLF]] forces, united with other Ethiopian faction groups (primarily consisting of tribal liberation fronts, for example the [[Oromo Liberation Front]], the [[Tigrayan People's Liberation Front]] – who were jointly in battles against the [[Eritrean Liberation Front|ELF]] and other key battles where many Tigrayans were lost in the [[Eritrean Civil Wars]] – and the [[EPRDF]], a conglomerate of the current TPLF regime and the marxist [[Oromo People's Democratic Organization]] who became prominent for recruiting [[Derg]] defects as the EPLF and EPRDF occupied parts of the provinces of [[Wollo]] and Shewa in Ethiopia). ||| War (1961–1991) ||| ||| +-1 Euromaidan ||| 1 December 2013 Euromaidan riots ||| On 30 November 2013, the protests were dispersed violently by the [[Berkut (Ukraine)|Berkut]] riot police units, sparking riots the following day in Kiev. On 1 December 2013, protesters [[1 December 2013 Euromaidan riots|reoccupied the square]] and through December further clashes with the authorities and political ultimatums by the opposition ensued. This culminated in a series of [[Anti-protest laws in Ukraine|anti-protest laws]] by the government on 16 January 2014, and further [[2014 Hrushevskoho Street riots|rioting on Hrushevskoho Street]]. Early February 2014 saw a bombing of the [[Trade Unions Building (Kiev)|Trade Unions Building]], ||| Timeline of the events ||| Riots in Kiev ||| +-1 Euromaidan ||| 2014 Hrushevskoho Street riots ||| On 30 November 2013, the protests were dispersed violently by the [[Berkut (Ukraine)|Berkut]] riot police units, sparking riots the following day in Kiev. On 1 December 2013, protesters [[1 December 2013 Euromaidan riots|reoccupied the square]] and through December further clashes with the authorities and political ultimatums by the opposition ensued. This culminated in a series of [[Anti-protest laws in Ukraine|anti-protest laws]] by the government on 16 January 2014, and further [[2014 Hrushevskoho Street riots|rioting on Hrushevskoho Street]]. Early February 2014 saw a bombing of the [[Trade Unions Building (Kiev)|Trade Unions Building]], ||| Timeline of the events ||| Riots in Kiev ||| +-1 Euromaidan ||| 2014 Ukrainian revolution ||| Following the [[2014 Ukrainian revolution|revolution]] of 18–23 February that saw over 100 killed in gunfire, the government's new health minister, Oleh Musiy, a doctor who helped oversee medical treatment for casualties during the protests, suggested to The Associated Press that the similarity of bullet wounds suffered by opposition victims and police indicates the shooters were trying to stoke tensions on both sides and spark even greater violence, with the goal of toppling Yanukovych. 'I think it wasn't just a part of the old regime that (plotted the provocation), but it was also the work of Russian special forces who served and maintained the ideology of the (old) regime,' he said, citing forensic evidence. ||| Casualties ||| Investigation into shooters/snipers ||| Snipers deployed during the Ukrainian revolution +-1 European theatre of World War II ||| Operation Dragoon ||| [[Operation Overlord]] was complemented by an invasion of southern France on August 15, 1944 codenamed [[Operation Dragoon]]. By September 1944 three Allied Army Groups were in line against German formations in the west. There was optimism that the war in Europe might be over by the end of 1944. ||| Allied invasion of occupied France ||| ||| +-1 European theatre of World War II ||| Soviet invasion of Poland ||| On September 17, the [[Soviet invasion of Poland|Soviet forces joined the invasion of Poland]], although remaining [[neutrality (international relations)|neutral]] with respect to Western powers. The Polish government evacuated the country for Romania. Poland fell within five weeks, with her last large operational units surrendering on October 5 after the [[Battle of Kock (1939)|Battle of Kock]]. As the Polish September Campaign ended, Hitler offered to Britain and France peace on the basis of recognition of German European continental dominance. On October 12, the United Kingdom formally refused. ||| Outbreak of war in Europe ||| ||| +-1 Expedition of the Thousand ||| Battle of Volturnus (1860) ||| File:Battaglia del Volturno - combattimento di Porta Romana, verso Santa Maria Maggiore - Perrin - litografia - 1861 (01).jpg|[[Battle of Volturnus (1860)|Battle of the Volturnus]] ||| The expedition ||| The end ||| +-1 Filibuster War ||| First Battle of Rivas ||| With Castellón's consent, Walker attacked the Legitimists in the town of [[First Battle of Rivas|Rivas]], near the trans-isthmian route. He was driven off, but not without inflicting heavy casualties. On September 4, during the [[Battle of La Virgen]], Walker defeated the Legitimist army. On October 13, he conquered the Legitimist capital of [[Granada, Nicaragua|Granada]] and took effective control of the country. Initially, as commander of the army, Walker ruled Nicaragua through [[puppet state|puppet]] President [[Patricio Rivas]]. U.S. President [[Franklin Pierce]] recognized Walker's regime as the legitimate government of Nicaragua on May 20, 1856. ||| Initial Stages ||| Establishment of Walker ||| +-1 Filibuster War ||| Second Battle of Rivas ||| Walker had scared his neighbors with talk of further military conquests in Central America. [[Juan Rafael Mora]], President of Costa Rica, rejected Walker's diplomatic overtures and instead declared war on his regime. Walker sent Colonel Schlessinger to invade Costa Rica in a preemptive action, but his forces were defeated at the [[Battle of Santa Rosa]] in March 1856. Vanderbilt financed and trained a military coalition of these states, led by Costa Rica, and worked to prevent men and supplies from reaching Walker. He also provided defectors from Walker's army with payments and free passage back to the United States of America. In April 1856, Costa Rican troops and American mercenaries supported by Vanderbilt penetrated into Nicaraguan territory and inflicted a defeat on Walker's men at the [[Second Battle of Rivas]], in which [[Juan Santamaría]], later to be recognized as one of Costa Rica's national heroes by burning the place were the Filibuster were staying. Walker set himself up as President of Nicaragua, after conducting an uncontested election. He was inaugurated on July 12, 1856, and soon launched an Americanization program, declaring English an official language and reorganizing currency and fiscal policy to encourage immigration from the United States of America. Walker's army had though been weakened by an epidemic of [[cholera]] and massive defections, it was no match for the Central American coalition. ||| Initial Stages ||| Central American Counterattack ||| +-1 Finnish War ||| Battle of Jutas ||| Although [[Georg Carl von Döbeln]] won the [[Battle of Jutas]] for Sweden on September 13, Kamensky's 11,000-strong corps achieved more important victories at [[Battle of Kuortane|Kuortane]] on September 1, at [[Salmi (rural locality)|Salmi]] on September 2, and at [[Battle of Oravais|Oravais]] on September 14. Swedish attempts to land troops near [[Turku]] were stalled by [[Pyotr Bagration|Bagration]]'s prompt actions. In Eastern Finland, the guerrilla movement was gradually extinguished. As a consequence, Russia's situation in Southern Finland improved significantly. ||| August – September 1808 ||| ||| +-1 Finnish War ||| Battle of Siikajoki ||| Under Colonel [[Carl Johan Adlercreutz]] the Swedish army [[Battle of Siikajoki|counter-attacked at Siikajoki]] and began to halt the Russian offensive. Soon after at [[Battle of Revolax]] Swedish army under Colonel [[Johan Adam Cronstedt]] started the Swedish advance towards the South. These successes yielded promotion to Field Marshal to [[Wilhelm Mauritz Klingspor]]. Swedish advance was very slow however, as operations were mostly halted due to the thaw, the exception was the brigade under Colonel [[Johan August Sandels]] which swiftly advanced towards [[Kuopio]]. [[Nikolay Tuchkov]], a Russian general who was dispatched to the north of Finland, left garrisons in every fort on his way, thus reducing his unit to 4,000 troops, which proved insufficient to pacify the hostile country. The Finns rose up in guerrilla fighting as far as [[Hamina]] (in Russian '[[Old Finland]]'). ||| February – May 1808 ||| ||| +-1 First Anglo-Sikh War ||| Battle of Mudki ||| The Sikhs claimed they were only moving into Sikh possessions (specifically the village of Moran, whose ownership was disputed) on the east side of the river, but the move was regarded by the British as clearly hostile and they declared war. One Sikh army under Tej Singh advanced towards Ferozepur but made no effort to surround or attack the exposed British division there. Another force under Lal Singh clashed with Gough's and Hardinge's advancing forces at the [[Battle of Mudki]] on 18 December. The British won an untidy encounter battle. ||| Outbreak and course of the war ||| ||| +-1 First Anglo-Sikh War ||| Battle of Sobraon ||| Gough's main army had now been reinforced, and rejoined by Smith's division, they attacked the main Sikh bridgehead at [[Battle of Sobraon|Sobraon]] on 10 February. Tej Singh is said to have deserted the Sikh army early in the battle. Although the Sikh army resisted as stubbornly as at Ferozeshah, Gough's troops eventually broke into their position. The bridges behind the Sikhs broke under British artillery fire, or were ordered to be destroyed behind him by Tej Singh. The Sikh army was trapped. None of them surrendered, and the British troops showed little mercy. This defeat effectively broke the Sikh army. ||| Outbreak and course of the war ||| ||| +-1 First Balkan War ||| Battle of Lemnos (1913) ||| Four days later, on {{OldStyleDate|18 January|1913|5 January}}, when the Ottoman fleet again sallied from the straits towards Lemnos, it was defeated for a second time in the [[Battle of Lemnos (1913)|Battle of Lemnos]]. This time, the Ottoman warships concentrated their fire on the ''Averof'', which again made use of its superior speed and tried to '[[cross the T]]' of the Ottoman fleet. ''Barbaros Hayreddin'' was again heavily damaged, and the Ottoman fleet was forced to return to the shelter of the Dardanelles and their forts. The Ottomans suffered 41 killed and 101 wounded. ||| Operations ||| Greek theater ||| Naval operations in the Aegean and Ionian seas +-1 First Balkan War ||| Battle of Lule Burgas ||| | [[Battle of Lule Burgas]] ||| Reactions among the Great Powers ||| ||| +-1 First Balkan War ||| Battle of Pente Pigadia ||| | [[Battle of Pente Pigadia]] ||| Reactions among the Great Powers ||| ||| +-1 First Balkan War ||| Battle of Sarantaporo ||| With the declaration of war, the Greek Army of Thessaly under Crown Prince [[Constantine I of Greece|Constantine]] advanced to the north, successfully [[Battle of Sarantaporo|overcoming]] Ottoman opposition in the fortified Straits of Sarantaporo. After another victory at [[Battle of Yenidje|Giannitsa (Yenidje)]] on {{OldStyleDate|2 November|1912|20 October}}, the Ottoman commander [[Hasan Tahsin Pasha]] surrendered Thessaloniki and its garrison of 26,000 men to the Greeks on {{OldStyleDate|9 November|1912|27 October}}. Two Corps HQs (Ustruma and VIII), two Nizamiye divisions (14th and 22nd) and four Redif divisions (Salonika, Drama, Naslic and Serez) were thus lost to the Ottoman order of battle. Additionally, the Ottoman forces lost 70 artillery pieces, 30 machine guns and 70,000 rifles (Thessaloniki was the central arms depot for the Western Armies). The Ottoman forces estimated that 15,000 officers and men had been killed during the campaign in south Macedonia, bringing total losses up to 41,000 soldiers. Another direct consequence was that the destruction of the Macedonian Army sealed the fate of the Ottoman Vardar Army, which was fighting the Serbs to the north. The fall of Thessaloniki left it strategically isolated, without logistical supply and depth to maneuver, ensuring its destruction. ||| Operations ||| Greek theater ||| Macedonian front +-1 First Balkan War ||| Battle of Sorovich ||| | [[Battle of Sorovich]] ||| Reactions among the Great Powers ||| ||| +-1 First Balkan War ||| Battle of Yenidje ||| With the declaration of war, the Greek Army of Thessaly under Crown Prince [[Constantine I of Greece|Constantine]] advanced to the north, successfully [[Battle of Sarantaporo|overcoming]] Ottoman opposition in the fortified Straits of Sarantaporo. After another victory at [[Battle of Yenidje|Giannitsa (Yenidje)]] on {{OldStyleDate|2 November|1912|20 October}}, the Ottoman commander [[Hasan Tahsin Pasha]] surrendered Thessaloniki and its garrison of 26,000 men to the Greeks on {{OldStyleDate|9 November|1912|27 October}}. Two Corps HQs (Ustruma and VIII), two Nizamiye divisions (14th and 22nd) and four Redif divisions (Salonika, Drama, Naslic and Serez) were thus lost to the Ottoman order of battle. Additionally, the Ottoman forces lost 70 artillery pieces, 30 machine guns and 70,000 rifles (Thessaloniki was the central arms depot for the Western Armies). The Ottoman forces estimated that 15,000 officers and men had been killed during the campaign in south Macedonia, bringing total losses up to 41,000 soldiers. Another direct consequence was that the destruction of the Macedonian Army sealed the fate of the Ottoman Vardar Army, which was fighting the Serbs to the north. The fall of Thessaloniki left it strategically isolated, without logistical supply and depth to maneuver, ensuring its destruction. ||| Operations ||| Greek theater ||| Macedonian front +-1 First Battle of al-Faw ||| Operation Dawn 8 ||| The '''First Battle of al-Faw''' ('''[[Operation Dawn 8]]''') fought from February 9 – March 20, 1986 (with heavy combat operations lasting until early 1988), was a battle of the [[Iran-Iraq War]]. The Iranians launched a sophisticated, carefully-planned amphibious attack across the [[Shatt al-Arab]] (Arvand Rud) river against the Iraqi troops (mostly [[Iraqi Popular Army]]) defending the strategic [[al-Faw Peninsula]], which connects Iraq to the [[Persian Gulf]], capturing the peninsula, including Iraq's main air control and warning center (which was covering Persian Gulf) and outskirts of the primary Iraqi port of [[Umm Qasr]]. The Iranians defeated several Iraqi [[Republican Guard]]'s counter-offensives and managed to remain in to their foothold. Iraq extensively used chemical weapons during the battle. ||| ||| ||| +-1 First Boer War ||| Battle of Majuba Hill ||| On 14 February hostilities were suspended, awaiting the outcome of peace negotiations initiated by an offer from Paul Kruger. During this time Colley's promised reinforcements arrived with more to follow. The British government in the meantime had offered a Royal Commission investigation and possible troop withdrawal, and their attitude toward the Boers was conciliatory. Colley was critical of this stance and, whilst waiting for Kruger's final agreement, decided to attack again with a view to enabling the British government to negotiate from a position of strength. This resulted in the disaster of the [[Battle of Majuba Hill]] on 27 February 1881, the greatest humiliation for the British. ||| 1880–81 War ||| Schuinshoogte ||| +-1 First Boer War ||| Battle of Schuinshoogte ||| The three main engagements of the war were all within about sixteen miles of each other, centred on the Battles of [[Laing's Nek]] (28 January 1881), [[Battle of Schuinshoogte|Ingogo River]] (8 February 1881) and the rout at [[Majuba Hill]] (27 February 1881). These battles were the result of Colley's attempts to relieve the besieged forts. Although he had requested reinforcements, these would not reach him until mid-February. Colley was, however, convinced that the garrisons would not survive until then. Consequently, at [[Newcastle, KwaZulu-Natal|Newcastle]], near the Transvaal border, he mustered a relief column (the [[Natal Field Force]]) of available men, although this amounted to only 1,200 troops. Colley's force was further weakened in that few were mounted, a serious disadvantage in the terrain and for that type of warfare. Most Boers were mounted and good riders. Nonetheless, Colley's force set out on 24 January 1881 northward for Laing's Nek ''en route'' to relieve Wakkerstroom and Standerton, the nearest forts. ||| 1880–81 War ||| Action at Bronkhorstspruit ||| +-1 First Carlist War ||| Battle of Luchana ||| *[[Battle of Luchana]] (December 24, 1836) - Liberal victory ||| Battles of the First Carlist War (Chronology) ||| ||| +-1 First Crusade ||| Siege of Jerusalem (1099) ||| The '''First Crusade''' (1096–1099) was the first of a number of [[crusade]]s that attempted to capture the [[Holy Land]]s, called by [[Pope Urban II]] in 1095. It started as a widespread pilgrimage in [[western christendom]] and ended as a military expedition by [[Roman Catholic]] [[Europe]] to regain the [[Holy Land]]s taken in the [[Muslim conquests]] of the [[Levant]] (632–661), ultimately resulting in the [[Siege of Jerusalem (1099)|recapture of Jerusalem]] in 1099. It was launched on 27 November 1095 by [[Pope Urban II]] with the primary goal of responding to an appeal from [[List of Byzantine emperors|Byzantine Emperor]] [[Alexios I Komnenos]], who requested that western volunteers come to his aid and help to repel the invading [[Seljuq dynasty|Seljuq Turks]] from [[Anatolia]]. An additional goal soon became the principal objective—the Christian reconquest of the [[Jerusalem in Christianity|sacred city of Jerusalem]] and the Holy Land and the freeing of the [[Eastern Christianity|Eastern Christians]] from Muslim rule. ||| ||| ||| +-1 First English Civil War ||| Battle of Edgehill ||| However, the real spirit of the struggle proved very different. Anything that prolonged the struggle, or seemed like a lack of energy or an avoidance of decision, was bitterly resented by the men of both sides. They had their hearts in the quarrel, and had not yet learned by the severe lesson of [[Battle of Edgehill|Edgehill]] that raw armies cannot quickly end wars. In France and Germany, the prolongation of a war meant continued employment for soldiers, but in England: ||| Armies ||| ||| +-1 First Indochina War ||| Battle of Hanoi ||| There was never any intention among the Vietnamese to give up, as General [[Võ Nguyên Giáp]] soon brought up 30,000 men to attack the city. Although the French were outnumbered, their superior weaponry and naval support made any Viet Minh attack unsuccessful. In December, hostilities also [[Battle of Hanoi|broke out]] in Hanoi between the Viet Minh and the French, and Ho Chi Minh was forced to evacuate the capital in favor of remote mountain areas. Guerrilla warfare ensued, with the French controlling most of the country except far-flung areas. ||| Timeline ||| 1946 ||| +-1 First Indochina War ||| Battle of Route Coloniale 4 ||| [[Lạng Sơn]], with its 4,000-strong [[French Foreign Legion]] garrison, was attacked immediately after. The [[Battle of Route Coloniale 4|retreating French on Route 4]], together with the relief force coming from [[That Khe]], were attacked all the way by ambushing Viet Minh forces. The French air-dropped a paratroop battalion south of Cao Bằng to act as diversion only to see it quickly surrounded and destroyed. On October 17, Lạng Sơn, after a week of intense fighting, finally fell. ||| Timeline ||| 1950 ||| +-1 First Indochina War ||| Operation Castor ||| [[Operation Castor]] was launched on November 20, 1953, with 1,800 men of the French 1st and 2nd Airborne Battalions dropping into the valley of Điện Biên Phủ and sweeping aside the local Viet Minh garrison. The paratroopers gained control of a heart-shaped valley {{convert|12|mi|km}} long and {{convert|8|mi|km}} wide surrounded by heavily wooded hills. Encountering little opposition, the French and Tai units operating from [[Lai Châu Province|Lai Châu]] to the north patrolled the hills. ||| Timeline ||| 1953 ||| +-1 First Peloponnesian War ||| Battle of Tanagra (457 BC) ||| The war began in 460 BC ([[Battle of Oenoe]]). At first the Athenians had the better of the fighting, winning the naval engagements using their superior fleet. They also had the better of the fighting on land, until 457 BC when the Spartans and their allies defeated the Athenian army at [[Battle of Tanagra (457 BC)|Tanagra]]. The Athenians, however, counterattacked and scored a crushing victory over the [[Boeotia]]ns at the [[Battle of Oenophyta]] and followed this victory up by conquering all of Boeotia except for Thebes. ||| ||| ||| +-1 Fourth Fitna ||| Battle of Rayy ||| The '''Fourth Fitna''' or '''Great Abbasid Civil War''' was a conflict between the brothers [[al-Amin]] and [[al-Ma'mun]] over the succession to the [[Abbasid Caliphate]]'s throne. Their father, [[Harun al-Rashid]], had named al-Amin as the first successor, but had also named al-Ma'mun as the second, with [[Khurasan]] granted to him as an [[appanage]], while a third son, [[al-Qasim ibn Harun al-Rashid|al-Qasim]], had been designated as third successor. After Harun died in 809, al-Amin succeeded in [[Baghdad]]. Encouraged by the Baghdad court, al-Amin began trying to subvert the autonomous status of Khurasan; Qasim was quickly sidelined. In response, al-Ma'mun's sought the support of the provincial elites of Khurasan, and made moves to assert his own autonomy. As the rift between the two brothers and their respective camps widened, al-Amin declared his own son Musa to be his heir, and assembled a large army. Al-Amin's troops marched towards Khurasan, but al-Ma'mun's general [[Tahir ibn Husayn]] defeated them in the [[Battle of Rayy]], and then invaded [[Mesopotamia|Iraq]] and [[Siege of Baghdad (812–813)|besieged]] Baghdad itself. The city fell after a year, al-Amin was executed, and al-Ma'mun became Caliph, but he remained in Khurasan and did not come to Baghdad. ||| ||| ||| +-1 Franco-Dutch War ||| Battle of Cassel (1677) ||| * 1677 – [[Battle of Cassel (1677)|Battle of Cassel]] (11 April) ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Battle of Fehrbellin ||| * 1675 – [[Battle of Fehrbellin]] (28 June – [[Scanian War|Brandenburg-Swedish War]]) ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Battle of Palermo ||| * 1676 – [[Battle of Palermo]] (2 June) ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Battle of Sinsheim ||| Marshall Turenne marched his army toward [[Philippsburg]] where the crossed the [[Rhine]] on 14 June 1674. Marshal Turenne hoped to strike General [[Aeneas de Caprara|Enea Caprara]] and the Duke [[Charles IV, Duke of Lorraine|Charles IV of Lorraine]] before they could be reinforced by the Imperial (Holy Roman Empire) army under the command of Field Marshal [[Alexander von Bournonville]]. Turenne's forces met Imperial (Holy Roman Empire) troops on 16 June 1674 on a piece of high ground just across the [[Elsenz]] stream near the town of [[Sinsheim]]. The [[Battle of Sinsheim]] was a complete victory for Marshal Turenne, but the Imperial troops had delayed Turenne long enough to allow Bournonville's army to reinforce the forces of General Caprara and the Duke of Lorraine at [[Heidelberg]]. ||| War ||| ||| +-1 Franco-Dutch War ||| Battle of Texel ||| * 1673 – [[Battle of Texel]] (21 August – [[Third Anglo-Dutch War]])[[Image:BattleOfTexel.jpg|thumb|230px|The [[Battle of the Texel]], August 1673]] ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Battle of Turckheim ||| * 1675 – [[Battle of Turckheim]] (5 January) ||| Chronological list of key events ||| ||| +-1 Franco-Dutch War ||| Siege of Ypres (1678) ||| * 1678 – [[Siege of Ypres (1678)|Siege of Ypres]] (18 – 25 March) ||| Chronological list of key events ||| ||| +-1 Franco-Flemish War ||| Battle of Furnes ||| In August 1297 the French troops were reinforced when [[Robert II, Count of Artois|Robert of Artois]] returned from his successful campaign against Edward in Aquitaine. Artois' troops marched upon [[Cassel, Nord|Cassel]], which, except for the Flemish occupied castle, was burned, and to [[Bergues|Sint-Winoksbergen]], which surrendered. By August 20, Artois' troops had reached [[Veurne]]. The Flemish counterattack on Artois ended in a French victory at the [[Battle of Furnes]] (20 August 1297). Five days later Lille surrendered to King Philip and the Flemish army, led by Robert of Bethune and 3000 men strong, was allowed to march out to [[Roeselare]]. ||| 1297–1300 ||| First phase of the War ||| +-1 French Revolution ||| Coup of 18 Fructidor ||| The new régime met opposition from Jacobins on the left and royalists on the right (the latter were secretly subsidised by the British government). The army suppressed riots and counter-revolutionary activities. In this way the army and in particular Napoleon gained total power. In the elections of 1797 for one-third of the seats the Royalists won the great majority of seats and were poised to take control of the Directory in the next election. The Directory reacted by purging all the winners in the [[Coup of 18 Fructidor]], banishing 57 leaders to certain death in Guiana and closing 42 newspapers. That is, it rejected democratic elections and kept its old leaders in power. ||| First Republic ||| The Directory (1795–1799) ||| +-1 French Revolution ||| Storming of the Bastille ||| The [[causes of the French Revolution]] are complex and are still debated among historians. Following the [[Seven Years' War]] and the [[American Revolutionary War]], the French government was deeply in debt and attempted to restore its financial status through unpopular taxation schemes. Years of bad harvests leading up to the Revolution also inflamed popular resentment of the privileges enjoyed by the clergy and the aristocracy. Demands for change were formulated in terms of [[Age of Enlightenment|Enlightenment]] ideals and contributed to the convocation of the [[Estates-General of 1789|Estates-General]] in May 1789. The first year of the Revolution saw members of the [[Estates General (France)|Third Estate]] taking control, the [[Storming of the Bastille|assault on the Bastille]] in July, the passage of the [[Declaration of the Rights of Man and of the Citizen]] in August, and a [[The Women's March on Versailles|women's march on Versailles]] that forced the royal court back to Paris in October. A central event of the first stage, in August 1789, was the [[Abolition of feudalism in France|abolition of feudalism]] and the old rules and privileges left over from the ''[[Ancien Régime]]''. The next few years featured political struggles between various [[Louis XVI and the Legislative Assembly|liberal assemblies]] and [[Right-wing politics|right-wing]] supporters of the monarchy intent on thwarting major reforms. The [[First French Republic|Republic]] was proclaimed in September 1792 after the French [[Battle of Valmy|victory at Valmy]]. In a momentous event that led to international condemnation, [[Louis XVI of France|Louis XVI]] was [[Execution of Louis XVI|executed]] in January 1793. ||| ||| ||| +-1 French Revolutionary Wars ||| Battle of Arcole ||| The Austrians sent yet another army under [[József Alvinczi]] against Bonaparte in November. Again the Austrians divided their effort, sending Davidovich's corps from the north while Alvinczi's main body attacked from the east. At first they proved victorious over the French at [[Second Battle of Bassano|Bassano]], [[Battle of Calliano|Calliano]], and [[Battle of Caldiero (1796)|Caldiero]]. But Bonaparte ultimately defeated Alvinczi in the [[Battle of Arcole]] southeast of [[Verona]]. The French then turned on Davidovich in great strength and chased him into the Tyrol. Wurmser's only sortie was late and ineffectual. ||| War of the First Coalition ||| 1796 ||| +-1 French Revolutionary Wars ||| Battle of Biberach (1800) ||| On 4 and 5 May, the French launched repeated and fruitless assaults on the Messkirch. At nearby [[Sauldorf|Krumbach]], where the Austrians also had the superiority of position and force, the 1st Demi-Brigade took the village and the heights around it, which gave them a commanding aspect over Messkirch. Subsequently, Kray withdrew his forces to [[Sigmaringen]], followed closely by the French. Fighting at nearby [[Battle of Biberach (1800)|Biberach an der Ris]] ensued on 9 May; action principally consisted of the 25,000 man-strong French 'Center', commanded by [[Laurent de Gouvion Saint-Cyr]]. ||| War of the Second Coalition ||| 1800 ||| +-1 French Revolutionary Wars ||| Battle of Caldiero (1796) ||| The Austrians sent yet another army under [[József Alvinczi]] against Bonaparte in November. Again the Austrians divided their effort, sending Davidovich's corps from the north while Alvinczi's main body attacked from the east. At first they proved victorious over the French at [[Second Battle of Bassano|Bassano]], [[Battle of Calliano|Calliano]], and [[Battle of Caldiero (1796)|Caldiero]]. But Bonaparte ultimately defeated Alvinczi in the [[Battle of Arcole]] southeast of [[Verona]]. The French then turned on Davidovich in great strength and chased him into the Tyrol. Wurmser's only sortie was late and ineffectual. ||| War of the First Coalition ||| 1796 ||| +-1 French Revolutionary Wars ||| Battle of Calliano ||| The Austrians sent yet another army under [[József Alvinczi]] against Bonaparte in November. Again the Austrians divided their effort, sending Davidovich's corps from the north while Alvinczi's main body attacked from the east. At first they proved victorious over the French at [[Second Battle of Bassano|Bassano]], [[Battle of Calliano|Calliano]], and [[Battle of Caldiero (1796)|Caldiero]]. But Bonaparte ultimately defeated Alvinczi in the [[Battle of Arcole]] southeast of [[Verona]]. The French then turned on Davidovich in great strength and chased him into the Tyrol. Wurmser's only sortie was late and ineffectual. ||| War of the First Coalition ||| 1796 ||| +-1 French Revolutionary Wars ||| Battle of Cassano (1799) ||| The War of the Second Coalition began with the [[French campaign in Egypt and Syria|French invasion of Egypt]], headed by Napoleon, in 1798. The Allies took the opportunity presented by the French strategic effort in the Middle East to regain territories lost from the First Coalition. The war began well for the Allies in Europe, where they gradually pushed the French out of Italy and invaded Switzerland—racking up victories at [[Battle of Magnano|Magnano]], [[Battle of Cassano (1799)|Cassano]], and [[Battle of Novi (1799)|Novi]] along the way. However, their efforts largely unraveled with the French victory at [[Second Battle of Zurich|Zurich]] in September 1799, which caused [[Russian Empire|Russia]] to drop out of the war. Meanwhile, Napoleon's forces annihilated a series of Egyptian and [[Ottoman Empire|Ottoman]] armies at the battles of the [[Battle of the Pyramids|Pyramids]], [[Battle of Mount Tabor|Mount Tabor]], and [[Battle of Abukir (1799)|Abukir]]. These victories and the conquest of Egypt further enhanced Napoleon's popularity back in France; he returned in the fall of 1799 to cheering throngs in the streets. However, the [[Royal Navy]] had managed to inflict a humiliating defeat on the French fleet at the [[Battle of the Nile]] in 1798, further strengthening British control of the [[Mediterranean Sea|Mediterranean]]. ||| ||| ||| +-1 French Revolutionary Wars ||| Battle of Castiglione ||| During July and August, Austria sent a fresh army into Italy under [[Dagobert Sigmund von Wurmser|Dagobert Wurmser]]. Wurmser attacked toward Mantua along the east side of [[Lake Garda]], sending [[Peter Quasdanovich]] down the west side in an effort to envelop Bonaparte. Bonaparte exploited the Austrian mistake of dividing their forces to defeat them in detail, but in so doing, he abandoned the siege of Mantua, which held out for another six months (Carl von Clauswitz mentioned in [[On War]] that the siege might have been able to be kept up if Bonaparte had [[Investment (military)|circumvallated]] the city ). Quasdanovich was overcome at [[Battle of Lonato|Lonato]] on 3 August and Wurmser at [[Battle of Castiglione|Castiglione]] on 5 August. Wurmser retreated to the Tyrol, and Bonaparte resumed the siege. ||| War of the First Coalition ||| 1796 ||| +-1 French Revolutionary Wars ||| Battle of Copenhagen (1801) ||| The naval war also continued, with the United Kingdom maintaining a blockade of France by sea. Non-combatants Russia, [[Prussia]], Denmark, and Sweden joined to protect neutral shipping from British attacks, but were unsuccessful. British Admiral [[Horatio Nelson]] defied orders and attacked the Danish fleet in harbor at the [[Battle of Copenhagen (1801)|Battle of Copenhagen]], destroying much of the fleet of one of France's more steady allies during the period. An armistice prevented him from continuing into the [[Baltic Sea]] to attack the Russian fleet at Reval ([[Tallinn]]). Meanwhile, off Gibraltar, the outnumbered French squadron under [[Linois]] rebuffed a first British attack under [[James Saumarez, 1st Baron de Saumarez|Saumarez]] in the [[First Battle of Algeciras]], capturing a line-of-battle ship. In the [[Second Battle of Algeciras]], four days later, the British captured a French ship and sank two others, killing around 2000 French for the loss of 12 British. ||| War of the Second Coalition ||| 1801 ||| +-1 French Revolutionary Wars ||| Battle of Jemappes ||| Meanwhile, the French had been successful on several other fronts, occupying [[Savoy]] and [[Nice]] which were parts of the [[Kingdom of Sardinia]], while General [[Adam Philippe, Comte de Custine|Custine]] invaded Germany, occupying several German towns along the Rhine, and reaching as far as [[Frankfurt]]. Dumouriez went on the offensive in the Austrian Netherlands once again, winning a great victory over the Austrians at the [[Battle of Jemappes]] on 6 November, and occupying the entire country by the beginning of winter. ||| War of the First Coalition ||| 1791–1792 ||| +-1 French Revolutionary Wars ||| Battle of Neerwinden (1793) ||| The Revolutionary Wars began from increasing political pressure on King [[Louis XVI of France]] to prove his loyalty to the new direction France was taking. In the spring of 1792, France declared war on [[Kingdom of Prussia|Prussia]] and [[Habsburg Monarchy|Austria]], which responded with a coordinated invasion of the country that was eventually turned back at the [[Battle of Valmy]] in September 1792. The victory rejuvenated the French nation and emboldened the [[National Convention]] to [[Proclamation of the abolition of the monarchy|abolish the monarchy]]. A series of victories by the [[French Revolutionary Armies|new French armies]] abruptly ended with defeat at [[Battle of Neerwinden (1793)|Neerwinden]] in the spring of 1793. The remainder of the year witnessed additional defeats for the French, and these difficult times allowed the [[Jacobins]] to rise to power and impose the [[Reign of Terror]] as a method of attempting to unify the nation. In 1794, the situation improved dramatically for the French, as huge victories at [[Battle of Fleurus (1794)|Fleurus]] against the Austrians and at the [[Battle of the Black Mountain|Black Mountain]] against the [[Spanish Empire|Spanish]] signaled the start of a new stage in the wars. By 1795, the French had captured the [[Austrian Netherlands]] and knocked Spain and Prussia out of the war with the [[Peace of Basel]]. A hitherto unknown general called [[Napoleon Bonaparte]] began his first [[Italian campaigns of the French Revolutionary Wars|campaign in Italy]] in April 1796. In less than a year, French armies under Napoleon decimated the [[House of Habsburg|Habsburg]] forces and evicted them from the Italian peninsula, winning almost every battle and capturing 150,000 prisoners. With French forces marching towards [[Vienna]], the Austrians sued for peace and agreed to the [[Treaty of Campo Formio]], ending the First Coalition against the Republic. ||| ||| ||| +-1 French Revolutionary Wars ||| Battle of Ostrach ||| In March 1799, the Army of the Danube engaged in two major battles, both in the southwestern German theater. At the intensely fought [[Battle of Ostrach]], 21–2 March 1799, the first battle of the War of the Second Coalition, Austrian forces, under the command of [[Archduke Charles, Duke of Teschen|Archduke Charles]], defeated Jourdan's Army of the Danube. The French suffered significant losses and were forced to retreat from the region, taking up new positions to the west at Messkirch (Mößkirch, Meßkirch), and then at Stockach and Engen. At the second battle, in [[Battle of Stockach (1799)|Stockach]], on 25 March 1799, the Austrian army achieved a decisive victory over the French forces, and again pushed the French army west. Jourdan instructed his generals to take up positions in the Black Forest, and he himself established a base at Hornberg. From there, General Jourdan relegated command of the army to his chief of staff, [[Jean Augustin Ernouf]], and traveled to Paris to ask for more and better troops and, ultimately, to request a medical leave. ||| War of the Second Coalition ||| 1799 ||| +-1 French Revolutionary Wars ||| Battle of Rivoli ||| In Italy, [[Napoleon Bonaparte|Napoleon]]'s armies were laying [[Siege of Mantua (1796-1797)|siege to Mantua]] at the beginning of the year, and a second attempt by Austrians under [[Joseph Alvinczy]] to raise the siege was driven off at the [[Battle of Rivoli]], where the French scored a decisive victory. Finally, on 2 February, [[Dagobert Sigmund von Wurmser|Wurmser]] surrendered Mantua and 18,000 troops. The Papal forces sued for peace, which was granted at [[Tolentino]] on 19 February. Napoleon was now free to attack the Austrian heartland. He advanced directly toward Austria over the [[Julian Alps]], sending [[Barthelemy Catherine Joubert|Barthélemy Joubert]] to invade the [[County of Tyrol|Tyrol]]. ||| War of the First Coalition ||| 1797 ||| +-1 French Revolutionary Wars ||| Battle of Tory Island ||| An expeditionary force was sent to [[County Mayo]], in Ireland, to assist in the [[Irish Rebellion of 1798|rebellion against Britain]] in the summer of 1798. It had some success against British forces, most [[Battle of Castlebar|notably at Castlebar]], but was [[Battle of Ballinamuck|ultimately routed]] while trying to reach [[Dublin]]. French ships sent to assist them [[Battle of Tory Island|were captured]] by the Royal Navy off [[County Donegal]]. ||| War of the First Coalition ||| 1798 ||| +-1 French Revolutionary Wars ||| Battle of Tourcoing ||| On the northern front in the [[Flanders Campaign]], the Austrians and French both prepared offensives in Belgium, with the Austrians besieging Landrecies and advancing towards Mons and Maubeuge. The French prepared an offensive on multiple fronts, with two armies in [[Flanders]] under [[Charles Pichegru|Pichegru]] and [[Jean Victor Marie Moreau|Moreau]], and [[Jean-Baptiste Jourdan|Jourdan]] attacking from the German border. The French withstood several damaging but inconclusive actions before regaining the initiative at the battles of [[Battle of Tourcoing|Tourcoing]] and [[Battle of Fleurus (1794)|Fleurus]] in June. The French armies drove the Austrians, British, and Dutch beyond the [[Rhine river|Rhine]], occupying Belgium, the [[Rhineland]], and the south of the Netherlands. ||| War of the First Coalition ||| 1794 ||| +-1 French Revolutionary Wars ||| Battle of the Nile ||| The War of the Second Coalition began with the [[French campaign in Egypt and Syria|French invasion of Egypt]], headed by Napoleon, in 1798. The Allies took the opportunity presented by the French strategic effort in the Middle East to regain territories lost from the First Coalition. The war began well for the Allies in Europe, where they gradually pushed the French out of Italy and invaded Switzerland—racking up victories at [[Battle of Magnano|Magnano]], [[Battle of Cassano (1799)|Cassano]], and [[Battle of Novi (1799)|Novi]] along the way. However, their efforts largely unraveled with the French victory at [[Second Battle of Zurich|Zurich]] in September 1799, which caused [[Russian Empire|Russia]] to drop out of the war. Meanwhile, Napoleon's forces annihilated a series of Egyptian and [[Ottoman Empire|Ottoman]] armies at the battles of the [[Battle of the Pyramids|Pyramids]], [[Battle of Mount Tabor|Mount Tabor]], and [[Battle of Abukir (1799)|Abukir]]. These victories and the conquest of Egypt further enhanced Napoleon's popularity back in France; he returned in the fall of 1799 to cheering throngs in the streets. However, the [[Royal Navy]] had managed to inflict a humiliating defeat on the French fleet at the [[Battle of the Nile]] in 1798, further strengthening British control of the [[Mediterranean Sea|Mediterranean]]. ||| ||| ||| +-1 French Revolutionary Wars ||| Battle of the Vosges ||| On the middle Rhine front in July General Michaud's Army of the Rhine attempted two offensives in July in the [[Battle of the Vosges|Vosges]], the second of which was successful, but not followed up allowing for a Prussian counter-attack in September. Otherwise this sector of the front was largely quiet over the course of the year. ||| War of the First Coalition ||| 1794 ||| +-1 French Revolutionary Wars ||| First Battle of Zurich ||| The Army was reorganized, and a portion placed under the command of [[André Masséna]] and merged with the Army of Helvetia. Following the reorganization and change in command, the Army participated in several skirmishes and actions on the eastern part of the [[Swiss Plateau]], including the [[Battle of Winterthur (1799)|Battle of Winterthur]]. After this action, three forces of the imperial army united north of Zürich, completing a partial encirclement of Massena's combined Army of the Danube and Army of Switzerland. A few days later, at the [[First Battle of Zurich]], Massena was forced west, across the Limmat River. In late summer, 1799, Charles was ordered to support imperial activities in the middle Rhineland; he withdrew north across the Rhine, and marched toward [[Mannheim]], leaving Zürich and northern Switzerland in the hands of the inexperienced [[Alexander Korsakov]] and 25,000 Russian troops. Although the highly capable [[Friedrich Freiherr von Hotze]] remained in support, his 15,000 men were not able to counter Korsakov's poor defensive arrangements. Three weeks later, at the [[Second Battle of Zurich]], the Russian force was annihilated, and Hotze was killed south of Zürich. This left Massena in control of northern Switzerland, and closed forced Suvorov into an arduous three-week march into the Vorarlberg, where his troops arrived, starving and exhausted, in mid-October. ||| War of the Second Coalition ||| 1799 ||| +-1 French Revolutionary Wars ||| Second Battle of Zurich ||| The War of the Second Coalition began with the [[French campaign in Egypt and Syria|French invasion of Egypt]], headed by Napoleon, in 1798. The Allies took the opportunity presented by the French strategic effort in the Middle East to regain territories lost from the First Coalition. The war began well for the Allies in Europe, where they gradually pushed the French out of Italy and invaded Switzerland—racking up victories at [[Battle of Magnano|Magnano]], [[Battle of Cassano (1799)|Cassano]], and [[Battle of Novi (1799)|Novi]] along the way. However, their efforts largely unraveled with the French victory at [[Second Battle of Zurich|Zurich]] in September 1799, which caused [[Russian Empire|Russia]] to drop out of the war. Meanwhile, Napoleon's forces annihilated a series of Egyptian and [[Ottoman Empire|Ottoman]] armies at the battles of the [[Battle of the Pyramids|Pyramids]], [[Battle of Mount Tabor|Mount Tabor]], and [[Battle of Abukir (1799)|Abukir]]. These victories and the conquest of Egypt further enhanced Napoleon's popularity back in France; he returned in the fall of 1799 to cheering throngs in the streets. However, the [[Royal Navy]] had managed to inflict a humiliating defeat on the French fleet at the [[Battle of the Nile]] in 1798, further strengthening British control of the [[Mediterranean Sea|Mediterranean]]. ||| ||| ||| +-1 French Revolutionary Wars ||| Siege of Toulon ||| France suffered severe reverses at first. They were driven out of the [[Austrian Netherlands]], and serious revolts flared in the west and south of France. One of these, at [[Toulon]], was the first serious taste of action for an unknown young artillery officer [[Napoleon]] Bonaparte. He contributed to the [[Siege of Toulon|siege of the city and its harbor]] by planning an effective assault with well-placed artillery batteries raining projectiles down on rebel positions. This performance helped make his reputation as a capable tactician, and it fueled his meteoric rise to military and political power. Once the city was occupied, he participated in pacifying the rebelling citizens of Toulon with the same artillery that he first used to conquer the city. ||| War of the First Coalition ||| 1793 ||| +-1 French Revolutionary Wars ||| War of the Second Coalition ||| The '''French Revolutionary Wars''' were a series of sweeping military conflicts, lasting from 1792 until 1802, resulting from the [[French Revolution]]. Primarily fought between the [[French First Republic]] and several European monarchies, they are traditionally divided in two periods: the [[War of the First Coalition]] (1792–1797) and the [[War of the Second Coalition]] (1798–1802). Initially confined to Europe, the wars gradually assumed a global dimension as the political ambitions of the Revolution expanded. After a decade of constant warfare and aggressive diplomacy, France had succeeded in seizing and conquering a wide array of territories, from the [[Italian Peninsula]] and the [[Low Countries]] in Europe to the [[Louisiana Territory]] in North America. French success in these conflicts ensured the spread of revolutionary principles over much of Europe and the Middle East. The wars also led to the rebirth of professional armies and the emergence of [[total war]], which defined all future modern conflicts. ||| ||| ||| +-1 French Wars of Religion ||| Battle of Ivry ||| The [[Battle of Ivry]], fought on 14 March 1590, was another decisive victory for Henry against forces led by the [[Charles of Lorraine, Duke of Mayenne|Duke of Mayenne]]. Henry's forces then went on [[Siege of Paris (1590)|to lay siege]] to Paris, but the siege was broken by Spanish support (under the command of the [[Alexander Farnese, Duke of Parma|Duke of Parma]]), by the end of August; a situation repeated at the Siege of Rouen (November 1591 – March 1592). ||| Henry IV's 'Conquest of the Kingdom' (1589–1593) ||| ||| +-1 French Wars of Religion ||| Siege of Calais (1596) ||| By the end of 1594, certain League members still worked against Henry across the country, but all relied on Spain's support. In January 1595, the king declared war on Spain to show Catholics that Spain was using religion as a cover for an attack on the French state—and to show Protestants that his conversion had not made him a puppet of Spain. Also, he hoped to take the war to Spain and make territorial gain. The conflict mostly consisted of military action aimed at League members, such as the [[Battle of Fontaine-Française]], though the Spanish launched a concerted offensive in 1595, taking [[Siege of Doullens|Doullens]], [[Cambrai]] and [[Le Catelet]] and in the spring of 1596 [[Siege of Calais (1596)|capturing Calais]] by April. Following the [[Siege of Amiens (1597)|Spanish capture of Amiens]] in March 1597 the French crown laid siege until its surrender in September. After the Siege of Amiens Henry's concerns turned to the situation in [[Brittany]]; the king sent [[Pomponne de Bellièvre|Bellièvre]] and Brulart de Sillery to negotiate a peace with Spain. The war was drawn to an official close after the [[Edict of Nantes]], with the [[Peace of Vervins]] in May 1598. ||| Toward peace (1593–98) ||| War with Spain (1595–98) ||| +-1 French and Indian War ||| Battle of Carillon ||| The third invasion was stopped with the improbable French victory in the [[Battle of Carillon]], in which 3,600 Frenchmen famously and decisively defeated Abercrombie's force of 18,000 regulars, militia and Native American allies outside the fort the French called Carillon and the British called Ticonderoga. Abercrombie saved something from the disaster when he sent [[John Bradstreet]] on an expedition that successfully [[Battle of Fort Frontenac|destroyed Fort Frontenac]], including caches of supplies destined for New France's western forts and furs destined for Europe. Abercrombie was recalled and replaced by [[Jeffery Amherst, 1st Baron Amherst|Jeffery Amherst]], victor at Louisbourg. ||| Course of the war ||| British conquest, 1758–1760 ||| 1758 +-1 French and Indian War ||| Battle of Fort Bull ||| Governor Vaudreuil, who harboured ambitions to become the French commander in chief (in addition to his role as governor), acted during the winter of 1756 before those reinforcements arrived. Scouts had reported the weakness of the British supply chain, so he ordered an attack against the forts Shirley had erected at the Oneida Carry. In the March [[Battle of Fort Bull]], French forces destroyed the fort and large quantities of supplies, including 45,000 pounds of gunpowder. They set back any British hopes for campaigns on Lake Ontario, and endangered the Oswego garrison, already short on supplies. French forces in the Ohio valley also continued to intrigue with Indians throughout the area, encouraging them to raid frontier settlements. This led to ongoing alarms along the western frontiers, with streams of refugees returning east to get away from the action. ||| Course of the war ||| French victories, 1756–1757 ||| +-1 French and Indian War ||| Battle of Jumonville Glen ||| The war was fought primarily along the frontiers between New France and the British colonies, from [[Province of Virginia|Virginia]] in the South to [[Nova Scotia]] in the North. It began with a dispute over control of the confluence of the [[Allegheny River|Allegheny]] and [[Monongahela River|Monongahela]] rivers, called the Forks of the Ohio, and the site of the French [[Fort Duquesne]] and present-day [[Pittsburgh]], [[Pennsylvania]]. The dispute erupted into violence in the [[Battle of Jumonville Glen]] in May 1754, during which Virginia militiamen under the command of 22-year-old [[George Washington]] ambushed a French patrol. ||| ||| ||| +-1 French and Indian War ||| Battle of Signal Hill ||| Most of the fighting between France and Britain in continental North America ended in 1760, while the fighting in Europe continued. The notable exception was the French seizure of [[St. John's, Newfoundland]]. When General Amherst heard of this surprise action, he immediately dispatched troops under his nephew [[William Amherst (British Army officer)|William Amherst]], who regained control of Newfoundland after the [[Battle of Signal Hill]] in September 1762. ||| Course of the war ||| End of the war ||| +-1 French and Indian War ||| Battle of the Plains of Abraham ||| After the disastrous 1757 British campaigns (resulting in a [[Louisbourg Expedition (1757)|failed expedition against Louisbourg]] and the [[Siege of Fort William Henry]], which was followed by Indian torture and massacres of British victims), the British government fell. [[William Pitt, 1st Earl of Chatham|William Pitt]] came to power and significantly increased British military resources in the colonies at a time when France was unwilling to risk large convoys to aid the limited forces it had in New France. France concentrated its forces against [[Prussia]] and its allies in the European theatre of the war. Between 1758 and 1760, the British military launched a campaign to capture the [[Canada (New France)|Colony of Canada]]. They succeeded in capturing territory in surrounding colonies and ultimately [[Battle of the Plains of Abraham|Quebec]]. Though the British were later defeated [[Battle of Sainte-Foy|at Sainte Foy]] in Quebec, the French ceded Canada in accordance with the 1763 treaty. ||| ||| ||| +-1 French and Indian War ||| Battle on Snowshoes (1757) ||| French irregular forces (Canadian scouts and Indians) harassed Fort William Henry throughout the first half of 1757. In January they [[Battle on Snowshoes (1757)|ambushed British rangers]] near Ticonderoga. In February they launched a daring raid against the position across the frozen Lake George, destroying storehouses and buildings outside the main fortification. In early August, Montcalm and 7,000 troops besieged the fort, which capitulated with an agreement to withdraw under parole. When the withdrawal began, some of Montcalm's Indian allies, angered at the lost opportunity for loot, attacked the British column, killing and capturing several hundred men, women, children, and slaves. The aftermath of the siege may have contributed to the transmission of [[smallpox]] into remote Indian populations; as some Indians were reported to have traveled from beyond the Mississippi to participate in the campaign and returned afterward having been exposed to European carriers. ||| Course of the war ||| French victories, 1756–1757 ||| +-1 French and Indian War ||| Siege of Louisbourg (1758) ||| The British failures in North America, combined with other failures in the European theater, led to the fall from power of Newcastle and his principal military advisor, the Duke of Cumberland. Newcastle and Pitt [[Second Newcastle Ministry|joined in an uneasy coalition]] in which Pitt dominated the military planning. He embarked on a plan for the 1758 campaign that was largely developed by Loudoun. He had been replaced by Abercrombie as commander in chief after the failures of 1757. Pitt's plan called for three major offensive actions involving large numbers of regular troops, supported by the provincial militias, aimed at capturing the heartlands of New France. Two of the expeditions were successful, with [[Battle of Fort Duquesne|Fort Duquesne]] and [[Siege of Louisbourg (1758)|Louisbourg]] falling to sizable British forces. ||| Course of the war ||| British conquest, 1758–1760 ||| +-1 French invasion of Russia ||| Battle of Vyazma ||| Supplying the army became an impossibility. The lack of grass and feed weakened the remaining horses, almost all of which died or were killed for food by starving soldiers. Without horses, the French cavalry ceased to exist; cavalrymen had to march on foot. Lack of horses meant many cannons and wagons had to be abandoned. Much of the artillery lost was replaced in 1813, but the loss of thousands of wagons and [[Horse training|trained horses]] weakened Napoleon's armies for the remainder of his wars. Starvation and disease took their toll, and desertion soared. Many of the deserters were taken prisoner or killed by Russian peasants. Badly weakened by these circumstances, the French military position collapsed. Further defeats were inflicted on elements of the Grande Armée at [[Battle of Vyazma|Vyazma]], [[Battle of Krasnoi|Krasnoi]] and [[Second Battle of Polotsk|Polotsk]]. The crossing of the river [[Berezina]] was a [[Battle of Berezina|final French calamity]]; two Russian armies inflicted horrendous casualties on the remnants of the Grande Armée as it struggled to escape across pontoon bridges. ||| {{anchor|Retreat from Moscow}}Retreat and losses ||| ||| +-1 Gallic Wars ||| Avaricum ||| The uprising was, however, merely the prelude to a much bigger campaign led by [[Vercingetorix]], chief of the [[Arverni]] tribe of central Gaul, who successfully united many Gallic tribes and states under his leadership. Recognizing that the Romans had an upper hand on the battlefield due to their panoply and training, he declined to give battle against them and instead fought a '[[scorched earth]]' campaign to deprive them of supplies. Caesar hurriedly returned from Italy to take charge of the campaign, pursuing the Gauls and capturing the town of [[Avaricum]] (modern city of Bourges) but suffering a defeat at [[Gergovia]]. Vercingetorix, instead of staying mobile and in the open, chose to hold out at [[Alesia (city)|Alesia]] (see [[Battle of Alesia]]). Caesar successfully besieged him and beat off a huge Gallic relief force who ran out of food and had to disperse. This effectively marked the end of the Gallic Wars, although mopping-up actions took place throughout 51 BC. A number of lesser rebellions took place subsequently, but Roman control of Gaul was not seriously challenged again until the second century AD. ||| Course ||| Consolidation and Gallic offensives ||| +-1 Genpei War ||| Battle of Dan-no-ura ||| It began with Minamoto support for a different candidate to take the throne, in conflict with the Taira's nomination. The ensuing [[Battle of Uji (1180)|Battle of Uji]] took place just outside [[Kyoto]], starting a five-year-long war, concluding with a decisive Minamoto victory in the naval [[Battle of Dan-no-ura]]. ||| ||| ||| +-1 Ghost Dance War ||| Wounded Knee Massacre ||| The '''Ghost Dance War''' was an armed conflict in the [[United States]] which between [[Native Americans in the United States|Native Americans]] and the [[United States government]] from 1890 until 1891. It involved the [[Wounded Knee Massacre]] wherein the [[7th Cavalry Regiment|7th Cavalry]] massacred around 300 Lakota Sioux, including women, children, and other noncombatants, at [[Wounded Knee, South Dakota|Wounded Knee]] on 29 December 1890. The Ghost Dance War ended when [[Sioux]] leader [[Kicking Bear]] surrendered on 15 January 1891. ||| ||| ||| +-1 Glorious Revolution ||| Battle of Reading (1688) ||| After consolidating political and financial support, William crossed the [[North Sea]] and [[English Channel]] with a large invasion fleet in November 1688, landing at [[Torbay]]. After only two minor clashes between the two opposing armies in England, and [[anti-Catholic riots]] in several towns, James's regime collapsed, largely because of a lack of resolve shown by the king. However, this was followed by the protracted [[Williamite War in Ireland]] and [[Jacobite Rising#Rising in Scotland|Dundee's rising in Scotland]]. In England's distant American colonies, the revolution led to the collapse of the [[Dominion of New England]] and the overthrow of the [[Province of Maryland]]'s government. Following a defeat of his forces at the [[Battle of Reading (1688)|Battle of Reading]] on 9 December, James and his wife fled England; James, however, returned to London for a two-week period that culminated in his final departure for France on 23 December. By threatening to withdraw his troops, William in February 1689 convinced a newly chosen [[Convention Parliament (1689)|Convention Parliament]] to make him and his wife [[joint monarchs]]. ||| ||| ||| +-1 Great Turkish War ||| Battle of Vienna ||| After a few years of peace, the [[Ottoman Empire]] attacked the [[Habsburg Monarchy|Habsburg Empire]]. The Turks almost captured [[Vienna]], but [[John III Sobieski]] led a Christian alliance that defeated them in the [[Battle of Vienna]] which stalled the Ottoman Empire's [[hegemony]] in south-eastern Europe. ||| Overview ||| ||| +-1 Greco-Persian Wars ||| Battle of Marathon ||| Seeking to secure his empire from further revolts and from the interference of the mainland Greeks, Darius embarked on a scheme to conquer Greece and to punish Athens and Eretria for the burning of Sardis. The [[first Persian invasion of Greece]] began in 492 BC, with the Persian general [[Mardonius]] successfully re-subjugating [[Thrace]] and conquering [[Macedon]] before several mishaps forced an early end to the rest of the campaign. In 490 BC a second force was sent to Greece, this time across the [[Aegean Sea]], under the command of [[Datis]] and [[Artaphernes (son of Artaphernes)|Artaphernes]]. This expedition subjugated the [[Cyclades]], before [[Siege of Eretria|besieging, capturing and razing]] Eretria. However, while en route to attack Athens, the Persian force was decisively defeated by the Athenians at the [[Battle of Marathon]], ending Persian efforts for the time being. ||| ||| ||| +-1 Greco-Persian Wars ||| Battle of Thermopylae ||| Darius then began to plan to completely conquer Greece, but died in 486 BC and responsibility for the conquest passed to his son [[Xerxes I|Xerxes]]. In 480 BC, Xerxes personally led the [[second Persian invasion of Greece]] with one of the largest ancient armies ever assembled. Victory over the Allied Greek states at the famous [[Battle of Thermopylae]] allowed the Persians to torch an evacuated Athens and overrun most of Greece. However, while seeking to destroy the combined Greek fleet, the Persians suffered a severe defeat at the [[Battle of Salamis]]. The following year, the confederated Greeks went on the offensive, defeating the Persian army at the [[Battle of Plataea]], and ending the invasion of Greece. ||| ||| ||| +-1 Greek War of Independence ||| Battle of Alamana ||| These initial Greek successes were soon put in peril after two subsequent defeats at the battles of [[Battle of Alamana|Alamana]] and Eleftherohori against the army of [[Omer Vrioni]]. Another significant loss for the Greeks was the death of Diakos, a promising military leader, who was captured in Alamana and executed by the Turks, when he refused to declare allegiance to the Sultan. The Greeks managed to halt the Turkish advance at the [[Battle of Gravia]] under the leadership of [[Odysseas Androutsos]], who, with a handful of men, inflicted heavy casualties upon the Turkish army. After his defeat and the successful retreat of Androutsos' force, Omer Vrioni postponed his advance towards Peloponnese awaiting reinforcements; instead, he invaded Livadeia, which he captured on 10 June, and Athens, where he lifted the siege of Acropolis. After a Greek force of 2,000 men managed to destroy at [[Battle of Vassilika|Vassilika]] a Turkish relief army on its way to Turkish forces in Attica, Vrioni abandoned [[Attica]] in September and retreated to [[Ioannina]]. By the end of 1821, the revolutionaries had managed, after their victories at Vassilika and Gravia, to temporarily secure their positions in Central Greece. ||| Outbreak of the revolution ||| Central Greece ||| +-1 Greek War of Independence ||| Battle of Dervenakia ||| The successive military campaigns of the Ottomans in Western and Eastern Greece were repulsed : in 1822 [[Mahmud Dramali Pasha]] crossed Roumeli and invaded Morea, but suffered a serious defeat in [[Battle of Dervenakia|Dervenakia]]. the announcement of his death in Europe generated a wave of sympathy for the Greek cause. The campaign ended after the [[Second Siege of Missolonghi]] in December 1823. ||| 1822–24 ||| ||| +-1 Greek War of Independence ||| Battle of Petra ||| The final major engagement of the war was the [[Battle of Petra]], which occurred north of [[Attica]]. Greek forces under Demetrius Ypsilantis, for the first time trained to fight as a regular European army rather than as guerrilla bands, advanced against Aslan Bey's forces and defeated them. The Turks surrendered all lands from [[Livadeia]] to the [[Spercheios River]] in exchange for safe passage out of [[Central Greece]]. As [[George Finlay]] stresses: ||| Foreign intervention against the Ottomans ||| Change of stance ||| Battle of Navarino (1827) +-1 Greek War of Independence ||| Third Siege of Missolonghi ||| At the same time, the Turkish armies in Central Greece were besieging the city of [[Missolonghi]] for the [[Third Siege of Missolonghi|third time]]. The siege had begun on 15 April 1825, the day on which Navarino had fallen to Ibrahim. ||| Egypt intervenes to assist the Ottomans ||| ||| +-1 Gulf War ||| Battle of the Bridges ||| Iraqi commandos infiltrated the Kuwaiti border first to prepare for the major units which began the attack at midnight. The Iraqi attack had two prongs, with the primary attack force driving south straight for Kuwait City down the main highway, and a supporting attack force entering Kuwait farther west, but then turning and driving east, cutting off Kuwait City from the country's southern half. The commander of a Kuwaiti armored battalion, 35th Armoured [[Brigade]], deployed them against the Iraqi attack and was able to conduct a robust defense ([[Battle of the Bridges]]), near [[Al Jahra]], west of Kuwait City. ||| Invasion of Kuwait ||| ||| +-1 Gulf War ||| Invasion of Kuwait ||| The '''Gulf War''' (2 August 1990 – 28 February 1991), codenamed '''Operation Desert Shield''' (2 August 1990 – 17 January 1991) for operations leading to the buildup of troops and defense of Saudi Arabia and '''Operation Desert Storm''' (17 January 1991 – 28 February 1991) in its combat phase, was a war - in the [[Persian Gulf]] region - waged by [[Coalition of the Gulf War|coalition forces]] from 34 nations led by the United States against [[Ba'athist Iraq|Iraq]] in response to Iraq's [[Invasion of Kuwait|invasion and annexation of Kuwait]]. ||| ||| ||| +-1 Gunboat War ||| Battle of Copenhagen (1807) ||| The naval conflict between Britain and Denmark commenced with the [[Battle of Copenhagen (1801)|First Battle of Copenhagen]] in 1801 when [[Horatio Nelson]]'s squadron of Admiral Parker's fleet attacked the Danish capital. This came as a basis of Denmark-Norway's policy of [[armed neutrality]] during the latter stages of the [[French Revolutionary Wars]], where Denmark used its naval forces to protect trade flowing within, into and out of the Danish-Norwegian waters. Hostilities between Denmark-Norway and the United Kingdom broke out again by the [[Battle of Copenhagen (1807)|Second Battle of Copenhagen]] in 1807, when the British attacked the Danish capital to ensure that the Danish-Norwegian fleet did not fall into the hands of [[Napoleon]]. ||| Background ||| ||| +-1 Haitian Revolution ||| Saint-Domingue expedition ||| In 1801, Louverture issued a constitution for Saint-Domingue that decreed he would be governor-for-life and called for black autonomy and a sovereign black state. In response, [[Napoleon Bonaparte]] dispatched a [[Saint-Domingue expedition|large expeditionary force]] of French soldiers and warships to the island, led by Bonaparte's brother-in-law [[Charles Leclerc]], to restore French rule. They were under secret instructions to restore slavery, at least in the formerly Spanish-held part of the island. The numerous French soldiers were accompanied by mulatto troops led by [[Alexandre Pétion]] and André Rigaud, mulatto leaders who had been defeated by Toussaint three years earlier. During the struggles, some of Toussaint's closest allies, including [[Jean-Jacques Dessalines]], defected to Leclerc. ||| Leadership of Louverture ||| ||| +-1 Hezbollah involvement in the Syrian Civil War ||| Syrian Civil War spillover in Lebanon ||| '''[[Hezbollah]] involvement in the Syrian Civil War''' has been substantial almost since the beginning of armed insurgency in late 2011, and turned into active support and troops deployment since 2012. By 2014, Hezbollah involvement was steady and staunch in support of the Ba'athist government forces across Syria. Hezbollah deployed several thousand fighters in Syria and by 2015 lost as many as 500 fighters in its support to the Syrian Ba'athist side. Hezbollah has also been very active to prevent rebel penetration from Syria to Lebanon, being one of the most active forces in the [[Syrian Civil War spillover in Lebanon]]. ||| ||| ||| +-1 Hundred Days ||| Battle of Occhiobello ||| |9 April||The high point for the Neapolitans as Murat attempted to force a crossing of the River Po. However, he is defeated at the [[Battle of Occhiobello]] and for the remainder of the war, the Neapolitans would be in full retreat. ||| Timeline ||| ||| +-1 Hundred Days ||| Battle of Waterloo ||| Napoleon returned while the [[Congress of Vienna]] was sitting. On 13{{nbsp}}March, seven days before Napoleon reached Paris, the powers at the Congress of Vienna [[s:Declaration at the Congress of Vienna|declared him an outlaw]], and on 25{{nbsp}}March [[Austrian Empire|Austria]], [[Kingdom of Prussia|Prussia]], [[Russian Empire|Russia]] and the [[United Kingdom of Great Britain and Ireland|United Kingdom]], members of the Seventh Coalition, [[s:Treaty of Vienna (Seventh Coalition)#ART.II|bound themselves]] to put 150,000 men each into the field to end his rule.{{sfn|Hamilton-Williams|1996|p=59}} This set the stage for the last conflict in the [[Napoleonic Wars]], the defeat of Napoleon at the [[Battle of Waterloo]],{{efn|Waterloo is one of the most famous battles in history}} the restoration of the French monarchy for the second time and the permanent exile of Napoleon to the distant island of [[Saint Helena]], where he died in May 1821. ||| ||| ||| +-1 Hundred Days ||| Reduction of the French fortresses in 1815 ||| [[Battle of Issy|Issy]] was the last field engagement of the Hundred Days. There was a [[Reduction of the French fortresses in 1815|campaign against fortresses]] still commanded by [[Bonapartism|Bonapartist]] governors that ended with the capitulation of [[Longwy]] on 13 September 1815. The [[Treaty of Paris (1815)|Treaty of Paris]] was signed on 20 November 1815 bringing the [[Napoleonic Wars]] to a formal end. ||| Treaty of Paris ||| ||| +-1 Hundred Days ||| Waterloo Campaign ||| During the Hundred Days both the Coalition nations and Napoleon I mobilised for war. Upon re-assumption of the throne, Napoleon found that he was left with little by Louis XVIII. There were 56,000 soldiers of which 46,000 were ready to campaign.{{sfn|Chesney|1868|p=34}} By the end of May the total armed forces available to Napoleon had reached 198,000 with 66,000 more in depots training up but not yet ready for deployment.{{sfn|Chesney|1868|p=35}} By the end of May Napoleon had formed ''[[L'Armée du Nord]]'' (the 'Army of the North') which, led by himself, would participate in the [[Waterloo Campaign]]. ||| Military mobilisation ||| ||| +-1 Hundred Days Offensive ||| Battle of Cambrai (1918) ||| On 8 October, the First and Third British Armies broke through the Hindenburg Line at the [[Battle of Cambrai (1918)|Second Battle of Cambrai]]. This collapse forced the German High Command to accept that the war had to be ended. The evidence of failing German morale also convinced many Allied commanders and political leaders that the war could be ended in 1918; previously, all efforts had been concentrated on building up forces to mount a decisive attack in 1919. ||| Battles ||| Battles of the Hindenburg Line ||| +-1 Hussite Wars ||| Battle of Lipany ||| On 15 October 1431, the Council of Basel issued a formal invitation to the Hussites to take part in its deliberations. Prolonged negotiations ensued; but finally a Hussite embassy, led by Prokop and including [[John of Rokycan]], the Taborite bishop [[Nicolas of Pelhřimov]], the ‘English Hussite' [[Peter Payne]] and many others, arrived at Basel on 4 January 1433. No agreement could be reached, though. Negotiations were not, however, broken off, and a change in the political situation of Bohemia finally resulted in a settlement. In 1434 war again broke out between the Utraquists and the Taborites. On 30 May 1434, the Taborite army, led by Prokop the Great and [[Prokop the Lesser]], who both fell in the battle, was totally defeated and almost annihilated at the [[Battle of Lipany]]. ||| New negotiations and the defeat of radical Hussites ||| ||| +-1 Iberian War ||| Battle of Satala (530) ||| In 530, Belisarius led the Romans to victory over a much larger Persian force under Mihran through his superior generalship in the [[Battle of Daraa|Battle of Dara]], while Sittas and Dorotheus [[Battle of Satala (530)|defeated]] a Persian army under Mihr-Mihroe at [[Satala]]. In 531, Belisarius was defeated by Persian and Lakhmid forces at the [[Battle of Callinicum]], but, during the summer of the same year, the Romans captured some forts in Armenia, and effectively repulsed a Persian offensive. ||| War ||| ||| +-1 Impact of the Arab Spring ||| Occupy Wall Street ||| On September 17, 2011, protests called '[[Occupy Wall Street]]' sprung up around New York City's financial district [[Wall Street]]. The protests responded to recent government bailouts for financial institutions and the growing income inequality in America. This movement would come to be called the [['Occupy' protests|'Occupy' movement]], which have sprung up in cities across the United States and in some countries around the world. ||| The Americas ||| United States ||| +-1 Impact of the Arab Spring ||| Occupy movement ||| In May 2012 students and other youth, supported by farmers and unionized workers began a protest against the [[Institutional Revolutionary Party|PRI]], the former ruling party, and their presidential candidate, [[Enrique Peña Nieto]]. Their chief grievance is the claim that, in their coverage of the [[Mexican general election, 2012|2012 Mexican presidential election]], the national television duopoly [[Televisa]] and [[TV Azteca]] have been biased towards Peña Nieto, The protest movement use the slogan ''[[Yo Soy 132]]'' - 'I am 132', which echos the [[Occupy movement]]'s slogan '[[We are the 99%]]'. The protest movement has also been described as 'the Mexican Spring' in local media. ||| The Americas ||| Mexico ||| +-1 Impact of the Arab Spring ||| Tuareg rebellion (2012) ||| A [[Tuareg rebellion (2012)|Tuareg rebellion]] in early 2012 that forced the [[military of Mali|armed forces]] of [[Mali]], a [[West Africa]]n country with significant holdings in the [[Sahara]], to withdraw south of the line the [[National Movement for the Liberation of Azawad]] (MNLA) claimed as the [[Tuareg people|Tuareg]] homeland's southwestern frontier by April. ||| Africa ||| Mali ||| +-1 Indian Rebellion of 1857 ||| Siege of Delhi ||| The Company established a base on the Delhi ridge to the north of the city and the [[Siege of Delhi]] began. The siege lasted roughly from 1 July to 21 September. However, the encirclement was hardly complete, and for much of the siege the Company forces were outnumbered and it often seemed that it was the Company forces and not Delhi that was under siege, as the rebels could easily receive resources and reinforcements. For several weeks, it seemed that disease, exhaustion and continuous sorties by rebels from Delhi would force the Company forces to withdraw, but the outbreaks of rebellion in the [[Punjab region|Punjab]] were forestalled or suppressed, allowing the Punjab Movable Column of British, Sikh and Pakhtun soldiers under [[John Nicholson (general)|John Nicholson]] to reinforce the besiegers on the Ridge on 14 August. ||| The Revolt ||| Delhi ||| +-1 Indo-Pakistani War of 1965 ||| Battle of Chawinda ||| After India breached the Madhupur canal on 11 September, the Khem Karan counter-offensive was halted, affecting Pakistan's strategy substantially. Although India's tank formations experienced some results, India's attack at the [[Battle of Chawinda]], led by its 1st Armoured Division and supporting units, was brought to halt by the newly raised 6th Armoured Division (ex-100th independent brigade group) in the Chawinda sector. Pakistan claimed that Indians lost 120 tanks at Chawinda. ||| The war ||| Tank battles ||| +-1 Insurgency in the North Caucasus ||| October 2013 Volgograd bus bombing ||| * [[October 2013 Volgograd bus bombing]] ||| Terrorist incidents ||| ||| +-1 Invasion of Georgia (1742) ||| Battle of Gully Hole Creek ||| The 1742 '''Invasion of Georgia''' was a military campaign by [[Spanish Empire|Spanish]] forces, based in Florida, which attempted to seize and occupy disputed territory held by the [[Kingdom of Great Britain|British]] colony of [[Georgia (colony)|Georgia]]. The campaign was part of a larger conflict which became known as the [[War of Jenkins' Ear]]. Local British forces under the command of the Governor [[James Oglethorpe]] rallied and defeated the Spaniards at the [[Battle of Bloody Marsh]] and the [[Battle of Gully Hole Creek]], forcing them to withdraw. Britain's ownership of Georgia was formally recognized by Spain in the subsequent [[Treaty of Madrid (13 January 1750)|Treaty of Madrid]]. ||| ||| ||| +-1 Invasion of Normandy ||| Normandy landings ||| A more detailed order of battle for D-Day itself can be found at [[Normandy landings]]. ||| German order of battle ||| ||| +-1 Invasion of Poland ||| Battle of Mokra ||| Following several German-staged incidents (like the [[Gleiwitz incident]], a part of [[Operation Himmler]]), which German propaganda used as a [[pretext]] to claim that German forces were acting in [[self-defence]], the first regular act of war took place on 1 September 1939, at 04:40, when the ''Luftwaffe'' [[Bombing of Wieluń|attacked the Polish town of Wieluń]], destroying 75% of the city and killing close to 1,200 people, most of them civilians. This invasion subsequently began [[World War II]]. Five minutes later, the old German [[pre-dreadnought battleship]] ''[[German battleship Schleswig-Holstein|Schleswig-Holstein]]'' opened fire on the Polish military transit depot at [[Battle of Westerplatte|Westerplatte]] in the [[Free City of Danzig]] on the [[Baltic Sea]]. At 08:00, German troops—still without a formal declaration of war issued—[[Battle of Mokra|attacked near the Polish town of Mokra]]. The [[Battle of the Border]] had begun. Later that day, the Germans attacked on Poland's western, southern and northern borders, while German aircraft began raids on Polish cities. The main axis of attack led eastwards from Germany proper through the western Polish border. Supporting attacks came from [[East Prussia]] in the north, and a co-operative German-[[Slovak Republic (1939–1945)|Slovak]] tertiary attack by units ([[Field Army Bernolák|Field Army 'Bernolák']]) from German-allied [[Slovak Republic (1939–1945)|Slovakia]] in the south. All three assaults converged on the Polish capital of Warsaw. ||| Details of the campaign ||| Phase 1: German invasion ||| +-1 Invasion of Poland ||| Battle of Szack ||| Despite a Polish victory at the [[Battle of Szack]], after which the Soviets executed all the officers and [[non-commissioned officer|NCOs]] they had captured, the Red Army reached the line of rivers [[Narew]], Bug River, Vistula and San by 28 September, in many cases meeting German units advancing from the other direction. Polish defenders on the [[Hel peninsula]] on the shore of the [[Baltic Sea]] held out until 2 October. The last operational unit of the Polish Army, General [[Franciszek Kleeberg]]'s ''[[Independent Operational Group Polesie|Samodzielna Grupa Operacyjna 'Polesie']]'', surrendered after the four-day [[Battle of Kock (1939)|Battle of Kock]] near [[Lublin]] on 6 October marking the end of the September Campaign. ||| Details of the campaign ||| Phase 2: after Soviet Union invasion from the east ||| +-1 Invasion of Poland ||| Battle of the Bzura ||| German forces invaded Poland from the north, south, and west the morning after the [[Gleiwitz incident]]. As the Wehrmacht advanced, Polish forces withdrew from their forward bases of operation close to the Polish–German border to more established lines of defence to the east. After the mid-September Polish defeat in the [[Battle of the Bzura]], the Germans gained an undisputed advantage. Polish forces then [[Plan West|withdrew to the southeast]] where they prepared for a long defence of the [[Romanian Bridgehead]] and awaited expected support and relief from [[French Third Republic|France]] and the [[United Kingdom]]. Those two countries had pacts with Poland and had declared war on Germany on 3 September, though in the end their aid to Poland in the September campaign was very limited. ||| ||| ||| +-1 Iraq War ||| 2003 invasion of Iraq ||| The '''Iraq War''' was a protracted armed conflict that began with the [[2003 invasion of Iraq]] led by the United States. The invasion regime toppled the government of [[Saddam Hussein]]. However, the conflict continued for much of the next decade as an [[insurgency]] emerged to oppose the [[Multi-National Force – Iraq|occupying forces]] and the post-invasion Iraqi government. {{cite web |title=Iraq War|url=http://www.britannica.com/EBchecked/topic/870845/Iraq-War ||| ||| ||| +-1 Iraq War ||| Battle of Basra (2008) ||| Meanwhile, the proficiency of the Iraqi military increased as it launched a spring offensive against Shia militias, which Prime Minister [[Nouri al-Maliki]] had previously been criticized for allowing to operate. This began with a March [[Battle of Basra (2008)|operation]] against the [[Mehdi Army]] in Basra, which led to fighting in Shia areas up and down the country, especially in the [[Sadr City]] district of Baghdad. By October, the British officer in charge of Basra said that since the operation the town had become 'secure' and had a murder rate comparable to [[Manchester]] in England. ||| Post-invasion phase ||| 2008: Civil war continues ||| +-1 Iraq War ||| Operation Red Dawn ||| The invasion began on 20 March 2003, with the U.S., joined by the United Kingdom and several coalition allies, launching a '[[shock and awe]]' bombing campaign. Iraqi forces were quickly overwhelmed as U.S. forces swept through the country. The invasion led to the collapse of the [[Ba'athist Iraq|Ba'athist government]]; [[Operation Red Dawn|Saddam was captured]] in December 2003 and [[Execution of Saddam Hussein|executed]] by a military court three years later. However, the power vacuum following Saddam's demise and the mismanagement of [[Coalition Provisional Authority|the occupation]] led to widespread [[Civil war in Iraq (2006–07)|sectarian violence]] between [[Shia Islam|Shias]] and [[Sunni Islam|Sunnis]] as well as a [[Iraqi insurgency (2003–11)|lengthy insurgency]] against U.S. and coalition forces. The United States responded with a [[Iraq War troop surge of 2007|troop surge in 2007]] to attempt to reduce the violence. The U.S. began withdrawing its troops in the winter of 2007–08. The winding down of U.S. involvement in Iraq accelerated under President [[Barack Obama]]. The U.S. formally withdrew all combat troops from Iraq by December 2011. ||| ||| ||| +-1 Iraq War ||| Operation Sinbad ||| Pressures on U.S. troops were compounded by the continuing withdrawal of coalition forces.{{citation needed|date=May 2014}} In early 2007, [[Prime Minister of the United Kingdom|British Prime Minister]] Blair announced that following [[Operation Sinbad]] British troops would begin to withdraw from [[Basra Governorate]], handing security over to the Iraqis. ||| Post-invasion phase ||| 2007: U.S. troops surge ||| +-1 Iraq War ||| Second Battle of Fallujah ||| The offensive was resumed in November 2004 in the bloodiest battle of the war so far: the [[Second Battle of Fallujah]], described by the U.S. military as 'the heaviest [[urban warfare|urban combat]] (that they had been involved in) since the [[battle of Hue City]] in [[Vietnam]].' ||| Post-invasion phase ||| 2004: Insurgency expands ||| +-1 Irish Civil War ||| Battle of Kilmallock ||| |battles= [[Battle of Dublin (1922)|Dublin]] – [[Irish Free State offensive|Free State offensive]] – [[Battle of Kilmallock|Kilmallock]] – [[Guerrilla Phase of the Irish Civil War|Guerrilla Phase]] – [[Executions during the Irish Civil War|Executions]] – [[Timeline of the Irish Civil War|Timeline]]. ||| ||| ||| +-1 Irish Confederate Wars ||| Sack of Cashel ||| In 1647, these Parliamentarian forces inflicted a shattering series of defeats on the Confederates, ultimately forcing them to join a Royalist coalition to try to hold off a Parliamentarian invasion. Firstly, in August 1647, Thomas Preston's Leinster army was annihilated at the [[battle of Dungans Hill]] by Jones' Parliamentarian army when it tried to march on Dublin. This was the best trained and best equipped Confederate army and the loss of its manpower and equipment was a body blow to the Confederation. Secondly, the Parliamentarians based in [[Cork (city)|Cork]] devastated the Confederates' territory in [[Munster]], provoking famine among the civilian population. In September, they [[Sack of Cashel|stormed Cashel]], not only taking the town but also massacring its garrison and inhabitants, including several Catholic clerics. When the Irish Munster army brought them to battle at [[battle of Knocknanauss|Knocknanauss]] in November, they too were crushed. [[Sligo]] also changed hands again – captured by the Ulster British settlers' army. The battles in this phase of the war were exceptionally bloody: in the battles of 1646–47, the losers had up to half of those engaged killed – most commonly in the rout after the battle was decided. In the three largest engagements of 1647, no less than 1% of the Irish male population (around 7–8,000 men) were killed in battle. ||| {{anchor|Confederates}}The Confederates' war, 1642–48 ||| Victory and defeat for the Confederates ||| +-1 Irish Confederate Wars ||| Sack of Wexford ||| His first action was to secure the east coast of Ireland for supplies of men and logistics from England. To this end, he [[siege of Drogheda|took Drogheda]] and [[Sack of Wexford|Wexford]], perpetrating massacres of the defenders of both towns. He also sent a force to the north to link up with the British settler army there. Those settlers who supported the Scots and Royalists were defeated by the Parliamentarians at the [[battle of Lisnagarvey]]. ||| The Cromwellian War, 1649–1653 ||| The Cromwellian Conquest ||| +-1 Irish Confederate Wars ||| Siege of Galway ||| Ireton [[Siege of Limerick (1650-51)|besieged Limerick]] while the northern Parliamentarian army under [[Charles Coote, 1st Earl of Mountrath|Charles Coote]] [[Siege of Galway|besieged Galway]]. Muskerry made an attempt to relieve Limerick, marching north from Kerry, and was routed by [[Roger Boyle, 1st Earl of Orrery|Roger Boyle]] at the [[battle of Knocknaclashy]]. Limerick and Galway were too well defended to be taken by storm, and were blockaded until hunger and disease forced them to surrender, Limerick in 1651, Galway in 1652. [[Waterford]] and [[Duncannon]] also surrendered in 1651. ||| The Cromwellian War, 1649–1653 ||| The Cromwellian Conquest ||| +-1 Irish Rebellion of 1798 ||| Battle of Ballinamuck ||| On 22 August, nearly two months after the main uprisings had been defeated, about 1,000 French soldiers under [[General Humbert]] landed in the north-west of the country, at [[Kilcummin]] in [[County Mayo]]. Joined by up to 5,000 local rebels, they had some initial success, inflicting a humiliating defeat on the British in [[Battle of Castlebar|Castlebar]] (also known as the ''Castlebar races'' to commemorate the speed of the retreat) and setting up a short-lived '[[Republic of Connacht]]'. This sparked some supportive risings in Longford and Westmeath which were quickly defeated, and the main force was defeated at [[Battle of Ballinamuck|the battle of Ballinamuck]], in [[County Longford]], on 8 September 1798. The French troops who surrendered were repatriated to [[French First Republic|France]] in exchange for British [[prisoners of war]], but hundreds of the captured Irish rebels were executed. This episode of the 1798 Rebellion became a major event in the heritage and collective memory of the West of Ireland and was commonly known in Irish as {{lang|ga|''Bliain na bhFrancach''}} and in English as 'The Year of the French'. ||| French intervention ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Ballymore-Eustace ||| |[[Battle of Ballymore-Eustace]] ||| List of major engagements during the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Ballynahinch ||| In the north-east, mostly Presbyterian rebels led by [[Henry Joy McCracken]] rose in [[County Antrim]] on 6 June. They briefly held most of the county, but the rising there collapsed following [[Battle of Antrim|defeat]] at [[Antrim, County Antrim|Antrim town]]. In [[County Down]], after initial success at [[Battle of Saintfield|Saintfield]], rebels led by [[Henry Munro (United Irishman)|Henry Munro]] were defeated in the longest battle of the rebellion at [[Battle of Ballynahinch|Ballynahinch]]. ||| The rebellion spreads ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Bunclody ||| The rebels had most success in the south-eastern county of [[County Wexford|Wexford]] where they seized control of the county, but a series of bloody defeats at the [[Battle of New Ross (1798)|Battle of New Ross]], [[Battle of Arklow]], and the [[Battle of Bunclody]] prevented the effective spread of the rebellion beyond the county borders. 20,000 troops eventually poured into Wexford and defeated the rebels at the [[Battle of Vinegar Hill]] on 21 June. The dispersed rebels spread in two columns through the midlands, [[Kilkenny]], and finally towards Ulster. The last remnants of these forces fought on until their final defeat on 14 July at the battles of Knightstown Bog, [[County Meath]] and Ballyboughal, [[County Dublin]]. ||| The rebellion spreads ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Carlow ||| Although the planned nucleus of the rebellion had imploded, the surrounding districts of Dublin rose as planned and were swiftly followed by most of the counties surrounding Dublin. The first [[Battles of Irish rebellion 1798|clashes]] of the rebellion took place just after dawn on 24 May. Fighting quickly spread throughout Leinster, with the heaviest fighting taking place in [[County Kildare]] where, despite the Army successfully beating off almost every rebel attack, the rebels gained control of much of the county as military forces in Kildare were ordered to withdraw to [[Naas]] for fear of their isolation and destruction as at [[Battle of Prosperous|Prosperous]]. However, rebel defeats at [[Battle of Carlow|Carlow]] and the [[Battle of Tara Hill|hill of Tara]], [[County Meath]], effectively ended the rebellion in those counties. In [[County Wicklow]], news of the rising spread panic and fear among loyalists; they responded by massacring rebel suspects held in custody at [[Massacre of Dunlavin Green|Dunlavin Green]] and in [[Carnew massacre|Carnew]]. A baronet, [[Sir Edward Crosbie]], was found guilty of leading the rebellion in Carlow and executed for [[treason]]. ||| Outbreak of the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Castlebar ||| On 22 August, nearly two months after the main uprisings had been defeated, about 1,000 French soldiers under [[General Humbert]] landed in the north-west of the country, at [[Kilcummin]] in [[County Mayo]]. Joined by up to 5,000 local rebels, they had some initial success, inflicting a humiliating defeat on the British in [[Battle of Castlebar|Castlebar]] (also known as the ''Castlebar races'' to commemorate the speed of the retreat) and setting up a short-lived '[[Republic of Connacht]]'. This sparked some supportive risings in Longford and Westmeath which were quickly defeated, and the main force was defeated at [[Battle of Ballinamuck|the battle of Ballinamuck]], in [[County Longford]], on 8 September 1798. The French troops who surrendered were repatriated to [[French First Republic|France]] in exchange for British [[prisoners of war]], but hundreds of the captured Irish rebels were executed. This episode of the 1798 Rebellion became a major event in the heritage and collective memory of the West of Ireland and was commonly known in Irish as {{lang|ga|''Bliain na bhFrancach''}} and in English as 'The Year of the French'. ||| French intervention ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Naas ||| |[[Battle of Naas]] ||| List of major engagements during the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of New Ross (1798) ||| The rebels had most success in the south-eastern county of [[County Wexford|Wexford]] where they seized control of the county, but a series of bloody defeats at the [[Battle of New Ross (1798)|Battle of New Ross]], [[Battle of Arklow]], and the [[Battle of Bunclody]] prevented the effective spread of the rebellion beyond the county borders. 20,000 troops eventually poured into Wexford and defeated the rebels at the [[Battle of Vinegar Hill]] on 21 June. The dispersed rebels spread in two columns through the midlands, [[Kilkenny]], and finally towards Ulster. The last remnants of these forces fought on until their final defeat on 14 July at the battles of Knightstown Bog, [[County Meath]] and Ballyboughal, [[County Dublin]]. ||| The rebellion spreads ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Prosperous ||| Although the planned nucleus of the rebellion had imploded, the surrounding districts of Dublin rose as planned and were swiftly followed by most of the counties surrounding Dublin. The first [[Battles of Irish rebellion 1798|clashes]] of the rebellion took place just after dawn on 24 May. Fighting quickly spread throughout Leinster, with the heaviest fighting taking place in [[County Kildare]] where, despite the Army successfully beating off almost every rebel attack, the rebels gained control of much of the county as military forces in Kildare were ordered to withdraw to [[Naas]] for fear of their isolation and destruction as at [[Battle of Prosperous|Prosperous]]. However, rebel defeats at [[Battle of Carlow|Carlow]] and the [[Battle of Tara Hill|hill of Tara]], [[County Meath]], effectively ended the rebellion in those counties. In [[County Wicklow]], news of the rising spread panic and fear among loyalists; they responded by massacring rebel suspects held in custody at [[Massacre of Dunlavin Green|Dunlavin Green]] and in [[Carnew massacre|Carnew]]. A baronet, [[Sir Edward Crosbie]], was found guilty of leading the rebellion in Carlow and executed for [[treason]]. ||| Outbreak of the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Tara Hill ||| Although the planned nucleus of the rebellion had imploded, the surrounding districts of Dublin rose as planned and were swiftly followed by most of the counties surrounding Dublin. The first [[Battles of Irish rebellion 1798|clashes]] of the rebellion took place just after dawn on 24 May. Fighting quickly spread throughout Leinster, with the heaviest fighting taking place in [[County Kildare]] where, despite the Army successfully beating off almost every rebel attack, the rebels gained control of much of the county as military forces in Kildare were ordered to withdraw to [[Naas]] for fear of their isolation and destruction as at [[Battle of Prosperous|Prosperous]]. However, rebel defeats at [[Battle of Carlow|Carlow]] and the [[Battle of Tara Hill|hill of Tara]], [[County Meath]], effectively ended the rebellion in those counties. In [[County Wicklow]], news of the rising spread panic and fear among loyalists; they responded by massacring rebel suspects held in custody at [[Massacre of Dunlavin Green|Dunlavin Green]] and in [[Carnew massacre|Carnew]]. A baronet, [[Sir Edward Crosbie]], was found guilty of leading the rebellion in Carlow and executed for [[treason]]. ||| Outbreak of the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Three Rocks ||| |[[Battle of Three Rocks]] ||| List of major engagements during the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Tuberneering ||| |[[Battle of Tuberneering]] ||| List of major engagements during the rebellion ||| ||| +-1 Irish Rebellion of 1798 ||| Battle of Vinegar Hill ||| The rebels had most success in the south-eastern county of [[County Wexford|Wexford]] where they seized control of the county, but a series of bloody defeats at the [[Battle of New Ross (1798)|Battle of New Ross]], [[Battle of Arklow]], and the [[Battle of Bunclody]] prevented the effective spread of the rebellion beyond the county borders. 20,000 troops eventually poured into Wexford and defeated the rebels at the [[Battle of Vinegar Hill]] on 21 June. The dispersed rebels spread in two columns through the midlands, [[Kilkenny]], and finally towards Ulster. The last remnants of these forces fought on until their final defeat on 14 July at the battles of Knightstown Bog, [[County Meath]] and Ballyboughal, [[County Dublin]]. ||| The rebellion spreads ||| ||| +-1 Irish War of Independence ||| Clonmult Ambush ||| On 19 March 1921, Tom Barry's 100-strong West Cork IRA unit fought a large-scale action against 1,200 British troops – the [[Crossbarry Ambush]]. Barry's men narrowly avoided being trapped by converging British columns and inflicted between ten and thirty killed on the British side. Just two days later, on 21 March, the Kerry IRA [[Headford Ambush|attacked a train]] at the Headford junction near [[Killarney]]. Twenty British soldiers were killed or injured, as well as two IRA men and three civilians. Most of the actions in the war were on a smaller scale than this, but the IRA did have other significant victories in ambushes, for example at [[Millstreet]] in Cork and at [[Scramogue Ambush|Scramogue]] in Roscommon, also in March 1921 and at [[Tourmakeady]] and [[Carrowkennedy ambush|Carowkennedy]] in Mayo in May and June. Equally common, however, were failed ambushes, the worst of which, for example at [[Upton Train Ambush|Upton]] and [[Clonmult Ambush|Clonmult]] in Cork in February 1921, saw three and twelve IRA men killed respectively and more captured. The IRA in Mayo suffered a comparable reverse at [[Kilmeena ambush|Kilmeena]]. Fears of informers after such failed ambushes often led to a spate of IRA shootings of informers, real and imagined. ||| Course of the war ||| Peak of violence: December 1920 – July 1921 ||| +-1 Irish War of Independence ||| Crossbarry Ambush ||| On 19 March 1921, Tom Barry's 100-strong West Cork IRA unit fought a large-scale action against 1,200 British troops – the [[Crossbarry Ambush]]. Barry's men narrowly avoided being trapped by converging British columns and inflicted between ten and thirty killed on the British side. Just two days later, on 21 March, the Kerry IRA [[Headford Ambush|attacked a train]] at the Headford junction near [[Killarney]]. Twenty British soldiers were killed or injured, as well as two IRA men and three civilians. Most of the actions in the war were on a smaller scale than this, but the IRA did have other significant victories in ambushes, for example at [[Millstreet]] in Cork and at [[Scramogue Ambush|Scramogue]] in Roscommon, also in March 1921 and at [[Tourmakeady]] and [[Carrowkennedy ambush|Carowkennedy]] in Mayo in May and June. Equally common, however, were failed ambushes, the worst of which, for example at [[Upton Train Ambush|Upton]] and [[Clonmult Ambush|Clonmult]] in Cork in February 1921, saw three and twelve IRA men killed respectively and more captured. The IRA in Mayo suffered a comparable reverse at [[Kilmeena ambush|Kilmeena]]. Fears of informers after such failed ambushes often led to a spate of IRA shootings of informers, real and imagined. ||| Course of the war ||| Peak of violence: December 1920 – July 1921 ||| +-1 Islamist uprising in Syria ||| Siege of Aleppo (1980) ||| In the days leading up to 8 March 1980 (the seventeenth anniversary of the Ba'thist coup), nearly all Syrian cities were paralysed by strikes and protests, which developed into pitched battles with security forces. Many organizations, both religious and secular, were involved, including the most notable [[Muslim Brotherhood]]. The events escalated into a [[Siege of Aleppo (1980)|widescale crackdown]] in [[Aleppo]], where the government responded with overwhelming military force, sending in tens of thousands of troops, supported by tanks and helicopters. In and around Aleppo, hundreds of demonstrators were killed, and eight thousand were arrested. By April, the [[Siege of Aleppo (1980)|uprising]] in the area had been crushed. ||| History ||| Local revolts: November 1979 – January 1982 ||| +-1 Italian Front (World War I) ||| Battle of Asiago ||| Following Italy's stalemate, the Austrian forces began planning a counteroffensive (''[[Battle of Asiago]]'') in Trentino and directed over the plateau of [[Asiago|Altopiano di Asiago]], with the aim to break through to the [[Po River]] plain and thus cutting off the II., III., and IV. Italian Armies in the North East of the country. The offensive began on 11 March 1916 with 15 divisions, and resulted in no gain. ||| Campaigns of 1915–1916 ||| The Asiago offensive ||| +-1 Italian Front (World War I) ||| Battle of Vittorio Veneto ||| The '''Italian Front''' ({{lang-it|Fronte italiano}}; in {{lang-de|Gebirgskrieg}}, 'Mountain war') was a series of battles at the border between [[Austria-Hungary]] and [[Italy]], fought between 1915 and 1918 in [[World War I]]. Following the secret promises made by [[Allies of World War I|Allies]] in the [[Treaty of London (1915)|Treaty of London]], Italy entered the war in order to annex the [[Austrian Littoral]] and northern [[Dalmatia]], and the territories of present-day [[Trentino]] and [[South Tyrol]]. Although Italy had hoped to gain the territories with a surprise offensive, the front soon bogged down into [[trench warfare]], similar to the [[Western Front (World War I)|Western Front]] fought in France, but at [[high altitudes]] and with very cold winters. The front caused civil population to resettle and several thousands of them died in Italian and Austrian refugee camps of malnutrition and illness. The Allied victory at [[Battle of Vittorio Veneto|Vittorio Veneto]] and the disintegration of Austria-Hungary ended the military operations. ||| ||| ||| +-1 Italian Front (World War I) ||| Battle of the Piave River ||| The [[Battle of the Piave River]] began with a diversionary attack near the [[Tonale Pass]] named Lawine, which the Italians easily repulsed after two days of fighting. Austrian deserters betrayed the objectives of the upcoming offensive, which allowed the Italians to move two armies directly in the path of the Austrian prongs. The other prong, led by general [[Svetozar Boroević|Svetozar Boroević von Bojna]] initially experienced success until aircraft bombed their supply lines and Italian reinforcements arrived. ||| 1918: The war ends ||| Battle of the Piave River (June 1918) ||| +-1 Italian Front (World War I) ||| Battles of the Isonzo ||| | caption1 = The Italian Front in 1915–1917: eleven [[Battles of the Isonzo]] and Asiago offensive. In blue, initial Italian conquests ||| Campaigns of 1915–1916 ||| ||| +-1 Italian Front (World War I) ||| Eleventh Battle of the Isonzo ||| The Austrians received desperately needed reinforcements after the [[Eleventh Battle of the Isonzo]] from [[German Army (German Empire)|German Army]] soldiers rushed in after the [[Russian Empire|Russian]] [[Kerensky Offensive|offensive]] ordered by [[Alexander Kerensky|Kerensky]] of July 1917 failed. The Germans introduced [[infiltration tactics]] to the Austrian front and helped work on a new offensive. Meanwhile, mutinies and plummeting morale crippled the Italian Army from within. The soldiers lived in poor conditions and engaged in attack after attack that often yielded minimal or no military gain. ||| 1917: Germany arrives on the front ||| ||| +-1 Italian Front (World War I) ||| Fifth Battle of the Isonzo ||| After the winter lull, the Italians launched the [[Fifth Battle of the Isonzo]] on 9 March 1916, but Austria-Hungary repulsed this offensive, and the battle concluded on 16 March in poor weather for trench warfare. ||| Campaigns of 1915–1916 ||| Battles of Isonzo in 1915 ||| +-1 Italian Front (World War I) ||| First Battle of the Isonzo ||| At the beginning of the [[First Battle of the Isonzo]] on 23 June 1915, Italian forces outnumbered the Austrians three-to-one but failed to penetrate the strong Austro-Hungarian defensive lines in the highlands of northwestern [[Gorizia and Gradisca]]. Because the Austrian forces occupied higher ground, Italians conducted difficult offensives while climbing. The Italian forces therefore failed to drive much beyond the river, and the battle ended on 7 July 1915. ||| Campaigns of 1915–1916 ||| Battles of Isonzo in 1915 ||| +-1 Italian Front (World War I) ||| Fourth Battle of the Isonzo ||| The Italians again launched another offensive on 10 November, the [[Fourth Battle of the Isonzo]]. Both sides suffered more casualties, but the Austro-Hungarian forces repulsed this Italian offensive too, and the battle ended on 2 December for exhaustion of armaments, but occasional skirmishing persisted. ||| Campaigns of 1915–1916 ||| Battles of Isonzo in 1915 ||| +-1 Italian Front (World War I) ||| Second Battle of the Isonzo ||| Two weeks later on 18 July 1915, the Italians attempted another frontal assault against the Austro-Hungarian trench lines with more artillery in [[Second Battle of the Isonzo]], but the forces of Austria-Hungary beat back this bloody offensive, which concluded in stalemate and exhaustion of weaponry on 3 August 1915. ||| Campaigns of 1915–1916 ||| Battles of Isonzo in 1915 ||| +-1 Italian Front (World War I) ||| Tenth Battle of the Isonzo ||| Following the minuscule gains of the [[Tenth Battle of the Isonzo]], the Italians directed a two-pronged attack against the Austrian lines north and east of Gorizia. The Austrians checked the advance east, but Italian forces under [[Luigi Capello]] managed to break the Austrian lines and capture the [[Banjšice Plateau]]. Characteristic of nearly every other theater of the war, the Italians found themselves on the verge of victory but could not secure it because their supply lines could not keep up with the front-line troops and they were forced to withdraw. ||| 1917: Germany arrives on the front ||| ||| +-1 Ituri conflict ||| Operation Artemis ||| In June 2003, the [[European Union]] begun [[Operation Artemis]], sending a French-led peacekeeping force to Ituri. The EU force managed to take control of the regional capital of [[Bunia]]. Despite this, however, fighting and massacres continued in the countryside. ||| ||| ||| +-1 Jacobite rising of 1715 ||| Battle of Sheriffmuir ||| On 22 October Mar received his commission from James appointing him commander of the Jacobite army. The Jacobite army outnumbered Argyll's forces by three-to-one and Mar decided to march on Stirling Castle. On 13 November at [[Sheriffmuir]], the two forces joined in [[Battle of Sheriffmuir|battle]]. The fighting was indecisive but nearing the end of the battle the Jacobites numbered 4,000 men, compared to Argyll's 1,000. Mar's army began to close in on Argyll's forces, who were poorly protected, but Mar did not order them to advance, possibly believing that he had won the battle already (Argyll had lost 660 men, three times as many as Mar). Mar then retreated to Perth. On the same day as the Battle of Sherrifmuir, Inverness surrendered to Hanoverian forces, and a smaller Jacobite force led by [[Mackintosh of Borlum]] was defeated at [[Battle of Preston (1715)|Preston]]. ||| Struggle for Scotland ||| ||| +-1 Jacobite rising of 1745 ||| Battle of Culloden ||| The '''Jacobite rising of 1745''' was the attempt by [[Charles Edward Stuart]] to regain the [[Monarchy of Great Britain|British throne]] for the exiled [[House of Stuart]]. The rising occurred during the [[War of the Austrian Succession]] when most of the British Army was on the European continent. Charles Edward Stuart, commonly known as 'Bonnie Prince Charlie' or 'the Young Pretender', sailed to Scotland and raised the Jacobite standard at [[Glenfinnan]] in the [[Scottish Highlands]], where he was supported by a gathering of Highland [[Scottish clan|clansmen]]. The march south began with an initial victory at [[Battle of Prestonpans|Prestonpans]] near [[Edinburgh]]. The Jacobite army, now in bold spirits, marched onwards to [[City of Carlisle|Carlisle]], over the border in England. When it reached [[Derby]], some British divisions were recalled from the Continent and the Jacobite army retreated north to [[Inverness]] where the last battle on Scottish soil took place on a nearby moor at [[Culloden, Highland|Culloden]]. The [[Battle of Culloden]] ended with the final defeat of the Jacobite cause, and with Charles Edward Stuart fleeing with a price on his head, before finally sailing to France. ||| ||| ||| +-1 Jacobite rising of 1745 ||| Battle of Inverurie (1745) ||| The retreating Jacobite army at [[Clifton, Cumbria]] engaged in a [[Clifton Moor Skirmish|skirmish]] with British forces on 18 December. The Jacobites lost control of [[Siege of Carlisle (December 1745)|Carlisle in a siege]], lasting from 21 December to the 30th. The [[Battle of Inverurie (1745)|Battle of Inverurie]] on 23 December saw a small Jacobite victory. The Jacobites won again on 17 January 1746 at the [[Battle of Falkirk (1746)|Battle of Falkirk]]. The Jacobites unsuccessfully [[Siege of Fort William|besieged Fort William]] from 20 March to 3 April. The 15 April saw the Jacobites defeated at the [[Battle of Littleferry]]. On 16 April the Jacobites suffered their final defeat at the [[Battle of Culloden]]. ||| Defeat ||| ||| +-1 Jacobite rising of 1745 ||| Battle of Prestonpans ||| The '''Jacobite rising of 1745''' was the attempt by [[Charles Edward Stuart]] to regain the [[Monarchy of Great Britain|British throne]] for the exiled [[House of Stuart]]. The rising occurred during the [[War of the Austrian Succession]] when most of the British Army was on the European continent. Charles Edward Stuart, commonly known as 'Bonnie Prince Charlie' or 'the Young Pretender', sailed to Scotland and raised the Jacobite standard at [[Glenfinnan]] in the [[Scottish Highlands]], where he was supported by a gathering of Highland [[Scottish clan|clansmen]]. The march south began with an initial victory at [[Battle of Prestonpans|Prestonpans]] near [[Edinburgh]]. The Jacobite army, now in bold spirits, marched onwards to [[City of Carlisle|Carlisle]], over the border in England. When it reached [[Derby]], some British divisions were recalled from the Continent and the Jacobite army retreated north to [[Inverness]] where the last battle on Scottish soil took place on a nearby moor at [[Culloden, Highland|Culloden]]. The [[Battle of Culloden]] ended with the final defeat of the Jacobite cause, and with Charles Edward Stuart fleeing with a price on his head, before finally sailing to France. ||| ||| ||| +-1 Jacobite rising of 1745 ||| Siege of Carlisle (December 1745) ||| The retreating Jacobite army at [[Clifton, Cumbria]] engaged in a [[Clifton Moor Skirmish|skirmish]] with British forces on 18 December. The Jacobites lost control of [[Siege of Carlisle (December 1745)|Carlisle in a siege]], lasting from 21 December to the 30th. The [[Battle of Inverurie (1745)|Battle of Inverurie]] on 23 December saw a small Jacobite victory. The Jacobites won again on 17 January 1746 at the [[Battle of Falkirk (1746)|Battle of Falkirk]]. The Jacobites unsuccessfully [[Siege of Fort William|besieged Fort William]] from 20 March to 3 April. The 15 April saw the Jacobites defeated at the [[Battle of Littleferry]]. On 16 April the Jacobites suffered their final defeat at the [[Battle of Culloden]]. ||| Defeat ||| ||| +-1 Japanese invasion of Manchuria ||| Mukden Incident ||| The '''Japanese invasion of Manchuria''' began on September 18, 1931, when the [[Kwantung Army]] of the [[Empire of Japan]] invaded [[Manchuria]] immediately following the [[Mukden Incident]]. The Japanese established a [[puppet state]] called [[Manchukuo]], and their occupation lasted until the end of [[World War II]]. ||| ||| ||| +-1 Japanese invasion of Taiwan (1895) ||| Battle of Chiatung ||| Lieutenant-General Nogi's southern column, consisting of 6,330 soldiers, 1,600 military coolies and 2,500 horses, landed at Fangliao on 10 October, and engaged a force of Formosan militiamen at Ka-tong-ka (茄苳腳), modern [[Chiatung]] (佳冬), on 11 October. The [[Battle of Chiatung]] was a Japanese victory, but the Japanese suffered their heaviest combat casualties of the campaign in the engagement—16 men killed and 61 wounded. Three officers were among the casualties. On 15 October Nogi's column closed in on the important port of Takow, but discovered that the Japanese navy had beaten it to the punch. Two days earlier, on 13 October, the Takow forts had been bombarded and silenced by the Japanese cruisers [[Japanese cruiser Yoshino|''Yoshino'']], {{ship|Japanese cruiser|Naniwa||2}}, {{ship|Japanese cruiser|Akitsushima||2}}, [[Japanese corvette Hiei (1877)|''Hiei'']], [[Japanese cruiser Yaeyama|''Yaeyama'']] and [[Japanese cruiser Saien|''Saien'']], and a naval landing force had been put ashore to occupy the town. Foiled of their prize, Nogi's men pressed on, and captured the town of Pithau on 16 October. By 20 October they were at the village of Ji-chang-hang, only a few miles south of Tainan. There, on the night of 20 October, they received an offer of unconditional surrender from the Chinese merchants of Tainan. ||| The course of the war ||| Phase Three: Chiayi, Takow and Tainan ||| Japanese capture of Takow +-1 Japanese invasion of Taiwan (1895) ||| Battle of Keelung ||| On 3 June the Japanese captured the port city of [[Keelung]]. Following a preliminary bombardment of the city's coastal defences by the warships ''[[Japanese cruiser Matsushima|Matsushima]]'', ''Oshima'', {{ship|Japanese cruiser|Naniwa||2}}, ''[[Japanese cruiser Takachiho|Takachiho]]'' and ''[[Japanese cruiser Chiyoda|Chiyoda]]'', the Imperial Guards attacked the Keelung forts from the rear. The [[Battle of Keelung|main struggle]] took place around the Shih-ch'iu-ling battery ({{zh|t=獅球嶺砲台|p=Shiqiuling paotai}}). Eleven years earlier, during the [[Sino-French War]], Chinese forces had bottled up a French expeditionary corps in Keelung for seven months during the [[Keelung Campaign]], and the Shih-ch'iu-ling battery had been held against the French for most of the war. Now, in 1895, the Japanese routed the fort's garrison and captured the fort with little loss. Keelung was occupied on the afternoon of 3 June, after the [[Qing]] commanders fled the city and left the garrison force leaderless. Japanese casualties in the battle for Keelung were 2 dead and 26 wounded. ||| The course of the war ||| Phase One: Keelung, Taipei and Tamsui ||| Ruifang and Keelung +-1 Kalmar War ||| Battle of Kringen ||| Although a side-note to the war, the [[Battle of Kringen]], in which [[Kingdom of Scotland|Scottish]] mercenary forces were defeated by [[Gudbrandsdal]] militiamen from [[Lesja]], [[Dovre]], Vaage ([[Vågå]]), [[Fron]], [[Lom, Norway|Lom]] and [[Ringebu]] is a noted military event in Norway, celebrated to this day. ||| In popular memory ||| ||| +-1 Kargil War ||| Battle of Tololing ||| Once India regained control of the hills overlooking NH 1D, the Indian Army turned to driving the invading force back across the Line of Control. The [[Battle of Tololing]], among other assaults, slowly tilted the combat in India's favor. The Pakistani troops at Tololing were aided by Pakistani fighters from Kashmir. Some of the posts put up a stiff resistance, including Tiger Hill (Point 5140) that fell only later in the war. Indian troops found well-entrenched Pakistani soldiers at Tiger Hill, and both sides suffered heavy casualties. After a final assault on the peak in which 10 Pakistani soldiers and 5 Indian soldiers were killed, Tiger Hill finally fell. A few of the assaults occurred atop hitherto unheard of peaks – most of them unnamed with only Point numbers to differentiate them – which witnessed fierce [[hand to hand combat]]. ||| War progress ||| India attacks Pakistani positions ||| +-1 Kashmir conflict ||| Insurgency in Jammu and Kashmir ||| According to a Hindu American Foundation report, the rights and religious freedom of [[Kashmiri Pandit|Kashmiri Hindus]] have been severely curtailed since 1989, when there was an [[Insurgency in Jammu and Kashmir|organised and systematic campaign]] by [[Islamist terrorism|Islamist militants]] to cleanse Hindus from Kashmir. Less than 4,000 Kashmiri Hindus remain in the valley, reportedly living with daily threats of violence and terrorism. ||| Human rights abuse ||| Indian administered Kashmir ||| +-1 Korean War ||| Battle of Pusan Perimeter ||| After the first two months of the conflict, South Korean forces were on the point of defeat, forced back to the [[Battle of Pusan Perimeter|Pusan Perimeter]]. In September 1950, an amphibious UN counter-offensive was launched at [[Inchon]], and cut off many of the North Korean attackers. Those that escaped envelopment and capture were rapidly forced back north all the way to the border with China at the [[Yalu River]], or into the mountainous interior. At this point, in October 1950, Chinese forces crossed the Yalu and entered the war. Chinese intervention triggered a retreat of UN forces which continued until mid-1951. After these dramatic reversals of fortune, which saw Seoul change hands four times, the last two years of conflict became a [[attrition warfare|war of attrition]], with the front line close to the 38th parallel. The war in the air, however, was never a stalemate. North Korea was subject to a massive bombing campaign. [[Jet aircraft]] were used in [[air-to-air combat]] for the first time in history, and Soviet pilots covertly flew in defense of their Communist allies. ||| ||| ||| +-1 Kosovo War ||| Incident at Pristina airport ||| Following the military campaign, the involvement of Russian peacekeepers proved to be tense and challenging to the NATO Kosovo force. The Russians expected to have an independent sector of Kosovo, only to be unhappily surprised with the prospect of operating under NATO command. Without prior communication or coordination with NATO, Russian peacekeeping forces entered Kosovo from [[Bosnia and Herzegovina]] and occupied [[Pristina International Airport]] ahead of the arrival of NATO forces. This resulted in [[Incident at Pristina airport|an incident]] during which NATO Supreme Commander [[Wesley Clark]]'s wish to forcibly block the runways with NATO vehicles, to prevent any Russian reinforcement, was refused by KFOR commander [[General Sir Mike Jackson|General Mike Jackson]]. ||| Yugoslav army withdrawal and the entry of KFOR ||| ||| +-1 Kosovo War ||| NATO bombing of Yugoslavia ||| * {{flagicon|Bulgaria}} – Despite [[Bulgaria]]'s ambitions of joining both [[NATO]] and the [[European Union]], the leftist opposition organised street protests in Sofia over the [[NATO bombing of Yugoslavia]], the public was reportedly divided because of sympathy for their fellow Slavs and Christian Orthodox Serb neighbours. A bill to allow NATO aircraft to use Bulgarian airspace was blocked in the [[National Assembly (Bulgaria)|Bulgarian parliament]].{{failed verification|date=September 2015}} Several NATO missiles and aircraft strayed off course into Bulgaria. ||| International reaction to NATO intervention ||| Europe ||| +-1 Laotian Civil War ||| Battle of Lima Site 85 ||| Throughout 1968, the communists slowly advanced across the northern part of Laos, defeating Laotian forces time and time again. An important U.S. navigation aids site fell in the [[Battle of Lima Site 85]] on 10 March 1968. This success was achieved despite U.S. military advice and assistance. In November, the U.S. launched an air campaign against the Ho Chi Minh Trail because North Vietnam was sending more troops and supplies than ever along this route to South Vietnam. This new operation, named [[Operation Commando Hunt]], continued until 1972, with little success. ||| Chronology of the Laotian Civil War ||| 1968: Royal Lao Army neutralized ||| +-1 Lebanese Civil War ||| 1982 Lebanon War ||| The Armenian [[Marxist-Leninist]] militia [[ASALA]] was founded in PLO-controlled territory of West Beirut in 1975. This militia was led by revolutionary fighter [[Monte Melkonian]] and group-founder [[Hagop Hagopian (guerilla)|Hagop Hagopian]]. Closely aligned with the Palestinians, ASALA fought many battles on the side of the [[Lebanese National Movement]] and the PLO, most prominently against Israeli forces and their right-wing allies during the [[1982 Lebanon War|1982 phase of the war]]. Melkonian was field commander during these battles, and assisted the PLO in [[Siege of Beirut|its defense of West Beirut]]. ||| Political groups and militias ||| Overview of the different political groups and militias ||| Secular groups +-1 Lebanese Civil War ||| 1983 Beirut barracks bombing ||| On 23 October 1983, a devastating Iranian sponsored [[1983 Beirut barracks bombing|suicide bombing in Beirut]] targeted the headquarters of the U.S. and French forces, killing 241 American and 58 French servicemen. On 18 January 1984, American University of Beirut President [[Malcolm Kerr (academic)|Malcolm Kerr]] was murdered. After US forces withdrew in February 1984, anti-US attacks continued, including a [[1984 United States embassy annex bombing|bombing of the U.S. embassy annex]] in East Beirut on 20 September 1984, which killed 24, including 2 U.S. servicemen. The situation became serious enough to compel the [[U.S. State Department]] to invalidate US passports for travel to Lebanon in 1987, a travel ban that was only lifted 10 years later in 1997. ||| Third phase 1982–83 ||| Resurging violence ||| +-1 Lebanese Civil War ||| Black Saturday (Lebanon) ||| On 6 December 1975, a day later known as [[Black Saturday (Lebanon)|Black Saturday]], the killings of four [[Kataeb Party|Phalange]] members led Phalange to quickly and temporarily set up [[roadblock]]s throughout [[Beirut]] at which identification cards were inspected for religious affiliation. Many Palestinians or Lebanese Muslims passing through the roadblocks were killed immediately. Additionally, Phalange members took hostages and attacked Muslims in East Beirut. Muslim and Palestinian militias retaliated with force, increasing the total death count to between 200 and 600 civilians and militiamen. After this point, all-out fighting began between the militias. ||| First phase 1975–77 ||| Sectarian violence and massacres ||| +-1 Lebanese Civil War ||| Sabra and Shatila massacre ||| |The [[1982 Lebanon War]] occurs as well as the [[Siege of Beirut]]. [[Bashir Gemayel]] is elected president on August 23 and assassinated September 14th. Soon after [[Sabra and Shatila massacre|the Sabra and Shatila massacre]] occurs. The Israelis withdraw. [[Amin Gemayel]] is elected president. ||| Chronological History of the War ||| ||| +-1 Lebanese Civil War ||| Safra massacre ||| The [[Safra massacre]], known as the ''Day of the Long Knives'', occurred in the [[coast]]al town Safra (north to [[Beirut]]) on 7 July 1980, during the [[Lebanese civil war]], as part of [[Bashir Gemayel]]'s effort to consolidate all the Maronite fighters under his leadership in the [[Lebanese Forces]]. The [[Phalangist]] forces launched a surprise attack on the [[Tigers Militia (Lebanon)|Tigers]], a 500-man militia that was the armed force of the [[National Liberal Party (Lebanon)|National Liberal Party]] of ex-Lebanese [[president of Lebanon|President]] [[Camille Chamoun]]. The attack claimed the lives of 83 people{{Citation needed|reason=source to the exact number|date=April 2014}}. ||| Second phase 1977–82 ||| Day of the Long Knives ||| +-1 Lebanese Civil War ||| War of the Camps ||| Some [[Sunni Islam in Lebanon|Sunni]] factions received support from [[Libya]] and [[Iraq]], and a number of minor militias existed due to a general reluctance on the part of Sunnis to join military organisations throughout the civil war. The more prominent groups were secular and holding a [[Nasserism|Nasserist]] ideology, or otherwise having [[pan-Arab]] and [[Arab nationalist]] leanings. A few [[Islamist]] ones emerged at later stages of the war, such as the [[Tawhid Movement]] that took its base in Tripoli, and the Jama'a Islamiyya, which gave a Lebanese expression of the Muslim Brotherhood in terms of political orientations and practice. The main Sunni-led organization was the [[al-Murabitun]], a major west-Beirut based force. Al-Murabitoun, led by [[Ibrahim Kulaylat]], fought with the Palestinians against the Israelis during the invasion of 1982. There is also the Tanzim al-Nassiri in [[Sidon]] that was formed through the followers of Maaruf Saad, and who rallied later behind his son Mustafa Saad, and now are led by Usama Saad. The [[Sixth of February Movement]] was another pro-Palestinian Nasserist minor militia that sided with the PLO in the [[War of the Camps]] in the 1980s. ||| Political groups and militias ||| Overview of the different political groups and militias ||| Sunni Muslim groups +-1 Left-wing uprisings against the Bolsheviks ||| Kronstadt rebellion ||| Subsequent uprisings included the [[Tambov Rebellion]], [[Workers' Opposition]] and the [[Kronstadt rebellion]]. ||| Left SR Uprising ||| ||| +-1 Liberal Wars ||| Battle of Ponte Ferreira ||| Meanwhile, in [[Brazil]], relations between Pedro and Brazil's agricultural magnates had become strained. In April 1831, Pedro abdicated in Brazil in favor of his son, [[Peter II of Brazil|Pedro II]], and sailed for [[United Kingdom of Great Britain and Ireland|Britain]]. He organized a military expedition there and then went to [[Terceira island]] in the [[Azores]], which was in the hands of the Liberals, to set up a government in exile. The government of Miguel blockaded the island, but the blockading squadron was attacked by a French squadron during the run-up to the [[Battle of the Tagus]], where several Miguelist ships were captured. In July 1832, with the backing of Liberals in Spain and [[England]], an expedition led by Dom Pedro landed near Porto, which the Miguelites abandoned and where, after military activities including the [[Battle of Ponte Ferreira]], Pedro and his associates were besieged by Miguelite forces for nearly a year. To protect British interests, a naval squadron under Commander [[William Glascock]] in [[HMS Orestes|HMS ''Orestes'']] was stationed in the [[Douro]], where it came under fire from both sides. ||| Rebellion ||| ||| +-1 Liberal Wars ||| Battle of the Tagus ||| Meanwhile, in [[Brazil]], relations between Pedro and Brazil's agricultural magnates had become strained. In April 1831, Pedro abdicated in Brazil in favor of his son, [[Peter II of Brazil|Pedro II]], and sailed for [[United Kingdom of Great Britain and Ireland|Britain]]. He organized a military expedition there and then went to [[Terceira island]] in the [[Azores]], which was in the hands of the Liberals, to set up a government in exile. The government of Miguel blockaded the island, but the blockading squadron was attacked by a French squadron during the run-up to the [[Battle of the Tagus]], where several Miguelist ships were captured. In July 1832, with the backing of Liberals in Spain and [[England]], an expedition led by Dom Pedro landed near Porto, which the Miguelites abandoned and where, after military activities including the [[Battle of Ponte Ferreira]], Pedro and his associates were besieged by Miguelite forces for nearly a year. To protect British interests, a naval squadron under Commander [[William Glascock]] in [[HMS Orestes|HMS ''Orestes'']] was stationed in the [[Douro]], where it came under fire from both sides. ||| Rebellion ||| ||| +-1 Libyan Civil War (2011) ||| 2011 military intervention in Libya ||| In a 17 March 2011 interview, shortly before the [[2011 military intervention in Libya|military intervention]], [[Muammar Gaddafi]]'s son and ''heir apparent'' [[Saif al-Islam Gaddafi]] said that 'armed militia' fighters in [[Benghazi]] were killing children and terrorizing the population. ||| State response ||| Violence ||| +-1 Loire Campaign (1429) ||| Battle of Patay ||| Hearing news of an English relief force approaching from Paris under Sir [[John Fastolf]], d'Alençon negotiated the English surrender and granted them safe conduct out of Beaugency. The [[Battle of Patay]] followed on open territory on 18 June. ||| Campaign ||| The Battle of Beaugency ||| +-1 Lower Canada Rebellion ||| Battle of Saint-Denis (1837) ||| Papineau escaped to the United States, and other rebels organized in the countryside. Led by [[Wolfred Nelson]], they defeated a British force at [[Battle of Saint-Denis (1837)|Saint-Denis]] on November 23, 1837. The British troops soon beat back the rebels, defeating them at [[Battle of Saint-Charles|Saint-Charles]] on November 25 and at [[Battle of Saint-Eustache|Saint-Eustache]] on December 14. The troops pillaged and ransacked Saint-Eustache. On December 5, the government declared [[martial law]] in Montreal. ||| Organizing for armed conflict ||| ||| +-1 Malayan Emergency ||| Communist Insurgency War ||| Despite the communists' defeat in 1960, communist leader [[Chin Peng]] renewed the insurgency in 1967; it lasted until 1989, and became known as the [[Communist Insurgency War]] (Second Malayan Emergency). Although Australian and British armed forces had largely withdrawn from Malaya (by then known as [[Peninsular Malaysia|Peninsular]] [[Malaysia]]) years earlier, the insurgency still failed. ||| ||| ||| +-1 Marian civil war ||| Battle of Langside ||| The supporters of Queen Mary had popular international support for what was seen as the legitimate cause of supporters of an unjustly deposed monarch. The King's party claimed that their cause was a [[French wars of religion|war of religion]], like that in France, and that they were fighting for the [[Scottish Reformation|Protestant cause]]. Mary had escaped from her imprisonment in Lochleven Castle to join her main supporters in the west of Scotland, but they were defeated at the [[Battle of Langside]] by her half-brother [[Regent Moray|James Stewart, earl of Moray]]. Mary went to England. ||| Queen's men and King's men ||| ||| +-1 Marian civil war ||| Battle of Tillieangus ||| * 10 October & 20 November 1571; [[Battle of Tillieangus]] and [[Battle of Craibstone]], the Forbes for the King, against the Gordons for the Queen. ||| Key events ||| ||| +-1 Mexican War of Independence ||| Siege of Cuautla ||| Following the execution of Hidalgo, [[José María Morelos]] took over leadership of the insurgency. He achieved the occupation of the cities of [[Oaxaca, Oaxaca|Oaxaca]] and [[Acapulco]]. In 1813, he convened the [[Congress of Chilpancingo]] to bring representatives together and, on 6 November of that year, the Congress signed the first official document of independence, known as the '[[Solemn Act of the Declaration of Independence of Northern America]]'. A long period of war followed in the [[Siege of Cuautla]]. In 1815, Morelos was captured by Spanish colonial authorities, tried and executed for treason. ||| First phase of the insurgency - the Hidalgo revolt ||| ||| +-1 Middle Eastern theatre of World War I ||| Arab Revolt ||| The '''Middle Eastern theatre of World War I''' saw action between 29 October 1914 and 30 October 1918. The combatants were on the one hand, the [[Ottoman Empire]] (including [[Kurds]], [[Persian people|Persians]] and some [[Arab]] tribes), with some assistance from the other [[Central Powers]], and on the other hand, the [[British Empire|British]] (with the help of [[Jews]], [[Greeks]], [[Assyrians]] and the majority of the Arabs), the [[Russian Empire|Russians]] (with the help of [[Armenians]]) and the [[French Third Republic|French]] from the [[Allies of World War I]]. There were five main campaigns: the [[Sinai and Palestine Campaign]], the [[Mesopotamian Campaign]], the [[Caucasus Campaign]], the [[Persian Campaign]], and the [[Gallipoli Campaign]]. There were also several minor campaigns: the [[North African Campaign (World War I)|North African Campaign]], [[Arab Revolt|Arab Campaign]], and [[South Arabia during World War I|South Arabia Campaign]]. ||| ||| ||| +-1 Middle Eastern theatre of World War I ||| Battle of Manzikert (1915) ||| On 19 June, the Russians launched another offensive northwest of Lake Van. Commanded by Oganovski, they advanced into the hills west of Malazgrit, but had underestimated the size of the Ottoman forces. They were surprised by a large Ottoman force at the [[Battle of Manzikert (1915)|Battle of Manzikert]]. They were not aware that the [[IX Corps (Ottoman Empire)|Ottoman IX Corps]], together with the 17th and 28th Divisions, was moving to Mush also. ||| Chronology ||| 1915 ||| April–June +-1 Middle Eastern theatre of World War I ||| Battle of Megiddo (1918) ||| General [[Otto Liman von Sanders|Liman von Sanders]] had no clear idea where the British were going to attack. Compounding the problems, the Ottomans withdrew their best troops to serve in the Caucasus Campaign. General Allenby finally launched the [[Battle of Megiddo (1918)|Battle of Megiddo]], with the [[Jewish Legion]] under his command. Ottoman troops started a full scale retreat. ||| Chronology ||| 1918 ||| +-1 Middle Eastern theatre of World War I ||| Caucasus Campaign ||| The '''Middle Eastern theatre of World War I''' saw action between 29 October 1914 and 30 October 1918. The combatants were on the one hand, the [[Ottoman Empire]] (including [[Kurds]], [[Persian people|Persians]] and some [[Arab]] tribes), with some assistance from the other [[Central Powers]], and on the other hand, the [[British Empire|British]] (with the help of [[Jews]], [[Greeks]], [[Assyrians]] and the majority of the Arabs), the [[Russian Empire|Russians]] (with the help of [[Armenians]]) and the [[French Third Republic|French]] from the [[Allies of World War I]]. There were five main campaigns: the [[Sinai and Palestine Campaign]], the [[Mesopotamian Campaign]], the [[Caucasus Campaign]], the [[Persian Campaign]], and the [[Gallipoli Campaign]]. There were also several minor campaigns: the [[North African Campaign (World War I)|North African Campaign]], [[Arab Revolt|Arab Campaign]], and [[South Arabia during World War I|South Arabia Campaign]]. ||| ||| ||| +-1 Middle Eastern theatre of World War I ||| Defense of Van (1915) ||| On 20 April, the [[Defense of Van (1915)|Siege of Van]] began. On 24 April, Talat Pasha promulgated the [[s:Circular on April 24, 1915|order on April 24]] (known by the Armenians as the [[Red Sunday]]) which stated that the Armenians in this region were led by Russians and had rebelled against Ottoman government. ||| Chronology ||| 1915 ||| April–June +-1 Middle Eastern theatre of World War I ||| Gallipoli Campaign ||| The '''Middle Eastern theatre of World War I''' saw action between 29 October 1914 and 30 October 1918. The combatants were on the one hand, the [[Ottoman Empire]] (including [[Kurds]], [[Persian people|Persians]] and some [[Arab]] tribes), with some assistance from the other [[Central Powers]], and on the other hand, the [[British Empire|British]] (with the help of [[Jews]], [[Greeks]], [[Assyrians]] and the majority of the Arabs), the [[Russian Empire|Russians]] (with the help of [[Armenians]]) and the [[French Third Republic|French]] from the [[Allies of World War I]]. There were five main campaigns: the [[Sinai and Palestine Campaign]], the [[Mesopotamian Campaign]], the [[Caucasus Campaign]], the [[Persian Campaign]], and the [[Gallipoli Campaign]]. There were also several minor campaigns: the [[North African Campaign (World War I)|North African Campaign]], [[Arab Revolt|Arab Campaign]], and [[South Arabia during World War I|South Arabia Campaign]]. ||| ||| ||| +-1 Middle Eastern theatre of World War I ||| Persian Campaign ||| The '''Middle Eastern theatre of World War I''' saw action between 29 October 1914 and 30 October 1918. The combatants were on the one hand, the [[Ottoman Empire]] (including [[Kurds]], [[Persian people|Persians]] and some [[Arab]] tribes), with some assistance from the other [[Central Powers]], and on the other hand, the [[British Empire|British]] (with the help of [[Jews]], [[Greeks]], [[Assyrians]] and the majority of the Arabs), the [[Russian Empire|Russians]] (with the help of [[Armenians]]) and the [[French Third Republic|French]] from the [[Allies of World War I]]. There were five main campaigns: the [[Sinai and Palestine Campaign]], the [[Mesopotamian Campaign]], the [[Caucasus Campaign]], the [[Persian Campaign]], and the [[Gallipoli Campaign]]. There were also several minor campaigns: the [[North African Campaign (World War I)|North African Campaign]], [[Arab Revolt|Arab Campaign]], and [[South Arabia during World War I|South Arabia Campaign]]. ||| ||| ||| +-1 Middle Eastern theatre of World War I ||| Sinai and Palestine Campaign ||| The '''Middle Eastern theatre of World War I''' saw action between 29 October 1914 and 30 October 1918. The combatants were on the one hand, the [[Ottoman Empire]] (including [[Kurds]], [[Persian people|Persians]] and some [[Arab]] tribes), with some assistance from the other [[Central Powers]], and on the other hand, the [[British Empire|British]] (with the help of [[Jews]], [[Greeks]], [[Assyrians]] and the majority of the Arabs), the [[Russian Empire|Russians]] (with the help of [[Armenians]]) and the [[French Third Republic|French]] from the [[Allies of World War I]]. There were five main campaigns: the [[Sinai and Palestine Campaign]], the [[Mesopotamian Campaign]], the [[Caucasus Campaign]], the [[Persian Campaign]], and the [[Gallipoli Campaign]]. There were also several minor campaigns: the [[North African Campaign (World War I)|North African Campaign]], [[Arab Revolt|Arab Campaign]], and [[South Arabia during World War I|South Arabia Campaign]]. ||| ||| ||| +-1 Military intervention against ISIL ||| Russian military intervention in the Syrian Civil War ||| At the end of September 2015, [[Russia]], [[Iraq]], [[Iran]] and [[Syria]] set up a 'joint information center' in [[Baghdad]] to 'gather, process and analyse current information about the situation in the Middle East – primarily for fighting IS.' On 30 September 2015, Russia began its [[Russian military intervention in the Syrian Civil War|air campaign]] on the side and in support of the Syrian government. ||| International coalitions against ISIL ||| Russia-led coalition ||| +-1 Monmouth Rebellion ||| Battle of Sedgemoor ||| Monmouth landed at [[Lyme Regis]] on 11 June 1685. In the following few weeks, his growing army of [[Nonconformism|nonconformists]], [[artisan]]s, and farm workers fought a series of skirmishes with local militias and regular soldiers commanded by [[Louis de Duras, 2nd Earl of Feversham|Louis de Duras]], 2nd [[Earl of Feversham]], and [[John Churchill, 1st Duke of Marlborough|John Churchill]], who later became the [[Duke of Marlborough]]. Monmouth's forces were unable to compete with the regular army and failed to capture the key city of [[Bristol]]. The rebellion ended with the defeat of Monmouth's army at the [[Battle of Sedgemoor]] on 6 July 1685 by forces led by Feversham and Churchill. ||| ||| ||| +-1 Moro Conflict ||| Jabidah massacre ||| The '''Moro Conflict''' The Moro Insurgency was triggered by the [[Jabidah massacre]], which saw the killing of 60 Filipino Muslim commandos on a planned operation to [[North Borneo dispute|reclaim]] the eastern part of the Malaysian state of [[Sabah]]. In response, the [[University of the Philippines]] professor Nur Misuari established the [[Moro National Liberation Front]] (MNLF), an armed insurgent group that was committed to establishing an independent [[Mindanao]]. Over the successive years, the MNLF splintered into several different groups including the [[Moro Islamic Liberation Front]] (MILF), which wanted to establish an Islamic state within the Philippines. The Moro Insurgency is rooted in a [[Moro Rebellion|long history of resistance]] by the Bangsamoro people against foreign rule, dating back to the American annexation of the Philippines in 1899. Since then, Moro resistance has persisted against the Philippines central government in [[Manila]]. ||| ||| ||| +-1 Moro Rebellion ||| First Battle of Bud Dajo ||| * The [[First Battle of Bud Dajo]] was fought from March 5 to March 7, 1906. An estimated 600 Muslims were killed, fighting a force of 800 Americans. ||| Conflict ||| The Province under Leonard Wood (1903–1906) ||| Campaigns +-1 Muslim conquest of Transoxiana ||| Day of Thirst ||| Suluk's aim was to reconquer all of Transoxiana from the Arab invaders - his war was paralleled, much more westwards, by the [[Khazar]] empire. In 721 Turgesh forces, led by Kül Chor, defeated the Caliphal army commanded by Sa'id ibn Abdu'l-Aziz near [[Samarkand]]. Sa'id's successor, Al-Kharashi, massacred Turks and [[Sogdiana|Sogdian]] refugees in [[Khujand]], causing an influx of refugees towards the Turgesh. In 724 Caliph [[Hisham]] sent a new governor to [[Greater Khorasan|Khorasan]], Muslim ibn Sa'id, with orders to crush the 'Turks' once and for all, but, confronted by Suluk, Muslim hardly managed to reach Samarkand with a handful of survivors after the so-called '[[Day of Thirst]]'. ||| Battles between Muslims and Turks ||| Umayyad–Turgesh Wars ||| +-1 Muslim conquests ||| Day of Thirst ||| Following the [[First Fitna]], the Umayyads resumed the push to capture Sassanid lands and began to move towards the conquest of lands east and north of the [[plateau]] towards [[Greater Khorasan]] and the [[Silk Road]] along [[Transoxiana]]. Following the collapse of the Sassanids, these regions had fallen under the sway of local [[Iranian peoples|Iranian]] and [[Turkic peoples|Turkic]] tribes as well as the Tang Dynasty. The conquest of [[Transoxiana]] (Ar. ''Ma wara' al-nahr'') was chiefly the work of [[Qutayba ibn Muslim]], who between 705 and 715 expanded Muslim control over [[Sogdiana]], [[Khwarezm]] and the [[Jaxartes]] valley up to [[Ferghana]]. Following Qutayba's death in 715, local revolts and the defeats at the hands of the Chinese-sponsored [[Turgesh]] (chiefly the '[[Day of Thirst]]' in 724 and the [[Battle of the Defile]] in 731) led to a gradual loss of the province: by 738, the Turgesh and their Sogdian allies were raiding Khurasan south of the Oxus. However, the murder of the Turgesh ''[[khagan]]'', Su-lu, and the conciliatory policies of [[Nasr ibn Sayyar]] towards the native population opened the way for a swift, albeit not total, restoration of Muslim control over Transoxiana in 739–741. Muslim control over the region was consolidated with the defeat of the armies of [[Tang China]] in the [[Battle of Talas]] in 751. ||| Military campaigns ||| Conquest of Transoxiana: 662–751 ||| +-1 Nagorno-Karabakh War ||| Operation Ring ||| As many Armenians and Azeris in Karabakh began an arms build up (by acquiring weaponry located in caches throughout Karabakh) in order to defend themselves, Mutalibov turned to Gorbachev for support in launching a joint military operation in order to disarm Armenian militants in the region. Termed [[Operation Ring]], Soviet forces acting in conjunction with the local Azerbaijani [[Special Purpose Police Unit (Azerbaijan)|OMON]] forcibly deported Armenians living in the villages of the region of [[Shahumyan]]. Mutalibov stated in this regard, ||| Interethnic violence ||| Operation Ring ||| +-1 Nagorno-Karabakh conflict ||| Nagorno-Karabakh War ||| The '''Nagorno-Karabakh conflict''' is an [[ethnic conflict]] between the [[Republic of Armenia]] and [[Azerbaijan]] over the self-declared [[Nagorno-Karabakh Republic]], a region in Azerbaijan populated primarily by ethnic Armenians. It has its origins in the early 20th century, although the present conflict began in 1988 and escalated into a [[Nagorno-Karabakh War|full-scale war]] in the early 1990s. Tensions and border skirmishes have continued in the region despite an official cease-fire signed in 1994. ||| ||| ||| +-1 Neapolitan War ||| Battle of Carpi (1815) ||| Meanwhile, [[Johann Maria Philipp Frimont|Frimont]] had ordered a counterattack to try to relieve the garrison in [[Ferrara]]. He ordered a corps under the command of [[Frederick Bianchi, Duke of Casalanza|Bianchi]] to advance on [[Battle of Carpi (1815)|Carpi]], which was guarded by a brigade under the command of [[Guglielmo Pepe]]. ||| War ||| Austrian counterattack ||| +-1 Neapolitan War ||| Battle of Casaglia ||| But even after Carrascosa's retreat, Murat was still in a position to continue the siege at Ferrara. In response, Frimont ordered a corps under the command of General [[Adam Albert von Neipperg|Neipperg]] to attack his entrenched right flank. On 12 April, after bitter fighting at the [[Battle of Casaglia]], the Neapolitan troops were driven from their entrenched positions. ||| War ||| Austrian counterattack ||| +-1 Neapolitan War ||| Battle of Cesenatico ||| But the Austrian advanced guard caught the retreating Neapolitan force twice by surprise at [[Battle of Cesenatico|Cesenatico]] and [[Battle of Pesaro|Pesaro]]. Murat hurried his retreat and by late April, his main force had arrived safely in [[Ancona]], where he was reunited with his two Guard Divisions. ||| War ||| Austrian counterattack ||| +-1 Neapolitan War ||| Battle of Occhiobello ||| The [[Battle of Occhiobello]] proved to be the turning point of the war. [[Joachim Murat|Murat's]] attempts to cross the [[River Po]] proved unsuccessful and after two days of heavy fighting, the Neapolitans fell back after suffering over 2,000 casualties. To make matters worse, the [[United Kingdom of Great Britain and Ireland|United Kingdom]] declared war on Murat and sent a fleet over to Italy. ||| War ||| Austrian counterattack ||| +-1 Neapolitan War ||| Battle of Pesaro ||| But the Austrian advanced guard caught the retreating Neapolitan force twice by surprise at [[Battle of Cesenatico|Cesenatico]] and [[Battle of Pesaro|Pesaro]]. Murat hurried his retreat and by late April, his main force had arrived safely in [[Ancona]], where he was reunited with his two Guard Divisions. ||| War ||| Austrian counterattack ||| +-1 Neapolitan War ||| Battle of Ronco ||| Murat, who placed too much faith in his Guard Divisions and believing they would be able to halt the advance of Bianchi and Nugent, retreated slowly, even turning to check the pursuit at the [[Battle of Ronco|Ronco]] and [[Savio (river)|Savio]] rivers. ||| War ||| Austrian counterattack ||| +-1 Neapolitan War ||| Battle of Tolentino ||| The '''Neapolitan War''' was a conflict between the Napoleonic [[Kingdom of Naples]] and the [[Austrian Empire]]. It started on 15 March 1815 when [[Joachim Murat]] declared war on Austria and ended on 20 May 1815 with the signing of the [[Treaty of Casalanza]]. The war occurred during the [[Hundred Days]] between [[Napoleon I of France|Napoleon's]] return from exile and before he left Paris to be decisively defeated at the [[Battle of Waterloo]]. The war was triggered by a pro-Napoleon uprising in Naples, and ended after a decisive Austrian victory at the [[Battle of Tolentino]] and [[Ferdinand I of the Two Sicilies|Ferdinand IV]] was reinstated as King of Naples and Sicily. However, the intervention by Austria caused resentment in Italy, which further spurred on the drive towards [[Italian unification]]. ||| ||| ||| +-1 Neapolitan War ||| Battle of the Panaro ||| Murat engaged Bianchi again at the [[Battle of the Panaro]]; the Austrians were defeated and driven back. The Austrian vanguard was forced to retreat to [[Borgoforte]], allowing the Neapolitans to advance on Modena. ||| War ||| Neapolitan advance ||| +-1 Neapolitan War ||| Siege of Ancona ||| The battle had severely damaged the morale of the Neapolitan troops and many senior officers had been casualties in the battle. The battered Neapolitan army fell back in disarray. On 5 May, a joint [[United Kingdom of Great Britain and Ireland|Anglo]]-Austrian fleet began a blockade of [[Siege of Ancona|Ancona]], eventually taking the entire garrison of the city as prisoners. ||| War ||| Battle of Tolentino ||| +-1 New Guinea campaign ||| Battle of Driniumor River ||| ** [[Battle of Driniumor River]] ||| 1944–45 ||| ||| +-1 New Zealand Wars ||| East Cape War ||| The use of a punitive [[New Zealand land confiscations|land confiscation]] policy from 1865, depriving 'rebel' Māori of the means of living, fuelled further Māori anger and resentment, fanning the flames of conflict in [[Second Taranaki War|Taranaki]] (1863-1866) and on the [[East Cape War|east coast]] (1865-1866). ||| Background ||| ||| +-1 New Zealand Wars ||| Flagstaff War ||| The [[Flagstaff War]] took place in the far north of New Zealand, around the [[Bay of Islands]], between March 1845 and January 1846. In 1845 [[George Grey]] arrived in New Zealand to take up his appointment as Governor. At this time [[Hone Heke]] challenged the authority of the British, beginning by cutting down the flagstaff on [[Flagstaff Hill, New Zealand|Flagstaff Hill]] at [[Kororareka]]. The flagstaff had previously flown the colours of [[United Tribes of New Zealand]] but now carried the [[Union Flag|Union Jack]] and therefore symbolised the grievances of Heke and his ally [[Te Ruki Kawiti]], as to changes that had followed the signing of the [[Treaty of Waitangi]]. ||| Conflicts ||| The Northern War ||| +-1 New Zealand Wars ||| Tauranga Campaign ||| Between 1863 and 1866 there was a resumption of hostilities between Māori and the New Zealand Government in Taranaki, which is sometimes referred to as the Second Taranaki War. The conflict, which overlapped the wars in [[Waikato]] and [[Tauranga Campaign|Tauranga]], was fuelled by a combination of factors: lingering Māori resentment over the sale of land at Waitara in 1860 and government delays in resolving the issue; a large-scale [[New Zealand land confiscations|land confiscation]] policy launched by the government in late 1863; and the rise of the so-called Hauhau movement, an extremist part of the [[Pai Marire]] [[Syncretism|syncretic]] religion, which was strongly opposed to the alienation of Māori land and eager to strengthen Māori identity. The Hauhau movement became a unifying factor for Taranaki Māori in the absence of individual Māori commanders. ||| Conflicts ||| The Second Taranaki War ||| +-1 Nigerian Civil War ||| Abagana Ambush ||| *** 31 March – [[Abagana Ambush]] ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Capture of Owerri ||| *** 25 April – Biafra [[Capture of Owerri|captures Owerri]] ||| Timeline ||| ||| +-1 Nigerian Civil War ||| First Invasion of Onitsha ||| *** 4–12 October – [[First Invasion of Onitsha]] ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Invasion of Port Harcourt ||| *** 19 May – Nigeria [[Invasion of Port Harcourt|captures Port Harcourt]]. ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Operation Hiroshima ||| *** 15 November – [[Operation Hiroshima]]: unsuccessful Biafran attempt to recapture Onitsha. ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Operation Tail-Wind ||| *** 7–12 January – [[Operation Tail-Wind]]. ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Operation UNICORD ||| *** 6 July – Nigeria invades Biafra ([[Operation UNICORD]]) ||| Timeline ||| ||| +-1 Nigerian Civil War ||| Second Invasion of Onitsha ||| *** 2 January – 20 March – [[Second Invasion of Onitsha]] ||| Timeline ||| ||| +-1 Normandy landings ||| Gold Beach ||| The [[Amphibious warfare|amphibious landing]]s were preceded by extensive aerial and naval bombardment and an [[airborne forces|airborne assault]]—the [[American airborne landings in Normandy|landing of 24,000 American]], [[Operation Tonga|British, and Canadian airborne troops shortly after midnight]]. Allied [[infantry]] and [[Armoured warfare|armoured]] [[division (military)|divisions]] began landing on the coast of France at 06:30. The target {{Convert|50|mi|km|adj=on}} stretch of the [[Normandy]] coast was divided into five sectors: [[Utah Beach|Utah]], [[Omaha Beach|Omaha]], [[Gold Beach|Gold]], [[Juno Beach|Juno]], and [[Sword Beach]]. Strong winds blew the landing craft east of their intended positions, particularly at Utah and Omaha. The men landed under heavy fire from gun emplacements overlooking the beaches, and the shore was mined and covered with obstacles such as wooden stakes, metal tripods, and barbed wire, making the work of the beach clearing teams difficult and dangerous. Casualties were heaviest at Omaha, with its high cliffs. At Gold, Juno, and Sword, several fortified towns were cleared in house-to-house fighting, and two major gun emplacements at Gold were disabled using specialised tanks. ||| ||| ||| +-1 Normandy landings ||| Juno Beach ||| The [[Amphibious warfare|amphibious landing]]s were preceded by extensive aerial and naval bombardment and an [[airborne forces|airborne assault]]—the [[American airborne landings in Normandy|landing of 24,000 American]], [[Operation Tonga|British, and Canadian airborne troops shortly after midnight]]. Allied [[infantry]] and [[Armoured warfare|armoured]] [[division (military)|divisions]] began landing on the coast of France at 06:30. The target {{Convert|50|mi|km|adj=on}} stretch of the [[Normandy]] coast was divided into five sectors: [[Utah Beach|Utah]], [[Omaha Beach|Omaha]], [[Gold Beach|Gold]], [[Juno Beach|Juno]], and [[Sword Beach]]. Strong winds blew the landing craft east of their intended positions, particularly at Utah and Omaha. The men landed under heavy fire from gun emplacements overlooking the beaches, and the shore was mined and covered with obstacles such as wooden stakes, metal tripods, and barbed wire, making the work of the beach clearing teams difficult and dangerous. Casualties were heaviest at Omaha, with its high cliffs. At Gold, Juno, and Sword, several fortified towns were cleared in house-to-house fighting, and two major gun emplacements at Gold were disabled using specialised tanks. ||| ||| ||| +-1 Normandy landings ||| Omaha Beach ||| The [[Amphibious warfare|amphibious landing]]s were preceded by extensive aerial and naval bombardment and an [[airborne forces|airborne assault]]—the [[American airborne landings in Normandy|landing of 24,000 American]], [[Operation Tonga|British, and Canadian airborne troops shortly after midnight]]. Allied [[infantry]] and [[Armoured warfare|armoured]] [[division (military)|divisions]] began landing on the coast of France at 06:30. The target {{Convert|50|mi|km|adj=on}} stretch of the [[Normandy]] coast was divided into five sectors: [[Utah Beach|Utah]], [[Omaha Beach|Omaha]], [[Gold Beach|Gold]], [[Juno Beach|Juno]], and [[Sword Beach]]. Strong winds blew the landing craft east of their intended positions, particularly at Utah and Omaha. The men landed under heavy fire from gun emplacements overlooking the beaches, and the shore was mined and covered with obstacles such as wooden stakes, metal tripods, and barbed wire, making the work of the beach clearing teams difficult and dangerous. Casualties were heaviest at Omaha, with its high cliffs. At Gold, Juno, and Sword, several fortified towns were cleared in house-to-house fighting, and two major gun emplacements at Gold were disabled using specialised tanks. ||| ||| ||| +-1 Normandy landings ||| Operation Tonga ||| The [[Amphibious warfare|amphibious landing]]s were preceded by extensive aerial and naval bombardment and an [[airborne forces|airborne assault]]—the [[American airborne landings in Normandy|landing of 24,000 American]], [[Operation Tonga|British, and Canadian airborne troops shortly after midnight]]. Allied [[infantry]] and [[Armoured warfare|armoured]] [[division (military)|divisions]] began landing on the coast of France at 06:30. The target {{Convert|50|mi|km|adj=on}} stretch of the [[Normandy]] coast was divided into five sectors: [[Utah Beach|Utah]], [[Omaha Beach|Omaha]], [[Gold Beach|Gold]], [[Juno Beach|Juno]], and [[Sword Beach]]. Strong winds blew the landing craft east of their intended positions, particularly at Utah and Omaha. The men landed under heavy fire from gun emplacements overlooking the beaches, and the shore was mined and covered with obstacles such as wooden stakes, metal tripods, and barbed wire, making the work of the beach clearing teams difficult and dangerous. Casualties were heaviest at Omaha, with its high cliffs. At Gold, Juno, and Sword, several fortified towns were cleared in house-to-house fighting, and two major gun emplacements at Gold were disabled using specialised tanks. ||| ||| ||| +-1 North African Campaign ||| Operation Compass ||| Fighting in North Africa started with the [[Kingdom of Italy (1861–1946)|Italian]] declaration of war on 10 June 1940. On 14 June, the [[British Army]]'s [[11th Hussars]] (assisted by elements of the [[1st Royal Tank Regiment]], 1st RTR) crossed the border from Egypt into [[Libya]] and captured the Italian [[Fort Capuzzo]]. This was followed by an Italian counteroffensive into Egypt and the capture of [[Sidi Barrani]] in September 1940 and then in December 1940 by a Commonwealth counteroffensive, [[Operation Compass]]. During Operation Compass, the Italian [[Tenth Army (Italy)|10th Army]] was destroyed and the [[Nazi Germany|German]] ''[[Afrika Korps]]''—commanded by [[Erwin Rommel]] who later became known as 'The desert fox'—was dispatched to North Africa—during [[Operation Sonnenblume|Operation ''Sonnenblume'']]—to reinforce Italian forces in order to prevent a complete Axis defeat. ||| ||| ||| +-1 North African Campaign ||| Western Desert Campaign ||| During the [[World War II|Second World War]], the '''North African Campaign''' took place in [[North Africa]] from 10 June 1940 to 13 May 1943. It included campaigns fought in the [[Libya]]n and [[Egypt]]ian deserts ([[Western Desert Campaign]], also known as the Desert War) and in [[Morocco]] and [[Algeria]] ([[Operation Torch]]) and [[Tunisia]] ([[Tunisia Campaign]]). ||| ||| ||| +-1 North Borneo dispute ||| Jabidah massacre ||| It was revealed later in 1968 that President [[Ferdinand Marcos]] was training a team of militants on [[Corregidor]] known as [[Operation Merdeka]] for infiltration into Sabah. The plan failed as a result of the [[Jabidah massacre]]. ||| Philippine claim ||| ||| +-1 Northern Iraq offensive (August 2014) ||| Battle for Mosul Dam ||| 50,000 of Sinjar's [[Yazidis]] took refuge in the adjacent [[Sinjar Mountains]], where they lacked food, water and other basic necessities. 35,000 to 45,000 of them were evacuated within several weeks, after [[American-led intervention in Iraq (2014–present)|the United States bombarded ISIL positions]] and [[Sinjar massacre#Refugees' crisis Sinjar Mountains|efforts]] from Kurdish PKK, YPG and/or Peshmerga forces assisted their escape. Some ISIL-controlled territory was retaken; a subsequent Kurdish [[Battle for Mosul Dam|counter-attack]] recaptured the Mosul Dam and several other towns. ||| ||| ||| +-1 Northern Iraq offensive (August 2014) ||| Sinjar massacre ||| The offensive resulted in 100,000 [[Christianity in Iraq|Iraqi Christians]] driven from their homes, 200,000 [[Yazidis|Yazidi]] civilians driven from their homes in the city of [[Sinjar]], [[Sinjar massacre|5,000 Yazidi men massacred]], [[Persecution of Yazidis by ISIL|5-7,000 Yazidi women enslaved]], and a [[Military intervention against the Islamic State of Iraq and the Levant|war of several countries against ISIL]]. ||| ||| ||| +-1 Northwest Indian War ||| Battle of Fallen Timbers ||| After St. Clair's disaster, Washington ordered [[Revolutionary War]] hero, General 'Mad' [[Anthony Wayne]], to organize and train a proper fighting force. Wayne took command of the new [[Legion of the United States]] late in 1793. He led his men to a decisive victory at the [[Battle of Fallen Timbers]] in 1794. The defeated tribes were forced to cede extensive territory, including much of present-day [[Ohio]], in the [[Treaty of Greenville]] in 1795. ||| ||| ||| +-1 Occupy movement ||| Occupy Portland ||| The longest US 're-occupation' started on 1 December 2011, when evicted activists from the [[Occupy Portland]] camp set up a table on the plaza of Portland's City Hall and lit a candle, igniting the [[Occupy Portland#24/7 Prayer Vigil to Lift the Camping Ban|24/7 Prayer Vigil to Lift the Camping Ban]], referring to the city's anti-'camping' ordinances that were cited during the eviction. ||| Chronology of events ||| 1 January 2012 to present ||| +-1 Operation Gothic Serpent ||| Battle of Mogadishu (1993) ||| As part of the operation, the soldiers were deployed in a [[Military operation|mission]] to arrest two of Aidid's lieutenants. That mission's result – executed under the command of Gothic Serpent – became known as the [[Battle of Mogadishu (1993)|Battle of Mogadishu]]. ||| ||| ||| +-1 Operation Overlord ||| Gold Beach ||| The decision to undertake a cross-channel invasion in 1944 was taken at the [[Washington Conference (1943)|Trident Conference]] in Washington in May 1943. General [[Dwight D. Eisenhower]] was appointed commander of [[Supreme Headquarters Allied Expeditionary Force]] (SHAEF), and General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] was named as commander of the [[21st Army Group]], which comprised all the land forces involved in the invasion. The [[Normandy]] coast was chosen as the site of the invasion, with the Americans assigned to land at [[Utah Beach|Utah]] and [[Omaha Beach]]es, the British at [[Sword Beach|Sword]] and [[Gold Beach]]es, and Canadians at [[Juno Beach]]. To meet the conditions expected on the Normandy beachhead, special technology was developed, including two artificial ports called [[Mulberry harbour]]s and an array of specialised tanks nicknamed [[Hobart's Funnies]]. In the months leading up to the invasion, the Allies conducted a substantial [[military deception]], [[Operation Bodyguard]], using both electronic and visual misinformation. This misled the Germans as to the date and location of the main Allied landings. [[Adolf Hitler]] placed German Field Marshal [[Erwin Rommel]] in charge of developing fortifications all along the [[Atlantic Wall]] in anticipation of an invasion. ||| ||| ||| +-1 Operation Overlord ||| Liberation of Paris ||| The Allies failed to reach their goals for the first day, but gained a tenuous foothold that they gradually expanded as they captured the port at [[Cherbourg-Octeville|Cherbourg]] on 26 June and the city of [[Caen]] on 21 July. A failed counterattack by German forces on 8 August led to 50,000 soldiers of the German 7th Army being trapped in the [[Falaise pocket]]. The Allies launched an invasion of southern France ([[Operation Dragoon]]) on 15 August, and the [[Liberation of Paris]] followed on 25 August. German forces retreated across the Seine on 30 August 1944, marking the close of Operation Overlord. ||| ||| ||| +-1 Operation Overlord ||| Omaha Beach ||| The decision to undertake a cross-channel invasion in 1944 was taken at the [[Washington Conference (1943)|Trident Conference]] in Washington in May 1943. General [[Dwight D. Eisenhower]] was appointed commander of [[Supreme Headquarters Allied Expeditionary Force]] (SHAEF), and General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] was named as commander of the [[21st Army Group]], which comprised all the land forces involved in the invasion. The [[Normandy]] coast was chosen as the site of the invasion, with the Americans assigned to land at [[Utah Beach|Utah]] and [[Omaha Beach]]es, the British at [[Sword Beach|Sword]] and [[Gold Beach]]es, and Canadians at [[Juno Beach]]. To meet the conditions expected on the Normandy beachhead, special technology was developed, including two artificial ports called [[Mulberry harbour]]s and an array of specialised tanks nicknamed [[Hobart's Funnies]]. In the months leading up to the invasion, the Allies conducted a substantial [[military deception]], [[Operation Bodyguard]], using both electronic and visual misinformation. This misled the Germans as to the date and location of the main Allied landings. [[Adolf Hitler]] placed German Field Marshal [[Erwin Rommel]] in charge of developing fortifications all along the [[Atlantic Wall]] in anticipation of an invasion. ||| ||| ||| +-1 Operation Overlord ||| Utah Beach ||| The decision to undertake a cross-channel invasion in 1944 was taken at the [[Washington Conference (1943)|Trident Conference]] in Washington in May 1943. General [[Dwight D. Eisenhower]] was appointed commander of [[Supreme Headquarters Allied Expeditionary Force]] (SHAEF), and General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] was named as commander of the [[21st Army Group]], which comprised all the land forces involved in the invasion. The [[Normandy]] coast was chosen as the site of the invasion, with the Americans assigned to land at [[Utah Beach|Utah]] and [[Omaha Beach]]es, the British at [[Sword Beach|Sword]] and [[Gold Beach]]es, and Canadians at [[Juno Beach]]. To meet the conditions expected on the Normandy beachhead, special technology was developed, including two artificial ports called [[Mulberry harbour]]s and an array of specialised tanks nicknamed [[Hobart's Funnies]]. In the months leading up to the invasion, the Allies conducted a substantial [[military deception]], [[Operation Bodyguard]], using both electronic and visual misinformation. This misled the Germans as to the date and location of the main Allied landings. [[Adolf Hitler]] placed German Field Marshal [[Erwin Rommel]] in charge of developing fortifications all along the [[Atlantic Wall]] in anticipation of an invasion. ||| ||| ||| +-1 Operation Perch ||| Battle of Villers-Bocage ||| Further west in the First U.S. Army area, American attacks forced a gap in the German defences. The [[7th Armoured Division (United Kingdom)|7th Armoured Division]] was diverted from Tilly-sur-Seulles, to advance through the gap in a [[flanking manoeuvre]] and force the {{lang|de|''Panzer-Lehr Division''}} to fall back, to avoid encirclement. On 14 June, after two days of battle including the [[Battle of Villers-Bocage]], the 7th Armoured Division was ordered to withdraw towards Caumont. Plans were made to resume the offensive once the 7th Armoured Division had been reinforced but these were postponed, when a storm in the [[English Channel]] seriously delayed the Allied landing of supplies and reinforcements. ||| ||| ||| +-1 Operation Phantom Thunder ||| Operation Alljah ||| '''Operation ''Phantom Thunder''''' began on 16 June 2007, when [[Multi-National Force-Iraq]] launched major offensive operations against [[al-Qaeda]] and other extremist [[terrorists]] operating throughout [[Iraq]]. Operation Phantom Thunder was a [[corps]] level operation, including [[Operation Arrowhead Ripper]] in [[Diyala Governorate|Diyala]] Province, [[Operation Marne Torch]] and [[Operation Commando Eagle]] in [[Babil]] Province, [[Operation Fardh al-Qanoon]] in [[Baghdad]], [[Operation Alljah]] in [[Al Anbar Governorate|Anbar]] Province, and continuing [[special forces]] actions against the [[Mahdi Army]] in southern Iraq and against [[Al-Qaeda]] leadership throughout the country. ||| ||| ||| +-1 Pacific War ||| Attack on Pearl Harbor ||| It is generally considered that the Pacific War began on 7/8 December 1941, on which date [[Empire of Japan|Japan]] [[Japanese invasion of Thailand|invaded Thailand]] and attacked the British possessions of [[Malayan Campaign|Malaya]], [[Battle of Singapore|Singapore]], and [[Battle of Hong Kong|Hong Kong]] as well as the United States military bases in [[Attack on Pearl Harbor|Hawaii]], [[Battle of Wake Island|Wake Island]], [[Battle of Guam (1941)|Guam]] and the [[Philippines Campaign (1941–42)|Philippines]].{{sfn|Drea|1998|p=26}} ||| ||| ||| +-1 Pacific War ||| Battle of Changsha (1939) ||| The war entered a new phase with the unprecedented defeat of the Japanese at [[Battle of Suixian-Zaoyang]] and [[Battle of Changsha (1939)|1st Battle of Changsha]]. After these victories, Chinese nationalist forces launched a large-scale [[1939–1940 Winter Offensive|counter-offensive]] in early 1940; however, due to its low military-industrial capacity, it was repulsed by Japanese army in late March 1940. By 1941 the conflict had become a stalemate. Although Japan had occupied much of northern, central, and coastal China, the [[Nationalist Government]] had retreated to the interior with a provisional capital set up at [[Chongqing|Chungking]] while the Chinese communists remained in control of base areas in [[Shaanxi]]. In addition, Japanese control of northern and central China was somewhat tenuous, in that Japan was usually able to control railroads and the major cities ('points and lines'), but did not have a major military or administrative presence in the vast Chinese countryside. The Japanese found its aggression against the retreating and regrouping Chinese army was stalled by the mountainous terrain in southwestern China while the Communists organised widespread [[guerrilla warfare|guerrilla]] and saboteur activities in northern and eastern China behind the Japanese front line. ||| Historical-background ||| Conflict between China and Japan ||| +-1 Pacific War ||| Battle of Hong Kong ||| It is generally considered that the Pacific War began on 7/8 December 1941, on which date [[Empire of Japan|Japan]] [[Japanese invasion of Thailand|invaded Thailand]] and attacked the British possessions of [[Malayan Campaign|Malaya]], [[Battle of Singapore|Singapore]], and [[Battle of Hong Kong|Hong Kong]] as well as the United States military bases in [[Attack on Pearl Harbor|Hawaii]], [[Battle of Wake Island|Wake Island]], [[Battle of Guam (1941)|Guam]] and the [[Philippines Campaign (1941–42)|Philippines]].{{sfn|Drea|1998|p=26}} ||| ||| ||| +-1 Pacific War ||| Battle of Imphal ||| Although the advance in the Arakan had been halted to release troops and aircraft for the [[Battle of Imphal]], the Americans and Chinese had continued to advance in northern Burma, aided by the [[Chindits]] operating against the Japanese lines of communication. In the middle of 1944 the [[Chinese Expeditionary Force]] [[Battle of Northern Burma and Western Yunnan|invaded northern Burma]] from [[Yunnan]] province. They captured a fortified position at [[Battle of Mount Song|Mount Song]].{{Sfn|Stevens|page=70}} By the time campaigning ceased during the [[monsoon]] rains, the [[Northern Combat Area Command|NCAC]] had secured a vital airfield at [[Siege of Myitkyina|Myitkyina]] (August 1944), which eased the problems of air resupply from India to China over '[[The Hump]]'. ||| Japanese offensive in India 1944 ||| ||| +-1 Pacific War ||| Battle of Midway ||| U.S. submarines accounted for 56% of the Japanese merchantmen sunk; mines or aircraft destroyed most of the rest. US submariners also claimed 28% of Japanese warships destroyed. Furthermore, they played important reconnaissance roles, as at the [[Battle of the Philippine Sea|battles of the Philippine Sea]] (June 1944) and [[Battle of Leyte Gulf|Leyte Gulf]] (October 1944) (and, coincidentally,{{clarify|date=March 2015}} at [[Battle of Midway|Midway]] in June 1942), when they gave accurate and timely warning of the approach of the Japanese fleet. Submarines also rescued hundreds of downed fliers, including future U.S. president [[George H.W. Bush]]. ||| Allied offensives, 1943–44 ||| Submarine warfare ||| +-1 Pacific War ||| Battle of North Borneo ||| The campaign opened with a landing on the small island of [[Battle of Tarakan (1945)|Tarakan]] on 1 May. This was followed on 1 June by simultaneous assaults in the north west, on the island of [[Operation Oboe Six|Labuan]] and the coast of [[Brunei]]. A week later the Australians attacked Japanese positions in [[Battle of North Borneo|North Borneo]]. The attention of the Allies then switched back to the central east coast, with the last major amphibious assault of World War II, at [[Battle of Balikpapan (1945)|Balikpapan]] on 1 July. ||| Final stages==<!-- This heading is used as a redirect anchor --&g ||| Liberation of Borneo ||| +-1 Pacific War ||| Battle of Shanghai ||| By 1937, Japan controlled Manchuria and was ready to move deeper into China. The [[Marco Polo Bridge Incident]] on 7 July 1937 provoked full-scale war between China and Japan. The [[Kuomingtang|Nationalist]] and [[Communist Party of China|Communist]] Chinese suspended their [[Chinese civil war|civil war]] to form a [[Second United Front|nominal alliance]] against Japan, and the [[Soviet Union]] quickly [[Sino-Soviet Non-Aggression Pact|lent support]] by providing large amount of [[materiel]]<!--and combat pilots...--> to Chinese troops.<!--Germany & Italy also provided aid to China...--> In August 1937, Generalissimo Chiang Kai-shek deployed his best army to fight about 300,000 Japanese troops [[Battle of Shanghai|in Shanghai]], but, after three months of fighting, Shanghai fell. The Japanese achieved major military victories, but world opinion—in particular in the United States—condemned Japan, especially after [[Panay Incident]]. ||| Historical-background ||| Conflict between China and Japan ||| +-1 Pacific War ||| Battle of Singapore ||| It is generally considered that the Pacific War began on 7/8 December 1941, on which date [[Empire of Japan|Japan]] [[Japanese invasion of Thailand|invaded Thailand]] and attacked the British possessions of [[Malayan Campaign|Malaya]], [[Battle of Singapore|Singapore]], and [[Battle of Hong Kong|Hong Kong]] as well as the United States military bases in [[Attack on Pearl Harbor|Hawaii]], [[Battle of Wake Island|Wake Island]], [[Battle of Guam (1941)|Guam]] and the [[Philippines Campaign (1941–42)|Philippines]].{{sfn|Drea|1998|p=26}} ||| ||| ||| +-1 Pacific War ||| Battle of Tarawa ||| In November 1943 U.S. Marines sustained high casualties when they overwhelmed the 4,500-strong garrison at [[Battle of Tarawa|Tarawa]]. This helped the Allies to improve the techniques of amphibious landings, learning from their mistakes and implementing changes such as thorough pre-emptive bombings and bombardment, more careful planning regarding tides and landing craft schedules, and better overall coordination. ||| Allied offensives, 1943–44 ||| ||| +-1 Pacific War ||| Battle of Timor ||| In early 1942, the governments of smaller powers began to push for an inter-governmental Asia-Pacific war council, based in Washington, D.C.. A council was established in London, with a subsidiary body in Washington. However, the smaller powers continued to push for an American-based body. The [[Pacific War Council]] was formed in Washington, on 1 April 1942, with President [[Franklin Delano Roosevelt|Franklin D. Roosevelt]], his key advisor [[Harry Hopkins]], and representatives from Britain, China, Australia, the Netherlands, New Zealand, and Canada. Representatives from [[British India|India]] and the Philippines were later added. The council never had any direct operational control, and any decisions it made were referred to the U.S.-UK [[Combined Chiefs of Staff]], which was also in Washington. Allied resistance, at first symbolic, gradually began to stiffen. Australian and Dutch forces led civilians in a prolonged [[Battle of Timor|guerilla campaign in Portuguese Timor]]. ||| Allies re-group, 1942–43 ||| ||| +-1 Pacific War ||| Battle of Yenangyaung ||| In Burma the British, under intense pressure, made a fighting retreat from [[Yangon|Rangoon]] to the Indo-Burmese border. This cut the [[Burma Road]] which was the western Allies' supply line to the Chinese Nationalists. In March 1942, [[Chinese Expeditionary Force]] started to [[Battle of Yunnan-Burma Road|attack Japanese forces in northern Burma]]. On 16 April, 7,000 British soldiers were encircled by the Japanese 33rd Division during the [[Battle of Yenangyaung]] and rescued by the Chinese 38th Division led by [[Sun Li-jen]]. The Japanese exploited this lack of unity to press ahead in their offensives. ||| Japanese offensives, 1941–42 ||| Attacks on Southeast Asia ||| +-1 Pacific War ||| Battle of Yunnan-Burma Road ||| In Burma the British, under intense pressure, made a fighting retreat from [[Yangon|Rangoon]] to the Indo-Burmese border. This cut the [[Burma Road]] which was the western Allies' supply line to the Chinese Nationalists. In March 1942, [[Chinese Expeditionary Force]] started to [[Battle of Yunnan-Burma Road|attack Japanese forces in northern Burma]]. On 16 April, 7,000 British soldiers were encircled by the Japanese 33rd Division during the [[Battle of Yenangyaung]] and rescued by the Chinese 38th Division led by [[Sun Li-jen]]. The Japanese exploited this lack of unity to press ahead in their offensives. ||| Japanese offensives, 1941–42 ||| Attacks on Southeast Asia ||| +-1 Pacific War ||| Battle of the Coral Sea ||| By mid-1942, the Japanese found themselves holding a vast area from the Indian Ocean to the Central Pacific, even though they lacked the resources to defend or sustain it. Moreover, [[Japanese Combined Fleet|Combined Fleet]] doctrine was inadequate to execute the proposed 'barrier' defence. Instead, Japan decided on additional attacks in both the south and central Pacific. While she had the element of surprise at Pearl Harbor, Allied [[Cryptanalysis|codebreakers]] had now turned the tables. They discovered an attack was planned against [[Port Moresby]]; if it fell, Japan would control the seas to the north and west of Australia and could isolate the country. The carrier {{USS|Lexington|CV-2|6}} under Admiral [[Frank Jack Fletcher|Fletcher]] joined {{USS|Yorktown|CV-5|6}} and an American-Australian task force to stop the Japanese advance. The resulting [[Battle of the Coral Sea]], fought in May 1942, was the first naval battle in which ships involved never sighted each other and only aircraft were used to attack opposing forces. Although ''Lexington'' was sunk and ''Yorktown'' seriously damaged, the Japanese lost the carrier {{ship|Japanese aircraft carrier|Shōhō||2}}, and suffered extensive damage to {{ship|Japanese aircraft carrier|Shōkaku||2}} and heavy losses to the air wing of {{ship|Japanese aircraft carrier|Zuikaku||2}}, both of which missed the operation against Midway the following month. Although Allied losses were heavier than Japanese, the attack on Port Moresby was thwarted and the Japanese invasion force turned back, a strategic victory for the Allies. The Japanese were forced to abandon their attempts to isolate Australia.{{sfn|Evans|Peattie|1997|p=489}} Moreover, Japan lacked the capacity to replace losses in ships, planes and trained pilots. ||| Allies re-group, 1942–43 ||| Coral Sea and Midway: the turning point ||| +-1 Pacific War ||| Battle of the Java Sea ||| At the [[Battle of the Java Sea]] in late-February and early-March, the [[Imperial Japanese Navy]] (IJN) inflicted a resounding defeat on the main ABDA naval force, under Admiral [[Karel Doorman]]. ||| Japanese offensives, 1941–42 ||| Attacks on Southeast Asia ||| +-1 Pacific War ||| Battle of the Sittang Bend ||| The Japanese forces which had been bypassed by the Allied advances [[Battle of the Sittang Bend|attempted to break out]] across the [[Sittang River]] during June and July to rejoin the Burma Area Army which had regrouped in [[Tanintharyi Region|Tenasserim]] in southern Burma. They suffered 14,000 casualties, half their strength. Overall, the Japanese lost some 150,000 men in Burma. Only 1,700 prisoners were taken. ||| Final stages==<!-- This heading is used as a redirect anchor --&g ||| Allied offensives in Burma, 1944–45 ||| +-1 Pacific War ||| Bombing of Tokyo ||| Towards the end of the war as the role of strategic bombing became more important, a new command for the [[U.S. Strategic Air Forces in the Pacific]] was created to oversee all U.S. strategic bombing in the hemisphere, under [[United States Army Air Forces]] [[General (United States)|General]] [[Curtis LeMay]]. Japanese industrial production plunged as nearly half of the built-up areas of 67 cities were destroyed by [[B-29]] [[firebombing]] raids. On 9–10 March 1945 alone, about 100,000 people were killed in a [[conflagration]] caused by an [[Bombing of Tokyo|incendiary attack on Tokyo]]. LeMay also oversaw [[Operation Starvation]], in which the inland waterways of Japan were extensively mined by air, which disrupted the small amount of remaining Japanese coastal sea traffic. On 26 July 1945, the President of the United States [[Harry S. Truman]], the President of the [[Republic of China (1912–1949)|Nationalist Government of China]] [[Chiang Kai-shek]] and the Prime Minister of [[United Kingdom|Great Britain]] [[Winston Churchill]] issued the [[Potsdam Declaration]], which outlined the terms of surrender for the [[Empire of Japan]] as agreed upon at the [[Potsdam Conference]]. This [[ultimatum]] stated that, if Japan did not surrender, it would face 'prompt and utter destruction.' ||| Final stages==<!-- This heading is used as a redirect anchor --&g ||| Landings in the Japanese home islands ||| +-1 Pacific War ||| Operation K ||| A Japanese force was sent north to [[Battle of the Aleutian Islands|attack the Aleutian Islands]]. The next stage of the plan called for the capture of Midway, which would give him an opportunity to destroy Nimitz's remaining carriers. In May, Allied [[codebreaking|codebreakers]] discovered his intentions. Nagumo was again in tactical command but was focused on the invasion of Midway; Yamamoto's complex plan had no provision for intervention by Nimitz before the Japanese expected him. Planned surveillance of the U.S. fleet by long range seaplane did not happen (as a result of an [[Operation K|abortive identical operation]] in March), so Fletcher's carriers were able to proceed to a [[flanking maneuver|flanking position]] without being detected. Nagumo had 272 planes operating from his four carriers, the U.S. 348 (115 land-based). ||| Allies re-group, 1942–43 ||| Coral Sea and Midway: the turning point ||| +-1 Pacific War ||| Second Sino-Japanese War ||| The '''Pacific War''', sometimes called the '''Asia-Pacific War''', was the theatre of [[World War II]] that was fought in the [[Pacific Ocean|Pacific]] and [[East Asia]]. It was fought over a vast area that included the [[Pacific Ocean theatre of World War II|Pacific Ocean and islands]], the [[South West Pacific theatre of World War II|South West Pacific]], [[South-East Asian theatre of World War II|South-East Asia]], and [[Second Sino-Japanese War|in China]] (including the [[Soviet–Japanese War (1945)|1945 Soviet–Japanese conflict]]). ||| ||| ||| +-1 Pacific War ||| South-East Asian theatre of World War II ||| The '''Pacific War''', sometimes called the '''Asia-Pacific War''', was the theatre of [[World War II]] that was fought in the [[Pacific Ocean|Pacific]] and [[East Asia]]. It was fought over a vast area that included the [[Pacific Ocean theatre of World War II|Pacific Ocean and islands]], the [[South West Pacific theatre of World War II|South West Pacific]], [[South-East Asian theatre of World War II|South-East Asia]], and [[Second Sino-Japanese War|in China]] (including the [[Soviet–Japanese War (1945)|1945 Soviet–Japanese conflict]]). ||| ||| ||| +-1 Pacific War ||| The Hump ||| Although the advance in the Arakan had been halted to release troops and aircraft for the [[Battle of Imphal]], the Americans and Chinese had continued to advance in northern Burma, aided by the [[Chindits]] operating against the Japanese lines of communication. In the middle of 1944 the [[Chinese Expeditionary Force]] [[Battle of Northern Burma and Western Yunnan|invaded northern Burma]] from [[Yunnan]] province. They captured a fortified position at [[Battle of Mount Song|Mount Song]].{{Sfn|Stevens|page=70}} By the time campaigning ceased during the [[monsoon]] rains, the [[Northern Combat Area Command|NCAC]] had secured a vital airfield at [[Siege of Myitkyina|Myitkyina]] (August 1944), which eased the problems of air resupply from India to China over '[[The Hump]]'. ||| Japanese offensive in India 1944 ||| ||| +-1 Paraguayan War ||| Battle of Curupayty ||| After the conference the allies marched into Paraguayan territory, reaching the defensive line of Curupayty. Trusting in their numerical superiority and the possibility of attacking the flank of the defensive line through the Paraguay River by using the Brazilian ships, the Allies made a frontal assault on the defensive line, supported by the flank fire of the battleships. However, the Paraguayans, commanded by Gen. [[José E. Díaz]], stood strong in their positions, set up for a defensive battle. They inflicted tremendous damage on the Allied troops. The [[Battle of Curupayty]] resulted in an almost catastrophic defeat for the Allied forces, ending their offensive for ten months, until July 1867. {{rp|65}} Nor was the situation among the allied forces improved once the main focus of Porto Alegre's denunciations was Mitre. He said: 'Here is the result of the Brazilian government's lack of confidence in its generals and giving its Armies to foreign generals.'{{sfn|Doratioto|2003|p=244}} The allied leaders blamed each other for disastrous failure at Curupayty, Porto Alegre and Tamandaré found common ground in their distaste for the Brazilian commander of the 1st corps, field marshal [[Polidoro Jordão, Viscount of Santa Teresa|Polidoro Quintanilha Jordão]] (later the Viscount of Santa Teresa). Jordão was ostracized for supporting Mitre and for being a member of the Conservative Party, while Porto Alegre and Tamandaré were Progressives.{{sfn|Doratioto|2003|p=247}} Mitre had a harsh opinion of the Brazilian cousins and said that 'Porto Alegre and Tamandaré, who are cousins, and cousins even in lack of judgement have made a family pact to monopolize, in practice, the command of war.' He further criticized Porto Alegre: 'It is impossible to imagine a greater military nullity than this general, to which it can be added Tamandaré's dominating bad influence over him and the negative spirit of both in relation to the allies, owning to passions and petty interests.'{{sfn|Doratioto|2003|p=247}} Gen. Flores had left for Uruguay in September 1866. ||| Allied counterattack ||| Invasion of Paraguay ||| +-1 Peloponnesian War ||| Battle of Leuctra ||| Although the power of Athens was broken, it made something of a recovery as a result of the [[Corinthian War]] and continued to play an active role in Greek politics. Sparta was later humbled by Thebes at the [[Battle of Leuctra]] in 371 BC, but the rivalry of Athens and Sparta was brought to an end a few decades later when [[Philip II of Macedon]] conquered all of Greece except Sparta. ||| Aftermath ||| ||| +-1 Peloponnesian War ||| Battle of Sybota ||| The more immediate events that led to war involved Athens and Corinth. After suffering a defeat at the hands of their colony of [[Korkyra (polis)|Corcyra]], a sea power that was not allied to either Sparta or Athens, Corinth began to build an allied naval force. Alarmed, Corcyra sought an alliance with Athens, which after debate and input from both Corcyra and Corinth, decided to swear to a defensive alliance with Corcyra. At the [[Battle of Sybota]], a small contingent of Athenian ships played a critical role in preventing a Corinthian fleet from capturing Corcyra. In order to uphold the Thirty Years' Peace, however, the Athenians were instructed not to intervene in the battle unless it was clear that Corinth was going to press onward to invade Corcyra. However, the Athenian warships participated in the battle nevertheless, and the arrival of additional [[trireme|Athenian warships]] was enough to dissuade the Corinthians from exploiting their victory, thus sparing much of the routed Corcyraean and Athenian fleet. ||| Prelude ||| Breakdown of the peace ||| +-1 Peninsular War ||| Battle of Albuera ||| An Anglo-Portuguese army led by the British Marshal [[William Carr Beresford, 1st Viscount Beresford|William Beresford]] and a Spanish army led by the Spanish generals [[Joaquín Blake y Joyes|Joaquín Blake]] and [[Francisco Javier Castaños, 1st Duke of Bailén|Francisco Castaños]], attempted to retake Badajoz by laying siege to the French garrison Soult had left behind. Soult regathered his army and marched to relieve the siege. Beresford lifted the siege and his army intercepted the marching French. Part of Wellington's army had besieged Badajoz until Soult forced it to retire after the [[Battle of Albuera]]. Soult outmaneuvered Beresford but could not win the battle, writing later that he had never seen 'so desperate and bloody a conflict' and commenting on the steadfastness of the British troops: 'There is no beating these troops ... I had turned their right, pierced their centre and everywhere victory was mine—but they did not know how to run!'.{{sfn|Southey|1837|p=241}} He retired his army to Seville. ||| Stalemate, 1811–1812 ||| ||| +-1 Peninsular War ||| Battle of Benavente ||| Even if the weather had been favourable, Moore was so far north that a French force coming from Madrid would not have been able to cut him off. Napoleon's only chance was to catch his opponent unawares, but Moore was aware of this danger and retreated westwards as soon as he heard that Napoleon was advancing. Moore had requested that his sea transports should be sent from Lisbon to meet him at La Coruna. Vigorous action from Soult might have slowed Moore down enough to allow Napoleon's forces to get behind him, but Soult waited for reinforcements from Burgos and was slowed down by torrential rain.{{sfn|Esdaile|2003|p=150}} Although [[Pedro Caro, 3rd Marquis of la Romana|La Romana]] tried to cover Moore's retreat, he was defeated by Soult at the [[Battle of Mansilla]]. Moore's retreat was marked by a breakdown of discipline in many regiments and punctuated by stubborn rearguard actions, with Paget capturing Lefebvre-Desnouettes at [[Battle of Benavente|Benavente]], with Napoleon watching from a distance.{{sfn|Fletcher|1999|p=97}} Another minor victory was the brief respite gained at the [[Battle of Cacabelos]], a minor battle at which the cavalry brigadier general [[Auguste-Marie-Francois Colbert]] was killed at long range. ||| {{anchor|Corunna Campaign}}Corunna Campaign, 1808–1809 ||| ||| +-1 Peninsular War ||| Battle of Mansilla ||| Even if the weather had been favourable, Moore was so far north that a French force coming from Madrid would not have been able to cut him off. Napoleon's only chance was to catch his opponent unawares, but Moore was aware of this danger and retreated westwards as soon as he heard that Napoleon was advancing. Moore had requested that his sea transports should be sent from Lisbon to meet him at La Coruna. Vigorous action from Soult might have slowed Moore down enough to allow Napoleon's forces to get behind him, but Soult waited for reinforcements from Burgos and was slowed down by torrential rain.{{sfn|Esdaile|2003|p=150}} Although [[Pedro Caro, 3rd Marquis of la Romana|La Romana]] tried to cover Moore's retreat, he was defeated by Soult at the [[Battle of Mansilla]]. Moore's retreat was marked by a breakdown of discipline in many regiments and punctuated by stubborn rearguard actions, with Paget capturing Lefebvre-Desnouettes at [[Battle of Benavente|Benavente]], with Napoleon watching from a distance.{{sfn|Fletcher|1999|p=97}} Another minor victory was the brief respite gained at the [[Battle of Cacabelos]], a minor battle at which the cavalry brigadier general [[Auguste-Marie-Francois Colbert]] was killed at long range. ||| {{anchor|Corunna Campaign}}Corunna Campaign, 1808–1809 ||| ||| +-1 Peninsular War ||| Battle of Puente Sanpayo ||| Wellesley returned to Portugal in April 1809 to command the Anglo-Portuguese forces. He strengthened the British army with Portuguese regiments trained by [[William Beresford, 1st Viscount Beresford|General Beresford]] and helped them adapt to the British campaign style. These new forces turned Soult out of Portugal at the [[Battle of Grijó]] (10–11 May) and the [[Second Battle of Porto]] (12 May), and the other northern cities were recaptured by General Silveira. With Portugal in revolt, Soult seemed doomed, but he escaped without his heavy equipment by marching through the mountains to Orense. On 7 June, the French army of Marshal [[Michel Ney]] was defeated at the [[Battle of Puente Sanpayo]] by Spanish forces under the command of Colonel [[Pablo Morillo]], and Ney and his forces retreated to [[Lugo]] on 9 June while being harassed by Spanish guerrillas. In Lugo, Ney's troops joined up with those of Soult and these forces withdrew from [[Galicia (Spain)|Galicia]] in July 1809. This marked the final evacuation of Galicia by the French army and the creation of a new front. ||| Fall of the ''Junta Central'' ||| ||| +-1 Peninsular War ||| Battle of Salamanca ||| The [[British Army during the Napoleonic Wars|British Army]] under [[Arthur Wellesley, 1st Duke of Wellington]], guarded Portugal and campaigned against the French in Spain alongside the reformed Portuguese army. The demoralised Portuguese army was reorganised and refitted under the command of General [[William Carr Beresford]],{{sfn|Fletcher|2003a|p={{page needed|date=February 2014}} }} who had been appointed commander-in-chief of the Portuguese forces by the exiled Portuguese royal family, and fought as part of a combined [[Anglo-Portuguese Army|Anglo-Portuguese army]] under Wellesley. In 1812, when Napoleon set out with a massive army on what proved to be a disastrous [[French invasion of Russia|campaign to conquer Russia]], a combined allied army under Wellesley pushed into Spain defeating the French at [[Battle of Salamanca|Salamanca]] and taking [[Madrid]]. In the following year, Wellington scored a decisive victory over [[Joseph Bonaparte|King Joseph]]'s army at [[Battle of Vitoria|Vitoria]]. Pursued by the armies of Britain, Spain and Portugal, Marshal [[Jean-de-Dieu Soult]], no longer able to get sufficient support from a depleted France, led the exhausted and demoralized French forces in a fighting withdrawal across the Pyrenees during the winter of 1813–1814. ||| ||| ||| +-1 Peninsular War ||| Battle of Tudela ||| In the west, a Spanish wing escaped when Lefebvre failed to encircle the Army of Galicia after a premature and indecisive attack at the [[Battle of Pancorbo (1808)|Battle of Pancorbo]]; Blake withdrew his artillery to safety and the bloodied Spanish infantry followed. Lefebvre and Marshal [[Claude Victor-Perrin]] offered a careless chase that ended in humiliation at the [[Battle of Valmaseda]], where their scattered troops were handled by La Romana's repatriated Spanish veterans and escaped to safety. The campaign in the south, where Napoleon's main army overran the unprotected Spanish centre in a devastating attack near [[Battle of Burgos|Burgos]], ended quickly. The Spanish militias{{mdash}}untrained and unable to form [[infantry square]]s{{mdash}}scattered in the face of massed French cavalry, while the [[Spanish Royal Guard]] and [[Walloon Guards]] stood their ground in vain and were overcome by [[Antoine Charles Louis Lasalle]] and his ''sabreurs''. Marshal [[Jean Lannes]] with a powerful force smashed through the Spanish right wing at the [[Battle of Tudela]] on 23 November, routing Castaños and prompting a new inscription on the [[Arc de Triomphe]] in Paris. Blake's isolated army reversed direction on 17 November and dug in at the [[Battle of Espinosa]]. His lines repelled French attacks over a day and night of vicious fighting, before giving up the next day. Blake again outmarched Marshal [[Jean-de-Dieu Soult|Nicolas Jean-de-Dieu Soult]] and escaped with a rump army to Santander, but the Spanish front had been fragmented and the Imperial armies raced forward over undefended provinces. Napoleon sent 45,000 men south into the [[Sierra de Guadarrama]], which shielded Madrid. ||| Napoleon's invasion of Spain, 1808 ||| ||| +-1 Peninsular War ||| Battle of Vitoria ||| The [[British Army during the Napoleonic Wars|British Army]] under [[Arthur Wellesley, 1st Duke of Wellington]], guarded Portugal and campaigned against the French in Spain alongside the reformed Portuguese army. The demoralised Portuguese army was reorganised and refitted under the command of General [[William Carr Beresford]],{{sfn|Fletcher|2003a|p={{page needed|date=February 2014}} }} who had been appointed commander-in-chief of the Portuguese forces by the exiled Portuguese royal family, and fought as part of a combined [[Anglo-Portuguese Army|Anglo-Portuguese army]] under Wellesley. In 1812, when Napoleon set out with a massive army on what proved to be a disastrous [[French invasion of Russia|campaign to conquer Russia]], a combined allied army under Wellesley pushed into Spain defeating the French at [[Battle of Salamanca|Salamanca]] and taking [[Madrid]]. In the following year, Wellington scored a decisive victory over [[Joseph Bonaparte|King Joseph]]'s army at [[Battle of Vitoria|Vitoria]]. Pursued by the armies of Britain, Spain and Portugal, Marshal [[Jean-de-Dieu Soult]], no longer able to get sufficient support from a depleted France, led the exhausted and demoralized French forces in a fighting withdrawal across the Pyrenees during the winter of 1813–1814. ||| ||| ||| +-1 Peninsular War ||| First Battle of Porto ||| In March 1809, Soult initiated the second invasion of Portugal through the northern corridor. Soult's forces faced 12,000 men represented by the line regiments, militia and ''[[ordenança]]'' of the province of [[Trás-os-Montes Province|Tras-os-Montes]]. Commanded by [[Francisco da Silveira]], these forces quickly retreated amid riot and disorder, and within two days of crossing the border Soult had taken the fortress of [[Chaves, Portugal|Chaves]].{{sfn|Esdaile|2003|p=178}} Swinging west, the French were confronted by 25,000 unprepared and undisciplined Portuguese. While waiting for Soult's army to arrive, the Portuguese militia lynched their own commander, [[Bernardim Freire de Andrade]], who wanted to retreat. On 20 March, 16,000 of Soult's professional troops of the [[II Corps (Grande Armée)|II Corps]] advanced and killed 4,000 Portuguese troops in the [[Battle of Braga (1809)|Battle of Braga]]. A similar mismatch occurred when the French reached [[Porto]]. In the [[First Battle of Porto]] on 29 March, the Portuguese defenders panicked and thousands drowned trying to flee across the [[Douro]] River. It was a French victory; with fewer than 500 casualties Soult had secured Portugal's second city with its valuable dockyards and arsenals intact. The Portuguese sustained appalling losses, losing 200 guns and between 6,000 and 20,000 men dead, wounded or captured.{{sfn|Gates|2001|p=142}} The French booty included immense stocks of food and munitions, and 30 shiploads of wine.{{sfn|Esdaile|2003|p=179}} Soult occupied northern Portugal but halted at Porto to refit his army before advancing on Lisbon. ||| Second Portuguese campaign, 1808–1809 ||| ||| +-1 Peninsular War ||| Second Battle of Porto ||| Wellesley returned to Portugal in April 1809 to command the Anglo-Portuguese forces. He strengthened the British army with Portuguese regiments trained by [[William Beresford, 1st Viscount Beresford|General Beresford]] and helped them adapt to the British campaign style. These new forces turned Soult out of Portugal at the [[Battle of Grijó]] (10–11 May) and the [[Second Battle of Porto]] (12 May), and the other northern cities were recaptured by General Silveira. With Portugal in revolt, Soult seemed doomed, but he escaped without his heavy equipment by marching through the mountains to Orense. On 7 June, the French army of Marshal [[Michel Ney]] was defeated at the [[Battle of Puente Sanpayo]] by Spanish forces under the command of Colonel [[Pablo Morillo]], and Ney and his forces retreated to [[Lugo]] on 9 June while being harassed by Spanish guerrillas. In Lugo, Ney's troops joined up with those of Soult and these forces withdrew from [[Galicia (Spain)|Galicia]] in July 1809. This marked the final evacuation of Galicia by the French army and the creation of a new front. ||| Fall of the ''Junta Central'' ||| ||| +-1 Peninsular War ||| Siege of Astorga (1812) ||| After the allied victory at Salamanca on 22 July 1812, King Joseph Bonaparte abandoned Madrid on 11 August.{{sfn|Glover|2001|pp=207–208}} Because Suchet had a secure base at Valencia, Joseph and Marshal [[Jean-Baptiste Jourdan]] retreated there. Soult, realising he would soon be cut off from his supplies, ordered a retreat from Cádiz set for 24 August; the French were forced to end the two-and-a-half-year-long siege.{{sfn|Hindley|2010}} After a long artillery barrage, the French placed together the muzzles of over 600 cannons to render them unusable to the Spanish and British. Although the cannons were useless, the Allied forces captured 30 gunboats and a large quantity of stores.{{sfn|Southey|1837b|p=68}} The French were forced to abandon Andalusia for fear of being cut off by the allied armies. Marshals Suchet and Soult joined Joseph and Jourdan at Valencia. Spanish armies defeated the French garrisons at [[Siege of Astorga (1812)|Astorga]] and [[Guadalajara]]. ||| French autumn counterattack, 1812 ||| ||| +-1 Peninsular War ||| Siege of Ciudad Rodrigo (1810) ||| The French took the Spanish fortified town of [[Siege of Ciudad Rodrigo (1810)|Ciudad Rodrigo]] after a siege lasting from 26 April to 9 July 1810. ||| Revolution under siege ||| ||| +-1 Peninsular War ||| Siege of Ciudad Rodrigo (1812) ||| Wellington renewed the allied advance into Spain in early 1812, besieging and capturing the border fortress town of [[Siege of Ciudad Rodrigo (1812)|Ciudad Rodrigo]] by assault on 19 January and opening up the northern invasion corridor from Portugal into Spain. This also allowed Wellington to proceed to move to capture the southern fortress town of [[Battle of Badajoz (1812)|Badajoz]], which would prove to be one of the bloodiest siege assaults of the [[Napoleonic Wars]]. ||| Allied campaign in Spain, 1812 ||| ||| +-1 Peninsular War ||| Siege of Roses (1808) ||| In [[Catalonia]], Napoleon's faltering army was reinforced in October 1808, ordering [[Laurent Gouvion Saint-Cyr]] with 17,000 men to the relief of Duhesme in Barcelona. The presence of the Royal Navy along the coasts of France and Spain slowed the French entry into eastern and southern Spain and drained their military resources in the area. Frigates commanded the strategic [[Gulf of Roses]] north of Barcelona close to the French border, and were involved in the [[Siege of Roses (1808)|Siege of Roses]]. [[Thomas Cochrane, 10th Earl of Dundonald|Lord Thomas Cochrane]] held a cliff-top fortress against the French for a month, destroying it when the main citadel capitulated to a superior French force.{{sfn|James|1826|pp=131–132}} The successful Siege of Roses opened the path south for Saint-Cyr, who bypassed Girona and fell upon and destroyed part of [[Juan Miguel de Vives y Feliu]]'s Spanish army at the [[Battle of Cardadeu]] near Barcelona on 16 December. Five days later, Saint-Cyr defeated the Spaniards under Conde de Caldagues and [[Theodor von Reding]], capturing 1,200 men at the [[Battle of Molins de Rey]]. ||| Napoleon's invasion of Spain, 1808 ||| ||| +-1 Philippine Revolution ||| Battle of Alapan ||| On May 28, 1898, with fresh reinforcements, about 12,000 men raided the last remaining stronghold of the Spanish Empire in Cavite in the [[Battle of Alapan]]. This battle eventually liberated Cavite from Spanish colonial control and led to the first time the modern flag of the Philippines being unfurled in victory. ||| Spanish–American War ||| Aguinaldo returns to the Philippines ||| +-1 Platine War ||| Battle of Caseros ||| The Platine War ended in 1852 with the allied victory at the [[Battle of Caseros]], establishing Brazilian hegemony over much of [[South America]]. The war's result further ushered in a period of economic and political stability in the Empire of Brazil. With Rosas gone, Argentina began a process which would result in a more unified state. However, the end of the war did not completely resolve other issues within the Platine region. Turmoil continued in subsequent years, with internal disputes among political factions in Uruguay, a long civil war in Argentina, and an emergent Paraguay asserting its claims. Two more major international wars followed during the next two decades, sparked by territorial ambitions and conflicts over influence. ||| ||| ||| +-1 Portuguese Colonial War ||| Mozambican War of Independence ||| The prevalent Portuguese and international historical approach considers the Portuguese Colonial War as a single conflict fought in three separate [[theater of operations|theaters of operations]] ([[Portuguese Angola|Angola]], [[Portuguese Guinea]], and [[Portuguese Mozambique|Mozambique]]). However, some other approaches consider the existence of three distinct conflicts, the [[Angolan War of Independence]], the [[Guinea-Bissau War of Independence]], and the [[Mozambican War of Independence]]. Occasionally, the brief conflict that led to the [[1961 Indian Annexation of Goa]] is also included in the historical scope of the Portuguese Colonial War. ||| ||| ||| +-1 Race to the Sea ||| Battle of the Yser ||| After the opposing forces had reached the North Sea, both tried to conduct offensives, which led to the mutually costly and indecisive [[Battle of the Yser]] (16 October – 2 November) and the [[First Battle of Ypres]] (19 October – 22 November). After mid-November, local operations were carried out by both sides, to improve their tactical position and preparations were made to take the offensive in the spring of 1915. [[Erich von Falkenhayn]], Chief of the [[German General Staff]] {{lang|de|(''[[Oberste Heeresleitung]]'')}} since 14 September, concluded that a decisive victory could not be achieved on the Western Front and that it was equally unlikely in the east. Falkenhayn abandoned {{lang|de|''Vernichtunsstrategie''}} (a strategy of annihilation) and attempted to create the conditions for peace with one of Germany's enemies, by {{lang|de|''Ermattungsstrategie''}} (a strategy of attrition), to enable Germany to concentrate its resources and decisively defeat the remaining opponents. ||| ||| ||| +-1 Rebellions of 1837 ||| Patriot War ||| Historians have tended to view the two Canadian Rebellions and the subsequent US [[Patriot War]] in isolation, without reference to each other, and without reference to the republican impetus they shared. ||| Atlantic context ||| ||| +-1 Red Turban Rebellion ||| Battle of Lake Poyang ||| *[[Battle of Lake Poyang]] ||| See also ||| ||| +-1 Rhodesian Bush War ||| Operation Dingo ||| Militants [[Salisbury Woolworths bombing|bombed a Woolworths department store]] in [[Harare|Salisbury]] on 6 August 1977, killing 11 and injuring 70. In November 1977, in response to the buildup of ZANLA guerrillas in Mozambique, Rhodesian forces launched [[Operation Dingo]], a pre-emptive combined arms surprise attack on guerrilla camps at Chimoio and Tembue in Mozambique. The attack was carried out over three days, from 23 to 25 November 1977. While these operations reportedly inflicted thousands of casualties on Robert Mugabe's ZANLA cadres, probably blunting guerrilla incursions in the months that followed, a steady intensification of the insurgency nevertheless continued through 1978. ||| Course of the war ||| Second phase (1972–1979) ||| Escalation of the war (1977) +-1 Russo-Japanese War ||| Battle of Hsimucheng ||| * 1904 [[Battle of Hsimucheng]], 31 July, Japanese victory ||| List of battles ||| ||| +-1 Russo-Japanese War ||| Battle of Mukden ||| * 1905 [[Battle of Mukden]], 21 February to 10 March: Japanese victory ||| List of battles ||| ||| +-1 Russo-Japanese War ||| Battle of Port Arthur ||| }} These attacks developed into the [[Battle of Port Arthur]] the next morning. A series of indecisive naval engagements followed, in which Admiral Togo was unable to attack the Russian fleet successfully as it was protected by the shore batteries of the harbour, and the Russians were reluctant to leave the harbour for the open seas, especially after the death of Admiral [[Stepan Osipovich Makarov]] on 13 April 1904. Although the actual Battle of Port Arthur was indecisive, the initial attacks had a devastating psychological effect on Russia, which had been confident about the prospect of war. The Japanese had seized the initiative while the Russians waited in port. ||| Campaign of 1904 ||| Battle of Port Arthur ||| +-1 Russo-Japanese War ||| Battle of Yalu River (1904) ||| In contrast to the Japanese strategy of rapidly gaining ground to control Manchuria, Russian strategy focused on fighting delaying actions to gain time for reinforcements to arrive via the long Trans-Siberian railway, which was incomplete near [[Irkutsk]] at the time. On 1 May 1904, the [[Battle of Yalu River (1904)|Battle of Yalu River]] became the first major land battle of the war; Japanese troops stormed a Russian position after crossing the river. The defeat of the Russian Eastern Detachment removed the perception that the Japanese would be an easy enemy, that the war would be short, and that Russia would be the overwhelming victor. Japanese troops proceeded to land at several points on the Manchurian coast, and in a series of engagements, drove the Russians back towards Port Arthur. The subsequent battles, including the [[Battle of Nanshan]] on 25 May 1904, were marked by heavy Japanese losses largely from attacking entrenched Russian positions. ||| Campaign of 1904 ||| Battle of Yalu River ||| +-1 Russo-Japanese War ||| Battle off Ulsan ||| * 1904 [[Battle off Ulsan]], 14 August: [[naval battle]] Japanese victory ||| List of battles ||| ||| +-1 Russo-Japanese War ||| Siege of Port Arthur ||| * 1904–1905 [[Siege of Port Arthur]], 19 August to 2 January: Japanese victory ||| List of battles ||| ||| +-1 Rwandan Genocide ||| First Congo War ||| The genocide had a lasting and profound impact on Rwanda and its neighboring countries. The [[Rape during the Rwandan Genocide|pervasive use of war rape]] caused a spike in HIV infection, including babies born of rape to newly infected mothers; many households were headed by orphaned children or widows. The destruction of infrastructure and the severe depopulation of the country crippled the economy, challenging the nascent government to achieve rapid economic growth and stabilization. The RPF military victory and installation of an RPF-dominated government prompted many Hutus to flee to neighboring countries, particularly in the eastern portion of [[Zaire]] (now the Democratic Republic of Congo), where the Hutu ''genocidaires'' began to regroup in refugee camps along the border with Rwanda. Declaring a need to avert further genocide, the RPF-led government led military incursions into Zaire, including the [[First Congo War|First]] (1996–97) and [[Second Congo War|Second]] (1998–2003) Congo Wars. Armed struggles between the Rwandan government and their opponents in DRC have continued to play out through proxy militias in the Goma region, including the [[M23 rebellion]] (2003–2013). Large Rwandan Hutu and Tutsi populations continue to live as refugees throughout the region. ||| ||| ||| +-1 Rwandan Genocide ||| M23 rebellion ||| The genocide had a lasting and profound impact on Rwanda and its neighboring countries. The [[Rape during the Rwandan Genocide|pervasive use of war rape]] caused a spike in HIV infection, including babies born of rape to newly infected mothers; many households were headed by orphaned children or widows. The destruction of infrastructure and the severe depopulation of the country crippled the economy, challenging the nascent government to achieve rapid economic growth and stabilization. The RPF military victory and installation of an RPF-dominated government prompted many Hutus to flee to neighboring countries, particularly in the eastern portion of [[Zaire]] (now the Democratic Republic of Congo), where the Hutu ''genocidaires'' began to regroup in refugee camps along the border with Rwanda. Declaring a need to avert further genocide, the RPF-led government led military incursions into Zaire, including the [[First Congo War|First]] (1996–97) and [[Second Congo War|Second]] (1998–2003) Congo Wars. Armed struggles between the Rwandan government and their opponents in DRC have continued to play out through proxy militias in the Goma region, including the [[M23 rebellion]] (2003–2013). Large Rwandan Hutu and Tutsi populations continue to live as refugees throughout the region. ||| ||| ||| +-1 Rwandan Genocide ||| Second Congo War ||| The genocide had a lasting and profound impact on Rwanda and its neighboring countries. The [[Rape during the Rwandan Genocide|pervasive use of war rape]] caused a spike in HIV infection, including babies born of rape to newly infected mothers; many households were headed by orphaned children or widows. The destruction of infrastructure and the severe depopulation of the country crippled the economy, challenging the nascent government to achieve rapid economic growth and stabilization. The RPF military victory and installation of an RPF-dominated government prompted many Hutus to flee to neighboring countries, particularly in the eastern portion of [[Zaire]] (now the Democratic Republic of Congo), where the Hutu ''genocidaires'' began to regroup in refugee camps along the border with Rwanda. Declaring a need to avert further genocide, the RPF-led government led military incursions into Zaire, including the [[First Congo War|First]] (1996–97) and [[Second Congo War|Second]] (1998–2003) Congo Wars. Armed struggles between the Rwandan government and their opponents in DRC have continued to play out through proxy militias in the Goma region, including the [[M23 rebellion]] (2003–2013). Large Rwandan Hutu and Tutsi populations continue to live as refugees throughout the region. ||| ||| ||| +-1 Scotland in the Wars of the Three Kingdoms ||| Battle of Carbisdale ||| In June 1649, [[James Graham, 1st Marquess of Montrose|Montrose]] was restored by the exiled [[Charles II of England|Charles II]] to the now nominal lieutenancy of Scotland. Charles also opened negotiations with the Covenanters, now dominated by the radical Presbyterian '[[Kirk Party]]' or '[[British Whig Party|Whigs]]'. Because Montrose had very little support in the lowlands, Charles was willing to disavow his most consistent supporter in order to become a king on terms dictated by the Covenanters. In March 1650 Montrose landed in [[Orkney]] to take the command of a small force, composed mainly of continental mercenaries, which he had sent on before him. Crossing to the mainland, Montrose tried in vain to raise the clans, and on 27 April he was surprised and routed at the [[Battle of Carbisdale]] in Ross-shire. After wandering for some time he was surrendered by [[Clan MacLeod#17th century & Civil War|Neil Macleod of Assynt]], to whose protection, in ignorance of Macleod's political enmity, he had entrusted himself. He was brought a prisoner to [[Edinburgh]], and on 20 May sentenced to death by the Parliament. He was [[hanging|hanged]] on the 21st, with [[George Wishart (bishop)|Wishart]]'s laudatory biography of him put round his neck. To the last he protested that he was a real Covenanter and a loyal subject. ||| Scotland and the Second and Third English Civil Wars ||| Montrose's defeat and death ||| +-1 Scotland in the Wars of the Three Kingdoms ||| Battle of Worcester ||| The Scottish Army of the Kingdom marched towards the west of England because it was in that area that English Royalist sympathies were strongest. However, although some English Royalists joined the army, they came in far fewer numbers than Charles and his Scottish supporters had hoped. Cromwell finally engaged the new king at [[Battle of Worcester|Worcester]] on 3 September 1651, and beat him — in the process all but wiping out his army, killing 3,000 and taking 10,000 more prisoners. Many of the Scottish prisoners taken by Cromwell were sold into indentured labour in the West Indies, Virginia and [[Berwick, Maine]]. This defeat marked the real end of the Scottish war effort. Charles escaped to the European continent and with his flight the Covenanters' hopes for political independence from the [[Commonwealth of England]] were dashed. ||| Scotland and the Second and Third English Civil Wars ||| Third Civil War===<!-- This section is linked from [[Bass Rock]] --& ||| +-1 Second Anglo-Dutch War ||| Raid on the Medway ||| In June, De Ruyter, with [[Cornelis de Witt]] supervising, launched the Dutch '[[Raid on the Medway]]' at the mouth of the [[River Thames]]. After capturing the fort at [[Sheerness]], the Dutch fleet went on to break through the massive chain protecting the entrance to the Medway and, on the 13th, attacked the laid up English fleet. The daring raid remains England's greatest naval disaster. {{rp |77}}A Dutch attack on the English anchorage at [[Harwich]] had to be abandoned however after a [[Battle of Landguard Fort|Dutch attempt made]] on [[Landguard Fort]] ended in failure. ||| The War ||| 1667: Medway ||| +-1 Second Anglo-Sikh War ||| Battle of Gujrat ||| As Gough's army closed in on the Sikh Army, Sher Singh attempted a last outflanking move, sending cavalry to cross the Chenab, and re-cross in Gough's rear. They were thwarted by heavy rains which made the river difficult to cross, and British irregular cavalry led by [[Harry Burnett Lumsden]] and [[William Stephen Raikes Hodson|William Hodson]]. On 13 February, Gough attacked the Sikh Army at the [[Battle of Gujrat]]. Here, he began the battle with a three-hour bombardment from almost 100 guns, which drove the Sikhs from their hasty entrenchments. He then sent his cavalry and horse artillery after them in a pursuit which lasted for four hours. ||| Course of the War ||| The last battles ||| +-1 Second Anglo-Sikh War ||| Battle of Ramnagar ||| Sir Hugh Gough led his main force against Sher Singh's army, which defended the line of the River Chenab against Gough for several weeks. On 22 November, the Sikhs repelled a British cavalry attack on a bridgehead on the eastern side of the river at the [[Battle of Ramnagar]]. Although they subsequently withdrew from their exposed bridgehead, the Sikhs regarded the battle as a victory and their morale was raised. Gough forced his way across the Chenab in December and outflanked the Sikhs defending the fords, but his cavalry then paused to await infantry reinforcements, allowing the Sikhs to withdraw without interference. ||| Course of the War ||| ||| +-1 Second Boer War ||| Battle of Bothaville ||| After having conferred with the Transvaal leaders, De Wet returned to the Orange Free State, where he inspired a series of successful attacks and raids from the hitherto quiet western part of the country, though he suffered a rare defeat at [[Battle of Bothaville|Bothaville]] in November 1900. Many Boers who had earlier returned to their farms, sometimes giving formal parole to the British, took up arms again. In late January 1901, De Wet led a renewed invasion of [[Cape Colony]]. This was less successful, because there was no general uprising among the Cape Boers, and De Wet's men were hampered by bad weather and relentlessly pursued by British forces. They narrowly escaped across the [[Orange River]]. ||| Third phase: Guerrilla war (September 1900 – May 1902) ||| Orange Free State ||| +-1 Second Boer War ||| Battle of Colenso ||| The war had three distinct phases. In the first phase, the Boers mounted pre-emptive strikes into British-held territory in Natal and the Cape Colony, [[siege|besieging]] the British garrisons of [[Siege of Ladysmith|Ladysmith]], [[Siege of Mafeking|Mafeking]] and [[Siege of Kimberley|Kimberley]]. The Boers then won a series of tactical victories at [[Battle of Colenso|Colenso]], [[Battle of Magersfontein|Magersfontein]] and [[Battle of Spion Kop|Spionkop]]. ||| Phases ||| ||| +-1 Second Boer War ||| Battle of Elands River (1901) ||| Fresh Boer forces under [[Jan Christiaan Smuts]], joined by the surviving rebels under Kritzinger, made another attack on the Cape in September 1901. They suffered severe hardships and were hard pressed by British columns, but eventually rescued themselves by routing some of their pursuers at the [[Battle of Elands River (1901)|Battle of Elands River]] and capturing their equipment. From then until the end of the war, Smuts increased his forces from among Cape rebels until they numbered 3,000. However, no general uprising took place, and the situation in the Cape remained stalemated. ||| Third phase: Guerrilla war (September 1900 – May 1902) ||| Cape Colony ||| +-1 Second Boer War ||| Battle of Elandslaagte ||| Another Boer force occupied Elandslaagte, which lay between Ladysmith and Dundee. The British under Major General [[John French, 1st Earl of Ypres|John French]] and Colonel [[Ian Standish Monteith Hamilton|Ian Hamilton]] attacked to clear the line of communications to Dundee. The resulting [[Battle of Elandslaagte]] was a clear-cut British tactical victory, but Sir George White feared that more Boers were about to attack his main position and ordered a chaotic retreat from Elandslaagte, throwing away any advantage gained. The detachment from Dundee was compelled to make an exhausting cross-country retreat to rejoin White's main force. ||| First phase: The Boer offensive (October – December 1899) ||| ||| +-1 Second Boer War ||| Battle of Leliefontein ||| |[[Battle of Leliefontein|Leliefontein]] ||| British Empire involvement ||| Canada ||| +-1 Second Boer War ||| Battle of Magersfontein ||| The war had three distinct phases. In the first phase, the Boers mounted pre-emptive strikes into British-held territory in Natal and the Cape Colony, [[siege|besieging]] the British garrisons of [[Siege of Ladysmith|Ladysmith]], [[Siege of Mafeking|Mafeking]] and [[Siege of Kimberley|Kimberley]]. The Boers then won a series of tactical victories at [[Battle of Colenso|Colenso]], [[Battle of Magersfontein|Magersfontein]] and [[Battle of Spion Kop|Spionkop]]. ||| Phases ||| ||| +-1 Second Boer War ||| Battle of Modder River ||| The initial results of this offensive were mixed, with Methuen winning several bloody skirmishes at [[Battle of Belmont (1899)|Belmont]] on 23 November, at [[Battle of Graspan|Graspan]] on 25 November, and at a larger conflict, [[Battle of Modder River|Modder River]] on 28 November resulting in British losses of 71 dead and over 400 wounded. British commanders had trained on the lessons of the [[Crimean War]], and were adept at battalion and regimental set pieces with columns manoeuvring in jungles, deserts and mountainous regions. What they entirely failed to comprehend, however, was both the impact of destructive fire from trench positions and the mobility of cavalry raids, both of which had been developed in the American Civil War. The British troops went to war with what would prove to be antiquated tactics, and in some cases antiquated weapons, against the mobile Boer forces with the destructive fire of their modern Mausers, the latest Krupp field guns, and their innovative tactics. ||| First phase: The Boer offensive (October – December 1899) ||| First British relief attempts ||| +-1 Second Boer War ||| Battle of Paardeberg ||| Meanwhile, Roberts pursued Piet Cronje's 7,000-strong force, which had abandoned Magersfontein to head for Bloemfontein. General French's cavalry was ordered to assist in the pursuit by embarking on an epic {{convert|50|km|adj=on}} drive towards Paardeberg where Cronje was attempting to cross the Modder River. At the [[Battle of Paardeberg]] from 18 to 27 February, Roberts then surrounded General [[Piet Cronje]]'s retreating Boer army. On 17 February, a pincer movement involving both French's cavalry and the main British force attempted to take the entrenched position, but the frontal attacks were uncoordinated and so were easily repulsed by the Boers. Finally, Roberts resorted to bombarding Cronje into submission, but it took a further ten precious days and with the British troops using the polluted Modder River as water supply, resulting in a typhoid epidemic killing many troops. General Cronje was forced to surrender at [[Surrender Hill]] with 4000 men. ||| Second phase: The British offensive of January to September 1900 ||| ||| +-1 Second Boer War ||| Battle of Poplar Grove ||| After a succession of defeats, the Boers realised that against such overwhelming numbers of troops, they had little chance of defeating the British and so became demoralised. Roberts then advanced into the Orange Free State from the west, putting the Boers to flight at the [[Battle of Poplar Grove]] and capturing [[Bloemfontein]], the capital, unopposed on 13 March with the Boer defenders escaping and scattering. Meanwhile, he detached a small force to relieve Baden-Powell, and the [[Relief of Mafeking]] on 18 May 1900 provoked riotous celebrations in Britain. ||| Second phase: The British offensive of January to September 1900 ||| ||| +-1 Second Boer War ||| Battle of Rooiwal ||| The Boer victories in the west led to stronger action by the British. In the second half of March 1902, large British reinforcements were sent to the Western Transvaal under the direction of Ian Hamilton. The opportunity the British were waiting for arose on 11 April 1902 at [[Battle of Rooiwal|Rooiwal]], where a commando led by General [[Jan Kemp (South African)|Jan Kemp]] and Commandant Potgieter attacked a superior force under Kekewich. The British soldiers were well positioned on the hillside and inflicted severe casualties on the Boers charging on horseback over a large distance, beating them back. This was the end of the war in the Western Transvaal and also the last major battle of the war. ||| Third phase: Guerrilla war (September 1900 – May 1902) ||| Western Transvaal ||| +-1 Second Boer War ||| Battle of Spion Kop ||| The war had three distinct phases. In the first phase, the Boers mounted pre-emptive strikes into British-held territory in Natal and the Cape Colony, [[siege|besieging]] the British garrisons of [[Siege of Ladysmith|Ladysmith]], [[Siege of Mafeking|Mafeking]] and [[Siege of Kimberley|Kimberley]]. The Boers then won a series of tactical victories at [[Battle of Colenso|Colenso]], [[Battle of Magersfontein|Magersfontein]] and [[Battle of Spion Kop|Spionkop]]. ||| Phases ||| ||| +-1 Second Boer War ||| Battle of the Tugela Heights ||| In Natal, the [[Battle of the Tugela Heights]], which started on 14 February was Buller's fourth attempt to relieve Ladysmith. The losses Buller's troops had sustained convinced Buller to adopt Boer tactics 'in the firing line - to advance in small rushes, covered by rifle fire from behind; to use the tactical support of artillery; and above all, to use the ground, making rock and earth work for them as it did for the enemy.' Despite reinforcements his progress was painfully slow against stiff opposition. However, on 26 February, after much deliberation, Buller used all his forces in one all-out attack for the first time and at last succeeded in forcing a crossing of the Tugela, and defeated Botha's outnumbered forces north of Colenso. After a siege lasting 118 days, the [[Relief of Ladysmith]] was effected, the day after Cronje surrendered, but at a total cost of 7,000 British casualties. Buller's troops marched into Ladysmith on 28 February. ||| Second phase: The British offensive of January to September 1900 ||| ||| +-1 Second Boer War ||| Relief of Ladysmith ||| In Natal, the [[Battle of the Tugela Heights]], which started on 14 February was Buller's fourth attempt to relieve Ladysmith. The losses Buller's troops had sustained convinced Buller to adopt Boer tactics 'in the firing line - to advance in small rushes, covered by rifle fire from behind; to use the tactical support of artillery; and above all, to use the ground, making rock and earth work for them as it did for the enemy.' Despite reinforcements his progress was painfully slow against stiff opposition. However, on 26 February, after much deliberation, Buller used all his forces in one all-out attack for the first time and at last succeeded in forcing a crossing of the Tugela, and defeated Botha's outnumbered forces north of Colenso. After a siege lasting 118 days, the [[Relief of Ladysmith]] was effected, the day after Cronje surrendered, but at a total cost of 7,000 British casualties. Buller's troops marched into Ladysmith on 28 February. ||| Second phase: The British offensive of January to September 1900 ||| ||| +-1 Second Boer War ||| Siege of Kimberley ||| The war had three distinct phases. In the first phase, the Boers mounted pre-emptive strikes into British-held territory in Natal and the Cape Colony, [[siege|besieging]] the British garrisons of [[Siege of Ladysmith|Ladysmith]], [[Siege of Mafeking|Mafeking]] and [[Siege of Kimberley|Kimberley]]. The Boers then won a series of tactical victories at [[Battle of Colenso|Colenso]], [[Battle of Magersfontein|Magersfontein]] and [[Battle of Spion Kop|Spionkop]]. ||| Phases ||| ||| +-1 Second Boer War ||| Siege of Ladysmith ||| The war had three distinct phases. In the first phase, the Boers mounted pre-emptive strikes into British-held territory in Natal and the Cape Colony, [[siege|besieging]] the British garrisons of [[Siege of Ladysmith|Ladysmith]], [[Siege of Mafeking|Mafeking]] and [[Siege of Kimberley|Kimberley]]. The Boers then won a series of tactical victories at [[Battle of Colenso|Colenso]], [[Battle of Magersfontein|Magersfontein]] and [[Battle of Spion Kop|Spionkop]]. ||| Phases ||| ||| +-1 Second Boer War ||| Siege of Mafeking ||| The war had three distinct phases. In the first phase, the Boers mounted pre-emptive strikes into British-held territory in Natal and the Cape Colony, [[siege|besieging]] the British garrisons of [[Siege of Ladysmith|Ladysmith]], [[Siege of Mafeking|Mafeking]] and [[Siege of Kimberley|Kimberley]]. The Boers then won a series of tactical victories at [[Battle of Colenso|Colenso]], [[Battle of Magersfontein|Magersfontein]] and [[Battle of Spion Kop|Spionkop]]. ||| Phases ||| ||| +-1 Second Chechen War ||| Battle of Komsomolskoye ||| In March a large group of more than 1,000 Chechen fighters led by field commander [[Ruslan Gelayev]], pursued since their withdrawal from Grozny, [[Battle of Komsomolskoye|entered the village of Komsomolskoye]] in the Chechen foothills; they held off a full-scale Russian attack on the town for over two weeks,{{Citation needed|reason=please provide a reliable source for this dubious assertion|date=June 2009}} but suffered hundreds of casualties in the process;{{Citation needed|date=April 2008}} the Russians also admitted more than 50 killed. On 29 March 2000, a total of about 23 Russian soldiers were killed as a result of the [[Vedeno ambush|separatist ambush on the OMON convoy]] from [[Perm]]. ||| 1999–2000 Russian offensive ||| Battle for the mountains ||| +-1 Second Congo War ||| Kivu conflict ||| The '''Second Congo War''' (also known as the '''Great War of Africa''' or the '''Great African War''', and sometimes referred to as the '''African World War''') began in August 1998, little more than a year after the [[First Congo War]] (and involving some of the same issues), in the [[Democratic Republic of the Congo]], and officially ended in July 2003 when the [[Transitional Government of the Democratic Republic of the Congo]] took power. However, hostilities have continued since then in the ongoing [[Lord's Resistance Army insurgency]], and the [[Kivu conflict|Kivu]] and [[Ituri conflict]]s. ||| ||| ||| +-1 Second Desmond Rebellion ||| Siege of Carrigafoyle Castle ||| A number of the invasion force went to other parts of Ireland. A small number went to [[Siege of Carrigafoyle Castle|Carrigafoyle Castle]] on the southern banks of the [[River Shannon]] (in northern County Kerry), the seat of the Earl of Desmond. This contingent included an Italian engineer, Captain Julian, who set about perfecting the castle's defences. ||| Rebellion begins ||| ||| +-1 Second EDSA Revolution ||| EDSA III ||| The only means of [[political legitimacy|legitimizing]] the event was the last-minute Supreme Court ruling that 'the welfare of the people is the supreme law.' It should also be noted that opinion was divided during EDSA II about whether [[Gloria Macapagal-Arroyo]] as the incumbent Vice President should be President if Joseph Estrada was ousted; many groups who participated in EDSA II expressly stated that they did not want Arroyo for president either, and some of them would later participate in [[EDSA III]]. The prevailing Constitution of the Philippines calls for the Vice President of the Philippines, Arroyo at the time, to act as interim president only when the sitting President dies, resigns, or becomes incapacitated, none of which occurred during EDSA II. ||| ||| ||| +-1 Second Intifada ||| Maxim restaurant suicide bombing ||| Following an October 4 [[Maxim restaurant suicide bombing|suicide bombing in Maxim restaurant]], [[Haifa]], which claimed the lives of 21 Israelis, Israel claimed that Syria and [[Iran]] sponsored the [[Palestinian Islamic Jihad Movement|Islamic Jihad]] and [[Hezbollah]], and were responsible for the terrorist attack. The day after the Maxim massacre, [[Israeli Air Force|IAF]] warplanes [[Ain es Saheb airstrike|bombed an alleged former Palestinian training base]] at Ain Saheb, [[Syria]], which had been mostly abandoned since the 1980s. Munitions being stored on the site were destroyed, and a civilian guard was injured. ||| Timeline ||| 2003 ||| +-1 Second Italian War of Independence ||| Battle of Palestro ||| * 30 May, French and Sardinian forces defeat the Austrian army at the [[Battle of Palestro]] ||| Timeline 1859 ||| ||| +-1 Second Italian War of Independence ||| Battle of Solferino ||| * 21 June/24 June, in the [[Battle of Solferino]], Sardinians and [[Napoleon III]] of France defeat an army commanded by Austrian Emperor [[Franz Joseph I of Austria|Franz Joseph]] himself in northern [[Italy]]. The battle inspires [[Henri Dunant]] to found the [[Red Cross]] ||| Timeline 1859 ||| ||| +-1 Second Macedonian War ||| Battle of Cynoscephalae ||| Seeing things were going Rome's way, Philip's few remaining allies abandoned him (with the exception of Acarnania) and he was forced to raise an army of 25,000 mercenaries. The legions of Titus confronted and defeated Philip at the [[Battle of the Aous (198 BC)|Aous]], However the decisive encounter came at [[Battle of Cynoscephalae|Cynoscephalae]] in [[Thessaly]] in June 197 BC, when the [[Roman legion|legion]]s of Flamininus defeated Philip's Macedonian [[Macedonian phalanx|phalanx]]. Philip was forced to sue for peace on Roman terms. ||| The war ||| ||| +-1 Second Northern War ||| Deluge (history) ||| In 1655, [[Charles X Gustav of Sweden]] invaded and occupied western Poland–Lithuania, the eastern half of which was [[Russo-Polish War (1654–67)|already occupied by Russia]]. The rapid Swedish advance became known in Poland as the '''[[Deluge (history)|Swedish Deluge]]'''. The [[Grand Duchy of Lithuania]] [[Union of Kėdainiai|became a Swedish fief]], the Polish–Lithuanian regular armies surrendered and the Polish king [[John II Casimir Vasa]] fled to the [[Habsburgs]]. [[Frederick William, Elector of Brandenburg]] and [[Duchy of Prussia|Duke of Prussia]] initially supported the [[Prussian estates|estates]] in [[Royal Prussia]], but [[Treaty of Königsberg (1656)|allied with Sweden]] in return for receiving the Duchy of Prussia as a Swedish fief. Exploiting the hurt religious feelings of the [[Roman Catholic]] population under [[Protestantism|Protestant]] occupation and organizing Polish–Lithuanian military leaders in the [[Tyszowce Confederation]], John II Casimir Vasa managed to regain ground in 1656. Russia took advantage of the Swedish setback, [[Russo-Swedish War (1656–58)|declared war on Sweden]] and pushed into Lithuania and [[Swedish Livonia]]. ||| ||| ||| +-1 Second Sino-Japanese War ||| Amoy Operation ||| * {{Flagdeco|Empire of Japan|naval}} [[Amoy Operation|Xiamen]] May 1938 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Battle of Changsha (1939) ||| Initially the Japanese scored major victories, such as the [[Battle of Shanghai]], and by the end of 1937 captured the Chinese capital of [[Nanking]]. After failing to stop the Japanese in [[Battle of Wuhan|Wuhan]], the Chinese central government was relocated to [[Chongqing]] in the Chinese interior. By 1939, after Chinese victories in [[Battle of Changsha (1939)|Changsha]] and [[Battle of South Guangxi|Guangxi]], and with stretched lines of communications deep into the Chinese interior territories, the war had reached a [[stalemate]]. The Japanese were also unable to defeat the Chinese communist forces in [[Shaanxi]], which continued to perform sabotage operations against the Japanese using guerrilla warfare tactics. On December 7, 1941, the Japanese attacked [[Pearl Harbor]], and the following day (December 8, 1941) the [[United States declaration of war upon Japan|United States declared war on Japan]]. The United States began to aid China via airlift matériel over [[the Hump|the Himalayas]] after the [[Allies of World War II|Allied]] defeat in [[Japanese conquest of Burma|Burma]] that closed the [[Burma Road]]. In 1944 Japan launched [[Operation Ichi-Go|a massive invasion]] and conquered [[Henan]] and [[Changsha]]. However, this failed to bring about the surrender of Chinese forces. In 1945, [[Chinese Expeditionary Force]] resumed [[Battle of Northern Burma and Western Yunnan|its advance in Burma]] and completed the [[Ledo road]] linking India and China. At the same time, China launched large counteroffensives in South China and [[Battle of West Hunan|retook the west Hunan]] [[Second Guangxi Campaign|and Guangxi]]. ||| ||| ||| +-1 Second Sino-Japanese War ||| Battle of Changsha (1941) ||| During this period, the main Chinese objective was to drag out the war for as long as possible, thereby exhausting Japanese resources while building up Chinese military capacity. American general [[Joseph Stilwell]] called this strategy 'winning by outlasting'. The NRA adopted the concept of 'magnetic warfare' to attract advancing Japanese troops to definite points where they were subjected to ambush, [[Flanking maneuver|flanking attacks]], and [[encirclement]]s in major engagements. The most prominent example of this tactic was the successful defense of [[Changsha]] in [[Battle of Changsha (1939)|1939]] (and again in [[Battle of Changsha (1941)|1941]]), in which heavy casualties were inflicted on the IJA. ||| Course of the war ||| Chinese resistance strategy ||| +-1 Second Sino-Japanese War ||| Battle of Changsha (1942) ||| Within a few days of the [[attack on Pearl Harbor]], China joined the Allies and formally declared war against Japan, Germany and Italy. As the Western Allies entered the war against Japan, the Sino-Japanese war would become part of a greater conflict, the [[Pacific War|Pacific theatre]] of [[World War II]]. Almost immediately, Chinese troops achieved another decisive victory in the [[Battle of Changsha (1942)|Battle of Changsha]], which earned the Chinese government much prestige from the Western Allies. President Franklin D. Roosevelt referred to the United States, United Kingdom, Soviet Union and China as the world's '[[Four Policemen]]', elevating the international status of China to an unprecedented height after a century of humiliation at the hands of various imperialist powers. ||| Course of the war ||| Entrance of the Western Allies ||| +-1 Second Sino-Japanese War ||| Battle of Changsha (1944) ||| ** {{Flagdeco|Empire of Japan}} Operation Togo 1 [[Battle of Hengyang|Battle of Changsha (1944)]] ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Battle of Northern Burma and Western Yunnan ||| Initially the Japanese scored major victories, such as the [[Battle of Shanghai]], and by the end of 1937 captured the Chinese capital of [[Nanking]]. After failing to stop the Japanese in [[Battle of Wuhan|Wuhan]], the Chinese central government was relocated to [[Chongqing]] in the Chinese interior. By 1939, after Chinese victories in [[Battle of Changsha (1939)|Changsha]] and [[Battle of South Guangxi|Guangxi]], and with stretched lines of communications deep into the Chinese interior territories, the war had reached a [[stalemate]]. The Japanese were also unable to defeat the Chinese communist forces in [[Shaanxi]], which continued to perform sabotage operations against the Japanese using guerrilla warfare tactics. On December 7, 1941, the Japanese attacked [[Pearl Harbor]], and the following day (December 8, 1941) the [[United States declaration of war upon Japan|United States declared war on Japan]]. The United States began to aid China via airlift matériel over [[the Hump|the Himalayas]] after the [[Allies of World War II|Allied]] defeat in [[Japanese conquest of Burma|Burma]] that closed the [[Burma Road]]. In 1944 Japan launched [[Operation Ichi-Go|a massive invasion]] and conquered [[Henan]] and [[Changsha]]. However, this failed to bring about the surrender of Chinese forces. In 1945, [[Chinese Expeditionary Force]] resumed [[Battle of Northern Burma and Western Yunnan|its advance in Burma]] and completed the [[Ledo road]] linking India and China. At the same time, China launched large counteroffensives in South China and [[Battle of West Hunan|retook the west Hunan]] [[Second Guangxi Campaign|and Guangxi]]. ||| ||| ||| +-1 Second Sino-Japanese War ||| Battle of Shanggao ||| * {{Flagdeco|Republic of China (1912–1949)}} [[Battle of Shanggao]] March 1941 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Battle of Shanghai ||| Initially the Japanese scored major victories, such as the [[Battle of Shanghai]], and by the end of 1937 captured the Chinese capital of [[Nanking]]. After failing to stop the Japanese in [[Battle of Wuhan|Wuhan]], the Chinese central government was relocated to [[Chongqing]] in the Chinese interior. By 1939, after Chinese victories in [[Battle of Changsha (1939)|Changsha]] and [[Battle of South Guangxi|Guangxi]], and with stretched lines of communications deep into the Chinese interior territories, the war had reached a [[stalemate]]. The Japanese were also unable to defeat the Chinese communist forces in [[Shaanxi]], which continued to perform sabotage operations against the Japanese using guerrilla warfare tactics. On December 7, 1941, the Japanese attacked [[Pearl Harbor]], and the following day (December 8, 1941) the [[United States declaration of war upon Japan|United States declared war on Japan]]. The United States began to aid China via airlift matériel over [[the Hump|the Himalayas]] after the [[Allies of World War II|Allied]] defeat in [[Japanese conquest of Burma|Burma]] that closed the [[Burma Road]]. In 1944 Japan launched [[Operation Ichi-Go|a massive invasion]] and conquered [[Henan]] and [[Changsha]]. However, this failed to bring about the surrender of Chinese forces. In 1945, [[Chinese Expeditionary Force]] resumed [[Battle of Northern Burma and Western Yunnan|its advance in Burma]] and completed the [[Ledo road]] linking India and China. At the same time, China launched large counteroffensives in South China and [[Battle of West Hunan|retook the west Hunan]] [[Second Guangxi Campaign|and Guangxi]]. ||| ||| ||| +-1 Second Sino-Japanese War ||| Battle of South Henan ||| * {{Flagdeco|Republic of China (1912–1949)}} [[Battle of South Henan]] January 1941 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Battle of Taierzhuang ||| At the start of 1938 the leadership in Tokyo still hoped to limit the scope of the conflict to occupy areas around Shanghai, Nanjing and most of northern China. They thought this would preserve strength for an anticipated showdown with the Soviet Union, but by now the Japanese government and GHQ had effectively lost control of the Japanese army in China. With many victories achieved, Japanese field generals [[Battle of Xuzhou|escalated the war in Jiangsu]] in an attempt to wipe out Chinese resistance, but were defeated at the [[Battle of Taierzhuang]] (March–April 1938). Afterwards the IJA changed its strategy and deployed almost all of its existing armies in China to attack the city of [[Wuhan]], which had become the political, economic and military center of rump China, in hopes of destroying the fighting strength of the [[National Revolutionary Army|NRA]] and of forcing the KMT government to negotiate for peace.{{sfn|Huang|page=168}} The Japanese [[Battle of Wuhan|captured Wuhan]] on October 27, 1938, forcing the KMT to retreat to [[Chongqing]] (Chungking), but Chiang Kai-shek still refused to negotiate, saying he would only consider talks if Japan agreed to withdraw to the pre-1937 borders. ||| Course of the war ||| 1938 ||| +-1 Second Sino-Japanese War ||| Battle of Yunnan-Burma Road ||| * {{Flagdeco|Empire of Japan}} [[Battle of Yunnan-Burma Road]] March 1942 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Canton Operation ||| * {{Flagdeco|Empire of Japan}} [[Canton Operation|Guangdong]] October 1938 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Hundred Regiments Offensive ||| Local Chinese resistance forces, organised separately by both the communists and KMT, continued their resistance in occupied areas to pester the enemy and make their administration over the vast land area of China difficult. In 1940 the [[People's Liberation Army|Chinese Red Army]] launched a [[Hundred Regiments Offensive|major offensive]] in north China, destroying railways and a major coal mine. These constant harassment and sabotage operations deeply frustrated the Japanese army and led them to employ the '[[Three Alls Policy]]' (kill all, loot all, burn all) ({{lang|hni|三光政策}}, [[Hanyu Pinyin]]: ''Sānguāng Zhèngcè'', Japanese [[Onyomi|On]]: ''Sankō Seisaku''). It was during this period that the bulk of [[Japanese war crimes]] were committed. ||| Course of the war ||| Chinese resistance strategy ||| +-1 Second Sino-Japanese War ||| Jiangqiao Campaign ||| ** {{Flagdeco|Empire of Japan}} [[Jiangqiao Campaign]] October 1931 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +-1 Second Sino-Japanese War ||| Nanking Massacre ||| Building on the hard-won victory in Shanghai, the IJA [[Battle of Nanking|captured the KMT capital city]] of [[Nanjing]] (Nanking) (December 1937) and [[Battle of Xinkou|Northern Shanxi]] (September–November 1937). These campaigns involved approximately 350,000 Japanese soldiers, and considerably more Chinese. Historians estimate that between December 13, 1937 and late January 1938 Japanese forces tortured and [[mass murder|murdered]] up to 300,000 Chinese (mostly civilians and surrendered soldiers) and raped tens of thousands of women during the [[Nanking Massacre]] (also known as the 'Rape of Nanking'), after the [[Battle of Nanking|fall of Nanking]]. {{As of | 2015}}, some right-wing Japanese [[Historical revisionism (negationism)|negationists]] [[Historical revisionism (negationism)#Japanese war crimes|deny]] that the massacre occurred. ||| Course of the war ||| Nanking Massacre ||| +-1 Second Sino-Japanese War ||| Pacification of Manchukuo ||| Incessant fighting followed the Mukden Incident. In 1932, Chinese and Japanese troops fought a battle known as the [[January 28 Incident]]. This resulted in the [[demilitarisation]] of [[Shanghai]], which forbade the Chinese from deploying troops in their own city. In Manchukuo there was an [[Pacification of Manchukuo|ongoing campaign]] to defeat the anti-Japanese [[Anti-Japanese Volunteer Armies|volunteer armies]] that arose from widespread outrage over the policy of non-resistance to Japan. ||| Background ||| Invasion of Manchuria, interventions in China ||| +-1 Serbian Revolution ||| Second Serbian Uprising ||| *[[Second Serbian Uprising]] (1815) under [[Miloš Obrenović]] ||| ||| ||| +-1 Serbo-Bulgarian War ||| Battle of Slivnitsa ||| As it happened, the Ottomans did not intervene and the Serbian army's advance was stopped after the [[Battle of Slivnitsa]]. The main body of the Bulgarian army traveled from the Ottoman border in the southeast to the Serbian border in the northwest to defend the capital [[Sofia]]. After the defensive battles at Slivnitsa and [[Vidin]] (the latter's defence was organized by Atanas Uzunov), Bulgaria began an offensive which took the city of [[Pirot]]. At this point, the Austro-Hungarian Empire stepped in, threatening to join the war on Serbia's side if the Bulgarian troops did not retreat. No territorial changes were made to either country, but the Bulgarian unification was recognized by the Great Powers. However, the relationship of trust and friendship between Serbia and Bulgaria, built during their long common fight against Ottoman rule, suffered irreparable damage. ||| Background ||| ||| +-1 Siachen conflict ||| Operation Meghdoot ||| April 1984 [[Operation Meghdoot]]: Indian Army under the leadership of Lt. Gen. M.L.Chibber, Maj. Gen. Shiv Sharma, and Lt. Gen. P. N. Hoon learned of the plan by Pakistan Army to seize Sia La,and Bilafond La, on the glacier. Indian Army launched an operation to preempt the seizure of the passes by the Pakistan Army. Men of the Ladakh Scouts (a special forces unit of the Indian Army) and [[Kumaon Regiment]] occupy Bilafond La on 13 April and Sia La on 17 April 1984 with the help of the [[Indian Air Force]]. Pakistan Army in turn learned of the presence of Ladakh Scouts on the passes during a helicopter recon mission. In response to these developments Pakistan Army initiated an operation using troops from the Special Services Group and Northern Light Infantry to displace the three hundred or so Indian troops on the key passes. This operation led by the Pakistan Army led to the first armed clash on the glacier on April 25, 1984. ||| Major Combat Operations ||| ||| +-1 Siege of Osaka ||| Battle of Kashii ||| On May 26 ([[Keichō]] 20, 29th day of 4th month) at the [[Battle of Kashii]] Osaka forces under the command of [[Ono Harufusa]] and [[Ban Danemon]] engaged with forces of [[Asano Nagaakira]], an ally of the Shogun. Osaka forces sustained a loss and Ban Danemon was killed. ||| Summer Campaign ||| ||| +-1 Sierra Leone Civil War ||| Operation Khukri ||| UNAMSIL forces began arriving in Sierra Leone in December 1999. At that time the maximum number of troops to be deployed was set at 6,000. Only a few months later, though, in February 2000, a new UN resolution authorized the deployment of 11,000 combatants. For over a year later, the UNAMSIL force meticulously avoided intervening in RUF controlled mining districts lest another major incident occur. After the UNAMSIL force had essentially rearmed the RUF, a call for a new military intervention was made to save the UNAMSIL hostages and the government of Sierra Leone.{{Citation needed|date=December 2010}} After [[Operation Palliser]] and [[Operation Khukri]] the situation stabilized and UNAMSIL gain control. ||| The Sierra Leone Civil War ||| UNAMSIL intervention ||| +-1 Simba Rebellion ||| Operation Dragon Rouge ||| Two missions were flown, one over Stanleyville designated as ''[[Operation Dragon Rouge|Red Dragon]]'' (DRAGON ROUGE) and another over [[Paulis (Congo)|Paulis]] called ''[[Operation Dragon Noir|Black Dragon]]'' (DRAGON NOIR). Over the next two days over 1,800 Americans and Europeans were evacuated as well as around 400 Congolese. Almost 200 foreigners and thousands of Congolese were executed by the Simbas. ||| Later fighting ||| Operation Dragon Rouge ||| +-1 Sinai insurgency ||| Operation Eagle ||| The '''Sinai insurgency''' is the conflict ignited by Islamist militants in the [[Sinai Peninsula]], which began after the start of the [[Egyptian Crisis (2011–present)|Egyptian Crisis]], which saw the overthrow of longtime [[Egypt]]ian dictator [[Hosni Mubarak]] in the [[Egyptian Revolution of 2011]] and the response from the interim Egyptian government after mid-2011, known as [[Operation Eagle]] and then [[Operation Sinai (2012)|Operation Sinai]]. The Sinai insurgency consisted of militants, largely composed of local [[Bedouin]] tribesmen, who exploited the chaotic situation in Egypt and weakened central authority to launch a series of attacks on government forces in Sinai. ||| ||| ||| +-1 Sinai insurgency ||| Operation Sinai (2012) ||| The '''Sinai insurgency''' is the conflict ignited by Islamist militants in the [[Sinai Peninsula]], which began after the start of the [[Egyptian Crisis (2011–present)|Egyptian Crisis]], which saw the overthrow of longtime [[Egypt]]ian dictator [[Hosni Mubarak]] in the [[Egyptian Revolution of 2011]] and the response from the interim Egyptian government after mid-2011, known as [[Operation Eagle]] and then [[Operation Sinai (2012)|Operation Sinai]]. The Sinai insurgency consisted of militants, largely composed of local [[Bedouin]] tribesmen, who exploited the chaotic situation in Egypt and weakened central authority to launch a series of attacks on government forces in Sinai. ||| ||| ||| +-1 Sino-French War ||| Battle of Phu Lam Tao ||| There was also bad news for the French from the western front. On 23 March, in the [[Battle of Phu Lam Tao]], a force of Chinese regulars and Black Flags surprised and routed a French zouave battalion that had been ordered to scout positions around Hưng Hóa in preparation for Giovanninelli's projected offensive against the Yunnan Army. ||| The Sino-French War, August 1884 to April 1885 ||| The endgame ||| Bang Bo, Ky Lua and the retreat from Lạng Sơn +-1 Sino-French War ||| Battle of Shipu ||| Although the Formosa expeditionary corps remained confined in Keelung, the French scored important successes elsewhere in the spring of 1885. Courbet's squadron had been reinforced substantially since the start of the war, and he now had considerably more ships at his disposal than in October 1884. In early February 1885 part of his squadron left Keelung to head off a threatened attempt by part of the Chinese [[Nanyang Fleet]] (Southern Seas fleet) to break the French blockade of Formosa. On 11 February Courbet's task force met the cruisers ''Kaiji'', ''Nanchen'' and ''Nanrui'', three of the most modern ships in the Chinese fleet, near Shipu Bay, accompanied by the frigate ''Yuyuan'' and the composite sloop ''Chengqing''. The Chinese scattered at the French approach, and while the three cruisers successfully made their escape, the French succeeded in trapping ''Yuyuan'' and ''Chengqing'' in Shipu Bay. On the night of 14 February, in the [[Battle of Shipu]], the French attacked the Chinese vessels with two torpedo launches. During a brief engagement inside the bay, ''Yuyuan'' was seriously damaged by torpedoes and ''Chengqing'' was hit by ''Yuyuan'''s fire. Both ships were subsequently scuttled by the Chinese. The French torpedo launches escaped almost without loss. ||| The Sino-French War, August 1884 to April 1885 ||| Operations of Admiral Courbet's squadron ||| Shipu Bay, Zhenhai Bay and the rice blockade +-1 Sino-French War ||| Battle of Zhenhai ||| Courbet followed up this success on 1 March by locating ''Kaiji'', ''Nanchen'' and ''Nanrui'', which had taken refuge with four other Chinese warships in Zhenhai Bay, near the port of [[Ningbo]]. Courbet considered forcing the Chinese defences, but after testing its defenses finally decided to guard the entrance to the bay to keep the enemy vessels bottled up there for the duration of hostilities. A brief and inconclusive skirmish between the French cruiser ''Nielly'' and the Chinese shore batteries on 1 March enabled the Chinese general Ouyang Lijian (歐陽利見), charged with the defence of Ningbo, to claim the so-called '[[Battle of Zhenhai]]' as a defensive victory. ||| The Sino-French War, August 1884 to April 1885 ||| Operations of Admiral Courbet's squadron ||| Shipu Bay, Zhenhai Bay and the rice blockade +-1 Somali Civil War ||| Battle of Mogadishu (1993) ||| Some of the militias that were then competing for power saw UNOSOM's presence as a threat to their hegemony. Consequently, gun battles took place in Mogadishu between local gunmen and peacekeepers. Among these was the [[Battle of Mogadishu (1993)|Battle of Mogadishu]] in October 1993, an unsuccessful attempt by U.S. troops to apprehend faction leader Aidid. UN soldiers eventually withdrew altogether from the country on March 3, 1995, having incurred more significant casualties. ||| Timeline ||| United Nations intervention (1992–95) ||| +-1 Somali Civil War ||| Unified Task Force ||| [[United Nations Security Council Resolution 794]] was unanimously passed on December 3, 1992, which approved a coalition of [[United Nations peacekeeping|United Nations peacekeepers]] led by the United States. Forming the [[Unified Task Force]] (UNITAF), the alliance was tasked with assuring security until humanitarian efforts aimed at stabilizing the situation were transferred to the UN. Landing in 1993, the UN peacekeeping coalition started the two-year [[United Nations Operation in Somalia II]] (UNOSOM II) primarily in the south. ||| Timeline ||| United Nations intervention (1992–95) ||| +-1 South African Border War ||| Angolan Civil War ||| The '''South African Border War''', commonly referred to as the '''Angolan Bush War''' in South Africa, was a conflict that took place from 1966 to 1989 largely in [[South-West Africa]] (now [[Namibia]]) and [[Angola]] between South Africa and its allied forces (mainly the National Union for the Total Independence of Angola, [[UNITA]]) on the one side and the Angolan government, South-West Africa People's Organisation ([[SWAPO]]), and their allies (mainly [[Cuba]]) on the other. It was closely intertwined with the [[Angolan War of Independence]], the [[Angolan Civil War]] and the [[Namibian War of Independence]]. ||| ||| ||| +-1 Spanish American wars of independence ||| Battle of Chacabuco ||| :*[[Battle of Chacabuco]] ||| Overview ||| Wars, battles and revolts ||| +-1 Spanish American wars of independence ||| Battle of Rancagua ||| :*[[Battle of Rancagua]] ||| Overview ||| Wars, battles and revolts ||| +-1 Spanish American wars of independence ||| Chilean War of Independence ||| Unlike in New Spain and Central America, in South America independence was spurred by the pro-independence fighters who had held out for the past half decade. [[José de San Martín]] and [[Simón Bolívar]] inadvertently led a continent-wide [[pincer movement]] from southern and northern South America that liberated most of the [[Hispanic America|Spanish American nations]] on that continent. After securing the [[Chilean War of Independence|independence of Chile]] in 1818, San Martín concentrated on building a naval fleet in the Pacific to counter [[Spanish Empire|Spanish]] control of those waters and reach the [[Royalist (Spanish American Revolution)|royalist stronghold]] of [[Lima]]. By mid-1820 San Martín had assembled a fleet of eight warships and sixteen transport ships under the command of Admiral Cochrane. The fleet set sail from [[Valparaíso]] to [[Paracas Bay|Paracas]] in southern [[Peru]]. On September 7, the army landed at Paracas and successfully took [[Pisco]]. After this, San Martín, waiting for a generalized Peruvian revolt, chose to avoid direct military confrontation. San Martín hoped that his presence would initiate an authentic [[Peruvian War of Independence|Peruvian revolt]] against Spanish rule, believing that otherwise any liberation would be ephemeral. In the meantime, San Martín engaged in diplomacy with Viceroy [[Joaquín de la Pezuela]], who was under orders from the constitutional government to negotiate on the basis of the [[Spanish Constitution of 1812|1812 Constitution]] and to maintain the unity of the [[Spanish Crown|Spanish Monarchy]]. However, these efforts proved fruitless, since independence and unity of the monarchy could not be reconciled, so the army sailed in late October to a better strategic position in [[Huacho]], in northern Peru. During the next few months, successful land and naval campaigns against the royalists secured the new foothold, and it was at Huacho that San Martín learned that [[Guayaquil]] (in [[Ecuador]]) had declared independence on October 9. ||| Independence consolidated, 1820–25 ||| South America ||| +-1 Spanish American wars of independence ||| Mexican War of Independence ||| *[[Mexican War of Independence]] ||| Overview ||| Wars, battles and revolts ||| +-1 Spanish American wars of independence ||| Paraguay campaign ||| :*[[Paraguay campaign]] ||| Overview ||| Wars, battles and revolts ||| +-1 Spanish American wars of independence ||| Peruvian War of Independence ||| Unlike in New Spain and Central America, in South America independence was spurred by the pro-independence fighters who had held out for the past half decade. [[José de San Martín]] and [[Simón Bolívar]] inadvertently led a continent-wide [[pincer movement]] from southern and northern South America that liberated most of the [[Hispanic America|Spanish American nations]] on that continent. After securing the [[Chilean War of Independence|independence of Chile]] in 1818, San Martín concentrated on building a naval fleet in the Pacific to counter [[Spanish Empire|Spanish]] control of those waters and reach the [[Royalist (Spanish American Revolution)|royalist stronghold]] of [[Lima]]. By mid-1820 San Martín had assembled a fleet of eight warships and sixteen transport ships under the command of Admiral Cochrane. The fleet set sail from [[Valparaíso]] to [[Paracas Bay|Paracas]] in southern [[Peru]]. On September 7, the army landed at Paracas and successfully took [[Pisco]]. After this, San Martín, waiting for a generalized Peruvian revolt, chose to avoid direct military confrontation. San Martín hoped that his presence would initiate an authentic [[Peruvian War of Independence|Peruvian revolt]] against Spanish rule, believing that otherwise any liberation would be ephemeral. In the meantime, San Martín engaged in diplomacy with Viceroy [[Joaquín de la Pezuela]], who was under orders from the constitutional government to negotiate on the basis of the [[Spanish Constitution of 1812|1812 Constitution]] and to maintain the unity of the [[Spanish Crown|Spanish Monarchy]]. However, these efforts proved fruitless, since independence and unity of the monarchy could not be reconciled, so the army sailed in late October to a better strategic position in [[Huacho]], in northern Peru. During the next few months, successful land and naval campaigns against the royalists secured the new foothold, and it was at Huacho that San Martín learned that [[Guayaquil]] (in [[Ecuador]]) had declared independence on October 9. ||| Independence consolidated, 1820–25 ||| South America ||| +-1 Spanish Civil War ||| Battle of Belchite (1937) ||| A Republican offensive against [[Zaragoza]] was also a failure. Despite having land and aerial advantages, the [[Battle of Belchite (1937)|Battle of Belchite]] resulted in an advance of only {{convert|10|km}} and the loss of much equipment. ||| Course of the war ||| 1937 ||| +-1 Spanish Civil War ||| Battle of Guadalajara ||| A similar Nationalist offensive, the [[Battle of Guadalajara]], was a more significant defeat for Franco and his armies. It proved the only publicised Republican victory of the war. Italian troops and [[blitzkrieg]] tactics were used by Franco, and while many strategists blamed the latter for the rightists' defeat, the Germans believed it was the former at fault for the Nationalists' 5,000 casualties and loss of valuable equipment. ||| Course of the war ||| 1937 ||| +-1 Spanish Civil War ||| Bombing of Durango ||| The Nationalist side conducted [[aerial bombing of cities]] in Republican territory, carried out mainly by the ''Luftwaffe'' volunteers of the ''[[Condor Legion]]'' and the ''[[Regia Aeronautica|Italian air force]]'' volunteers of the ''[[Corpo Truppe Volontarie]]'': Madrid, [[Bombing of Barcelona|Barcelona]], Valencia, [[Guernica (town)|Guernica]], [[Bombing of Durango|Durango]], and other cities were attacked. The [[Bombing of Guernica]] was the most controversial. ||| Atrocities ||| Nationalists ||| +-1 Spanish Civil War ||| July 1936 military uprising in Seville ||| The rebels failed to take any major cities, with the critical exception of [[July 1936 military uprising in Seville|Seville]], which provided a landing point for Franco's African troops, and the primarily conservative and Catholic areas of [[Old Castile]] and [[León (historical region)|León]], which fell quickly. [[Cádiz]] was taken for the rebels, with the help of the first troops from the Army of Africa. ||| Military coup ||| Outcome ||| +-1 Spanish Civil War ||| May Days ||| April and May saw the [[May Days]], infighting among Republican groups in Catalonia. The dispute was between an ultimately victorious government –Communist forces and the anarchist CNT. The disturbance pleased Nationalist command, but little was done to exploit Republican divisions. ||| Course of the war ||| 1937 ||| +-1 Sri Lankan Civil War ||| Bandaranaike Airport attack ||| In July 2001, the LTTE carried out a devastating [[Bandaranaike Airport attack|suicide attack on Bandaranaike International Airport]], destroying eight of the air force's planes (2 [[IAI Kfir]]s, 1 [[Mil Mi-17|Mil-17]], 1 [[Mil Mi-24|Mil-24]], 3 [[Hongdu JL-8|K-8 trainers]], 1 [[Mikoyan MiG-27|MiG-27]]) and four [[Sri Lankan Airlines]] planes (2 [[Airbus]] [[Airbus A330|A330s]], 1 [[Airbus A340|A340]] and 1 [[Airbus A320|A320]]), dampening the economy and causing tourism, a vital foreign exchange earner for the government, to plummet. The impact of the attack was such that the [[Economy of Sri Lanka|Sri Lankan economy]] recorded a negative growth for the first and the only time since its independence, in that year. ||| Eelam War III ||| Early peace efforts ||| +-1 Sri Lankan Civil War ||| Battle of Pooneryn ||| In February 1992 another series of government offensives failed to capture Jaffna. Lt. General [[Denzil Kobbekaduwa]] together with Major General [[Vijaya Wimalaratne]] and [[Rear Admiral]] Mohan Jayamaha, died on 8 August 1992 at Araly (Aeraella) point [[Jaffna]] due to a [[land mine]] blast, which badly affected military morale. The LTTE, for its part, scored a major victory when one of their suicide bombers killed Sri Lankan President [[Ranasinghe Premadasa]] in May 1993. In November 1993 the LTTE succeeded in the [[Battle of Pooneryn]]. This attack left 532 in the Army and 135 in the Navy either killed or [[missing in action]]. ||| Eelam War II (1990–1995) ||| ||| +-1 Suez Crisis ||| Kafr Qasim massacre ||| The conflict began on 29 October 1956. Because Israeli intelligence expected [[Jordan]] to enter the war on Egypt's side, Israeli soldiers were stationed along the Israeli-Jordanian frontier. The [[Israel Border Police]] militarized the Israel-Jordan border, including the [[Green Line (Israel)|Green Line]] with the [[West Bank]], during the first few hours of the war. [[Arab citizens of Israel|Israeli-Arab]] villages along the Jordanian border were placed under curfew, and orders were given to shoot curfew violators{{Citation needed|reason=mistake|date=March 2015}}. This resulted in the killings of 48 civilians in the Arab village of [[Kafr Qasim]] in an event known as the [[Kafr Qasim massacre]]. The border policemen involved in the killings were later tried and imprisoned, with an Israeli court finding that the order to shoot civilians was 'blatantly illegal'. This event had major effects on Israeli law relating to the ethics in war and more subtle effects on the legal status of [[Arab citizens of Israel]], who at the time were regarded as a [[fifth column]]. ||| Invasion ||| {{anchor|Operation Kadesh}}The Israeli operation Kadesh in Sinai ||| +-1 Suez Crisis ||| Operation Tarnegol ||| On 28 October, [[Operation Tarnegol]] was effected, during which an Israeli [[Gloster Meteor]] NF.13 intercepted and destroyed an Egyptian [[Ilyushin Il-14]] carrying high-ranking members of the Egyptian General Staff en route from Syria to Egypt. The Ilyushin was believed to be carrying Field Marshal Abdel Hakim Amer and the Egyptian General Staff; however this was not the case. ||| Invasion ||| {{anchor|Operation Kadesh}}The Israeli operation Kadesh in Sinai ||| +-1 Texas Revolution ||| Battle of San Jacinto ||| For the next month, a newly created Texian army under the command of [[Sam Houston]] steadily retreated towards the border with Louisiana; terrified civilians fled with the army, in a melee known as the [[Runaway Scrape]]. On March 31, Houston paused his men at Groce's Landing on the [[Brazos River]], and for the next two weeks, the Texians received rigorous military training. Becoming complacent and underestimating the strength of his foes, Santa Anna further subdivided his troops. On April 21, Houston's army staged a surprise assault on Santa Anna and his vanguard force at the [[Battle of San Jacinto]]. The Mexican troops were quickly routed, and vengeful Texians executed many who tried to surrender. Santa Anna was taken hostage; in exchange for his life, he ordered the Mexican army to retreat south of the [[Rio Grande]]. Mexico refused to recognize the Republic of Texas, and intermittent conflicts between the two nations continued into the 1840s. The [[Texas annexation|annexation of Texas]] as the 28th state of the United States, in 1845, led directly to the [[Mexican–American War]]. ||| ||| ||| +-1 Texas Revolution ||| Battle of the Alamo ||| Determined to avenge Mexico's honor, President [[Antonio López de Santa Anna]] vowed to personally retake Texas. His Army of Operations entered Texas in mid-February 1836 and found the Texians completely unprepared. Mexican General [[José de Urrea]] led a contingent of troops on the [[Goliad Campaign]] up the Texas coast, defeating all Texian troops in his path and executing most of those who surrendered. Santa Anna led a larger force to [[San Antonio|San Antonio de Béxar]] (or Béxar), where his troops defeated the Texian garrison in the [[Battle of the Alamo]], killing almost all of the defenders. ||| ||| ||| +-1 The Anarchy ||| Battle of Lincoln (1141) ||| Neither side was able to achieve a decisive advantage during the first years of the war; the Empress came to control the south-west of England and much of the [[Thames Valley]], while Stephen remained in control of the south-east. The [[castle]]s of the period were easily defensible, and much of the fighting was [[Attrition warfare|attritional]] in character, comprising sieges, raiding and skirmishing between armies of knights and footsoldiers, many of them [[Mercenary|mercenaries]]. In 1141 Stephen was captured following the [[Battle of Lincoln (1141)|battle of Lincoln]], causing a collapse in his authority over most of the country. However, on the verge of being crowned queen, Empress Matilda was forced to retreat from London by hostile crowds; shortly afterwards, Robert of Gloucester was captured at the [[rout of Winchester]] and the two sides agreed to swap their respective captives. Stephen then almost seized Matilda in 1142 during the [[Siege of Oxford (1142)|siege of Oxford]], but the Empress escaped from [[Oxford Castle]] across the frozen River Thames to safety. ||| ||| ||| +-1 Third Crusade ||| Battle of Arsuf ||| :''Full article: [[Battle of Arsuf]]'' ||| Battle of Arsuf ||| ||| +-1 Third Crusade ||| Battle of Jaffa (1192) ||| Richard had intended to return to England when he heard the news that Saladin and his army had captured Jaffa. Richard and a small force of little more than 2,000 men went to Jaffa by sea in a surprise attack. Richard's forces stormed Jaffa from their ships and the [[Ayyubids]], who had been unprepared for a naval attack, were driven from the city. Richard freed those of the Crusader garrison who had been made prisoner, and these troops helped to reinforce the numbers of his army. Saladin's army still had numerical superiority, however, and they counter-attacked. Saladin intended a stealthy surprise attack at dawn, but his forces were discovered; he proceeded with his attack, but his men were lightly armoured and suffered heavy casualties due to the missiles of the large numbers of Crusader crossbowmen. The [[Battle of Jaffa (1192)|battle]] to retake Jaffa ended in complete failure for Saladin, who was forced to retreat. This battle greatly strengthened the position of the coastal Crusader states. ||| Advances on Jerusalem, regicide, and negotiations ||| ||| +-1 Torstenson War ||| Battle of Colberger Heide ||| This attack caught Denmark unaware and poorly prepared, but King [[Christian IV of Denmark|Christian IV]] retained his presence of mind. He placed his confidence in the fleet to protect the home islands, just winning the [[Battle of Colberger Heide]] on 1 July 1644 but suffering a decisive defeat in the [[Action of 13 October 1644|Battle of Fehmarn]] on 13 October 1644 against a Dutch–Swedish fleet. ||| Responses ||| Denmark ||| +-1 Turkish War of Independence ||| Franco-Turkish War ||| The '''Turkish War of Liberation''' ([[Turkish language|Turkish]]: ''İstiklâl Harbi'' or ''Kurtuluş Savaşı'' literally 'Liberation War' or ''Millî Mücadele'' literally 'National Campaign' ; May 19, 1919 – July 24, 1923) was fought between the [[Turkish National Movement|Turkish nationalists]] and the proxies of the [[Allies of World War I|Allies]], namely [[Greco-Turkish War (1919–22)|Greece on the Western front]], [[Turkish-Armenian War|Armenia on the Eastern]], [[Franco-Turkish War|France on the Southern]] and with them, the [[Occupation of Constantinople|United Kingdom and Italy in Constantinople (now Istanbul)]], after the country was [[partitioning of the Ottoman Empire|occupied and partitioned]] following the [[Ottoman Empire]]'s defeat in [[World War I]]. Although present, few British, French, Italian or Georgian troops were deployed or engaged in combat. ||| ||| ||| +-1 Turkish War of Independence ||| Occupation of Constantinople ||| The '''Turkish War of Liberation''' ([[Turkish language|Turkish]]: ''İstiklâl Harbi'' or ''Kurtuluş Savaşı'' literally 'Liberation War' or ''Millî Mücadele'' literally 'National Campaign' ; May 19, 1919 – July 24, 1923) was fought between the [[Turkish National Movement|Turkish nationalists]] and the proxies of the [[Allies of World War I|Allies]], namely [[Greco-Turkish War (1919–22)|Greece on the Western front]], [[Turkish-Armenian War|Armenia on the Eastern]], [[Franco-Turkish War|France on the Southern]] and with them, the [[Occupation of Constantinople|United Kingdom and Italy in Constantinople (now Istanbul)]], after the country was [[partitioning of the Ottoman Empire|occupied and partitioned]] following the [[Ottoman Empire]]'s defeat in [[World War I]]. Although present, few British, French, Italian or Georgian troops were deployed or engaged in combat. ||| ||| ||| +-1 U-boat Campaign (World War I) ||| Attack on Orleans ||| July 1918 witnessed the [[Attack on Orleans]] when a U-boat sunk four barges and a tugboat off the coast of [[Cape Cod]] [[Massachusetts]] by the town of Orleans. The U-boat fired on the town ineffectually for about an hour before it was fought off by two Navy planes. It was the first attack involving a foreign power's artillery against US soil since the [[Mexican–American War]]. ||| 1918: The last year ||| American campaign ||| +-1 Uprising in Serbia (1941) ||| Battle of Loznica (1941) ||| The '''Uprising in Serbia''' was initiated in July 1941 by the [[Communist Party of Yugoslavia]] against the [[Nazi Germany|German]] occupation forces and their Serbian [[quisling]] auxiliaries in the [[Territory of the Military Commander in Serbia]]. At first the [[Yugoslav Partisans]] had mounted diversions and conducted sabotage and had attacked representatives of [[Milan Aćimović|Aćimović's]] quisling administration. In late August some [[Chetniks]] joined the uprising and liberated [[Battle of Loznica (1941)|Loznica]]. The uprising soon reached mass proportions. Partisans and Chetniks captured towns that weak [[Nazi Germany|German]] garrisons had abandoned. The armed uprising soon engulfed great parts of the occupied territory. The largest liberated territory in occupied Europe was created by the Partisans in western Serbia, and was known as the [[Republic of Užice]]. Rebels shared power on the liberated territory; the center of the Partisan liberated territory was in [[Užice]], and Chetniks had their headquarters on [[Ravna Gora (Suvobor)|Ravna Gora]]. ||| ||| ||| +-1 Vandalic War ||| Battle of Ad Decimum ||| The Roman expeditionary force set sail from Constantinople in late June 533, and after a sea voyage along the coasts of Greece and southern Italy, landed on the African coast at [[Chebba|Caputvada]] in early September, to Gelimer's complete surprise. The Vandal king gathered his forces and met the Roman army at the [[Battle of Ad Decimum]], near Carthage, on 13 September. Gelimer's elaborate plan to encircle and destroy the Roman army came close to success, but Belisarius was able to drive the Vandal army to flight and occupy Carthage. Gelimer withdrew to [[Bulla Regia]], where he gathered his remaining strength, including the army of Tzazon, which returned from Sardinia. In December, Gelimer advanced towards Carthage and met the Romans at the [[Battle of Tricamarum]]. The battle resulted in a Roman victory and the death of Tzazon. Gelimer fled to a remote mountain fortress, where he was blockaded until he surrendered in the spring. ||| ||| ||| +-1 Vandalic War ||| Battle of Tricamarum ||| The Roman expeditionary force set sail from Constantinople in late June 533, and after a sea voyage along the coasts of Greece and southern Italy, landed on the African coast at [[Chebba|Caputvada]] in early September, to Gelimer's complete surprise. The Vandal king gathered his forces and met the Roman army at the [[Battle of Ad Decimum]], near Carthage, on 13 September. Gelimer's elaborate plan to encircle and destroy the Roman army came close to success, but Belisarius was able to drive the Vandal army to flight and occupy Carthage. Gelimer withdrew to [[Bulla Regia]], where he gathered his remaining strength, including the army of Tzazon, which returned from Sardinia. In December, Gelimer advanced towards Carthage and met the Romans at the [[Battle of Tricamarum]]. The battle resulted in a Roman victory and the death of Tzazon. Gelimer fled to a remote mountain fortress, where he was blockaded until he surrendered in the spring. ||| ||| ||| +-1 Vietnam War ||| Battle of Ap Bac ||| The inept performance of the South Vietnamese army was exemplified by failed actions such as the [[Battle of Ap Bac]] on 2 January 1963, in which a small band of Viet Cong won a battle against a much larger and better-equipped South Vietnamese force, many of whose officers seemed reluctant even to engage in combat. As historian [[James Gibson (historian)|James Gibson]] summed up the situation: ||| Kennedy's escalation, 1961–63 ||| Ousting and assassination of Ngô Đình Diệm ||| +-1 Vietnam War ||| Battle of Khe Sanh ||| In late 1967 the Communists lured American forces into the hinterlands at [[Đắk Tô]] and at the [[Battle of Khe Sanh|Marine Khe Sanh combat base]] in [[Quảng Trị Province]] where the United States was more than willing to fight because it could unleash its massive firepower unimpeded by civilians. However, on 31 January 1968, the NVA and the Viet Cong broke the truce that traditionally accompanied the [[Tết]] (Lunar New Year) holiday by launching the largest battle of the war, the Tet Offensive, in the hope of sparking a national uprising. Over 100 cities were attacked by over 85,000 enemy troops including assaults on General Westmoreland's headquarters and the [[United States Embassy, Saigon|U.S. Embassy in Saigon]]. ||| Johnson's escalation, 1963–69 ||| Tet Offensive ||| +-1 Vietnam War ||| Cambodian Campaign ||| In 1970, Prince [[Cambodian coup of 1970|Sihanouk was deposed]] by his pro-American prime minister [[Lon Nol]]. North Vietnam invaded Cambodia in 1970 at the request of [[Khmer Rouge]] deputy leader [[Nuon Chea]]. U.S. and ARVN forces launched [[Cambodian Campaign|an invasion into Cambodia]] to attack NVA and Viet Cong bases. ||| Vietnamization, 1969–72 ||| Cambodia and Laos ||| +-1 Vietnam War ||| North Vietnamese invasion of Laos ||| [[North Vietnamese invasion of Laos|North Vietnam invaded Laos]] in 1959, and used 30,000 men to build invasion routes through Laos and Cambodia by 1961. North Vietnam sent 10,000 troops of the North Vietnamese Army to attack the south in 1964, and this figure increased to 100,000 in 1965. ||| Diệm era, 1955–63 ||| Insurgency in the South, 1954–60 ||| North Vietnamese involvement +-1 Vietnam War ||| Operation Attleboro ||| Washington encouraged its [[Southeast Asia Treaty Organization|SEATO]] allies to contribute troops. Australia, New Zealand, South Korea, Thailand, and the Philippines The U.S. and its allies mounted complex operations, such as operations [[Operation Masher|Masher]], [[Operation Attleboro|Attleboro]], [[Operation Cedar Falls|Cedar Falls]], and [[Operation Junction City|Junction City]]. However, the communist insurgents remained elusive and demonstrated great [[Military tactics|tactical]] flexibility. ||| Johnson's escalation, 1963–69 ||| Escalation and ground war ||| +-1 Vietnam War ||| Operation Commando Hunt ||| Bombing was not restricted to North Vietnam. Other aerial campaigns, such as [[Operation Commando Hunt]], targeted different parts of the Viet Cong and NVA infrastructure. These included the [[Ho Chi Minh trail]] supply route, which ran through Laos and Cambodia. The objective of stopping North Vietnam and the Viet Cong was never reached. As one officer noted, 'This is a political war and it calls for discriminate killing. The best weapon… would be a knife… The worst is an airplane.' ||| Johnson's escalation, 1963–69 ||| ||| +-1 Vietnam War ||| Operation Junction City ||| Washington encouraged its [[Southeast Asia Treaty Organization|SEATO]] allies to contribute troops. Australia, New Zealand, South Korea, Thailand, and the Philippines The U.S. and its allies mounted complex operations, such as operations [[Operation Masher|Masher]], [[Operation Attleboro|Attleboro]], [[Operation Cedar Falls|Cedar Falls]], and [[Operation Junction City|Junction City]]. However, the communist insurgents remained elusive and demonstrated great [[Military tactics|tactical]] flexibility. ||| Johnson's escalation, 1963–69 ||| Escalation and ground war ||| +-1 Vietnam War ||| Operation Linebacker ||| Vietnamization was again tested by the [[Easter Offensive]] of 1972, a massive conventional NVA invasion of South Vietnam. The NVA and Viet Cong quickly overran the northern provinces and in coordination with other forces attacked from Cambodia, threatening to cut the country in half. U.S. troop withdrawals continued. But American airpower came to the rescue with [[Operation Linebacker]], and the offensive was halted. However, it became clear that without American airpower South Vietnam could not survive. The last remaining American ground troops were withdrawn by the end of March 1973; U.S. naval and air forces remained in the Gulf of Tonkin, as well as Thailand and Guam. ||| Vietnamization, 1969–72 ||| Cambodia and Laos ||| +-1 Vietnam War ||| Operation Linebacker II ||| To show his support for South Vietnam and force Hanoi back to the negotiating table, Nixon ordered [[Operation Linebacker II]], a massive bombing of Hanoi and Haiphong 18–29 December 1972. The offensive destroyed much of the remaining economic and industrial capacity of North Vietnam. Simultaneously Nixon pressured Thieu to accept the terms of the agreement, threatening to conclude a bilateral peace deal and cut off American aid. ||| Vietnamization, 1969–72 ||| 1972 election and Paris Peace Accords ||| +-1 Vietnam War ||| Operation Pierce Arrow ||| The second attack led to [[Operation Pierce Arrow|retaliatory air strikes]], prompted Congress to approve the [[Gulf of Tonkin Resolution]] on 7 August 1964, In the same month, Johnson pledged that he was not '… committing American boys to fighting a war that I think ought to be fought by the boys of Asia to help protect their own land.' ||| Johnson's escalation, 1963–69 ||| ||| +-1 War in Donbass ||| Shelling of Donetsk, Russia ||| After a brief lull following the insurgent withdrawal from the northern part of Donetsk Oblast, fighting continued to escalate sharply in the eastern parts of Donetsk Oblast. [[Shelling of Donetsk, Russia|Shells landed]] on the border town of [[Donetsk, Russia|Donetsk]] in [[Rostov Oblast]], a part of Russia, on 13 July. The insurgents blamed the Air Force of Ukraine, but the Ukrainian government denied any involvement in the attack. ||| History ||| Fighting worsens in eastern Donetsk Oblast ||| +-1 War in Donbass ||| Volnovakha bus attack ||| OSCE monitors reported a 'rise in tensions' following New Year's Day. An intercity bus stopped at a government checkpoint in Buhas [[Volnovakha bus attack|was hit]] by a [[Grad rocket]] on 13 January, killing twelve civilians. Buhas is {{convert|35|km|mi}} south-west of Donetsk city. ||| History ||| Into the new year: escalation in January 2015 ||| +-1 War in North-West Pakistan ||| Battle of Bajaur ||| In a television emergency address, [[President of Pakistan|President]] [[Asif Ali Zardari|Zardari]] and Prime Minister [[Yousaf Raza Gillani|Gillani]] publicly vowed revenge in response to the Marriott Hotel bombing. By 26 September 2008, Pakistan air force and army had successfully conducted and completed a major joint offensive in the Bajaur and the Tang Khata regions of the Federally Administered Tribal Areas, codenamed ''[[Battle of Bajaur|Operation Sherdil]]''. Thist joint operation had killed over 1,000 militants in a huge offensive, a day after President Asif Ali Zardari lashed out at US forces over a clash on the Afghan border. ||| Escalation, air and ground war ||| Renewed Bajaur offensive ||| +-1 War in North-West Pakistan ||| Battle of Wana ||| The armed conflict began in 2004, when tensions, rooted in the [[Pakistan Army]]'s [[Battle of Wana|search for]] [[al-Qaeda]] fighters in Pakistan's mountainous [[Waziristan]] area (in the [[Federally Administered Tribal Areas]]), escalated into armed resistance. allied with the [[Arab terrorism|Arab]] fighters, in 2008–2010. The foreign militants were joined by Pakistani non-military veterans of the [[War in Afghanistan (2001–14)|Afghan War]] to the west, which subsequently established the [[Tehrik-i-Taliban Pakistan|TTP]] and other militant umbrella organizations, such as [[Lashkar-e-Islam|LeI]]. The [[Tehreek-e-Nafaz-e-Shariat-e-Mohammadi|TNSM]] established in 1992 allied with the TTP and LeI. ||| ||| ||| +-1 War in North-West Pakistan ||| Death of Osama bin Laden ||| As late as 2010, [[Chief of Naval Staff (Pakistan)|chief of naval staff]] [[Admiral]] [[Noman Bashir]] had coordinated many of successful tactical ground operations against TTP hideouts, to support the army and air force pressure on militants. Many successful operations were executed by the navy, and its operational capability gained international prominence. On 1 May 2011, in a [[Death of Osama bin Laden|clandestine operation]] in [[Abbottabad]], al-Qaeda leader [[Osama Bin Laden]] was located and killed by the [[United States Navy|U.S.]] [[US Navy SEALS|Navy SEALs]] in his [[Osama bin Laden's compound in Abbottabad|private compound]]. The groups affiliated with the armed TTP vowed, via media, to avenge Osama's death upon the Pakistan Armed Forces. ||| Continued insurgency ||| Death of Bin Laden and Navy offensive ||| +-1 War of 1812 ||| Battle of Beaver Dams ||| On May 27, 1813, an American amphibious force from Lake Ontario assaulted [[Fort George, Ontario|Fort George]] on the northern end of the Niagara River and captured it without serious losses. The retreating British forces were not pursued, however, until they had largely escaped and organized a counteroffensive against the advancing Americans at the [[Battle of Stoney Creek]] on June 5. On June 24, with the help of advance warning by [[Laura Secord]], another American force was forced to surrender by a much smaller British and native force at the [[Battle of Beaver Dams]], marking the end of the American offensive into Upper Canada. Meanwhile, Commodore [[James Lucas Yeo]] had taken charge of the British ships on the lake and mounted a counterattack, which was nevertheless repulsed at the [[Battle of Sackett's Harbor]]. Thereafter, Chauncey and Yeo's squadrons fought two indecisive actions, neither commander seeking a fight to the finish. ||| Theatres of war ||| Great Lakes and Western Territories ||| Niagara frontier, 1813 +-1 War of 1812 ||| Battle of Fort Stephenson ||| In May 1813, Procter and Tecumseh set [[Siege of Fort Meigs|siege to Fort Meigs]] in northwestern [[Ohio]]. American reinforcements arriving during the siege were defeated by the natives, but the fort held out. The Indians eventually began to disperse, forcing Procter and Tecumseh to return north to Canada. A second offensive against [[Fort Meigs]] also failed in July. In an attempt to improve Indian morale, Procter and Tecumseh attempted to [[Battle of Fort Stephenson|storm Fort Stephenson]], a small American post on the [[Sandusky River]], only to be repulsed with serious losses, marking the end of the Ohio campaign. ||| Theatres of war ||| Great Lakes and Western Territories ||| American Northwest, 1813 +-1 War of 1812 ||| Battle of Frenchtown ||| After Hull's surrender of Detroit, General William Henry Harrison was given command of the U.S. Army of the Northwest. He set out to retake the city, which was now defended by Colonel [[Henry Procter (British Army officer)|Henry Procter]] in conjunction with Tecumseh. A detachment of Harrison's army was defeated at [[Battle of Frenchtown|Frenchtown]] along the [[River Raisin]] on January 22, 1813. Procter left the prisoners with an inadequate guard, who could not prevent some of his North American aboriginal allies from attacking and killing perhaps as many as sixty Americans, many of whom were Kentucky militiamen. The incident became known as the [[River Raisin Massacre]]. The defeat ended Harrison's campaign against Detroit, and the phrase 'Remember the River Raisin!' became a rallying cry for the Americans. ||| Theatres of war ||| Great Lakes and Western Territories ||| American Northwest, 1813 +-1 War of 1812 ||| Battle of Lacolle Mills (1814) ||| For the rest of the year, Ogdensburg had no American garrison, and many residents of Ogdensburg resumed visits and trade with Prescott. This British victory removed the last American regular troops from the Upper St. Lawrence frontier and helped secure British communications with Montreal. Late in 1813, after much argument, the Americans made two thrusts against Montreal. The plan eventually agreed upon was for Major General [[Wade Hampton I|Wade Hampton]] to march north from Lake Champlain and join a force under General [[James Wilkinson]] that would embark in boats and sail from Sackett's Harbor on Lake Ontario and descend the St. Lawrence. Hampton was delayed by bad roads and supply problems and also had an intense dislike of Wilkinson, which limited his desire to support his plan. On October 25, his 4,000-strong force was defeated at the [[Battle of the Chateauguay|Chateauguay River]] by [[Charles de Salaberry]]'s smaller force of [[Canadian Voltigeurs]] and [[Mohawks]]. Wilkinson's force of 8,000 set out on October 17, but was also delayed by bad weather. After learning that Hampton had been checked, Wilkinson heard that a British force under Captain [[William Mulcaster]] and Lieutenant Colonel [[Joseph Wanton Morrison]] was pursuing him, and by November 10, he was forced to land near [[Morrisburg, Ontario|Morrisburg]], about 150 kilometres (90 mi.) from Montreal. On November 11, Wilkinson's rear guard, numbering 2,500, attacked Morrison's force of 800 at [[Battle of Crysler's Farm|Crysler's Farm]] and was repulsed with heavy losses. After learning that Hampton could not renew his advance, Wilkinson retreated to the U.S. and settled into winter quarters. He resigned his command after a failed attack on a British outpost at [[Battle of Lacolle Mills (1814)|Lacolle Mills]]. ||| Theatres of war ||| Great Lakes and Western Territories ||| St. Lawrence and Lower Canada, 1813 +-1 War of 1812 ||| Battle of Ogdensburg ||| The British were potentially most vulnerable over the stretch of the St. Lawrence where it formed the frontier between Upper Canada and the United States. During the early days of the war, there was illicit commerce across the river. Over the winter of 1812 and 1813, the Americans launched a series of raids from [[Ogdensburg, New York|Ogdensburg]] on the American side of the river, which hampered British supply traffic up the river. On February 21, Sir George Prévost passed through [[Prescott, Ontario|Prescott]] on the opposite bank of the river with reinforcements for Upper Canada. When he left the next day, the reinforcements and local militia attacked. At the [[Battle of Ogdensburg]], the Americans were forced to retire. ||| Theatres of war ||| Great Lakes and Western Territories ||| St. Lawrence and Lower Canada, 1813 +-1 War of 1812 ||| Battle of Queenston Heights ||| With the majority of its land and naval forces tied down in Europe fighting the [[Napoleonic Wars]], the British used a defensive strategy in the Provinces of Upper and Lower Canada, repelling initial American invasions. Early victories over poorly led US armies, such as in the [[Battle of Queenston Heights]], demonstrated that the conquest of the Canadas would prove more difficult than anticipated. Despite this, the US was able to inflict serious defeats on Britain's Native American allies, ending the prospect of an [[Tecumseh's Confederacy|Indian confederacy]] and an independent Native American state in the Midwest under British sponsorship. US forces were also able to make several gains on the Canadian frontier; taking control of [[Lake Erie]] in 1813 and seizing western parts of [[Upper Canada]]. However a large-scale US attempt to capture [[Montreal]] was repulsed in November 1813, and serious US attempts to conquer Upper Canada were ultimately abandoned following the bloody [[Battle of Lundy's Lane]] in July 1814. ||| ||| ||| +-1 War of 1812 ||| Battle of Stoney Creek ||| On May 27, 1813, an American amphibious force from Lake Ontario assaulted [[Fort George, Ontario|Fort George]] on the northern end of the Niagara River and captured it without serious losses. The retreating British forces were not pursued, however, until they had largely escaped and organized a counteroffensive against the advancing Americans at the [[Battle of Stoney Creek]] on June 5. On June 24, with the help of advance warning by [[Laura Secord]], another American force was forced to surrender by a much smaller British and native force at the [[Battle of Beaver Dams]], marking the end of the American offensive into Upper Canada. Meanwhile, Commodore [[James Lucas Yeo]] had taken charge of the British ships on the lake and mounted a counterattack, which was nevertheless repulsed at the [[Battle of Sackett's Harbor]]. Thereafter, Chauncey and Yeo's squadrons fought two indecisive actions, neither commander seeking a fight to the finish. ||| Theatres of war ||| Great Lakes and Western Territories ||| Niagara frontier, 1813 +-1 War of 1812 ||| Battle of the Chateauguay ||| For the rest of the year, Ogdensburg had no American garrison, and many residents of Ogdensburg resumed visits and trade with Prescott. This British victory removed the last American regular troops from the Upper St. Lawrence frontier and helped secure British communications with Montreal. Late in 1813, after much argument, the Americans made two thrusts against Montreal. The plan eventually agreed upon was for Major General [[Wade Hampton I|Wade Hampton]] to march north from Lake Champlain and join a force under General [[James Wilkinson]] that would embark in boats and sail from Sackett's Harbor on Lake Ontario and descend the St. Lawrence. Hampton was delayed by bad roads and supply problems and also had an intense dislike of Wilkinson, which limited his desire to support his plan. On October 25, his 4,000-strong force was defeated at the [[Battle of the Chateauguay|Chateauguay River]] by [[Charles de Salaberry]]'s smaller force of [[Canadian Voltigeurs]] and [[Mohawks]]. Wilkinson's force of 8,000 set out on October 17, but was also delayed by bad weather. After learning that Hampton had been checked, Wilkinson heard that a British force under Captain [[William Mulcaster]] and Lieutenant Colonel [[Joseph Wanton Morrison]] was pursuing him, and by November 10, he was forced to land near [[Morrisburg, Ontario|Morrisburg]], about 150 kilometres (90 mi.) from Montreal. On November 11, Wilkinson's rear guard, numbering 2,500, attacked Morrison's force of 800 at [[Battle of Crysler's Farm|Crysler's Farm]] and was repulsed with heavy losses. After learning that Hampton could not renew his advance, Wilkinson retreated to the U.S. and settled into winter quarters. He resigned his command after a failed attack on a British outpost at [[Battle of Lacolle Mills (1814)|Lacolle Mills]]. ||| Theatres of war ||| Great Lakes and Western Territories ||| St. Lawrence and Lower Canada, 1813 +-1 War of 1812 ||| Burning of Washington ||| At sea, the powerful Royal Navy blockaded much of the coastline, though it was allowing substantial exports from New England, which traded with Canada in defiance of American laws. The blockade devastated American agricultural exports, but it helped stimulate local factories that replaced goods previously imported. The American strategy of using small gunboats to defend ports was a [[Failure|fiasco]], as the British raided the coast at will. The most famous episode was a series of British raids on the shores of [[Chesapeake Bay]], including an attack on Washington that resulted in the British burning of the [[White House]], the [[United States Capitol|Capitol]], the [[Washington Navy Yard|Navy Yard]], and other public buildings, in the '[[Burning of Washington]]'. The British power at sea was enough to allow the Royal Navy to levy '[[protection money|contributions]]' on bayside towns in return for not burning them to the ground. The Americans were more successful in ship-to-ship actions. They sent out several hundred privateers to attack British merchant ships; in the first four months of war they captured 219 British merchant ships.{{sfn|Latimer|2007|p=101}} British commercial interests were damaged, especially in the [[West Indies]]. ||| Course of the war ||| ||| +-1 War of 1812 ||| Creek War ||| In the Southeast, Indian resistance had been crushed by General Andrew Jackson during the [[Creek War]]; as President (1829–37), Jackson systematically expelled the major tribes to reservations west of the Mississippi.,{{sfn|Remini|2002|pp=62–93, 226–281}} part of which was the forced expulsion of American-allied [[Cherokee]] in the [[trail of tears]]. ||| Long-term consequences ||| Indigenous nations ||| +-1 War of 1812 ||| Fort Bowyer ||| After New Orleans, the British tried to take Mobile a second time; General John Lambert laid siege for five days and took the fort, winning the [[Fort Bowyer|Second Battle of Fort Bowyer]] on February 12, 1815. HMS ''Brazen'' brought news of the Treaty of Ghent the next day, and the British abandoned the Gulf coast. ||| Theatres of war ||| Southern theatre ||| Gulf Coast +-1 War of 1812 ||| Siege of Detroit ||| The senior British officer in Upper Canada, Major General Isaac Brock, felt that he should take bold measures to calm the settler population in Canada, and to convince the aboriginals who were needed to defend the region that Britain was strong.{{sfn |Benn |Marston |2006 |p=214}} He moved rapidly to Amherstburg near the western end of Lake Erie with reinforcements and immediately decided to [[Siege of Detroit|attack Detroit]]. Hull, fearing that the British possessed superior numbers and that the Indians attached to Brock's force would commit massacres if fighting began, surrendered Detroit without a fight on August 16. Knowing of British-instigated indigenous attacks on other locations, Hull ordered the evacuation of the inhabitants of [[Fort Dearborn]] (Chicago) to Fort Wayne. After initially being granted safe passage, the inhabitants (soldiers and civilians) were attacked by Potowatomis on August 15 after travelling only {{convert|2|mi|km}} in what is known as the [[Battle of Fort Dearborn]].{{sfn|Hickey|1989|p=84}} The fort was subsequently burned. ||| Theatres of war ||| Great Lakes and Western Territories ||| Invasions of Upper and Lower Canada, 1812 +-1 War of Attrition ||| Operation Rimon 20 ||| '''July 30, 1970''': A large-scale dogfight occurs between Israeli and Soviet aircraft, codenamed ''[[Operation Rimon 20|Rimon 20]]'', involving twelve to twenty-four Soviet MiG-21s (besides the initial twelve, other MiGs are 'scrambled', but it is unclear if they reach the battle in time), and twelve Israeli [[Dassault Mirage III]]s and four [[F-4 Phantom II]] jets. The engagement takes place west of the Suez Canal. Ambushing their opponents, the Israelis shoot down four of the Soviet-piloted MiGs. A fifth is possibly hit and later crashes en route back to base. Four Soviet pilots are killed, while the IAF suffers no losses except a damaged Mirage. Washington fears an escalation and redoubles efforts toward a peaceful resolution to the conflict. ||| Timeline ||| 1970 ||| +-1 War of Attrition ||| Operation Rooster 53 ||| '''December 26–27, 1969''': Israel launches Operation [[Operation Rooster 53|Rooster 53]], carried out by paratroopers transported by [[Sikorsky CH-53 Sea Stallion|Sikorsky CH-53E]] and [[Super Frelon]] helicopters. The operation results in the capture of an Egyptian [[P-12 radar|P-12]] radar at [[Ras Gharib]] and carrying it to Israel by 2 [[CH-53 Sea Stallion]] Helicopters. The operation enabled Israeli and American learning of the latest [[Soviet Union|Soviet]] radar technology, and caused a huge morale impact on the Egyptians. ||| Timeline ||| 1969 ||| +-1 War of Independence of Brazil ||| Battle of 4 May ||| *[[Battle of 4 May]] ||| Key Battles ||| ||| +-1 War of the Austrian Succession ||| Battle of Campo Santo ||| In 1743, the Spanish on the [[Panaro (river)|Panaro]] had achieved a victory over Traun at [[Battle of Campo Santo|Campo Santo]] on 8 February 1743. The Spanish-[[Piedmont]]ese War in the [[Alps]] continued without much result, the only incident of note being the first Battle of Casteldelfino (7–10 October 1743), when an initial French offensive was beaten off. ||| Italian Campaigns 1741–47 ||| ||| +-1 War of the Austrian Succession ||| Battle of Havana (1748) ||| The last year of the war saw two significant actions in the Caribbean. A second British [[Battle of Santiago de Cuba (1748)|assault on Santiago de Cuba]] which also ended in failure and a naval action which arose from an accidental encounter between two convoys. The [[Battle of Havana (1748)|action]] unfolded in a confused way with each side at once anxious to cover its own trade and to intercept that of the other. Capture was rendered particularly desirable for the British by the fact that the Spanish homeward-bound fleet would be laden with [[bullion]] from the American mines. The advantage lay with the British when one Spanish warship ran aground and another was captured but the British commander failed to capitalise and the Spanish fleet took shelter in Havana. ||| Naval operations ||| The West Indies ||| +-1 War of the Austrian Succession ||| Battle of Madras ||| In the East Indies, attacks on French commerce by a British squadron under [[Curtis Barnett]] in 1745 led to the despatch of a French squadron commanded by [[Bertrand-François Mahé de La Bourdonnais|Mahé de la Bourdonnais]]. After [[Action of 6 July 1746|an inconclusive clash]] off [[Negapatnam]] in July 1746, [[Edward Peyton]], Barnett's successor, withdrew to Bengal, leaving Bourdonnais unopposed on the [[Coromandel Coast]]. He landed troops near [[Chennai|Madras]] and [[Battle of Madras|besieged the port]] by land and sea, forcing it to surrender on 10 September 1746. In October the French squadron was devastated by a cyclone, losing four ships of the line and suffering heavy damage to four more, and the surviving ships withdrew. French land forces went on to make several attacks on the British settlement at [[Cuddalore]], but the eventual replacement of the negligent Peyton by [[Thomas Griffin (Royal Navy officer)|Thomas Griffin]] resulted in a return to British naval supremacy which put the French on the defensive. Despite the appearance of another French squadron, the arrival of large-scale British reinforcements under [[Edward Boscawen]] (who considered but did not make an attack on [[Mauritius|Île de France]] on the way) gave the British overwhelming dominance on land and sea, but [[Siege of Pondicherry (1748)|the ensuing siege]] of [[Pondichéry]] organised by Boscawen was unsuccessful. ||| Naval operations ||| The Indian Ocean ||| +-1 War of the Austrian Succession ||| Battle of Mollwitz ||| File:Prussian Army during battle of Mollwitz 1741.jpg|The Prussian infantry during the [[Battle of Mollwitz]], 1741 ||| Gallery ||| ||| +-1 War of the Austrian Succession ||| Battle of Toulon (1744) ||| During naval operations that were possible preparations for the return of Charles Edward Stuart to England and a coordinated French invasion of England, there occurred, on 22 February 1744, the largest sea battle of the war. [[Battle of Toulon (1744)|This naval battle]] took place in the Mediterranean off the coast of [[Toulon]], France. A large British fleet under the command of Admiral [[Thomas Mathews]] with Rear Admiral [[Richard Lestock]], second in command was blockading the French coast. A smaller French and Spanish naval force attacked the British blockade and damaged some of the British ships forcing the British to withdraw and seek repairs. Thus, the British blockade of the French coast was relieved and the Spanish fleet apparently controlled the Mediterranean Sea. A Spanish squadron took refuge in the harbour at [[Toulon]]. The British fleet watched this squadron carefully from a harbour a short distance to the east. On 21 February 1744, the Spanish ships put to sea with a French fleet. Admiral Mathews took his British fleet and attacked the Spanish fleet from 22 February until 23 February 1744 in what has become known as the Battle of Toulon. However, because of mis-communication and possibly treachery on the part of Rear Admiral Lestock, the smaller Spanish fleet was allowed to escape. With the knowledge that a larger French fleet was sailing to the rescue the British ships broke off combat and retreated to the northeast. ||| Campaign of 1744 ||| ||| +-1 War of the Austrian Succession ||| Raid on Lorient ||| The last three campaigns of the war in the Netherlands were illustrated by the now fully developed genius of Marshal Saxe. After Fontenoy, the French carried all before them. The withdrawal of most of the British to aid in suppressing the [[Jacobite rising of 1745]] at home left their allies in a helpless position. In 1746, the Dutch and the Austrians were driven back towards the line of the [[Meuse (river)|Meuse]], and most of the important fortresses were taken by the French and [[Siege of Brussels|Brussels was captured]] in February 1746. In September the British launched a [[Raid on Lorient]] in an attempt to provide a diversion for the Allied forces in the Netherlands. The [[Battle of Roucoux]] (or Raucourt) near [[Liège (city)|Liège]], fought on 11 October between the allies under Prince Charles of Lorraine and the French under Saxe, resulted in a victory for the latter. The [[Dutch Republic]] itself was now in danger, and when in April 1747 Saxe's army, which had now conquered the Austrian Netherlands up to the Meuse, turned its attention to the [[Dutch Republic|United Provinces]], the [[Barrier Fortresses|old fortresses on the frontier]] offered but slight resistance. Since August 1746, talks had been ongoing at the [[Congress of Breda]] to try and agree a peace settlement, but up to this point they had met with little success. ||| Later campaigns ||| ||| +-1 War of the Austrian Succession ||| Second Battle of Cape Finisterre (1747) ||| On 14 October, another French convoy, protected by a strong squadron, was intercepted by a well-appointed and well-directed squadron of superior numbers – the squadrons were respectively eight French and fourteen British – in the [[Bay of Biscay]]. In the [[Second Battle of Cape Finisterre (1747)|second Battle of Cape Finisterre]] which followed, the French admiral, Henri-François des Herbiers-l'Étenduère (1681–1750), succeeded in covering the escape of most of the merchant ships, but Hawke's British squadron took six of his warships. Most of the merchantmen were later intercepted and captured in the West Indies. This disaster convinced the French government of its helplessness at sea, and it made no further effort. ||| Naval operations ||| Northern waters ||| +-1 War of the Austrian Succession ||| Siege of Bergen op Zoom (1747) ||| The Prince of Orange [[William IV, Prince of Orange|William IV]] and the Duke of Cumberland suffered a severe defeat at [[Battle of Lauffeld|Lauffeld]] (Lawfeld, also called Val) on 2 July 1747, and Saxe, after his victory, promptly and secretly despatched a corps under Marshal [[Ulrich Friedrich Waldemar von Löwendahl (Comte de Lowendahl)|Lowendahl]] (1700–1755) to [[Siege of Bergen op Zoom (1747)|besiege Bergen op Zoom]]. On 18 September, Bergen op Zoom was [[Siege of Bergen op Zoom (1747)|stormed by the French]], and in the last year of the war [[Maastricht]], attacked by the entire forces of Saxe and Lowendahl, [[Siege of Maastricht (1748)|surrendered on 7 May 1748]]. A large Russian army arrived to join the allies, but too late to be of use. The quarrel between Russia and Sweden had been settled by the [[Peace of Åbo]] in 1743, and in 1746 Russia had allied itself with Austria. Eventually, a large army marched from Moscow to the Rhine, an event which was not without military significance, and in a manner preluded the great invasions of 1813–1814 and 1815. The general Peace of Aix-la-Chapelle ([[Aachen]]) was signed on 18 October 1748. ||| Later campaigns ||| ||| +-1 War of the Austrian Succession ||| Siege of Brussels ||| The last three campaigns of the war in the Netherlands were illustrated by the now fully developed genius of Marshal Saxe. After Fontenoy, the French carried all before them. The withdrawal of most of the British to aid in suppressing the [[Jacobite rising of 1745]] at home left their allies in a helpless position. In 1746, the Dutch and the Austrians were driven back towards the line of the [[Meuse (river)|Meuse]], and most of the important fortresses were taken by the French and [[Siege of Brussels|Brussels was captured]] in February 1746. In September the British launched a [[Raid on Lorient]] in an attempt to provide a diversion for the Allied forces in the Netherlands. The [[Battle of Roucoux]] (or Raucourt) near [[Liège (city)|Liège]], fought on 11 October between the allies under Prince Charles of Lorraine and the French under Saxe, resulted in a victory for the latter. The [[Dutch Republic]] itself was now in danger, and when in April 1747 Saxe's army, which had now conquered the Austrian Netherlands up to the Meuse, turned its attention to the [[Dutch Republic|United Provinces]], the [[Barrier Fortresses|old fortresses on the frontier]] offered but slight resistance. Since August 1746, talks had been ongoing at the [[Congress of Breda]] to try and agree a peace settlement, but up to this point they had met with little success. ||| Later campaigns ||| ||| +-1 War of the Austrian Succession ||| Siege of Louisbourg (1745) ||| The war was also conducted in North America and India. In North America the conflict was known in the [[British America|British colonies]] as [[King George's War]], and did not begin until after formal war declarations of France and Britain reached the colonies in May 1744. The frontiers between [[New France]] and the British colonies of [[New England]], [[Province of New York|New York]], and [[Nova Scotia]] were the site of frequent small scale raids, primarily by French colonial troops and their Indian allies against British targets, although several attempts were made by British colonists to organise expeditions against New France. The most significant incident was [[Siege of Louisbourg (1745)|the capture]] of the French [[Fortress Louisbourg]] on [[Cape Breton Island]] (Île Royale) by an expedition (29 April – 16 June 1745) of colonial militia organised by [[Province of Massachusetts Bay|Massachusetts]] Governor [[William Shirley]], commanded by [[William Pepperrell]] of [[Maine]] (then part of Massachusetts), and assisted by a Royal Navy fleet. [[Duc d'Anville Expedition|A French expedition]] to recover Louisbourg in 1746 failed due to bad weather, disease, and the death of its commander. Louisbourg was returned to France in exchange for [[Madras]], generating much anger among the British colonists, who felt they had eliminated a nest of privateers with its capture. ||| North America ||| ||| +-1 War of the Fifth Coalition ||| Battle of Wagram ||| The '''War of the Fifth Coalition''' was fought in the year 1809 by a coalition of the [[Austrian Empire]] and the [[United Kingdom of Great Britain and Ireland|United Kingdom]] against [[Napoleon I of France|Napoleon]]'s [[First French Empire|French Empire]] and [[Bavaria]]. Major engagements between France and Austria, the main participants, unfolded over much of Central Europe from April to July, with very high casualty rates for both sides. Britain, already involved on the European continent in the ongoing [[Peninsular War]], sent another expedition, the [[Walcheren Campaign]], to the Netherlands in order to relieve the Austrians, although this effort had little impact on the outcome of the conflict. After much campaigning in Bavaria and across the [[Danube River|Danube valley]], the war ended favourably for the French after the bloody struggle at [[Battle of Wagram|Wagram]] in early July. ||| ||| ||| +-1 War of the Fourth Coalition ||| Battle of Saalfeld ||| In the first clash on 9 October 1806, a Prussian division was brushed aside in the [[Battle of Schleiz]]. The following day, [[Jean Lannes|Marshal Lannes]] crushed a Prussian division at [[Battle of Saalfeld|Saalfeld]], where the popular [[Prince Louis Ferdinand of Prussia (1772-1806)|Prince Louis Ferdinand]] was killed. At the double [[Battle of Jena-Auerstedt]] on 14 October, Napoleon smashed a Prussian army led by [[Frederick Louis, Prince of Hohenlohe-Ingelfingen]] and [[Ernst von Rüchel]] at [[Jena]], while his Marshal [[Louis-Nicolas Davout]] routed [[Charles William Ferdinand, Duke of Brunswick]]'s main army at [[Auerstedt]]. At Jena, Napoleon fought only a contingent of the Prussian army. At Auerstedt a single French corps defeated the bulk of the Prussian army, despite being heavily outnumbered. Victory at Auerstedt was all but secured once the Duke of Brunswick (as well as fellow commander [[Friedrich Wilhelm Carl von Schmettau]]) were mortally wounded, and the Prussian command devolved to the less able King. Matters were worsened once the vanquished remnants of the Prussian army from Jena stumbled onto the clash at Auerstedt, further plunging the Prussians' morale and triggering their precipitous retreat. For this conspicuous victory, Marshal Davout was later created the ''Duke of Auerstedt'' by Napoleon. On 17 October, Marshal [[Jean-Baptiste Bernadotte]] (redeeming himself somewhat for his inexplicable absence from either battle on the 14th) mauled [[Eugene Frederick Henry, Duke of Württemberg]]'s previously untouched Reserve corps at the [[Battle of Halle]] and chased it across the [[Elbe River]]. ||| Prussian campaign ||| ||| +-1 War of the Pacific ||| Battle of Angamos ||| The [[Battle of Angamos]], on October 8, 1879 proved decisive and Peru was reduced almost to land forces. ||| War ||| Struggle for sea control ||| +-1 War of the Pacific ||| Battle of Arica ||| Afterwards, Chile's [[Land Campaign of the War of the Pacific|land campaign]] bested the [[Bolivian Army|Bolivian]] and [[Peruvian Army|Peruvian]] armies. Bolivia was defeated and withdrew after the [[Battle of Tacna]] on May 26, 1880. The Peruvian army was defeated in the [[Battle of Arica]] on June 7, 1880. The land campaign climaxed in 1881 with the Chilean [[occupation of Lima]] in January 1881. Peruvian army remnants and irregulars waged a [[guerrilla war]] against Chile. This ''Campaign of the Breña'' was a [[resistance movement]], but did not change the war's outcome. After Peru's defeat at the [[Battle of Huamachuco]] in July 1883, Chile and Peru signed the [[Treaty of Ancón]] on October 20, 1883. Bolivia signed a [[truce]] with Chile in 1884. ||| ||| ||| +-1 War of the Pacific ||| Battle of Iquique ||| In the [[Battle of Iquique]] (May 21, 1879), the Peruvian ironclad ''Huáscar'' engaged and sank the wooden ''Esmeralda''; Meanwhile, in the [[Battle of Punta Gruesa]], the Peruvian ''Independencia'' chased the [[Spanish schooner Virgen de Covadonga|schooner ''Covadonga'']] until the heavier ''Independencia'' collided with a submerged rock and sank in the shallow waters near Punta Gruesa. In total, Peru stopped the blockade of Iquique, and Chileans lost the old ''Esmeralda''. Nevertheless, the loss of the ''Independencia'' cost Peru 40% of its naval offensive power ||| War ||| Struggle for sea control ||| +-1 War of the Pacific ||| Blockade of Iquique ||| Early on Chile [[Blockade of Iquique|blockaded]] the Peruvian port of Iquique, on April 5. ||| War ||| Struggle for sea control ||| +-1 War of the Polish Succession ||| Battle of Bitonto ||| In southern Italy, the Austrians, choosing a strategy of defending a large number of fortresses, were soundly defeated. Don Carlos assembled an army composed primarily of Spaniards, but also including some troops from France and Savoy. Moving south through the [[Papal States]], his army flanked the frontline Austrian defense at Mignano, forcing them to retreat into the fortress at [[Capua]]. He was then practically welcomed into [[Naples]] by the city fathers, as the Austrian viceroy had fled toward [[Bari]], and the fortresses held by the Austrians in the city were quickly captured. While maintaining a blockade of the largest Austrian holdings at Capua and Gaeta, a large portion of the allied army gave chase to the remaining Austrian forces. These finally attempted a stand in late May, and were [[Battle of Bitonto|defeated at Bitonto]]. Capua and Gaeta were then properly besieged while Austrian fortresses in [[Sicily]] were quickly subdued. Gaeta [[Siege of Gaeta (1734)|surrendered in August]], and Capua [[Siege of Capua (1734)|held out until November]] when its commander, [[Otto Ferdinand von Abensberg und Traun]], finally negotiated surrender terms when he ran out of ammunition. The Jacobite pretender to the thrones of [[United Kingdom]] and [[France]], [[Charles Edward Stuart]], who was under 14 then, also participated in the French and Spanish siege of Gaeta, making his first exposure to battle. ||| War ||| Italy ||| +-1 War of the Polish Succession ||| Battle of San Pietro ||| Mercy's forces made repeated attempts to cross the [[Parma (river)|Parma River]] in June, but it was not until late in that month that they were able to cross the river and approach the city of [[Parma]], where the allied forces, now under the command of French marshals [[François-Marie, 1st duc de Broglie|de Broglie]] and [[François de Franquetot de Coigny|Coigny]], were entrenched. In a [[Battle of San Pietro|bloody battle near the village of Crocetta]] on June 29, the Austrians were beaten back, Mercy was killed, and [[Frederick Louis of Württemberg-Winnental|Frederick of Württemberg]], his second, was wounded. Charles Emmanuel returned the next day to retake command, and resumed his delaying tactics by failing to immediately pursue the retreating Austrians. The Austrians retreated to the Po, where they were reinforced by additional troops and placed under the command of [[Dominik von Königsegg-Rothenfels|Field Marshal Königsegg]]. After two months of inaction, during which the armies faced each other across the [[Secchia]] River, Königsegg on September 15 took advantage of lax security and executed a raid on Coigny's headquarters at [[Quistello]], very nearly capturing Coigny and taking among other prizes Charles Emmanuel's china. Two days later the French withdrew to a position near [[Guastalla]] in response to Austrian maneuvers, but one detachment of nearly 3,000 men was surrounded and captured by the advancing Austrians. On September 19, Königsegg [[Battle of Guastalla|attacked the allied position at Guastalla]], and in another bloody encounter, was beaten back, losing among others Frederick of Württemberg. Königsegg retreated across the Po, adopting a defensive position between the Po and the [[Oglio]] while Charles Emmanuel again did not capitalize on his victory. When he finally withdrew most of the allied army to [[Cremona]], the Austrians advanced on the north bank of the Po as far as the [[Adda (river)|Adda]] before both armies entered winter quarters in December 1734. ||| War ||| Italy ||| +-1 War of the Polish Succession ||| Siege of Kehl (1733) ||| Following France's October 10 declaration of war, it began military operations three days later, invading the [[Duchy of Lorraine]] and [[Siege of Kehl (1733)|besieging the imperial fortress at Kehl]], across the [[Rhine River]] from [[Strasbourg]], gaining control of both objectives in a few weeks. Unable to attack Austria directly, and unwilling to invade the intervening German states for fear of drawing Great Britain and the Dutch into the conflict, France consolidated its position in Lorraine, and withdrew its troops across the Rhine for the winter. ||| War ||| Rhineland ||| +-1 War of the Quadruple Alliance ||| Battle of Glen Shiel ||| It was also in 1719 that the Irish exile, the [[James Butler, 2nd Duke of Ormonde|Duke of Ormonde]], organized an expedition with extensive Spanish support to invade Britain and replace [[King George I of Great Britain|King George I]] with [[James Francis Edward Stuart|James Stuart]], the [[Jacobitism|Jacobite]] 'Old Pretender'. However, his fleet was dispersed by a storm near [[Galicia (Spain)|Galicia]] in 1719, and never reached Britain. A small force of 300 Spanish marines under George Keith, tenth [[Earl Marischal]] did land near [[Eilean Donan]], but they and the highlanders who supported them were defeated at the [[Battle of Eilean Donan]] in May 1719 and the [[Battle of Glen Shiel]] a month later, and the hopes of an uprising soon fizzled out. ||| 1719 ||| ||| +-1 War of the Second Coalition ||| Battle of Copenhagen (1801) ||| Britain continued the war at sea. A [[Second League of Armed Neutrality|coalition of non-combatants]] including Prussia, Russia, Denmark, and Sweden joined to protect neutral shipping from Britain's blockade, resulting in [[Horatio Nelson, 1st Viscount Nelson|Nelson]]'s surprise attack on the Danish fleet in harbor at the [[Battle of Copenhagen (1801)|Battle of Copenhagen]]. ||| The war ||| 1801 ||| +-1 War of the Sixth Coalition ||| Battle of Bautzen ||| The War of the Sixth Coalition included the battles of [[Battle of Lützen (1813)|Lützen]], [[Battle of Bautzen|Bautzen]], [[Battle of Dresden|Dresden]] and the epic [[Battle of Leipzig]] (also known as the Battle of Nations), which was the largest battle in European history before the [[First World War]]. Ultimately, Napoleon's earlier setbacks in Russia and Germany proved to be the seeds of his undoing, and the Allies occupied Paris, forcing his abdication. ||| ||| ||| +-1 War of the Sixth Coalition ||| Battle of Dresden ||| The War of the Sixth Coalition included the battles of [[Battle of Lützen (1813)|Lützen]], [[Battle of Bautzen|Bautzen]], [[Battle of Dresden|Dresden]] and the epic [[Battle of Leipzig]] (also known as the Battle of Nations), which was the largest battle in European history before the [[First World War]]. Ultimately, Napoleon's earlier setbacks in Russia and Germany proved to be the seeds of his undoing, and the Allies occupied Paris, forcing his abdication. ||| ||| ||| +-1 War of the Sixth Coalition ||| Battle of Hanau ||| Napoleon defeated an army of his former ally [[Bavaria]] at the [[Battle of Hanau]] before pulling what was left of his forces back into France. Meanwhile, Davout's corps continued to hold out in its [[siege of Hamburg]], where it became the last Imperial force east of the [[Rhine]]. ||| War in Germany ||| ||| +-1 War of the Sixth Coalition ||| Battle of Kulm ||| Following the end of the armistice Napoleon seemed to have regained the initiative at [[Battle of Dresden|Dresden]], where he defeated a numerically-superior allied army and inflicted enormous casualties, while sustaining relatively few. However at about the same time Oudinot's thrust towards Berlin was beaten back, and the French sustained several defeats in the north at [[Grossbeeren]], [[Katzbach]] and [[Dennewitz]]. Napoleon himself, lacking reliable and numerous cavalry, was unable to fully take advantage of his victory, and could not avoid the destruction of a whole army corps at the [[Battle of Kulm]], further weakening his army. He withdrew with around 175,000 troops to [[Leipzig]] in Saxony where he thought he could fight a defensive action against the Allied armies converging on him. There, at the so-called [[Battle of Nations]] (16–19 October 1813) a French army, ultimately reinforced to 191,000, found itself faced by three Allied armies converging on it, ultimately totalling more than 430,000 troops. Over the following days the battle resulted in a defeat for Napoleon, who however was still able to manage a relatively orderly retreat westwards. However, as the French forces were pulling across the Elster, the bridge was prematurely blown and 30,000 troops were stranded to be taken prisoner by the Allied forces. ||| War in Germany ||| ||| +-1 War of the Sixth Coalition ||| Battle of Leipzig ||| The War of the Sixth Coalition included the battles of [[Battle of Lützen (1813)|Lützen]], [[Battle of Bautzen|Bautzen]], [[Battle of Dresden|Dresden]] and the epic [[Battle of Leipzig]] (also known as the Battle of Nations), which was the largest battle in European history before the [[First World War]]. Ultimately, Napoleon's earlier setbacks in Russia and Germany proved to be the seeds of his undoing, and the Allies occupied Paris, forcing his abdication. ||| ||| ||| +-1 War of the Sixth Coalition ||| Battle of Sehested ||| In December 1813, the Swedish army attacked Danish troops in [[Holstein]]. General [[Anders Skjöldebrand]] defeated the Danes at [[Battle of Bornhöved (1813)|Bornhöved]] on 7 December 1813. Three days later, the Danish Auxiliary Corps scored a victory over the Swedes at [[Battle of Sehested|Sehested]]. However, the Danish victory could not change the course of war. ||| War in Denmark ||| ||| +-1 War of the Spanish Succession ||| Battle of Almenar ||| Other fronts in 1710 produced little, but in Spain the dispute over who would rule in Madrid was finally settled. Due to Louis XIV withdrawing much of his army from Spain, Philip V took to the field bereft of French generals and troops. In contrast, Joseph I at last fully committed himself to the Iberian front, hoping to dispel Tory resentment of his reputed half-hearted prosecution of the war. Thus reinforced, Starhemberg and Stanhope defeated Villadarias and Philip V at the [[Battle of Almenar]] on 27 July 1710, followed by victory against de Bay (Villadarias' replacement) at the [[Battle of Saragossa]] on 20 August. The Allies had regained control of Aragon, and at the end of September Charles III entered Madrid, albeit to a hostile reception. With Barcelona, Madrid, and Saragossa in Allied hands Philip V's position looked precarious, but again they failed to secure the backing of the Spanish people; moreover, with the collapse of the Geertruidenberg talks Louis XIV could return to support his grandson. ||| War, politics and diplomacy ||| Campaigns: 1709–14 ||| Grand Alliance falters +-1 War of the Spanish Succession ||| Battle of Cassano (1705) ||| On 16 August 1705, Vendôme defeated Eugene at the [[Battle of Cassano (1705)|Battle of Cassano]] on the Adda. On 19 April 1706, the French commander defeated Count [[Christian Detlev Reventlow|Reventlow]] at the [[Battle of Calcinato]], and drove the Austrians back into the mountains around [[Lake Garda]]; shortly after, La Feuillade began the siege of Turin. The French victories had prevented the Austrians marching to aid Savoy, but as in the Spanish Netherlands the year would prove decisive for the Grand Alliance. By mid-May Eugene's army, newly reinforced with German auxiliaries (secured by Marlborough and financed by the Maritime Powers), had grown to 50,000 men. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Italy +-1 War of the Spanish Succession ||| Battle of Friedlingen ||| Meanwhile, Prince [[Louis William, Margrave of Baden-Baden|Louis of Baden]], the Imperial commander-in-chief, had stood guard on the [[Upper Rhine]], and on 9 September 1702 he [[Siege of Landau (1702)|captured Landau]], the key to Alsace. However, in the opening years of the war it was the French who gained the upper hand in southern Germany. On 14 October [[Claude Louis Hector de Villars|Claude de Villars]] narrowly defeated Baden in the [[Black Forest]] at the [[Battle of Friedlingen]], thereby opening up communications between the French on the Rhine and the Bavarians on the Upper Danube. The Elector of Bavaria's support for the Bourbon cause was a grave concern to the Emperor, but for the French it created new opportunities: it undermined the Allied position in southern Germany, and it facilitated a potential strike towards Vienna or across the Alps into northern Italy. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Low Countries, Rhine and Danube +-1 War of the Spanish Succession ||| Battle of La Gudina ||| The Allies were now lodged in the northern French provinces depriving Louis XIV of vital resources, but Villars' resistance had provided a boost to French morale. There was also French success in Spain in 1709: Alicante's citadel fell in April, and on 7 May the Marquis of Bay defeated [[Fernando Mascarenhas, 2nd Marquis of Fronteira|Fronteira]] and Galway at the [[Battle of La Gudina]] on the Portuguese border. However, Louis XIV's greatest advantage lay in his enemy's political disunity, exacerbated as it was by the appalling Allied losses at Malplaquet (particularly the Dutch) and the strategic indecisiveness of the battle. The Tories – whose Land Tax was funding the war – sought to make political gain by demonstrating that the Whigs and their friends at the Bank of England were benefiting from the ongoing conflict to the detriment of their compatriots. ||| War, politics and diplomacy ||| Campaigns: 1709–14 ||| Grand Alliance falters +-1 War of the Spanish Succession ||| Battle of Luzzara ||| In 1702 the war in northern Italy was in its second year. After Austria's initial success Louis XIV sent Marshal Vendôme to command the Bourbon army, and with greatly superior numbers he began to dominate and pin back his opponent. Although Prince Eugene held the French at the [[Battle of Luzzara]] on 15 August, the Austrians had lost much of what they gained in the first campaign, and the Bourbons were still firmly in control of the Duchy of Milan. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Italy +-1 War of the Spanish Succession ||| Battle of Malplaquet ||| Believing that Louis XIV was only stalling for time in order to recuperate his army, the ministry in London prepared to act vigorously on all fronts in 1709, hoping to draw the French back to the negotiating table. Central to both sides was the situation in Flanders. Here, Villars replaced Vendôme as commander of the French army and set about building a new defensive line from Aire to Douai (the Lines of Cambrin, or la Bassée, later extended) to block the line of advance from Lille to Paris. Due to the harshness of the previous winter and the scarcity of stores and provisions, Marlborough had initially recoiled from a full-scale invasion of France in preference to a conservative policy of siege warfare. The Allies [[Siege of Tournai (1709)|invested Tournai]] in July (the citadel did not fall till 3 September), before moving to attack Mons. Given a free hand from Louis XIV to save the city Villars, commanding perhaps 75,000 men, entrenched his army centred around the tiny village of Malplaquet. Confident that one last set-piece battle would result in the final destruction of the main French army and force Louis XIV to accept peace on Allied terms, Marlborough and Eugene, leading some 86,000 men, accepted the challenge and attacked the French position on 11 September. The [[Battle of Malplaquet]] was a victory for the Allies, but a stern French defence and faults in the execution of the battle-plan prevented them from winning a decisive victory. Although Mons subsequently fell in October, Villars and his co-commander Boufflers, had kept the French army intact. ||| War, politics and diplomacy ||| Campaigns: 1709–14 ||| Grand Alliance falters +-1 War of the Spanish Succession ||| Battle of Saragossa ||| Other fronts in 1710 produced little, but in Spain the dispute over who would rule in Madrid was finally settled. Due to Louis XIV withdrawing much of his army from Spain, Philip V took to the field bereft of French generals and troops. In contrast, Joseph I at last fully committed himself to the Iberian front, hoping to dispel Tory resentment of his reputed half-hearted prosecution of the war. Thus reinforced, Starhemberg and Stanhope defeated Villadarias and Philip V at the [[Battle of Almenar]] on 27 July 1710, followed by victory against de Bay (Villadarias' replacement) at the [[Battle of Saragossa]] on 20 August. The Allies had regained control of Aragon, and at the end of September Charles III entered Madrid, albeit to a hostile reception. With Barcelona, Madrid, and Saragossa in Allied hands Philip V's position looked precarious, but again they failed to secure the backing of the Spanish people; moreover, with the collapse of the Geertruidenberg talks Louis XIV could return to support his grandson. ||| War, politics and diplomacy ||| Campaigns: 1709–14 ||| Grand Alliance falters +-1 War of the Spanish Succession ||| Battle of Toulon (1707) ||| By taking the Duchy of Milan and securing the Spanish realms in Italy, the Austrian Habsburgs had fulfilled their major war objective. Nevertheless, the Neapolitan campaign had been undertaken in the face of opposition from the Maritime Powers, who instead had favoured a diversionary attack on southern France. To assuage his allies Eugene, together with the Duke of Savoy, agreed to [[Battle of Toulon (1707)|attack Toulon]] in July 1707, but the attempt proved ineffectual and Marshal Tessé thwarted all attacks. The Allies withdrew in August, though not before acquiring some advantage: the French squadron in the harbour had been permanently put out of action during the battle, leaving the Anglo-Dutch fleet uncontested in the Mediterranean. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Italy +-1 War of the Spanish Succession ||| Siege of Barcelona (1705) ||| The internal divisions in the Crown of Aragon prepared the way for early Allied victories in the region in 1705, culminating with Peterborough [[Siege of Barcelona (1705)|taking Barcelona]] on 9 October, and [[Juan Bautista Basset y Ramos]] capturing the city of Valencia on 16 December. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Spain and Portugal +-1 War of the Spanish Succession ||| Siege of Bouchain ||| The campaign in North America did nothing to shake the common Whig belief that America was to be won by defeating France in Europe. However, the failure at Quebec was somewhat compensated by Marlborough's final victory in the field. Anne's Captain-General no longer had the influence he enjoyed under the Godolphin ministry: his wife's relationship with the Queen had ended acrimoniously and he was now under the influence of Harley, now the Earl of Oxford and Lord High Treasurer. Nevertheless, Marlborough still commanded the Anglo-Dutch forces in northern France, and in August he outmanoeuvred Villars and crossed the formidable ''Ne Plus Ultra'' lines, before [[Siege of Bouchain|capturing Bouchain]] on 12 September. The campaign was not decisive, however. [[Arras]], [[Cambrai]], [[Le Quesnoy]], and [[Landrecies]] still stood between the Duke and Paris, and it would take at least one more campaign to secure their capitulation. ||| War, politics and diplomacy ||| Campaigns: 1709–14 ||| Preliminary peace talks +-1 War of the Spanish Succession ||| Siege of Landau (1702) ||| Meanwhile, Prince [[Louis William, Margrave of Baden-Baden|Louis of Baden]], the Imperial commander-in-chief, had stood guard on the [[Upper Rhine]], and on 9 September 1702 he [[Siege of Landau (1702)|captured Landau]], the key to Alsace. However, in the opening years of the war it was the French who gained the upper hand in southern Germany. On 14 October [[Claude Louis Hector de Villars|Claude de Villars]] narrowly defeated Baden in the [[Black Forest]] at the [[Battle of Friedlingen]], thereby opening up communications between the French on the Rhine and the Bavarians on the Upper Danube. The Elector of Bavaria's support for the Bourbon cause was a grave concern to the Emperor, but for the French it created new opportunities: it undermined the Allied position in southern Germany, and it facilitated a potential strike towards Vienna or across the Alps into northern Italy. ||| War, politics and diplomacy ||| Campaigns: 1702–08 ||| Low Countries, Rhine and Danube +-1 War of the Third Coalition ||| Siege of Gaeta (1806) ||| Ferdinand had hoped for a repeat of the events of 1799, when a popular uprising in Calabria eventually caused the downfall of the [[Parthenopaean Republic]], a French client state created after the Neapolitans were defeated the first time during the [[War of the Second Coalition]]. However, no such rebellion initially occurred and on 3 March, General [[Jean Reynier]], who commanded the 10,000 strong II Corps of the Army of Naples invaded Calabria. Only a few Calabrians resisted the invading French force and the Royal Neapolitan Army was soundly defeated at the [[Battle of Campo Tenese]] on 10 March 1806. Ferdinand now had no choice but to concede the Neapolitan throne to the French. A day after Campo Tenese, Joseph was installed as the new King of Naples. By now, the last regular troops of the Neapolitan army had fled to Sicily and the French controlled the entire Italian mainland except for the fortress of Gaeta, which had been [[Siege of Gaeta (1806)|under siege]] since 26 February. ||| Italian Campaign ||| Invasion of Naples ||| +-1 War of the Third Coalition ||| Ulm Campaign ||| The Third Coalition itself came to full fruition in 1804–05 as Napoleon's provocative actions in Italy (crowning himself with the [[Iron Crown of Lombardy]]) and Germany (notably the arrest and execution of the [[Louis Antoine, Duke of Enghien|Duc d'Enghien]]) spurred Austria and Russia into joining Britain against France. The war would be decided on the continent, and the major land operations that sealed the swift French victory involved the [[Ulm Campaign]], a large wheeling manoeuvre by the [[Grande Armée]] lasting from late August to mid-October 1805 that captured an entire Austrian army, and the decisive French victory over a combined Russo-Austrian force under [[Alexander I of Russia|Tsar Alexander I]] at the [[Battle of Austerlitz]] in early December. Austerlitz effectively brought the Third Coalition to an end, although later there was a small side campaign against [[Kingdom of Naples|Naples]], which also resulted in a decisive French victory at the [[Battle of Campo Tenese]]. ||| ||| ||| +-1 War on Terror ||| Battle of Najaf (2004) ||| In 2004, the insurgent forces grew stronger. The U.S. conducted attacks on insurgent strongholds in cities like [[Battle of Najaf (2004)|Najaf]] and [[Second Battle of Fallujah|Fallujah]]. ||| U.S. and NATO-led military operations ||| Iraq ||| Operation Iraqi Freedom +-1 War on Terror ||| Operation Enduring Freedom ||| :*According to Marc W. Herold's extensive database, between 3,100 and 3,600 civilians were directly killed by U.S. [[Operation Enduring Freedom]] bombing and Special Forces attacks between 7 October 2001 and 3 June 2003. This estimate counts only 'impact deaths'—deaths that occurred in the immediate aftermath of an explosion or shooting—and does not count deaths that occurred later as a result of injuries sustained, or deaths that occurred as an indirect consequence of the U.S. airstrikes and invasion. ||| Casualties ||| ||| +-1 War on Terror ||| Operation Serval ||| The [[Northern Mali conflict (2012–present)|conflict in northern Mali]] began in January 2012 with radical Islamists (affiliated to al-Qaeda) advancing into northern Mali. The Malian government had a hard time maintaining full control over their country. The fledgling government requested support from the international community on combating the Islamic militants. In January 2013, France intervened on behalf of the Malian government's request and deployed troops into the region. They launched [[Operation Serval]] on 11 January 2013, with the hopes of dislodging the al-Qaeda affiliated groups from northern Mali. ||| U.S. and NATO-led military operations ||| Operation Enduring Freedom ||| Operation Enduring Freedom – Trans Sahara +-1 War on Terror ||| Second Battle of Fallujah ||| In 2004, the insurgent forces grew stronger. The U.S. conducted attacks on insurgent strongholds in cities like [[Battle of Najaf (2004)|Najaf]] and [[Second Battle of Fallujah|Fallujah]]. ||| U.S. and NATO-led military operations ||| Iraq ||| Operation Iraqi Freedom +-1 Wars of the Roses ||| Battle of Barnet ||| After Lancastrian revolts in the north were suppressed in 1464 and Henry was captured once again, Edward fell out with his chief supporter and advisor, the Earl of Warwick (known as the 'Kingmaker'), and also alienated many friends and even family members by favouring the family of his queen, [[Elizabeth Woodville]], whom he had married in secret. Warwick tried first to supplant Edward with his younger brother [[George, Duke of Clarence]], and then to restore Henry VI to the throne. This resulted in two years of rapid changes of fortune, before Edward IV once again won complete victories at [[Battle of Barnet|Barnet]] (April 1471), where Warwick was killed, and [[Battle of Tewkesbury|Tewkesbury]] (May 1471) where the Lancastrian heir, [[Edward of Westminster, Prince of Wales|Edward, Prince of Wales]], was executed after the battle. Henry was murdered in the [[Tower of London]] several days later, ending the direct Lancastrian line of succession. ||| Summary of events ||| ||| +-1 Wars of the Roses ||| Battle of Blore Heath ||| York summoned the Nevilles to join him at his stronghold at [[Ludlow Castle]] in the Welsh Marches. On 23 September 1459, at the [[Battle of Blore Heath]] in Staffordshire, a Lancastrian army failed to prevent Salisbury from marching from [[Middleham Castle]] in Yorkshire to Ludlow. Shortly afterwards the combined Yorkist armies confronted the much larger Lancastrian force at the [[Battle of Ludford Bridge]]. Warwick's contingent from the garrison of [[Calais]] under [[Andrew Trollope]] defected to the Lancastrians, and the Yorkist leaders fled. York returned to Ireland, and his eldest son, [[Edward IV of England|Edward, Earl of March]], Salisbury and Warwick fled to Calais. ||| Act of Accord ||| ||| +-1 Wars of the Roses ||| Battle of Bosworth Field ||| The final victory went to a claimant of the Lancastrian party, Henry Tudor, who defeated the last Yorkist king, [[Richard III of England|Richard III]], at the [[Battle of Bosworth Field]]. After assuming the throne as [[Henry VII of England|Henry VII]], he married [[Elizabeth of York]], the eldest daughter and heiress of [[Edward IV of England|Edward IV]], thereby uniting the two claims. The [[House of Tudor]] ruled [[England and Wales]] until 1603. ||| ||| ||| +-1 Wars of the Roses ||| Battle of Hexham ||| There were Lancastrian revolts in the north of England in 1464. Several Lancastrian nobles, including the third [[Henry Beaufort, 3rd Duke of Somerset|Duke of Somerset]], who had apparently been reconciled to Edward, readily led the rebellion. The revolt was put down by Warwick's brother, [[John Neville, 1st Marquess of Montagu|John Neville]]. A small Lancastrian army was destroyed at the [[Battle of Hedgeley Moor]] on 25 April, but because Neville was escorting Scottish commissioners for a treaty to York, he could not immediately follow up this victory. Then on 15 May, he routed Somerset's army at the [[Battle of Hexham]]. Somerset was captured and executed. ||| Edward IV ||| ||| +-1 Wars of the Roses ||| Battle of Losecoat Field ||| When further rebellions broke out in [[Lincolnshire]], Edward easily suppressed them at the [[Battle of Losecoat Field]]. From the testimony of the captured leaders, he declared that Warwick and George, Duke of Clarence had instigated them. They were declared traitors and forced to flee to France, where Margaret of Anjou was already in exile. [[Louis XI of France]], who wished to forestall a hostile alliance between Edward and Edward's brother-in-law [[Charles the Bold]], [[Duke of Burgundy]], suggested the idea of an alliance between Warwick and Margaret. Neither of those two formerly mortal enemies entertained the notion at first, but eventually they were brought round to realise the potential benefits. However, both were undoubtedly hoping for different outcomes: Warwick for a puppet king in the form of Henry VI or his young son; Margaret to be able to reclaim her family's realm. In any case, a marriage was arranged between Warwick's daughter Anne and Margaret's son Edward of Westminster, and Warwick invaded England in the autumn of 1470. ||| Warwick's rebellion and the death of Henry VI ||| ||| +-1 Wars of the Roses ||| Battle of Ludford Bridge ||| York summoned the Nevilles to join him at his stronghold at [[Ludlow Castle]] in the Welsh Marches. On 23 September 1459, at the [[Battle of Blore Heath]] in Staffordshire, a Lancastrian army failed to prevent Salisbury from marching from [[Middleham Castle]] in Yorkshire to Ludlow. Shortly afterwards the combined Yorkist armies confronted the much larger Lancastrian force at the [[Battle of Ludford Bridge]]. Warwick's contingent from the garrison of [[Calais]] under [[Andrew Trollope]] defected to the Lancastrians, and the Yorkist leaders fled. York returned to Ireland, and his eldest son, [[Edward IV of England|Edward, Earl of March]], Salisbury and Warwick fled to Calais. ||| Act of Accord ||| ||| +-1 Wars of the Roses ||| Battle of Tewkesbury ||| After Lancastrian revolts in the north were suppressed in 1464 and Henry was captured once again, Edward fell out with his chief supporter and advisor, the Earl of Warwick (known as the 'Kingmaker'), and also alienated many friends and even family members by favouring the family of his queen, [[Elizabeth Woodville]], whom he had married in secret. Warwick tried first to supplant Edward with his younger brother [[George, Duke of Clarence]], and then to restore Henry VI to the throne. This resulted in two years of rapid changes of fortune, before Edward IV once again won complete victories at [[Battle of Barnet|Barnet]] (April 1471), where Warwick was killed, and [[Battle of Tewkesbury|Tewkesbury]] (May 1471) where the Lancastrian heir, [[Edward of Westminster, Prince of Wales|Edward, Prince of Wales]], was executed after the battle. Henry was murdered in the [[Tower of London]] several days later, ending the direct Lancastrian line of succession. ||| Summary of events ||| ||| +-1 Wars of the Roses ||| Battle of Towton ||| York returned to the country and became Protector of England, but was dissuaded from claiming the throne. Margaret and the irreconcilable Lancastrian nobles gathered their army in the north of England, and when York moved north to suppress them, he and his second son Edmund were killed at the [[Battle of Wakefield]] in December 1460. The Lancastrian army advanced south and released Henry at the [[Second Battle of St Albans]], but failed to occupy London, and subsequently retreated to the north. York's eldest son, Edward, Earl of March, was proclaimed [[Edward IV of England|King Edward IV]]. He gathered the Yorkist armies and won a crushing victory at the [[Battle of Towton]] in March 1461. ||| Summary of events ||| ||| +-1 Wars of the Roses ||| Battle of Wakefield ||| York returned to the country and became Protector of England, but was dissuaded from claiming the throne. Margaret and the irreconcilable Lancastrian nobles gathered their army in the north of England, and when York moved north to suppress them, he and his second son Edmund were killed at the [[Battle of Wakefield]] in December 1460. The Lancastrian army advanced south and released Henry at the [[Second Battle of St Albans]], but failed to occupy London, and subsequently retreated to the north. York's eldest son, Edward, Earl of March, was proclaimed [[Edward IV of England|King Edward IV]]. He gathered the Yorkist armies and won a crushing victory at the [[Battle of Towton]] in March 1461. ||| Summary of events ||| ||| +-1 Wars of the Three Kingdoms ||| Cromwellian conquest of Ireland ||| The wars included the [[Bishops' Wars]] of 1639 and 1640, the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] of 1644–45; the [[Irish Rebellion of 1641]], [[Confederate Ireland]], 1642–49 and the [[Cromwellian conquest of Ireland]] in 1649 (collectively the Eleven Years War or [[Irish Confederate Wars]]); and the [[First English Civil War|First]], [[Second English Civil War|Second]] and [[Third English Civil War|Third]] [[English Civil Wars]] of 1642–46, 1648–49 and 1650–51. ||| ||| ||| +-1 Wars of the Three Kingdoms ||| English Civil War ||| The '''Wars of the Three Kingdoms''' formed an intertwined series of conflicts that took place in [[Kingdom of England|England]], [[Kingdom of Ireland|Ireland]] and [[Kingdom of Scotland|Scotland]] between 1639 and 1651. The [[English Civil War]] has become the best-known of these conflicts and included the execution of the kingdoms' monarch, [[Charles I of England|Charles I]], by the English parliament in 1649. ||| ||| ||| +-1 Wars of the Three Kingdoms ||| First English Civil War ||| The wars included the [[Bishops' Wars]] of 1639 and 1640, the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] of 1644–45; the [[Irish Rebellion of 1641]], [[Confederate Ireland]], 1642–49 and the [[Cromwellian conquest of Ireland]] in 1649 (collectively the Eleven Years War or [[Irish Confederate Wars]]); and the [[First English Civil War|First]], [[Second English Civil War|Second]] and [[Third English Civil War|Third]] [[English Civil Wars]] of 1642–46, 1648–49 and 1650–51. ||| ||| ||| +-1 Wars of the Three Kingdoms ||| Irish Confederate Wars ||| The wars included the [[Bishops' Wars]] of 1639 and 1640, the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] of 1644–45; the [[Irish Rebellion of 1641]], [[Confederate Ireland]], 1642–49 and the [[Cromwellian conquest of Ireland]] in 1649 (collectively the Eleven Years War or [[Irish Confederate Wars]]); and the [[First English Civil War|First]], [[Second English Civil War|Second]] and [[Third English Civil War|Third]] [[English Civil Wars]] of 1642–46, 1648–49 and 1650–51. ||| ||| ||| +-1 Wars of the Three Kingdoms ||| Second English Civil War ||| The wars included the [[Bishops' Wars]] of 1639 and 1640, the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] of 1644–45; the [[Irish Rebellion of 1641]], [[Confederate Ireland]], 1642–49 and the [[Cromwellian conquest of Ireland]] in 1649 (collectively the Eleven Years War or [[Irish Confederate Wars]]); and the [[First English Civil War|First]], [[Second English Civil War|Second]] and [[Third English Civil War|Third]] [[English Civil Wars]] of 1642–46, 1648–49 and 1650–51. ||| ||| ||| +-1 Waterloo Campaign ||| Battle of Waterloo ||| The '''Waterloo Campaign''' (15 June – 8 July 1815) was fought between the French [[Army of the North (France)|Army of the North]] and two Seventh Coalition armies, an Anglo-allied army and a Prussian army. Initially the French army was commanded by [[Napoleon Bonaparte]], but he left for Paris after the French defeat at the [[Battle of Waterloo]]. Command then rested on Marshals [[Marshal Soult|Soult]] and [[Marshal Grouchy|Grouchy]], who were in turn replaced by [[Marshal Davout]], who took command at the request of the French Provisional Government. The Anglo-Allied army was commanded by the [[Duke of Wellington]] and the Prussian army by [[Gebhard Leberecht von Blücher|Prince Blücher]]. ||| ||| ||| +-1 West Indies anti-piracy operations of the United States ||| Action of 9 November 1822 ||| The United States Navy could not pursue the pirates on Spanish soil either so in April 1822, Commodore [[David Porter (naval officer)|David Porter]], in USS ''Macedonian'', assumed command of the station and one of his first missions was to consult with [[Governor]] [[Captain General]] [[Don (honorific)|Don]] [[Nicholas Mahy]] of Cuba and the governor of Puerto Rico. Both governors denied Porter's request to allow American shore parties to land but at the same time the United States government permitted the West Indies Squadron to do so but only in remote areas. Commodore Porter then [[Battle of Funda Bay|attacked]] and destroyed a pirate force at [[Funda Bay]], Cuba between September 28 and 30, 1822. Also on September 28, the ''Peacock'' captured a boat filled with pirates about sixty miles from [[Havana]], and later that afternoon, USS ''Peacock'' encountered the merchant vessel ''Speedwell'' which had been attacked by pirates two hours before. In response, Captain [[Stephen Cassin]] launched a boat expedition which captured four schooners but again most of the pirates escaped. On September 30, 1822, the twenty-six gun {{HMS|Tyne}} was escorting a one-gun merchant sloop ''Eliza'' when attacked by a five gun pirate felucca named ''Firme Union''. During the [[Action of 30 September 1822|engagement]] that ensued, the British boarded and captured the pirate ship. Ten pirates were killed and the rest abandoned ship and escaped. On November 2, 1822, {{USRC|Louisiana|1819|6}} along with USS ''Peacock'' and the Royal Navy schooner {{HMS|Speedwell|1815|6}} captured five pirate vessels off Havana. On November 8, 1822, Lieutenant [[William Howard Allen]] of USS ''Alligator'' was killed in battle while leading an attack against three enemy schooners which were holding five merchantmen hostage. In the [[Action of 9 November 1822|action]], two of the schooners were captured and at least fourteen pirates were killed. Due to Lieutenant Allen's death, [[United States Secretary of the Navy|Secretary of the Navy]] [[Smith Thompson]] authorized Commodore Porter to procure new vessels for the squadron. ||| Operations ||| 1822&ndash;1823 ||| +-1 West Virginia coal wars ||| Battle of Blair Mountain ||| On May 19, 1920, a [[Matewan Massacre|shootout in Matewan, West Virginia]], between agents of the [[Baldwin-Felts Detective Agency|Baldwin-Felts]] and local miners, who later joined the [[United Mine Workers of America]], sparked what became known as the [[Battle of Blair Mountain]], the largest insurrection in the United States since the [[American Civil War]]. ||| ||| ||| +-1 Western Desert Campaign ||| Battle of Gazala ||| In the Spring of 1941 Axis forces under Rommel pushed the British-led allied forces back and reached [[Tobruk]] which [[Siege of Tobruk|was besieged]]. The allied force there held out and were relieved during [[Operation Crusader]], who then pushed the Axis forces back to where they had started by the end of the year. In 1942 Axis forces drove the Allies back [[Battle of Gazala|capturing Tobruk]] but failed to gain a decisive victory. On the final Axis push to Egypt the Allies retreated to El Alamein, where at the [[Second Battle of El Alamein]] the Eighth Army defeated the Axis forces, which never recovered and were driven out of Libya to [[Tunisia]], where they were defeated in the [[Tunisia Campaign]]. After the British defeats in the [[Balkan Campaign (World War II)|Balkan Campaign]], the Western Desert Campaign had become more important to British strategy. For [[Adolf Hitler]] the [[Eastern Front (World War II)|Eastern Front]] dwarfed the desert war, which was a holding action of secondary importance. The Axis never had sufficient resources or the means to deliver them to defeat the British, who in their turn missed several opportunities to finish the campaign, by diverting resources to Greece and the Levant in 1941 and the Far East in 1942. ||| ||| ||| +-1 Western Desert Campaign ||| Operation Compass ||| The '''Western Desert Campaign''' or the '''Desert War''', took place in the [[Libyan Desert|Western Desert]] of Egypt and Libya and was a theatre in the [[North African Campaign]] during the [[World War II|Second World War]]. The campaign began in September 1940, with the [[Italian invasion of Egypt]]. The Italians halted to bring up supplies, and [[Operation Compass]], a British five-day raid in December 1940, led to the destruction of the Italian [[Tenth Army (Italy)|10th Army]]. [[Benito Mussolini]] sought help from Hitler and a small German blocking detachment {{lang|de|(''Sperrverband'')}} was sent to Tripoli under [[List of Adolf Hitler's directives|Directive 22]] (11 January), being the first units of the ''[[Afrika Korps]]'' (''Generalleutnant'' [[Erwin Rommel]]), under nominal Italian command but Italian dependency on [[Nazi Germany]] made it the dominant partner. ||| ||| ||| +-1 Western Desert Campaign ||| Operation Crusader ||| In the Spring of 1941 Axis forces under Rommel pushed the British-led allied forces back and reached [[Tobruk]] which [[Siege of Tobruk|was besieged]]. The allied force there held out and were relieved during [[Operation Crusader]], who then pushed the Axis forces back to where they had started by the end of the year. In 1942 Axis forces drove the Allies back [[Battle of Gazala|capturing Tobruk]] but failed to gain a decisive victory. On the final Axis push to Egypt the Allies retreated to El Alamein, where at the [[Second Battle of El Alamein]] the Eighth Army defeated the Axis forces, which never recovered and were driven out of Libya to [[Tunisia]], where they were defeated in the [[Tunisia Campaign]]. After the British defeats in the [[Balkan Campaign (World War II)|Balkan Campaign]], the Western Desert Campaign had become more important to British strategy. For [[Adolf Hitler]] the [[Eastern Front (World War II)|Eastern Front]] dwarfed the desert war, which was a holding action of secondary importance. The Axis never had sufficient resources or the means to deliver them to defeat the British, who in their turn missed several opportunities to finish the campaign, by diverting resources to Greece and the Levant in 1941 and the Far East in 1942. ||| ||| ||| +-1 Western Desert Campaign ||| Second Battle of El Alamein ||| In the Spring of 1941 Axis forces under Rommel pushed the British-led allied forces back and reached [[Tobruk]] which [[Siege of Tobruk|was besieged]]. The allied force there held out and were relieved during [[Operation Crusader]], who then pushed the Axis forces back to where they had started by the end of the year. In 1942 Axis forces drove the Allies back [[Battle of Gazala|capturing Tobruk]] but failed to gain a decisive victory. On the final Axis push to Egypt the Allies retreated to El Alamein, where at the [[Second Battle of El Alamein]] the Eighth Army defeated the Axis forces, which never recovered and were driven out of Libya to [[Tunisia]], where they were defeated in the [[Tunisia Campaign]]. After the British defeats in the [[Balkan Campaign (World War II)|Balkan Campaign]], the Western Desert Campaign had become more important to British strategy. For [[Adolf Hitler]] the [[Eastern Front (World War II)|Eastern Front]] dwarfed the desert war, which was a holding action of secondary importance. The Axis never had sufficient resources or the means to deliver them to defeat the British, who in their turn missed several opportunities to finish the campaign, by diverting resources to Greece and the Levant in 1941 and the Far East in 1942. ||| ||| ||| +-1 Western Desert Campaign ||| Siege of Giarabub ||| On 11 June 1940, hostilities commenced and the British were ordered to dominate the frontier and isolate [[Siege of Giarabub|Giarabub]]. The British crossed into Libya that night, exchanged fire with Italian troops at Sidi Omar and discovered that some Italians were unaware that war had been declared. On 14 June, the British captured [[Fort Capuzzo]] and Fort Maddalena, taking {{nowrap|220 prisoners.}} Two days later, the British raided a convoy on the [[Tobruk]]–[[Bardia]] road, killed {{nowrap|21 Italian}} troops and took {{nowrap|88 prisoners,}} including {{lang|it|''Generale di Brigata''}} Romolo Lastrucci, the 10th Army Chief Engineer. At an engagement near the frontier wire at Nezuet Ghirba, an Italian force of {{nowrap|17 light tanks,}} four guns and {{nowrap|400 infantry}} was defeated by a mixed force of British tanks, artillery and motorised infantry. ||| 1940 ||| Frontier skirmishes ||| +-1 Western Front (World War I) ||| Battle of Amiens (1918) ||| In July, Foch initiated a [[Second Battle of the Marne|counter-offensive]] against the Marne salient produced during the German attacks, eliminating the salient by August. A [[Battle of Amiens (1918)|second major offensive]] was launched two days after the first, ending at [[Amiens]] to the north. This attack included Franco-British forces, and was spearheaded by Australian and Canadian troops,{{sfn|Ekins|2010|p=24}} along with 600 tanks and supported by 800 aircraft. The assault proved highly successful, leading Hindenburg to name 8 August as the 'Black Day of the German Army'.{{sfn|Griffiths|1986|pp=155–156}} The Italian 2nd Army Corps, commanded by general [[Alberico Albricci]], also participated in the operations around Reims. ||| 1918—Final offensives ||| Final allied counter-offensives ||| +-1 Western Front (World War I) ||| Battle of Arras (1917) ||| By 1916–17, the size of the British Army on the Western Front had grown to two-thirds the total numbers in the French forces.{{sfn|Kennedy|1989|pp=265–6}} In April 1917 the British Empire forces launched an attack starting the [[Battle of Arras (1917)|Battle of Arras]]. The [[Canadian Corps]] and the [[5th Infantry Division (United Kingdom)|British 5th Division]], attacked German lines at [[Battle of Vimy Ridge|Vimy Ridge]], capturing the heights. However, the rest of the offensive was halted with heavy losses. The Allied attack ended with the refusal to provide reinforcements to the region. ||| 1917—British offensives ||| ||| +-1 Western Front (World War I) ||| Battle of Passchendaele ||| Between 1915 and 1917 there were several major offensives along this [[Front (military)|front]]. The attacks employed massive [[artillery]] bombardments and massed [[infantry]] advances. However, a combination of entrenchments, machine gun nests, [[barbed wire]], and [[artillery]] repeatedly inflicted severe casualties on the attackers and counter-attacking defenders. As a result, no significant advances were made. Among the most costly of these offensives were the [[Battle of Verdun]], in 1916, with a combined 700,000 casualties (estimated), the [[Battle of the Somme]], also in 1916, with more than a million casualties (estimated), and the [[Battle of Passchendaele]], in 1917, with roughly 600,000 casualties (estimated). ||| ||| ||| +-1 Western Front (World War I) ||| Battle of Verdun ||| Between 1915 and 1917 there were several major offensives along this [[Front (military)|front]]. The attacks employed massive [[artillery]] bombardments and massed [[infantry]] advances. However, a combination of entrenchments, machine gun nests, [[barbed wire]], and [[artillery]] repeatedly inflicted severe casualties on the attackers and counter-attacking defenders. As a result, no significant advances were made. Among the most costly of these offensives were the [[Battle of Verdun]], in 1916, with a combined 700,000 casualties (estimated), the [[Battle of the Somme]], also in 1916, with more than a million casualties (estimated), and the [[Battle of Passchendaele]], in 1917, with roughly 600,000 casualties (estimated). ||| ||| ||| +-1 Western Front (World War I) ||| Battle of Vimy Ridge ||| By 1916–17, the size of the British Army on the Western Front had grown to two-thirds the total numbers in the French forces.{{sfn|Kennedy|1989|pp=265–6}} In April 1917 the British Empire forces launched an attack starting the [[Battle of Arras (1917)|Battle of Arras]]. The [[Canadian Corps]] and the [[5th Infantry Division (United Kingdom)|British 5th Division]], attacked German lines at [[Battle of Vimy Ridge|Vimy Ridge]], capturing the heights. However, the rest of the offensive was halted with heavy losses. The Allied attack ended with the refusal to provide reinforcements to the region. ||| 1917—British offensives ||| ||| +-1 Western Front (World War I) ||| Battle of the Yser ||| On the [[Allies of World War I|Entente side]], the final lines were occupied by the armies of the Allied countries, with each nation defending a part of the front. From the coast in the north, the primary forces were from Belgium, the British Empire and France. Following the [[Battle of the Yser]] in October, the Belgian forces controlled a 35 km length of Belgium's [[Flanders]] territory along the coast, known as the [[Yser Front]], along the [[Yser]] river and the Yperlee canal, from [[Nieuwpoort, Belgium|Nieuwpoort]] to [[Boezinge|Boesinghe]].{{sfn|Barton|Doyle|Vandewalle|2005|p=17}} Stationed to the south was the sector of the British Expeditionary Force (BEF). Here, from 19 October until 22 November, the German forces made their final breakthrough attempt of 1914 during the [[First Battle of Ypres]]. Heavy casualties were suffered on both sides but no breakthrough occurred. {{cite web ||| 1914—German invasion of France and Belgium ||| ||| +-1 Western Front (World War I) ||| First Battle of Ypres ||| On the [[Allies of World War I|Entente side]], the final lines were occupied by the armies of the Allied countries, with each nation defending a part of the front. From the coast in the north, the primary forces were from Belgium, the British Empire and France. Following the [[Battle of the Yser]] in October, the Belgian forces controlled a 35 km length of Belgium's [[Flanders]] territory along the coast, known as the [[Yser Front]], along the [[Yser]] river and the Yperlee canal, from [[Nieuwpoort, Belgium|Nieuwpoort]] to [[Boezinge|Boesinghe]].{{sfn|Barton|Doyle|Vandewalle|2005|p=17}} Stationed to the south was the sector of the British Expeditionary Force (BEF). Here, from 19 October until 22 November, the German forces made their final breakthrough attempt of 1914 during the [[First Battle of Ypres]]. Heavy casualties were suffered on both sides but no breakthrough occurred. {{cite web ||| 1914—German invasion of France and Belgium ||| ||| +-1 Western Front (World War I) ||| Hundred Days Offensive ||| |[[Hundred Days Offensive]] ||| Consequences ||| ||| +-1 Western Front (World War I) ||| Nivelle Offensive ||| The same month, French General [[Robert Nivelle]] ordered a new offensive against the German trenches, promising that it would end the war within 48 hours. The 16 April attack, dubbed the [[Nivelle Offensive]] (also known as [[Chemin des Dames]], after the area where the offensive took place), would be 1.2 million men strong, to be preceded by a week-long artillery bombardment and accompanied by tanks. However, the operation proceeded poorly as the French troops, with the help of two [[Russian Expeditionary Force in France|Russian brigades]],{{sfn|Cockfield|1999|pp=91–114}} had to negotiate rough, upward-sloping terrain. In addition, detailed planning had been dislocated by the voluntary German withdrawal to the Hindenburg Line, secrecy had been compromised, and German planes gained control of the sky making reconnaissance difficult. This allowed the creeping barrage to move too far ahead of the advancing troops. Within a week 100,000 French troops were dead. Despite the heavy casualties and his promise to halt the offensive if it did not produce a breakthrough, Nivelle ordered the attack continued into May. ||| 1917—British offensives ||| French mutinies ||| +-1 Western Front (World War I) ||| Second Battle of the Marne ||| In July, Foch initiated a [[Second Battle of the Marne|counter-offensive]] against the Marne salient produced during the German attacks, eliminating the salient by August. A [[Battle of Amiens (1918)|second major offensive]] was launched two days after the first, ending at [[Amiens]] to the north. This attack included Franco-British forces, and was spearheaded by Australian and Canadian troops,{{sfn|Ekins|2010|p=24}} along with 600 tanks and supported by 800 aircraft. The assault proved highly successful, leading Hindenburg to name 8 August as the 'Black Day of the German Army'.{{sfn|Griffiths|1986|pp=155–156}} The Italian 2nd Army Corps, commanded by general [[Alberico Albricci]], also participated in the operations around Reims. ||| 1918—Final offensives ||| Final allied counter-offensives ||| +-1 Western Front (World War I) ||| Spring Offensive ||| In an effort to break the deadlock, this front saw the introduction of [[Technology during World War I|new military technology]], including [[Chemical weapons in World War I|poison gas]], [[aircraft]] and [[tank]]s. But it was only after the adoption of improved tactics that some degree of mobility was restored. The German [[Spring Offensive]] of 1918 was made possible by the [[Treaty of Brest-Litovsk]] that marked the end of the conflict on the [[Eastern Front (World War I)|Eastern Front]]. Using the recently introduced [[infiltration tactics]], the German armies advanced nearly {{Convert|60|mi|km|abbr=off|order=flip|sigfig=1}} to the west, which marked the deepest advance by either side since 1914 and very nearly succeeded in forcing a breakthrough. ||| ||| ||| +-1 Western Front (World War II) ||| Battle of France ||| The Phoney War was an early phase of World War II marked by a few military operations in [[Continental Europe]] in the months following the German [[invasion of Poland]] and preceding the [[Battle of France]]. Although the great [[Power (international)|powers]] of Europe had [[declaration of war|declared war]] on one another, neither side had yet committed to launching a significant attack, and there was relatively little fighting on the ground. This was also the period in which The [[United Kingdom]] and [[France]] did not supply significant aid to [[Poland]], despite their [[Polish-British Common Defence Pact|pledged alliance]]. ||| 1939–40: Axis victories ||| Phoney War ||| +-1 Western Front (World War II) ||| Normandy landings ||| The '''Western Front''' of the [[European theatre of World War II|European theatre]] of [[World War II]] encompassed [[Denmark]], [[Norway]], [[Luxembourg]], [[Belgium]], the [[Netherlands]], the [[United Kingdom]], [[France]], [[Italy]], and [[West Germany|Western Germany]]. World War II military engagements in Southern Europe and elsewhere are generally considered under separate headings. The Western Front was marked by two phases of large-scale combat operations. The first phase saw the capitulation of the Netherlands, Belgium and France during May and June 1940 after their defeat in the [[Low Countries]] and the northern half of France, and continued into an air war between Germany and Britain that climaxed with the [[Battle of Britain]]. The second phase consisted of large-scale ground combat, which began in June 1944 with the [[Normandy landings|Allied landings in Normandy]] and continued until the [[Victory in Europe Day|defeat of Germany]] in May 1945. ||| ||| ||| +-1 Western Front (World War II) ||| Operation Cobra ||| On 6 June 1944, The Allies began [[Operation Overlord]] (also known as '[[D-Day]]') – the long-awaited liberation of France. The deception plans, Operations [[Operation Fortitude|''Fortitude]] and ''[[Operation Bodyguard|Bodyguard]]'', had the Germans convinced that the invasion would occur in the [[Pas-de-Calais]], while the real target was Normandy. Following two months of slow fighting in [[hedgerow]] country, [[Operation Cobra]]' allowed the Americans to break out at the western end of the [[lodgement]]. Soon after, the Allies were racing across France. They encircled around 200,000 Germans in the [[Falaise pocket]]. As had so often happened on the [[Eastern Front (WWII)|Eastern Front]] Hitler refused to allow a strategic withdrawal until it was too late. Approximately 150,000 Germans were able to escape from the Falaise pocket, but they left behind most of their irreplaceable equipment and 50,000 Germans were killed or taken prisoner. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Normandy ||| +-1 Western Front (World War II) ||| Operation Frankton ||| Two early British raids for which battle honours were awarded were Operations ''[[Operation Collar (commando raid)|Collar]]'' in Boulogne (11 June 1940) and ''[[Operation Ambassador|Ambassador]]'' in Guernsey (14–15 July 1940). The raids for which the British awarded the 'North-West Europe Campaign of 1942' [[battle honour]] were: Operation ''[[Operation Biting|Biting]]'' - Bruneval (27–28 February 1942), [[St. Nazaire Raid|St Nazaire]] (27–28 March 1942), Operation ''[[Operation Myrmidon|Myrmidon]]'' - Bayonne (5 April 1942), Operation ''[[Operation Abercrombie|Abercrombie]]'' - Hardelot (21–22 April 1942), [[Dieppe raid|Dieppe]] (19 August 1942) and Operation - ''[[Operation Frankton|Frankton]]'' - Gironde (7–12 December 1942). ||| 1941–44: Interlude ||| ||| +-1 Western Front (World War II) ||| Operation Nordwind ||| The Germans launched a second, smaller offensive (''[[Operation Nordwind|Nordwind]]'') into [[Alsace]] on New Year's Day, 1945. Aiming to recapture Strasbourg, the Germans attacked the 6th Army Group at multiple points. Because the Allied lines had become severely stretched in response to the crisis in the Ardennes, holding and throwing back the ''Nordwind'' offensive was a costly affair that lasted almost four weeks. The culmination of Allied counter-attacks restored the front line to the area of the German border and collapsed the Colmar Pocket. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Winter counter-offensives ||| +-1 Western Front (World War II) ||| Operation Overlord ||| On 6 June 1944, The Allies began [[Operation Overlord]] (also known as '[[D-Day]]') – the long-awaited liberation of France. The deception plans, Operations [[Operation Fortitude|''Fortitude]] and ''[[Operation Bodyguard|Bodyguard]]'', had the Germans convinced that the invasion would occur in the [[Pas-de-Calais]], while the real target was Normandy. Following two months of slow fighting in [[hedgerow]] country, [[Operation Cobra]]' allowed the Americans to break out at the western end of the [[lodgement]]. Soon after, the Allies were racing across France. They encircled around 200,000 Germans in the [[Falaise pocket]]. As had so often happened on the [[Eastern Front (WWII)|Eastern Front]] Hitler refused to allow a strategic withdrawal until it was too late. Approximately 150,000 Germans were able to escape from the Falaise pocket, but they left behind most of their irreplaceable equipment and 50,000 Germans were killed or taken prisoner. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Normandy ||| +-1 Western Front (World War II) ||| Operation Veritable ||| In January 1945 the German bridgehead over the river [[Roer]] between Heinsberg and Roermond was cleared during Operation ''[[Operation Blackcock|Blackcock]]'', followed by the pincer movement of the [[First Canadian Army]] in Operation ''[[Operation Veritable|Veritable]]'' advancing from the Nijmegen area of the Netherlands and the US Ninth Army crossing the [[Rur]] (Roer) in Operation [[Operation Grenade|Grenade'']] was planned to start on 8 February 1945, but it was delayed by two weeks when the Germans flooded the river valley by destroying the dam gates upstream. Field Marshal [[Gerd von Rundstedt]] requested permission to withdraw east behind the Rhine, arguing that further resistance would only delay the inevitable, but was ordered by Hitler to fight where his forces stood. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Invasion of Germany ||| +-1 Western New Guinea campaign ||| Battle of Morotai ||| * [[Battle of Morotai]] ||| Major battles and sub-campaigns ||| ||| +-1 Western Sahara War ||| First Battle of Amgala (1976) ||| On December 11, 1975 first Moroccan troops arrived to El Aaiún, and fighting erupted with the POLISARIO. On January 27, the [[First Battle of Amgala (1976)|first battle of Amgala]] erupted between Morocco and Algeria with the Polisario. ||| Timeline ||| Moroccan recovery ||| +-1 Western Sahara conflict ||| 2011 Western Saharan protests ||| Despite multiple peace initiatives through the 1990s and early 2000s, the conflict reemerged as the '[[Independence Intifada (Western Sahara)|Independence Intifada]]' in 2005; a series of disturbances, demonstrations and riots, which broke out in May 2005 in the Moroccan-held portions of Western Sahara, and lasted until November of that same year. In late 2010, the protests re-erupted in the [[Gdeim Izik protest camp|Gdeim Izik refugee camp]] in Western Sahara. While the protests were initially peaceful, they were later marked by clashes between civilians and security forces, resulting in dozens of casualties on both sides. Another series of [[2011 Western Saharan protests|protests]] began on 26 February 2011, as a reaction to the failure of police to prevent anti-Sahrawi looting in the city of [[Dakhla, Western Sahara]]; protests soon spread throughout the territory. Though sporadic demonstrations continue, the movement had largely subsided by May 2011. ||| ||| ||| +-1 Western Sahara conflict ||| First Battle of Amgala (1976) ||| In January and February 1976 there were direct [[First Battle of Amgala (1976)|battles in Amgala]] between the armies of these two countries. ||| Third parties ||| Algeria ||| +-1 Western Sahara conflict ||| First Sahrawi Intifada ||| The [[First Sahrawi Intifada]] began in 1999 and lasted until 2004, transforming into the [[Independence Intifada (Western Sahara)|Independence Intifada]] in 2005. First Sahrawi Intifada formed a part of the wider and still ongoing Western Sahara conflict. ||| Conflict ||| First Sahrawi Intifada ||| +-1 Western Sahara conflict ||| Zemla Intifada ||| Raids and rebellions by the [[Indigenous peoples of Africa|indigenous]] Sahrawi population kept the Spanish forces out of much of the Spanish-claimed territory for a long time. [[Ma al-Aynayn]] the Saharan pro-Moroccan [[caïd]] of [[Tindouf]] and [[Smara]] named by the [[List of rulers of Morocco|Moroccan]] sultan started an uprising against the French in 1910 in response to French attempts to expand their influence and control in North-West Africa. Ma al-Aynayn died in October 1910, and his son [[El Hiba]] succeeded him. El Hiba's forces were defeated during a failed campaign to conquer [[Marrakesh]], and in retaliation French colonial forces destroyed the holy city of Smara in 1913.{{citation needed|date=August 2011}} The city was promptly rebuilt{{citation needed|date=July 2012}}, and Sahrawi resistance continued for the following twenty years. The rebellious territory was finally subdued in 1934, after joint Spanish and French forces destroyed Smara for a second time.{{citation needed|date=August 2011}} In 1956 the [[Ifni War]], initiated by the [[Moroccan Army of Liberation]], marked renewed conflict in the region; after two years of war, the [[Francoist Spain|Spanish]] forces regained control, again with French aid. However, unrest lingered among the region's population, and in 1967 the [[Harakat Tahrir]] arose to challenge Spanish rule peacefully. After the events of the [[Zemla Intifada]] in 1970, when Spanish police forcibly disbanded the organization and '[[forced disappearance|disappeared]]' its founder, [[Muhammad Bassiri]], Sahrawi nationalism again swung towards militarism. ||| Background ||| Spanish Sahara ||| +-1 Williamite War in Ireland ||| Battle of Newtownbutler ||| In nearby [[Enniskillen]], just south of Derry, armed Williamite civilians drawn from the local Protestant population organised a formidable irregular military force. Operating with Enniskillen as a base, they carried out raids against the Jacobite forces in [[Connacht]] and [[Ulster]]. A poorly trained Jacobite army led by [[Justin MacCarthy, Viscount Mountcashel]] assembled at [[Dublin]] and marched against them. On 28 July 1689, MacCarthy's force was defeated at the [[Battle of Newtownbutler]]. Many of the Jacobites' troops fled as the first shots were fired, and up to 1500 of them were hacked down or drowned when pursued by the Williamite cavalry. Partly as a result of this defeat and partly because of a major Williamite landing in the east of the province, most Jacobite troops were withdrawn from Ulster and encamped near [[Dundalk]]. ||| Campaign in Ulster ||| ||| +-1 Williamite War in Ireland ||| Battle of the Boyne ||| James was opposed in Ireland by the mostly Protestant 'Williamites', who were concentrated in the north of the country. William landed a multi-national force in Ireland, composed of English, Scottish, Dutch, Danish and other troops, to put down Jacobite resistance. James left Ireland after a reverse at the [[Battle of the Boyne]] in 1690 and the Irish Jacobites were finally defeated after the [[Battle of Aughrim]] in 1691. ||| ||| ||| +-1 Williamite War in Ireland ||| Siege of Limerick (1690) ||| As a result of Williamite intransigence, the war continued. The Irish Jacobites retreated to [[Limerick]], where they repulsed a [[Siege of Limerick (1690)|Williamite assault]], inflicting heavy casualties, in August 1690. The Williamites retreated from the west of Ireland but consolidated their hold on the south of the country in late 1690. Their forces, under the [[John Churchill, 1st Duke of Marlborough|Earl of Marlborough]], took the southern ports of [[Cork (city)|Cork]] and [[Kinsale]] ||| First Siege of Limerick ||| ||| +-1 Williamite War in Ireland ||| Siege of Limerick (1691) ||| St Ruth himself, the Jacobite General, was among the dead. Ginkell took [[Galway]], which surrendered on favourable terms. He went on to besiege [[Limerick]]. The [[Siege of Limerick (1691)|Siege of Limerick]] ended with Irish surrender on 23 September 1691, when [[Patrick Sarsfield]], despairing of any hope of victory, overthrew the French officers in command of the city and opened negotiations with Ginkell. ||| Athlone, Aughrim and the Second Siege of Limerick ||| ||| +-1 Winter War ||| Battle of Salla (1939) ||| In southern Lapland, near the tiny rural village of [[Salla]], the Soviet force advanced with two divisions, the 88th and 112th, totalling 35,000 men. In the [[Battle of Salla (1939)|battle of Salla]] the Soviets advanced easily to Salla, where the road forked. The northern branch moved toward [[Pelkosenniemi]] while the rest pushed on toward [[Kemijärvi]]. On 17 December, the Soviet northern group, comprising an infantry regiment, a battalion, and a company of tanks, was outflanked by a Finnish [[battalion]]. The 112th retreated, leaving much of its heavy equipment and vehicles behind. Following this success, the Finns shuttled reinforcements down to the defensive line in front of Kemijärvi. The Soviets hammered the defensive line without success. The Finns counterattacked, and the Soviets were pushed back to a new defensive line where they stayed for the rest of the war. ||| Defence of Finland ||| Finnish Lapland ||| +-1 World War II ||| Allied invasion of Italy ||| On 3 September 1943, the Western Allies [[Allied invasion of Italy|invaded the Italian mainland]], following an [[Armistice between Italy and Allied armed forces|Italian armistice with the Allies]]. ||| Course of the war ||| Allies gain momentum (1943–44) ||| +-1 World War II ||| Allied invasion of Sicily ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Atomic bombings of Hiroshima and Nagasaki ||| The war in Europe ended with an [[Western Allied invasion of Germany|invasion of Germany]] by the Western Allies and the Soviet Union culminating in the [[Battle of Berlin|capture of Berlin]] by Soviet and Polish troops and the subsequent [[German Instrument of Surrender|German unconditional surrender]] on [[Victory in Europe Day|8 May 1945]]. Following the [[Potsdam Declaration]] by the Allies on 26 July 1945 and the refusal of Japan to surrender under its terms, the United States [[Atomic bombings of Hiroshima and Nagasaki|dropped atomic bombs]] on the Japanese cities of [[Hiroshima]] and [[Nagasaki]] on 6 August and 9 August respectively. With an [[Operation Downfall|invasion of the Japanese archipelago]] imminent, the possibility of additional atomic bombings, and the [[Soviet-Japanese War (1945)|Soviet Union's declaration of war on Japan]] and [[Soviet invasion of Manchuria|invasion of Manchuria]], [[Surrender of Japan|Japan surrendered]] on 15 August 1945. Thus ended the war in Asia, cementing the total victory of the Allies. ||| ||| ||| +-1 World War II ||| Attack on Pearl Harbor ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| Battle of Belgium ||| Germany [[Battle of France|launched an offensive against France]] and, adhering to the [[Manstein Plan]] also attacked the neutral nations of [[Battle of Belgium|Belgium]], [[Battle of the Netherlands|the Netherlands]], and [[German invasion of Luxembourg in World War II|Luxembourg]] on 10 May 1940. ||| Course of the war ||| Western Europe (1940–41) ||| +-1 World War II ||| Battle of Britain ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| Battle of Changde ||| From November 1943, during the seven-week [[Battle of Changde]], the Chinese forced Japan to fight a costly war of attrition, while awaiting Allied relief. ending the longest and [[List of battles by casualties#Sieges and urban combat|most lethal siege in history]]. ||| Course of the war ||| Allies gain momentum (1943–44) ||| +-1 World War II ||| Battle of Changsha (1939) ||| In 1939 the United States had renounced its trade treaty with Japan and beginning with an [[aviation gasoline]] ban in July 1940 Japan had become subject to increasing economic pressure. During this time, Japan launched its [[Battle of Changsha (1939)|first attack against Changsha]], a strategically important Chinese city, but was repulsed by late September. Other sanctions soon followed. ||| Course of the war ||| War breaks out in the Pacific (1941) ||| +-1 World War II ||| Battle of Kursk ||| In the Soviet Union, both the Germans and the Soviets spent the spring and early summer of 1943 making preparations for large offensives in central Russia. On 4 July 1943, Germany [[Battle of Kursk|attacked Soviet forces around the Kursk Bulge]]. Within a week, German forces had exhausted themselves against the Soviets' deeply echeloned and well-constructed defences Also, in July 1943 the British [[Bombing of Hamburg|firebombed Hamburg]] killing over 40,000 people. ||| Course of the war ||| Allies gain momentum (1943–44) ||| +-1 World War II ||| Battle of Leyte ||| In the Pacific, American forces continued to press back the Japanese perimeter. In mid-June 1944 they began their [[Mariana and Palau Islands campaign|offensive against the Mariana and Palau islands]], and decisively defeated Japanese forces in the [[Battle of the Philippine Sea]]. These defeats led to the resignation of the Japanese Prime Minister, [[Hideki Tojo]], and provided the United States with air bases to launch intensive heavy bomber attacks on the Japanese home islands. In late October, American forces [[Battle of Leyte|invaded the Filipino island of Leyte]]; soon after, Allied naval forces scored another large victory during the [[Battle of Leyte Gulf]], one of the largest naval battles in history. ||| Course of the war ||| Allies close in (1944) ||| +-1 World War II ||| Battle of Leyte Gulf ||| In the Pacific, American forces continued to press back the Japanese perimeter. In mid-June 1944 they began their [[Mariana and Palau Islands campaign|offensive against the Mariana and Palau islands]], and decisively defeated Japanese forces in the [[Battle of the Philippine Sea]]. These defeats led to the resignation of the Japanese Prime Minister, [[Hideki Tojo]], and provided the United States with air bases to launch intensive heavy bomber attacks on the Japanese home islands. In late October, American forces [[Battle of Leyte|invaded the Filipino island of Leyte]]; soon after, Allied naval forces scored another large victory during the [[Battle of Leyte Gulf]], one of the largest naval battles in history. ||| Course of the war ||| Allies close in (1944) ||| +-1 World War II ||| Battle of Luzon ||| In the Pacific theatre, American forces accompanied by the forces of the [[Philippine Commonwealth]] advanced [[Philippines campaign (1944–45)|in the Philippines]], [[Battle of Leyte|clearing Leyte]] by the end of April 1945. They [[Battle of Luzon|landed on Luzon]] in January 1945 and [[Battle of Manila (1945)|recaptured Manila]] in March following a battle which reduced the city to ruins. Fighting continued on Luzon, [[Battle of Mindanao|Mindanao]], and other islands of the Philippines until the [[End of World War II in Asia|end of the war]]. ||| Course of the war ||| Axis collapse, Allied victory (1944–45) ||| +-1 World War II ||| Battle of Midway ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Battle of Narva (1944) ||| The [[Leningrad-Novgorod Offensive|following Soviet offensive]] was [[Battle of Narva (1944)|halted on the pre-war Estonian border]] by the German [[Army Group North]] aided by [[Occupation of Estonia by Nazi Germany#Estonians in German Military Units in 1941–1944|Estonians]] hoping to [[Estonian Government in Exile#Failure to reestablish independence|re-establish national independence]]. This delay slowed subsequent Soviet operations in the [[Baltic Sea]] region. ||| Course of the war ||| Allies gain momentum (1943–44) ||| +-1 World War II ||| Battle of Northern Burma and Western Yunnan ||| The Allies experienced mixed fortunes in mainland Asia. In March 1944, the Japanese launched the first of two invasions, [[Operation U-Go|an operation against British positions in Assam, India]], and Chinese forces that had [[Battle of Northern Burma and Western Yunnan|invaded northern Burma]] in late 1943 besieged Japanese troops in [[Myitkyina]]. ||| Course of the war ||| Allies gain momentum (1943–44) ||| +-1 World War II ||| Battle of Singapore ||| By the end of April 1942, Japan and its ally Thailand had almost fully conquered [[Japanese capture of Burma|Burma]], [[Battle of Malaya|Malaya]], [[Netherlands East Indies campaign|the Dutch East Indies]], [[Battle of Singapore|Singapore]], and [[Rabaul]], inflicting severe losses on Allied troops and taking a large number of prisoners. ||| Course of the war ||| Axis advance stalls (1942–43) ||| Pacific (1942–43) +-1 World War II ||| Battle of Taierzhuang ||| In March 1938, Nationalist Chinese forces won their [[Battle of Taierzhuang|first major victory at Taierzhuang]] but then the city of [[Xuzhou]] [[Battle of Xuzhou|was taken by Japanese]] in May. ||| Pre-war events ||| Japanese invasion of China (1937) ||| +-1 World War II ||| Battle of Taranto ||| Advances were made in nearly every aspect of [[naval warfare]], most notably with aircraft carriers and submarines. Although [[Aeronautics|aeronautical]] warfare had relatively little success at the start of the war, [[Battle of Taranto|actions at Taranto]], [[Attack on Pearl Harbor|Pearl Harbor]], and the [[Battle of the Coral Sea|Coral Sea]] established the carrier as the dominant capital ship in place of the battleship. ||| Impact ||| Advances in technology and warfare ||| +-1 World War II ||| Battle of the Atlantic ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| Battle of the Bulge ||| On 16 December 1944, Germany attempted its last desperate measure for success on the Western Front by using most of its remaining reserves to launch [[Battle of the Bulge|a massive counter-offensive in the Ardennes]] to attempt to split the Western Allies, encircle large portions of Western Allied troops and capture their primary supply port at [[Antwerp]] to prompt a political settlement. In Italy, the Western Allies remained stalemated at the German defensive line. In mid-January 1945, the Soviets and Poles attacked in Poland, [[Vistula-Oder Offensive|pushing from the Vistula to the Oder]] river in Germany, and [[East Prussian Offensive|overran East Prussia]]. ||| Course of the war ||| Axis collapse, Allied victory (1944–45) ||| +-1 World War II ||| Eastern Front (World War II) ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| Hundred Regiments Offensive ||| In August of that year, [[Communist Party of China|Chinese communists]] launched an [[Hundred Regiments Offensive|offensive in Central China]]; in retaliation, Japan instituted [[Three Alls Policy|harsh measures]] in occupied areas to reduce human and material resources for the communists. ||| Course of the war ||| War breaks out in the Pacific (1941) ||| +-1 World War II ||| Italian invasion of France ||| On 10 June, [[Italian invasion of France|Italy invaded France]], declaring war on both France and the United Kingdom. ||| Course of the war ||| Western Europe (1940–41) ||| +-1 World War II ||| Japanese invasion of Malaya ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| Mariana and Palau Islands campaign ||| In the Pacific, American forces continued to press back the Japanese perimeter. In mid-June 1944 they began their [[Mariana and Palau Islands campaign|offensive against the Mariana and Palau islands]], and decisively defeated Japanese forces in the [[Battle of the Philippine Sea]]. These defeats led to the resignation of the Japanese Prime Minister, [[Hideki Tojo]], and provided the United States with air bases to launch intensive heavy bomber attacks on the Japanese home islands. In late October, American forces [[Battle of Leyte|invaded the Filipino island of Leyte]]; soon after, Allied naval forces scored another large victory during the [[Battle of Leyte Gulf]], one of the largest naval battles in history. ||| Course of the war ||| Allies close in (1944) ||| +-1 World War II ||| Nanking Massacre ||| The best-known Japanese atrocity was the [[Nanking Massacre]], in which several hundred thousand Chinese civilians were raped and murdered. ||| Impact ||| Casualties and war crimes ||| +-1 World War II ||| Normandy landings ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Operation Bagration ||| On 22 June, the Soviets launched a strategic offensive in Belarus (known as '[[Operation Bagration]]') that resulted in the almost complete destruction of the German [[Army Group Centre]]. ||| Course of the war ||| Allies close in (1944) ||| +-1 World War II ||| Operation Barbarossa ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| Operation Compass ||| In December 1940, British Commonwealth forces began counter-offensives against [[Operation Compass|Italian forces in Egypt]] and [[East African Campaign (World War II)#Allied counter-offensive|Italian East Africa]]. ||| Course of the war ||| Mediterranean (1940–41) ||| +-1 World War II ||| Operation Downfall ||| The war in Europe ended with an [[Western Allied invasion of Germany|invasion of Germany]] by the Western Allies and the Soviet Union culminating in the [[Battle of Berlin|capture of Berlin]] by Soviet and Polish troops and the subsequent [[German Instrument of Surrender|German unconditional surrender]] on [[Victory in Europe Day|8 May 1945]]. Following the [[Potsdam Declaration]] by the Allies on 26 July 1945 and the refusal of Japan to surrender under its terms, the United States [[Atomic bombings of Hiroshima and Nagasaki|dropped atomic bombs]] on the Japanese cities of [[Hiroshima]] and [[Nagasaki]] on 6 August and 9 August respectively. With an [[Operation Downfall|invasion of the Japanese archipelago]] imminent, the possibility of additional atomic bombings, and the [[Soviet-Japanese War (1945)|Soviet Union's declaration of war on Japan]] and [[Soviet invasion of Manchuria|invasion of Manchuria]], [[Surrender of Japan|Japan surrendered]] on 15 August 1945. Thus ended the war in Asia, cementing the total victory of the Allies. ||| ||| ||| +-1 World War II ||| Operation Plunder ||| In February, the Soviets [[Silesian Offensives|entered Silesia]] and [[East Pomeranian Offensive|Pomerania]], while [[Western Allied invasion of Germany|Western Allies entered western Germany]] and closed to the [[Rhine]] river. By March, the Western Allies crossed the Rhine [[Operation Plunder|north]] and [[Remagen|south]] of the [[Rhine-Ruhr|Ruhr]], [[Ruhr Pocket|encircling the German Army Group B]], ||| Course of the war ||| Axis collapse, Allied victory (1944–45) ||| +-1 World War II ||| Pacification of Manchukuo ||| Too weak to resist Japan, China appealed to the [[League of Nations]] for help. Japan withdrew from the League of Nations after being [[Lytton Report|condemned]] for its incursion into Manchuria. The two nations then fought several battles, in [[28 January Incident|Shanghai]], [[Battle of Rehe|Rehe]] and [[Defense of the Great Wall|Hebei]], until the [[Tanggu Truce]] was signed in 1933. Thereafter, Chinese volunteer forces continued the resistance to Japanese aggression in [[Pacification of Manchukuo|Manchuria]], and [[Actions in Inner Mongolia (1933–1936)|Chahar and Suiyuan]]. ||| Background ||| ||| +-1 World War II ||| Rotterdam Blitz ||| The mass-bombing of civilian areas, notably the cities of [[Bombing of Warsaw in World War II|Warsaw]], [[Rotterdam Blitz|Rotterdam]] and [[The Blitz|London]]; including the aerial targeting of hospitals and fleeing refugees ||| Impact ||| Casualties and war crimes ||| +-1 World War II ||| Scuttling of the French fleet in Toulon ||| In August 1942, the Allies succeeded in repelling a [[Battle of Alam el Halfa|second attack against El Alamein]] although Vichy forces did not resist this violation of the armistice, they managed to [[Scuttling of the French fleet in Toulon|scuttle their fleet]] to prevent its capture by German forces. ||| Course of the war ||| Axis advance stalls (1942–43) ||| Western Europe/Atlantic & Mediterranean (1942–43) +-1 World War II ||| Second Battle of El Alamein ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Second Guangxi Campaign ||| The Axis advance halted in 1942 when Japan lost the critical [[Battle of Midway]], near [[Hawaii]], and Germany was defeated in [[Second Battle of El Alamein|North Africa]] and then, decisively, at [[Battle of Stalingrad|Stalingrad]] in the Soviet Union. In 1943, with a series of German defeats on the [[Eastern Front (World War II)|Eastern Front]], the [[Allied invasion of Sicily|Allied invasion]] of Italy which brought about Italian surrender, and Allied victories in the Pacific, the Axis lost the initiative and undertook strategic retreat on all fronts. In 1944, the Western Allies [[Normandy landings|invaded German-occupied France]], while the Soviet Union regained all of its territorial losses and invaded Germany and its allies. During 1944 and 1945 the Japanese suffered major reverses in mainland Asia in [[Second Guangxi Campaign|South]] [[Battle of West Hunan|Central China]] and [[Burma Campaign|Burma]], while the Allies crippled the [[Imperial Japanese Navy|Japanese Navy]] and captured key Western Pacific islands. ||| ||| ||| +-1 World War II ||| Soviet invasion of Poland ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II ||| The Blitz ||| The mass-bombing of civilian areas, notably the cities of [[Bombing of Warsaw in World War II|Warsaw]], [[Rotterdam Blitz|Rotterdam]] and [[The Blitz|London]]; including the aerial targeting of hospitals and fleeing refugees ||| Impact ||| Casualties and war crimes ||| +-1 World War II ||| Western Allied invasion of Germany ||| The war in Europe ended with an [[Western Allied invasion of Germany|invasion of Germany]] by the Western Allies and the Soviet Union culminating in the [[Battle of Berlin|capture of Berlin]] by Soviet and Polish troops and the subsequent [[German Instrument of Surrender|German unconditional surrender]] on [[Victory in Europe Day|8 May 1945]]. Following the [[Potsdam Declaration]] by the Allies on 26 July 1945 and the refusal of Japan to surrender under its terms, the United States [[Atomic bombings of Hiroshima and Nagasaki|dropped atomic bombs]] on the Japanese cities of [[Hiroshima]] and [[Nagasaki]] on 6 August and 9 August respectively. With an [[Operation Downfall|invasion of the Japanese archipelago]] imminent, the possibility of additional atomic bombings, and the [[Soviet-Japanese War (1945)|Soviet Union's declaration of war on Japan]] and [[Soviet invasion of Manchuria|invasion of Manchuria]], [[Surrender of Japan|Japan surrendered]] on 15 August 1945. Thus ended the war in Asia, cementing the total victory of the Allies. ||| ||| ||| +-1 World War II ||| Winter War ||| The [[Empire of Japan]] aimed to dominate [[Asia]] and the [[Pacific]] and was already [[Second Sino-Japanese War|at war]] with the [[Republic of China (1912–1949)|Republic of China]] in 1937, with the [[invasion of Poland|invasion]] of [[Second Polish Republic|Poland]] by [[Nazi Germany|Germany]] and subsequent declarations of war on Germany by [[French Third Republic|France]] and the [[United Kingdom]]. From late 1939 to early 1941, in a series of campaigns and [[Tripartite Pact|treaties]], Germany conquered or controlled much of continental Europe, and formed the Axis alliance with [[Kingdom of Italy|Italy]] and [[Empire of Japan|Japan]]. Based on the [[Molotov–Ribbentrop Pact]] of August 1939, Germany and the [[Soviet Union]] partitioned and annexed territories of their European neighbours, [[Soviet invasion of Poland|Poland]], [[Winter War|Finland]], [[Soviet occupation of Bessarabia and Northern Bukovina|Romania]] and the [[Occupation of the Baltic states|Baltic states]]. For a year starting in late June 1940, the United Kingdom and the <!-- With the State of Westminster (1931), the UK recognised that the Dominions (at the time, Australia, Canada, New Zealand and South Africa) were _equal_ and _independent_ members of the 'British Commonwealth' --> [[Commonwealth of Nations|British Commonwealth]]<!--'British Commonwealth' was the official name between 1926 and 1949. --> were the only Allied forces continuing the fight against the European Axis powers, with campaigns in [[Western Desert Campaign|North Africa]] and the [[East African Campaign (World War II)|Horn of Africa]], the aerial [[Battle of Britain]] and [[the Blitz]] bombing campaign, as well as the long-running [[Battle of the Atlantic]]. In June 1941, the European Axis powers launched [[Operation Barbarossa|an invasion of the Soviet Union]], opening the [[Eastern Front (World War II)|largest land theatre of war in history]], which trapped the major part of the Axis' military forces into a [[Attrition warfare|war of attrition]]. In December 1941, Japan [[Attack on Pearl Harbor|attacked the United States]] and [[Japanese invasion of Malaya|European territories]] in the Pacific Ocean, and quickly conquered much of the Western Pacific. ||| ||| ||| +-1 World War II in Yugoslavia ||| Operation Uzice ||| The [[Operation Uzice|First Anti-Partisan Offensive]] was the attack conducted by the Axis in autumn of 1941 against the '[[Republic of Užice]]', a liberated territory the Partisans established in western Serbia. In November 1941, German troops attacked and reoccupied this territory, with the majority of Partisan forces escaping towards [[Bosnia (region)|Bosnia]]. It was during this offensive that tenuous collaboration between the Partisans and the royalist Chetnik movement broke down and turned into open hostility. ||| 1941 ||| Early resistance ||| +-1 Xinjiang conflict ||| 2010 Aksu bombing ||| Further incidents include the [[July 2009 Ürümqi riots]], the [[September 2009 Xinjiang unrest]], and the [[2010 Aksu bombing]] that led to the trials of 376 people. In 2011, six ethnic Uyghur men [[Tianjin Airlines Flight 7554|attempted to hijack]] an aircraft heading to [[Ürümqi]], but failed after passengers and crew resisted and restrained the hijackers. In 2011, a series of [[2011 Kashgar attacks|knife and bomb attacks]] occurred. ||| Timeline ||| 2007 onwards ||| +-1 Yemeni Civil War (2015) ||| Battle of Aden ||| On 26 March, after [[Battle of Aden|clashes erupted in Aden]], Hadi loyalists counterattacked as a [[Saudi-led intervention in Yemen (2015–present)|Saudi-led military intervention]] got underway. Artillery shelled [[Al Anad Air Base]], forcing some of its Houthi occupants to flee the area. ||| Timeline ||| Southern offensive ||| Fighting in Lahij +-1 Yemeni Revolution ||| Battle of Zinjibar ||| As the situation in [[Sana'a]] was developing, about 300 [[Islamic militants]] attacked and captured the coastal city of [[Zinjibar]] (population 20,000) (see [[Battle of Zinjibar]]). During the takeover of the town, the militants killed five policemen, including a high-ranking officer, and one civilian. Two more soldiers were killed in clashes with militants in Loder. ||| Timeline ||| Uprising ||| +-1 Yom Kippur War ||| Battle of Baltim ||| The [[Battle of Baltim]], which took place on October 8–9 off the coast of [[Baltim]] and [[Damietta]], ended in a decisive Israeli victory. Six Israeli missile boats heading towards [[Port Said]] encountered four Egyptian missile boats coming from [[Alexandria]]. In an engagement lasting about forty minutes, the Israelis evaded Egyptian [[P-15 Termit|Styx missiles]] using electronic countermeasures and sank three of the Egyptian missile boats with [[Gabriel (missile)|Gabriel missiles]] and gunfire. ||| Combat operations ||| At sea ||| +-1 Yom Kippur War ||| Battle of Latakia ||| The [[Battle of Latakia]], between the Israeli and Syrian navies, took place on October 7, the second day of the war. Five Israeli missile boats heading towards the Syrian port of [[Latakia]], sank a Syrian torpedo boat and minesweeper before encountering five Syrian missile boats. The Israelis used electronic countermeasures and chaff to evade Syrian missiles, then sank all five Syrian missile boats. This revolutionary engagement, the first between missile boats using [[surface-to-surface missile]]s, proved the potency of small, fast missile boats equipped with advanced [[Electronic countermeasures|ECM packages]]. The battle also established the [[Israeli Navy]], long derided as the '[[black sheep (term)|black sheep]]' of the Israeli military, as a formidable and effective force in its own right. The port of Latakia was the site of another engagement between October 10–11, when Israeli missile boats fired into the port, targeting two Syrian missile boats spotted maneuvering among merchant ships. Both Syrian vessels were sunk, and two merchant ships were mistakenly hit and sunk. ||| Combat operations ||| At sea ||| +-1 Yom Kippur War ||| Battle of the Chinese Farm ||| Despite the success the Israelis were having on the west bank, Generals Bar-Lev and Elazar ordered Sharon to concentrate on securing the bridgehead on the east bank. He was ordered to clear the roads leading to the canal as well as a position known as the [[Battle of the Chinese Farm|Chinese Farm]], just north of Deversoir, the Israeli crossing point. Sharon objected and requested permission to expand and breakout of the bridgehead on the west bank, arguing that such a maneuver would cause the collapse of Egyptian forces on the east bank. But the Israeli high command was insistent, believing that until the east bank was secure, forces on the west bank could be cut off. Sharon was overruled by his superiors and relented. ||| Combat operations ||| In the Sinai ||| Securing the bridgehead +-1 Yom Kippur War ||| October 22 Scud missile attack ||| Several minutes before the ceasefire came into effect, three [[Scud]] missiles [[October 22 Scud missile attack|were fired]] at Israeli targets by either Egyptian forces or Soviet personnel in Egypt. This was the first combat use of Scud missiles. One Scud targeted the port of [[Arish]] and two targeted the Israeli bridgehead on the Suez Canal. One hit an Israeli supply convoy and killed seven soldiers. ||| Combat operations ||| In the Sinai ||| The ceasefire and further battles +-1 Yom Kippur War ||| Operation Badr (1973) ||| The war began with a massive and successful Egyptian [[Operation Badr (1973)|crossing of the Suez Canal]]. After crossing the cease-fire lines, Egyptian forces advanced virtually unopposed into the [[Sinai Peninsula]]. After three days, Israel had mobilized most of its forces and halted the Egyptian offensive, resulting in a military [[stalemate]]. The Syrians coordinated their attack on the [[Golan Heights]] to coincide with the Egyptian offensive and initially made threatening gains into Israeli-held territory. Within three days, however, Israeli forces had pushed the Syrians back to the pre-war ceasefire lines. The [[Israel Defense Forces|IDF]] then launched a four-day counter-offensive deep into Syria. Within a week, Israeli artillery began to shell the outskirts of [[Damascus]]. As Egyptian president [[Anwar El Sadat|Anwar Sadat]] began to worry about the integrity of his major ally, he believed that capturing two strategic [[mountain pass|passes]] located deeper in the Sinai would make his position stronger during post-war negotiations. He therefore ordered the Egyptians to go back on the offensive, but their attack was quickly repulsed. The Israelis then counter-attacked at the seam between the two Egyptian armies, crossed the Suez Canal into Egypt, and began slowly advancing southward and westward towards the city of [[Suez]] in over a week of heavy fighting that resulted in heavy casualties on both sides. ||| ||| ||| +-1 Yugoslav Wars ||| Bosnian War ||| *[[Bosnian War]] (1992–1995) ||| ||| ||| +-1 Yugoslav Wars ||| Croatian War of Independence ||| *[[Croatian War of Independence]] (1991–1995) ||| ||| ||| +-1 Yugoslav Wars ||| Kosovo War ||| *[[Kosovo War]] (1998–1999), including the [[NATO bombing of Yugoslavia]] ||| ||| ||| +-1 Yugoslav Wars ||| NATO bombing of Yugoslavia ||| *[[Kosovo War]] (1998–1999), including the [[NATO bombing of Yugoslavia]] ||| ||| ||| +-1 Yugoslav Wars ||| Operation Storm ||| In January 1992, the [[Cyrus Vance|Vance Plan]] proclaimed UN controlled (UNPA) zones for [[Serbs]] in territory claimed by Serbian rebels as the [[Republic of Serbian Krajina]] (RSK) and brought an end to major military operations, though sporadic artillery attacks on Croatian cities and occasional intrusions of Croatian forces into UNPA zones continued until 1995. The fighting in Croatia ended in mid-1995, after [[Operation Flash]] and [[Operation Storm]]. At the end of these operations, Croatia had reclaimed all of its territory except the UNPA Sector East portion of Slavonia, bordering Serbia. Most of the Serb population in the reclaimed areas became refugees, and these operations led to war crimes trials by the ICTY against elements of the Croatian military leadership, all of whom were ultimately acquitted. ||| The wars ||| Croatian War of Independence (1991–95) ||| +-1 Yugoslav Wars ||| Ten-Day War ||| *[[Ten-Day War|War in Slovenia]] (1991) ||| ||| ||| +-1 Yugoslav Wars ||| Vukovar massacre ||| Border regions faced direct attacks from forces within Serbia and Montenegro, and saw the shelling of [[UNESCO]] [[world heritage site]] [[Dubrovnik]], where the international press was criticised for focusing on the city's architectural heritage, instead of reporting the destruction of [[Vukovar massacre|Vukovar]] in which many civilians were killed. ||| The wars ||| Croatian War of Independence (1991–95) ||| +-1 Zaian War ||| Battle of El Herri ||| The outbreak of the First World War proved significant, with the withdrawal of troops for service in France compounded by the loss of more than 600 French killed at the [[Battle of El Herri]]. Lyautey reorganised his available forces into a 'living barricade', consisting of outposts manned by his best troops protecting the perimeter of French territory with lower quality troops manning the rear-guard positions. Over the next four years the French retained most of their territory despite intelligence and financial support provided by the [[Central Powers]] to the Zaian Confederation and continual raids and skirmishes reducing scarce French manpower. ||| ||| ||| +0 15 October 2011 global protests ||| Anti-austerity movement in Greece ||| * [[Anti-austerity movement in Greece]] ||| See also ||| ||| +0 15 October 2011 global protests ||| Anti-austerity movement in Spain ||| * [[Anti-austerity movement in Spain|Spanish 15M Indignants movement]] ||| See also ||| ||| +0 15 October 2011 global protests ||| Occupy Dame Street ||| In Ireland protests were held throughout the country, including in [[Dublin]] In the same article this newspaper describes the movement in the following terms: ''The group has no hierarchical structure, has set up a Facebook page and Twitter account – with the social media links attracting a very mixed, and sometimes critical, reaction.'' The protest in Dublin was organized by the [[Real Democracy Now! Ireland]], Causes United (Ireland) & [[Occupy Dame Street]] protest, set up outside the [[Central Bank of Ireland]] in solidarity with the [[Occupy Wall Street]] movement in New York, also continued throughout the day. ||| Protests ||| Europe ||| Ireland +0 15 October 2011 global protests ||| Occupy movement ||| The '''15 October 2011 global protests''' were part of a series of protests inspired by the [[Arab Spring]], the [[2009 Icelandic financial crisis protests|Icelandic Revolution]], the [[2011 Portuguese protests|Portuguese 'Geração à Rasca']], the [[2011–present Spanish protests|Spanish 'Indignants']], the [[2010–12 Greek protests|Greek Protests]] and the [[Occupy movement]] and launched under the slogan 'United for #GlobalChange', to which the slogan 'United for Global Democracy' was added by many people's assemblies. ||| ||| ||| +0 1809 Gottscheer Rebellion ||| Battle of Aspern-Essling ||| In April 1809, the [[Austrian Empire]] declared war against [[Napoleon I]] to start the War of the Fifth Coalition. After suffering some major setbacks, notably the [[Battle of Aspern-Essling]], the French swiftly triumphed over the Austrian commander [[Archduke Charles, Duke of Teschen|Archduke Charles]]. At the [[Battle of Wagram]], the French ultimately had already won the war. Following this battle, the French troops marched south to occupy [[Carniola]], and with it [[Gottschee County]]. ||| Background: War of the Fifth Coalition and Treaty of Schönbrunn ||| ||| +0 1809 Gottscheer Rebellion ||| War of the Sixth Coalition ||| In 1813, the [[War of the Sixth Coalition]] broke out and Austria invaded the Illyrian Provinces, liberating the Gottscheers from French rule and ending the ''Franzosenzeit'' (time of the French) in Gottschee. The Gottscheers would enjoy being under Austrian rule for the next 105 years until the end of the [[First World War]]. ||| Aftermath ||| ||| +0 19 March 2013 Iraq attacks ||| Iraq War ||| The '''19 March 2013 Iraq attacks''' were a series of coordinated bombings and shootings across the capital [[Baghdad]] and several major cities in the north and central parts of the country. At least 98 people were killed and more than 240 others injured in the wave of violence, which took place on the tenth anniversary of the beginning of the [[Iraq War]]. ||| ||| ||| +0 1925 Hama uprising ||| Battle of al-Musayfirah ||| Following the Druze [[Battle of al-Musayfirah|assault]] against the French Army at [[al-Musayfirah]], al-Qawuqji sent emissaries to al-Atrash to notify him of the strength of his Hama-based forces, request that al-Atrash maintain the pressure against French troops in the [[Hauran]], and to establish oral communication between their forces via a trusted connection. Al-Qawuqji's membership in the French Mandatory army allowed for him to keep track of the routines and activities of the French command in Hama. His party also had the support of large segments of Hama's inhabitants, many of whom were members, The city's landlords also lent their support to al-Qawuqji due to their opposition to planned French land reforms. ||| Planning ||| ||| +0 1929 Hebron massacre ||| 1948 Palestine war ||| In the spring of 1931, 160 Jews returned together with Rabbi Chaim Bagaio. During the [[1936–39 Arab revolt in Palestine|disturbances of 1936]] they all left the town for good, except for one family, that of Yaakov Ben Shalomn Ezra, an eighth generation Hebronite who was a dairyman, who eventually left in 1947, on the eve of the [[1948 Palestine war]]. ||| Aftermath ||| Decline of Jewish community ||| +0 1929 Hebron massacre ||| Six-Day War ||| During the 1967 [[Six-Day War]], [[Israel]] occupied Hebron when it captured the [[West Bank]] from [[Jordan]]. Residents, terrified that Israeli soldiers might massacre them in retaliation for the events of 1929, waved white flags from their homes and voluntarily turned in their weapons. Subsequently, Israelis settled in Hebron as part of Israel's [[Israeli settlement|settlement program]], and the [[Committee of the Jewish Community of Hebron]] was established as the municipal body of the settlers. Today, about 500-800 Israelis live in the city's old quarter. The Israeli military controls about 20% of Hebron to protect the settlers, with the rest of the city falling under [[Palestinian National Authority|Palestinian Authority]] rule. Most Jewish settlers in the area live outside the municipality of Hebron, in the adjacent town of [[Kiryat Arba]]. ||| Aftermath ||| Jewish re-settlement after 1967 ||| +0 1934 West Coast waterfront strike ||| Iraq War ||| The ILWU continues to recognize 'Bloody Thursday' by shutting down all West Coast ports every July 5. The ILWU has frequently stopped work for political protests against, among other things, Italy's [[Second Italo-Abyssinian War|invasion]] of Ethiopia, [[fascism|fascist]] intervention in [[Spanish civil war|Spain's civil war]], South Africa's system of [[apartheid]] and the [[Iraq War]]. ||| Aftermath ||| ||| +0 1939–40 Winter Offensive ||| Battle of Kunlun Pass ||| '''4th War Area''' was to capture [[Shantou]] and [[Chaozhou]] while its main forces mopped up Japanese 21st Army (18th, 38th, and 104th Divisions and the Guards Mixed Brigade), along the [[Kowloon-Canton Railway]] making the transfer of reinforcements from [[Guangdong]] to the ongoing [[Battle of South Guangxi]] difficult. In [[Guangxi]], at [[Nanning]], battered at the [[Battle of Kunlun Pass]], remnants of the Japanese 5th Division and Taiwan Mixed Brigade were to be driven out. ||| South China offensive plan ||| ||| +0 1942 KNILM Douglas DC-3 shootdown ||| Battle of Java (1942) ||| On 3 March 1942, the pilot of PK-AFV was a Russian World War I [[flying ace|ace]], [[Ivan Vasilyevich Smirnov|Ivan Smirnov]] (or Smirnoff). The other three crew members were co-pilot Jo Hoffman, radio operator Jo Muller and flight engineer N.J. Blaauw. They were transporting eight passengers, fleeing the [[Battle of Java (1942)|Japanese invasion of Java]]. Among the passengers five pilots from the army as well navy, Pieter Cramerus, G.D Brinkman, Leon Vanderburg, Daan Hendriksz and H.M. Gerrits. The other three passengers were Maria van Tuyn, her baby son Johannes and trainee flight engineer H. van Romondt. ||| Final flight ||| ||| +0 1948 Arab–Israeli War ||| Altalena Affair ||| During the truce, Irgun attempted to bring in a private arms shipment aboard a ship called '[[Altalena Affair|Altalena]]'. When they refused to hand the arms to the Israeli government, Ben-Gurion ordered that the arms be confiscated by force if necessary. After meeting with armed resistance, the army was ordered by Ben-Gurion to sink the ship. Several Irgun members and IDF soldiers were killed in the fighting. ||| Course of the war ||| First truce: 11 June – 8 July 1948 ||| Reinforcements +0 1948 Arab–Israeli War ||| Battle for Jerusalem (1948) ||| The heaviest fighting occurred in [[Battle for Jerusalem (1948)|Jerusalem]] and on the Jerusalem – Tel Aviv road, between Jordan's [[Arab Legion]] and Israeli forces. ||| Course of the war ||| First phase: 15 May – 11 June 1948 ||| Battles of Latrun +0 1948 Arab–Israeli War ||| Battle of Beersheba (1948) ||| On 19 October, [[Operation Ha-Har]] commenced in the [[Jerusalem Corridor]], while a [[Israeli naval campaign in Operation Yoav#Battle near Majdal|naval battle]] also took place near Majdal (now [[Ashkelon]]), with three Israeli corvettes facing an Egyptian corvette with air support. An Israeli sailor was killed and four wounded, and two of the ships were damaged. One Egyptian plane was shot down, but the corvette escaped. Israeli naval vessels also shelled Majdal on 17 October, and [[Gaza City|Gaza]] on 21 October, with air support from the [[Israeli Air Force]]. The same day, the IDF [[Battle of Beersheba (1948)|captured Beersheba]], and took 120 Egyptian soldiers prisoner. On 22 October, Israeli naval commandos using explosive boats [[Israeli naval campaign in Operation Yoav|sank]] the Egyptian flagship ''[[El Amir Farouq|Emir Farouk]]'', and damaged an Egyptian minesweeper. ||| Course of the war ||| Third phase: 15 October 1948 – 10 March 1949 ||| Negev +0 1948 Arab–Israeli War ||| Haifa Oil Refinery massacre ||| At the end of the month, the IDF had captured the whole Galilee, driven all Lebanese forces out of Israel, and had advanced {{convert|5|mi|km}} into [[Lebanon]] to the [[Litani River]], occupying thirteen Lebanese villages. In the village of [[Hula, Lebanon|Hula]], two Israeli officers killed between 35 and 58 prisoners as retaliation for the [[Haifa Oil Refinery massacre]]. Both officers were later put on trial for their actions. ||| Course of the war ||| Third phase: 15 October 1948 – 10 March 1949 ||| Northern front - Galilee +0 1948 Arab–Israeli War ||| Israeli naval campaign in Operation Yoav ||| On 19 October, [[Operation Ha-Har]] commenced in the [[Jerusalem Corridor]], while a [[Israeli naval campaign in Operation Yoav#Battle near Majdal|naval battle]] also took place near Majdal (now [[Ashkelon]]), with three Israeli corvettes facing an Egyptian corvette with air support. An Israeli sailor was killed and four wounded, and two of the ships were damaged. One Egyptian plane was shot down, but the corvette escaped. Israeli naval vessels also shelled Majdal on 17 October, and [[Gaza City|Gaza]] on 21 October, with air support from the [[Israeli Air Force]]. The same day, the IDF [[Battle of Beersheba (1948)|captured Beersheba]], and took 120 Egyptian soldiers prisoner. On 22 October, Israeli naval commandos using explosive boats [[Israeli naval campaign in Operation Yoav|sank]] the Egyptian flagship ''[[El Amir Farouq|Emir Farouk]]'', and damaged an Egyptian minesweeper. ||| Course of the war ||| Third phase: 15 October 1948 – 10 March 1949 ||| Negev +0 1948 Arab–Israeli War ||| Second Intifada ||| The Palestinian refugee problem and debate about the [[Palestinian right of return]] are also major issues of the [[Arab-Israeli conflict]]. Palestinians and their supporters have staged annual demonstrations and commemorations on 15 May of each year, which is known to them as '[[Nakba Day]]'. The popularity and number of participants in these annual Nakba demonstrations has varied over time. During the [[Second Intifada]] after the failure of the [[Camp David 2000 Summit]], the attendance at the demonstrations against Israel increased. ||| Aftermath ||| Demographic outcome ||| Palestinian Arabs +0 1951 Asian Games ||| Second Sino-Japanese War ||| 1951 Asian Games, thus Asian Games are considered to be a successor of a small-scale multi-sport event known as the [[Far Eastern Games]], held in between a period of 1913 to 1938 in the different cities of [[Japan]], [[Philippines]], and mainland [[Republic of China (1912–1949)|China]]. The First Far Eastern Games took place in Manila, Philippines in [[1913 Far Eastern Games|1913]], after the efforts made by the Philippine Amateur Athletic Federation (PAAF). The Games were successfully organised for the next nine terms, but in September 1937, Japan invaded China after the [[Marco Polo Bridge Incident]] and started the [[Second Sino-Japanese War]] (which later became part of the [[World War II]]), thus the originally planned Games of 1938 in [[Osaka]] was cancelled and the Far Eastern Games were discontinued thereafter. ||| History ||| ||| +0 1966 FIFA World Cup Final ||| Battle of Stalingrad ||| Some Germans cited possible bias of the Soviet linesman (Bakhramov was from [[Azerbaijan]]), Bakhramov later stated in his memoirs that he believed the ball had bounced back not from the crossbar, but from the net and that he was not able to observe the rest of the scene, so it did not matter where the ball hit the ground anyway. (An [[apocryphal]] story exists that Bakhramov, when asked why he gave the goal later, simply replied '[[Battle of Stalingrad|Stalingrad]]'. There is no evidence that this is genuine.) Swiss referee Gottfried Dienst did not see the scene. ||| Match ||| Summary ||| Extra time +0 1971 Bangladesh genocide ||| 2013 Shahbag protests ||| After [[Abdul Quader Molla]], assistant secretary general of Jamaat, was convicted in February 2013 and sentenced to life imprisonment rather than capital punishment, a [[2013 Shahbag protests|peaceful demonstration]] started at Shahbag intersection in Dhaka. Tens of thousands of mostly young demonstrators, including women, have called for the death penalty for those convicted of war crimes. Non-violent protests supporting this position have occurred in other cities as the country closely follows the trials. Abdul Quader Molla was subsequently executed at 10:01 pm on Thursday 12 December 2013 amid controversy on the legitimacy of the war tribunal hearings that drew wide criticism from countries such as US, UK and Turkey and also the UN. A period of unrest ensued organised by the Jamaat-e-Islam. The majority of the population were however found to be in favour of the execution. ||| War crimes trial attempts ||| 2007—Present ||| +0 1973 Old Bailey Bombing ||| Battle of the Bogside ||| [[The Troubles]] had been raging for four years non stop in [[Northern Ireland]] and to a lesser extent the [[Republic of Ireland]] since the [[Battle of the Bogside]] in Derry in August 1969 which brought British troops to [[Ireland]] for the first time since 1921. Rioting, gun battles, sniper attacks, bombings and punishment beatings became part of everyday life very quickly. Hundreds of people had already been killed by the start of 1973 just under five hundred people had been killed in 1972 alone and horrific atrocities had already occurred like [[Bloody Sunday (1972)|Bloody Sunday]] where British soldiers mainly from the [[Parachute Regiment (United Kingdom)|Parachute Regiment]] killed 14 unarmed civilians many of whom were just teenagers, [[Bloody Friday (1972)|Bloody Friday]] when the IRA exploded over 20 bombs in [[Belfast]] city in the space of just over an hour and [[McGurk's Bar bombing]] when a [[Ulster Volunteer Force|UVF]] bombing of a pub killed 15 civilians. These events along with others helped to heighten sectarianism and boosted recruitment into Republican and Loyalist paramilitaries. But the British mainland had been relatively unharmed up until the beginning of 1973, but the IRA's Army council had drawn up plans for a bombing campaign of the mainland for sometime early in 1973. ||| Background ||| ||| +0 1975 Southeast Asian Peninsular Games ||| Fall of Saigon ||| The 8th and last '''[[Southeast Asian Games|Southeast Asian Peninsular Games]]''' were held in [[Bangkok]], [[Thailand]] from 9 - 16 December 1975. South Vietnam, Cambodia and Laos, which only sent token squads made up of military personnel to previous games, declined to participate due to [[Fall of Saigon|internal political problems]]. ||| ||| ||| +0 1975 Spring Offensive ||| Operation Linebacker II ||| The first was that the Paris Accord that ended the American commitment was seriously flawed at the outset, in that it permitted the North Vietnamese to maintain their forces within territorial South Vietnam after the signing of the agreement, thereby dooming the cease-fire. The refusal of the United States government to take promised military action in the face of North Vietnamese violations of the cease-fire has also been examined as a key to the defeat. Adherents to this claim believed that South Vietnam could have been saved by another U.S. bombing campaign. The conflict between the executive and legislative branches of the American government, already severe even before the onset of the [[Operation Linebacker II]] in 1972, was only more exasperating during 1975, when a new campaign would probably only have provoked even more Congressional outrage. ||| Ho Chi Minh Campaign ||| Conclusion ||| +0 1978 South Lebanon conflict ||| Black September in Jordan ||| Though it took the form of an Israeli military incursion into [[Southern Lebanon]], Operation Litani was grounded in the long-running [[Israeli-Palestinian conflict]]. From 1968 on, the [[PLO]], [[Popular Front for the Liberation of Palestine]], and other [[Palestinian people|Palestinian]] groups established a quasi-state in southern Lebanon, using it as a base for [[Palestinian insurgency in South Lebanon|raids on civilian targets]] in northern Israel, as well as worldwide terror attacks on Israeli and other targets. This was exacerbated by an influx of 3,000 PLO militants fleeing a defeat in the [[Black September in Jordan|Jordanian civil war]] and regrouping in southern Lebanon. Israel responded with damaging attacks against PLO bases. ||| Background ||| ||| +0 1978 South Lebanon conflict ||| Coastal Road massacre ||| The '''1978 South Lebanon conflict''' (code-named '''Operation ''Litani''''' by Israel) was an invasion of [[Lebanon]] up to the [[Litani River]], carried out by the [[Israel Defense Forces]] in 1978 in response to the [[Coastal Road massacre]]. The conflict resulted in the deaths of 1,100–2,000 Lebanese and Palestinians, 20 Israelis, the internal displacement of 100,000 to 250,000 people in Lebanon, and the [[PLO]] forces retreating north of the Litani River. It led to the creation of the [[United Nations Interim Force In Lebanon|UNIFIL]] peacekeeping force and an almost complete [[Israel]]i withdrawal. ||| ||| ||| +0 1979 Kurdish rebellion in Iran ||| Iran hostage crisis ||| The defenders were overwhelmed by the power of the Iranian offensive, using heavy artillery, tanks and air cover, but managed effective resistance. Despite the heavy casualties, the bulk of Kurdish Peshmerga evaded capture and death, so they retreated into the mountains. Kurdish effective initiative continued, as Iranian government was distracted by other events in the country, such as the [[Iran hostage crisis|American Embassy hostage crisis]] in Tehran. ||| The rebellion ||| Fighting campaigns and politics ||| +0 1981 Entumbane Uprising ||| Gukurahundi ||| The official count of those killed during the uprising was 260 people; historians place the number of dead higher. The Zimbabwe National Army suffered no fatal casualties. Binda calls the battle the RAR's greatest victory, writing that the troops were greatly outnumbered, but won through superior professionalism and discipline. Several analysts comment on the irony that Mugabe and ZANU–PF were saved from a major rebellion by white-led ex-Rhodesian troops. The battle was the RAR's last; its personnel were reassigned to other units when it was disbanded later in 1981. The rebellion's defeat, meanwhile, prompted mass desertions by ZIPRA guerrillas fearing retribution from the Mugabe administration. Indeed, the uprising partially fuelled Mugabe's bloody ''[[Gukurahundi]]'' campaign against [[Matabeleland]] later in the 1980s. ||| ||| ||| +0 1982 Lebanon War ||| 1978 South Lebanon conflict ||| The [[United Nations Interim Force in Lebanon]], or UNIFIL, was created by the United Nations, with the adoption of the [[United Nations Security Council Resolution 425]] and the [[United Nations Security Council Resolution 426]] on 19 March 1978, to confirm Israeli withdrawal from Lebanon which Israel had [[1978 South Lebanon conflict|invaded]] five days prior, restore international peace and security, and help the Government of Lebanon restore its effective authority in the area. The first UNIFIL troops were deployed in the area on 23 March 1978; these troops were reassigned from other UN peacekeeping operations in the area (namely the [[United Nations Emergency Force]] and the [[United Nations Disengagement Observer Force]] Zone). During the 1982 Lebanon War, UN positions were overrun, primarily by the South Lebanon Army forces under Saad Haddad. {{cite web ||| Opposing forces ||| UNIFIL ||| +0 1982 Lebanon War ||| 1983 Beirut barracks bombing ||| An agreement was reached later in 1982. More than 14,000 PLO combatants evacuated the country in August and September, supervised by the [[Multinational Force in Lebanon]], an international peacekeeping force with troops from the United States, United Kingdom, France, and Italy. About 6,500 Fatah fighters relocated from Beirut to Jordan, Syria, [[Iraq]], Sudan, both [[North Yemen|North]] and [[South Yemen]], Greece, and Tunisia—the latter of which became the new PLO headquarters. [[Philip Habib]], [[Ronald Reagan]]'s envoy to Lebanon, provided an understanding (i.e., assurance) to the PLO that the Palestinian civilians in the refugee camps would not be harmed. However, the United States Marines left West Beirut two weeks before the end of their official mandate following the [[1983 Beirut barracks bombing]]. ||| Timeline ||| Course of the fighting ||| +0 1982 Lebanon War ||| Mountain War (Lebanon) ||| The withdrawal of the IDF from central Lebanon in the summer of 1983, was followed by one of the bloodiest phases of the Lebanese war, where the Christian Militia (the [[Lebanese Forces]]) was left alone to defend the 'Mountain' area which comprised the [[Aley District|Aley]] and [[Chouf District|Chouf]] districts against a coalition of [[Druze]] [[Progressive Socialist Party|PSP]], PLO remnants, Syrian Army, Lebanese Communist, and [[Syrian Social National Party]]. This heavily impacted the civilian population from both sides (more than 5,000 killed from both sides).{{citation needed|date=May 2012}} The [[Mountain War (Lebanon)|Mountain War]] ended after the Christian forces and civilians withdrew to the town of Deir el Kamar where they were besieged for 3 months before all hostilities ceased and they were transported to East Beirut. ||| Outcome of the war ||| Political outcome for Lebanon ||| +0 1982 Lebanon War ||| Sabra and Shatila massacre ||| Following the assassination of [[President of Lebanon|Lebanese President]] Bachir Gemayel, Israel's position in Beirut became untenable and the signing of a peace treaty became increasingly unlikely. Outrage following Israel's role in the Phalangist-perpetrated [[Sabra and Shatila massacre]], of mostly Palestinians and Lebanese Shiites, and Israeli popular disillusionment with the war would lead to a gradual withdrawal from Beirut to the areas claimed by the self-proclaimed [[Free Lebanon State]] in southern Lebanon (later to become [[South lebanon security belt]]), which was initiated following the [[17 May Agreement]] and Syria's change of attitude towards the PLO. After Israeli forces withdrew from most Lebanon, the [[War of the Camps]] broke out between Lebanese factions, the remains of PLO and Syria, in which Syria fought its former Palestinian allies. At the same time, Shi'a militant groups began consolidating and waging a low-intensity [[Guerrilla warfare|guerrilla war]] over the Israeli occupation of southern Lebanon, leading to [[South Lebanon conflict (1985–2000)|15 years of low-scale armed conflict]]. The [[Lebanese Civil War]] would continue until 1990, at which point [[Syrian occupation of Lebanon|Syria had established complete dominance over Lebanon]]. ||| ||| ||| +0 1982 Lebanon War ||| War of the Camps ||| Following the assassination of [[President of Lebanon|Lebanese President]] Bachir Gemayel, Israel's position in Beirut became untenable and the signing of a peace treaty became increasingly unlikely. Outrage following Israel's role in the Phalangist-perpetrated [[Sabra and Shatila massacre]], of mostly Palestinians and Lebanese Shiites, and Israeli popular disillusionment with the war would lead to a gradual withdrawal from Beirut to the areas claimed by the self-proclaimed [[Free Lebanon State]] in southern Lebanon (later to become [[South lebanon security belt]]), which was initiated following the [[17 May Agreement]] and Syria's change of attitude towards the PLO. After Israeli forces withdrew from most Lebanon, the [[War of the Camps]] broke out between Lebanese factions, the remains of PLO and Syria, in which Syria fought its former Palestinian allies. At the same time, Shi'a militant groups began consolidating and waging a low-intensity [[Guerrilla warfare|guerrilla war]] over the Israeli occupation of southern Lebanon, leading to [[South Lebanon conflict (1985–2000)|15 years of low-scale armed conflict]]. The [[Lebanese Civil War]] would continue until 1990, at which point [[Syrian occupation of Lebanon|Syria had established complete dominance over Lebanon]]. ||| ||| ||| +0 1983 Beirut barracks bombing ||| 1982 Lebanon War ||| These attacks eventually led to the withdrawal of the international [[peacekeeping]] force from [[Lebanon]], where they had been stationed since the withdrawal of the [[Palestine Liberation Organization]] (PLO) following the [[Israel]]i [[1982 Lebanon War|invasion of Lebanon]] in 1982. ||| ||| ||| +0 1983 Beirut barracks bombing ||| Battle of Iwo Jima ||| [[Suicide attack|Suicide bombers]] detonated each of the truck bombs. In the attack on the building serving as a barracks for the [[1st Battalion 8th Marines|1st Battalion 8th Marines (Battalion Landing Team - BLT 1/8)]], the death toll was 241 American servicemen: 220 [[United States Marine Corps|Marines]], 18 [[United States Navy|sailors]], and three [[United States Army|soldiers]], making this incident the deadliest single-day death toll for the United States Marine Corps since [[World War II]]'s [[Battle of Iwo Jima]], the deadliest single-day death toll for the [[United States military]] since the first day of the [[Vietnam War]]'s [[Tet Offensive]], and the deadliest single attack on [[United States|Americans]] overseas since World War II. {{cite web|accessdate=September 30, 2007 ||| ||| ||| +0 1983 Beirut barracks bombing ||| Vietnam War ||| [[Suicide attack|Suicide bombers]] detonated each of the truck bombs. In the attack on the building serving as a barracks for the [[1st Battalion 8th Marines|1st Battalion 8th Marines (Battalion Landing Team - BLT 1/8)]], the death toll was 241 American servicemen: 220 [[United States Marine Corps|Marines]], 18 [[United States Navy|sailors]], and three [[United States Army|soldiers]], making this incident the deadliest single-day death toll for the United States Marine Corps since [[World War II]]'s [[Battle of Iwo Jima]], the deadliest single-day death toll for the [[United States military]] since the first day of the [[Vietnam War]]'s [[Tet Offensive]], and the deadliest single attack on [[United States|Americans]] overseas since World War II. {{cite web|accessdate=September 30, 2007 ||| ||| ||| +0 1983 Beirut barracks bombing ||| World War II ||| [[Suicide attack|Suicide bombers]] detonated each of the truck bombs. In the attack on the building serving as a barracks for the [[1st Battalion 8th Marines|1st Battalion 8th Marines (Battalion Landing Team - BLT 1/8)]], the death toll was 241 American servicemen: 220 [[United States Marine Corps|Marines]], 18 [[United States Navy|sailors]], and three [[United States Army|soldiers]], making this incident the deadliest single-day death toll for the United States Marine Corps since [[World War II]]'s [[Battle of Iwo Jima]], the deadliest single-day death toll for the [[United States military]] since the first day of the [[Vietnam War]]'s [[Tet Offensive]], and the deadliest single attack on [[United States|Americans]] overseas since World War II. {{cite web|accessdate=September 30, 2007 ||| ||| ||| +0 1983 United States Senate bombing ||| Invasion of Grenada ||| Minutes before the blast, a caller claiming to represent the 'Armed Resistance Unit' had warned the Capitol switchboard that a bomb had been placed near the Chamber in retaliation for recent U.S. military involvement in [[Invasion of Grenada|Grenada]] and [[Lebanon]]. ||| Bombing ||| ||| +0 1985 Aeroflot Antonov An-12 shoot-down ||| Angolan Civil War ||| The '''1985 Aeroflot Antonov An-12 shoot down''' occurred on November 25, 1985 in [[Angola]] during the [[Angolan Civil War]]. An [[Aeroflot]] [[Antonov An-12|Antonov An-12BP]] cargo aircraft operated by the [[Soviet Air Force]] flying from [[Cuito Cuanavale]] to [[Luanda]] was shot down, allegedly by [[South African Special Forces Brigade|South African Special Forces]], and crashed approximately {{convert|43|km}} east of [[Menongue]] in Angola's [[Cuando Cubango]] province. The incident took place in the aftermath of the [[Soviet Union]]-backed [[Armed Forces for the Liberation of Angola|People's Armed Forces for the Liberation of Angola]]'s (FAPLA) operation ''2 Congresso do Partido'' conducted against units of the National Union for the Total Independence of Angola ([[UNITA]], which received support from South Africa). The transport was carrying eight crew members, 13 passengers and two tank diesel engines in need of repairs. According to eyewitnesses from the local populace and investigative reports the aircraft was shot down by a [[surface-to-air missile]] (SAM). All people on board the aircraft died in the crash. ||| ||| ||| +0 1991 Yugoslav campaign in Croatia ||| Battle of Zadar ||| In northern Dalmatia, the JNA Knin Corps [[Battle of Zadar|attacked Zadar]] on 4 October, reaching its outskirts and lifting the ZNG siege of the Šepurine Barracks the next day. The advance was blocked by the ZNG and a truce was agreed on 7 October. Two days later, it was followed by an agreement to evacuate JNA facilities in Zadar, including equipment stored there. Further south, the JNA Titograd Corps and its Military-Maritime District forces advanced from eastern [[Herzegovina]] and the [[Bay of Kotor]], and pushed east and west of Dubrovnik on 1 October, placing [[Siege of Dubrovnik|besieging the city]] by the end of the month. ||| Timeline ||| Reduced objectives ||| +0 1991 Yugoslav campaign in Croatia ||| Battle of the Barracks ||| The '''1991 Yugoslav campaign in Croatia''' was a series of engagements between the [[Yugoslav People's Army]] (JNA), the [[Yugoslav Navy]] and the [[Yugoslav Air Force]], and the [[Croatian National Guard]] (ZNG) then the [[Croatian Army]] (HV) during the [[Croatian War of Independence]]. The JNA was originally deployed in order to preserve [[SFR Yugoslavia|Yugoslavia]], and the initial plan of the campaign entailed the military occupation of Croatia and the removal of the Croatian leadership [[Croatian parliamentary election, 1990|elected in 1990]]. The JNA intervention was the culmination of its involvement in the confiscation of weapons from Croatia's [[Territorial Defense Forces (Yugoslavia)|Territorial Defence]], and in the [[Log revolution|Croatian Serb revolt]] that had begun in August 1990. From that time, the JNA had been frequently deployed to form a buffer zone between the insurgents and the ZNG or the Croatian police. In effect, these JNA buffer zones often secured the territorial gains of the insurgents and led to an increasingly hostile relationship between the JNA and Croatia. The JNA campaign plan was amended shortly before the campaign to include the relief of [[Battle of the Barracks|JNA barracks besieged by the ZNG]]. The besieging and subsequent capture of several JNA facilities allowed Croatia to arm its previously poorly equipped military and to equip new recruits. ||| ||| ||| +0 1991 Yugoslav campaign in Croatia ||| Operation Whirlwind ||| The second significant HV offensive was [[Operation Vihor|Operation Whirlwind]], launched across the Kupa River on 11 December. The HV was tasked with advancing towards Glina but the operation failed after a shallow bridgehead was established within two days. ||| Timeline ||| Croatian counter-offensive ||| +0 1991 uprising in Karbala ||| Gulf War ||| The '''Shia uprising in Karbala''' was one of many major points of unrest in [[Iraq]] following the [[Gulf War]]. The uprising started after demoralized troops throughout Iraq began to rebel against [[Saddam Hussein]]. From 5 to 19 March 1991, the city of [[Karbala]] became a chaotic battlefield between the insurgents and the [[Iraqi Republican Guard]]. After the failure of the uprising, citizens were killed in large numbers. Parts of the city were nearly leveled. ||| ||| ||| +0 1991 uprising in Sulaymaniyah ||| Gulf War ||| Since the autonomy agreement collapsed in 1974, Kurds had been [[Iraqi-Kurdish conflict|fighting]] an armed insurgency against Saddam's regime. After the [[Gulf War]] heavily damaged the Iraqi military and an uprising began in Southern Iraq.{{Clarify|reason=incomplete sentence|date=April 2014}} After [[Jash (term)|Jash]] (Kurdish militia used by Saddam Hussein's regime to fight [[Peshmerga]]) deserters, seized control of the city of Raniya with support of the local population, many of which turned into overnight Peshmerga.{{Clarify|reason=incomplete sentence|date=April 2014}} The revolutionary feeling spread to the rest of Kurdistan, where people took to the streets and Peshmerga entered the cities and seized control of Raniya, Chawar Qurna, Koi-Sanjaq, Sulaymaniya, Halabja, Arbat, Arbil, Duhuk, Zahku and Kirkuk. ||| Prelude ||| ||| +0 1991 uprisings in Iraq ||| 2003 invasion of Iraq ||| This general stalemate was broken during the 1994–1997 [[Iraqi Kurdish Civil War]], when due to the PUK alliance with Iran, the KDP called in Iraqi support and Saddam sent his military into Kurdistan, capturing [[Arbil]] and Sulaymaniyah. Iraqi government forces retreated after the U.S. intervened by launching [[Cruise missile strikes on Iraq (1996)|missile strikes on southern Iraq]] in 1996. On January 1, 1997, the U.S. and its allies launched [[Operation Northern Watch]] to continue enforcing the no-fly zone in the north the day after Operation Provide Comfort was over. Kurds further expanded their area of control after participating in the U.S.-led [[2003 invasion of Iraq]], which led to the recognition of Kurdish autonomy by the new Iraqi government. ||| Aftermath ||| Kurdish sovereign enclave ||| +0 1991 uprisings in Iraq ||| Cruise missile strikes on Iraq (1996) ||| This general stalemate was broken during the 1994–1997 [[Iraqi Kurdish Civil War]], when due to the PUK alliance with Iran, the KDP called in Iraqi support and Saddam sent his military into Kurdistan, capturing [[Arbil]] and Sulaymaniyah. Iraqi government forces retreated after the U.S. intervened by launching [[Cruise missile strikes on Iraq (1996)|missile strikes on southern Iraq]] in 1996. On January 1, 1997, the U.S. and its allies launched [[Operation Northern Watch]] to continue enforcing the no-fly zone in the north the day after Operation Provide Comfort was over. Kurds further expanded their area of control after participating in the U.S.-led [[2003 invasion of Iraq]], which led to the recognition of Kurdish autonomy by the new Iraqi government. ||| Aftermath ||| Kurdish sovereign enclave ||| +0 1991 uprisings in Iraq ||| Liberation of Kuwait campaign ||| Bush made a similar appeal on March 1, two days after the [[Liberation of Kuwait campaign|liberation of Kuwait]]: ||| U.S. radio broadcasts ||| ||| +0 1991–92 South Ossetia War ||| October Revolution ||| Following the [[October Revolution|breakdown]] of the [[Russian Empire|Tsarist regime]] in Russia, South Ossetians allied with the Russian [[Bolshevik]]s, fighting a [[Georgian–Ossetian conflict (1918–1920)|war]] against the newly independent [[Menshevik]] Georgia. Initially Georgia was successful, but in 1921, the [[Red Army]] conquered the country. South Ossetia became an autonomous [[oblast]] in the [[Soviet republic of Georgia]]. During the Soviet period, relations between ethnic [[Ossetians]] and Georgians were peaceful, with a high rate of interaction and intermarriages. ||| Background ||| ||| +0 1995 Rijeka bombing ||| Bosnian War ||| In the last days of the [[Bosnia war|Bosnian War]], the [[Croatian Defense Council]] (HVO), a [[Croats of Bosnia and Herzegovina|Bosnian Croat]] military force, captured [[Talaat Fouad Qasim]] when he attempted to enter [[Bosnia and Herzegovina]]. {{cite news ||| Cause ||| ||| +0 1997 Open Championship ||| Battle of Tel el-Kebir ||| |align=center|7||[[Battle of Tel el-Kebir|Tel-el-Kebir]]||align=center|402||align=center|4||align=center|16||Well||align=center|542||align=center|5 ||| Course ||| ||| +0 1999 East Timorese crisis ||| International Force for East Timor ||| The [[International Force for East Timor]], or INTERFET, under the command of Australian Major General [[Peter Cosgrove]], entered Dili on 20 September and by 31 October the last Indonesian troops had left East Timor. The arrival of thousands of international troops in East Timor caused the militia to flee across the border into Indonesia, from whence sporadic cross-border raids by the militia against INTERFET forces were conducted. ||| Indonesian withdrawal and peacekeeping force ||| ||| +0 20 July plot ||| Operation Barbarossa ||| In 1942, a new conspiratorial group formed, led by Colonel [[Henning von Tresckow]], a member of Field Marshal [[Fedor von Bock]]'s staff, who commanded Army Group Centre in [[Operation Barbarossa]]. Tresckow systematically recruited oppositionists to the Group's staff, making it the nerve centre of the army resistance. Little could be done against Hitler as he was heavily guarded, and none of the plotters could get near enough to him. ||| Background ||| ||| +0 2001 anthrax attacks ||| 2003 invasion of Iraq ||| A theory that Iraq was behind the attacks, based upon the evidence that the powder was weaponized and some reports of alleged meetings between 9/11 conspirators and Iraqi officials, may have contributed to the momentum which ultimately led to the [[2003 invasion of Iraq|2003 war]]. ||| Aftermath ||| Political effects ||| +0 2003 invasion of Iraq ||| Al Asad Airbase ||| Australia contributed approximately 2,000 [[Australian Defence Force]] personnel, including a special forces task group, three warships and 14 [[F/A-18 Hornet]] aircraft. On 16 April 2003, [[Australian contribution to the 2003 invasion of Iraq#Forces committed|Australian special operations]] forces captured [[Al Asad Airbase]] west of Baghdad. The base would later become the second largest Coalition facility post-invasion. ||| Coalition and Allied contingent involvement ||| Australia ||| +0 2003 invasion of Iraq ||| Gulf War ||| Since the 1991 [[Gulf War]], the U.S. and UK had been engaged in low-level attacks on Iraqi air defenses which targeted them while enforcing [[Iraqi no-fly zones]]. These zones, and the attacks to enforce them, were described as illegal by the former UN Secretary General, [[Boutros Boutros-Ghali]], and the French foreign minister [[Hubert Vedrine]]. Other countries, notably Russia and China, also condemned the zones as a violation of Iraqi sovereignty. In mid-2002, the U.S. began more carefully selecting targets in the southern part of the country to disrupt the military command structure in Iraq. A change in enforcement tactics was acknowledged at the time, but it was not made public that this was part of a plan known as [[Operation Southern Focus]]. ||| Invasion ||| ||| +0 2003 invasion of Iraq ||| Operation Enduring Freedom ||| The '''2003 invasion of Iraq''' lasted from 19 March to 1 May 2003 and signaled the start of the [[Iraq War]], which was dubbed Operation Iraqi Freedom by the United States (prior to 19 March, the mission in Iraq was called [[Operation Enduring Freedom]], a carryover from the [[NATO War in Afghanistan|War in Afghanistan]]). The invasion consisted of 21 days of major combat operations, in which a combined force of troops from the [[United States]], the [[United Kingdom]], [[Australia]] and [[Poland]] invaded [[Iraq]] and deposed the [[Ba'athist]] [[Ba'ath Party (Iraqi-dominated faction)|government]] of [[Saddam Hussein]]. The invasion phase consisted primarily of a conventionally fought war which concluded with the capture of the Iraqi capital of [[Baghdad]] by American forces. ||| ||| ||| +0 2003 invasion of Iraq ||| Operation Red Dawn ||| U.S.-led Coalition troops promptly began searching for the key members of Saddam Hussein's government. These individuals were identified by a variety of means, most famously through sets of [[most-wanted Iraqi playing cards]]. Later during the [[military occupation]] period after the invasion, on 22 July 2003 during a raid by the U.S. 101st Airborne Division and men from [[Task Force 20]], Saddam Hussein's sons [[Uday Hussein|Uday]] and [[Qusay Hussein|Qusay]], and one of his grandsons were killed in a massive fire-fight. Saddam Hussein himself was captured on 13 December 2003 by the U.S. Army's 4th Infantry Division and members of [[Task Force 121]] during [[Operation Red Dawn]]. ||| Invasion ||| Fall of Baghdad (April 2003) ||| +0 2003 invasion of Iraq ||| United States presidential election, 2000 ||| With the election of George W. Bush as [[President of the United States|president]] in [[United States presidential election, 2000|2000]], the U.S. moved towards a more aggressive policy toward Iraq. The [[Republican Party (United States)|Republican Party's]] campaign platform in the 2000 election called for 'full implementation' of the Iraq Liberation Act as 'a starting point' in a plan to 'remove' Hussein. ||| Prelude to the invasion ||| ||| +0 2003–04 Armenian protests ||| Armenian presidential election, 2003 ||| A series of mass protests were held in [[Armenia]] following the [[Armenian presidential election, 2003|2003 presidential election]], led by the former presidential candidate [[Stepan Demirchyan]]. ||| ||| ||| +0 2004 Indian Ocean earthquake and tsunami ||| Iraq War ||| In a poll conducted in 27 countries by [[GlobeScan]] for [[BBC World Service]], 15 percent of respondents named the tsunami the most significant event of the year. Only the [[Iraq War]] was named by as many respondents. ||| Humanitarian, economic and environmental impact ||| Other effects ||| +0 2004 Open Championship ||| Battle of Tel el-Kebir ||| |align=center|7||[[Battle of Tel el-Kebir|Tel-el-Kebir]]||align=center|405||align=center|4||align=center|16||Well||align=center|542||align=center|5 ||| Course ||| ||| +0 2005 Ahvaz unrest ||| Ahvaz bombings ||| '''2005 Ahvaz unrest''' Following the unrest, several [[Ahvaz bombings|bombings]] were carried out in Ahvaz, killing 28 people.{{Citation needed|date=July 2011}} In 2006, Iran executed five Arab separatists, convicted of carrying out the bombings in 2005. ||| ||| ||| +0 2005 Lake Tanganyika earthquake ||| Second Congo War ||| Early reports indicated that the heaviest damage was sustained by the eastern provinces of the [[Democratic Republic of the Congo]] (DRC), a region already ravaged by extensive war and extreme poverty. The area houses tens of thousands of [[refugee]]s displaced by conflicts, such as the [[Second Congo War]] and the [[Burundian Civil War]], that have plagued the [[African Great Lakes]] in the 1990s and 2000s. ||| ||| ||| +0 2005 Nalchik raid ||| Battle of Yarmouk ||| At 1:20 pm, the President of Russia's Kabardino-Balkaria republic [[Arsen Kanokov]], announced on [[Echo of Moscow]] that several of the attackers been taken alive. He also claimed that all enemy combatants seized so far were members of a radical [[Islamist]] group known as [[Yarmuk Jamaat]]. [[Radio Free Europe]] speculated that the name of this group may be a reference to a 7th-century [[Battle of Yarmouk|battle]] in which [[Arab]] forces defeated a [[Byzantine Empire|Byzantine]] army. ||| Attack ||| Public announcements and prolongation of the conflict ||| +0 2006 Lebanon War ||| 1982 Lebanon War ||| Concurrently, Syria began a [[Syrian occupation of Lebanon|29-year military occupation]] in 1976. Israel's [[Operation Litani|1978 invasion of Lebanon]] failed to stem the Palestinian attacks in the long run, but [[1982 Lebanon War|Israel invaded Lebanon]] again in 1982 and forcibly expelled the PLO. ||| Background ||| ||| +0 2006 Madrid–Barajas Airport bombing ||| 2004 Madrid train bombings ||| On October 24, a commando unit formed by at least five members of ETA stole around 300 [[revolvers]] and 50 pistols, as well as ammunition, from an arms warehouse in [[Vauvert]], France, and on November 4, the Basque newspaper [[Gara]] released an ETA private document in which it warned the Spanish government that the 'peace process' was 'in crisis'. After the bombing, the [[ABC (newspaper)|ABC]] newspaper reported that before the attack, ETA had reminded Rodríguez Zapatero about the [[2004 Madrid train bombings]] as a way to pressure the Government. During the ceasefire, street violence around the Basque Country, known as [[kale borroka]], did not stop. ||| Background ||| ||| +0 2007 Glasgow International Airport attack ||| 2003 invasion of Iraq ||| During his testimony during trial, Bilal said his motivation was the destruction of Iraq, first through sanctions that included even medicine, the rise of childhood leukaemia which he blamed on [[depleted uranium]] armour-piercing shells used in the 1991 [[Gulf War]], and for destruction of infrastructure during the US and British [[Iraq war|2003 invasion of Iraq]]. ||| Belligerents ||| Bilal Abdullah ||| +0 2007 Lebanon conflict ||| Lebanese Civil War ||| It was the most severe internal fighting since [[Lebanon]]'s 1975–90 [[Lebanese Civil War|civil war]]. The conflict revolved mostly around the siege of [[Nahr el-Bared]], but minor clashes also occurred in the [[Ain al-Hilweh]] refugee camp in southern Lebanon and several terrorist bombings took place in and around Lebanon's capital, [[Beirut]]. Fighting ended in September 2007. ||| ||| ||| +0 2007 Samjhauta Express bombings ||| Indo-Pakistani War of 1971 ||| Since their formation resulting from the [[Partition of India]] in 1947, India and Pakistan have had a conflict-ridden relationship. In their plan for the partition, the British allowed all 565 [[princely state]]s to decide which country they wanted to join. The countries have fought four wars over this disputed region: the [[Indo-Pakistani War of 1947]], the [[Indo-Pakistani War of 1965]], the [[Indo-Pakistani War of 1971]] (resulting in the formation of Bangladesh), and the [[Kargil War]] in 1999. ||| Background ||| ||| +0 2008 Bucharest summit ||| Iraq War ||| [[Romania]] competed for the organization of this summit with [[Portugal]], which initially was scheduled to host the summit in 2006, but eventually conceded in favor of [[Latvia]], which held the [[2006 Riga Summit]]. Romania received support from the United States, and [[Under Secretary of State for Political Affairs|U.S. Under Secretary of State]] [[R. Nicholas Burns]] said in December 2006 that Romania deserved the honor to hold this event due to its contribution to the Alliance's common effort in the [[War in Afghanistan (2001–present)|War in Afghanistan]] and for stability in the [[Iraq War]]. Romania has been a member of NATO since 14 March 2004. ||| Host ||| ||| +0 2008 Turkish incursion into northern Iraq ||| 2003 invasion of Iraq ||| The incursion was announced on the Turkish General Staff's website the following day, and would constitute the 'first confirmed ground incursion' since the [[2003 invasion of Iraq]]. ||| Operation Sun ||| Incursion ||| +0 2008 Wah bombing ||| War in North-West Pakistan ||| [[Maulvi Omar]], a spokesman for the Pakistani [[Taliban]], said his group the [[Tehrik-e-Taliban]] had carried out the attacks, which he said were in response to [[War in North-West Pakistan|military operations]] against militants in the [[Bajaur]] region ||| Responsibility ||| ||| +0 2008 attack on Omdurman and Khartoum ||| Second Sudanese Civil War ||| It was the first time that the [[War in Darfur]], previously confined to western Sudan, reached the country's capital. Overall, the war has claimed the lives of up to 300,000 people, with 2.5 million more made homeless since 2003 (the United States has labeled the conflict in Darfur as genocide, a charge the Sudanese government has rejected). Despite [[Second Sudanese Civil War|decades of warfare]] in [[Southern Sudan]], Khartoum had not experienced any street fighting since 1976. ||| ||| ||| +0 2008–09 Battle of Kilinochchi ||| Battle of Mullaitivu (1996) ||| The Sri Lanka Army withdrew from Kilinochchi in 1990, enabling the LTTE to take control of the town for the first time. The SLA recaptured it during operations Sathjaya I, II, and III in September 1996. However, the LTTE launched [[Battle of Kilinochchi (1998)|Operation Unceasing Waves II]] in September 1998 and captured the town again, forcing the SLA to vacate it. This battle caused heavy casualties to both sides, and the loss was described by the then military spokesman, Brigadier Sunil Tennakoon, as 'the largest blow after [[Battle of Mullaitivu (1996)|Mullaitivu]]'. ||| History and background ||| ||| +0 2008–09 Battle of Kilinochchi ||| Eastern Theater of Eelam War IV ||| After the Sri Lankan military [[Eastern Theater of Eelam War IV|captured the Eastern Province]] from the LTTE, it advanced rapidly into LTTE-held territory in the [[Northern Province, Sri Lanka|Northern Province]]. The town of Kilinochchi was a major target for the troops during this offensive. With the SLA advancing on several fronts, the [[57 Division (Sri Lanka)|57 Division]] and Task Force 1 (now 58 Division) operated on the Kilinochchi front with the objective of capturing the town. The overall operation was led by Major General Jagath Jayasuriya, the Wanni Security Forces Commander. Both divisions advanced from the west of the country, with 57 Division approaching Kilinochchi from the south and west, while the Task Force 1 advanced further northwards, capturing other key strongholds of the LTTE in order to converge on Kilinochchi from the north. ||| Preparations ||| ||| +0 2008–09 Battle of Kilinochchi ||| Northern Theater of Eelam War IV ||| The '''Battle of Kilinochchi ''' was a land battle fought between the [[Military of Sri Lanka|Sri Lankan Military]] and the [[Liberation Tigers of Tamil Eelam]] (LTTE) for the control of the town of [[Kilinochchi]] in the [[Northern Theater of Eelam War IV|Northern Theater]] of [[Eelam War IV]] during the [[Sri Lankan civil war]] between November 2008 and January 2009. The town of [[Kilinochchi]] was the administrative center and [[de facto]] capital of the LTTE's proposed state of [[Tamil Eelam]]. ||| ||| ||| +0 2008–09 Battle of Kilinochchi ||| Third Battle of Elephant Pass ||| The military continued its advance into LTTE held territory and captured the key LTTE position at [[Pallai]] within a few days. Soon afterward on 9 January, the SLA [[Third Battle of Elephant Pass|captured]] the strategically important [[Elephant Pass]] area, which links the [[Jaffna Peninsula]] with the mainland. ||| Aftermath ||| ||| +0 2010 South Kyrgyzstan ethnic clashes ||| Tulip Revolution ||| Following the [[dissolution of the Soviet Union]], the Kyrgyz president [[Askar Akayev]] suppressed Kyrgyz ethnic nationalism, favoring [[Pan-Islamism|Pan-Islamic]] and [[Pan-Turkism|Pan-Turkic]] unity until he was overthrown in the 2005 [[Tulip Revolution]]. ||| Background ||| Soviet period ||| +0 2010–12 Algerian protests ||| Algerian Civil War ||| first free [[Algerian legislative election, 1991|parliamentary election]] in 1991, the military staged a coup d'état, voided the election results, declared a state of emergency which remained in force until 2011, and arrested the FIS leadership. This led to the founding of the [[Armed Islamic Group of Algeria|Armed Islamic Groups]] (GIA) and the ten-year [[Algerian Civil War]], in which an estimated 150,000 people were killed. ||| Background ||| ||| +0 2011 Armenian protests ||| Egyptian Revolution of 2011 ||| On 18 February, the Armenian National Congress held a major protest drawing between 5,000 and 10,000 in the city center of Yerevan. The protesters, including Ter-Petrosyan, complained of low wages, unemployment, inflation, corruption, and a falling [[quality of living]]. Speakers at the rally also invoked the specter of the [[Tunisian Revolution|Tunisian]] and [[Egyptian Revolution of 2011|Egyptian]] revolutions, and Ter-Petrosyan compared the Sargsyan administration to those fallen regimes. 'The plight of our people is no better than the plight of the peoples of those countries, and Armenia's regime is no less dictatorial and hated than the regimes in those countries,' the former president said. He urged the government to resign and called for an uprising similar to those seen in [[Arab world|Arab]] countries [[Greater Middle East|near]] Armenia. Ter-Petrosyan also called on street vendors and others already organizing in protest of government policies to 'politicize' their rallies and join with the national opposition in calling for sweeping changes. ||| Timeline of protests ||| Political protests ||| 18 February +0 2011 Faisalabad bombing ||| War in North-West Pakistan ||| *[[War in North-West Pakistan]] ||| See also ||| ||| +0 2011 Israeli border demonstrations ||| Yom Kippur War ||| On 5 June 2011 Palestinian and Syrian protesters moved towards the Golan Heights line of control near [[Quneitra]] and [[Majdal Shams]]. ''The New York Times'' said that, either way, this clash produced the greatest loss of life in the Golan since the [[Yom Kippur War]] in 1973. ||| 5 June events ||| Syria ||| +0 2011 Israeli social justice protests ||| Occupy Wall Street ||| *[[Occupy Wall Street]] ||| See also ||| ||| +0 2011 Kashgar attacks ||| War in North-West Pakistan ||| The Chinese government is investigating the cause of the violence, and it did not offer an immediate explanation as for the attackers' motives. Terrorism expert [[Rohan Gunaratna]] said that the violence could either be 'conducted or influenced by the East Turkestan Islamic Movement', although he said the movement had been weakened by [[War in North-West Pakistan|Pakistani counter-terror operations]] from 2003, which included ETIM leaders like Hasan Mahsum and Abdul Haq al-Turkistani being killed. ||| Attribution ||| ||| +0 2011 Khuzestan protests ||| Ahvaz bombings ||| The latest developments of this conflict erupted in the recent decade, when a large scale [[2005 Ahvaz unrest|violent unrest]] took place in April 2005 and consequently a series of [[Ahvaz bombings|bombings]] was carried out in Ahvaz and other cities in Iran, blamed upon Sunni Arab separatist groups of Ahvaz. ||| Background ||| ||| +0 2011 Lebanese protests ||| Cedar Revolution ||| A rally was organised by the [[March<!-- --> 14 alliance]] in which several hundreds of thousands supporters attended in commemoration of the start [[Cedar Revolution]] 6 years earlier. The main slogan of the rally was calling for the disarmament of [[Hezbollah]] and to renew support for the ideals of the revolution. ||| Protests ||| 13 March ||| +0 2011 London anti-cuts protest ||| Occupy Wall Street ||| * [[Occupy Wall Street]] ||| See also ||| ||| +0 2011 NATO attack in Pakistan ||| Gora Prai airstrike ||| | battles = [[Gora Prai airstrike]] {{·}} [[Lowara Madi incident]] {{·}} [[Tanai incident]] {{·}} [[Kurram incident]] {{·}} [[Datta Khel incident]] {{·}} 2011 NATO attack in Pakistan ||| ||| ||| +0 2011 NATO attack in Pakistan ||| Taliban insurgency ||| Both sides reported they were attacked first. The poorly defined border, as well as a history of [[Taliban insurgency|Taliban fighters]] moving around the Afghan border regions, were cited as possible contributing factors to the incident. ||| Background and timeline ||| The incident ||| +0 2011 Tel Aviv nightclub attack ||| 2011 southern Israel cross-border attacks ||| The attack occurred during the time Israel was increasing security on its southern border following [[2011 southern Israel cross-border attacks|a series of militant attacks]] two weeks prior. ||| Background ||| ||| +0 2011 Western Saharan protests ||| Gdeim Izik protest camp ||| The '''2011 Western Saharan protests''' began on 25 February 2011 as a reaction to the failure of police to prevent anti-[[Sahrawi people|Sahrawi]] looting in the city of [[Dakhla, Western Sahara|Dakhla]], Western Sahara, and blossomed into protests across the [[United Nations list of Non-Self-Governing Territories|territory]]. They were related to the [[Gdeim Izik protest camp]] in Western Sahara established the previous fall, which had resulted in violence between Sahrawi activists and Moroccan security forces and supporters. The protests also purportedly drew inspiration from the Arab Spring and successful revolts in [[Tunisian revolution|Tunisia]] and [[2011 Egyptian revolution|Egypt]], ||| ||| ||| +0 2011 Wisconsin protests ||| Egyptian Revolution of 2011 ||| * On February 21, a major draw for the protesters was [[Tom Morello]], guitarist of rock group [[Rage Against the Machine]], who said his mother was a union public school teacher in Illinois. Morello also said '[f]riends and unions in [[Brazil]] and in [[Korea]] — the whole world is watching'; and that he had 'even heard from a principal organizer of the [[Egyptian Revolution of 2011|protests in Cairo]] about what's happening in Madison.' ||| Responses ||| Entertainment media ||| +0 2011 attack on the Israeli Embassy in Egypt ||| 2011 southern Israel cross-border attacks ||| On 18 August 2011, a squad of militants crossed the border from the Sinai Peninsula into southern Israel, [[2011 southern Israel cross-border attacks|killing eight Israelis]]. The ensuing Israeli counter-terrorist operations in close proximity to the border resulted in the deaths of 'at least three' Egyptian soldiers. The soldiers' deaths by Israeli fire{{citation needed|date=September 2011}} ignited protests at the Israeli Embassy in Giza. During a demonstration on 20 August 2011, [[Ahmad Al-Shahhat|an Egyptian protester]] climbed 20-feet up the building's facade to remove the [[Israeli flag]]. ||| Background ||| ||| +0 2011–12 Iranian protests ||| Iranian presidential election, 2009 ||| Following the highly controversial [[Iranian presidential election, 2009|2009 Iranian presidential elections]], [[2009–10 Iranian election protests|massive protests]] erupted across Iran. The Iranian government suppressed the protests and stopped the mass demonstrations in 2009, with only very minor flare-ups in 2010. However, not many of the protesters' demands were met. ||| Background ||| ||| +0 2012 Armenian–Azerbaijani border clashes ||| Nagorno-Karabakh War ||| The two countries fought a [[Nagorno-Karabakh War|war in the early 1990s]] over the enclave of [[Nagorno-Karabakh]], while tensions have recently escalated. Since the beginning of 2011, 63 people have been killed in skirmishes between Armenia and Azerbaijan. ||| Background ||| ||| +0 2012 Assam violence ||| Indo-Pakistani War of 1971 ||| The violence in 2012 followed ethnic tensions between the indigenous Bodo people and Bengali-speaking Muslims. While the Muslim community state that they are descendants of [[East Bengal]]i Muslims brought to Assam during the [[British Raj]], local communities allege that the Muslim population has increased, boosted by refugees from the erstwhile [[East Pakistan]] prior to the [[Indo-Pakistani War of 1971]] ||| Background ||| ||| +0 2012 Chicago summit ||| Occupy movement ||| Planners expected the NATO summit to draw protesters from the [[Occupy movement]], as well as the [[anti-globalization movement]], and many protesters from around the world. Some parochial schools -only those near the downtown meeting site- had considered closing for the event. However, no Chicago Public Schools closed for the event -not even those near the downtown site. ||| Protests ||| ||| +0 2012 Gayari Sector avalanche ||| Siachen conflict ||| The Siachen Glacier region in the eastern [[Karakoram]] range in the [[Himalaya]] Mountains has been the site of [[Siachen conflict|intermittent conflict]] between [[India]] and [[Pakistan]] for several decades. In 1949, a ceasefire line was negotiated between the two countries in an effort to resolve the competing territorial claims of the violent [[Kashmir conflict]]. ||| Background ||| ||| +0 2012 Khyber Agency bombing ||| 2011 NATO attack in Pakistan ||| The Khyber Agency market bombing was recorded to be the first major terrorist attack in the country since September 2011 when a Taliban suicide bomber had killed 46 people at a funeral in [[Lower Dir]], targeting anti-Taliban militia members. until the closure of all supply lines by Pakistan in the wake of a NATO-led [[2011 NATO attack in Pakistan|attack on Pakistani military checkposts]] which resulted in the death of 24 Pakistani soldiers. ||| Background ||| ||| +0 2012–13 Iraqi protests ||| 2003 invasion of Iraq ||| Iraqi Sunnis traditionally held power in [[Iraq]], but the Sunni-dominated [[Arab Socialist Ba'ath Party – Iraq Region|Ba'ath party]] was overthrown by the [[United States Armed Forces]] during the [[2003 invasion of Iraq|2003 invasion]], and [[Shia Islam|Shia]] groups gained power. [[Demographics of Iraq#Religions|The majority of Iraqis]] are Shiites. ||| Background ||| ||| +0 2012–13 Iraqi protests ||| May 2013 Iraq attacks ||| On 17 May, at least 72 [[May 2013 Iraq attacks|deaths were reported]] in several cities, including the capital, on Sunni targets. Following a previous week attack on alcohol shops that killed 12 people, the mixed Sunni-Shia area of Zayhouna in Baghdad was attacked again at a brother that resulted in the deaths of seven women and five men. ||| Timeline ||| 2013 ||| May +0 2012–13 Maribor protests ||| Ten-Day War ||| Reports on what triggered the violence vary, however, the area was quickly a scene of a massive [[riot]] with heavy clashes that erupted between hundreds of protesters and members of the police. [[Reporter]]s present at the protests described the scenes that followed as 'a war zone' and as unprecedented in the history of Slovenia, since its [[Ten-Day War|independence in 1991]]. ||| Protests ||| Maribor ||| 26 November 2012 ('The second Maribor uprising') +0 2013 Egyptian coup d'état ||| Egyptian Revolution of 2011 ||| In February 2011, [[Hosni Mubarak]] resigned after [[Egyptian Revolution of 2011|18 days of mass demonstrations]] that ended [[History of Egypt under Hosni Mubarak|his 29-year rule of Egypt]]. In July 2011 the caretaker government approved an election law, leading to election of a Parliament in December 2011 - January 2012, and an advisory council in January–February 2012 [ref: Egyptian Parliamentary Election 2011-2012; Wikipedia] An alliance led by the Freedom and Justice Party won the most seats in each election. An additional 25% of the members of the advisory council were to be appointed by the President. In June 2012, Mohamed Morsi won the [[Egyptian presidential election, 2012|presidential election]] with 51.73% of total votes to become the first democratically elected president of Egypt. In June 2012, prior to Morsi being sworn in as President, the Supreme Constitutional Court ruled that the election law was unconstitutional and ordered the elected bodies dissolved. After assuming office, President Morsi appointed additional members to the advisory council from 35 political parties and invited the elected bodies to meet to discuss the ruling of the court. ||| Background ||| ||| +0 2013 India–Pakistan border skirmishes ||| 2008 Mumbai attacks ||| The then Indian Home Minister [[Sushil Kumar Shinde]] alleged on 9 January that the [[2008 Mumbai attacks]] mastermind and [[Lashkar-e-Toiba]] founder [[Hafiz Muhammad Saeed|Hafiz Saeed]] has visited the Indo-Pakistani border a few days before the Indian soldiers were killed. He cited intelligence obtained by Indian intelligence agencies, and said that they were trying to obtain more details on the visit. However, Saeed rejected the claim, calling it a 'blatant lie' and challenged the Indian government to prove the allegation. He said that India was trying to shift focus from its internal problems and was exploiting the sentiments against Pakistan. ||| Reactions ||| India ||| +0 2013 India–Pakistan border skirmishes ||| War in North-West Pakistan ||| Ali Ahmed, a freelance journalist who writes for the [[The Express Tribune|''Express Tribune'']], wrote that media coverage in Pakistan was not very extensive was partially due to focus being diverted to Pakistan's upcoming [[Pakistani general election, 2013|general elections]] – which was only weeks away – and the fallout of the [[War in North-West Pakistan]]. ||| Media coverage ||| Pakistan ||| +0 2014 Albanian demonstrations in Macedonia ||| Smilkovci lake killings ||| The '''2014 Albanian demonstrations in Macedonia''' were series of protests in cities populated with [[Albanians in Macedonia|Albanians]] in [[Republic of Macedonia|Macedonia]], following the sentence to life imprisonment of six ethnic Albanians, related to [[Smilkovci lake killings]] and the Operation 'Monster'. ||| ||| ||| +0 2014 Euromaidan regional state administration occupations ||| 2014 Ukrainian revolution ||| After the Euromaidan movement was successful in [[2014 Ukrainian revolution|overthrowing the government]] of [[Victor Yanukovych]] on 22 February, RSA occupations by Euromaidan activists gradually ceased. [[Antimaidan|Opposition to the Euromaidan]] in largely [[Russophone]] [[Eastern Ukraine|eastern]] and [[southern Ukraine]], however, led to [[2014 pro-Russian conflict in Ukraine|protests by pro-Russian and anti-government groups]] in those regions. Protesters there quickly began to attempt to occupy RSA buildings in a similar manner. ||| Background ||| ||| +0 2014 Jinnah International Airport attack ||| Operation Zarb-e-Azb ||| Following the attack, the Pakistani military conducted a series of aerial strikes on militant hideouts in the tribal areas along the Afghan border. At least 25 militants were killed on 10 June, including foreign fighters. These military responses culminated in [[Operation Zarb-e-Azb]], a comprehensive [[Pakistan Armed Forces]] operation against militants in North Waziristan. ||| ||| ||| +0 2014 Odessa clashes ||| 2014 Ukrainian revolution ||| Clashes between [[Euromaidan]] and [[anti-Maidan]] demonstrators erupted in the southern Ukrainian port city of [[Odessa]] during January 2014, during the lead-up to the [[2014 Ukrainian revolution|late February revolution]]. Many people in [[Southern Ukraine|southern]] and [[Eastern Ukraine|eastern]] Ukraine [[2014 pro-Russian unrest in Ukraine|opposed the revolution]]. Odessa, largely [[Russophone]], witnessed [[Ukrainian crisis|continued unrest]] throughout 2014. The worst incident occurred on 2 May, when forty-six pro-Russian anti-Maidan protesters were killed and over 200 people were injured during a confrontation with pro-Ukrainian unity protesters at the Trade Unions House in central Odessa. ||| ||| ||| +0 2014 Ukrainian revolution ||| Eastern Front (World War II) ||| On 28 February 2014, monument dedicated to [[Red Army|Soviet forces]] who fought [[Eastern Front (World War II)|World War II]] and memorial to Soviet soldiers who fought in Afghanistan both erected in Dnepropetrovsk city were vandalized and painted with nationalistic slogans. ||| Aftermath ||| Destruction of monuments ||| +0 2014 Ukrainian revolution ||| Ukrainian presidential election, 2014 ||| //web.archive.org/web/20081201194141/http://www.euronews.com/2014/02/21/eu-foreign-ministers-praise-risk-taking-ukrainian-protagonists/|archivedate=22 February 2014}} ) on 21 February. Officially called the [[Agreement on settlement of political crisis in Ukraine]], but unofficially called the 21 February Agreement, the agreement was signed by both opposition leaders and the president after overnight negotiations (read the full text of the agreement here ). The deal agreed to: a [[Constitution of Ukraine#2004 and 2010 amendments and alleged 2014 return to 2004 amendments|restoration of the Constitution as it was between 2004 and 2010]]; constitutional reform to be completed by September; [[Ukrainian presidential election, 2014|early presidential elections no later than December 2014]]; an investigation into the violence conducted under joint monitoring of the authorities, opposition, and the Council of Europe; a veto on imposing a state of emergency; amnesty for protesters arrested since 17 February; surrendering of public buildings occupied by protesters; the forfeiture of illegal weapons; 'new electoral laws' to be passed and the formation of a new [[Central Election Commission of Ukraine|Central Election Commission]]. {{cite web|title=Agreement on the Settlement of Crisis in Ukraine|url=http://www.auswaertiges-amt.de/cae/servlet/contentblob/671348/publicationFile/190025/140221-UKR_Erklaerung.pdf|accessdate=21 February 2014|archiveurl= ||| Timeline ||| 21 February ||| Deal +0 2014 White House intrusion ||| Iraq War ||| The '''2014 White House intrusion''' occurred on September 19, 2014, when Omar J. Gonzalez, an [[Iraq War]] veteran with [[post-traumatic stress disorder]], jumped over the [[White House]]'s fence and entered the building's front door before being stopped by security officers and arrested. He was found to have a small knife in his pocket, and stated that the 'atmosphere was collapsing' and he needed to tell the president so that he could alert the public. President [[Barack Obama]] and his family were not home at the time of the incident. As a result of this incident and other security breaches at the White House, then [[Director of the United States Secret Service]], [[Julia Pierson]], resigned from her position on October 1, 2014. ||| ||| ||| +0 2014 pro-Russian unrest in Ukraine ||| 2014 Euromaidan regional state administration occupations ||| Unrest first gripped [[Kharkiv]] city on 22 February 2014, when [[Euromaidan]] protesters [[2014 Euromaidan regional state administration occupations|occupied]] the Kharkiv regional state administration (RSA) building. Local police kept Euromaidan and [[Anti-Maidan]] protesters apart until 1 March. ||| Unrest by region ||| Kharkiv Oblast ||| +0 2014 pro-Russian unrest in Ukraine ||| 2014 Ukrainian revolution ||| From the end of February 2014, demonstrations by pro-Russian and anti-government groups took place in major cities across the [[Eastern Ukraine|eastern]] and [[Southern Ukraine|southern]] regions of [[Ukraine]], in the [[2013–15 Ukrainian crisis|aftermath]] of the [[Euromaidan]] movement and the [[2014 Ukrainian revolution]]. During the first stage of the unrest, [[Crimea]] was [[Annexation of Crimea by the Russian Federation|annexed]] by the [[Russian Federation]] after a [[2014 Crimean crisis|crisis in the region]], [[2014 Russian military intervention in Ukraine|Russian military intervention]], and an internationally criticized [[Crimean status referendum, 2014|referendum]]. Protests in [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] [[Oblasts of Ukraine|oblasts]] escalated into an [[War in Donbass|armed separatist insurgency]]. ||| ||| ||| +0 2014 pro-Russian unrest in Ukraine ||| Battle of Stalingrad ||| On 24 April, Ukrainian forces made a series of 'probing attacks' into Sloviansk against the insurgents. The self-proclaimed separatist mayor of the city, [[Vyacheslav Ponomarev (public figure)|Vyacheslav Ponomarev]], declared in response that 'We will make [[Battle of Stalingrad|Stalingrad]] out of this town'. ||| Unrest by region ||| Donetsk Oblast ||| Government building seizures +0 2014–15 Russian military intervention in Ukraine ||| 2014 Ukrainian revolution ||| Following months of protests as part of the [[Euromaidan]] movement, on 22 February 2014, protesters [[2014 Ukrainian revolution|ousted]] the government of Ukrainian president [[Viktor Yanukovych]] who was elected with 48.95% votes in 2010. ||| Background ||| Euromaidan and Anti-Maidan ||| +0 2014–15 Russian military intervention in Ukraine ||| Annexation of Crimea by the Russian Federation ||| In 2014, [[Russia]] made several incursions into [[Ukraine|Ukrainian territory]]. Beginning with [[Crimea]], [[Little green men (2014 Crimean crisis)|Russian soldiers without insignias]] took control of strategic positions and infrastructure within the Ukrainian territory of Crimea, which Russia [[Annexation of Crimea by the Russian Federation|annexed]] after a disputed [[Crimean status referendum, 2014|referendum]]. ||| ||| ||| +0 2014–15 Russian military intervention in Ukraine ||| Assassination of Boris Nemtsov ||| Shortly before [[Assassination of Boris Nemtsov|his death]], [[Boris Nemtsov]] was reportedly contacted by a group of 'paratroopers from [[Ivanovo]]' who complained about significant losses in their unit during a battle in Ukraine and the lack of the promised payment. Nemtsov was preparing a larger report documenting cases of Russian soldiers taking part in the [[war in Donbass]], which is considered a possible reason for his assassination. ||| Donbass ||| Details of Russian involvement ||| +0 2014–15 Russian military intervention in Ukraine ||| Battle of Debaltseve ||| In March 2015, [[Novaya Gazeta]] published an interview with a Russian soldier, Dorzhi Batomunkuev, who operated a tank in the [[Battle of Debaltseve]] and was wounded. He confirmed that the tanks came from his military unit in [[Ulan-Ude]] in Russia and that his unit 'painted over the serial numbers and unit signs straight away on the rail platforms'. In November 2014, Batomunkuev was sent as a conscript to [[Rostov-on-Don]], where he became a contract soldier. Traveling by train with his unit from Ulan-Ude, Batomunkuev said he saw 'plenty of such trains' travelling along with them 'day after day'. After three months at Kosminskiy training facility, their unit of 31 tanks and 300 soldiers in total (mostly [[Buryats]]) was given an order to move on 8 February 2015 and crossed the Ukrainian border in the night, arriving in Donetsk in the morning. They took part in the battle on 12–14 February. ||| Donbass ||| Into early 2015 ||| +0 2014–15 Russian military intervention in Ukraine ||| Charlie Hebdo shooting ||| NATO Secretary General [[Jens Stoltenberg]] has called for more cooperation with Russia in the fight against [[terrorism]] following a deadly attack on the headquarters of a French satirical weekly magazine ''[[Charlie Hebdo shooting|Charlie Hebdo]]'' in January 2015. ||| Reactions to the Russian intervention in Crimea ||| US and NATO military response ||| Relations with Russia +0 2014–15 Russian military intervention in Ukraine ||| Euromaidan ||| Following months of protests as part of the [[Euromaidan]] movement, on 22 February 2014, protesters [[2014 Ukrainian revolution|ousted]] the government of Ukrainian president [[Viktor Yanukovych]] who was elected with 48.95% votes in 2010. ||| Background ||| Euromaidan and Anti-Maidan ||| +0 2015 Kokang offensive ||| 2009 Kokang incident ||| This calm faltered in 2009 when MNDAA came under pressure to transform into a paramilitary Border Guard Force under the control of the Burmese Army. The MNDAA resisted this move, and hostilities from the army increased, purportedly due to MNDAA links with the drug trade. After the [[2009 Kokang incident]], Pheung himself was driven out by his competitors from within the army and had fled after a warrant was issued for his arrest. ||| Background ||| ||| +0 2015 Kuwait mosque bombing ||| Saint-Quentin-Fallavier attack ||| [[2015 Ramadan attacks|Three other Islamist attacks]] took place on the same day in France, Tunisia, and Somalia. The attacks followed an audio message released three days earlier by [[Islamic State of Iraq and the Levant|ISIS]] senior leader, [[Abu Mohammad al-Adnani]], encouraging militants everywhere to attack the stated enemies of ISIS during the month of [[Ramadan]]. No definitive link between the attacks has yet been established. [[Saint-Quentin-Fallavier attack|One attack, at a French factory]], resulted in the beheading of one person; [[Sousse attacks|another, at a Tunisian beach resort]], killed 38, most of them tourists; and the other, [[2015 Leego attack|an attack on an African Union base]] undertaken by [[Al-Shabaab (militant group)|Al-Shabaab]], killed at least 70. ||| ||| ||| +0 2015 Mina stampede ||| Yemeni Civil War (2015) ||| The 2015 Hajj took place against a background of regional turmoil (including wars in [[Syrian Civil War|Syria]], [[Iraqi Civil War (2014–present)|Iraq]], [[Yemeni Civil War (2015)|Yemen]], and [[Libyan Civil War (2014–present)|Libya]]), the hottest temperatures in Mecca in 20 years, the threat of [[MERS]], ||| Background ||| ||| +0 2015 Minneapolis shooting ||| Iraq War ||| One of the suspects, who is a former Marine and an [[Iraq War]] veteran, has a [[Bonnie Blue Flag]] of the [[Confederate States of America]] on on his Facebook profile, and is believed to be 'SaigaMarine', described by protesters as a white supremacist. As SaigaMarine, he was also well-known on [[4Chan]]'s weapons-themed /k/ board, where racial slurs are sometimes posted. ||| Arrests ||| ||| +0 2015 Russian Sukhoi Su-24 shootdown ||| Russian military intervention in the Syrian Civil War ||| Russia is one of several [[Foreign involvement in the Syrian Civil War|countries directly involved]] in the [[Syrian Civil War|Syrian conflict]]. On 30 September 2015, Russia began [[Russian military intervention in the Syrian Civil War|its air campaign]] against the [[Islamic State of Iraq and the Levant]] (ISIL) and other anti-government forces. ||| Background ||| ||| +0 2015 Sousse attacks ||| 2012 Benghazi attack ||| Ben Hassine is reported to have been killed by the [[USAF]] near Adjabiya in eastern Libya on 14 June 2015. The strike was designed to kill [[Mokhtar Belmokhtar]] in an Ansar meeting. After the overthrow of Tunisia's President [[Zine el-Abedine Ben Ali]] in 2011, Ben Hassine was released from jail in March 2011 under an amnesty, and later founded Ansar al-Sharia in Tunisia, which resisted proscription until 2013 arguing it was carrying out humanitarian work, even though Ben Hassine personally had led the storming of the [[Reactions to Innocence of Muslims#Tunisia|US Embassy in Tunis on 14 September 2012]], three days after [[Ansar al-Sharia (Libya)|Ansar's Libyan counterparts]] killed US ambassador [[J. Christopher Stevens]] in [[2012 Benghazi attack|Benghazi, Libya]]. When Ansar was finally outlawed in August 2013, after the murders of two secular leftist MPs, he was listed as a proscribed terrorist by the United States, and he fled to Libya. ||| Perpetrator and associates ||| ||| +0 2015 Sousse attacks ||| Saint-Quentin-Fallavier attack ||| [[2015 Ramadan attacks|Four other Islamist attacks]] took place on the same day in France, Kuwait, Syria and Somalia. The attacks followed an audio message released three days earlier by [[Islamic State of Iraq and the Levant|ISIL]] senior leader [[Abu Mohammad al-Adnani]] encouraging militants everywhere to attack during the month of [[Ramadan]]. No definitive link between the attacks has yet been established. [[Saint-Quentin-Fallavier attack|One attack, at a French factory]], resulted in the beheading of one person; another [[2015 Kuwait mosque bombing|bombing at a Shia mosque in Kuwait City]] killed at least 27; and the other [[2015 Leego attack|attack on an African Union base]] in Somalia undertaken by [[Al-Shabaab (militant group)|Al-Shabaab]], killed at least 70. Another attack on the day took place in [[Hasakeh]] in Syria. A suicide bomber blew himself up and killed 20 people. ||| Other Islamist attacks ||| ||| +0 2015 Thalys train attack ||| 2015 Saint-Denis raid ||| In November 2015, French authorities implicated [[Abdelhamid Abaaoud]] in the attempted attack. Abaaoud is alleged to be the mastermind behind [[November 2015 Paris attacks|a series of coordinated terrorist attacks in Paris]] that killed 129 people. He was killed on 18 November during [[2015 Saint-Denis raid|a police raid]]. ||| Investigations ||| French and Spanish investigations ||| +0 2015 Tunis bombing ||| 2015 Sousse attacks ||| The group has also claimed responsibility for two attacks in Tunisia earlier in the year, targeting the tourism industry: the [[Bardo National Museum attack|Bardo museum attack]] in March and an [[2015 Sousse attacks|attack on a beach resort in Sousse]] in June. ||| Response ||| ||| +0 2016 Open Championship ||| Battle of Tel el-Kebir ||| |align=center|7||[[Battle of Tel el-Kebir|Tel-el-Kebir]]||align=center|405||align=center|4||align=center|16||Well||align=center|542||align=center|5 ||| Venue ||| ||| +0 2017 Africa Cup of Nations ||| Libyan Civil War (2011) ||| On 29 January, during the [[2011 CAF Super Cup]], the CAF executive committee decided that Morocco would host 2015 Africa Cup of Nations, while the 2017 edition would be held in South Africa. However, due to the [[Libyan Civil War (2011)|Libyan Civil War]], Libya and South Africa traded years with South Africa hosting in 2013 and Libya hosting in 2017. ||| Bids ||| First bidding ||| +0 2nd Parachute Brigade in Southern France ||| Eastern Front (World War II) ||| After the [[Normandy landings]] many of these units moved north. Replacements that joined Army Group G came to refit after the fighting in Normandy or on the [[Eastern Front (World War II)|Eastern Front]]. They were under strength, with little or no equipment. ||| Prelude ||| German forces ||| +0 2nd Parachute Brigade in Southern France ||| Normandy landings ||| After the [[Normandy landings]] many of these units moved north. Replacements that joined Army Group G came to refit after the fighting in Normandy or on the [[Eastern Front (World War II)|Eastern Front]]. They were under strength, with little or no equipment. ||| Prelude ||| German forces ||| +0 2nd Parachute Brigade in Southern France ||| Operation Manna ||| The 2nd Parachute Brigade had a secondary objective of capturing Le Muy. It was supposed to have been assaulted by the 4th Parachute Battalion with the 5th (Scottish) Parachute Battalion providing fire support. With the forces he had at hand, Pritchard was unable to carry out the task.{{#tag:ref|Pritchard had also been ordered by the commander of the [[15th Army Group]] [[General]] [[Harold Alexander]] to keep his casualties to a minimum, as the brigade was needed for another parachute mission in Greece ([[Operation Manna]]) soon afterwards. ||| Operation Rugby ||| Link up with seaborne landings ||| +0 38th G8 summit ||| Occupy Wall Street ||| Protest groups and other activists were expected to make a strong showing at the summit in Chicago. [[Adbusters]], an organization that helped initiate [[Occupy Wall Street]], had called for a mass occupation of Chicago starting on 1 May, before the venue was changed to the much less accessible Camp David. ||| Controversy ||| Protesters and demonstrations ||| +0 6th Airborne Division advance to the River Seine ||| Normandy landings ||| The [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] was one of the first [[Allies of World War II|Allied]] units to arrive in Normandy on [[Normandy landings|D-Day]], 6 June 1944, and successfully secured the left flank of the invasion zone. Resisting efforts to dislodge them by the combined efforts of two infantry and one panzer division, a month later they were ordered to prepare to advance. Their objective was the mouth of the [[River Seine]], {{convert|45|mi}} away. To assist them in carrying out their mission, the division was reinforced by two [[British Commandos|Commando]] brigades, the [[1st Special Service Brigade|1st]] and [[4th Special Service Brigade|4th]], a [[1st Belgian Infantry Brigade|Belgian infantry brigade]] and a [[Royal Netherlands Motorized Infantry Brigade|Dutch infantry brigade]], as well as increased artillery support. To reach the Seine, the division had to cross three rivers that had been flooded by the Germans, and had only two roads available to them. ||| ||| ||| +0 6th Airborne Division advance to the River Seine ||| Operation Tonga ||| In the south, the 3rd Parachute Brigade started crossing the [[River Dives]] on 18 August, delayed by the need to build a crossing to replace the bridge destroyed by the division during [[Operation Tonga]]. By nightfall the 1st Canadian Parachute Battalion was engaging the German rearguard and the 8th Parachute Battalion reached the outskirts of [[Goustranville]]. The next morning the brigade advance continued into Goustranville, where they came under heavy artillery fire from the high ground at [[Putot]]. Their attack faltered and Gale decided to restart the advance that night. He ordered the 3rd Parachute Brigade to secure the start point along the Dives canal and railway line, while the 5th Parachute Brigade assaulted the artillery position at Putot. ||| Breakout ||| Southern sector ||| +0 7 July 2005 London bombings ||| 2003 invasion of Iraq ||| There were limited reactions to the attack in the [[world economy]] as measured by [[financial market]] and [[exchange rate]] activity. The value of the [[Pound sterling|British pound]] decreased 0.89 cents to a 19-month low against the US dollar. The [[FTSE 100 Index]] fell by about 200 points during the two hours after the first attack. This was its greatest decrease since the [[2003 invasion of Iraq|invasion of Iraq]], and it triggered the [[London Stock Exchange]]'s 'Special Measures', restricting [[panic selling]] and aimed at ensuring market stability. By the time the market closed it had recovered to only 71.3 points (1.36%) down on the previous day's three-year closing high. Markets in France, Germany, the Netherlands and Spain also closed about 1% down on the day. ||| Effects and response ||| Economic effect ||| +0 75th Oregon Legislative Assembly ||| Gold Beach ||| | 1 || [[Gold Beach, Oregon|Gold Beach]] || [[Wayne Krieger]] || {{Party shading/Republican}}|[[Oregon Republican Party|Republican]] ||| House members ||| ||| +0 8th Ukrainian Verkhovna Rada ||| War in Donbass ||| On the first day of the parliament's session, five of the parliament's pro-European parties, the Petro Poroshenko Bloc, [[People's Front (Ukraine)|People's Front]], [[Self Reliance (political party)|Self Reliance]], [[All-Ukrainian Union 'Fatherland'|Fatherland]], and [[Radical Party of Oleh Lyashko|Radical Party]], signed a [[Coalition government|coalition]] agreement. Per the coalition agreement, the current convocation of parliament will be tasked with passing major reforms to ensure Ukrainian membership in European institutions such as the [[European Union]] and [[NATO]], while dealing with the threat of further Russian aggression [[War in Donbass|in the Donbass]]. ||| ||| ||| +0 Action at Abraham's Creek ||| Third Battle of Winchester ||| The '''Action at Abraham's Creek''' was an engagement on September 13, 1864 between [[Union Army]] and [[Confederate States Army]] forces during a Union reconnaissance in force toward [[Winchester, Virginia]]. The action occurred during skirmishing, maneuvering and scouting before the [[Third Battle of Winchester]] on September 19, 1864 in the [[Valley Campaigns of 1864]] during the [[American Civil War]]. ||| ||| ||| +0 Action at Néry ||| Battle of Le Cateau ||| After the British and German armies first encountered each other at the [[Battle of Mons]] on 23 August 1914, the outnumbered [[British Expeditionary Force (World War I)|British Expeditionary Force]] had begun to fall back in front of a stronger German army. The two clashed again at the [[Battle of Le Cateau]] on 26 August, after which the British again retreated towards the [[River Marne]]. The retreat was orderly and disciplined; the German command mistakenly believed the British force was shattered and so neglected to aggressively harass them as they withdrew. As a result, the bulk of the Expeditionary Force was able to retreat for several days without engaging in any major fighting; the German pursuit was leisurely, and most engagements were skirmishes between rearguard units and cavalry patrols, rarely more than a battalion in strength. ||| Background ||| ||| +0 Action at Néry ||| Great Retreat ||| The '''Action at Néry''' was a skirmish fought on 1 September 1914 between the [[British Army]] and the [[German Army (German Empire)|German Army]], part of the [[Great Retreat]] from [[Battle of Mons|Mons]] during the early stages of the [[World War I|First World War]]. A British cavalry brigade preparing to leave their overnight bivouac were attacked by a German cavalry division of about twice their strength shortly after dawn. Both sides fought dismounted; the British artillery was mostly put out of action in the first few minutes, but a single gun of [[L (Néry) Battery Royal Horse Artillery|L Battery]], [[Royal Horse Artillery]] successfully kept up a steady fire for two and a half hours against a full battery of German artillery. British reinforcements arrived at around 8 am, counter-attacking the German forces and forcing them to retreat; the German division was routed and did not return to combat for several days. Three men of L Battery were awarded the [[Victoria Cross]] for their part in the battle, and the battery itself was later awarded the [[battle honour|honour title]] of 'Néry', the only British Army unit to have this as a [[battle honour]]. ||| ||| ||| +0 Action of 1 March 1968 ||| Operation Market Time ||| The '''Action of 1 March 1968''' refers to a co-ordinated attempt by four North Vietnamese trawlers to resupply the [[Viet Cong]] and the efforts of [[Operation Market Time]] elements to stop them during the Vietnam War. On 28 February 1968, [[United States Navy]] [[Lockheed P-2 Neptune|SP-2H Neptune]] aircraft on routine patrol detected a North Vietnamese [[SL class trawler|SL class]] [[naval trawler]] heading towards the South Vietnamese coast from north of the [[Vietnamese Demilitarized Zone|DMZ]]. By the next morning, three more trawlers were discovered and units of [[Operation Market Time]] were deployed for a surprise interception. The suspect trawlers did not fly flags so it was not until the start of the engagement that their origin was discovered. The trawlers were steel hulled vessels, 100 feet long and armed with 57-millimeter [[recoilless rifle]]s and [[machine gun]]s. All four vessels were loaded with weapons and ammunition intended to be delivered to the [[Viet Cong]]. American and South Vietnamese forces that engaged in action included the [[United States Coast Guard]] [[United States Coast Guard Cutter|cutter]]s {{Ship|USCGC|Androscoggin|WHEC-68|2}}, {{Ship|USCGC|Point Grey|WPB-82324|2}}, {{Ship|USCGC|Point Welcome|WPB-82329|2}}, {{Ship|USCGC|Winona|WHEC-65|2}}, {{USCGC|Point Grace|WPB-82323|2}}, {{USCGC|Point Hudson|WPB-82322|2}}, {{USCGC|Point Marone|WPB-82331|2}}, the [[Patrol Craft Fast|swift boats]] {{USS|PCF-18||6}}, {{USS|PCF-20||6}}, {{USS|PCF-42||6}}, {{USS|PCF-43||6}}, {{USS|PCF-46||6}}, {{USS|PCF-47||6}} and {{USS|PCF-48||6}}, two [[South Vietnamese Navy]] [[junk (ship)|junks]] and one [[patrol boat]]. Two [[United States Army|U.S. Army]] [[helicopter gunship]]s also participated in combat as well as aircraft used to fire [[flare (pyrotechnic)|flare]]s. ||| ||| ||| +0 Action of 10 November 1808 ||| Battle of Trafalgar ||| By November 1808, the [[Napoleonic Wars]] had lasted five years. Although the French had conquered large swathes of mainland Europe, they were unable to exert any significant influence at sea, where the British [[Royal Navy]] had been dominant since the [[Battle of Trafalgar]] in October 1805. A vital part of Royal Navy strategy was the implementation of a close blockade of the major French seaports by squadrons of [[frigate]]s and [[ships of the line]], intended to intercept and capture any ships attempting to enter or leave French harbours. The greatest French Atlantic seaport, and consequently the most important target for the Royal Navy, was [[Brest, France|Brest]], situated on the Northern Biscay coast. ||| Background ||| ||| +0 Action of 12 May 1796 ||| Action of 22 August 1795 ||| The '''Action of 12 May 1796''' was a minor naval engagement during the [[French Revolutionary Wars]] between a squadron of British [[Royal Navy]] [[frigates]] and a frigate and four smaller ships of the [[Dutch Navy|Navy]] of the [[Batavian Republic]]. The British squadron had been detached on the previous day from the British North Sea fleet under Admiral [[Adam Duncan, 1st Viscount Duncan|Adam Duncan]], which was cruising off the Batavian fleet anchorage at the [[Texel]], while the Batavian squadron was returning to the Netherlands from the Norwegian coast where it had been sheltering since suffering defeat at the [[Action of 22 August 1795]] the previous year. As the Batavian squadron neared the Batavian coast, the British squadron under Captain [[Lawrence Halstead]] attacked. ||| ||| ||| +0 Action of 2 March 1808 ||| Battle of Copenhagen (1807) ||| The Danish captain was the colourful and erratic adventurer [[Jørgen Jørgensen]], who in 1801 had been a member of the crew, and perhaps second in command, of ''[[Lady Nelson]]''. On ''Lady Nelson'', he participated in at least one voyage of exploration along the coast of Australia. In his autobiography, he states that his father joined seven other merchants from Copenhagen jointly to purchase the ''Admiral Yawl'' and present it to the Crown in a spirit of reprisal against the British after the [[Battle of Copenhagen (1807)]]. ||| Action ||| ||| +0 Action of 20 October 1793 ||| Action of 18 June 1793 ||| Saumarez was widely praised for his conduct in only the second successful frigate action of the war after [[Edward Pellew]]'s capture of [[French frigate Cléopâtre|''Cléopâtre'']] four months earlier at the [[Action of 18 June 1793]]. ||| Aftermath ||| ||| +0 Action of 20 October 1793 ||| French Revolution ||| At the outbreak of war between the [[Kingdom of Great Britain]] and the [[First French Republic|French Republic]] in the early spring of 1793, the [[French Revolutionary Wars]] were already a year old. The [[French Navy]] was already suffering from the upheavals of the [[French Revolution]] and the consequent dissolution of the professional officer class, while the [[Royal Navy]] had been at a state of readiness since the summer of 1792. ||| Background ||| ||| +0 Action of 22 January 1783 ||| French Revolution ||| Kergariou himself moved to England five years later at the outbreak of the [[French Revolution]]; in 1795, he was part of a Royalist band supported by the British government and took part in the attempted [[Invasion of France (1795)|Invasion of France]] in 1795. At the [[Invasion of France (1795)|Battle of Quiberon]], he was captured by Hoche's troops, sentenced to death and shot. ||| Aftermath ||| ||| +0 Action of 24 June 1801 ||| Battle of Trafalgar ||| The action was a rare victory for the French in the [[Mediterranean Sea]], which had been largely under British control since the French Mediterranean Fleet had been destroyed in 1798 at the [[Battle of the Nile]]. This had trapped the French army in Egypt on the African side of the Mediterranean, and all efforts to reinforce and resupply them had ended in failure, including three separate expeditions by Ganteaume's squadron. ''Swiftsure'' was later commissioned into the [[French Navy]] and fought at the [[Battle of Trafalgar]] in 1805, where the ship was recaptured by the British and rejoined the [[Royal Navy]]. Hallowell was subsequently [[court martialed]] for the loss of his ship, but was honourably acquitted and returned to naval service. ||| ||| ||| +0 Action of 24 June 1801 ||| Battle of the Nile ||| The action was a rare victory for the French in the [[Mediterranean Sea]], which had been largely under British control since the French Mediterranean Fleet had been destroyed in 1798 at the [[Battle of the Nile]]. This had trapped the French army in Egypt on the African side of the Mediterranean, and all efforts to reinforce and resupply them had ended in failure, including three separate expeditions by Ganteaume's squadron. ''Swiftsure'' was later commissioned into the [[French Navy]] and fought at the [[Battle of Trafalgar]] in 1805, where the ship was recaptured by the British and rejoined the [[Royal Navy]]. Hallowell was subsequently [[court martialed]] for the loss of his ship, but was honourably acquitted and returned to naval service. ||| ||| ||| +0 Action of 24 October 1798 ||| Battle of Ballinamuck ||| In May 1798, the arrest of a number of the leaders of the United Irishmen provoked the [[Irish Rebellion of 1798]], a widespread uprising across Ireland. The Rebellion took the British authorities by surprise, but the introduction of regular [[British Army]] troops rapidly defeated the Irish armies and the last resistance was brought to an end in September with the surrender of a small French force at the [[Battle of Ballinamuck]]. ||| Background ||| ||| +0 Action of 24 October 1798 ||| Battle of Trafalgar ||| The capture of the Dutch ships was the end of the final attempt by a continental nation to land troops in Ireland during the French Revolutionary Wars and the [[Napoleonic Wars]] that followed them. Richard King remained in ''Sirius'' until 1802, and subsequently commanded the [[ship of the line]] [[HMS Achille (1798)|HMS ''Achille'']], participating at the [[Battle of Trafalgar]] in 1805. ||| Aftermath ||| ||| +0 Action of 24 October 1798 ||| French Revolution ||| Following the [[French Revolution]] in 1789, a political organisation was formed in [[Ireland]] named the [[Society of United Irishmen]]. Crossing social and religious boundaries, this organisation embraced [[Irish republicanism|republican principles]] with the stated goal of removing British government control from Ireland. ||| Background ||| ||| +0 Action of 26 April 1797 ||| Action of 16 October 1799 ||| The blockade of Cádiz was designed not only to contain the main Spanish fleet, but also to disrupt Spanish communications and transport. Cádiz was the principal port of Southern Spain and thus an important destination for shipping from across the [[Spanish Empire]]. This included numerous so-called 'treasure ships', heavily armed warships that convoyed the gold and silver from the Spanish colonies in the Americas to the Spanish mainland. For centuries, Spanish treasure ships had been the ultimate prize for Royal Navy captains, and the sums of [[prize money]] involved were enormous. In October 1799 for example, a Spanish treasure convoy [[Action of 16 October 1799|was captured]] off [[Vigo]] and the British captains alone were awarded £40,730 each (the equivalent of £{{Formatnum:{{Inflation|UK|40730|1799|r=-2}}|0}} as of {{CURRENTYEAR}}).{{Inflation-fn|UK}} ||| Background ||| ||| +0 Action of 27 June 1798 ||| Battle of the Nile ||| Lookouts on ''Seahorse'' spotted ''Sensible'' at 16:00 on 26 June and Captain [[Edward Foote]] immediately gave chase, the French frigate fleeing southwards. For 12 hours the pursuit continued until Foote was able to catch and defeat his opponent, inflicting heavy casualties on the weaker and overladen French frigate. Among the prisoners captured was General [[Louis Baraguey d'Hilliers]] who had been wounded in the storming of Malta, and among the treasure was an ornate seventeenth century cannon once owned by [[Louis XIV]]. The captured ''Sensible'' was initially fitted out as an active warship, but on arrival in Britain in 1799 the ship was downgraded to a transport. The action provided the British with the first conclusive evidence of the French intention to invade Egypt, but despite an extensive search for Nelson's fleet Foote was unable to relay the location of the French to his admiral before the [[Battle of the Nile]] on 1 August. ||| ||| ||| +0 Action of 29 November 1811 ||| Battle of Trafalgar ||| The Royal Navy, preeminent in the [[Mediterranean]] since the [[Battle of Trafalgar]] in 1805, sought to disrupt French convoys across the Adriatic. Following the Russian withdrawal in 1807, the Royal Navy dispatched a small [[frigate]] squadron to operate in the sea. The squadron was commanded by Captain [[William Hoste]], who seized the Illyrian island of [[Vis (island)|Lissa]] (present-day Vis) to use as a base, waging a campaign against the French and their allies that forced the French Navy to deploy significantly larger forces to combat him. ||| Background ||| ||| +0 Action of 31 July 1793 ||| Battle of Tory Island ||| So badly damaged was Bompart's ship that he was not able to dock in New York until 2 August and repairs to his vessel, including the replacement of all three masts, were not completed until 9 October. and remained a prominent figure in the French Navy, serving at the [[Glorious First of June]] in 1794 and leading the French expeditionary force that unsuccessfully attempted to invade [[Ireland]] in 1798 and was destroyed at the [[Battle of Tory Island]]. ||| Aftermath ||| ||| +0 Action of 31 July 1793 ||| French Revolution ||| In February 1793 the newly formed [[First French Republic|French Republic]] declared war on [[Kingdom of Great Britain|Great Britain]], extending the [[French Revolutionary Wars]] that had begun the year before on the continent. The [[French Navy]] was in a state of upheaval due to the social consequences of the [[French Revolution]], and as a result found itself at a disadvantage to the [[Royal Navy]], which had been preparing for war since June 1792. ||| Background ||| ||| +0 Action of 31 July 1793 ||| Glorious First of June ||| So badly damaged was Bompart's ship that he was not able to dock in New York until 2 August and repairs to his vessel, including the replacement of all three masts, were not completed until 9 October. and remained a prominent figure in the French Navy, serving at the [[Glorious First of June]] in 1794 and leading the French expeditionary force that unsuccessfully attempted to invade [[Ireland]] in 1798 and was destroyed at the [[Battle of Tory Island]]. ||| Aftermath ||| ||| +0 Action of 31 March 1800 ||| Battle of Cape Finisterre (1805) ||| Both ''Foudroyant'' and ''Lion'' were too battered to provide an effective tow to the dismasted French ship, and as a result ''Penelope'' was left to bring the shattered ''Guillaume Tell'' into [[Syracuse, Sicily|Syracuse]] on Sicily. Eventually the ship was repaired sufficiently for the journey to Britain, and there was added to the Royal Navy under the name HMS ''Malta''. ''Malta'' was, with [[HMS Tonnant (1798)|HMS ''Tonnant'']] captured two years earlier at the Nile, the most powerful [[third rate]] in the British fleet, and served for many years, participating at the [[Battle of Cape Finisterre (1805)|Battle of Cape Finisterre]] in 1805. ||| Aftermath ||| ||| +0 Action of 31 March 1800 ||| Battle of the Malta Convoy (1800) ||| The '''Action of 31 March 1800''' was a naval engagement of the [[French Revolutionary Wars]] fought between a [[Royal Navy]] squadron and a [[French Navy]] [[ship of the line]] off [[Malta]] in the [[Mediterranean Sea]]. By March 1800 [[Valletta]], the Maltese capital, had been [[Siege of Malta (1798-1800)|under siege]] for eighteen months and food supplies were severely depleted, a problem exacerbated by the [[Battle of the Malta Convoy (1800)|interception and defeat]] of a French replenishment convoy in mid-February. In an effort to simultaneously obtain help from France and reduce the number of personnel maintained in the city, the naval commander on the island, Contre-Admiral [[Pierre-Charles Villeneuve]], ordered his subordinate Contre-Admiral [[Denis Decrès]] to put to sea with the large ship of the line [[French ship Guillaume Tell (1795)|''Guillaume Tell'']], which had arrived in the port shortly before the siege began in September 1798. Over 900 men were carried aboard the ship, which was to sail for [[Toulon]] under cover of darkness on 30 March. ||| ||| ||| +0 Action of 31 March 1800 ||| Mediterranean campaign of 1798 ||| In May 1798, a French fleet under General [[Napoleon Bonaparte]] [[Mediterranean campaign of 1798|crossed the]] [[Mediterranean Sea]], sailing for [[Egypt]]. Pausing at [[Malta]] on 9 June, Bonaparte landed soldiers and seized the island leaving a sizeable French garrison at [[Valletta]] under General [[Claude-Henri Belgrand de Vaubois]] while the rest of the fleet continued on to [[Alexandria]]. ||| Background ||| ||| +0 Action of 5 July 1942 ||| Aleutian Islands Campaign ||| The '''Action of 5 July 1942''' was a naval engagement fought during the [[Aleutian Islands Campaign]] of [[World War II]]. During the action, the [[United States Navy|American]] [[submarine]] {{USS|Growler|SS-215|6}} attacked three [[Imperial Japan|Japanese]] warships anchored off [[Kiska]] island. It was the first action of ''Growler''{{'}}s career and ended with the loss of dozens of Japanese sailors. ||| ||| ||| +0 Action of 5 July 1942 ||| Japanese occupation of Kiska ||| Over the course of the [[Pacific War]], ''Growler''—under various commanders—sank 17 enemy vessels, including many armed ships. She was a [[Gato-class submarine|''Gato''-class submarine]] and had a complement of 60 officers and men. Her armament included ten {{convert|21|in|mm|abbr=on}} [[torpedo tube]]s and one {{convert|3|in|mm|abbr=on}}/50-caliber [[deck gun]]. On her first patrol from [[Pearl Harbor]] to [[Alaska]], she was commanded by [[Lieutenant Commander]] [[Howard Gilmore]]. Japanese forces included the {{convert|2490|LT|t|abbr=on}} [[Kagero class destroyer|''Kagero''-class]] [[destroyer]] {{Ship|Japanese destroyer|Shiranui|1938|2}} with 240 crewmen and six {{convert|5|in|mm|abbr=on}} [[Naval gun|gun]]s, several [[Anti-aircraft warfare|anti-aircraft gun]]s, eight large torpedo tubes and 36 depth charges. There were also the two {{convert|2370|LT|t|abbr=on}} [[Asashio class destroyer|''Asashio''-class destroyer]]s {{Ship|Japanese destroyer|Arare||2}} and {{Ship|Japanese destroyer|Kasumi|1937|2}}, each with about 200 men and mounting the same armament as ''Shiranui''. The three vessels were assigned to the [[Japanese occupation of Kiska|occupation]] of Kiska and had participated in the [[Battle of Pearl Harbor]]. ||| Background ||| ||| +0 Action of 6 November 1794 ||| Glorious First of June ||| The British ships separated and attempted to escape, but the French commander [[Counter Admiral|''Contre-amiral'']] [[Joseph-Marie Nielly]] simply split his forces in response, and although ''Canada'' was eventually able to outrun pursuit, ''Alexander'' was slower and was caught by several French ships in succession. The first two opponents were driven off, but the third succeeded in coming alongside and, in a fierce and close fought duel, compelled Captain [[Richard Rodney Bligh]] to surrender his ship in the face of overwhelming odds. The battle was a rare French victory, lying between the significant British victories at the [[Glorious First of June]] and the [[Battle of Groix]], in the Royal Navy campaign against the French fleet at Brest. ||| ||| ||| +0 Action of 7 May 1794 ||| Atlantic campaign of May 1794 ||| In the aftermath of the engagement, a French battle squadron that formed part of the developing [[Atlantic campaign of May 1794]] pursued both ships for the rest of the day; their quarry eventually escaped after dark. ''Atalante'' was later taken into the Royal Navy as HMS ''Espion''. ||| ||| ||| +0 Action of 9 November 1822 ||| War of 1812 ||| Allen's force of 100 was outnumbered by the pirates and also outgunned, with ''Alligator'' mounting only 12 six pounders compared to the pirates' 14 cannons. Despite being outnumbered, ''Alligator'' and her crew were experienced veterans, having taken the [[Portugal|Portuguese]] brig ''Marianna Flora'' the year before in a bloody action. Allen himself was also an experienced commander who had taken command of [[Capture of USS Argus|USS ''Argus'' during her engagement with HMS ''Pelican'']] in the [[War of 1812]]. ||| Background ||| ||| +0 Action of Arsuf ||| Sinai and Palestine Campaign ||| The '''Action of Arsuf''' (8 June 1918), was fought between the forces of the [[British Empire]] and the [[Ottoman Empire]], [[German Empire]] and [[Austria-Hungary]] during the [[Sinai and Palestine Campaign]] of the [[First World War]]. The British Empire forces involved was the [[21st (Bareilly) Brigade]] comprising the 2nd Battalion, [[Black Watch]], the 1st [[Guides Infantry]], the [[29th Punjabis]] and the 1/[[8th Gurkha Rifles]]. ||| ||| ||| +0 Action off Lofoten ||| Battles of Narvik ||| Despite the Royal Navy winning a minor tactical victory over the ''Kriegsmarine'', the Germans considered the engagement a strategic success due to the fact that Whitworth′s force was delayed long enough to keep it from interfering with the landings at Narvik. After the action had ended, Whitworth′s force continued to search for the German capital ships. With the British squadron occupied, the German destroyer-transports managed to make their way through to [[Battles of Narvik|Narvik]] after destroying two [[Eidsvold class coastal defence ship|Norwegian coastal defence ship]]s in their path. ||| Aftermath ||| ||| +0 Actions along the Matanikau ||| New Guinea campaign ||| On 7 August 1942, Allied forces (primarily American) landed on Guadalcanal, [[Tulagi]], and [[Florida Islands]] in the [[Solomon Islands]]. The landings on the islands were meant to deny their use by the Japanese as [[Military base|bases]] for threatening the [[materiel|supply]] routes between the U.S. and Australia, and secure the islands as starting points for a [[Military campaign|campaign]] with the eventual goal of neutralizing the major Japanese base at [[Rabaul]] while also supporting the Allied [[New Guinea campaign]]. The landings initiated the six-month-long [[Guadalcanal Campaign]]. ||| Background ||| ||| +0 Actions in Nordland ||| Battle of France ||| Earlier on 25 May, Gubbins had been informed that, following the Allied disasters after the opening of the [[Battle of France]], the force at Bodø was to be evacuated. At noon on 26 May, he ordered Stockwell to fall back to Rognan and across the fjord. Stockwell's force began to withdraw in the mid-afternoon under heavy pressure. He was aided by two [[Gloster Gladiator]] fighters (one of them flown by Rhodesian ace [[Caesar Hull]]) operating from the newly completed airstrip at Bodø. (A third had crashed on takeoff from the rough strip.) They claimed two German aircraft shot down and two damaged, challenging the German air supremacy for the first time. ||| Pothus ||| ||| +0 Adlertag ||| Battle of Dunkirk ||| The German offensive—named ''Unternehmen Gelb'' ([[Operation Yellow]]), and also known as the [[Manstein Plan]]—began in the West on 10 May 1940. The central campaign—the [[Battle of France]]—ended in Allied defeat and the destruction of the main [[French Army]] forces. The [[British Expeditionary Force (World War II)|British Expeditionary Force]] escaped during the [[Battle of Dunkirk]], but the ''Wehrmacht'' captured [[Paris]] on 14 June and overran ⅔ of France. The French surrendered on 25 June 1940. ||| Background ||| Strategic overview ||| +0 Adlertag ||| Battle of France ||| The German offensive—named ''Unternehmen Gelb'' ([[Operation Yellow]]), and also known as the [[Manstein Plan]]—began in the West on 10 May 1940. The central campaign—the [[Battle of France]]—ended in Allied defeat and the destruction of the main [[French Army]] forces. The [[British Expeditionary Force (World War II)|British Expeditionary Force]] escaped during the [[Battle of Dunkirk]], but the ''Wehrmacht'' captured [[Paris]] on 14 June and overran ⅔ of France. The French surrendered on 25 June 1940. ||| Background ||| Strategic overview ||| +0 Aerial engagements of the Second Sino-Japanese War ||| The Hump ||| On 28 January 1945, the Burma Road was fully restored as a land transport route for war material supplied to China by the [[Allies of World War II|Allies]]. It had been cut off when [[Japanese conquest of Burma|Japanese invaded Burma in 1942]], leaving available only the air supply route over '[[The Hump]]', from [[Assam]], India, over the eastern end of the [[Himalayas]]. The re-opening of the Burma Road greatly increased the supply of aircraft, spare parts, fuel and other war material as required for the successful prosecution of the war. ||| 1945 ||| ||| +0 Afghan Civil War (1996–2001) ||| September 11 attacks ||| On September 9, 2001, two days before the [[September 11 attacks]] in the United States, Massoud was assassinated in [[Takhar Province]] of Afghanistan by suspected [[al-Qaeda]] agents. The funeral, although taking place in a rather rural area, was attended by hundreds of thousands of mourning people. The following year, he was named 'National Hero' by the order of Afghan President [[Hamid Karzai]]. The date of his death, September 9, is observed as a national holiday in Afghanistan, known as 'Massoud Day'. (which, incidentally, is never awarded posthumously). ||| Main participants ||| United Front ||| Ahmad Shah Massoud +0 Ahvaz bombings ||| 2005 Ahvaz unrest ||| In 2005, a wide scale [[2005 Ahvaz unrest|unrest]] broke out in Ahvaz and the surrounding towns. ||| Background ||| ||| +0 Ahvaz bombings ||| 2011 Khuzestan protests ||| At least 19 Arab Iranian were executed since the [[2005 Ahvaz unrest]] and the consequent bombings. In April 2011, another [[2011 Khuzestan protests|wave of protests]] erupted across the Khuzestan province, resulting in a dozen killed and scores injured and arrested. ||| Aftermath ||| ||| +0 Air Battle of South Korea ||| Battle of Suwon Airfield ||| North Korean aircraft first met US aircraft in combat during the [[Battle of Suwon Airfield]], in which seven of the 13 North Korean aircraft were destroyed. The North Korean [[Lavochkin La-7]] and [[Ilyushin Il-10]] aircraft were easily outmatched by the superior American F-82 Twin Mustang and F-80C Shooting Star aircraft, which also had better-trained pilots. The planes of the [[8th Fighter Wing]], which were attempting to defend [[Suwon]] to allow evacuation of UN civilians encountered repeated harassing attacks from North Korean aircraft operating out of [[Pyongyang Air Base|Heijo Airfield]] in [[Pyongyang]]. Heijo was the KPAF's main base, but in the first few days in the war the US aircraft only had authorization to defend themselves if attacked, they could not conduct offensive operations into North Korea. ||| Battle ||| Attack at Suwon ||| +0 Air raids on Japan ||| Atomic bombings of Hiroshima and Nagasaki ||| The [[United States Armed Forces|United States military]] air campaign waged against Japan began in earnest in mid-1944 and intensified during the war's last months. While plans for attacks on Japan had been prepared prior to the Pacific War, these could not begin until the long-range [[Boeing B-29 Superfortress|B-29 Superfortress]] bomber was ready for combat. From June 1944 until January 1945, B-29s stationed in India staged through bases in China to make a series of raids on Japan, but this effort proved unsuccessful. The strategic bombing campaign was greatly expanded from November 1944 when bases in the [[Mariana Islands]] became available as a result of the [[Mariana and Palau Islands campaign|Mariana Islands Campaign]]. These attacks initially attempted to target industrial facilities, but from March 1945 were generally directed against urban areas as much of the manufacturing process was carried out in small workshops and private homes. Aircraft flying from Allied [[aircraft carrier]]s and the [[Ryukyu Islands]] also frequently struck targets in Japan during 1945 in preparation for the [[Operation Downfall|planned invasion of Japan]] scheduled for October 1945. During early August 1945, the cities of [[Hiroshima]] and [[Nagasaki]] were [[Atomic bombings of Hiroshima and Nagasaki|struck and mostly destroyed by atomic bombs]]. ||| ||| ||| +0 Air raids on Japan ||| Battle of Iwo Jima ||| The US Navy conducted its first attacks against the Japanese home islands in mid-February 1945. This operation was undertaken primarily to destroy Japanese aircraft that could attack the US Navy and Marine Corps forces involved with the [[Battle of Iwo Jima|landing on Iwo Jima]] on 19 February, and was conducted by [[Fast Carrier Task Force|Task Force 58]] (TF 58). This task force was the US Navy's main striking force in the Pacific, and comprised 11 [[fleet carrier]]s, five [[light aircraft carrier]]s and a powerful force of escorts. ||| Naval air attacks ||| ||| +0 Air raids on Japan ||| Mariana and Palau Islands campaign ||| The [[United States Armed Forces|United States military]] air campaign waged against Japan began in earnest in mid-1944 and intensified during the war's last months. While plans for attacks on Japan had been prepared prior to the Pacific War, these could not begin until the long-range [[Boeing B-29 Superfortress|B-29 Superfortress]] bomber was ready for combat. From June 1944 until January 1945, B-29s stationed in India staged through bases in China to make a series of raids on Japan, but this effort proved unsuccessful. The strategic bombing campaign was greatly expanded from November 1944 when bases in the [[Mariana Islands]] became available as a result of the [[Mariana and Palau Islands campaign|Mariana Islands Campaign]]. These attacks initially attempted to target industrial facilities, but from March 1945 were generally directed against urban areas as much of the manufacturing process was carried out in small workshops and private homes. Aircraft flying from Allied [[aircraft carrier]]s and the [[Ryukyu Islands]] also frequently struck targets in Japan during 1945 in preparation for the [[Operation Downfall|planned invasion of Japan]] scheduled for October 1945. During early August 1945, the cities of [[Hiroshima]] and [[Nagasaki]] were [[Atomic bombings of Hiroshima and Nagasaki|struck and mostly destroyed by atomic bombs]]. ||| ||| ||| +0 Air raids on Japan ||| Operation Cottage ||| Following the Doolittle Raid, the next air attacks on Japan were made against the [[Kuril Islands]] in mid-1943. The liberation of Alaska's [[Attu Island]] in May 1943 during the [[Aleutian Islands Campaign]] provided the USAAF with bases within range of the Kurils. As part of the preparations for the liberation of [[Kiska Island]] in the Aleutians, the [[Eleventh Air Force]] conducted a series of raids against the Kurils to suppress the Japanese air units stationed there. The first of these attacks was made against southern [[Shumshu]] and northern [[Paramushir]]u by eight B-25s on 10 July. The Kurils were attacked again on 18 July by six B-24 Liberator heavy bombers, and the unopposed liberation of Kiska ([[Operation Cottage]]) took place on 15 August. ||| Early raids ||| Bombing of the Kuril Islands ||| +0 Air raids on Japan ||| Strategic bombing during World War II ||| [[Allies of World War II|Allied]] forces conducted many '''air raids on Japan''' during World War II, causing extensive destruction to the country's cities and killing between 241,000 and 900,000 people. During the first years of the [[Pacific War]], sparked by the Japanese [[attack on Pearl Harbor]], these attacks were limited to the [[Doolittle Raid]] in April 1942 and small-scale raids on military positions in the [[Kuril Islands]] from mid-1943. [[Strategic bombing during World War II|Strategic bombing]] raids began in June 1944 and continued until the end of the war in August 1945. Allied naval and land-based [[Tactical bombing|tactical air units]] also attacked Japan during 1945. ||| ||| ||| +0 Airbourne (air show) ||| Battle of Britain ||| '''Airbourne''', also known as '''Eastbourne International Airshow''', is a 4-day international [[air show]] run every August in [[Eastbourne]], [[East Sussex]], [[England]]. The event features [[Battle of Britain]] memorial flights and aircraft from the [[Royal Air Force|RAF]] and [[USAF]], among others, and enjoys a long relationship with the [[Red Arrows]] display team. ||| ||| ||| +0 Akbaş arms depot raid ||| Occupation of Constantinople ||| On 28 January a telegraph was sent to [[Mustafa Kemal Atatürk|Mustafa Kemal]] Pasha, informing him about the successful raid. He congratulated them in a telegraph sent on 29 January. The Allies, informed of the raid, protested it to the Ottoman government in [[Occupation of Constantinople|Constantinople]]. On 1 February, the British dispatched 200 men to [[Bandırma]] to search for the raiders and weapons. Furthermore, the Allies strengthened their guards of several depots in the area. In [[Occupation of Constantinople|Constantinople]], people who were suspected to support the [[Kuva-yi Milliye]], were put under tighter observation. The British arrested several officers and officials in [[Occupation of Constantinople|Constantinople]]. ||| Aftermath ||| ||| +0 Al Asad Airbase ||| 2003 invasion of Iraq ||| Prior to the [[2003 invasion of Iraq]], the base housed three units of the [[Iraqi Air Force]], which flew [[Mikoyan-Gurevich MiG-25|MiG-25]]s and [[Mikoyan-Gurevich MiG-21|MiG-21]]s. It was abandoned shortly after the start of the [[2003 invasion of Iraq]]. ||| History ||| Qadisiyah Airbase ||| +0 Al Asad Airbase ||| Iraq War ||| The base was initially secured during the [[Iraq War]] by the [[Australian Special Air Service Regiment]] and was turned over to the [[3rd Armored Cavalry Regiment]] (3rd ACR) in May 2003. The 3rd ACR was relieved by the Marines of the [[I Marine Expeditionary Force|1st Marine Expeditionary Force]] in March 2004. Al Asad became the largest U.S. base in western Iraq and the western equivalent of [[Baghdad]]'s [[Green Zone]]. ||| History ||| Iraq War 2003-11 ||| +0 Al Asad Airbase ||| Six-Day War ||| The base was originally named '''Qadisiyah Airbase''' (قاعدة القادسية الجوية), a reference to the [[Battle of al-Qādisiyyah]] (c. 636). Qadisiyah AB was one of five new air bases built in Iraq as part of their Project 'Super-Base', launched in 1975 as a response to the lessons learned during the Arab-Israeli wars of [[Six-Day War|1967]] and [[Yom Kippur War|1973]]. ||| History ||| Qadisiyah Airbase ||| +0 Al Asad Airbase ||| Yom Kippur War ||| The base was originally named '''Qadisiyah Airbase''' (قاعدة القادسية الجوية), a reference to the [[Battle of al-Qādisiyyah]] (c. 636). Qadisiyah AB was one of five new air bases built in Iraq as part of their Project 'Super-Base', launched in 1975 as a response to the lessons learned during the Arab-Israeli wars of [[Six-Day War|1967]] and [[Yom Kippur War|1973]]. ||| History ||| Qadisiyah Airbase ||| +0 Al-Hasakah city offensive (May–June 2015) ||| 2015 Ramadan attacks ||| On 23 June, ISIL began a new offensive on Syrian government-held parts of the city, seizing southwestern neighborhoods The assault was one of [[2015 Ramadan attacks|many attacks]] carried out by ISIL during Ramadan of 2015. ||| Aftermath ||| ||| +0 Al-Qaeda insurgency in Yemen ||| Operation Blow to the Head ||| *January 13: Yemeni army launches [[Operation Blow to the Head]] in [[Sa'dah]] city, aimed at both Sunni al-Qaeda and Shi'a [[Houthi]] fighters, in which al-Qaeda leader [[Abdullah al-Mehdar]] was killed. ||| Timeline ||| Government crackdown (2009–2010) ||| +0 Al-Qaeda insurgency in Yemen ||| Yemeni Civil War (2015) ||| On 18 March 2015, the conflict escalated into [[Yemeni Civil War (2015)|a full-scale civil war]]. ||| ||| ||| +0 Albanian Revolt of 1911 ||| First Balkan War ||| The Albanian revolts in the period before the [[First Balkan War]] were organized mostly in the region of [[Malësia]]. [[Isa Boletini]], one of the leaders of the Albanian insurgents in Kosovo vilayet, wrote a proclamation on 23 March 1911 to the Albanians in the south to join Albanians from the [[Kosovo vilayet]] in their uprising. He sent his emissaries on 15 April 1911 to pass his proclamation to the southern insurgents. ||| Revolt in Malësia ||| Failed attempts to organize revolt in the north and south Albania ||| +0 Aleutian Islands Campaign ||| Battle of the Komandorski Islands ||| A cruiser and destroyer force under [[Rear admiral (United States)|Rear Admiral]] [[Charles McMorris|Charles 'Soc' McMorris]] was assigned to eliminate the Japanese supply convoys. They met the Japanese fleet in the naval [[Battle of the Komandorski Islands]] in March 1943. One American [[cruiser]] and two destroyers were damaged, with seven U.S. sailors killed. Two Japanese cruisers were damaged, with 14 men killed and 26 wounded. Japan thereafter abandoned all attempts to resupply the Aleutian garrisons by surface vessels, and only submarines would be used. ||| Allied response ||| Komandorski Islands ||| +0 Algeciras Campaign ||| Battle of the Nile ||| On 1 August 1798, a British fleet surprised and almost completely destroyed the French Mediterranean Fleet at the [[Battle of the Nile]] in the aftermath of the successful French invasion of [[Egypt]]. This immediately reversed the strategic situation in the [[Mediterranean Sea]], eliminating the French fleet based at [[Toulon]] as a significant threat and granting the British and their allies in the [[War of the Second Coalition]] naval dominance in the region. ||| Background ||| ||| +0 Algeciras Campaign ||| First Battle of Algeciras ||| The '''Algeciras campaign''' (sometimes known as the '''Battle''' or '''Battles of Algeciras''') was an attempt by a French naval squadron from [[Toulon]] under Contre-Admiral [[Charles Linois]] to join a French and Spanish fleet at [[Cadiz]] during June and July 1801 during the [[French Revolutionary War]] prior to a planned operation against either [[Egypt]] or [[Portugal]]. To reach Cadiz, the French squadron had to pass the British naval base at [[Gibraltar]], which housed the squadron tasked which was [[blockade|blockading]] the Spanish port under Rear-Admiral [[Sir James Saumarez]]. After a successful voyage between Toulon and Gibraltar, in which a number of British vessels were captured, the squadron anchored at [[Algeciras]], a fortified port city within sight of Gibraltar across [[Gibraltar Bay]]. On 6 July 1801, Saumarez attacked the anchored squadron, in the [[First Battle of Algeciras]]. Although severe damage was inflicted on all three French [[ships of the line]], none could be successfully captured and the British were forced to withdraw without [[HMS Hannibal (1786)|HMS ''Hannibal'']], which had grounded and was subsequently seized by the French. ||| ||| ||| +0 Algeciras Campaign ||| Second Battle of Algeciras ||| In the aftermath of the first battle, both sides set about making urgent repairs and calling up reinforcements. On 9 July a fleet of five Spanish and one French ship of the line and several frigates arrived from Cadiz to safely escort Linois's squadron to the Spanish port, and the British at Gibraltar redoubled their efforts to restore their squadron to fighting service. In the evening of 12 July the French and Spanish fleet sailed from Algeciras, and the British force followed them, catching the trailing ships in the [[Second Battle of Algeciras]] and opening fire at 11:20. A confused night action followed, in which the British ship [[HMS Superb (1798)|HMS ''Superb'']] cut through the disorganised allied rearguard, followed by the rest of Saumarez's force. In the confusion one French ship was captured, a Spanish [[frigate]] sank and two huge 112-gun Spanish [[first rate]]s collided and exploded, killing as many as 1,700 men. The following morning the French ship [[French ship Formidable (1795)|''Formidable'']] came under attack at the rear of the combined squadron, but successfully drove off pursuit and reached Cadiz safely. ||| ||| ||| +0 Allied intervention in the Russian Civil War ||| October Revolution ||| Kornilov attempted to set up a military dictatorship by staging a [[coup]] in late August 1917. He had the support of the British [[military attaché]], Brigadier-General [[Alfred Knox]], and Kerensky accused Knox of producing pro-Kornilov propaganda. Kerensky also claimed Lord [[Alfred Milner, 1st Viscount Milner|Milner]] wrote him a letter expressing support for Kornilov. A British armoured car squadron commanded by [[Oliver Locker-Lampson]] and dressed in Russian uniforms participated in the [[Kornilov affair|failed coup]]. In 1917, the [[October Revolution]] led to the overthrow of Kerensky's provisional government, and the Bolsheviks assuming power. ||| Prologue to the Allied intervention ||| Revolution ||| +0 Allied invasion of Italy ||| Allied invasion of Sicily ||| The '''Allied invasion of Italy''' was the [[Allies of World War II|Allied]] [[Amphibious warfare|amphibious landing]] on mainland [[Italy]] that took place on 3 September 1943 during [[World War II]]. The operation was undertaken by [[British Army|British]] [[General (United Kingdom)|General]] [[Harold Alexander, 1st Earl Alexander of Tunis|Harold Alexander]]'s [[15th Army Group]] (comprising [[Lieutenant general (United States)|Lieutenant General]] [[Mark W. Clark|Mark Clark]]'s [[United States Army North|U.S. Fifth Army]] and General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery's]] [[Eighth Army (United Kingdom)|British Eighth Army]]). The operation followed the successful [[Allied invasion of Sicily|invasion of Sicily]] during the [[Italian Campaign (World War II)|Italian Campaign]]. The main invasion force landed around [[Salerno]] on the western coast in '''Operation ''Avalanche''''', while two supporting operations took place in [[Calabria]] ('''[[Operation Baytown|Operation ''Baytown'']]''') and [[Taranto]] ('''[[Operation Slapstick|Operation ''Slapstick'']]'''). ||| ||| ||| +0 Allied invasion of Italy ||| Battle of Monte Cassino ||| By early October 1943, the whole of southern Italy was in Allied hands, and the Allied armies stood facing the [[Volturno Line]], the first of a series of prepared defensive lines running across Italy from which the Germans chose to fight delaying actions, giving ground slowly and buying time to complete their preparation of the [[Winter Line]], their strongest defensive line south of Rome. The next stage of the [[Italian Campaign (World War II)|Italian Campaign]] became for the Allied armies a grinding and attritional slog against skillful, determined and well-prepared defenses in terrain and weather conditions which favoured defense and hampered the Allied advantages in mechanised equipment and air superiority. It took until mid-January 1944 to fight through the [[Volturno Line|Volturno]], [[Barbara Line|Barbara]] and [[Bernhardt Line|Bernhardt]] lines to reach the Gustav Line, the backbone of the [[Winter Line]] defenses, setting the scene for the four [[Battle of Monte Cassino|battles of Monte Cassino]] which took place between January and May 1944. ||| Aftermath ||| ||| +0 Allied invasion of Italy ||| Eastern Front (World War II) ||| Following the defeat of the [[Axis powers|Axis Powers]] in [[Tunisia Campaign|North Africa]] in May 1943, there was disagreement between the [[Allies of World War II|Allies]] as to what the next step should be. The [[Prime Minister of the United Kingdom|British Prime Minister]], [[Winston Churchill]], in particular wanted to invade Italy, which in November 1942 he called 'the soft underbelly of the axis' (and [[Lieutenant general (United States)|Lieutenant General]] [[Mark W. Clark|Mark Clark]], later called 'one tough gut'). and increase British and American supplies to the [[Soviet Union]]. In addition, it would tie down [[Wehrmacht|German]] forces, keeping them away from the [[Eastern Front (World War II)|Eastern Front]]. [[Joseph Stalin|Stalin]] had been pressing to open a 'second front' in Europe, which would weaken the [[German Army (Wehrmacht)|German Army]]'s [[Operation Barbarossa|invasion of Russia]] in mid-1941. ||| Background ||| Allied plan ||| +0 Allied invasion of Italy ||| Four days of Naples ||| German troops occupying Naples [[Four days of Naples|provoked a rebellion by the population]], starting on 27 September and had to evacuate. On 1 October, 'A' Squadron of the [[1st King's Dragoon Guards]] entered the city. The entire Fifth Army, now consisting of five American and three British divisions, reached the line of the [[Volturno Line|Volturno]] River on 6 October. This provided a natural defensive barrier, securing Naples, the Campanian plain and the vital airfields on it from German counterattack. ||| Battle ||| Further Allied advances=== <!-- [[Four days of Naples]] links here --& ||| +0 Allied invasion of Italy ||| North African Campaign ||| The Salerno battle was also the site of the [[Salerno Mutiny]] instigated by about 500 men of the [[X Corps (United Kingdom)|British X Corps]], which had by this time suffered over 1,500 casualties, who on 16 September refused assignment to new units as replacements. They had previously understood that they would be returning to their own units from which they had been separated during the fighting in the [[North African Campaign]], mainly because they had been wounded. Eventually the corps commander, [[Richard McCreery|Richard L. McCreery]], persuaded about half of the men to follow their orders. The remainder were court-martialled. Three [[Non-commissioned officer|NCOs]] who led the mutiny were sentenced to death but the sentence was not carried out and they were eventually allowed to rejoin units. ||| Battle ||| Salerno mutiny ||| +0 Allied invasion of Italy ||| Operation Barbarossa ||| Following the defeat of the [[Axis powers|Axis Powers]] in [[Tunisia Campaign|North Africa]] in May 1943, there was disagreement between the [[Allies of World War II|Allies]] as to what the next step should be. The [[Prime Minister of the United Kingdom|British Prime Minister]], [[Winston Churchill]], in particular wanted to invade Italy, which in November 1942 he called 'the soft underbelly of the axis' (and [[Lieutenant general (United States)|Lieutenant General]] [[Mark W. Clark|Mark Clark]], later called 'one tough gut'). and increase British and American supplies to the [[Soviet Union]]. In addition, it would tie down [[Wehrmacht|German]] forces, keeping them away from the [[Eastern Front (World War II)|Eastern Front]]. [[Joseph Stalin|Stalin]] had been pressing to open a 'second front' in Europe, which would weaken the [[German Army (Wehrmacht)|German Army]]'s [[Operation Barbarossa|invasion of Russia]] in mid-1941. ||| Background ||| Allied plan ||| +0 Allied invasion of Sicily ||| Allied invasion of Italy ||| ''Husky'' began on the night of 9/10 July 1943, and ended on 17 August. Strategically, ''Husky'' achieved the goals set out for it by Allied planners; the Allies drove Axis air, land and naval forces from the island and the [[Mediterranean Sea|Mediterranean]] [[sea lane]]s were opened for Allied merchant ships for the first time since 1941. [[Benito Mussolini]] was toppled from power in Italy and the way was opened for the [[Allied invasion of Italy|invasion of Italy]]. [[Adolf Hitler|Hitler]] 'canceled a major offensive at [[Battle of Kursk|Kursk]] after only a week, in part to divert forces to Italy,' resulting in a reduction of German strength on the [[Eastern Front of World War II|Eastern Front]]. ||| ||| ||| +0 Allied invasion of Sicily ||| Battle of Kursk ||| ''Husky'' began on the night of 9/10 July 1943, and ended on 17 August. Strategically, ''Husky'' achieved the goals set out for it by Allied planners; the Allies drove Axis air, land and naval forces from the island and the [[Mediterranean Sea|Mediterranean]] [[sea lane]]s were opened for Allied merchant ships for the first time since 1941. [[Benito Mussolini]] was toppled from power in Italy and the way was opened for the [[Allied invasion of Italy|invasion of Italy]]. [[Adolf Hitler|Hitler]] 'canceled a major offensive at [[Battle of Kursk|Kursk]] after only a week, in part to divert forces to Italy,' resulting in a reduction of German strength on the [[Eastern Front of World War II|Eastern Front]]. ||| ||| ||| +0 Allied invasion of Sicily ||| Battle of Troina ||| Patton had decided that his communications could support two divisions pushing east, 45th Division on the coast road and 1st Division on Route 120. In order to maintain the pressure, he relieved 45th Division with the fresher 3rd Division and called up 9th Infantry Division from reserve in North Africa to relieve 1st Division. Axis forces were now settled on a second defensive line, the [[Etna Line]], running from San Fratello on the north coast through Troina and Aderno. On 31 July, 1 Division with elements of the arriving 9th Division attached, reached Troina and the [[Battle of Troina]] commenced. This important position was held by the 15th Panzer Grenadier Division. The remnants of the [[28 Infantry Division Aosta]] in the form of four battalions had also been pulled back to Troina to assist in the defensive preparations and forthcoming battle. ||| Battle ||| Battles for Etna positions ||| +0 Allied invasion of Sicily ||| North African Campaign ||| At the [[Casablanca Conference]] in January 1943, with the end of the [[North African Campaign]] in sight, the political leaders and the military Chiefs of Staff of the U.S. and Britain met to discuss future strategy. The British Chiefs of Staff were in favour of an invasion of Sicily or [[Sardinia]], arguing that it would force Germany to disperse its forces and might knock Italy out of the war and move Turkey to join the Allies. The [[Combined Chiefs of Staff]] appointed General Eisenhower as Commander-in-Chief of the Allied Expeditionary Force, General Alexander as Deputy C-in-C with responsibility for detailed planning and execution of the operation, Admiral of the Fleet Andrew Cunningham as Naval Commander, and Air Chief Marshal Tedder as Air Commander. ||| Background ||| Planning ||| +0 Allied invasion of Sicily ||| Operation Chestnut ||| * [[Operation Chestnut]]: Advanced air drop by 2 SAS to disrupt communications on 12 July 1943. ||| Constituent operations ||| ||| +0 Allied naval bombardments of Japan during World War II ||| Air raids on Japan ||| By mid-1945, cities and industrial facilities in the Japanese home islands were [[Air raids on Japan|under sustained attack]] from [[United States Army Air Forces]] [[Boeing B-29 Superfortress|B-29 Superfortress]] [[heavy bombers]] based in the [[Mariana Islands]]. Attacks by [[Allied submarines in the Pacific War|Allied submarines]] and surface ships had also cut most of the country's trade routes, and US Navy aircraft carrier task groups had raided locations in the home islands on several occasions during 1945. Shortages of fuel had confined most of the [[Imperial Japanese Navy]]'s (IJN's) surviving ships to port and forced the [[Imperial Japanese Navy Air Service]] and IJN to hold its air units in reserve against the [[Operation Downfall|Allied invasion]] which was expected to be launched late in the year. ||| Background ||| ||| +0 Allied naval bombardments of Japan during World War II ||| Attack on Yokosuka ||| On 18 July, TFs 37 and 38 conducted further air strikes in the Tokyo area, with the US Navy's main effort being [[Attack on Yokosuka|an attempt to sink]] the Japanese battleship {{Ship|Japanese battleship|Nagato||2}} in [[Yokosuka Naval District|Yokosuka Naval Base]]. That night, Cruiser Division 17 (CruDiv 17), which comprised the light cruisers {{USS|Astoria|CL-90|6}}, {{USS|Pasadena|CL-65|2}}, {{USS|Springfield|CL-66|2}} and {{USS|Wilkes-Barre|CL-103|2}} and six destroyers under the command of Rear Admiral J. Cary Jones, fired 240 {{convert|6|in|mm|abbr=on}} shells at a radar station on [[Cape Nojima]] in a five-minute period but did not score any hits. ||| Bombardments ||| Nojima Saki and Shionomisaki ||| +0 Allied siege of La Rochelle ||| Liberation of Paris ||| The '''Allied siege of La Rochelle''' occurred during the [[Second World War]] in 1944–45, when Allied troops invaded France. Until the end of the war, La Rochelle was, with other harbours such as [[Royan]] or [[Saint-Nazaire]], one of the remaining 'Atlantic pockets' occupied by the Germans, which had been bypassed by the main thrust of the Allied invasion. On the North Sea, [[Siege of Dunkirk (1944)|Dunkirk]] was similarly bypassed. The city was liberated only at the very end of the war, nine months after the [[Liberation of Paris]], after the general [[Victory in Europe Day|German capitulation]] on 8 May 1945. ||| ||| ||| +0 Altmark Incident ||| Phoney War ||| The ''Altmark'' incident gave the British a short-lived but sorely needed morale boost during the [[Phoney War]]. The incident also had a lasting propaganda effect in German-occupied Norway during the war, when the Norwegian collaborationist government tried to neutralise their nickname '[[quisling]]s' by using the location of the skirmish, Jøssingfjord, to coin the derogatory term '''jøssing''', referring to pro-Allies and anti-Nazis. Their efforts backfired, as '''jøssing''' was immediately adopted as a positive term by the general public, and the word was banned from official use by 1943. ||| Impact ||| ||| +0 Ambush of Geary ||| Battle of Trenton ||| Making a casualty of Geary was one of a number of militia actions that resulted in a reduced scope of British reconnaissance, contributing to the eventual success of [[George Washington]]'s [[Washington's crossing of the Delaware River|crossing of the Delaware]] and [[Battle of Trenton|success at Trenton]]. ||| ||| ||| +0 American Indian Wars ||| Wounded Knee Massacre ||| Later, in 1890, a [[Ghost Dance]] ritual on the Northern Lakota reservation at Wounded Knee, [[South Dakota]], led to the Army's attempt to subdue the Lakota. On December 29 during this attempt, gunfire erupted, and soldiers killed up to 300 Indians, mostly old men, women and children in the [[Wounded Knee Massacre]]. The approximately 25 soldiers who died may have been killed by friendly fire during the battle. Long before this, the means of subsistence and the societies of the indigenous population of the Great Plains had been destroyed by the slaughter of the [[American Bison|buffalo]], driven almost to extinction in the 1880s by indiscriminate hunting. ||| West of the Mississippi (1811–1924) ||| Great Plains ||| Black Hills War +0 American Revolutionary War ||| Northwest Indian War ||| Britain negotiated the Paris peace treaty without consulting her Native American allies and ceded all Native American territory between the Appalachian Mountains and the Mississippi River to the United States. Native Americans reluctantly confirmed these land cessions with the United States in a series of treaties, but the fighting would be renewed in conflicts along the frontier in the coming years, the largest being the [[Northwest Indian War]]. ||| Treaty of Paris ||| ||| +0 American Theater (World War II) ||| Battle of Los Angeles ||| |accessdate=2007-12-09| archiveurl= https://web.archive.org/web/20080105193418/http://www.militarymuseum.org/Ellwood.html| archivedate= 5 January 2008 <!--DASHBot-->| deadurl= no}} News of the shelling triggered an [[Battle of Los Angeles|invasion scare]] along the West Coast. ||| Japanese operations ||| Submarine operations ||| Bombardment of Ellwood +0 American Theater (World War II) ||| Battle of Midway ||| On June 3–4, 1942, Japanese planes from two light carriers {{Ship|Japanese aircraft carrier|Ryūjō||2}} and {{Ship|Japanese aircraft carrier|Jun'yō||2}} [[Battle of Dutch Harbor|struck]] the U.S. [[military base]] at [[Dutch Harbor]] in the [[Aleutian Islands]], [[Unalaska, Alaska]]. Originally, the Japanese planned to attack Dutch Harbor simultaneously with its [[Battle of Midway|attack on Midway]] but it occurred a day earlier due to one-day delay. The attack only did moderate damage on Dutch Harbor, but 78 Americans were killed in the attack. ||| Japanese operations ||| Aleutian Islands Campaign ||| +0 American Theater (World War II) ||| Battle of the Atlantic ||| The Atlantic Ocean was a major strategic battle zone (the '[[Battle of the Atlantic (1939-1945)|Battle of the Atlantic]]') and when Germany declared war on the U.S., the [[East Coast of the United States]] offered easy pickings for German [[U-Boat]]s (referred to as the '[[Second Happy Time]]'). After a highly successful foray by five [[German Type IX submarine|Type IX]] long-range U-boats, the offensive was maximized by the use of short-range [[German Type VII submarine|Type VII]] U-boats, with increased fuel stores, replenished from [[German Type XIV submarine|supply U-boats]] called ''Milchkühe'' (milk cows). From February to May 1942, 348 ships were sunk, for the loss of 2 U-boats during April and May. U.S. naval commanders were reluctant to introduce the convoy system that had protected trans-Atlantic shipping{{Clarify|date=July 2010}} and, without coastal [[Blackout (wartime)|blackouts]], shipping was silhouetted against the bright lights of American towns and cities such as [[Atlantic City]] until a [[Blackout (wartime)|dim-out]] was ordered in May. ||| German operations ||| U-Boat operations ||| Atlantic Ocean +0 American Theater (World War II) ||| War of 1812 ||| On June 6, two days after the bombing of Dutch Harbor, 500 Japanese marines landed on [[Kiska]], one of the Aleutian Islands of Alaska. Upon landing, they killed two and captured eight [[U.S. Navy]] [[Officer (armed forces)|officers]], then took the remaining inhabitants of the island, and seized control of American soil for the first time. The next day, a total of 1,140 Japanese infantrymen landed on [[Attu Island|Attu]] via [[Holtz Bay]], eventually reaching [[Massacre Bay]] and [[Chichagof Harbor]]. Attu's population at the time consisted of 45 Native American [[Aleut]]s, and two Americans - Charles Foster Jones, a 60-year-old [[Amateur radio|ham radio]] operator and weather observer, and his 62-year-old wife Etta, a teacher and nurse. The Japanese killed Jones after interrogating him, while his wife and the Aleut population were sent to Japan. The invasion was only the second time that American soil had been occupied by a foreign enemy, the first being the British during the [[War of 1812]]. ||| Japanese operations ||| Aleutian Islands Campaign ||| +0 American frontier ||| Apache Wars ||| In the [[Apache Wars]], Colonel [[Kit Carson|Christopher 'Kit' Carson]] forced the [[Mescalero]] Apache onto a reservation in 1862. In 1863–1864, Carson used a [[scorched earth]] policy in the [[Navajo Wars|Navajo Campaign]], burning Navajo fields and homes, and capturing or killing their livestock. He was aided by other Indian tribes with long-standing enmity toward the Navajos, chiefly the [[Ute Tribe|Utes]]. The U.S. finally induced the last hostile Apache band under [[Geronimo]] to surrender in 1886. ||| Indian Wars ||| Indian wars west of the Mississippi ||| +0 American frontier ||| Navajo Wars ||| In the [[Apache Wars]], Colonel [[Kit Carson|Christopher 'Kit' Carson]] forced the [[Mescalero]] Apache onto a reservation in 1862. In 1863–1864, Carson used a [[scorched earth]] policy in the [[Navajo Wars|Navajo Campaign]], burning Navajo fields and homes, and capturing or killing their livestock. He was aided by other Indian tribes with long-standing enmity toward the Navajos, chiefly the [[Ute Tribe|Utes]]. The U.S. finally induced the last hostile Apache band under [[Geronimo]] to surrender in 1886. ||| Indian Wars ||| Indian wars west of the Mississippi ||| +0 American frontier ||| Snake War ||| One of the deadliest Indian wars fought was the [[Snake War]] in 1864–1868, which was conducted by a confederacy of [[Northern Paiute]], [[Bannock people|Bannock]] and [[Shoshone]] Native Americans, called the 'Snake Indians' against the United States Army in the states of Oregon, Nevada, California, and Idaho which ran along the Snake River. ||| Indian Wars ||| Indian wars west of the Mississippi ||| +0 American frontier ||| Wounded Knee Massacre ||| The end of the Indian wars came at the [[Wounded Knee Massacre]] on December 29, 1890 where the [[U.S. 7th Cavalry Regiment|7th Cavalry]] attempted to disarm a Sioux man and precipitated an engagement in which about 150 Sioux men, women, and children were killed. Only thirteen days before, Sitting Bull had been killed with his son [[Crow Foot]] in a gun battle with a group of Indian police that had been sent by the American government to arrest him. ||| Indian Wars ||| Indian wars west of the Mississippi ||| +0 American-led intervention in Iraq (2014–present) ||| 2003 invasion of Iraq ||| After the U.S.-led [[2003 invasion of Iraq|Invasion of Iraq]] in 2003, which was based on assertions that Iraq had WMD's and was harbouring terrorists, U.S. military forces in Iraq peaked at 170,000 soldiers in 2007, the U.S. had [[Withdrawal of U.S. troops from Iraq|withdrawn most of its troops from Iraq]] by 2011. The U.S. kept a staff though of 20,000 men in their embassy and consulates in Iraq, including dozens of [[Marine Security Guard|U.S. Marine Embassy Guards]] and some 4,500 [[Private military company|private military contractors]] (see [[Iraq War#2011: U.S. withdrawal]]). ||| Background ||| Previous US involvement ||| +0 American-led intervention in Iraq (2014–present) ||| Battle for Mosul Dam ||| On 16 August, U.S. drones and warplanes began a [[Close air support|close air campaign]] aimed at supporting [[Battle for Mosul Dam|the advance of Kurdish fighters]] moving toward the [[Mosul Dam]]. Kurdish sources commented that this was the 'heaviest US bombing of militant positions since the start of air strikes.' ||| Chronology ||| Retaking Mosul Dam ||| +0 American-led intervention in Iraq (2014–present) ||| First Battle of Tikrit ||| * [[First Battle of Tikrit]] ||| See also ||| ||| +0 American-led intervention in Iraq (2014–present) ||| Northern Iraq offensive (August 2014) ||| In early August 2014, ISIL [[Northern Iraq offensive (August 2014)|attacked Kurdish-held territory in northern Iraq]], and captured three towns in northern Iraq, close to the [[Autonomous administrative division|autonomous region]] [[Iraqi Kurdistan]]. On the next day, 8 August, the US began airstrikes against ISIL positions in Iraq. ||| ||| ||| +0 American-led intervention in Syria ||| Arab Spring ||| Following the start of the [[Arab Spring]] in 2011, [[Civil uprising phase of the Syrian Civil War|protests]] in Syria against the Assad administration were suppressed and became violent. ||| Background ||| ||| +0 American-led intervention in Syria ||| November 2015 Paris attacks ||| After the [[November 2015 Paris attacks|deadly attacks in Paris]], French President Francois Hollande sent its only aircraft carrier, the Charles de Gaulle, with its 26 fighters to intensify air strikes. ||| Multinational air war ||| Timeline ||| November 2015 +0 Andrew Jackson presidential campaign, 1828 ||| Battle of New Orleans ||| John Quincy Adams was an unpopular President from the beginning of his term, and the Democratic Party, which was just beginning to emerge as a political force, mobilized behind Jackson, a popular war hero who had served in the [[Battle of New Orleans]]. Despite his successes as a member of both the House of Representatives and the Senate, as well as the [[Military Governor of Florida]], Jackson had been born in relatively modest surroundings in rural [[The Carolinas|Carolina]], which appealed to the majority of Americans, who were small farmers who benefited from the introduction of [[Universal male suffrage]] from the 1820s to the 1840s. This expansion of voting rights helped both major political parties (the Democrats and the National Republicans) canvass voters and expand the popular vote. ||| ||| ||| +0 Anglo-Dutch Wars ||| Battle of Trafalgar ||| In the [[French Revolutionary Wars|French Revolutionary]] and [[Napoleonic Wars]] of 1793-1815, [[France]] reduced the Netherlands to a [[Satellite state|satellite]] and finally annexed the country in 1810. In 1797 the Dutch fleet was defeated by the British in the [[Battle of Camperdown]]. France considered both the extant Dutch fleet and the large Dutch shipbuilding capacity very important assets, but after the [[Battle of Trafalgar]] gave up its attempt to match the British fleet, despite a strong Dutch lobby to this effect. After the incorporation of the Netherlands in the [[First French Empire|French Empire]], Britain took over most of the Dutch colonies, with the exception of [[Dutch East Indies]] (now [[Indonesia]]), [[Suriname]] (which they had captured in May 1804), the [[Dutch Antilles]] and the trading post at [[Dejima]] in [[Japan]]. ||| Later wars ||| ||| +0 Anglo-Dutch Wars ||| English Civil War ||| The [[English Civil War]], commencing soon thereafter, severely weakened England's naval position. Its navy was as internally divided as was the country as a whole; the Dutch, as superior on land as they were at sea, even took over much of England's maritime trade with its North American colonies. Between 1648 and 1651 however the situation reversed completely. In 1648 the United Provinces concluded the [[Peace of Münster]] with Spain. Due to the division of powers in the Dutch Republic, the army and navy were a main powerbase of the stadtholder, although the budget allocated to the military was set by the States General. With the war gone, it decided to decommission most of the Dutch army and navy. This led to a conflict between the major Dutch cities and the new stadtholder [[William II of Orange]], bringing the Republic to the brink of civil war; the stadtholder's unexpected death in 1650 only added to the political tensions. Meanwhile, [[Oliver Cromwell]] united his country into the [[Commonwealth of England]] and in a few years created a powerful navy, expanding the number of ships and greatly improving organisation and discipline. England was ready to challenge Dutch trade dominance. ||| Background ||| ||| +0 Anglo-Egyptian Darfur Expedition ||| Sinai and Palestine Campaign ||| Wingate believed that Dinar would avoid a large battle in the provinces, but would instead gather his troops at El Fasher, until the rainy period started, which would benefit their style of [[guerrilla]] fighting and raids on the Anglo-Egyptian column and their [[lines of communication]]. However, Kelly's immediate concern was providing water and other supplies to his troops. The Anglo-Egyptian expedition coincided with a period of no rainfall and once all the native food supplies had been used, their nearest supply point was the railhead at [[Al-Ubayyid|El Obeid]] {{convert|300|mi}} to the west. To overcome some of their supply problems Wingate started construction of a road suitable for trucks, which he had obtained to supplement his camel transport. The road would stretch from the rail line at [[Rahad]] to [[Taweisha]] then on to the capital of El Fasher, about {{convert|460|mi}}. Once completed, a journey on the road by vehicles, from the rail line to the capital, would take four days. General Sir [[Archibald Murray]], the commander of the [[Egyptian Expeditionary Force]] fighting in the [[Sinai and Palestine Campaign]], arranged for the [[Royal Flying Corps]] (RFC) to send a flight of four aeroplanes, [[Ordnance BLC 15-pounder|15-pounder guns]] and ammunition, wireless communication sets and light transport vehicles, to assist the expedition. ||| Expedition ||| Supply problems ||| +0 Anglo-Iraqi War ||| Battle of Stalingrad ||| After the Anglo-Iraq War, elements of ''Iraqforce'' (known as ''Iraq Command'' from 21 June) were used to attack the Vichy French-held [[Mandate of Syria]] during the [[Syria-Lebanon campaign]], which started 8 June and ended 14 July. Iraq Command (known as Persia and Iraq Force ([[Iraqforce|Paiforce]] from 1 September) was also used to attack [[Imperial State of Iran|Persia]] during the [[Anglo-Soviet invasion of Iran|Anglo-Soviet invasion of Persia]], which took place in August to September 1941. Forward defences against a possible German invasion from the north through the [[Caucasus]] were created in 1942, and the strength of Paiforce peaked at the equivalent of over 10 brigades before the Russians halted the German threat at the [[Battle of Stalingrad]]. After 1942, Iraq and Persia were used to [[Persian Corridor|transit war material]] to the Soviet Union and the British military presence became mainly lines of communication troops. ||| Aftermath ||| ||| +0 Anglo-Iraqi War ||| Siege of Tobruk ||| On 6 April, AVM Smart requested reinforcements, but his request was rejected by [[Air Officer Commanding]] in the [[RAF Middle East Command|Middle East]] Sir [[Arthur Longmore]]. At this point in the [[World War II|war]], the situation developing in Iraq did not figure highly in British priorities. Churchill wrote, '[[Western Desert Campaign|Libya]] counts first, withdrawal of troops from [[Battle of Greece|Greece]] second. [[Siege of Tobruk|Tobruk]] shipping, unless indispensable to victory, must be fitted in as convenient. Iraq can be ignored and [[Battle of Crete|Crete]] worked up later.' ||| Coup d'état ||| British response ||| +0 Anglo-Iraqi War ||| Western Desert Campaign ||| On 6 April, AVM Smart requested reinforcements, but his request was rejected by [[Air Officer Commanding]] in the [[RAF Middle East Command|Middle East]] Sir [[Arthur Longmore]]. At this point in the [[World War II|war]], the situation developing in Iraq did not figure highly in British priorities. Churchill wrote, '[[Western Desert Campaign|Libya]] counts first, withdrawal of troops from [[Battle of Greece|Greece]] second. [[Siege of Tobruk|Tobruk]] shipping, unless indispensable to victory, must be fitted in as convenient. Iraq can be ignored and [[Battle of Crete|Crete]] worked up later.' ||| Coup d'état ||| British response ||| +0 Anglo-Russian War (1807–12) ||| Battle of Copenhagen (1807) ||| On 26 October 1807, Tsar Alexander formally declared war on the United Kingdom after the British attack on [[Battle of Copenhagen (1807)|Copenhagen]] in September 1807. He did not actively prosecute the war; Alexander instead restricted Russia's contribution to the bare requirement to close off trade. The British, understanding his position, limited their military response to the declaration. However, there were a few notable incidents. ||| Military activities ||| ||| +0 Anglo-Russian War (1807–12) ||| Battle of Vimeiro ||| Senyavin, caught between two warring powers, proceeded to distinguish himself as a diplomat. He declared himself neutral and managed to save his ships from destruction. In August 1808 the [[Arthur Wellesley, 1st Duke of Wellington|Duke of Wellington]] defeated the French [[Battle of Vimeiro|at Vimeiro]], which forced them to leave Portugal. Senyavin's seven [[ships of the line]] and one frigate were left face to face with 15 British ships of the line and 10 frigates. Senyavin maintained his neutrality, threatening to blow up the ships and set Lisbon ablaze in case of attack. At last he signed a convention with Admiral Sir [[Sir Charles Cotton, 5th Baronet|Charles Cotton]], whereby the [[Royal Navy]] was to escort the Russian squadron to [[London]], with the Russians still flying their flags. Moreover, Senyavin was to assume supreme command of the joint Anglo-Russian fleet (as the senior officer of the two). Two Russian ships (''Rafail'' and ''Yaroslav'') were left in Lisbon for repairs. ||| Military activities ||| Lisbon Incident ||| +0 Anglo-Russian War (1807–12) ||| Gunboat War ||| The war overlapped, in time, the [[Gunboat War]] against Denmark-Norway, leading the British to expand their trade embargo to Russian waters and to forays by the British navy northwards into the Barents Sea. The navy conducted raids on [[Hasvik]] and [[Hammerfest]] and disrupted the [[Pomor trade]], the Norwegian trade with Russia. ||| Military activities ||| Naval raids in the Barents Sea ||| +0 Anglo-Soviet invasion of Iran ||| Eastern Front (World War II) ||| The '''Anglo-Soviet Invasion of Iran''' also known as '''Anglo-Soviet Invasion of Persia''' was the invasion of the [[Empire of Iran]] during [[World War II]] by [[Soviet Union|Soviet]], [[British Empire|British]] and other [[Commonwealth of Nations|Commonwealth]] armed forces. The invasion lasted from 25 August to 17 September 1941, and was codenamed ''Operation Countenance''. The purpose was to secure Iranian [[oil field]]s and ensure Allied [[supply line]]s (see [[Persian Corridor]]) for the Soviets, fighting against Axis forces on the [[Eastern Front (World War II)|Eastern Front]]. Though Iran was officially neutral, according to the Allies its monarch [[Rezā Shāh]] was friendly toward the [[Axis powers]] and was deposed during the subsequent occupation and replaced with his young son [[Mohammad Reza Pahlavi]]. ||| ||| ||| +0 Anglo-Spanish War (1654–60) ||| First Anglo-Dutch War ||| After the ending of the [[First Anglo-Dutch War]], Cromwell turned his attention to England's traditional enemies, France and Spain. Although Cromwell believed it to be God's will that the [[Protestantism|Protestant religion]] should prevail in Europe, he pursued a foreign policy that was at once pragmatic and realistic, allying himself with Catholic France that was engaged in a major and longstanding war with Catholic Spain. In essence, by going to war with Spain he was seeking a return to a policy of commercial opportunism pursued in the days of [[Elizabeth I of England|Elizabeth I]] and subsequently abandoned by the [[House of Stuart|Stuarts]]. Cromwell's attack on Spanish trade and treasure routes immediately recalled the exploits of [[Francis Drake]] and [[Walter Ralegh]]; and it is not by accident that printed accounts of their activities began to circulate in England at this time. There was, however, one important difference: alongside silver and gold a new treasure was becoming ever more important – sugar. This meant occupation of territory, a step beyond the piracy pursued in Elizabethan days. ||| Background ||| ||| +0 Anglo-Spanish War (1796–1808) ||| Battle of Cape St Vincent (1797) ||| In response, the British blockaded Spain in 1797, impairing communications with its American colonies. By the end of 1798, a Spanish battle fleet was defeated in the [[Battle of Cape St Vincent (1797)|Battle of Cape St Vincent]], and [[Capture of Minorca (1798)|Minorca]] and [[Invasion of Trinidad (1797)|Trinidad]] were occupied by the British. A British attempt to capture the strategically important island of [[Battle of Santa Cruz de Tenerife (1797)|Tenerife]] failed. ||| ||| ||| +0 Anglo-Spanish War (1796–1808) ||| Battle of Santa Cruz de Tenerife (1797) ||| In response, the British blockaded Spain in 1797, impairing communications with its American colonies. By the end of 1798, a Spanish battle fleet was defeated in the [[Battle of Cape St Vincent (1797)|Battle of Cape St Vincent]], and [[Capture of Minorca (1798)|Minorca]] and [[Invasion of Trinidad (1797)|Trinidad]] were occupied by the British. A British attempt to capture the strategically important island of [[Battle of Santa Cruz de Tenerife (1797)|Tenerife]] failed. ||| ||| ||| +0 Anglo-Spanish War (1796–1808) ||| Battle of Trafalgar ||| The [[Treaty of Amiens]] in 1802 provided for a temporary truce in hostilities, only to be broken in 1804, when, as part of the reopening of the war with Napoleons France, the British captured a Spanish squadron of [[frigate]]s carrying gold bullion to [[Cádiz]]. The French planned an invasion of England in the coming year; the Spanish fleet was to be an integral part in assisting this invasion. At the [[Battle of Trafalgar]], in 1805, a combined Franco-Spanish fleet, attempting to join forces with the French fleets in the north for the invasion, were attacked by a British fleet in one of history's greatest naval engagements. The decisive British victory ended Napoleon's hopes of an invasion of Britain . It seriously shook the resolve of the unpopular Spanish government, which began to doubt the utility of its uncertain alliance with France. Meanwhile, a [[British invasions of the Río de la Plata|British campaign]] (1806–1807) to conquer the strategically important [[Rio de la Plata]] region in South America met with failure. ||| ||| ||| +0 Anglo-Spanish War (1796–1808) ||| Capture of Minorca (1798) ||| In response, the British blockaded Spain in 1797, impairing communications with its American colonies. By the end of 1798, a Spanish battle fleet was defeated in the [[Battle of Cape St Vincent (1797)|Battle of Cape St Vincent]], and [[Capture of Minorca (1798)|Minorca]] and [[Invasion of Trinidad (1797)|Trinidad]] were occupied by the British. A British attempt to capture the strategically important island of [[Battle of Santa Cruz de Tenerife (1797)|Tenerife]] failed. ||| ||| ||| +0 Anglo-Spanish War (1796–1808) ||| Invasion of Trinidad (1797) ||| In response, the British blockaded Spain in 1797, impairing communications with its American colonies. By the end of 1798, a Spanish battle fleet was defeated in the [[Battle of Cape St Vincent (1797)|Battle of Cape St Vincent]], and [[Capture of Minorca (1798)|Minorca]] and [[Invasion of Trinidad (1797)|Trinidad]] were occupied by the British. A British attempt to capture the strategically important island of [[Battle of Santa Cruz de Tenerife (1797)|Tenerife]] failed. ||| ||| ||| +0 Anglo-Spanish War (1796–1808) ||| Peninsular War ||| In 1807, France and Spain invaded [[Portugal]], and, on 1 December, [[Lisbon]] was captured with no military opposition. In the beginning of 1808, the French presence in Spain was so predominant that it led to revolt. Napoleon then removed King Charles and his son Ferdinand to [[Bayonne]] and forced them both to abdicate on 5 May, giving the throne to his brother [[Joseph Bonaparte|Joseph]]. This led to the [[Peninsular War]] and the de facto end of the Anglo-Spanish War, as [[George Canning]], [[Secretary of State for Foreign and Commonwealth Affairs|foreign secretary]] of His Majesty's Government, declared: ||| ||| ||| +0 Angolan Civil War ||| Carnation Revolution ||| In 1961, the FNLA and the MPLA, based in neighbouring countries, began a guerrilla campaign against Portuguese rule on several fronts. The [[Portuguese Colonial War]], which included the [[Angolan War of Independence]], lasted until the [[Estado Novo (Portugal)|Portuguese regime's]] overthrow in 1974 through a [[Carnation Revolution|leftist military coup]] in [[Lisbon]]. When the timeline for independence became known, most of the roughly 500,000 ethnic Portuguese Angolans fled the territory during the weeks before or after that deadline. Portugal left behind a newly independent country whose population was mainly composed by Ambundu, Ovimbundu, and [[Bakongo]] peoples. The Portuguese that lived in Angola accounted for the majority of the skilled workers in public administration, agriculture, and industry; once they fled the country, the national economy began to sink into [[economic depression|depression]]. ||| Roots of the conflict ||| Build-up to independence and rising tensions ||| +0 Angolan Civil War ||| First Congo War ||| During the [[First Congo War]], the Angolan government joined the coalition to overthrow Mobutu's government due to Mobutu's support for UNITA. Mobutu's government fell on 16 May 1997. ||| 1990s ||| Arms monitoring ||| +0 Angolan Civil War ||| Portuguese Colonial War ||| In 1961, the FNLA and the MPLA, based in neighbouring countries, began a guerrilla campaign against Portuguese rule on several fronts. The [[Portuguese Colonial War]], which included the [[Angolan War of Independence]], lasted until the [[Estado Novo (Portugal)|Portuguese regime's]] overthrow in 1974 through a [[Carnation Revolution|leftist military coup]] in [[Lisbon]]. When the timeline for independence became known, most of the roughly 500,000 ethnic Portuguese Angolans fled the territory during the weeks before or after that deadline. Portugal left behind a newly independent country whose population was mainly composed by Ambundu, Ovimbundu, and [[Bakongo]] peoples. The Portuguese that lived in Angola accounted for the majority of the skilled workers in public administration, agriculture, and industry; once they fled the country, the national economy began to sink into [[economic depression|depression]]. ||| Roots of the conflict ||| Build-up to independence and rising tensions ||| +0 Angolan Civil War ||| Second Congo War ||| The Angolan Civil War was notable due to the combination of Angola's violent internal dynamics and massive foreign intervention. The war became a Cold War struggle, as both the Soviet Union and the United States, along with their respective allies, provided significant military assistance to parties in the conflict. Moreover, the Angolan conflict became entangled with the [[Second Congo War]] in the neighbouring [[Democratic Republic of the Congo]], as well as with the [[Namibian War of Independence]]. ||| ||| ||| +0 Annexation of Crimea by the Russian Federation ||| 2014 Ukrainian revolution ||| The February 2014 [[2014 Ukrainian revolution|revolution]] that ousted Ukrainian president [[Viktor Yanukovych]], driven by the [[Euromaidan]] movement, sparked a political crisis in Crimea, which initially manifested as [[Timeline of the 2014 Crimean crisis#February 23|demonstrations]] against the new [[First Yatsenyuk Government|interim Ukrainian government]], but rapidly escalated due to [[Russia]]'s overt support for separatist political factions. In January 2014 the [[Sevastopol]] city council had already set up local 'self-defence' units. ||| History ||| Crimean crisis begins ||| +0 Annexation of Crimea by the Russian Federation ||| Siege of Leningrad ||| In early March, Igor Andreyev, a 75-year-old survivor of the [[Siege of Leningrad]], attended an anti-war rally against the Russian intervention in Crimea and was holding a sign that read 'Peace to the World'. The riot police arrested him and a local pro-government lawyer then accused him of being a supporter of 'fascism'. The retiree, who lived on a 6,500-ruble monthly pension, was fined 10,000 rubles. ||| Russian response ||| ||| +0 Anti-austerity movement in Greece ||| 15 October 2011 global protests ||| There were demonstrations in co-ordination with the [[Occupy Wall Street]] movement on [[15 October 2011 global protests|15 October]]. Only 7,000 demonstrators, according to estimates by local media, gathered on Syntagma square in a peaceful demonstration. Further protests and strikes were organised for 19 and 20 October. ||| 2011 protests ||| Other protests in 2011 ||| October +0 Anti-austerity movement in Greece ||| 2008 Greek riots ||| The [[2008 Greek riots]] started on 6 December 2008, when Alexandros Grigoropoulos ({{lang-el|Αλέξανδρος Γρηγορόπουλος}}), a 15-year-old student, was killed by two policemen Related sporadic protests have continued into 2011. ||| Background of the 2010 events ||| Relationship to the 2008 Greek riots ||| +0 Anti-austerity movement in Greece ||| Occupy Wall Street ||| There were demonstrations in co-ordination with the [[Occupy Wall Street]] movement on [[15 October 2011 global protests|15 October]]. Only 7,000 demonstrators, according to estimates by local media, gathered on Syntagma square in a peaceful demonstration. Further protests and strikes were organised for 19 and 20 October. ||| 2011 protests ||| Other protests in 2011 ||| October +0 Anti-austerity movement in Spain ||| 15 October 2011 global protests ||| Fifty ''indignados'' left [[Puerta del Sol]] walking in an [[International March to Brussels]] planning to arrive on 8 October, a week before the demonstrations of [[15 October 2011 global protests|15 October]], in order to give the people's proposals to the European Parliament. ||| 2011 events ||| July 2011 ||| 26 July +0 Anti-austerity movement in Spain ||| 2011 UEFA Champions League Final ||| At approximately 7 a.m. on 27 May, a more serious incident occurred when the city council of [[Barcelona]] decided to send 350 police officers from the [[Mossos d'Esquadra]] and roughly 100 more from the [[Guàrdia Urbana de Barcelona|Guàrdia Urbana]] to temporarily vacate [[Plaça de Catalunya, Barcelona|Plaça de Catalunya]] so that it could be cleaned ahead of the [[2011 UEFA Champions League Final|Champions League final]] on 28 May, in which [[FC Barcelona]] were playing against Manchester United. The protesters who had been vacated returned to the square by early afternoon. ||| 2011 events ||| May 2011 ||| 27 May +0 Anti-austerity movement in Spain ||| Arab Spring ||| Former [[Spanish Prime Minister]] [[Felipe González]] compared the movement, which he considered 'an extraordinarily important phenomenon,' with the [[Arab Spring]], ||| Political response ||| ||| +0 Anti-austerity movement in the United Kingdom ||| Occupy London ||| An additional one-day strike took place across the country on 30 November. The strike was organised by various unions with the [[Trade Union Congress]] calling it the biggest strike in a generation. Nearly two-thirds of England's 21,476 schools were closed, all but 33 of Scotland's 2,700 states schools were closed and 7,000 operations in hospitals were cancelled. Twenty-one arrests were made, as [[Occupy London]] activists marched from Piccadilly Circus to Panton House, the headquarters of international mining company [[Xstrata]], where the highest paid CEO in the [[United Kingdom]] works. The activists entered the building with a large banner saying 'All power to the 99%' and subsequently entered onto the rooftop and strapped the banner to the front of the building. Videos of the violent arrests were posted on social-video site [[YouTube]], including a video showing an undercover police officer, tasked with infiltrating the [[Occupy London]] march. A total of 75 activist-related arrests were logged in the capital that day. ||| Timeline of events ||| 2011 ||| November - December +0 Anti-austerity protests in Ireland ||| Occupy movement ||| In October 2011 Occupy camps were established in [[Dublin]], [[Cork (city)|Cork]], [[Waterford]] and [[Galway]]. A number of protests organised by the [[Occupy movement]] attracted over 2,000 in Dublin and 400 in Cork. There were two separate demonstrations in Dublin on [[15 October 2011 global protests|15 October]]. ||| 2011 ||| Occupy movement ||| +0 Apache Wars ||| American Civil War ||| The '''Apache Wars''' were a series of [[armed conflict]]s between the [[United States Army]] and various [[Apache]] nations fought in the [[Southwest United States|southwest]] between 1849 and 1886, though minor hostilities continued until as late as 1924. Its origins started a year before the first conflict when a [[Southwestern United States|fraction of Mexico]] became part of the United States in the aftermath of the [[Mexican-American War]]. Therefore the [[Indigenous peoples of Mexico|Native Mexican]]s had become [[Native Americans in the United States|Native American]]s for the series of conflicts where a significant part of the [[Westward Expansion Trails]] in the [[American frontier]]. The [[Confederate Army]] participated in the wars during the early 1860s in [[Texas]], before being diverted to action in the [[American Civil War]] in [[New Mexico]] and [[Arizona]]. ||| ||| ||| +0 Apache Wars ||| American frontier ||| The '''Apache Wars''' were a series of [[armed conflict]]s between the [[United States Army]] and various [[Apache]] nations fought in the [[Southwest United States|southwest]] between 1849 and 1886, though minor hostilities continued until as late as 1924. Its origins started a year before the first conflict when a [[Southwestern United States|fraction of Mexico]] became part of the United States in the aftermath of the [[Mexican-American War]]. Therefore the [[Indigenous peoples of Mexico|Native Mexican]]s had become [[Native Americans in the United States|Native American]]s for the series of conflicts where a significant part of the [[Westward Expansion Trails]] in the [[American frontier]]. The [[Confederate Army]] participated in the wars during the early 1860s in [[Texas]], before being diverted to action in the [[American Civil War]] in [[New Mexico]] and [[Arizona]]. ||| ||| ||| +0 Apache Wars ||| Battle of Bear Valley ||| [[Sergeant]] [[James T. Daniels]], Company L., 4th Cavalry and Sergeant [[William McBryar]], Troop K., 10th Cavalry, are the last-known recipients of the [[Medal of Honor]] for actions during the Apache Wars. Both sides of the war where exited for '''extreme courage and heroism''' while under attack by hostile Apaches, on March 7, 1890. A [[Private (rank)|Private]] Rowdy, Troop A, of the Indian Scouts, was also decorated for '''faithfulness, zeal, and great tenacity, making it possible to encounter the Apache renegades.'''{{Citation needed|date=August 2011}} The native warriors continued to resist by maintaining dozens of holdouts until the [[Battle of Bear Valley]] in 1918 but hostilities continued for several more years. The last [[Apache]] raid into the United States occurred as late as 1924 when a band of natives stole some horses from [[Arizona]]n settlers who were caught and arrested. This is considered to be the end of the [[American Indian Wars]], but the neighbouring [[Mexican Indian Wars]] were still going on for another nine years. ||| Wars ||| Renegade Period ||| +0 Apache Wars ||| Camp Grant massacre ||| In 1871, a group of six white Americans, forty-eight Mexicans and almost 100 [[Tohono O'odham|Papago]] warriors attacked [[Camp Grant massacre|Camp Grant]]. They [[massacre]]d about 150 Apache men, women, and children. The incident came to be known as the [[Camp Grant Massacre]]. ||| Wars ||| Yavapai War ||| +0 April 2012 Afghanistan attacks ||| Iraq War ||| *[[Iraq War]] ||| See also ||| ||| +0 Arab Spring ||| 2011 Armenian protests ||| In the countries of the neighboring [[South Caucasus]]—namely [[2011 Armenian protests|Armenia]], demonstrators and opposition figures claiming inspiration from the examples of Tunisia and Egypt have staged their own popular protests. The [[2011 Maldivian protests|protests]] in the [[Maldives]] led to the resignation of the President. In India, the wide spread [[2011 Indian anti-corruption movement|anti-corruption protests]] led by [[Anna Hazare]] were held for anti-corruption legislature in 2011. It was followed by another wave of [[2012 Indian anti-corruption movement|protests]] in 2012. Finally the [[The Lokpal and Lokayuktas Act, 2013|anti-corruption legislature]] was passed by the [[Parliament of India|parliament]] in 2013. ||| Analysis ||| Concurrent events ||| +0 Arab Spring ||| Iraq War ||| The term 'Arab Spring' is an allusion to the [[Revolutions of 1848]], which is sometimes referred to as the 'Springtime of Nations', and the [[Prague Spring]] in 1968. In the aftermath of the [[Iraq War]] it was used by various commentators and bloggers who anticipated a major Arab movement towards democratization. Due to the electoral success of [[Islamism|Islamist]] parties following the protests in many Arab countries, the events have also come to be known as 'Islamist Spring' or 'Islamist Winter'. ||| Etymology ||| ||| +0 Arab Spring ||| Occupy Wall Street ||| The [[15 October 2011 global protests]] and the [[Occupy Wall Street]] movement, which started in the [[United States]] and has since spread to Asia and Europe, drew direct inspiration from the Arab Spring, with organizers asking U.S. citizens 'Are you ready for a [[Tahrir Square|Tahrir]] moment?' ||| Analysis ||| Concurrent events ||| +0 Arab separatism in Khuzestan ||| 2011 Khuzestan protests ||| The [[2011 Khuzestan protests]], known among protesters as the ''Ahvaz Day of Rage'', erupted on 15 April 2011 in [[Khuzestan Province|Iranian Khuzestan]], to mark an anniversary of the [[2005 Ahvaz unrest]], and as a response to the regional [[Arab Spring]]. The protests lasted for 4 days and resulted in 12 to 15 protesters killed and many wounded and arrested. 1 security officer was killed as well, and another wounded. and others. ||| History ||| Civil unrests 2005-present ||| +0 Arab–Byzantine wars ||| Abbasid Revolution ||| The Umayyad Caliphate however was increasingly distracted by conflicts elsewhere, especially its [[Khazar–Arab Wars|confrontation]] with the [[Khazars]], with whom Leo III had concluded an alliance, marrying his son and heir, [[Constantine V]] (r. 741–775) to the Khazar princess [[Tzitzak]]. Only in the late 730s did the Muslim raids again become a threat, but the great Byzantine victory at [[Battle of Akroinon|Akroinon]] and the turmoil of the [[Abbasid Revolution]] led to a pause in Arab attacks against the Empire. It also opened up the way for a more aggressive stance by [[Constantine V]] (r. 741–775), who in 741 attacked the major Arab base of [[Melitene]], and continued scoring further victories. These successes were also interpreted by Leo III and his son Constantine as evidence of God's renewed favour, and strengthened the position of Iconoclasm within the Empire. ||| Stabilization of the frontier, 718–863 ||| Raids under the last Umayyads and the rise of Iconoclasm ||| +0 Arab–Byzantine wars ||| Battle of Akroinon ||| The Umayyad Caliphate however was increasingly distracted by conflicts elsewhere, especially its [[Khazar–Arab Wars|confrontation]] with the [[Khazars]], with whom Leo III had concluded an alliance, marrying his son and heir, [[Constantine V]] (r. 741–775) to the Khazar princess [[Tzitzak]]. Only in the late 730s did the Muslim raids again become a threat, but the great Byzantine victory at [[Battle of Akroinon|Akroinon]] and the turmoil of the [[Abbasid Revolution]] led to a pause in Arab attacks against the Empire. It also opened up the way for a more aggressive stance by [[Constantine V]] (r. 741–775), who in 741 attacked the major Arab base of [[Melitene]], and continued scoring further victories. These successes were also interpreted by Leo III and his son Constantine as evidence of God's renewed favour, and strengthened the position of Iconoclasm within the Empire. ||| Stabilization of the frontier, 718–863 ||| Raids under the last Umayyads and the rise of Iconoclasm ||| +0 Arab–Byzantine wars ||| Battle of Yarmouk ||| At the [[Battle of Yarmouk]] in 636, however, the Muslims, having studied the ground in detail, lured the Byzantines into pitched battle, which the Byzantines usually avoided, and into a series of costly assaults, before turning the deep valleys and cliffs into a catastrophic death-trap. * Sahas (1972), 20 ||| The Muslim conquests, 634–718 ||| Arab conquest of Roman Syria: 634&ndash;638 ||| +0 Arab–Byzantine wars ||| Battle of the Masts ||| Both as governor of Syria and later as caliph, [[Muawiyah I]] (r. 661–680) was the driving force of the Muslim effort against Byzantium, especially by his creation of a fleet, which challenged the [[Byzantine navy]] and raided the Byzantine islands and coasts. To stop the Byzantine harassment from the sea during the [[Arab-Byzantine Wars]], in 649 Muawiyah set up a navy, manned by [[Monophysitism|Monophysitise Christian]], [[Copt]] and [[Jacobite Syrian Christian Church|Jacobite Syrian Christian]] sailors and Muslim troops. This resulted in the defeat of the Byzantine navy at the [[Battle of the Masts]] in 655, opening up the Mediterranean. 500 Byzantine ships were destroyed in the battle, and Emperor [[Constans II]] was almost killed. Under the instructions of the caliph [[Uthman ibn Affan]], Muawiyah then prepared for the [[siege of Constantinople]]. ||| The Muslim conquests, 634–718 ||| Arab attacks on Anatolia and sieges of Constantinople ||| +0 Arab–Israeli conflict ||| 1929 Hebron massacre ||| [[1929 Palestine riots|In 1929]], after a demonstration by [[Vladimir Jabotinsky]]'s political group [[Betar]] at the [[Western Wall]], riots started in Jerusalem and expanded throughout Mandatory Palestine; Arabs murdered 67 Jews in the city of [[Hebron]], in what became known as the [[1929 Hebron massacre|Hebron massacre]]. ||| Background ||| Sectarian conflict in Mandatory Palestine ||| 1929 events +0 Arab–Israeli conflict ||| 1978 South Lebanon conflict ||| | [[1978 South Lebanon conflict|First South Lebanon conflict]] ||| Notable wars and violent events ||| ||| +0 Arab–Israeli conflict ||| 1982 Lebanon War ||| In 1970, following an extended [[Black September in Jordan|civil war]], King Hussein expelled the [[Palestine Liberation Organization]] from Jordan. September 1970 is known as the Black September in Arab history and sometimes is referred to as the 'era of regrettable events'. It was a month when Hashemite King Hussein of Jordan moved to quash the autonomy of Palestinian organisations and restore his monarchy's rule over the country. Armed conflict lasted until July 1971 with the expulsion of the PLO and thousands of Palestinian fighters to Lebanon. The PLO resettled in Lebanon, from which it staged raids into Israel. In 1978, Israel launched [[Operation Litani]], in which it together with the [[South Lebanon Army]] forced the PLO to retreat north of the Litani river. In 1981 another conflict between Israel and the PLO broke out, which ended with a ceasefire agreement that did not solve the core of the conflict. In June 1982, [[1982 Lebanon War|Israel invaded Lebanon]]. Within two months the PLO agreed to withdraw thence. ||| History ||| 1974–2000 ||| Lebanon +0 Arab–Israeli conflict ||| 2006 Hezbollah cross-border raid ||| In 2006, as a response to a [[2006 Hezbollah cross-border raid|Hezbollah cross-border raid]], Israel launched air strikes on Hezbollah strongholds in Southern Lebanon, starting the [[2006 Lebanon War]]. The inconclusive war lasted for 34 days, and resulted in the creation of a buffer zone in Southern Lebanon and the deployment of Lebanese troops south of the Litani river for the first time since the 1960s. The Israeli government under [[Ehud Olmert]] was harshly criticized for its handling of the war in the [[Winograd Commission]]. ||| History ||| 1974–2000 ||| Lebanon +0 Arakan Campaign 1942–43 ||| Battle of Madagascar ||| Wavell's plan to capture Akyab was codenamed Operation ''Cannibal''. It was originally planned in September 1942 that Akyab would be taken by an amphibious assault launched by the [[29th Infantry Brigade (United Kingdom)|British 29th Brigade]], while the 14th Indian Division mounted a subsidiary advance down the Mayu peninsula. The amphibious part of the plan was dropped because 29th Brigade (which until November 1942 was engaged in the [[Battle of Madagascar]]) and the necessary landing craft could not be made available in time. Instead, it was planned that once 14th Division had reached Foul Point at the extreme southern end of the Mayu peninsula, it would improvise an attack by the [[6th Infantry Brigade (United Kingdom)|British 6th Brigade]] across the narrow channel which separated Akyab Island from the peninsula. ||| Prelude ||| Allied plans ||| +0 Ardeatine massacre ||| Allied invasion of Italy ||| The following day, the German army began moving in on Rome, and that night the King and Badoglio fled the city for [[Pescara]] and then to [[Bari]], leaving a leadership vacuum. The Italian army, although outnumbering the German soldiers three to one, was leaderless, poorly equipped, and in chaos. After a failed resistance at the [[Pyramid of Cestius]] by remaining loyalist soldiers, ''carabinieri'' (including a school of [[cadet]]s), and civilians, the Germans occupied Rome. They announced the imposition of [[German military law]] with summary execution for violators. Three days later (on 12 September), Nazi commandos tracked down and rescued Mussolini from his hidden prison in the [[Gran Sasso raid|Gran Sasso]] and set him up in the puppet regime of the so-called [[Italian Social Republic|'Republic of Salò']] in Northern Italy. In October they rounded up and deported the Jews of Rome for extermination at [[Auschwitz concentration camp|Auschwitz]] and also made numerous mass roundups of non-Jewish male civilians for [[Forced labour under German rule during World War II|forced labor]]. Meanwhile, General [[Mark W. Clark|Mark Clark]]'s Fifth Army in [[Allied invasion of Italy|Salerno]] suffered severe setbacks, and General Eisenhower and other Allied leaders began concentrating their attention on the imminent invasion of France, temporarily neglecting Italy. ||| Historical background ||| ||| +0 Armada of 1779 ||| Great Siege of Gibraltar ||| The attempted invasion was worrying to the British, particularly as John Paul Jones's squadron began threatening ports on the east coast shortly after its arrival. Hasty improvements were made to coastal defences – the first earthworks were erected on the [[Dover Western Heights|Western Heights]] at [[Dover]] (though their main phase dates to the [[Napoleon's planned invasion of the United Kingdom|planned invasion]] by Napoleon soon afterwards D'Orvilliers resigned his post soon after returning to France. The French and Spanish fleets continued joint operations, but more usually as a precaution for troop landings against isolated British garrisons than as a direct challenge to the Royal Navy (notable exceptions being the unsuccessful commitment to the [[Great Siege of Gibraltar]], and another abortive pursuit of the [[Channel Fleet]] in August 1781, which was not connected with an invasion plan). ||| Aftermath ||| ||| +0 Armenian Genocide ||| First Balkan War ||| In 1912, the [[First Balkan War]] broke out and ended with the defeat of the Ottoman Empire as well as the loss of 85% of its European territory. Many in the empire saw their defeat as 'Allah's divine punishment for a society that did not know how to pull itself together'. {{rp |84}} The Turkish nationalist movement in the country gradually came to view [[Anatolia]] as their last refuge. That the Armenian population formed a significant minority in this region later figured prominently in the calculations of the [[Three Pashas]], who carried out the Armenian Genocide. ||| Prelude to the Genocide ||| The Balkan Wars ||| +0 Armenian Genocide ||| Naval operations in the Dardanelles Campaign ||| On the night of 23–24 April 1915, known as [[Red Sunday]] ({{lang-hy|Կարմիր Կիրակի}} ''Garmir Giragi''), the [[Imperial Government (Ottoman Empire)|Ottoman government]] rounded up and imprisoned an estimated [[Deportation of Armenian notables in 1915|250 Armenian intellectuals and community leaders]] of the Ottoman capital, [[Istanbul|Constantinople]], and later those in other centers, who were moved to two holding centers near Ankara. {{rp |211–2}} This date coincided with Allied troop landings at [[Battle of Gallipoli|Gallipoli]] after unsuccessful [[Naval operations in the Dardanelles Campaign|Allied naval attempts to break through the Dardanelles]] to Constantinople in February and March 1915. ||| World War I ||| Arrest and deportation of Armenian notables, April 1915 ||| +0 Armenian Genocide ||| Persian Campaign ||| On 2 November 1914, the Ottoman Empire opened the Middle Eastern theater of World War I by entering hostilities on the side of the [[Central Powers]] and against the [[Allies]]. The battles of the [[Caucasus Campaign]], the [[Persian Campaign]] and the [[Gallipoli Campaign]] affected several populous Armenian centers. Before entering the war, the [[Imperial Government (Ottoman Empire)|Ottoman government]] had sent representatives to the [[Armenian congress at Erzurum]] to persuade Ottoman Armenians to facilitate its conquest of [[Transcaucasia]] by inciting an insurrection of Russian Armenians against the Russian army in the event a [[Caucasus Campaign|Caucasus front]] was opened. {{rp |136}} ||| World War I ||| ||| +0 Armenian parliament shooting ||| Armenian presidential election, 2003 ||| The shooting has been one of the most discussed topics in the [[Armenian presidential election, 2003|2003]] and [[Armenian presidential election, 2008|2008 presidential election]]s. ||| Investigation and trial ||| ||| +0 Armenian presidential election, 2003 ||| Nagorno-Karabakh War ||| Robert Kocharyan had been elected president in the [[Armenian presidential election, 1998|1998 presidential election]] defeating [[Karen Demirchyan]]. The election had been held when [[Levon Ter-Petrossian]] was forced to resign as President after agreeing to a plan to resolve the [[Nagorno-Karabakh War|Nagorno-Karabakh conflict]], which his ministers, including Kocharyan, had refused to accept. ||| Background ||| ||| +0 Armenian presidential election, 2003 ||| Nagorno-Karabakh conflict ||| Robert Kocharyan had been elected president in the [[Armenian presidential election, 1998|1998 presidential election]] defeating [[Karen Demirchyan]]. The election had been held when [[Levon Ter-Petrossian]] was forced to resign as President after agreeing to a plan to resolve the [[Nagorno-Karabakh War|Nagorno-Karabakh conflict]], which his ministers, including Kocharyan, had refused to accept. ||| Background ||| ||| +0 Armenian–Tatar massacres of 1905–07 ||| Baku pogrom ||| These killings would be the first of three massacres of Baku Armenians in the 20th century (including the [[September Days]] in 1918 and the [[Baku pogrom]] in 1990) which resulted complete emptying of the city from its Armenian population. ||| In Baku ||| ||| +0 Assassination of Abraham Lincoln ||| Battle of Gettysburg ||| Lincoln's day started well for the first time in a long time; he woke up cheerful. Senator James Harlan remembered taking a drive with the Lincolns only days before the president's assassination, and found him transformed. 'His whole appearance, poise and bearing had marvelously changed. He was, in fact, transfigured. That indescribable sadness which had previously seemed to be an adamantean element in his very being, had been suddenly exchanged for an equally indescribable expression of serene joy as if conscious that the great purpose of his life had been achieved.' [[Hugh McCulloch]], the new [[Secretary of the Treasury]], remarked that on that morning, 'I never saw Mr. Lincoln so cheerful and happy'. Edwin M. Stanton said: 'At the earliest moment yesterday, the President called a cabinet meeting, at which Gen. Grant was present. He was more cheerful and happy than I had ever seen him. He rejoiced at the near prospect of a firm and durable peace at home and abroad, which manifested in a marked degree the soundness and honesty of his disposition, and the tender and forgiving spirit that so eminently distinguished him.' No one could miss the difference. For months, the President had looked pale and haggard. Lincoln himself told people how happy he was. This caused First Lady Mary Todd Lincoln some concern, as she believed that saying such things out loud was bad luck. Lincoln paid her no heed. {{rp|346}} Lincoln told members of his cabinet that he had dreamed that he was on a 'singular and indescribable vessel that was moving with great rapidity toward a dark and indefinite shore.' He also revealed that he'd had the same dream repeatedly on previous occasions, before 'nearly every great and important event of the War' such as the victories at [[Antietam]], [[Battle of Stones River|Murfreesboro]], [[Battle of Gettysburg|Gettysburg]] and [[Siege of Vicksburg|Vicksburg]]. ||| Day of the assassination ||| ||| +0 Assassination of Abraham Lincoln ||| Battle of Stones River ||| Lincoln's day started well for the first time in a long time; he woke up cheerful. Senator James Harlan remembered taking a drive with the Lincolns only days before the president's assassination, and found him transformed. 'His whole appearance, poise and bearing had marvelously changed. He was, in fact, transfigured. That indescribable sadness which had previously seemed to be an adamantean element in his very being, had been suddenly exchanged for an equally indescribable expression of serene joy as if conscious that the great purpose of his life had been achieved.' [[Hugh McCulloch]], the new [[Secretary of the Treasury]], remarked that on that morning, 'I never saw Mr. Lincoln so cheerful and happy'. Edwin M. Stanton said: 'At the earliest moment yesterday, the President called a cabinet meeting, at which Gen. Grant was present. He was more cheerful and happy than I had ever seen him. He rejoiced at the near prospect of a firm and durable peace at home and abroad, which manifested in a marked degree the soundness and honesty of his disposition, and the tender and forgiving spirit that so eminently distinguished him.' No one could miss the difference. For months, the President had looked pale and haggard. Lincoln himself told people how happy he was. This caused First Lady Mary Todd Lincoln some concern, as she believed that saying such things out loud was bad luck. Lincoln paid her no heed. {{rp|346}} Lincoln told members of his cabinet that he had dreamed that he was on a 'singular and indescribable vessel that was moving with great rapidity toward a dark and indefinite shore.' He also revealed that he'd had the same dream repeatedly on previous occasions, before 'nearly every great and important event of the War' such as the victories at [[Antietam]], [[Battle of Stones River|Murfreesboro]], [[Battle of Gettysburg|Gettysburg]] and [[Siege of Vicksburg|Vicksburg]]. ||| Day of the assassination ||| ||| +0 Assassination of Abraham Lincoln ||| Siege of Vicksburg ||| Lincoln's day started well for the first time in a long time; he woke up cheerful. Senator James Harlan remembered taking a drive with the Lincolns only days before the president's assassination, and found him transformed. 'His whole appearance, poise and bearing had marvelously changed. He was, in fact, transfigured. That indescribable sadness which had previously seemed to be an adamantean element in his very being, had been suddenly exchanged for an equally indescribable expression of serene joy as if conscious that the great purpose of his life had been achieved.' [[Hugh McCulloch]], the new [[Secretary of the Treasury]], remarked that on that morning, 'I never saw Mr. Lincoln so cheerful and happy'. Edwin M. Stanton said: 'At the earliest moment yesterday, the President called a cabinet meeting, at which Gen. Grant was present. He was more cheerful and happy than I had ever seen him. He rejoiced at the near prospect of a firm and durable peace at home and abroad, which manifested in a marked degree the soundness and honesty of his disposition, and the tender and forgiving spirit that so eminently distinguished him.' No one could miss the difference. For months, the President had looked pale and haggard. Lincoln himself told people how happy he was. This caused First Lady Mary Todd Lincoln some concern, as she believed that saying such things out loud was bad luck. Lincoln paid her no heed. {{rp|346}} Lincoln told members of his cabinet that he had dreamed that he was on a 'singular and indescribable vessel that was moving with great rapidity toward a dark and indefinite shore.' He also revealed that he'd had the same dream repeatedly on previous occasions, before 'nearly every great and important event of the War' such as the victories at [[Antietam]], [[Battle of Stones River|Murfreesboro]], [[Battle of Gettysburg|Gettysburg]] and [[Siege of Vicksburg|Vicksburg]]. ||| Day of the assassination ||| ||| +0 Assassination of Boris Nemtsov ||| War in Donbass ||| The killing happened the day before Nemtsov was due to lead the opposition march ''Vesna'' ([[Russian language|Russian]] for 'spring'), a street demonstration organised to protest against economic conditions in Russia and against the [[War in Donbass|war in Ukraine]]. ||| Events ||| ||| +0 Assassination of Julius Caesar ||| Battle of Actium ||| Afterward, Mark Antony married Caesar's lover, [[Cleopatra]], intending to use the fabulously wealthy Egypt as a base to dominate Rome. A third civil war broke out between Octavian on one hand and Antony and Cleopatra on the other. This final civil war, culminating in the latter's [[Battle of Actium|defeat at Actium]], resulted in the final ascendancy of Octavian, who became the first Roman emperor, under the name Caesar Augustus, a name that raised him to the status of a deity. ||| Aftermath of the assassination ||| ||| +0 Assault on Copenhagen (1659) ||| Anglo-Dutch Wars ||| The Swedish armies had never left Denmark after the peace and already occupied all of Denmark apart from the capital, Copenhagen. After a failed assault, Copenhagen was put under siege in the hope of breaking the defense by starvation. In October 1658 however a Dutch relief fleet under Lieutenant-Admiral [[Jacob van Wassenaer Obdam]] defeated the Swedish fleet in the [[Battle of the Sound]] and lifted the sea blockade so that supplies and an auxiliary army could reach the capital. The Dutch were an ally of Denmark from the [[Anglo-Dutch Wars]] and were afraid that Swedish control of the Baltic would ruin their profitable trade in this area. ||| Background ||| ||| +0 Assault on Cádiz (1797) ||| Battle of Cape St Vincent (1797) ||| The '''Assault on Cadiz''' was a part of a protracted naval blockade of the [[Spain|Spanish]] [[port]] of [[Cadiz]] by the [[Royal Navy]], which comprised the siege and the shelling of the city as well as an [[Amphibious warfare|amphibious assault]] on the port itself from June to July 1797. After the battle of Cape [[Battle of Cape St Vincent (1797)|Saint Vincent]] the British fleet led by [[John Jervis, 1st Earl of St Vincent|Lord Jervis]] and Sir [[Horatio Nelson, 1st Viscount Nelson|Horatio Nelson]] had appeared in the [[Gulf of Cadiz]]. During the first days of June the city was bombarded, but causing slight damage to the Spanish batteries, navy and city. Nelson's objective was to force the Spanish admiral Jose Mazarredo to leave the harbour with the Spanish fleet. Mazarredo prepared an intelligent response and the Spaniards began to build gunboats and small ships to protect the entrance of the harbour from the British. By the first days of July, after a series of failed attacks led by [[Rear-Admiral]] Nelson, and with the British ships taking huge fire from the Spanish forts and batteries, the British withdraw and the siege was lifted. The naval blockade, however, lasted until 1802. ||| ||| ||| +0 Atlantic U-boat campaign of World War I ||| Attack on Orleans ||| In July 1918, [[SM U-156]] sailed to [[Massachusetts]] and participated in the [[Attack on Orleans]] for about an hour. This was the first time that American soil was attacked by a foreign power's artillery since the [[Siege of Fort Texas]] in 1846 and one of two places in North America to be subject to attack by the [[Central Powers]]. The other was the [[Battle of Ambos Nogales]] that was allegedly led by two German spies. ||| 1918: Final year ||| ||| +0 Atlantic U-boat campaign of World War I ||| Battle of the Atlantic ||| The '''Atlantic U-boat campaign of World War I''' (sometimes called the 'first battle of the Atlantic', in reference to the [[World War II]] campaign [[Battle of the Atlantic|of that name]]) was the prolonged [[naval warfare|naval conflict]] between [[U-boat|German submarines]] and the [[Allies of World War I|Allied navies]] in Atlantic waters—the seas around the [[British Isles]], the [[North Sea]] and the coast of France. ||| ||| ||| +0 Atlantic U-boat campaign of World War I ||| Hundred Days Offensive ||| During the summer, the extension of the convoy system and effectiveness of the escorts made the east coast of Britain as dangerous for the U-boats as the Channel had become. In this period, the Flanders flotilla lost a third of its boats, and in the autumn, losses were at 40%. In October, with the [[Hundred Days Offensive|German army in full retreat]], the Flanders flotilla was forced to abandon its base at [[Bruges]] before it was overrun. A number of boats were scuttled there, while the remainder, just 10 boats, returned to bases in Germany. ||| 1918: Final year ||| ||| +0 Atlantic campaign of 1806 ||| Battle of Trafalgar ||| The '''Atlantic campaign of 1806''' was a complicated series of manoeuvrees and counter-manoeuveres conducted by squadrons of the [[French Navy]] and the British [[Royal Navy]] across the Atlantic Ocean during the spring and summer of 1806, as part of the [[Napoleonic Wars]]. The campaign followed directly from the [[Trafalgar campaign]] of the year before, in which the French Mediterranean fleet had crossed the Atlantic, returned to Europe and joined with the Spanish fleet. On 21 October 1805, this combined force was destroyed by a British fleet under [[Horatio Nelson|Lord Nelson]] at the [[Battle of Trafalgar]], although the campaign did not end until the [[Battle of Cape Ortegal]] on 4 November 1805. Believing that the French Navy would not be capable of organised resistance at sea during the winter, the [[First Lord of the Admiralty]] [[Charles Middleton, 1st Baron Barham|Lord Barham]] withdrew the British blockade squadrons to harbour. Barham had miscalculated - the French Atlantic fleet, based at [[Brest, France|Brest]], had not been involved in the Trafalgar campaign and was therefore at full strength. Taking advantage of the reduction in the British forces off the port, [[Napoleon]] ordered two heavy squadrons to sea, under instructions to raid British trade routes while avoiding contact with equivalent Royal Navy forces. ||| ||| ||| +0 Atlantic campaign of May 1794 ||| Glorious First of June ||| The '''Atlantic campaign of May 1794''' was a series of operations conducted by the British [[Royal Navy]]'s [[Channel Fleet]] against the [[French Navy]]'s Atlantic Fleet, with the aim of preventing the passage of a strategically important French grain convoy travelling from the United States to France. The campaign involved [[commerce raiding]] by detached forces and two minor engagements, eventually culminating in the full fleet action of the [[Glorious First of June]] 1794, at which both fleets were badly mauled and both Britain and France claimed victory. The French lost seven battleships; the British none, but the battle distracted the British fleet long enough for the French convoy to safely reach port. ||| ||| ||| +0 Atlantic raid of June 1796 ||| Action of 24 October 1793 ||| On 4 June 1796, a French squadron was dispatched from Brest on a raiding cruise. This force included the 40-gun frigates [[HMS Tribune (1797)|''Tribune'']] under Franco-American Commodore [[Jean Moulston]], [[HMS Amelia (1796)|''Proserpine'']] under Captain [[Etienne Pevrieux]] and [[HMS Thames (1758)|''Tamise'']] under Captain [[Jean-Baptiste-Alexis Fradin]], the latter formerly a Royal Navy ship named HMS ''Thames'' which had been [[Action of 24 October 1793|captured in an engagement]] in the Bay of Biscay by a French frigate squadron in October 1793. With the frigates was the 18-gun [[corvette]] [[French corvette Légėre (1793)|''Légėre'']] under Lieutenant Jean Michel-Martin Carpentier. ''Prosperine'' separated from the other ships during a period of heavy [[fog]] on 7 June, sailing independently to the rendezvous off [[Cape Clear Island|Cape Clear]] in Southern Ireland. ||| Background ||| ||| +0 Atlantic raid of June 1796 ||| Glorious First of June ||| The first three years of the conflict between [[Kingdom of Great Britain|Great Britain]] and the new [[First French Republic|French Republic]] in the [[French Revolutionary Wars]], which began in 1793, had resulted in a series of setbacks for the French Atlantic Fleet, based at the large fortified port of [[Brest, France|Brest]]. In 1794 seven French [[ships of the line]] had been lost at the battle of the [[Glorious First of June]], and early the following year five more were wrecked by winter storms during the disastrous ''[[Croisière du Grand Hiver]]'' campaign. In June 1795 three more ships were captured by the British [[Channel Fleet]] at the [[Battle of Groix]]. ||| Background ||| ||| +0 Atlantique incident ||| Indo-Pakistani War of 1971 ||| The incident was the Pakistan Navy's only loss of an aircraft to hostile fire in its history, and the biggest combat-related casualty for the Navy since the [[Indo-Pakistani War of 1971]]. ||| Confrontation ||| ||| +0 Atomic bombings of Hiroshima and Nagasaki ||| Air raids on Japan ||| In the final year of the war, the [[Allies of World War II|Allies]] prepared for what was anticipated to be a very costly [[Operation Downfall|invasion of the Japanese mainland]]. This was preceded by a U.S. [[Air raids on Japan|firebombing campaign]] that obliterated many Japanese cities. The [[European theatre of World War II|war in Europe]] had concluded when [[Nazi Germany]] signed its [[German Instrument of Surrender|instrument of surrender]] on {{#dateformat:May 8, 1945}}. The Japanese, facing the same fate, refused to accept the Allies' demands for unconditional surrender and the [[Pacific War]] continued. Together with the United Kingdom and [[Republic of China (1912–49)|China]], the United States called for the unconditional surrender of the Japanese armed forces in the [[Potsdam Declaration]] on {{#dateformat:July 26, 1945}}—the alternative being 'prompt and utter destruction'. The Japanese response to this ultimatum was to [[mokusatsu|ignore]] it. ||| ||| ||| +0 Atomic bombings of Hiroshima and Nagasaki ||| European theatre of World War II ||| In the final year of the war, the [[Allies of World War II|Allies]] prepared for what was anticipated to be a very costly [[Operation Downfall|invasion of the Japanese mainland]]. This was preceded by a U.S. [[Air raids on Japan|firebombing campaign]] that obliterated many Japanese cities. The [[European theatre of World War II|war in Europe]] had concluded when [[Nazi Germany]] signed its [[German Instrument of Surrender|instrument of surrender]] on {{#dateformat:May 8, 1945}}. The Japanese, facing the same fate, refused to accept the Allies' demands for unconditional surrender and the [[Pacific War]] continued. Together with the United Kingdom and [[Republic of China (1912–49)|China]], the United States called for the unconditional surrender of the Japanese armed forces in the [[Potsdam Declaration]] on {{#dateformat:July 26, 1945}}—the alternative being 'prompt and utter destruction'. The Japanese response to this ultimatum was to [[mokusatsu|ignore]] it. ||| ||| ||| +0 Atomic bombings of Hiroshima and Nagasaki ||| Operation Downfall ||| In the final year of the war, the [[Allies of World War II|Allies]] prepared for what was anticipated to be a very costly [[Operation Downfall|invasion of the Japanese mainland]]. This was preceded by a U.S. [[Air raids on Japan|firebombing campaign]] that obliterated many Japanese cities. The [[European theatre of World War II|war in Europe]] had concluded when [[Nazi Germany]] signed its [[German Instrument of Surrender|instrument of surrender]] on {{#dateformat:May 8, 1945}}. The Japanese, facing the same fate, refused to accept the Allies' demands for unconditional surrender and the [[Pacific War]] continued. Together with the United Kingdom and [[Republic of China (1912–49)|China]], the United States called for the unconditional surrender of the Japanese armed forces in the [[Potsdam Declaration]] on {{#dateformat:July 26, 1945}}—the alternative being 'prompt and utter destruction'. The Japanese response to this ultimatum was to [[mokusatsu|ignore]] it. ||| ||| ||| +0 Atomic bombings of Hiroshima and Nagasaki ||| Trinity (nuclear test) ||| In July 1945, the Allied [[Manhattan Project]] successfully [[Trinity (nuclear test)|detonated an atomic bomb]] in the [[New Mexico]] desert and by August had produced atomic weapons based on two alternate designs. The [[509th Composite Group]] of the [[United States Army Air Forces|U.S. Army Air Forces]] was equipped with the specialized [[Silverplate]] version of the [[Boeing B-29 Superfortress]], that could deliver them from [[Tinian]] in the [[Mariana Islands]]. ||| ||| ||| +0 Attack on Camp Holloway ||| Operation Flaming Dart ||| In February 1965 Soviet Premier [[Alexei Kosygin]] travelled to [[Hanoi]] to rebuild Soviet ties with North Vietnam, and the formation of a military alliance was on the agenda. Coincidentally, senior security adviser to the U.S. President [[McGeorge Bundy]] was also in [[Saigon]] to report on the political chaos in South Vietnam. In the shadow of those events, the Viet Cong 409th Battalion staged an attack on Camp Holloway on 7 February 1965. This time, with his victory in the 1964 presidential election secured, Johnson decided to launch [[Operation Flaming Dart]] which entailed strikes on North Vietnamese military targets. However, with Kosygin still in Hanoi during the U.S bombing, the Soviet government decided to step up their military aid to North Vietnam, thereby signalling a major reversal of Khrushchev's policy in Vietnam. ||| ||| ||| +0 Attack on German Flatts (1778) ||| Battle of Wyoming ||| Although Brant had planned on raiding German Flatts sooner than September, the absence of John Butler delayed his plans. Butler had returned to [[Fort Niagara]] after his [[Battle of Wyoming|attack]] on the Wyoming Valley communities in July, sending Captain [[William Caldwell (ranger)|William Caldwell]] to Unaquaga to recruit men for the unit known as [[Butler's Rangers]]. ||| Prelude ||| ||| +0 Attack on German Flatts (1778) ||| Battles of Saratoga ||| With the failure of British General [[John Burgoyne]]'s [[Saratoga campaign|campaign to the Hudson]] after the [[Battles of Saratoga]] in October 1777, the [[American Revolutionary War]] in upstate [[New York]] became a frontier war. ||| Background ||| ||| +0 Attack on German Flatts (1778) ||| Cherry Valley massacre ||| The Americans launched [[Raid on Unadilla and Onaquaga|retaliatory raids]] in early October that destroyed Unadilla and Onaquaga. Brant and John Butler's son [[Walter Butler (Loyalist)|Walter]] organized a retaliatory expedition against [[Cherry Valley (village), New York|Cherry Valley]], which was the scene of [[Cherry Valley massacre|a massacre]] in November. ||| Aftermath ||| ||| +0 Attack on Mers-el-Kébir ||| Battle of the Atlantic ||| The combined air-and-sea attack was conducted by the [[Royal Navy]] as a direct response to the [[Second Armistice at Compiègne|Franco-German armistice]] of 22 June, which had seen Britain's sole continental ally replaced by a [[collaborationism|collaborationist]], pro-Nazi government administrated from [[Vichy]]. The new Vichy government had also inherited the considerable French naval force of the ''Marine Nationale''; of particular significance were the seven [[battleships]] of the [[Bretagne-class battleship|''Bretagne'']], [[Dunkerque-class battleship|''Dunkerque'']] and [[Richelieu-class battleship|''Richelieu'']] classes, which collectively represented the second largest force of [[capital ships]] in Europe behind the British. Since Vichy was seen by the British (with a good deal of justification) as a mere [[puppet state]] of the Nazi regime, there was serious fear that they would surrender or loan the ships to the [[Kriegsmarine]], an outcome which would largely undo Britain's tenuous grasp on European naval superiority and confer a major Axis advantage in the ongoing [[Battle of the Atlantic]]. Despite promises from [[François Darlan|Admiral Darlan]], the Commander of the French Navy, ||| ||| ||| +0 Attack on Mers-el-Kébir ||| Scuttling of the French fleet in Toulon ||| On 27 November 1942, the Germans attempted to capture the French fleet based at [[Toulon]] as part of ''[[Case Anton]]'', the military occupation of Vichy France by Germany. All ships of any military value were [[Scuttling of the French fleet in Toulon|scuttled by the French]] before the arrival of German troops, notably ''Dunkerque'' and ''Strasbourg''. For many in the French Navy this was a final proof that there had never been a question of their ships ending up in German hands and that the British action at Mers-el-Kébir had been an unnecessary betrayal. Within days Churchill received a letter from Admiral Darlan, in which he wrote; 'Prime Minister you said to me 'I hope you will never surrender the fleet'. I replied, 'There is no question of doing so'. It seems to me you did not believe my word. The destruction of the fleet at Toulon has just proved that I was right.' ||| Aftermath ||| ||| +0 Attack on Orleans ||| Bombardment of Ellwood ||| It was also the first time the Continental United States was shelled by a foreign power's artillery since the [[Siege of Fort Texas]] in 1846. There were no fatalities. The Continental U.S. would be shelled again twice in 1942 by [[Empire of Japan|Japanese]] submarines during the [[Pacific War]]. These two engagements are known as the [[Bombardment of Fort Stevens]] along the northwest Pacific coast of [[Oregon]], and the [[Bombardment of Ellwood]] near [[Santa Barbara, California]]. ||| Aftermath ||| ||| +0 Attack on Orleans ||| Pacific War ||| It was also the first time the Continental United States was shelled by a foreign power's artillery since the [[Siege of Fort Texas]] in 1846. There were no fatalities. The Continental U.S. would be shelled again twice in 1942 by [[Empire of Japan|Japanese]] submarines during the [[Pacific War]]. These two engagements are known as the [[Bombardment of Fort Stevens]] along the northwest Pacific coast of [[Oregon]], and the [[Bombardment of Ellwood]] near [[Santa Barbara, California]]. ||| Aftermath ||| ||| +0 Attack on Pearl Harbor ||| Battle of France ||| The U.S. ceased oil exports to Japan in July 1941, following Japanese expansion into French Indochina after the [[Battle of France|fall of France]], in part because of new American restrictions on domestic oil consumption. The Japanese were faced with the option of either withdrawing from China and losing face or seizing and securing new sources of raw materials in the resource-rich, European-controlled colonies of Southeast Asia. ||| Background to conflict ||| Diplomatic background ||| +0 Attack on Pearl Harbor ||| Nanking Massacre ||| From December 1937, events such as the Japanese attack on the [[USS Panay incident|USS ''Panay'']], the [[Allison incident]], and the [[Nanking Massacre]] (the International Military Tribunal of the Far East concluded that more than 200,000 Chinese [[non-combatants]] were killed in indiscriminate massacres, though other estimates have ranged from 40,000 to more than 300,000) swung public opinion in the West sharply against Japan. Fearing Japanese expansion, the United States, the United Kingdom, and France provided loan assistance for war supply contracts to the [[Republic of China (1912–1949)|Republic of China]]. ||| Background to conflict ||| Diplomatic background ||| +0 Attack on Pearl Harbor ||| Second Sino-Japanese War ||| The attack on Pearl Harbor was intended to neutralize the U.S. Pacific Fleet, and hence protect Japan's advance into [[British Malaya|Malaya]] and the [[Dutch East Indies]], where it sought access to [[natural resource]]s such as [[petroleum|oil]] and rubber. War between Japan and the United States had been a possibility of which each nation had been aware (and developed contingency plans for) since the 1920s, though tensions did not begin to grow seriously until [[Japanese invasion of Manchuria|Japan's 1931 invasion of Manchuria]]. Over the next decade, Japan continued to expand into China, leading to [[Second Sino-Japanese War|all-out war between those countries in 1937]]. Japan spent considerable effort trying to isolate China and achieve sufficient resource independence to attain victory on the mainland; the 'Southern Operation' was designed to assist these efforts. ||| Background to conflict ||| Diplomatic background ||| +0 Attack on Sydney Harbour ||| Pacific War ||| The main impact of the midget submarine attack and subsequent operations was psychological; dispelling any belief that Sydney was immune to Japanese attack and highlighting Australia's proximity to the [[Pacific War]]. There was no official inquiry into the attacks, despite demand from some sections of the media, as there was concern that an inquiry would lead to [[defeatism]] and reduce faith in [[John Curtin]]'s government, particularly after the damaging inquiry into Australian defences that had followed the [[Bombing of Darwin (February 1942)|Japanese aerial attack on Darwin]] three months earlier. ||| Analysis ||| ||| +0 Attack on USS New Ironsides ||| Union blockade ||| Because it was a great impediment to Confederate commerce and warfare, there was no choice but to try to lift the [[Union blockade]] in any way possible. CSS ''David'' was one of the South's secret weapons. Similar to the [[submarine]] ''[[H.L. Hunley]]'', the boat was designed to destroy enemy ships by stealthily sneaking up to their sides and placing an explosive on their hulls. The ''David'' was only fifty feet long with a beam of six feet and a draft of five feet. Her crew consisted of just four officers and men. She was under the command of [[Lieutenant]] [[William T. Glassell]] during her three year career. On the night of 5 October, at about 8:00 am the torpedo boat headed out from the pier toward the fourteen gun [[ironclad]] USS ''New Ironsides'', which was considered the most formidable warship in the navy. She had also survived a failed torpedo boat attack in August 1863. An hour later the rebels were approaching the ironclad when lookouts spotted them fifty yards away, just before they attached the torpedo. The Union commander [[Captain (naval)|Captain]] [[Stephen C. Rowan]] reported the following: '''At 9 p.m. discovered a very peculiar looking steamer which at first appeared like a boat standing toward our starboard beam from seaward; hailed her rapidly four times, and she making no reply, fired into her with musketry; she returned fire, dangerously wounding Ensign C.W. Howard in charge of the deck the steamer struck us near No. 6 port, starboard side, exploding a large torpedo, shaking the vessel and throwing up an immense column of water, part of which fell on our decks.''' ||| Attack ||| ||| +0 Attack on Yokosuka ||| Air raids on Japan ||| During July 1945 the [[United States Third Fleet|U.S Third Fleet]], which was led by Admiral [[William Halsey, Jr.|William Halsey]], conducted a series of [[Air raids on Japan|air raids]] and [[Allied naval bombardments of Japan during World War II|naval bombardments]] against targets in [[Japan]]. These attacks were made by the Third Fleet's striking force, [[Fast Carrier Task Force|Task Force 38]] (TF 38), which was commanded by Vice Admiral [[John S. McCain, Sr.|John S. McCain]] and included nine fleet carriers, six light carriers and their escorts. ||| Background ||| ||| +0 Attack on Yokosuka ||| Allied naval bombardments of Japan during World War II ||| During July 1945 the [[United States Third Fleet|U.S Third Fleet]], which was led by Admiral [[William Halsey, Jr.|William Halsey]], conducted a series of [[Air raids on Japan|air raids]] and [[Allied naval bombardments of Japan during World War II|naval bombardments]] against targets in [[Japan]]. These attacks were made by the Third Fleet's striking force, [[Fast Carrier Task Force|Task Force 38]] (TF 38), which was commanded by Vice Admiral [[John S. McCain, Sr.|John S. McCain]] and included nine fleet carriers, six light carriers and their escorts. ||| Background ||| ||| +0 Attack on Yokosuka ||| Operation Crossroads ||| After the attack on Yokosuka, the ''Nagato''{{'}}s crew removed all casualties from the ship and conducted limited repairs. Some of the ship's [[ballast tank]]s were also flooded to give the impression that she had been sunk. During the early hours of 2 August ''Nagato'' was ordered to put to sea to intercept an Allied force. However, this sortie was canceled before she had completed preparations to leave port as the report of Allied ships was determined to be false. On 30 August the ship was surrendered to the U.S. Navy. She was one of the target ships for the two [[atomic bomb]] tests conducted at [[Bikini Atoll]] on 1 and 28 July 1946 during [[Operation Crossroads]], and sank there during the night of 29–30 July. ||| Aftermath ||| ||| +0 Attack on the USNS Card ||| World War II ||| The ''Card'' was first commissioned into the [[United States Navy]] during [[World War II]], playing a significant role in destroying German Navy submarines as the flagship of Task Group 21.14. Decommissioned in 1945, the ''Card'' was reactivated in 1958 and entered service with the [[Military Sea Transport Service]], transporting military equipment to South Vietnam as part of the United States military commitment to that country. ||| ||| ||| +0 Attacks on High Wood ||| Battle of Bazentin Ridge ||| '''High Wood''' is a wood near [[Bazentin le Petit]] in the [[Somme (department)|Somme]] ''[[Départements of France|département]]'' of northern [[France]]. After the big British attack on 14 July 1916 (the [[Battle of Bazentin Ridge]]), High Wood lay undefended for most of the day but delays in communication and confusion caused by orders and counter-orders from different British corps headquarters with overlapping responsibilities, led to the occupation of High Wood being forestalled by German reserves, which had moved forward to counter-attack British troops in the villages of [[Bazentin|Bazentin-le-Grand]] and Bazentin-le-Petit. Men from the 7th Division managed to occupy the southern half of the wood and two cavalry squadrons advanced on the east side to Wood Lane, which connected the wood to [[Longueval]]. On 15 July, the wood was evacuated by the survivors and the cavalry retired. The British [[Fourth Army (United Kingdom)|Fourth Army]] and the German [[2nd Army (German Empire)|2nd Army]] and [[1st Army (German Empire)|1st Army]] fought for control of the wood from {{nowrap|14 July – 15}} September, during the [[Battle of the Somme (1916)|Battle of the Somme]]. ||| ||| ||| +0 Attacks on High Wood ||| Battle of the Somme ||| '''High Wood''' is a wood near [[Bazentin le Petit]] in the [[Somme (department)|Somme]] ''[[Départements of France|département]]'' of northern [[France]]. After the big British attack on 14 July 1916 (the [[Battle of Bazentin Ridge]]), High Wood lay undefended for most of the day but delays in communication and confusion caused by orders and counter-orders from different British corps headquarters with overlapping responsibilities, led to the occupation of High Wood being forestalled by German reserves, which had moved forward to counter-attack British troops in the villages of [[Bazentin|Bazentin-le-Grand]] and Bazentin-le-Petit. Men from the 7th Division managed to occupy the southern half of the wood and two cavalry squadrons advanced on the east side to Wood Lane, which connected the wood to [[Longueval]]. On 15 July, the wood was evacuated by the survivors and the cavalry retired. The British [[Fourth Army (United Kingdom)|Fourth Army]] and the German [[2nd Army (German Empire)|2nd Army]] and [[1st Army (German Empire)|1st Army]] fought for control of the wood from {{nowrap|14 July – 15}} September, during the [[Battle of the Somme (1916)|Battle of the Somme]]. ||| ||| ||| +0 Attacks on the Butte de Warlencourt ||| Hindenburg Line ||| During the [[Battle of Le Transloy]] (1–20 October), part of the [[Battle of the Somme (1916)|Battle of the Somme]], the Butte de Warlencourt was the subject of several attacks by the [[British Fourth Army]], which were costly failures; attacks in November also failed. The [[Australian 2nd Division|2nd Australian Division]] occupied the Butte on 24 February 1917, during the German retirements made on the Somme front, preparatory to [[Alberich (World War I German operation)|Operation Alberich]], the retreat to the [[Hindenburg Line]]. The Butte de Warlencourt was recaptured by the German 2nd Army on 24 March 1918, during the retreat of the [[2nd Infantry Division (United Kingdom)|2nd Division]] in [[Operation Michael]], the German spring offensive. The butte was recaptured for the last time on 26 August, by the [[21st Division (United Kingdom)|21st Division]], during the [[Second Battle of Bapaume]]. In 1990, the site was purchased for preservation by the [[Western Front Association]]. ||| ||| ||| +0 Attacks on the Butte de Warlencourt ||| Operation Alberich ||| During the [[Battle of Le Transloy]] (1–20 October), part of the [[Battle of the Somme (1916)|Battle of the Somme]], the Butte de Warlencourt was the subject of several attacks by the [[British Fourth Army]], which were costly failures; attacks in November also failed. The [[Australian 2nd Division|2nd Australian Division]] occupied the Butte on 24 February 1917, during the German retirements made on the Somme front, preparatory to [[Alberich (World War I German operation)|Operation Alberich]], the retreat to the [[Hindenburg Line]]. The Butte de Warlencourt was recaptured by the German 2nd Army on 24 March 1918, during the retreat of the [[2nd Infantry Division (United Kingdom)|2nd Division]] in [[Operation Michael]], the German spring offensive. The butte was recaptured for the last time on 26 August, by the [[21st Division (United Kingdom)|21st Division]], during the [[Second Battle of Bapaume]]. In 1990, the site was purchased for preservation by the [[Western Front Association]]. ||| ||| ||| +0 August 2012 Sinai attack ||| 2011 southern Israel cross-border attacks ||| In August 2011, a [[2011 southern Israel cross-border attacks|series of cross-border attacks]] were carried out in southern [[Israel]] on [[Highway 12 (Israel)|Highway 12]] near the Egyptian border via the Sinai Peninsula. ||| Background ||| Post-Egyptian revolution ||| +0 August 2012 Sinai attack ||| Egyptian Revolution of 2011 ||| Following the [[Egyptian Revolution of 2011]], militant organizations increased their activity in the Sinai Peninsula, and some [[al-Qaeda]]-linked groups were established as well. ||| Background ||| Post-Egyptian revolution ||| +0 August 2012 Sinai attack ||| Operation Eagle ||| A few days after the attack, forces from the army and the police engaged in an [[Operation Eagle|operation]] against armed men who have been targeting security personnel in North Sinai. A number of clashes between armed men and security forces in the Sinai have erupted since then, and Egyptian security officials have conducted raids on militant hideouts as well. ||| Reactions ||| Egypt ||| Operations +0 August 2012 Sinai attack ||| Operation Sinai (2012) ||| * [[Operation Sinai (2012)|Operation Sinai]] ||| See also ||| ||| +0 August 2013 Beirut bombing ||| July 2013 Beirut bombing ||| A month earlier [[July 2013 Beirut bombing|a car bomb]] injured more than 50 people in the same district. A week later two mosques were [[August 2013 Tripoli bombing|bombed]] in [[Tripoli, Lebanon|Tripoli]] killing over 40 and injuring hundreds. The Tripoli bombing were thought to be in retaliation for the Beirut bombing. ||| ||| ||| +0 August 2013 Rabaa massacre ||| Egyptian Revolution of 2011 ||| Following the [[Egyptian Revolution of 2011|2011 Egyptian revolution]] and subsequent instability, hundreds of thousands of Egyptians took to the streets calling for the resignation of Egypt's president which culminated in the [[2013 Egyptian coup d'état|ouster of President]] [[Mohamed Morsi]]. For weeks, supporters of the deposed president occupied two squares — Rabaa al-Adawiya in Nasr city, Cairo and al-Nahda in Giza — to protest his ouster, vowing to remain until Morsi was reinstated. ||| Background ||| ||| +0 Australian federal election, 2004 ||| 2003 invasion of Iraq ||| The election result was a triumph for Howard, who in December 2004 became Australia's second-longest serving Prime Minister, and who saw the election result as a vindication of his policies, particularly his decision to join in the [[Iraq War|2003 invasion of Iraq]]. The results were a setback for the Labor leader, [[Mark Latham]], and contributed to his resignation in January 2005 after assuming the leadership from [[Simon Crean]] in 2003. The defeat made Labor's task more difficult: a provisional pendulum for the House of Representatives, Beazley stated that polling a year before the election indicated that the ALP would lose '25–30 seats' in the House of Representatives. Instead the party lost a net four seats in the House, a swing of 0.21 percentage points. There was also a 1.1-point swing ''to'' the ALP in the Senate. The Coalition gaining control of the Senate was enabled by a collapse in first preferences for the [[Australian Democrats]] and [[One Nation Party|One Nation]]. ||| Overall result ||| ||| +0 Australian federal election, 2004 ||| Iraq War ||| The election result was a triumph for Howard, who in December 2004 became Australia's second-longest serving Prime Minister, and who saw the election result as a vindication of his policies, particularly his decision to join in the [[Iraq War|2003 invasion of Iraq]]. The results were a setback for the Labor leader, [[Mark Latham]], and contributed to his resignation in January 2005 after assuming the leadership from [[Simon Crean]] in 2003. The defeat made Labor's task more difficult: a provisional pendulum for the House of Representatives, Beazley stated that polling a year before the election indicated that the ALP would lose '25–30 seats' in the House of Representatives. Instead the party lost a net four seats in the House, a swing of 0.21 percentage points. There was also a 1.1-point swing ''to'' the ALP in the Senate. The Coalition gaining control of the Senate was enabled by a collapse in first preferences for the [[Australian Democrats]] and [[One Nation Party|One Nation]]. ||| Overall result ||| ||| +0 Austro-Prussian War ||| Second Italian War of Independence ||| Prussian infantry were equipped with the [[Dreyse needle gun]], a bolt action rifle capable of far more rapid fire than the [[muzzleloader|muzzle-loading]] [[Lorenz Rifle]]s of the Austrian army. In the [[Second Italian War of Independence|Franco-Austrian War]] of 1859, French troops had taken advantage of the fact that the rifles of the time fired high if sighted for long range. By rapidly closing the range, French troops could come to close quarters without sustaining too many casualties from the Austrian infantry. After the war, the Austrians had adopted the same methods, which they termed the {{lang|de|''Stoßtaktik''}} ('shock tactics'). Although they had some warnings of the Prussian weapon, they ignored these and retained {{lang|de|''Stoßtaktik''}}. The Austrian artillery had breech-loading rifled guns, while the Prussian army retained many muzzle-loading smoothbore cannon. New [[Krupp]] breech-loading cannons were only slowly being introduced but the shortcomings of the Austrian army prevented the artillery from being decisive. ||| Causes ||| Military factors ||| Armaments and tactics +0 Austro-Turkish War (1663–64) ||| Battle of Vienna ||| The peace in fact held for 20 years until the Ottomans attacked [[Battle of Vienna|Vienna for the second time]] in 1683 and were pushed back from Hungary in the following [[Great Turkish War|Great Turkish War (1683–1699)]]. ||| Consequences ||| ||| +0 Avaricum ||| Battle of Alesia ||| However, Caesar's [[Roman legion|legions]] were in no mood to spare any of the forty thousand Gauls within Avaricum, especially after twenty five days of short rations and great frustration. Only eight hundred managed to escape the [[massacre]] that followed. After feeding and resting his men at Avaricum until the beginning of June, Caesar moved on [[Battle of Gergovia|Gergovia]], determined to draw Vercingetorix into battle in a campaign that would eventually culminate in the [[Battle of Alesia]]. ||| Siege of Avaricum ||| ||| +0 Azadi March ||| Operation Zarb-e-Azb ||| PML-N leader and federal minister for planning and development, Ahsan Iqbal, called Khan's Azadi March anarchy in disguise and criticised Khan for launching an unnecessary protest movement when the country was at war with the terrorists in [[North Waziristan]] in the [[Operation Zarb-e-Azb]]. Iqbal also declared that PML-N had 'no connection with Arsalan Iftikhar' and his case against the PTI chief. ||| Government reaction and response ||| [[Operation Zarb-e-Azb]] and security concerns ||| +0 Bab al-Tabbaneh–Jabal Mohsen conflict ||| Syrian Civil War spillover in Lebanon ||| The '''Bab al-Tabbaneh–Jabal Mohsen conflict''' is a recurring conflict between [[Sunni Islam in Lebanon|Sunni Muslim]] residents of the Bab-al-Tibbaneh and [[Alawites#Lebanon|Alawite Muslim]] residents of the Jabal Mohsen neighbourhoods of [[Tripoli, Lebanon|Tripoli]], [[Lebanon]]. Residents of the two neighbourhoods have been rivals since the [[Lebanese Civil War]], and have often engaged in violence. They are divided along sectarian lines, as well as by their opposition or support of the Alawite-led [[Syria]]n government. Violence flared up during the [[Syrian Civil War spillover in Lebanon]]. ||| ||| ||| +0 Baklahorani ||| Occupation of Constantinople ||| The carnival reached its peak of popularity after World War I, during the years of the [[Occupation of Constantinople|Allied Occupation of the city]] (1918–1922). It continued after the establishment of the [[Republic of Turkey]] until World War II. ||| Carnival ||| ||| +0 Baku pogrom ||| Nagorno-Karabakh War ||| The '''Baku pogrom''' was a [[pogrom]] directed against the [[Armenians in Baku|Armenian]] inhabitants of [[Baku]], [[Azerbaijan SSR]]. The pogrom of Armenians in Baku was one of the acts of ethnic violence in the context of the [[Nagorno-Karabakh War|Nagorno-Karabakh conflict]], directed against the demands of the Nagorno-Karabakh Armenians to secede from Azerbaijan and unify with Armenia. ||| ||| ||| +0 Bali Strait Incident ||| Action of 9 September 1796 ||| The '''Bali Strait Incident''' was an encounter between a powerful [[French Navy]] [[frigate]] squadron and a convoy of British [[East India Company]] [[East Indiamen]] merchant ships in the [[Bali Strait]] on 28 January 1797. The incident took place admidst the East Indies campaign of the [[French Revolutionary Wars]] {{mdash}} repeated French attempts to disrupt the highly valuable British trade routes with [[British India]] and [[Qing Dynasty]] [[China]]. In 1796, a large squadron of French frigates arrived in the [[Indian Ocean]] under the command of [[Contre-amiral]] [[Pierre César Charles de Sercey]]. In July this force sailed on a [[commerce raiding]] cruise off [[British Ceylon]], but a subsequent attack into the [[Straits of Malacca]] was driven off in [[Action of 9 September 1796|an inconclusive engagement]] with two British [[ships of the line]] off Northeastern [[Sumatra]]. Forced to make repairs, Sercey took his squadron to the allied Batavian city of [[Djakarta|Batavia]], sheltering there until January 1797. ||| ||| ||| +0 Baltic Operation ||| Battle of Raseiniai ||| ::[[Battle of Raseiniai]] also known as the 'Kaunas Counterattack' ||| Operational parts ||| ||| +0 Baltic Sea campaigns (1939–45) ||| Battle of Vyborg Bay (1944) ||| During the [[Vyborg-Petrozavodsk Offensive|Soviet offensive]] against Finland in the summer of 1944, the Red Army made landings in the [[Koivisto]] islands. Finnish and German naval units clashed with Soviet light naval units and were subjected to repeated air attacks, during which the Finnish Navy lost ''[[Taisto class motor torpedo boat|Tarmo]]'' and ''[[VMV class patrol boat|VMV 17]]'', Germany lost ''[[Elbing class torpedo boat|T 31]]'' and ''[[Marinefährprahm|AF 32]]'', and both had several other vessels damaged. Finnish forces were evacuated from the islands unchallenged, which opened the way for Soviet amphibious operations on [[Battle of Vyborg Bay (1944)|Viipuri Bay]]. Finnish and German light naval forces made repeated raids into the bay, under constant air, artillery and motor torpedo boat attacks. While no ships were lost during the raids, nearly all participating vessels were heavily damaged. The naval forces never reached their target area, but their raids helped the defense of the islands in Viipuri Bay by drawing artillery fire, as well as attacks by Soviet aircraft. ||| Campaigns on the Baltic Sea ||| Operations in 1944 ||| +0 Baltic Sea campaigns (1939–45) ||| Invasion of Poland ||| The relatively small [[Polish Navy]] suffered greatly from lack of funds, but still managed to field, at the [[Invasion of Poland|outbreak of war]]: ||| Participants ||| Polish Navy ||| +0 Baltic Sea campaigns (1939–45) ||| Siege of Leningrad ||| Though naval mines, aerial supremacy, and the rapid German advance on land had largely neutralized its heavy elements, the Soviet Baltic Fleet in the immediate vicinity of [[Leningrad]] had not been destroyed. Shore bombardment by the fleet was important in saving Leningrad from the Initial German assault in September. The battleship [[Soviet battleship Marat|''Marat'']] was sunk by German [[Junkers Ju 87]] ''Stuka'' [[dive bomber]]s in Kronstadt on 23 September, but was partially salvaged for use as a static battery. Many Baltic Fleet sailors fought on land during the [[Siege of Leningrad]]. Also, though some of the islands in the [[bay of Finland]] had been lost during 1941, the islands of [[Seskar|Seiskari]] and [[Lavansaari]] were held, which would prove to be important bases as the war progressed. ||| Campaigns on the Baltic Sea ||| Operations in 1941 ||| +0 Baltic Sea campaigns (1939–45) ||| Winter War ||| The Soviet [[Baltic Fleet]] was the largest of the four fleets which made up the [[Soviet Navy]] during World War II, and was commanded by [[Vladimir Tributs]] throughout the war. Though initially having bases only in the eastern corner of the Gulf of Finland, the Red Banner Baltic Fleet was the largest naval power in the Baltic Sea. As World War II progressed, it was able to make use of naval bases in [[Estonia]], [[Latvia]] and [[Lithuania]], first under the terms of agreements forced by the Soviet Union in autumn 1939, then by direct access to the bases following the [[occupation of the Baltic states]] in spring, 1940. Gains from the [[Moscow Peace Treaty (1940)|peace treaty]] after the [[Winter War]] further helped the Baltic Fleet, as it acquired a base at [[Hanko]], Finland, as well as the coast of the Karelian Isthmus. [[Liepāja]] and [[Tallinn]] were the main naval bases of the Baltic Fleet prior to [[Operation Barbarossa]]. ||| Participants ||| Soviet Baltic Fleet ||| +0 Barbary Wars ||| 2011 military intervention in Libya ||| In the 21st century, the United States again conducted military operation in the North African area, specifically participating in the intervention against the government of [[Libya]], and this operation has sometimes been termed in the media as the continuation of the previous Barbary Wars and given the name '[[2011 military intervention in Libya|Third Barbary War]]'. ||| Later ||| ||| +0 Battle between HMAS Sydney and German auxiliary cruiser Kormoran ||| Last battle of the battleship Bismarck ||| ''Sydney'' was granted the [[battle honour]] '''Kormoran'' 1941' in recognition of the damage done to ''Kormoran''. This was one of only three honours awarded during the 20th century for the sinking of a single ship - rather than a lengthy [[Military operation|operation]] in a [[military campaign]] - and the second granted to a ship named ''Sydney''.{{efn|The first 'action honour' was awarded to the Town-class light cruiser {{HMAS|Sydney|1912|6}} for her defeat of the German light cruiser {{SMS|Emden|1908|6}} at the [[Battle of Cocos]] in 1914. The third, not received by any ship named ''Sydney'', was for ships involved in the [[Last battle of the battleship Bismarck|pursuit and last battle]] of the {{ship|German battleship|Bismarck||6}} in 1941.}} ||| Aftermath ||| Honours and awards ||| +0 Battle for Brest ||| Battle of Monte Cassino ||| The German paratroopers lived up to their reputation, as the Allies had experienced previously in battles such as [[Battle of Monte Cassino|Monte Cassino]]. Whilst some less capable units surrendered quite easily, the Fallschirmjäger defended their ground under considerable odds, heavy shelling, air strikes and American assaults. The attackers had heavy losses for every small advance they made into the city. ||| Battle ||| ||| +0 Battle for Brest ||| Liberation of Paris ||| The whole Overlord campaign developed somewhat differently than originally planned. Patton's US Third Army's quick advance allowed the [[Liberation of Paris]] earlier than expected, but by September 1944 supplies were beginning to run short. ||| Aftermath ||| ||| +0 Battle for Brest ||| Operation Cobra ||| [[Cherbourg-Octeville|Cherbourg]], at the tip of the [[Cotentin Peninsula]] in Normandy, was captured by the Americans who landed on [[Utah Beach]], but the German garrison destroyed its harbour facilities before surrendering. Cherbourg was so far the only major port in the Allied invasion area. Soon after, the Germans in the [[peninsula]] of [[Brittany (peninsula)|Brittany]] were isolated by a north-south breakthrough accomplished by [[George S. Patton]]'s [[Third United States Army]], exploiting the success of [[Operation Cobra]], and US VIII Corps was diverted into Brittany to capture Brest and secure the northern flank of the breakthrough. [[Wehrmacht]] troops trapped in Brittany retreated to the fortified ports in the peninsula, as US Third Army troops moved in and surrounded them. The Brest garrison, ''Festung Brest'', meaning 'Fortress Brest', as the German [[propaganda]] referred to surrounded cities, was put under the command of [[General (Germany)|General der Fallschirmtruppe]] [[Hermann-Bernhard Ramcke]], a paratroop veteran of the [[Afrika Korps]]. His forces consisted of the German [[2nd Parachute Division (Germany)|2nd Parachute Division]], [[266th Infantry Division (Wehrmacht)|266th Infantry Division]], [[344th Infantry Division (Wehrmacht)|344th Infantry Division]] and other Wehrmacht elements, in all some 40,000 fighting men. ||| Prelude ||| ||| +0 Battle for Brest ||| Utah Beach ||| [[Cherbourg-Octeville|Cherbourg]], at the tip of the [[Cotentin Peninsula]] in Normandy, was captured by the Americans who landed on [[Utah Beach]], but the German garrison destroyed its harbour facilities before surrendering. Cherbourg was so far the only major port in the Allied invasion area. Soon after, the Germans in the [[peninsula]] of [[Brittany (peninsula)|Brittany]] were isolated by a north-south breakthrough accomplished by [[George S. Patton]]'s [[Third United States Army]], exploiting the success of [[Operation Cobra]], and US VIII Corps was diverted into Brittany to capture Brest and secure the northern flank of the breakthrough. [[Wehrmacht]] troops trapped in Brittany retreated to the fortified ports in the peninsula, as US Third Army troops moved in and surrounded them. The Brest garrison, ''Festung Brest'', meaning 'Fortress Brest', as the German [[propaganda]] referred to surrounded cities, was put under the command of [[General (Germany)|General der Fallschirmtruppe]] [[Hermann-Bernhard Ramcke]], a paratroop veteran of the [[Afrika Korps]]. His forces consisted of the German [[2nd Parachute Division (Germany)|2nd Parachute Division]], [[266th Infantry Division (Wehrmacht)|266th Infantry Division]], [[344th Infantry Division (Wehrmacht)|344th Infantry Division]] and other Wehrmacht elements, in all some 40,000 fighting men. ||| Prelude ||| ||| +0 Battle for Caen ||| Charge of the Light Brigade ||| The Canadian column advanced, with B Squadron of the 1st Hussars in the lead, with men of D Company of the Queen's Own Rifles riding on the 1st Hussar tanks. An English newspaper called it the modern equivalent of the [[Charge of the Light Brigade]].{{sfn|Martin|Whitsed|2008|p=20}} The [[3rd Canadian Division|3rd Canadian Infantry Division]] assumed a static role until Operation Windsor in the first week of July. ||| Battle ||| Le Mesnil-Patry ||| +0 Battle for Caen ||| Operation Tonga ||| On 6 June 1944, Allied forces invaded France by launching [[Operation Neptune]], the beach landing operation of [[Operation Overlord]]. A force of several thousand ships assaulted the beaches in Normandy, supported by {{Circa|3,000 aircraft.}} The D-Day landings were successful, but the Allied forces were unable to take Caen as planned. The Allies also employed [[Airborne forces|airborne troops]]. The American [[82nd Airborne Division|82nd]] and [[101st Airborne Division]]s, as well as the British [[6th Airborne Division (United Kingdom)|6th Airborne Division]] (with the attached [[1st Canadian Parachute Battalion]]), were inserted behind the enemy lines. The British and Canadian paratroopers behind Sword Beach were tasked in [[Operation Tonga]] with reaching and occupying the strategically important bridges such as Horsa and [[Pegasus Bridge|Pegasus]], as well as to take the artillery battery at [[Battle of Merville Gun Battery|Merville]] in order to hinder the forward progress of the German forces. They managed to establish a bridgehead north of Caen, on the east bank of the Orne, that the Allied troops could use to their advantage in the battle for Caen. The first operation intended to capture Caen was the initial landings on [[Sword Beach]] by the [[3rd Division (United Kingdom)|3rd British Infantry Division]] on 6 June. Despite being able to penetrate the [[Atlantic Wall]] and push south the division was unable to reach the city, their final objectives according to the plan, and in fact fell short by {{convert|3.7|mi|km|abbr=on}}. The [[21st Panzer Division (Wehrmacht)|21st Panzer Division]] launched several counter-attacks during the afternoon which blocked the road to Caen. ||| Background ||| Operation Neptune ||| +0 Battle for Central Somalia (2009) ||| Battle of Mogadishu (2009) ||| *[[Battle of Mogadishu (2009)]] ||| See also ||| ||| +0 Battle for Height 776 ||| Battle of Komsomolskoye ||| On 10 March, Chechen President [[Aslan Maskhadov]] announced a general order to begin 'an all-out partisan war' and the separatist forces remaining in the still unoccupied territories scattered to launch a long guerrilla war. The Russian command thus lost one of their last chances to defeat a large number of the pro-independence fighters in a concentrated position, although in March the federal forces managed to inflict devastating losses against a different column of some 1,000–1,500 fighters (trapping the group under [[Ruslan Gelayev]] in the village of Komsomolskoye on 6 March and then killing hundreds of them in the [[Battle of Komsomolskoye|following siege]]). ||| Controversies ||| ||| +0 Battle for Jerusalem (1948) ||| Deir Yassin massacre ||| In March an attack on a convoy returning from a [[Gush Etzion|settlement]] south of [[Neve Daniel|Jerusalem]] left 15 Jews dead. In April, shortly after an [[Deir Yassin massacre|attack on an Arab village]] west of Jerusalem, Arab forces attacked [[Hadassah medical convoy massacre|a Jewish medical convoy]] on its way to [[Hadassah Hospital]] on [[Mount Scopus]]. The British had provided no escort (as they had in previous months) and they failed to intervene during the attack or help the Jews. After seven hours of fighting, 78 Jews (mostly unarmed medical personnel) had been killed. ||| Convoys ||| End of the siege and truces ||| +0 Battle for Narva Bridgehead ||| Battle of Tannenberg Line ||| The '''Battle of Narva Bridgehead''' (Estonian: ''Narva lahingud''; German: ''Schlacht um den Brückenkopf von Narva''; Russian: ''Битва за плацдарм Нарва''; 2 February – 26 July 1944) was the campaign that stalled the Soviet Estonian Operation in the surroundings of the town of [[Narva]] for six months. It was the first phase of the [[Battle of Narva (1944)|Battle of Narva]] campaign fought at the [[Eastern Front (World War II)|Eastern Front]] during [[World War II]], the second phase being the [[Battle of Tannenberg Line]]. ||| ||| ||| +0 Battle for Narva Bridgehead ||| Operation Bagration ||| While continuing attacks on the Narva front, the [[Stavka]] had begun to look elsewhere for their breakthrough. A new offensive, codenamed [[Operation Bagration|Bagration]] after the [[Napoleonic]]-era [[Pyotr Bagration|Russian field marshal]], was launched on 22 June against [[Army Group Centre]]. ||| Narva Offensives, May and June ||| ||| +0 Battle for No.3 Post ||| Battle of Chunuk Bair ||| The New Zealand Mounted Brigade's casualties during the battle were forty-two dead and 109 wounded. The exact number of Turkish casualties is not known but was around two hundred men. The New Zealand brigade went on to fight in the [[Battle of Chunuk Bair]] and the [[Battle of Hill 60 (Gallipoli)|Battle of Hill 60]], and was then evacuated from the peninsula before the campaign ended in December 1915. ||| ||| ||| +0 Battle for No.3 Post ||| Battle of Hill 60 (Gallipoli) ||| The New Zealand Mounted Brigade's casualties during the battle were forty-two dead and 109 wounded. The exact number of Turkish casualties is not known but was around two hundred men. The New Zealand brigade went on to fight in the [[Battle of Chunuk Bair]] and the [[Battle of Hill 60 (Gallipoli)|Battle of Hill 60]], and was then evacuated from the peninsula before the campaign ended in December 1915. ||| ||| ||| +0 Battle for The Hague ||| Rotterdam Blitz ||| By the end of 10 May, Dutch forces had retaken the captured airfields, but this tactical victory would be short lived as the German [[Rotterdam Blitz]] on the 14th of May ensured the surrender of the Dutch armed forces. ||| The Dutch counter-attack ||| ||| +0 Battle for Velikiye Luki ||| Kholm Pocket ||| Rather than attacking the town directly, the Soviet forces advanced into the difficult terrain to the north and south of the town. Spearheaded by four rifle divisions to the south and one to the north, the operation commenced on 24 November. Despite heavy losses, they successfully cut the land links to the city by 27 November, trapping the garrison; by the next day they threatened to cut off other elements of the corps south of the city when the front commander released his 2nd Mechanised Corps into the breach created between the 3rd Mountain and 83rd Infantry Divisions. [[Army Group Centre]]'s commander asked the [[Oberkommando des Heeres|OKH]] for permission to conduct a breakout operation while the situation was still relatively fluid by pulling the German lines back by around ten miles (16 km); this would have both screened the vital rail link and left the resulting Soviet [[Salients, re-entrants and pockets|salient]] exposed to counter-attack. The request was dismissed by Hitler, who, pointing to an earlier success in a similar situation at [[Kholm Pocket|Kholm]], demanded that the encircled formations stand fast while the [[Gruppe Chevallerie]] from the north and 20th Motorised Division from the south counter-attacked to open the encirclement. ||| The offensive ||| Encirclement ||| +0 Battle for Velikiye Luki ||| Operation Bagration ||| The battle is sometimes called 'The Little Stalingrad of the North' due to its similarities with the larger and better-known [[Battle of Stalingrad]] that raged simultaneously in the southern sector of the front. Judged purely by the numbers, this battle was a small affair by the usual standards of the Eastern Front (150,000 total casualties suffered by both sides as opposed to 2,000,000 total casualties at Stalingrad), but had enormous strategic consequences. The liberation of Velikiye Luki meant the Red Army had, for the first time since October 1941, a direct rail supply line to the northern face of the Rzhev Salient exposing the German troops defending Rzhev to encirclement. Events at Velikiye Luki thus necessitated the withdrawal from Rzhev salient ending any German military threat to Moscow. However, even after withdrawing from Rzhev, possession of Velikiye Luki meant that the rail link between Army groups North and Centre was severed, preventing the [[German Army (Wehrmacht)|German Army]] from shifting reinforcements between threatened sectors. Furthermore, the rail lines from Velikiye Luki led directly into the rear of [[Vitebsk]], a critical logistics hub for Army Group Centre. The effects of this battle meant that Army Group Centre was exposed to attack from the north, east, and (after the [[Battle of Smolensk (1943)]]) south, exposing the whole army group to mass encirclement, which is exactly what happened in the massive [[Operation Bagration]] the following year. ||| Aftermath ||| ||| +0 Battle for Velikiye Luki ||| Operation Mars ||| The '''Velikiye Luki offensive operation''' ({{lang-ru|Великолукская наступательная операция}}) was executed by the forces of the [[Red Army]]'s [[Kalinin Front]] against the [[Wehrmacht]]'s [[3rd Panzer Army]] during the [[Winter Campaign of 1942–1943]] with the objective of liberating the Russian city of [[Velikiye Luki]] as part of the northern pincer of the [[Rzhev-Sychevka Strategic Offensive Operation]] ([[Operation Mars]]). ||| ||| ||| +0 Battle for Velikiye Luki ||| War crimes of the Wehrmacht ||| After the war, the Soviet authorities collected a representative set of men of various ranks from General to private who had fought at Velikiye Luki from prisoner of war camps and brought them to the city. A military tribunal held a public trial in the city and convicted them of collective responsibility for [[War crimes of the Wehrmacht|war crimes]] generally related to anti-partisan warfare. Von Saß, von Rappard, the previous commander of Infantry Regiment 277 and six others were publicly hanged in the main square of Velikiye Luki in January 1946. All others who were identified as having been involved in the battle were typically given sentences of twenty to twenty-five years. Between 1953 and 1955, a total of eleven survivors returned to Germany. ||| Aftermath ||| ||| +0 Battle in Shakhtarsk Raion ||| 2014 Ukrainian revolution ||| From 6 April, as part of the [[2014 pro-Russian unrest in Ukraine|rising unrest]] in Ukraine in the aftermath of the [[2014 Ukrainian revolution]], insurgents affiliated with the [[Donetsk People's Republic]] (DPR) captured towns and cities across [[Donetsk Oblast]], including Shakhtarsk Raion. The raion is in a crucial position between the Donetsk and Lugansk People's Republics, and Russia. Government forces launched an offensive against insurgent forces in Donetsk and Luhansk oblasts of Ukraine on 7 April, resulting in the [[War in Donbass]]. War reached Shakhtarsk Raion on 16 July, after insurgents retreated from most of northern Donetsk Oblast. Fighting took place across the raion, in an attempt by the government to cut-off insurgent supply lines, and to reach the crash site of [[Malaysia Airlines Flight 17]]. ||| Events by location ||| ||| +0 Battle of Abaran ||| Battle of Sardarabad ||| The '''Battle of Bash Abaran''' ({{lang-hy|Բաշ Աբարանի ճակատամարտ}} ''Bash Abarani chakatamart'', {{lang-tr|Baş-Abaran Muharebesi}}) was a battle of [[Caucasus Campaign]] of World War I that took place in the vicinity of [[Aparan|Bash Abaran]], in 1918. The Armenian victories at Bash Abaran, [[Battle of Sardarabad|Sardarabad]] and [[Battle of Karakilisa|Karakilisa]], halted the [[Ottoman Empire|Ottoman]] invasion of Eastern Armenia and were instrumental in allowing the formation of the short-lived [[First Republic of Armenia]]. {{cite book ||| ||| ||| +0 Battle of Aberdeen (1644) ||| Battle of Tippermuir ||| After defeating [[David Wemyss, 2nd Earl of Wemyss|Lord Elcho]]'s forces at the [[Battle of Tippermuir]], outside [[Perth, Scotland|Perth]], [[James Graham, 1st Marquess of Montrose|Montrose]]'s forces had captured a large cache of weapons and munitions, but had not captured Perth, and had suffered the desertion of the highland forces under his command, leaving a force of around 1,000 Irish infantry under [[Alasdair MacColla]] and 44 horse from the [[William Cavendish, 1st Duke of Newcastle|Earl of Newcastle]]. ||| Prelude ||| ||| +0 Battle of Abtao ||| Battle of Iquique ||| Lieutenants [[Arturo Prat]] (Chilean) and [[Miguel Grau Seminario|Miguel Grau]] (Peruvian), who were later to battle each other at the [[Battle of Iquique|Naval Battle of Iquique]], were comrades in this battle. ||| Notable sailors in the battle ||| ||| +0 Battle of Abu Tellul ||| Battle of Megiddo (1918) ||| During the day gas drills were carried out and [[funk hole]]s dug. Just two months later on 19 September, the [[Battle of Megiddo (1918)|Battle of Megiddo]], which finished the war in this theatre, began. ||| Aftermath ||| ||| +0 Battle of Abukir (1801) ||| Battle of Alexandria ||| The '''Battle of Abukir''' of 8 March 1801 was the second battle of the [[French campaign in Egypt and Syria]] to be fought at [[Abu Qir]] on the [[Mediterranean]] coast, near the [[Nile]] delta. Under [[Louis Friant|General Friant]], some 2000 French troops and ten field guns in high positions took a heavy toll of a large British force disembarking from a task-force fleet in boats, each carrying 50 men to be landed on the beach. The British then rushed and overwhelmed the defenders with fixed bayonets and secured the position, enabling an orderly landing of the remainder of their 17,500-strong army and its equipment. The skirmish was a prelude to the [[Battle of Alexandria]] and resulted in British losses of 130 killed and 600 wounded or missing. The French withdrew, losing at least 300 dead or wounded and eight pieces of cannon. ||| ||| ||| +0 Battle of Abukir (1801) ||| French campaign in Egypt and Syria ||| The '''Battle of Abukir''' of 8 March 1801 was the second battle of the [[French campaign in Egypt and Syria]] to be fought at [[Abu Qir]] on the [[Mediterranean]] coast, near the [[Nile]] delta. Under [[Louis Friant|General Friant]], some 2000 French troops and ten field guns in high positions took a heavy toll of a large British force disembarking from a task-force fleet in boats, each carrying 50 men to be landed on the beach. The British then rushed and overwhelmed the defenders with fixed bayonets and secured the position, enabling an orderly landing of the remainder of their 17,500-strong army and its equipment. The skirmish was a prelude to the [[Battle of Alexandria]] and resulted in British losses of 130 killed and 600 wounded or missing. The French withdrew, losing at least 300 dead or wounded and eight pieces of cannon. ||| ||| ||| +0 Battle of Aden ||| Battle of Aden Airport ||| After [[Battle of Aden Airport|fighting over the airport]] broke out in Aden on 19 March ||| Background ||| ||| +0 Battle of Aden Airport ||| Yemeni Revolution ||| [[Ali Abdullah Saleh]], who was ousted from power by the 2011 [[Yemeni Revolution]], was widely suspected in 2014 of allying with the [[Houthis]] in their [[Houthi insurgency in Yemen|successful insurgency]] against the government of his former vice president and successor as president, [[Abd Rabbuh Mansur Hadi]]. ||| Background ||| ||| +0 Battle of Adwa ||| Battle of Annual ||| * [[Battle of Annual]] ||| See also ||| ||| +0 Battle of Agendicum ||| Avaricum ||| After [[Julius Caesar]] captured [[Avaricum]], he split his forces in half, and sent 4 legions under the command of Labienus north into the lands of the [[Senones]] and [[Parisii]]. Labienus set up camp at Agendicum, and he then marched towards [[Lutetia]], leaving his baggage train and newest recruits behind at Agendicum. A large force of Gauls, led by [[Camelugenus]], were encamped near Lutetia, using the nearby swamps as a natural barrier from the Roman army. Labienus was able to flank the Gauls by crossing the river [[Seine]] near the town of Melodunum, (modern-day [[Melun]]). As they approached the town of Lutetia, Camelegenus ordered the town and surrounding bridges to be burnt. After being halted, Labienus received more bad news in the fact that a new army made up of tribes of the [[Bellovaci]] were coming to attack him from the north. Labienus abandoned any plan to continue his expedition and instead tried to head back to his baggage train in Agendicum, while trying to get past Camelugenus' army. ||| Setup ||| ||| +0 Battle of Agua Dulce ||| Battle of San Patricio ||| Mexican troops arrived in San Patricio in the early hours of February 26. After a [[Battle of San Patricio|fifteen-minute battle]], Johnson's men were defeated; six Texians, including Johnson, escaped, and the remainder were killed or captured. ||| Prelude ||| ||| +0 Battle of Alavus ||| Battle of Kauhajoki ||| Probably encouraged by the victory at [[Battle of Kauhajoki|Kauhajoki]], marshal [[Wilhelm Mauritz Klingspor]] ordered general Adlercreutz to attack the Russian position at Alavus. The army, much worn by the ordeals of the summer, was moved south on 16 August in pouring rain. The following day the weather cleared. ||| Prelude ||| ||| +0 Battle of Alavus ||| Battle of Lapua ||| Despite the success, Klingspor never capitalized on it or the outcome of [[Battle of Lapua|Lapua]] and the difficult Russian supply situation in the summer of 1808. After the defeat at Alavus, Russian fortune turned and Kamensky was successful in his counteroffensive, which drove the Swedes ever further north. ||| Aftermath ||| ||| +0 Battle of Albarracín ||| Battle of Brunete ||| The [[Aragon]] front was, from the beginning of the war, a secondary front, but also a primary objective for the [[Republican faction (Spanish Civil War)|Republicans]]. The [[Nationalist faction (Spanish Civil War)|Nationalists]] maintained a weak position, defending a large line which stretched from the [[Pyrenees]] to the city of [[Teruel]], and from there down to the [[Montes Universales]] and the birth of the [[Tagus]]. Thus, it was a tempting target to the numerically superior Republican troops, especially [[Huesca]] and Teruel, which were besieged. In order to support the Republican offensive at [[Battle of Brunete|Brunete]] and to force the Nationalists to maintain their troops in this front, the Republicans in Aragon planned to launch a small offensive at Albarracín. ||| Background ||| ||| +0 Battle of Albemarle Sound ||| Battle of Plymouth (1864) ||| In April 1864, a [[Confederate States of America|Confederate]] Army, with the aid of the [[CSS Albemarle|CSS ''Albemarle'']], forced the surrender of the [[Union (American Civil War)|Union]] garrison at [[Plymouth, North Carolina|Plymouth]]. [[Robert Hoke]], commander of a Confederate Army in North Carolina, encouraged by his success at Plymouth attempted to retake [[New Bern, North Carolina|New Bern]] which had been in Union control since early in 1862. For his proposed attack on New Bern Hoke again turned to the aid of ''Albemarle'', which had been a decisive factor in the [[Battle of Plymouth (1864)|Battle of Plymouth]]. ||| Background ||| ||| +0 Battle of Albert (1914) ||| First Battle of the Aisne ||| The '''Battle of Albert''' (also known as the First Battle of Albert) began on 25 September 1914, in what became misleadingly known as the '[[Race to the Sea]]', during World War I. It followed the [[First Battle of the Aisne]] as both sides moved northwards, trying to turn the northern flank of the opposing army. The [[Second Army (France)|Second Army]] under [[Noël Édouard, vicomte de Curières de Castelnau|Noël de Castelnau]], began to assemble at Amiens in mid-September and was directed by General [[Joseph Joffre]], the [[Generalissimo]] of the French Army, to attack near [[Albert, Somme|Albert]]. ||| ||| ||| +0 Battle of Albert (1916) ||| Battle of Bazentin Ridge ||| British attacks south of the road between [[Albert, Somme|Albert]] and [[Bapaume]] began on 2 July, despite congested supply routes to the French XX Corps, British XIII Corps, XV Corps and III Corps. [[La Boisselle]] near the road was captured on 4 July, Bernafay and Caterpillar woods were occupied from {{nowrap|3–4 July}} and then fighting to capture Trônes Wood, [[Mametz, Somme|Mametz Wood]] and [[Contalmaison]] took place until early on 14 July, when the [[Battle of Bazentin Ridge]] (14–17 July) began. German reinforcements reaching the Somme front, were thrown into the defensive battle as soon as they arrived and had many casualties as did the British attackers. Both sides were reduced to piecemeal operations, which were hurried, poorly organised, sent troops unfamiliar with the ground into action with inadequate reconnaissance. Attacks were poorly supported by artillery-fire, which was not adequately co-ordinated with the infantry and sometimes fired on ground occupied by friendly troops. Much criticism has been made of the British attacks as uncoordinated, tactically crude and wasteful of manpower, which gave the Germans an opportunity to concentrate their inferior resources on narrow fronts. ||| ||| ||| +0 Battle of Albuera ||| Battle of Bussaco ||| Despite his victory over elements of [[André Masséna|Marshal André Masséna]]'s Army of Portugal at the [[Battle of Bussaco]] in September 1810, [[Arthur Wellesley, 1st Duke of Wellington|Viscount Wellington]] was forced by Masséna's subsequent manoeuvring to withdraw his numerically inferior force behind the extensive [[Lines of Torres Vedras|series of fortifications]] he had prepared around Torres Vedras to protect the approaches to [[Lisbon]]. By 10 October 1810, only the British [[Craufurd's Light Division|light division]] and some [[cavalry]] patrols remained outside the 'Lines'. ||| Background ||| ||| +0 Battle of Alcantara (1809) ||| Battle of Talavera ||| Believing Mayne's troops to be a serious threat, Victor marched against him. The [[Loyal Lusitanian Legion]] battalion stoutly defended the Alcántara Bridge for three hours. Then, the French artillery silenced their guns and a supporting battalion of militia took to its heels. The bridge was mined, but when Mayne ordered the charges to be detonated, its heavy construction withstood the explosion. Victor's infantry then rushed the incompletely demolished span. The French hung around the area for a few days but finally withdrew. The next action was the [[Battle of Talavera]]. ||| ||| ||| +0 Battle of Alcatraz ||| Pacific War ||| The Marines implemented a plan to drive the armed convicts into a corner with tactics they had perfected against entrenched Japanese resistance during the [[Pacific War]]. They drilled holes in the prison roof and dropped [[grenades]] into areas where they believed the convicts were to force them into a utility corridor where they could be cornered. ||| Failed escape attempt ||| ||| +0 Battle of Aldbourne Chase ||| First Battle of Newbury ||| Following the action, Essex decided to take the route to Newbury via [[Hungerford]], This allowed the King's army to occupy Newbury on 19 September just before the Parliamentarians arrived. The delay at Aldbourne led to the [[First Battle of Newbury]] of 20 September. ||| Aftermath ||| ||| +0 Battle of Aldenhoven (1793) ||| Battle of Jemappes ||| After a victory in the [[Battle of Jemappes]] on 6 November 1792, the French army of [[Charles Francois Dumouriez]] conquered most of the [[Austrian Netherlands]]. That winter, Dumouriez attempted to overrun the [[Dutch Republic]] while [[Francisco de Miranda]] besieged [[Maastricht]], covered by Lanoue's troops along the Roer. Sent by the Austrian government to reconquer [[Belgium]], Coburg's troops attacked early on the morning of 1 March and dispersed the French. The [[Battle of Neerwinden (1793)|Battle of Neerwinden]] on the 18th of March would decide who controlled the Austrian Netherlands. ||| ||| ||| +0 Battle of Aldenhoven (1793) ||| Battle of Neerwinden (1793) ||| After a victory in the [[Battle of Jemappes]] on 6 November 1792, the French army of [[Charles Francois Dumouriez]] conquered most of the [[Austrian Netherlands]]. That winter, Dumouriez attempted to overrun the [[Dutch Republic]] while [[Francisco de Miranda]] besieged [[Maastricht]], covered by Lanoue's troops along the Roer. Sent by the Austrian government to reconquer [[Belgium]], Coburg's troops attacked early on the morning of 1 March and dispersed the French. The [[Battle of Neerwinden (1793)|Battle of Neerwinden]] on the 18th of March would decide who controlled the Austrian Netherlands. ||| ||| ||| +0 Battle of Aldenhoven (1794) ||| Battle of Fleurus (1794) ||| After the [[Battle of Fleurus (1794)|Battle of Fleurus]] on 26 June 1794, the army of Austria began pulling back to the east while their British and Dutch allies withdrew to the north to defend Holland. There was a lull as the French armies paused to capture a number of fortresses held by the Coalition. Then, as [[Jean-Charles Pichegru]]'s ''[[Army of the North (France)|Army of the North]]'' prepared to overrun the [[Dutch Republic]], Jourdan's ''[[Army of Sambre-et-Meuse]]'' turned northeast to drive the Austrians back to the Rhine, first winning the [[Battle of Sprimont]] in September. On 2 October, Jourdan launched attacks at Düren on the right, Aldenhoven and [[Jülich]] on the right center, [[Linnich]] on the left center and Ratheim on the left. After its victory, the ''Army of Sambre-et-Meuse'' captured [[Cologne]] and [[Bonn]] on the Rhine. ||| ||| ||| +0 Battle of Aldie ||| Battle of Chancellorsville ||| Late in the spring of 1863 tensions grew between Union commander [[Joseph Hooker]] and his cavalry commander Brig. Gen. [[Alfred Pleasonton]] because of the latter's inability to penetrate Maj. Gen. [[J.E.B. Stuart|J.E.B. Stuart's]] cavalry screen and gain access to the Shenandoah Valley to locate the [[Army of Northern Virginia]], which had been on the move since the [[Battle of Chancellorsville]] in early May. On June 17, Pleasonton decided to push through Stuart's screen. To accomplish his goal he ordered Brig. Gen. [[David McM. Gregg]]'s division from [[Manassas, Virginia|Manassas Junction]] westward down the [[Little River Turnpike]] to [[Aldie, Virginia|Aldie]]. Aldie was tactically important in that near the village the Little River Turnpike intersected both the [[Ashby's Gap Turnpike]] and [[Snicker's Gap Turnpike]], which respectively lead through [[Ashby's Gap]] and [[Snickers Gap]] of the [[Blue Ridge Mountain]] into the Valley. ||| Background ||| ||| +0 Battle of Aleppo (1918) ||| Battle of Megiddo (1918) ||| After the [[British Empire]]'s victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] the remnants of the [[Ottoman Empire]]'s [[Yildirim Army Group]] from [[Amman]] was pursued by Prince Feisal's Sherifial Force which [[Capture of Damascus (1918)#Sherifial Force capture of Deraa|captured Deraa]] on 27 September, on the right flank of the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]]. Meanwhile, the pursuit by the [[Australian Mounted Division]] followed by the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] of Yildirim Army Group remnants retreating from the Judean Hills, [[Capture of Damascus (1918)|captured]] [[Damascus]] on 1 October 1918, many thousands of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] prisoners and many miles of formerly Ottoman Empire territory. A remnant force of Yildirim Army Group managed to escape Damascus, to concentrate at Rayak before retreating back through Homs and Hama towards [[Aleppo]]. Huge losses in [[Desert Mounted Corps]] from sickness, delayed and depleted their pursuit from Damascus which was continued by 24 cars in three batteries of armoured cars, and three light car patrols armed with machine guns. They were supported by the [[15th Imperial Service Cavalry Brigade]] of the 5th Cavalry Division with the remainder of the division following. ||| ||| ||| +0 Battle of Aleppo (1918) ||| Capture of Damascus (1918) ||| After the [[British Empire]]'s victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] the remnants of the [[Ottoman Empire]]'s [[Yildirim Army Group]] from [[Amman]] was pursued by Prince Feisal's Sherifial Force which [[Capture of Damascus (1918)#Sherifial Force capture of Deraa|captured Deraa]] on 27 September, on the right flank of the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]]. Meanwhile, the pursuit by the [[Australian Mounted Division]] followed by the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] of Yildirim Army Group remnants retreating from the Judean Hills, [[Capture of Damascus (1918)|captured]] [[Damascus]] on 1 October 1918, many thousands of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] prisoners and many miles of formerly Ottoman Empire territory. A remnant force of Yildirim Army Group managed to escape Damascus, to concentrate at Rayak before retreating back through Homs and Hama towards [[Aleppo]]. Huge losses in [[Desert Mounted Corps]] from sickness, delayed and depleted their pursuit from Damascus which was continued by 24 cars in three batteries of armoured cars, and three light car patrols armed with machine guns. They were supported by the [[15th Imperial Service Cavalry Brigade]] of the 5th Cavalry Division with the remainder of the division following. ||| ||| ||| +0 Battle of Alesia ||| Battle of Gergovia ||| Caesar was then camped for the winter in [[Cisalpine Gaul]], unaware of the alliance made against him. The first sign of trouble came from the [[Carnutes]] who killed all Roman settlers in the city of Cenabum (modern [[Orléans]]). This outbreak of violence was followed by the slaughtering of all Roman citizens, merchants and settlers in the major Gallic cities. On hearing this news, Caesar rallied his army in haste and crossed the [[Alps]], still buried in snow, into central Gaul. This was accomplished in record time and Caesar was able to surprise the Gallic tribes. He split his forces, sending four [[Roman legion|legions]] with [[Titus Labienus]] to fight the [[Senones]] and the [[Parisii (Gaul)|Parisii]] in the North while Caesar himself set out in pursuit of Vercingetorix with six legions and his allied Germanic cavalry. The two armies met at the hill fort of [[Battle of Gergovia|Gergovia]], where Vercingetorix held a strong defensive position. Caesar was forced to retreat to avoid utter defeat, after suffering heavy losses. In the summer of 52 BC, several engagements were fought between cavalries, with Caesar succeeding in scattering the Gallic army. Vercingetorix decided that the timing was not right to engage in a major pitched battle and regrouped in the [[Mandubii]] fort of Alesia. ||| Prelude ||| ||| +0 Battle of Alexandria ||| Battle of Abukir (1801) ||| The '''Battle of Alexandria''' or '''Battle of Canope''', fought on 21 March 1801 between the [[France|French]] army under [[General Menou]] and the British expeditionary corps under Sir [[Ralph Abercrombie]], took place near the ruins of Nicopolis, on the narrow spit of land between the sea and Lake [[Abukir]], along which the British troops had advanced towards Alexandria after the actions of [[Battle of Abukir (1801)|Abukir on 8 March]] and [[Battle of Mandora|Mandora on 13 March]]. ||| ||| ||| +0 Battle of Alford ||| Battle of Aberdeen (1644) ||| Having defeated Colonel Hurry at [[Battle of Auldearn|Auldearn]], the [[James Graham, 1st Marquess of Montrose|Marquis of Montrose]] continued his raiding campaign in the Highlands. Fearing that Montrose intended to attack [[Battle of Aberdeen (1644)|Aberdeen]] again, Major-General [[William Baillie (soldier)|William Baillie]] led the [[Covenanter]] army to cut him off. ||| ||| ||| +0 Battle of Alford ||| Scotland in the Wars of the Three Kingdoms ||| The '''Battle of Alford''' was an engagement of the [[Scotland in the Wars of the Three Kingdoms|Wars of the Three Kingdoms]], which took place near the village of [[Alford, Aberdeenshire]], [[Scotland]], on 2 July 1645. The battlefield is included in the [[Inventory of Historic Battlefields in Scotland]] and protected by [[Historic Scotland]] under the Historic Environment (Amendment) Act 2011. ||| ||| ||| +0 Battle of Algiers (1956–57) ||| First Indochina War ||| In December, General [[Raoul Salan]] was promoted to commander in chief of the army of Algeria. Salan was adept in the theory of [[counter-insurgency]]; he chose veterans of the [[First Indochina War]] as his lieutenants, most notably General [[André Dulac]], Colonel Goussault (psychological operations), General [[Robert Allard]], and Lieutenant-Colonel [[Roger Trinquier]]. On the FLN side, a decision was made in late 1956 to embark upon a sustained campaign of urban terrorism designed to show the authority of the French state did not extent to Algiers, Algeria's largest city. ||| First Phase ||| ||| +0 Battle of Aliaga ||| Cry of Nueva Ecija ||| *[[Cry of Nueva Ecija]] ||| See also ||| ||| +0 Battle of Aliaga ||| Retreat to Montalban ||| *[[Retreat to Montalban]] ||| See also ||| ||| +0 Battle of Almaraz ||| Battle of Salamanca ||| The action was swift-moving, deceptive, and daring. The decisive result produced a substantial improvement in the [[Allied Forces|Allied ]] position by keeping French forces separated ahead of the imminent [[Battle of Salamanca]]. ||| ||| ||| +0 Battle of Almonacid ||| Battle of Talavera ||| The '''Battle of Almonacid''' was fought on 11 August 1809 during the [[Peninsular War]] between [[Horace François Bastien Sébastiani de La Porta|Sébastiani's]] IV Corps of the French Peninsular Army, which had withdrawn from the [[Battle of Talavera]] to defend [[Madrid]], and the [[Army of Spain (Peninsular War)|Spanish Army]] of La Mancha under [[Joaquín Venegas|General Venegas]]. After the decisive charges of [[Poland|Polish]] [[uhlan]]s, the battle resulted in a French victory. ||| ||| ||| +0 Battle of Alvøen ||| Battle of Copenhagen (1807) ||| The British Royal Navy was then blockading the coast of Norway, causing major difficulties since the country was then dependent on Danish imports of grain and other foodstuffs. Having lost their fleet in the [[Battle of Copenhagen (1807)|Battle of Copenhagen]] in 1807, Denmark-Norway was unable to afford the time or money to rebuild their high-seas fleet of corvettes, frigates and ships of the line and so had been forced to construct small vessels or [[gunboats]] for coastal defence. ||| ||| ||| +0 Battle of Amgala (1989) ||| 1991 Tifariti offensive ||| It would be the last military operation of the [[Western Sahara War]] until the 1991 [[1991 Tifariti offensive|Operation Rattle]]. ||| ||| ||| +0 Battle of Amiens (1918) ||| Battle of Hamel ||| The tactical methods had been tested by the Australians in a local counter-attack at the [[Battle of Hamel]] on 4 July. The German defenders of Hamel were deeply dug in, and their position commanded a very wide field of fire. Similar positions had resisted capture for two months in the [[Battle of the Somme]]. The Australians had used surprise rather than weight at Hamel. The artillery had opened fire only at the moment the infantry and tanks advanced, and the Germans were rapidly overrun. ||| Prelude ||| Plan ||| +0 Battle of Amiens (1918) ||| Battle of Saint-Mihiel ||| Foch disclosed his plan on 23 July 1918, following the Franco-American victory at the [[Battle of Soissons (1918)|Battle of Soissons]]. The plan called for reducing the [[Saint-Mihiel]] [[Salients, re-entrants and pockets|salient]] (which would later see combat in the [[Battle of Saint-Mihiel]]) and freeing the railway lines that ran through Amiens from German shellfire. ||| Prelude ||| Plan ||| +0 Battle of Amiens (1918) ||| Battle of Soissons (1918) ||| Foch disclosed his plan on 23 July 1918, following the Franco-American victory at the [[Battle of Soissons (1918)|Battle of Soissons]]. The plan called for reducing the [[Saint-Mihiel]] [[Salients, re-entrants and pockets|salient]] (which would later see combat in the [[Battle of Saint-Mihiel]]) and freeing the railway lines that ran through Amiens from German shellfire. ||| Prelude ||| Plan ||| +0 Battle of Amiens (1918) ||| First Battle of Villers-Bretonneux ||| On 21 March 1918, the [[German Empire]] had launched [[Operation Michael|Operation ''Michael'']], the first in a [[Spring Offensive|series of attacks]] planned to drive the [[Allies of World War I|Allies]] back along the length of the [[Western Front of World War I|Western Front]]. With the signing of the [[Treaty of Brest-Litovsk]] with [[Russian Revolution|revolutionary-controlled Russia]], the Germans were able to transfer hundreds of thousands of men to the Western Front, giving them a significant, if temporary, advantage in manpower and material. These offensives were intended to translate this advantage into victory. Operation ''Michael'' was intended to defeat the right wing of the [[British Expeditionary Force (World War I)|British Expeditionary Force]], but a lack of success before [[Arras, France|Arras]] ensured the ultimate failure of the offensive. A final effort was aimed at the town of [[Amiens]], a vital railway junction, but the advance had been halted at [[First Battle of Villers-Bretonneux|Villers-Bretonneux]] by British and Australian troops on 4 April. ||| Prelude ||| ||| +0 Battle of Amiens (1918) ||| Race to the Sea ||| The Battle of Amiens was a major turning point in the tempo of the war. The Germans had started the war with the [[Schlieffen Plan]] before the [[Race to the Sea]] slowed movement on the Western Front and the war devolved into trench warfare. The German [[Spring Offensive]] earlier that year had once again given Germany the offensive edge on the Western Front. Armoured support helped the Allies tear a hole through trench lines, weakening once impregnable trench positions. The British Third Army with no armoured support had almost no effect on the line while the Fourth, with fewer than a thousand tanks, broke deep into German territory. Australian commander [[John Monash]] was [[knight]]ed by [[George V of the United Kingdom|King George V]] in the days following the battle. ||| Aftermath ||| ||| +0 Battle of Amiens (1918) ||| Schlieffen Plan ||| The Battle of Amiens was a major turning point in the tempo of the war. The Germans had started the war with the [[Schlieffen Plan]] before the [[Race to the Sea]] slowed movement on the Western Front and the war devolved into trench warfare. The German [[Spring Offensive]] earlier that year had once again given Germany the offensive edge on the Western Front. Armoured support helped the Allies tear a hole through trench lines, weakening once impregnable trench positions. The British Third Army with no armoured support had almost no effect on the line while the Fourth, with fewer than a thousand tanks, broke deep into German territory. Australian commander [[John Monash]] was [[knight]]ed by [[George V of the United Kingdom|King George V]] in the days following the battle. ||| Aftermath ||| ||| +0 Battle of Amiens (1918) ||| Second Battle of the Marne ||| By the end of the Marne-Rheims offensive, the German manpower advantage had been spent and their supplies and troops were exhausted. The Allied generalissimo, General [[Ferdinand Foch]], ordered a [[Counterattack|counteroffensive]] which led to the [[Second Battle of the Marne]], after which victory he was promoted to [[Marshal of France]]. The Germans, recognising their untenable position, withdrew from the [[Marne River|Marne]] to the north. Foch now tried to move the Allies back onto the offensive. ||| Prelude ||| ||| +0 Battle of Amiens (1918) ||| Sinai and Palestine Campaign ||| Although the Germans were still on the offensive in late July 1918, the Allied armies were growing in strength, as more American units arrived in France, and British reinforcements were transferred from the Home Army in Britain and the [[Sinai and Palestine Campaign]]. The German commanders realized in early August that their forces might be forced onto the defensive, though Amiens was not considered to be a likely front. The Germans believed the French would probably attack the Saint-Mihiel front east of [[Rheims]], or in Flanders near [[Mount Kemmel]], while they believed the British would attack along either the [[Lys river|Lys]] or near [[Albert, Somme|Albert]]. The Allies had indeed mounted a number of local counter-offensives in these sectors, both to gain local objectives to improve their defensive positions and to distract attention from the Amiens sector. German forces began to withdraw from the Lys and other fronts in response to these theories. The Allies maintained equal artillery and air fire along their various fronts, moving troops only at night, and feigning movements during the day to mask their actual intent. ||| Prelude ||| Preliminaries ||| +0 Battle of Amiens (1918) ||| Spring Offensive ||| On 21 March 1918, the [[German Empire]] had launched [[Operation Michael|Operation ''Michael'']], the first in a [[Spring Offensive|series of attacks]] planned to drive the [[Allies of World War I|Allies]] back along the length of the [[Western Front of World War I|Western Front]]. With the signing of the [[Treaty of Brest-Litovsk]] with [[Russian Revolution|revolutionary-controlled Russia]], the Germans were able to transfer hundreds of thousands of men to the Western Front, giving them a significant, if temporary, advantage in manpower and material. These offensives were intended to translate this advantage into victory. Operation ''Michael'' was intended to defeat the right wing of the [[British Expeditionary Force (World War I)|British Expeditionary Force]], but a lack of success before [[Arras, France|Arras]] ensured the ultimate failure of the offensive. A final effort was aimed at the town of [[Amiens]], a vital railway junction, but the advance had been halted at [[First Battle of Villers-Bretonneux|Villers-Bretonneux]] by British and Australian troops on 4 April. ||| Prelude ||| ||| +0 Battle of Ampfing (1800) ||| Battle of Biberach (1800) ||| On 4 and 5 May, the French launched repeated and fruitless assaults on the Messkirch. At nearby [[Sauldorf|Krumbach]], where the Austrians also had the superiority of position and force, the 1st Demi-brigade took the village and the heights around it, which gave them a commanding aspect over Messkirch. Subsequently, Kray withdrew his forces to [[Sigmaringen]], followed closely by the French. Fighting at nearby [[Battle of Biberach (1800)|Biberach]] ensued on 9 May; action principally consisted of the 25,000 man-strong French center's (commanded by [[Laurent de Gouvion Saint-Cyr]]), assault on the Austrian force. ||| Background ||| ||| +0 Battle of Ampfing (1800) ||| Battle of Hohenlinden ||| Instead of being sobered by their 3,000 casualties, Archduke John and his staff became convinced that the enemy was on the run. The Austrian general ordered a pursuit of the French through forested terrain. But, instead of fleeing, Moreau and his troops were waiting for the Austrians. The two armies met in the decisive [[Battle of Hohenlinden]] two days later. ||| ||| ||| +0 Battle of Ampfing (1800) ||| Battle of Montebello (1800) ||| The loss of Neuburg broke the Austrian control along the strategic Danube. Similarly, in Italy, French successes at the battles at [[Battle of Montebello (1800)|Montebello]] and [[Battle of Marengo|Marengo]] forced Austrian withdrawal to the east. With France threatening Habsburg Austria from the northwest and southwest, the Austrians agreed to a cease fire. Subsequent peace negotiations were complicated by the alliance Austria had made with Britain, and which prevented her from signing any separate peace. Consequently, the British, although they had been successful in blockading French ports, entered the negotiations to bolster their weakened ally. Initially Britain refused the French terms and offered counter terms in September 1800. Negotiations continued; Napoleon later claimed that the Austrians did not negotiate in good faith, and sought only to gain time until 'the rainy season' (winter), when army movements would be difficult, and the Habsburgs would have an entire season to recruit. ||| Background ||| Strategic importance of Danube valley ||| +0 Battle of Ampfing (1800) ||| Battle of Neuburg (1800) ||| In Spring 1800, while Moreau wrecked Austrian defenses in Germany, Generals [[Massena]] and [[Desaix]] ran into stiff Austrian offensives in Northern Italy. In June, Napoleon brought in the reserve corps and defeated the Austrians at [[Battle of Marengo|Marengo]]. On the Danube, the decisive [[Battle of Höchstädt (1800)|Battle of Höchstädt]], followed by success at [[Battle of Neuburg (1800)|Battle of Neuburg]] a few days later, allowed the French to take Munich and to control the Danube and its tributaries as far as [[Ingolstadt]]. With the French pressing on Austria from the north and through Italy, a truce ended hostilities for the rest of the summer. Despite these significant losses—both of them decisive—the Austrians were reluctant to accept disadvantageous peace terms. After the expiration of the summer truce in November 1800, both the Austrian and French armies rushed to come to grips with each other in the terrain east of Munich. The newly appointed commander of Austrian forces, Archduke John, managed to bring the bulk of his army against Grenier's left wing of [[Jean Victor Marie Moreau|Jean Moreau's]] French army near Ampfing. Outnumbered, two French divisions fought a stubborn rear guard action for six hours before retreating in good order. ||| ||| ||| +0 Battle of Amstetten ||| Ulm Campaign ||| The Battle of Amstetten took place during the [[War of the Third Coalition]], which lasted from 1803 to 1806. This battle took place immediately after the Austrian surrender in the [[Ulm Campaign]]. Following the surrender of [[Karl Mack von Leiberich]] in the [[Battle of Ulm]], the Russian forces led by [[Kutuzov]] decided to retreat along the Danube to regroup with other Russian troops. [[Napoleon]] was determined to pin down the Russian army and sent Joachim Murat and Jean Lannes to intercept the retreating Russian army. ||| Background ||| ||| +0 Battle of Antietam ||| Battle of Gettysburg ||| Leading off the fourth attack of the day against the sunken road was the [[Irish Brigade (United States)|Irish Brigade]] of Brig. Gen. Thomas F. Meagher. As they advanced with emerald green flags snapping in the breeze, a regimental chaplain, Father [[William Corby]], rode back and forth across the front of the formation shouting words of conditional [[absolution]] prescribed by the [[Roman Catholic Church]] for those who were about to die. (Corby would later perform a similar service at [[Battle of Gettysburg|Gettysburg]] in 1863.) The mostly [[Irish people|Irish]] immigrants lost 540 men to heavy volleys before they were ordered to withdraw. ||| Battle ||| Midday ||| +0 Battle of Antietam ||| Battle of Harpers Ferry ||| There were two significant engagements in the Maryland campaign prior to the major battle of Antietam: Maj. Gen. [[Stonewall Jackson|Thomas J. 'Stonewall' Jackson's]] capture of [[Battle of Harpers Ferry|Harpers Ferry]] and McClellan's assault through the [[Blue Ridge Mountains]] in the [[Battle of South Mountain]]. The former was significant because a large portion of Lee's army was absent from the start of the battle of Antietam, attending to the surrender of the Union garrison; the latter because stout Confederate defenses at two passes through the mountains delayed McClellan's advance enough for Lee to concentrate the remainder of his army at Sharpsburg. ||| Background and the Maryland Campaign ||| ||| +0 Battle of Ap Bac ||| World War II ||| General [[Paul D. Harkins]], commander of the [[Military Assistance Command, Vietnam]] (MACV), had a far more optimistic assessment of the battle. He considered the operation to be a major success: after the Viet Cong abandoned their positions, the South Vietnamese units captured the hamlets of Ap Bac and Ap Tan Thoi. Harkins' evaluation of the battle's success were based on U.S. [[military doctrine]] from [[World War II]], in which two armies fought a conventional [[combined arms]] battle with the goal to control territory. ||| Aftermath ||| ||| +0 Battle of Appomattox Station ||| Battle of Dinwiddie Court House ||| After an offensive begun on the night of March 28-March 29, 1865 that included the [[Battle of Lewis's Farm]], [[Battle of White Oak Road]] and the [[Battle of Dinwiddie Court House]], Lieutenant General Grant's Union Army group broke the [[Confederate States Army|Confederate]] defenses of [[Siege of Petersburg|Petersburg, Virginia]] at the Battle of Five Forks on April 1 and the Third Battle of Petersburg on April 2. A Union division under the command of [[Brigadier general (United States)|Brigadier General]] [[Nelson A. Miles]] also broke up the last defense of the [[Southside Railroad (Virginia)|South Side Railroad]] at the Battle of Sutherland's Station on the afternoon of April 2, cutting off that railroad as a supply line or route of retreat for the Confederates. General Robert E. Lee's Army of Northern Virginia evacuated Petersburg and the Confederate capital of [[Richmond in the American Civil War|Richmond, Virginia]] on the night of April 2-3 and began a retreat with the intent of reaching [[Danville, Virginia]] and then linking up with General [[Joseph E. Johnston|Joseph E. Johnston's]] army which was attempting to slow the advance the Union army group commanded by [[Major general (United States)|Major General]] [[William Tecumseh Sherman|William T. Sherman]] in [[North Carolina in the American Civil War|North Carolina]]. ||| Background ||| Breakthrough at Petersburg ||| +0 Battle of Appomattox Station ||| Battle of White Oak Road ||| After an offensive begun on the night of March 28-March 29, 1865 that included the [[Battle of Lewis's Farm]], [[Battle of White Oak Road]] and the [[Battle of Dinwiddie Court House]], Lieutenant General Grant's Union Army group broke the [[Confederate States Army|Confederate]] defenses of [[Siege of Petersburg|Petersburg, Virginia]] at the Battle of Five Forks on April 1 and the Third Battle of Petersburg on April 2. A Union division under the command of [[Brigadier general (United States)|Brigadier General]] [[Nelson A. Miles]] also broke up the last defense of the [[Southside Railroad (Virginia)|South Side Railroad]] at the Battle of Sutherland's Station on the afternoon of April 2, cutting off that railroad as a supply line or route of retreat for the Confederates. General Robert E. Lee's Army of Northern Virginia evacuated Petersburg and the Confederate capital of [[Richmond in the American Civil War|Richmond, Virginia]] on the night of April 2-3 and began a retreat with the intent of reaching [[Danville, Virginia]] and then linking up with General [[Joseph E. Johnston|Joseph E. Johnston's]] army which was attempting to slow the advance the Union army group commanded by [[Major general (United States)|Major General]] [[William Tecumseh Sherman|William T. Sherman]] in [[North Carolina in the American Civil War|North Carolina]]. ||| Background ||| Breakthrough at Petersburg ||| +0 Battle of Arcole ||| Battle of Caldiero (1796) ||| Davidovich scored a victory against [[Claude-Henri Belgrand de Vaubois]] at [[Battle of Calliano|Calliano]] and threatened Verona from the north. Meanwhile, Alvinczi repulsed one attack by Bonaparte at [[Second Battle of Bassano|Bassano]] and advanced almost to the gates of Verona where he defeated a second French attack at [[Battle of Caldiero (1796)|Caldiero]]. Leaving Vaubois' battered division to contain Davidovich, Bonaparte massed every available man and tried to turn Alvinczi's left flank by crossing the Adige. For two days the French assaulted the stoutly defended Austrian position at Arcole without success. Their persistent attacks finally forced Alvinczi to withdraw on the third day. ||| ||| ||| +0 Battle of Arcole ||| Battle of Calliano ||| Davidovich scored a victory against [[Claude-Henri Belgrand de Vaubois]] at [[Battle of Calliano|Calliano]] and threatened Verona from the north. Meanwhile, Alvinczi repulsed one attack by Bonaparte at [[Second Battle of Bassano|Bassano]] and advanced almost to the gates of Verona where he defeated a second French attack at [[Battle of Caldiero (1796)|Caldiero]]. Leaving Vaubois' battered division to contain Davidovich, Bonaparte massed every available man and tried to turn Alvinczi's left flank by crossing the Adige. For two days the French assaulted the stoutly defended Austrian position at Arcole without success. Their persistent attacks finally forced Alvinczi to withdraw on the third day. ||| ||| ||| +0 Battle of Ardahan ||| Eastern Front (World War I) ||| The operation was part of what the [[Russian Empire]] viewed the [[Caucasus Campaign|Caucasus front]]. It was a secondary to the [[Eastern Front (World War I)|Eastern front]]. Russia had taken the fortress of [[Kars]] from the Turks during the [[Russo–Turkish War, 1877–1878|Russo-Turkish War]] in 1877 and feared a campaign into the Caucasus, a [[Caucasus Campaign]], aimed at retaking Kars and the port of [[Batum]]. The Ottoman generalship and organization were negligible compared to the Allies. Caucasus Campaign planned to be a distracting effect on Russian forces. Enver hoped a success would facilitate opening the route to [[Tbilisi]] and beyond, with a revolt of [[Peoples of the Caucasus|Caucasian]] Muslims another strategic goal was to cut [[Baku-Batumi pipeline|Russian access]] to its [[Oil industry in Azerbaijan|hydrocarbon resources]] around the [[Caspian Sea]]. This long-term goal made Britain vary. The [[Anglo-Persian Oil Company]] was in the proposed path. ||| Background ||| ||| +0 Battle of Ardahan ||| Persian Campaign ||| The Russian Viceroy and his military advisers had grasped the situation. The Stange Bay made that Russians informed very dearly for every foot of their advance. The Russian diversion to Stange Bay unit meant to be a support element to operations to capture Sarikamish and Kars. Russians needed to be strongly reinforced. At this moment, In December 1914, General Myshlaevsky ordered withdrawal from major Russian units at the [[Persian Campaign]] at the height of the [[Battle of Sarikamish]]. Persia was denuded of Russian soldiers, and large bodies of troops were hurried forward to the front by rail from Kars, Erivan, and Julfa—almost, but not quite, too late. They would have been altogether too late if the 1st Army Corps had been able to make its contemplated descent on Kars, and the first concern of the Viceroy had been to send supports to the gallant regiment which alone had so long withstood the attack of the two divisions of this Corps before and at Ardahan. ||| Battle ||| ||| +0 Battle of Arklow ||| Battle of New Ross (1798) ||| A British advance force of 400 was defeated at [[battle of Tuberneering|Tuberneering]] on 4 June. This rebel victory had punched a hole in the [[dragnet (policing)|dragnet]] the military had attempted to throw around county Wexford and had also yielded them three artillery pieces. The town of Arklow had been evacuated in the ensuing panic but the rebels had contented themselves with taking the town of [[Gorey]] and stayed within the Wexford border. On 5 June the rebels attempted to break out of county Wexford across the river Barrow and to spread the rebellion but were halted by a major British victory at the [[Battle of New Ross (1798)|Battle of New Ross]]. When the rebels finally moved against Arklow, the town had been reoccupied by a force of 1,700 men sent from Dublin under [[Francis Needham, 1st Earl of Kilmorey|Francis Needham]], who quickly fortified the town with barricades and had [[artillery]] positioned on all the approaches to the town. ||| Background ||| ||| +0 Battle of Arklow (1649) ||| Battle of Arklow ||| *[[Battle of Arklow]] -the second battle of Arklow was fought in 1798. ||| See also ||| ||| +0 Battle of Arnhem ||| Gallipoli Campaign ||| Urquhart formulated his withdrawal plan on the successful method used in the evacuation of [[Gallipoli Campaign|Gallipoli]] during the First World War. Men were ordered to muffle their boots and weapons to help them bypass known German incursions into the perimeter. ||| Battle ||| Day 9 – Monday 25 September ||| +0 Battle of Arnhem ||| Operation Doomsday ||| The battle exacted a heavy toll on the 1st Airborne Division from which it would never recover. Three quarters of the formation were missing when it returned to England, including two of the three brigade commanders, eight of the nine battalion commanders and 26 of the 30 infantry company commanders. Between May and August 1945, many of the men were sent to Denmark and Norway to oversee the [[Operation Doomsday|German surrenders there]] ||| Aftermath ||| Allied units ||| +0 Battle of Arnhem ||| Operation Tonga ||| With the [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] still refitting after [[Operation Tonga]], and the subsequent [[6th Airborne Division advance to the River Seine|fighting in Normandy]], the task of securing the Rhine Bridgehead fell to the 1st Airborne Division under the command of [[Major-general (United Kingdom)|Major-General]] [[Roy Urquhart]]. The division was made up of three brigades of infantry (two [[Paratrooper|parachute]], one [[Glider infantry|glider borne]]), supporting [[1st Airlanding Light Regiment|artillery]] and anti-tank batteries and substantial [[Royal Engineers|Royal Engineer]] units, as well as supporting elements such as [[Royal Army Service Corps]] and [[Royal Army Medical Corps]] units. However, this was the first time the division had fought together as a complete formation. ||| Background ||| British plan ||| +0 Battle of Arnhem ||| World War II ||| The '''Battle of Arnhem''' was a famous battle of the [[World War II|Second World War]] fought in and around the Dutch towns of [[Arnhem]], [[Oosterbeek]], [[Wolfheze]], [[Driel]] and the surrounding countryside from 17–26 September 1944. ||| ||| ||| +0 Battle of Arracourt ||| Battle of the Bulge ||| Since the U.S. victory at Arracourt proved to have no strategic value for the Allies, the tank-to-tank action there was long ignored by historians,{{citation needed|date=January 2013}} or simply lumped together with the rest of Patton′s campaign in the Lorraine. It was not generally known as a named battle until later debate on the relative merits of Allied versus German tanks in World War II resurrected interest in the action. Arracourt was the largest tank battle involving U.S. forces on the Western Front until the [[Battle of the Bulge]], and has been used as an example of how tactical situations and crew quality can be far more important factors in determining the outcome of a tank battle than the technical merits of the tanks themselves. ||| Aftermath ||| Summary ||| +0 Battle of Arracourt ||| Operation Market Garden ||| While Patton′s Third Army had succeeded in the early weeks of September in completing a limited advance toward Germany—despite orders to the contrary—the Battle of Arracourt signaled a temporary halt to the U.S. drive in south-eastern France. On 22 September, Patton was informed that his fuel supplies were being restricted and that he would have to shift to a defensive posture. The fuel was required for other U.S. forces and for Field Marshal [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Sir Bernard Montgomery]]′s [[Operation Market Garden]], an attack by the First Allied Airborne Army and British Second Army intended to create a bridgehead over the [[Rhine]] river at [[Arnhem]] outflanking the German defensive line and encircle the key industrial area of the [[Ruhr]]. ||| Aftermath ||| Analysis ||| +0 Battle of Arras (1914) ||| Battle of the Yser ||| The '''Battle of Arras''' (also known as the First Battle of Arras, {{nowrap|1–4 October 1914),}} was an attempt by the [[Military history of France#Modern period|French Army]] to outflank the [[German Army (German Empire)|German Army]], which was attempting to do the same thing during the '[[Race to the Sea]]', a misleading term for reciprocal attempts by both sides, to exploit conditions created during the [[First Battle of the Aisne]].{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} At the First Battle of Picardy {{nowrap|(22–26 September)}} each side had attacked expecting to advance round an open northern flank and found instead that troops had arrived from further south and extended the flank northwards. ||| ||| ||| +0 Battle of Arras (1914) ||| First Battle of the Aisne ||| The '''Battle of Arras''' (also known as the First Battle of Arras, {{nowrap|1–4 October 1914),}} was an attempt by the [[Military history of France#Modern period|French Army]] to outflank the [[German Army (German Empire)|German Army]], which was attempting to do the same thing during the '[[Race to the Sea]]', a misleading term for reciprocal attempts by both sides, to exploit conditions created during the [[First Battle of the Aisne]].{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} At the First Battle of Picardy {{nowrap|(22–26 September)}} each side had attacked expecting to advance round an open northern flank and found instead that troops had arrived from further south and extended the flank northwards. ||| ||| ||| +0 Battle of Arras (1917) ||| Battle of the Somme ||| The British plan was well developed, drawing on the lessons of the [[Battle of the Somme|Somme]] and [[Battle of Verdun|Verdun]] of the previous year. Rather than attacking on an extended front, the full weight of artillery would be concentrated on a relatively narrow stretch of eleven miles, from Vimy Ridge in the north to Neuville Vitasse, four miles south of the Scarpe river. During the assault, the troops would advance in open formation, with units leapfrogging each other in order to allow them time to consolidate and regroup. Before the action could be undertaken, a great deal of preparation was required, much of it innovative. ||| Preliminary phase ||| ||| +0 Battle of Arras (1917) ||| Eastern Front (World War I) ||| Facing the British Empire forces were the [[6th Army (German Empire)|Sixth Army]] under 73-year-old [[Ludwig von Falkenhausen|General von Falkenhausen]] and the [[2nd Army (German Empire)|Second Army]] under General [[Georg von der Marwitz|von der Marwitz]] (who was recovering from an illness he had contracted on the [[Eastern Front (World War I)|Eastern Front]]). The armies had been organised as ''Gruppe Souchez'', ''Gruppe Vimy'' and ''Gruppe Arras'', deployed in that order north to south. ||| Prelude ||| Opposing forces ||| +0 Battle of Arras (1917) ||| Hindenburg Line ||| Although the French and British had intended to launch a spring offensive in 1917, the strategy was threatened in February, when the [[Russia]]ns admitted that they could not meet the commitment to a joint offensive, which reduced the two-front offensive to a French assault along the [[Aisne (river)|Aisne River]]. In March, the German army in the west {{lang|de|(''Westheer'')}}, withdrew to the [[Hindenburg Line|Hindenburg line]] in Operation [[Alberich (World War I German operation)|Alberich]], which negated the tactical assumptions underlying the plans for the French offensive. ||| Prelude ||| Strategic background ||| +0 Battle of Ascalon ||| Siege of Ascalon ||| Although the battle of Ascalon was a crusader victory the city itself remained under Fatimid control, and it was eventually re-garrisoned. It became the base of operations for invasions of the [[Kingdom of Jerusalem]] every year afterwards, and numerous battles were fought there in the following years, until 1153 when it was finally captured by the crusaders in the [[Siege of Ascalon]]. ||| Aftermath ||| ||| +0 Battle of Ascalon ||| Siege of Jerusalem (1099) ||| The '''Battle of Ascalon''' took place on August 12, 1099 shortly after the [[Siege of Jerusalem (1099)|capture of Jerusalem]], and is often considered the last action of the [[First Crusade]]. The crusader army led by [[Godfrey of Bouillon]] defeated and drove off the numerically-superior [[Fatimid Caliphate|Fatimid]] army, securing the safety of [[Kingdom of Jerusalem|Jerusalem]]. ||| ||| ||| +0 Battle of Ashdown ||| Battle of Alma ||| 'And now we leave the camp, and descend towards the west, and are on the Ashdown. We are treading on heroes. It is sacred ground for Englishmen—more sacred than all but one or two fields where their bones lie whitening. For this is the actual place where our Alfred won his great battle, the battle of Ashdown ('Aescendum' in the chroniclers), which broke the Danish power, and made England a Christian land. The Danes held the camp and the slope where we are standing—the whole crown of the hill, in fact. 'The heathen had beforehand seized the higher ground,' as old [[Asser]] says, having wasted everything behind them from [[London]], and being just ready to burst down on the fair Vale, Alfred's own birthplace and heritage. And up the heights came the Saxons, as they did at the [[Battle of Alma|Alma]]. 'The Christians led up their line from the lower ground. There stood also on that same spot a single thorn-tree, marvellous stumpy (which we ourselves with our very own eyes have seen).' Bless the old chronicler! Does he think nobody ever saw the 'single thorn-tree' but himself? Why, there it stands to this very day, just on the edge of the slope, and I saw it not three weeks since—an old single thorn-tree, 'marvellous stumpy.' At least, if it isn't the same tree it ought to have been, for its just in the place where the battle must have been won or lost—'around which, as I was saying, the two lines of foemen came together in battle with a huge shout. And in this place one of the two kings of the heathen and five of his earls fell down and died, and many thousands of the heathen side in the same place. After which crowning mercy, the pious king, that there might never be wanting a sign and a memorial to the country-side, carved out on the northern side of the chalk hill, under the camp, where it is almost precipitous, the great Saxon White Horse, which he who will may see from the railway, and which gives its name to the Vale, over which it has looked these thousand years and more.' ||| The battle in fiction ||| ||| +0 Battle of Asiago ||| Eastern Front (World War I) ||| The preparations for the battle began in December 1915, when [[Conrad von Hötzendorf]] proposed to his German opposite number, General [[Erich von Falkenhayn]], shifting divisions from the [[Eastern Front (World War I)|Eastern Front]] in [[Galicia (Central Europe)|Galicia]] to the Tyrol, substituting them with German divisions. His request was denied because Germany was not yet at war with Italy (which would declare war on Germany three months later), and because redeploying German units on the Italian Front would have diminished German offensive capability against Russia. ||| Background ||| ||| +0 Battle of Aspern-Essling ||| Battle of Wagram ||| At the time of the battle Napoleon was in possession of [[Vienna]], the bridges over the [[Danube]] had been broken, and the Archduke's army was near the [[Bisamberg]], a hill near [[Korneuburg]], on the left bank of the river. The French wanted to cross the Danube. A first crossing attempt on the Schwarze Lackenau on 13 May was repulsed with some 700 French losses. [[Lobau]], one of the numerous islands that divided the river into minor channels, was selected as the next point of crossing. Careful preparations were made, and on the night of 19–20 May the French bridged all the channels on the right bank to Lobau and occupied the island. By the evening of the 20th many men had been collected there and the last arm of the Danube, between Lobau and the left bank, bridged. [[André Masséna|Masséna]]'s corps at once crossed to the left bank and dislodged the Austrian outposts. Undeterred by the news of heavy attacks on his rear from [[County of Tyrol|Tyrol]] and from [[Bohemia]], Napoleon ferried all available troops to the bridges, and by daybreak on the 21st, 40,000 men were collected on the Marchfeld, the broad plain of the left bank, which was also to be the scene of the [[Battle of Wagram]]. ||| Background ||| ||| +0 Battle of Atlanta ||| United States presidential election, 1864 ||| The fall of Atlanta was especially noteworthy for its political ramifications. In the [[United States presidential election, 1864|1864 election]], former Union general [[George B. McClellan]], a [[United States Democratic Party|Democrat]], ran against [[Abraham Lincoln|President Lincoln]], on a peace platform calling for a truce with the Confederacy. The capture of Atlanta and Hood's burning of military facilities as he evacuated, were extensively covered by Northern newspapers, significantly boosting Northern morale, and Lincoln was reelected by a large margin. ||| ||| ||| +0 Battle of Attu ||| Attack on Pearl Harbor ||| On 7 June 1942, six months after the United States [[Attack on Pearl Harbor|entered World War II]], the 301st Independent Infantry Battalion from the [[Northern District Army (Japan)|Japanese Northern Army]] landed unopposed on Attu. The landings occurred one day after the invasion of nearby [[Kiska]]. The U.S military now feared both islands could be turned into strategic Japanese airbases from which aerial attacks could be launched against the [[West Coast of the United States|West Coast]] of North America. ||| Background ||| ||| +0 Battle of Attu ||| Operation Vengeance ||| The loss of Attu and the evacuation of Kiska came shortly after the death of Admiral [[Isoroku Yamamoto]], who was killed by an American plane in [[Operation Vengeance]]. These defeats compounded the demoralizing effect of losing Yamamoto on the Japanese High Command. ||| Aftermath ||| ||| +0 Battle of Avesnes-le-Sec ||| Flanders Campaign ||| The '''Battle of Avesnes-le-Sec''' was a military action during the [[Flanders Campaign]] of the [[French Revolutionary Wars]], between [[Republican France|French]] forces under General Nicolas Declaye, and Imperial [[Austria]]n forces under [[Johann I Joseph, Prince of Liechtenstein|Johann I]] of [[Liechtenstein]] and [[Count Heinrich von Bellegarde]]. The Austrian cavalrymen made an overwhelming charge against the French and severely defeated them. ||| ||| ||| +0 Battle of Avesnes-le-Sec ||| French Revolution ||| In the year 1789, French uprisings to destroy the [[Early modern France|French Government]] under [[Louis XVI]]. The rebel French [[Storming of the Bastille|stormed the Bastille in Paris]], starting the [[French Revolution]]. The French Rebels besieged the Bastille, and it fell to rebel hands on the same day, July 14. Louis fled the capitol, and begged for support from other European countries. In late 1792, the [[First French Republic]] declared war on the [[Holy Roman Empire]] and [[Prussia]]. ||| Background ||| ||| +0 Battle of Avesnes-le-Sec ||| Storming of the Bastille ||| In the year 1789, French uprisings to destroy the [[Early modern France|French Government]] under [[Louis XVI]]. The rebel French [[Storming of the Bastille|stormed the Bastille in Paris]], starting the [[French Revolution]]. The French Rebels besieged the Bastille, and it fell to rebel hands on the same day, July 14. Louis fled the capitol, and begged for support from other European countries. In late 1792, the [[First French Republic]] declared war on the [[Holy Roman Empire]] and [[Prussia]]. ||| Background ||| ||| +0 Battle of Ba Gia ||| Battle of Binh Gia ||| Following the victory of Communist forces in the [[Battle of Binh Gia]] earlier in the year, the North Vietnamese leadership in [[Hanoi]] decided to intensify their war effort in order to defeat the American-backed Government of South Vietnam. The North Vietnamese war effort received a major boost in the first half of 1965, when the [[Soviet Union]] and the [[People's Republic of China]] stepped up the delivery of military aid, which included the deployment of military specialists and other personnel to train North Vietnam's armed forces. The North Vietnamese decision to intensify the war culminated in the Summer Offensive of 1965, which aimed to destroy the regular divisions of the [[Army of the Republic of Vietnam]] (ARVN) in large-scale battles, and pin down the elite units of the ARVN strategic reserve. In Quảng Ngãi Province, South Vietnam, the National Liberation Front (commonly known as the Viet Cong) kick-started their summer campaign by attacking elements of the ARVN 51st Infantry Regiment during the early hours of May 29, 1965. In the days that followed, the National Liberation Front destroyed an entire ARVN Task Force to mark a successful start to their summer campaign. ||| ||| ||| +0 Battle of Ba Gia ||| Operation Flaming Dart ||| Prior to the NLF Summer Offensive of 1965, Quang Ngai and the surrounding provinces had witnessed a substantial increase in NLF military activities. On February 6, 1965, the Viet Cong 409th Sapper Battalion attacked the U.S airbase at [[Pleiku]], injuring more than a hundred American personnel and damaging about 20 aircraft. The United States retaliated by launching [[Operation Flaming Dart]], bombing selected targets in North Vietnam. On May 28, local Viet Cong units in Nui Thanh attacked a company of U.S. Marines, and 180 U.S. soldiers were killed or wounded as a result. ||| Prelude ||| ||| +0 Battle of Badli-ki-Serai ||| Crimean War ||| General Anson had died of [[cholera]] at Karnal on 27 May. He was succeeded by Major-General [[Henry William Barnard|Sir Henry Barnard]], who had recently fought in the [[Crimean War]]. Barnard's force advanced to join with Wilson's at Alipur (north-west of Delhi) on 1 June. The combined force advanced along the [[Grand Trunk Road|Grand Trunk road]] towards Delhi. ||| The battle ||| ||| +0 Battle of Badr ||| Operation Badr (1973) ||| 'Badr' has become popular among Muslim armies and paramilitary organizations. '[[Operation Badr (1973)|Operation Badr]]' was used to describe [[Egypt]]'s offensive in the 1973 [[Yom Kippur War]] as well as [[Pakistan]]'s actions in the 1999 [[Kargil War]]. [[Operation Badr (1985)|Iranian offensive operations]] against Iraq in the late 1980s were also named after Badr. ||| In modern culture ||| ||| +0 Battle of Baguio (1945) ||| Philippine resistance against Japan ||| Between late February and early April 1945, the Allied forces, primarily consisting of the United States Army's [[33rd Infantry Division (United States)|33rd Infantry Division]], with assistance from regiments of the [[Philippine resistance against Japan|Philippine guerrilla]] force [[United States Army Forces in the Philippines – Northern Luzon]], advanced towards Baguio. ||| Campaign ||| ||| +0 Battle of Baiji (October–December 2014) ||| Sinjar massacre ||| *[[Sinjar massacre]] ||| See also ||| ||| +0 Battle of Bajaur ||| Islamabad Marriott Hotel bombing ||| According to several sources, the 20 September [[Islamabad Marriott Hotel bombing]] may have been carried out in retaliation for the military offensive in Bajaur. ||| Operation Sherdil ||| ||| +0 Battle of Bajaur (1519) ||| Battle of Ghazdewan ||| From 1515-1519, [[Babur|Zahir ud-Din Muhammad Babur]] enjoyed a relatively calm period when he returned to [[Kabul]] in the aftermath of his defeat at the [[Battle of Ghazdewan]] and loss of [[Transoxiana]] to the [[Uzbeks]]. ||| ||| ||| +0 Battle of Bakhmach ||| Battle of Zborov (1917) ||| Similarly to [[Battle of Zborov (1917)|Battle of Zborov]] or the '[[Czechoslovak Legions#The Siberian anabasis|Siberian anabasis]]', the battle of Bakhmach became one of the symbols of the Czechoslovakian Legions and their fight for independence. ||| Battle ||| ||| +0 Battle of Baltim ||| Battle of Latakia ||| On October 8, the third day of the war, the [[Israel Defense Forces]] launched a counterattack in the [[Sinai]] in an attempt to push the [[Egyptian Army]] back across the [[Suez Canal]]. Israeli naval command expected ground pressure on [[Port Said]] to prompt a withdrawal of Egyptian naval assets from the local harbor to [[Alexandria]], {{convert|180|km|mi}} to the west. A flotilla of Israeli missile boats was therefore ordered to proceed to Port Said. The boats, having just arrived back in [[Haifa]] after the [[Battle of Latakia]], had not yet completed refueling. Nevertheless, within twenty-five minutes eight boats were heading south at thirty knots. These arrived off Port Said five hours later, meeting Commander Michael Barkai who was already on station with two boats. By that time, the counterattack in the Sinai had failed and the Egyptian boats did not leave the port. ||| Background ||| ||| +0 Battle of Ban Me Thuot ||| 1975 Spring Offensive ||| In March 1975 the [[Vietnam People's Army]] (VPA) 4th Corps staged a large-scale offensive, known as [[Vietnam War#Campaign 275|Campaign 275]], with the aim of capturing the Central Highlands from the [[Army of the Republic of Vietnam]] (ARVN) in order to kick-start the first stage of the [[1975 Spring Offensive]]. Within ten days, the North Vietnamese destroyed most South Vietnamese military formations in II Corps Tactical Zone, exposing the severe weaknesses of the South Vietnamese Army. For South Vietnam, the defeat at Ban Me Thuot and the disastrous evacuation from the Central Highlands came about as a result of two major mistakes. Firstly, in the days leading up to the assault on Ban Me Thuot, ARVN Major General [[Pham Van Phu]] repeatedly ignored intelligence which showed the presence of several North Vietnamese combat divisions around the district. ||| ||| ||| +0 Battle of Ban Me Thuot ||| First Indochina War ||| During the [[First Indochina War]] (1945 to 1954), both [[Viet Minh]] and French forces considered the Central Highlands to be their ‘home', as it was considered the key to domination in [[Indochina]]. Both sides recognised that in order to occupy the Central Highlands, they had to possess a sufficient reserve of manpower with which to control the strategic areas within the region. By 1975, the South Vietnamese military could no longer afford to maintain a large strategic reserve. ||| Aftermath ||| South Vietnamese mistakes ||| +0 Battle of Baqubah ||| Operation Phantom Strike ||| In August 2007, [[Operation Phantom Strike]] was launched throughout northern Iraq in order to capitalize on the gains made during Operation Phantom Thunder. As part of this offensive, [[Operation Lightning Hammer]] was launched to the northeast of Baqubah. ||| ||| ||| +0 Battle of Baqubah ||| Operation Phantom Thunder ||| In early June Lt. Colonel Antonia's request for assistance was answered. The 3/2 Brigade Command Staff and the Regular's sister Battalion the 1st Battalion 23rd infantry,Tomahawks, arrived. In June 2007 US and Iraqi forces launched a major offensive operation throughout Iraq codenamed [[Operation Phantom Thunder]] designed to secure the [[Baghdad Belts]]. As part of this offensive, Multinational Division North launched Operation Arrowhead Ripper in Diyala province. The [[2nd Infantry Division (United States)#Subunits|3rd Stryker Brigade Combat Team]], [[2nd Infantry Division (United States)|2nd Infantry Division]] along with members of the 2-505th 82nd Airborne Division, launched the offensive with a quick-strike night-time air assault early on 18 June 2007. By daylight, attack helicopters and ground forces had engaged and killed an estimated 22+ insurgents in and around [[Baqubah]]. In the early morning hours one soldier, from A co 1-12 CAV, was killed when his Bradley fighting vehicle was struck by a large deep buried mine just outside of an abandoned clinic on the Southwestern edge of the city. In all 30 insurgents and one U.S. soldier were killed by the end of the first day of the operation, according to military sources. ||| Timeline ||| Operation Arrowhead Ripper ||| +0 Battle of Bardia ||| Battle of France ||| Italy's position in the centre of the Mediterranean made it unacceptably hazardous to send ships from Britain to Egypt via that route, so British reinforcements and supplies for the area had to travel around the [[Cape of Good Hope]]. For this reason, it was more convenient to reinforce [[General (United Kingdom)|General]] [[Archibald Wavell, 1st Earl Wavell|Sir Archibald Wavell]]'s [[Middle East Command]] with troops from Australia, New Zealand and [[British Raj|India]]. Nonetheless, even when Britain was [[Operation Sealion|threatened with invasion]] after the [[Battle of France]] and equipment was urgently required to re-equip the [[British Expeditionary Force (World War II)|British Expeditionary Force]] after its losses in the [[Dunkirk evacuation]], troops and supplies were still despatched to the Middle East Command. A convoy that departed the United Kingdom in August 1940 brought guns, stores, ammunition, and three [[Armoured regiment (United Kingdom)|armoured regiments]], including the [[7th Royal Tank Regiment]], equipped with [[Matilda II (tank)|Matilda II tanks]]. ||| Background ||| Italian invasion of Egypt ||| +0 Battle of Bardia ||| Hindenburg Line ||| At a meeting with Mackay on Christmas Eve, 1940, O'Connor visited Mackay at 6th Division headquarters and directed him to prepare an attack on Bardia. O'Connor recommended that this be built around the 23 Matilda tanks of Lieutenant Colonel R. M. Jerrram's 7th Royal Tank Regiment that remained in working order. The attack was to be made with only two brigades, leaving the third for a subsequent advance on Tobruk. Mackay did not share O'Connor's optimism about the prospect of an easy victory and proceeded on the assumption that Bardia would be resolutely held, requiring a well-planned attack similar to that required to breach the [[Hindenburg Line]] in 1918. ||| Planning and preparation ||| Allied ||| +0 Battle of Bardia ||| Operation Sonnenblume ||| The victory at Bardia enabled the [[Allies of World War II|Allied]] forces to continue the advance into Libya and ultimately capture almost all of [[Cyrenaica]]. In turn this would lead to [[Operation Sonnenblume|German intervention]] in the fighting in North Africa, changing the nature of the war in that theatre. Bardia boosted the competence and reputation of the Australian Army. Perhaps most important of all, it raised confidence in the possibility of an ultimate Allied victory around the world, which led to the [[Lend-Lease]] Act being passed in the United States. ||| ||| ||| +0 Battle of Barnaul (1918) ||| October Revolution ||| Soon after the [[October Revolution]] of 1917 there began a [[Revolt of the Czechoslovak Legion]]. Czechoslovaks wanted to capture the [[Trans-Siberian railway]] for providing the safe passage for themselves. At the same time as the Czechs moved in, Russian officers' organizations overthrew the [[Bolshevik]]s in [[Petropavl]]ovsk and [[Omsk]]. ||| Background ||| ||| +0 Battle of Barnet ||| Battle of Tewkesbury ||| The '''Battle of Barnet''' was a decisive engagement in the [[Wars of the Roses]], a dynastic conflict of [[England in the Middle Ages|15th-century England]]. The military action, along with the subsequent [[Battle of Tewkesbury]], secured the throne for [[Edward IV of England|Edward IV]]. On 14 April 1471 near [[Chipping Barnet|Barnet]], then a small Hertfordshire town north of London, Edward led the [[House of York]] in a fight against the [[House of Lancaster]], which backed [[Henry VI of England|Henry VI]] for the throne. Leading the Lancastrian army was [[Richard Neville, 16th Earl of Warwick]], who played a crucial role in the fate of each king. Historians regard the battle as one of the most important clashes in the Wars of the Roses, since it brought about a decisive turn in the fortunes of the two houses. Edward's victory was followed by fourteen years of Yorkist rule over England. ||| ||| ||| +0 Battle of Basra (2003) ||| Gulf War ||| The city was a major target during the [[Iran-Iraq war]] of the 1980s and was bombed by the US in the 1991 [[Gulf War]]. ||| Background ||| ||| +0 Battle of Basra (2003) ||| Highway of Death ||| US and UK forces entered Iraq from Kuwait on 19 March, approaching Basra on the road that had become notorious as the “[[Highway of Death]]” during the Gulf War. ||| A new war ||| Approach ||| +0 Battle of Basra (2008) ||| Operation Sinbad ||| In late September 2006, British forces launched [[Operation Sinbad]], a six month operation originally intended to purge militia from the [[Iraqi police]] but eventually targeted the militias ||| Background ||| ||| +0 Battle of Bassignana (1799) ||| Battle of Cassano (1799) ||| The Austrian victory over the French at [[Battle of Magnano|Magnano]] and [[Alexander Suvorov]]'s Austro-Russian triumph over Moreau at [[Battle of Cassano (1799)|Cassano]] allowed the capture of [[Milan]] and other northern Italian cities. Suvorov ordered his lieutenant Rosenberg to join him on the south bank of the Po below its confluence with the Tanaro. Probably overruled by the Tsar's son [[Grand Duke Constantine Pavlovich of Russia|Grand Duke Constantine]], Rosenberg unwisely crossed above the confluence with the Tanaro. Two of Moreau's divisions under [[Paul Grenier]] and [[Claude Victor-Perrin]] soon counterattacked and defeated the Russians. The Bassignana action was only a minor setback for the Allies. After another clash with the French, Suvorov's army marched up the north bank of the Po to seize [[Turin]]. ||| ||| ||| +0 Battle of Bassignana (1799) ||| War of the Second Coalition ||| The '''Battle of Bassignana''' (12 May 1799) saw an [[Russian Empire|Imperial Russian]] army led by [[Andrei Grigorevich Rosenberg]] attempt to establish a bridgehead on the south bank of the [[Po (river)|Po River]] in the presence of a [[First French Republic|Republican French]] army under [[Jean Victor Marie Moreau]]. The French rapidly massed superior strength and forced the Russians to abandon their foothold with serious losses. The [[War of the Second Coalition]] action occurred near the town of [[Bassignana]], located in the angle between the Po and [[Tanaro]] Rivers, about {{convert|19|km|mi|0}} northeast of [[Alessandria]], [[Italy]]. ||| ||| ||| +0 Battle of Bassignano ||| Battle of Piacenza ||| The [[Battle of Piacenza]] in the following year turned back the French and the Spanish and erased the effects of Bassignano. ||| ||| ||| +0 Battle of Bataan ||| American Civil War ||| The '''Battle of Bataan''', fought 7 January – 9 April 1942, represented the most intense phase of [[Empire of Japan|Imperial Japan's]] [[Battle of the Philippines (1941–42)|invasion of the Philippines]] during [[World War II]]. In January 1942, forces of the [[Imperial Japanese Army]] and [[Imperial Japanese Navy|Navy]] invaded [[Luzon]] along with several islands in the Philippine Archipelago after the [[Attack on Pearl Harbor|bombing of the American naval base at Pearl Harbor]]. The commander-in-chief of all Filipino and American forces in the islands, General [[Douglas MacArthur]], consolidated all of his Luzon-based units on the [[Bataan]] Peninsula to fight against the Japanese invaders. By this time, the Japanese controlled nearly all of Southeast Asia. The [[Bataan]] peninsula and the island of [[Corregidor]] were the only remaining Allied strongholds in the region. Despite a lack of supplies, Filipino (many were U.S. Nationals) and American forces managed to fight the Japanese for three months, engaging them initially in a fighting retreat southward. As the combined Filipino and American forces made a last stand, the delay cost the Japanese valuable time and prohibited immediate victory across the Pacific. The surrender at Bataan was the largest in [[Military history of the United States|American]] and [[Military history of the Philippines|Filipino military histories]], and was the largest United States surrender since the [[American Civil War]]'s [[Battle of Harpers Ferry|Battle of Harper's Ferry]]. ||| ||| ||| +0 Battle of Bataan ||| Battle of Bataan (1945) ||| After more than two years of fighting in the Pacific, General [[Douglas MacArthur]] initiated [[Philippines Campaign (1944–45)|the Campaign for the Liberation of the Philippines]], fulfilling his promise to return to the country he had left in 1942. As part of the campaign, the [[Battle of Bataan (1945)|Battle for the recapture of Bataan]] (31 January to 21 February 1945) by U.S. forces and Philippine guerillas avenged the surrender of the defunct [[USAFFE|United States Armed Forces in the Far East]] (USAFFE) to invading Japanese forces. ||| Aftermath ||| ||| +0 Battle of Bataan (1945) ||| Battle of Bataan ||| The [[Bataan]] peninsula's recapture also [[Battle of Bataan|avenged the surrender]] of the defunct [[USAFFE|United States Armed Forces in the Far East]] (USAFFE) to invading Japanese forces in 9 April 1942. ||| ||| ||| +0 Battle of Bataan (1945) ||| Battle of Leyte ||| General [[Douglas MacArthur]] bestowed on Lieutenant General [[Walter Krueger]]'s Sixth Army, the task to seize Bataan, and later [[Corregidor]]. The US XI Corps, fresh from the [[Battle of Leyte|Leyte Campaign]], under Major General Charles P. Hall, augmented Sixth Army. Comprising the [[38th Infantry Division (United States)|38th Infantry Division]] commanded by Maj. Gen. Henry L.L. Jones and [[Aubrey Newman|Colonel Aubrey 'Red' S. Newman's]] 34th Infantry, [[24th Infantry Division (United States)|24th Infantry Division]], the XI Corps was to land on the [[Zambales]] coast some twenty-five miles (40 km) northwest of Bataan, drive rapidly east across the base of the peninsula, and then sweep south, clearing Bataan, including its eastern coast. ||| Background ||| ||| +0 Battle of Batih ||| Deluge (history) ||| The Battle of Batih destroyed many of the best Polish-Lithuanian units. Although Poland managed to rebuild her army soon after the battle, the loss of the most experienced troops resulted in temporary weakness in Ukraine. Defeat of the Poles contributed to the wars to come with Russia, which in turn resulted in the '[[Deluge (history)|Deluge]]' of the country by Swedish armies. ||| ||| ||| +0 Battle of Baton Rouge (1862) ||| Siege of Port Hudson ||| The colonel led a retreat back to prepared defensive lines near the Penitentiary, under the protection of the Union warships. The Confederate troops began coming under fire from the gunboats. The Confederate ram Arkansas arrived not long after but her engines failed just four miles above the city. Her commander ordered her set afire to prevent her capture. Without any prospect of naval support, Breckenridge was unable to attack the Union positions and withdrew. Union troops evacuated the city a week later, concerned for the safety of New Orleans, but returned that autumn. Confederates occupied [[Siege of Port Hudson|Port Hudson]], which they held for almost another year. ||| Battle ||| ||| +0 Battle of Bautzen ||| Battle of Bautzen (1945) ||| :''For the World War II battle, see [[Battle of Bautzen (1945)]]'' ||| ||| ||| +0 Battle of Bautzen (1945) ||| Battle of Berlin ||| The battle took place during [[Ivan Konev]]'s [[1st Ukrainian Front]]'s push toward Berlin, which was part of the larger Soviet [[Battle of Berlin|Berlin Offensive]]. The battle was fought in the town of [[Bautzen]] ({{lang-pl|Budziszyn}}) and the rural areas to the northeast situated primarily along the Bautzen–[[Niesky]] line. Major combat began on 21 April 1945 and continued until 26 April although isolated engagements continued to take place until 30 April. The Polish Second Army under [[Karol Świerczewski]] suffered heavy losses, but, with the aid of Soviet reinforcements, prevented the German forces from breaking through to their rear. According to one historian, the Battle of Bautzen was one of the [[Polish Army]]'s bloodiest battles. ||| ||| ||| +0 Battle of Baykand ||| Day of Thirst ||| The '''Battle of Baykand''' was fought in 729 between the [[Turkic peoples|Turkic]] [[Turgesh]] [[khagan]]ate and its [[Soghdia]]n allies and the Arabs of the [[Umayyad Caliphate]] at Baykand, a town near [[Bukhara]] in [[Transoxiana]] (in modern [[Uzbekistan]]). The Arab army, under the governor of [[Khurasan]] [[Ashras ibn Abdallah al-Sulami]], campaigned across the [[Oxus River]] to suppress a large-scale rebellion of the subject Soghdian princes, that had broken out the previous year and received Turgesh support. As the Arab army advanced on Bukhara, it was encircled by the Turgesh and cut off from water. A series of engagements followed that almost ended in a disaster for the Arabs like the '[[Day of Thirst]]' five years earlier, but in the end, through the inspirational bravery of a few Arab leaders and the actions of the vanguard under [[al-Harith ibn Surayj]] and [[Qatan ibn Qutayba]], the Arabs broke through and reached Bukhara, which they laid siege to. ||| ||| ||| +0 Battle of Beaumont (1794) ||| Flanders Campaign ||| The '''Battle of Beaumont-en-Cambresis''' 26 April 1794 (sometimes referred to as the '''Battle of Coteau''', or in France the '''Battle of Troisvilles''') was an action forming part of a multi-pronged attempt to relieve the besieged fortress of [[Siege of Landrecies (1794)|Landrecies]], during the [[Flanders Campaign]] of the [[French Revolutionary War]]. The British and Austrians under the [[Prince Frederick, Duke of York and Albany|Duke of York]] defeated a French advance northwards from [[Cambrai]] commanded by [[René-Bernard Chapuy|René Chapuis]]. ||| ||| ||| +0 Battle of Beaver Dams ||| Battle of Fort George ||| On 25 May 1813, the Americans had won the [[Battle of Fort George]], capturing the fort. The British fell back to a position at [[Burlington, Ontario|Burlington Heights]] near the western end of [[Lake Ontario]], briefly abandoning the entire [[Niagara Peninsula]] to the Americans. The Americans attempted to pursue the British, but their advance was checked at the [[Battle of Stoney Creek]] by a British counter-attack. At the same time, the American flotilla of warships which had been supporting their army on the Niagara Peninsula was hastily withdrawn to face a threat to their own base, and a British flotilla threatened the Americans' line of communications. The Americans fell back to Fort George. The British followed up and established an outpost at DeCou's house in the present-day city of [[Thorold, Ontario]], from which Natives and militia harassed American outposts. ||| Background ||| ||| +0 Battle of Beaver Dams ||| Battle of Stoney Creek ||| On 25 May 1813, the Americans had won the [[Battle of Fort George]], capturing the fort. The British fell back to a position at [[Burlington, Ontario|Burlington Heights]] near the western end of [[Lake Ontario]], briefly abandoning the entire [[Niagara Peninsula]] to the Americans. The Americans attempted to pursue the British, but their advance was checked at the [[Battle of Stoney Creek]] by a British counter-attack. At the same time, the American flotilla of warships which had been supporting their army on the Niagara Peninsula was hastily withdrawn to face a threat to their own base, and a British flotilla threatened the Americans' line of communications. The Americans fell back to Fort George. The British followed up and established an outpost at DeCou's house in the present-day city of [[Thorold, Ontario]], from which Natives and militia harassed American outposts. ||| Background ||| ||| +0 Battle of Beersheba (1917) ||| Western Front (World War I) ||| After the EEF defeats at the [[First Battle of Gaza|first]] and [[Second Battle of Gaza|second battles of Gaza]] in March and April 1917, the victorious [[German Empire|German]] [[General (Germany)|General]] [[Friedrich Freiherr Kress von Kressenstein]] (commander of the three divisions of the [[Fourth Army (Ottoman Empire)|Fourth Army]]) further strengthened his defensive line stretching from Gaza to Beersheba, and received reinforcements of two divisions. Meanwhile, [[Lieutenant General]] [[Philip Chetwode]] (commanding the EEF's Eastern Force) began the [[Stalemate in Southern Palestine]], defending more-or-less the same entrenched lines held at the end of the second battle, initiated regular mounted reconnaissance into the open eastern flank of the Gaza to Beersheba line, towards Beersheba. In June the Ottoman Fourth Army was reorganised when the new Yildirim Army Group was established, commanded by German General [[Erich von Falkenhayn]]. At about the same time, the [[British Empire|British]] [[General (United Kingdom)|General]] [[Edmund Allenby]] replaced General [[Archibald Murray]] as commander of the EEF. Allenby reorganised the EEF to give him direct command of three corps, in the process deactivating Chetwode's Eastern Force and placing him in command of one of the two infantry corps. At the same time Chauvel's [[Desert Column]] was renamed the Desert Mounted Corps. As the stalemate continued through the summer in difficult conditions on the northern edge of the [[Negev]] Desert, EEF reinforcements began to strengthen the divisions (which had suffered more than 10,000 casualties during the two battles for Gaza). While the primary functions of the EEF and the [[Ottoman Army]] during this time were to man the front lines and patrol the open eastern flank, both sides conducted training of all units. By mid-October, while the [[battle of Passchendaele]] continued on the [[Western Front (World War I)|Western Front]], the [[XXI Corps (United Kingdom)|XXI Corps]] maintained the defences in the Gaza sector of the line. Further, Allenby's preparations for the [[manoeuvre warfare]] attacks on the Ottoman defensive line, beginning with Beersheba, and the subsequent advance to [[Jerusalem]], were nearing completion with the arrival of the last reinforcements. ||| ||| ||| +0 Battle of Beiping–Tianjin ||| Battle of Taierzhuang ||| With the fall of Beiping and Tianjin, the [[North China Plain]] was helpless against the Japanese divisions which occupied it by the end of the year. The Chinese [[National Revolutionary Army]] was in constant retreat until the hard fought [[Battle of Taierzhuang]]. ||| Aftermath ||| ||| +0 Battle of Beirut (1941) ||| Battle of Damascus (1941) ||| On 8 July, even before the fall of [[Battle of Damour|Damour]], the [[Vichy French]] commander—General [[Henri Dentz]]—had sought an armistice: the advance on [[Beirut]] together with the Allied capture of [[Battle of Damascus (1941)|Damascus]] in late June and the rapid advance of Allied troops into [[Syria]] from [[Iraq]] in early July to capture [[Battle of Deir ez Zor|Deir ez Zor]] and then push on towards [[Aleppo]] had made the Vichy position untenable. ||| ||| ||| +0 Battle of Belchite (1937) ||| Battle of Brunete ||| Although the Republicans gained some initial success and managed to push the front line ten kilometres deeper into Nationalist territory, both of the main objectives of the offensive failed. The Nationalists did not postpone their big offensive in the north, as they had done before the [[Battle of Brunete]], and the attempt to capture Zaragoza failed. ||| Aftermath ||| ||| +0 Battle of Belgium ||| Battle of France ||| The '''Battle of Belgium''' or '''Belgian Campaign''',{{sfn|Belgian American Educational Foundation|1941}} often referred to within Belgium as the '''18 Days' Campaign''' ({{lang-fr|Campagne des 18 jours}}, {{lang-nl|Achttiendaagse Veldtocht}}), formed part of the greater [[Battle of France]], an offensive campaign by [[Nazi Germany|Germany]] during the [[World War II|Second World War]]. It took place over 18 days in May 1940 and ended with the German occupation of Belgium following the surrender of the [[Belgian Army]]. ||| ||| ||| +0 Battle of Belgium ||| Battle of Sedan (1940) ||| Although suffering numerous tactical reverses, operationally the Germans diverted the Allied First Army Group from the lower Ardennes area. In the process his forces, along with the ''Luftwaffe'' depleted Prioux' Cavalry Corps. When news of the German breakthrough at [[Battle of Sedan (1940)|Sedan]] reached Prioux, he withdrew from Gembloux. With the Gembloux gap breached, the German Panzer Corps, the 3rd and 4th Panzer Divisions, were no longer required by Army Group B and were handed over to Army Group A. Army Group B would continue its own offensive to force the collapse of the Meuse front. The Army Group was in a position to advance westward to [[Mons]], outflank the BEF and Belgian Army protecting the Dyle–Brussels sector, or turn south to outflank the French 9th Army. ||| Battle ||| 12–14 May: Battles of the central Belgian plain ||| +0 Battle of Belgium ||| Battle of the Yser ||| Just as they did [[Battle of the Yser|in 1914 on the Yser]], so now the French and British troops are counting on you: the safety and honour of the country are in your hands. ||| Battle ||| 12–14 May: Battles of the central Belgian plain ||| +0 Battle of Benburb ||| Irish Rebellion of 1641 ||| The Scots had landed an army in [[Ulster]] in 1642, to protect the Scottish settlers there from the [[wiktionary:massacre|massacres]] that followed the [[Irish Rebellion of 1641]]. They also hoped to conquer the country, to destroy [[Catholicism]] there and impose [[Presbyterianism]] as the state religion. They landed at [[Carrickfergus]] and linked up with an army of [[British Empire|British]] settlers based around [[Derry]] who were led by Robert Stewart. They cleared Ulster of Irish rebels by 1643, but were unable to advance south of '''mid-Ulster''', which was held by [[Owen Roe O'Neill]], the general of the [[Confederate Ireland|Irish Confederate]] Ulster army. Both sides robbed and killed civilians in territory controlled by their enemy, so that by 1646, a sort of [[no man's land]] of [[scorched earth]] separated the opposing sides. O'Neill remarked of the devastation that Ulster looked, 'not only like a desert, but like hell'. While the three armies continued to raid into each other's territory, none of them could organise enough supplies to hold any captured territory. ||| Background ||| ||| +0 Battle of Berlin ||| Battle of the Seelow Heights ||| The first defensive preparations at the outskirts of Berlin were made on 20 March, when the newly appointed commander of [[Army Group Vistula]], General [[Gotthard Heinrici]], correctly anticipated that the main Soviet thrust would be made over the [[Oder River]]. Before the main battle in Berlin commenced, the Soviets managed to encircle the city as a result of their success in the battles of the [[Battle of the Seelow Heights|Seelow Heights]] and [[Battle of Halbe|Halbe]]. During 20 April 1945, the [[1st Belorussian Front]] led by [[Marshal of the Soviet Union|Marshal]] [[Georgy Zhukov]] started shelling Berlin's city centre, while Marshal [[Ivan Konev]]'s [[1st Ukrainian Front]] had pushed from the south through the last formations of [[Army Group Centre]]. The German defences were mainly led by [[Helmuth Weidling]] and consisted of several depleted, badly equipped, and disorganised [[Wehrmacht]] and [[Waffen-SS]] divisions, the latter of which included many [[Waffen-SS foreign volunteers and conscripts|SS foreign volunteers]], as well as poorly trained ''[[Volkssturm]]'' and [[Hitler Youth]] members. Within the next few days, the Soviets rapidly advanced through the city and reached the city centre where close-quarters combat raged. ||| ||| ||| +0 Battle of Biak ||| New Guinea campaign ||| The '''Battle of Biak''' was part of the [[New Guinea campaign]] of World War II, fought between the [[United States Army]] and the [[Imperial Japanese Army|Japanese Army]] from 27 May to 17 August 1944. It was part of General [[Douglas MacArthur|Douglas MacArthur's]] [[South West Pacific Area (command)|Southwest Pacific command's]] offensive drive to clear New Guinea in preparation for an invasion of the Philippines. It was the first major effort by the Japanese to allow uncontested landings for the purpose of creating a kill zone inland. ||| ||| ||| +0 Battle of Białołęka ||| First Battle of Wawer ||| The Russo-Polish War officially began in early February 1831, a 115,000-strong Russian army crossed Polish borders, led by [[Field Marshal]] [[Hans Karl von Diebitsch]]. The [[Battle of Stoczek|first major battle]] took place on February 14, 1831 near the village of [[Stoczek Łukowski|Stoczek]] near [[Łuków]], where [[Polish cavalry]] under the command of [[Brigadier]] [[Józef Dwernicki]] defeated the Russian division of [[Teodor Geismar]]. The victory had psychological rather than militaristic significance, as it did little to slow the Russian advance towards Warsaw. Subsequent inconclusive victories at [[Dobre, Masovian Voivodeship|Dobre]] on February 17 and [[First Battle of Wawer|Wawer]] on February 19 and 20 bolstered Polish spirits, but were inconclusive. ||| Historical context ||| ||| +0 Battle of Biberach (1796) ||| Battle of Emmendingen ||| During the summer of 1796, the two armies of [[Jean-Baptiste Jourdan]] in the north and Moreau in the south advanced into southern Germany. They were opposed by [[Archduke Charles, Duke of Teschen]] who oversaw two Austrian armies under Latour and [[Wilhelm von Wartensleben]]. At the [[Battle of Amberg]] on 24 August 1796, Charles and Wartensleben combined to throw superior strength against Jourdan while Moreau was separated from his colleague. After Jourdan was beaten again at the [[Battle of Würzburg]] on 3 September, Moreau was forced to abandon southern Bavaria to avoid being cut off from France. As the outnumbered Latour doggedly followed the French retreat, Moreau lashed out at him at Biberach. For a loss of 500 soldiers killed and wounded, Moreau's troops inflicted 300 killed and wounded on their enemies and captured 4,000 prisoners, 18 artillery pieces, and two colors. After the engagement, Latour followed the French at a more respectful distance. The next action was the [[Battle of Emmendingen]] on 19 October. ||| ||| ||| +0 Battle of Biberach (1800) ||| Battle of Kaiserslautern ||| Although the [[First Coalition]] forces achieved several initial victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Biberach (1800) ||| Battle of Messkirch ||| In late April 1800, a French army under the command of [[Jean Victor Marie Moreau]] crossed the [[Rhine]] river near [[Basel]]. At [[Battle of Stockach (1800)|Stockach and Engen]] on 3 May, Moreau captured Kray's base of supplies and forced him into retreat. Two days later, Kray confronted his pursuers at [[Battle of Messkirch]] but was beaten again. On the 9th, the corps of Gouvion Saint-Cyr caught up with a part of Kray's army and the two sides battled again. ||| ||| ||| +0 Battle of Biberach (1800) ||| Battle of Neerwinden (1793) ||| Although the [[First Coalition]] forces achieved several initial victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Bir el Abd ||| Sinai and Palestine Campaign ||| The '''Battle of Bir el Abd''' or '''the Abd well''' (9 August 1916) was fought between the forces of the [[British Empire]] and the [[Ottoman Turkish Empire]], during the [[Sinai and Palestine Campaign]] of the [[First World War]]. ||| ||| ||| +0 Battle of Bitonto ||| War of the Quadruple Alliance ||| King [[Philip V of Spain]] had always aimed to reconquer Naples and Sicily, which Spain lost to the [[Habsburg Monarchy|Habsburgs]] as a consequence of the [[War of the Spanish Succession]]. In 1714 he married [[Elisabeth Farnese]], who had dynastic interests in Italy. Under her influence he had attempted without success to recover the Italian holdings in the [[War of the Quadruple Alliance]]. When the [[War of the Polish Succession]] broke out in 1733, he saw an opportunity to act against the Habsburgs, who had no military support among western European powers ([[Great Britain]] and the [[Dutch Republic]] opting to remain neutral), with active opposition by [[France]] and [[Charles Emmanuel III of Sardinia]]. In the fall of 1733 Spain and France signed the [[Treaty of the Escorial]], the first of several Bourbon Family Compacts. The treaty pledged mutual protection and aid, and provided for the allies to work together for the conquest of Habsburg territories on the Italian peninsula. ||| Prelude ||| ||| +0 Battle of Bitonto ||| War of the Spanish Succession ||| King [[Philip V of Spain]] had always aimed to reconquer Naples and Sicily, which Spain lost to the [[Habsburg Monarchy|Habsburgs]] as a consequence of the [[War of the Spanish Succession]]. In 1714 he married [[Elisabeth Farnese]], who had dynastic interests in Italy. Under her influence he had attempted without success to recover the Italian holdings in the [[War of the Quadruple Alliance]]. When the [[War of the Polish Succession]] broke out in 1733, he saw an opportunity to act against the Habsburgs, who had no military support among western European powers ([[Great Britain]] and the [[Dutch Republic]] opting to remain neutral), with active opposition by [[France]] and [[Charles Emmanuel III of Sardinia]]. In the fall of 1733 Spain and France signed the [[Treaty of the Escorial]], the first of several Bourbon Family Compacts. The treaty pledged mutual protection and aid, and provided for the allies to work together for the conquest of Habsburg territories on the Italian peninsula. ||| Prelude ||| ||| +0 Battle of Bladensburg ||| Battle of Craney Island ||| For the first two years of the War of 1812, the British had been preoccupied with the war against [[Napoleon Bonaparte]] on the continent of Europe. However, ships of the [[Royal Navy]], commanded by Rear Admiral [[George Cockburn]], controlled [[Chesapeake Bay]] from early 1813 onwards and had captured large numbers of American trading vessels. Landing parties had destroyed foundries and batteries, but lack of troops restricted Cockburn to mounting small-scale raids, the largest of which was the [[Battle of Craney Island]], which involved 2,000 men of the [[British Army]] and the [[Royal Marines]]. The British occupied [[Tangier Island]] as an [[anchorage (shipping)|anchorage]] and staging area. As many as 1,200 British soldiers would be stationed there. Although Cockburn withdrew from Chesapeake Bay later in 1813, his sailors had taken soundings and even placed buoys to mark channels and sandbars, in preparation for a renewed campaign in 1814. ||| Background ||| ||| +0 Battle of Bladensburg ||| Battle of Stoney Creek ||| Nevertheless, on 2 July, Armstrong designated the area around Washington and Baltimore as the [[United States Army]]'s Tenth Military District. Brigadier General [[William H. Winder]], who had practiced law in Baltimore before being commissioned as a Colonel in 1812 and who had only recently been [[Prisoner exchange|exchanged]] after his capture at the [[Battle of Stoney Creek]] in July 1813, was appointed its commander. On July 5, he and Armstrong conferred. Winder suggested calling up some militia in advance of any attack, but Armstrong insisted that militia could best be used on the spur of the moment. ||| Background ||| ||| +0 Battle of Bladensburg ||| Raid on Alexandria ||| Cochrane dispatched two forces to make diversions. The frigate [[HMS Menelaus (1810)|HMS ''Menelaus'']] and some small craft threatened a raid on Baltimore, while two frigates and some bomb ketches and a rocket vessel ascended the [[Potomac River]], an expedition that resulted in the successful [[Raid on Alexandria]]. His main body proceeded into the Patuxent. Ross's troops landed at [[Benedict, Maryland|Benedict]] on 19 August, and began marching upstream the following day, while Cockburn proceeded up the river with ships' boats and small craft. By 21 August, Ross had reached Nottingham, and Commodore [[Joshua Barney]] was forced to destroy the gunboats and other sailing craft of the Chesapeake Bay Flotilla the next day, and retreat overland towards Washington. ||| Campaign ||| British moves ||| +0 Battle of Blair Mountain ||| American Civil War ||| The '''Battle of Blair Mountain''' was the largest labor uprising in [[United States history]] and one of the largest, organized, and well-armed uprisings since the [[American Civil War]].{{sfn|Kinder|2005|p=149}} For five days in late August and early September 1921, in [[Logan County, West Virginia|Logan County]], [[West Virginia]], some 10,000 armed [[coal miner]]s confronted 3,000 lawmen and [[strikebreakers]], called the Logan Defenders,{{sfn|Patel|2012|p=}} who were backed by coal mine operators during an attempt by the miners to [[Trade union|unionize]] the southwestern West Virginia coalfields. The battle ended after approximately one million rounds were fired, ||| ||| ||| +0 Battle of Blanc Mont Ridge ||| Gallipoli Campaign ||| What was needed for this mission were fresh, vigorous assault troops. That is to say, the high command had to find some soldiers who would march up that long slope to Blanc Mont without paying too much attention to their buddies alongside being machine-gunned down or mutilated by whiz-bangs. Then the surviving troops would have to possess the energy and will to hold onto the crest no matter what furies the German Army threw back at them. The answer, it was decided, was to commit some American divisions. The mission to take Blanc Mont ridge was given to the experienced soldiers and Marines of the AEF's [[2nd Infantry Division (United States)|2nd Division]] and in reserve the unblooded Texas and Oklahoma National Guardsmen of the 36th Division, 54,000 men total. They were placed at the disposal of French 4th Army commander [[Henri Gouraud (French Army officer)|Henri Gouraud]], one-armed hero of both the [[Gallipoli Campaign|Gallipoli campaign]] and the recent defense along the [[Marne (river)|Marne]]. ||| Background ||| ||| +0 Battle of Blandford ||| Battle of Camden ||| By December 1780, the [[American Revolutionary War]]'s [[North America]]n main theaters had reached a critical point. The [[Continental Army]] had suffered major defeats earlier in the year, with its southern armies either captured or dispersed in the [[Siege of Charleston|loss of Charleston]] and the [[Battle of Camden]] in the south, while the armies of [[George Washington]] and the British [[Commander-in-Chief, North America|commander-in-chief for North America]], [[Henry Clinton (American War of Independence)|Sir Henry Clinton]] watched each other around [[New York City]] in the north. ||| Background ||| ||| +0 Battle of Blandford ||| Siege of Petersburg ||| Petersburg was once again a center of military activity during the [[American Civil War]], when it [[Siege of Petersburg|was besieged]] for nine months in 1864 and 1865. The role of Petersburg in this later conflict dominates commemorations of its military history. However, since 1992, the city of Petersburg has sponsored an annual reenactment of this battle. ||| Aftermath ||| ||| +0 Battle of Bloody Gulch ||| Omaha Beach ||| When the 101st Airborne entered the town of Carentan on June 12, 1944 (D-Day + 6) after [[Battle of Carentan|heavy fighting]] on the two previous days, they met relatively light resistance. The bulk of the surviving German defenders (from the 6th Fallschirmjäger Regiment) had withdrawn to the southwest the previous night after a heavy [[Allies of World War II|Allied]] naval and [[artillery]] bombardment. Both sides realized the importance of the city: for the Americans, it was a link between [[Utah Beach]] and [[Omaha Beach]], and would provide a base for further attacks deeper into German-occupied France. For the Germans, recapturing Carentan would be the first step towards driving a wedge between the two U.S. landing beaches, severely disrupting and possibly even destroying the Allied invasion. ||| Battle ||| ||| +0 Battle of Bloody Gulch ||| Utah Beach ||| When the 101st Airborne entered the town of Carentan on June 12, 1944 (D-Day + 6) after [[Battle of Carentan|heavy fighting]] on the two previous days, they met relatively light resistance. The bulk of the surviving German defenders (from the 6th Fallschirmjäger Regiment) had withdrawn to the southwest the previous night after a heavy [[Allies of World War II|Allied]] naval and [[artillery]] bombardment. Both sides realized the importance of the city: for the Americans, it was a link between [[Utah Beach]] and [[Omaha Beach]], and would provide a base for further attacks deeper into German-occupied France. For the Germans, recapturing Carentan would be the first step towards driving a wedge between the two U.S. landing beaches, severely disrupting and possibly even destroying the Allied invasion. ||| Battle ||| ||| +0 Battle of Bloody Ridge ||| Battle of Heartbreak Ridge ||| After withdrawing from Bloody Ridge, the North Koreans set up new positions just {{convert|1500|yd}} away on a seven-mile (11 km) long (11 km) hill mass that was soon to earn the name [[Battle of Heartbreak Ridge|Heartbreak Ridge]]. ||| Battle ||| ||| +0 Battle of Blue Licks ||| Northwest Indian War ||| Four years later, the Indian villages on the Mad River would be destroyed by Benjamin Logan at the outset of the [[Northwest Indian War]]. Hugh McGary confronted the Shawnee chief [[Moluntha]] and asked if he had been at Blue Licks. In fact, the Shawnees had not taken part, the Indians being Wyandots. Moluntha nodded his head in agreement. McGary killed him with a tomahawk. Moluntha had voluntarily and peacefully surrendered, waving an American flag and a copy of the peace treaty he had signed earlier that year, in the belief that these would protect him. Colonel Logan immediately relieved McGary of his command and ordered him court-martialed for killing a prisoner. McGary was stripped of his commission for a year, but was otherwise unpunished. ||| Aftermath ||| ||| +0 Battle of Blue Licks ||| Siege of Yorktown ||| Although the main [[British Army during the American War of Independence|British army]] under Lord Cornwallis had surrendered at [[Siege of Yorktown|Yorktown]] in October 1781, virtually ending the war in the east, fighting on the western frontier continued. Aided by the British garrison at [[Fort Detroit]], American Indians north of the [[Ohio River]] redoubled their efforts to drive the Rebel American settlers out of western Virginia (now Kentucky and [[West Virginia]]). ||| Background ||| Caldwell's expedition ||| +0 Battle of Booneville ||| Siege of Corinth ||| The '''Battle of Booneville''' was fought on July 1, 1862, in [[Booneville, Mississippi]], during the [[American Civil War]]. It occurred in the aftermath of the [[Union Army|Union]] victory at the [[Battle of Shiloh]] and within the context of [[Confederate States Army|Confederate]] General [[Braxton Bragg]]'s efforts to recapture the rail junction at [[Siege of Corinth|Corinth, Mississippi]], {{convert|20|mi|km}} north of Booneville. ||| ||| ||| +0 Battle of Borneo (1941–42) ||| Battle of France ||| The [[Tripartite Pact]]—between the three Axis Powers of Germany, Japan and Italy—guaranteed mutual support, and this paid off for Japan in July 1941 when [[Vichy France|French]] weakness in the wake of [[Battle of France|the fall of France]] to Germany allowed Japan to [[Japanese invasion of French Indochina|occupy]] [[French Indo-China]] (now modern [[Vietnam]], [[Laos]] and [[Cambodia]]). This gave Japan land access to the Chinese mainland where it had long been engaged in military intervention and, since 1937, had been fighting a [[Second Sino-Japanese War|full-on war of invasion]] against the temporarily allied forces of the [[Kuomintang]] and the [[Communist Party of China]]. It also gave Imperial Japan a seaboard facing Sarawak and North Borneo across the China Sea. Japan turned its eyes from the war in China and towards strategic targets in the Pacific and the Dutch East Indies. In December that year, Japan struck out against U.S. possessions in Hawaii and the Philippines, declaring war on the U.S. and finally precipitating Germany's official declaration of war on America according to the Pact. ||| Background to the conflict ||| ||| +0 Battle of Borneo (1941–42) ||| Battle of Tarakan (1942) ||| *''For campaigns on eastern Borneo, see [[Battle of Tarakan (1942)]] and [[Battle of Balikpapan (1942)]].'' ||| ||| ||| +0 Battle of Borneo (1941–42) ||| Japanese invasion of French Indochina ||| The [[Tripartite Pact]]—between the three Axis Powers of Germany, Japan and Italy—guaranteed mutual support, and this paid off for Japan in July 1941 when [[Vichy France|French]] weakness in the wake of [[Battle of France|the fall of France]] to Germany allowed Japan to [[Japanese invasion of French Indochina|occupy]] [[French Indo-China]] (now modern [[Vietnam]], [[Laos]] and [[Cambodia]]). This gave Japan land access to the Chinese mainland where it had long been engaged in military intervention and, since 1937, had been fighting a [[Second Sino-Japanese War|full-on war of invasion]] against the temporarily allied forces of the [[Kuomintang]] and the [[Communist Party of China]]. It also gave Imperial Japan a seaboard facing Sarawak and North Borneo across the China Sea. Japan turned its eyes from the war in China and towards strategic targets in the Pacific and the Dutch East Indies. In December that year, Japan struck out against U.S. possessions in Hawaii and the Philippines, declaring war on the U.S. and finally precipitating Germany's official declaration of war on America according to the Pact. ||| Background to the conflict ||| ||| +0 Battle of Bornos (1811) ||| Battle of Bornos (1812) ||| A second [[Battle of Bornos (1812)|Battle of Bornos]] occurred on 31 May 1812 when Ballesteros surprised [[Nicolas François Conroux]]'s troops in the town. The outnumbered French fought back effectively and drove off the Spanish troops with serious losses. ||| Second Bornos ||| ||| +0 Battle of Bornos (1812) ||| Battle of Bornos (1811) ||| An earlier [[Battle of Bornos (1811)|Battle of Bornos]] occurred on 5 November 1811. Three French columns were unsuccessful in an attempt to trap a Spanish force led by Ballesteros. Instead, the Spanish general lashed out at one of the pursuing columns, inflicting 100 casualties and inducing an entire French-allied Spanish ''Juramentado'' battalion to change sides. ||| Battle ||| ||| +0 Battle of Borodino ||| Battle at Borodino Field ||| In Russia, the Battle of Borodino is reenacted yearly on the first Sunday of September. On the battlefield itself, the Bagration ''flèches'' are preserved; a modest monument has been constructed in honour of the French soldiers who fell in the battle. There are also remnants of trenches from the [[Battle at Borodino Field|seven-day battle]] fought at the same battlefield in 1941 between the Soviet and German forces (which took fewer human lives than the one of 1812). ||| Legacy ||| ||| +0 Battle of Borodino ||| Battle of Waterloo ||| It is not unusual for a pivotal battle of this time period to be difficult to document. Similar difficulties exist with other examples such as the [[Battle of Waterloo]] or other battles that took place in the [[War of 1812]] in North America, while the Battle of Borodino offers its own particular challenges to accuracy. ||| End of the battle ||| Historiography ||| +0 Battle of Borovo Selo ||| Pakrac clash ||| The '''Battle of Borovo Selo''' on 2 May 1991 (known in [[Croatia]] as the '''Borovo Selo massacre''', {{lang-hr|Pokolj u Borovom Selu}} and in [[Serbia]] as the '''Borovo Selo incident''', {{lang-sr|Инцидент у Боровом Селу}}) was one of the first armed clashes in the conflict which became known as the [[Croatian War of Independence]]. The clash was precipitated by months of rising ethnic tensions and armed combat in [[Pakrac clash|Pakrac]] and at the [[Plitvice Lakes incident|Plitvice Lakes]] in March. The immediate cause for the confrontation in the heavily ethnic Serb village of [[Borovo Selo]], just north of [[Vukovar]], was a failed attempt to replace a [[Flag of Yugoslavia|Yugoslav flag]] in the village with a [[Flag of Croatia|Croatian one]]. The unauthorised effort by four Croatian policemen resulted in the capture of two by a [[Croatian Serb]] militia in the village. To retrieve the captives, Croatian authorities deployed additional police, who drove into an ambush. At least twelve Croatian policemen and an unknown number of Serbs were killed in the battle before the [[Yugoslav People's Army]] (JNA) intervened and stopped the fighting. ||| ||| ||| +0 Battle of Borovo Selo ||| Plitvice Lakes incident ||| The '''Battle of Borovo Selo''' on 2 May 1991 (known in [[Croatia]] as the '''Borovo Selo massacre''', {{lang-hr|Pokolj u Borovom Selu}} and in [[Serbia]] as the '''Borovo Selo incident''', {{lang-sr|Инцидент у Боровом Селу}}) was one of the first armed clashes in the conflict which became known as the [[Croatian War of Independence]]. The clash was precipitated by months of rising ethnic tensions and armed combat in [[Pakrac clash|Pakrac]] and at the [[Plitvice Lakes incident|Plitvice Lakes]] in March. The immediate cause for the confrontation in the heavily ethnic Serb village of [[Borovo Selo]], just north of [[Vukovar]], was a failed attempt to replace a [[Flag of Yugoslavia|Yugoslav flag]] in the village with a [[Flag of Croatia|Croatian one]]. The unauthorised effort by four Croatian policemen resulted in the capture of two by a [[Croatian Serb]] militia in the village. To retrieve the captives, Croatian authorities deployed additional police, who drove into an ambush. At least twelve Croatian policemen and an unknown number of Serbs were killed in the battle before the [[Yugoslav People's Army]] (JNA) intervened and stopped the fighting. ||| ||| ||| +0 Battle of Bothaville ||| Battle of Colenso ||| The Boers lost 25 killed and about 130 captured, including 30 men wounded. De Wet also had to abandon four [[Krupp]] field guns, a pom pom, and two artillery pieces captured from the British at the battles of [[Battle of Colenso|Colenso]] and [[Sanna's Post]]. Serious losses of materiel had also been inflicted on the Boers, including six field-guns, a [[Maxim gun]] and a pom-pom, all de Wet's wagons carrying gun and small-arms ammunition as well as clothing and other supplies. Despite this, de Wet remained in the field and, within a fortnight, struck back at the British at the head of 1,500 [[burgher people|burghers]]. ||| Aftermath ||| ||| +0 Battle of Bound Brook ||| Battle of Trenton ||| Following the Battles of [[Battle of Trenton|Trenton]] and [[Battle of Princeton|Princeton]] in December 1776 and January 1777, the [[Continental Army]] of Major General [[George Washington]] entered winter quarters in [[Morristown, New Jersey]], while the British and German forces of Lieutenant General [[William Howe, 5th Viscount Howe|William Howe]] settled into winter quarters in [[New York City]] and northeastern [[New Jersey]]. ||| Background ||| ||| +0 Battle of Boyra ||| 1971 Bangladesh genocide ||| After months of internal tensions in [[East Pakistan]] (current day [[Bangladesh]]) leading up to the [[1971 Bangladesh genocide]], and a clampdown on Bengali nationalists, many independence fighters had organised themselves into a guerilla army. Called the [[Mukti Bahini]], these rebels were aided by India in their struggle. After initial success over Pakistani troops there had been some relative calm in the region and further Indian assistance was sought to turn the tide. Economically burdened by close to 10 Million Bangladeshi refugees, ||| Background ||| ||| +0 Battle of Boyra ||| Battle of Garibpur ||| '''The Battle of Boyra''', on 22 November 1971, was an aerial interception fought between the [[Indian Airforce]] and intruding [[Pakistani Air Force]] jets that inadvertently crossed into Indian Airspace while performing a close air support mission against the [[Mukti Bahini]], the [[Bengali people|Bengali]] [[Guerrilla warfare|Guerrilla]] freedom fighters, and a [[Battalion]] size detachment of the [[Indian Army]] which were fighting in the [[Battle of Garibpur]] against the [[Pakistani Armed Forces]] as part of the [[Bangladesh Liberation War]]. ||| ||| ||| +0 Battle of Boyra ||| Indo-Pakistani War of 1965 ||| The [[Indian Air Force]] unit involved was [[No. 22 Squadron IAF]] '''Swifts''' which was equipped with the diminutive [[Folland Gnat]] which came to earn the name '''Sabre Slayer'''. This squadron was based in [[Kalaikunda Air Force Station]] and tasked with the [[Air Defence]] of the Calcutta Sector. A detachment was stationed at Dum Dum Airfield in [[Calcutta]]. The unit was under the command of [[Wing commander (rank)|Wing Commander]] BS Sikand (who later rose to the rank of Air Marshal), who himself was a POW in the [[Indo-Pakistani War of 1965]]. ||| Units Involved ||| ||| +0 Battle of Boyra ||| Indo-Pakistani War of 1971 ||| This engagement marked the first time in 6 years that aircraft were shot down in air combat in the [[Indian Subcontinent]] and the state of increased hostilities in the region which culminated in the [[Indo-Pakistani War of 1971]] and the creation of the Country of [[Bangaladesh]] less than a month later. ||| Aftermath ||| ||| +0 Battle of Boyra ||| Kargil War ||| * [[Parvaiz Mehdi Qureshi]] would later go on to be the [[Chief of the Air Staff (Pakistan)|CAS]] of [[Pakistani Air Force|PAF]] a role in which he was famous for his forthright and straight-faced dealings he looked after the interests of the PAF. As CoAS of the PAF he prevented the PAF from getting drawn into the [[Kargil War]] according to the wishes of Gen.[[Pervez Musharraf]] and thus prevented that conflict from escalating, which may have resulted in [[Nuclear War]]. ||| Aftermath ||| ||| +0 Battle of Braga (1809) ||| Battle of Corunna ||| The British won a tactical victory over Soult's [[II Corps (Grande Armée)|II Corps]] in the [[Battle of Corunna]] on 16 January 1809. However, the [[Royal Navy]] soon evacuated the army from northwest Spain. Freed from British interference, Soult planned to invade northern Portugal. From [[Ourense]] in Spain, the French marched south to seize [[Chaves, Portugal]] before moving west toward Braga. A short distance east of Braga the French came upon the Portuguese army, but Soult waited a few days for all his troops to arrive. During this time the mutinous Portuguese murdered their commander [[Bernardim Freire de Andrade]], leaving Eben in charge. Once he was ready, Soult crushed his adversaries without much trouble. The next action was the [[First Battle of Porto]]. ||| ||| ||| +0 Battle of Braga (1809) ||| First Battle of Porto ||| The British won a tactical victory over Soult's [[II Corps (Grande Armée)|II Corps]] in the [[Battle of Corunna]] on 16 January 1809. However, the [[Royal Navy]] soon evacuated the army from northwest Spain. Freed from British interference, Soult planned to invade northern Portugal. From [[Ourense]] in Spain, the French marched south to seize [[Chaves, Portugal]] before moving west toward Braga. A short distance east of Braga the French came upon the Portuguese army, but Soult waited a few days for all his troops to arrive. During this time the mutinous Portuguese murdered their commander [[Bernardim Freire de Andrade]], leaving Eben in charge. Once he was ready, Soult crushed his adversaries without much trouble. The next action was the [[First Battle of Porto]]. ||| ||| ||| +0 Battle of Bregalnica ||| First Balkan War ||| According to the military convention between [[Serbia]] and [[Bulgaria]] from 13 March 1912 that predated the [[First Balkan War]], the main Bulgarian forces were to be used on the [[Thrace|Thracian]] front (Eastern theater), while the whole Serbian army and one Bulgarian army of 100,000 men were to be used against the Ottoman army in [[Macedonia (region)|Macedonia]] (Western theater). Since the Bulgarians did not engage agreed forces in the Western theater but sent them instead to the Eastern theater, the main burden of fighting in Macedonia was left to the Serbian army. The Greek army also engaged Ottoman forces in the Western theater and, much more important, used its superior navy to block Ottoman naval lines in the [[Aegean Sea]] thus preventing Ottoman reinforcements from Asia coming to the European part of empire. ||| Introduction ||| ||| +0 Battle of Brentford (1642) ||| Battle of Turnham Green ||| At a standoff known as the [[Battle of Turnham Green]], the senior Parliamentarian officers not trusting the training of the their forces in a battle of manoeuvre chose not to attack, and the King decided not to press his advance on London by giving battle against a force much larger than his decided, as it was near the end of the campaigning season, to retreat to Oxford where his army could be billeted over the winter. ||| Aftermath ||| ||| +0 Battle of Brier Creek ||| Battle of Kettle Creek ||| The '''Battle of Brier Creek''' was an [[American Revolutionary War]] battle fought on March 3, 1779 near the confluence of [[Brier Creek]] with the [[Savannah River]] in eastern [[Georgia (U.S. state)|Georgia]]. A [[Patriot (American Revolution)|Patriot]] force consisting principally of militia from [[North Carolina]] and Georgia was surprised, suffering significant casualties. The battle occurred only a few weeks after a resounding [[United States|American]] Patriot victory over the [[Kingdom of Great Britain|British]] at [[Battle of Kettle Creek|Kettle Creek]], north of [[Augusta, Georgia|Augusta]], reversing its effect on morale. ||| ||| ||| +0 Battle of Brier Creek ||| Capture of Savannah ||| Following the entry of [[France]] into the [[American Revolutionary War]] in 1778, the British focused their attention on the [[American South]], which they had not paid great attention to in the early years of the war. The British began their [[Southern theater of the American Revolutionary War|'southern strategy']] by sending expeditions from [[New York City]] and [[Saint Augustine, Florida|Saint Augustine]], [[East Florida]] to capture [[Savannah, Georgia]] late in 1778. The New York expedition, under the command of [[Lieutenant Colonel]] [[Archibald Campbell (British Army officer)|Archibald Campbell]], arrived first, and successfully [[Capture of Savannah|captured]] the town on December 29, 1778. ||| Background ||| ||| +0 Battle of Brihuega ||| Battle of Saragossa ||| In 1710, victories at the [[Battle of Almenara]] (July 27) and the [[Battle of Saragossa]] (August 20) allowed the Grand Alliance army supporting [[Charles VI, Holy Roman Emperor|Archduke Charles]] to occupy [[Madrid]] for the second time. On 21 September the Archduke&mdash;Charles III of Spain, according to the Allies&mdash;entered his prospective capital. But the invasion of 1710 proved to be a repetition of the invasion of 1706: The Alliance's 23,000 men, reduced by a loss of 2,000 in the actions at Almenara and Saragossa, by constant skirmishes with the ''[[guerrilla warfare|guerrilleros]]'', and by disease, were unequal to the task of holding their conquests and occupying the two Castiles. The Portuguese were unable to offer help. ||| Prelude ||| ||| +0 Battle of Brisbane ||| Kokoda Track campaign ||| Another concern was the way the [[Australian military]] was viewed by America's high command. [[Douglas MacArthur]] had already expressed a low opinion of Australian troops, who were then fighting along the [[Kokoda Track campaign|Kokoda Track]]. Though Australia was bearing the brunt of the land war in New Guinea by itself, MacArthur would report back to the United States on 'American victories', while Australian victories were communicated to the United States as 'American and [[Allies of World War II|Allied]] victories'. Americans' general ignorance of Australia, and American perceptions that Australians lacked a certain 'get-up-and-go', also soured relations. ||| Background ||| Opinions of each other's soldiers ||| +0 Battle of Brisbane ||| Pacific War ||| From 1942 until 1945 during the [[Pacific War]], up to one million U.S. military personnel, which included around 100,000 African-Americans, were stationed at various locations throughout eastern Australia. These forces included personnel awaiting deployment to combat operations elsewhere in the Pacific, troops resting, convalescing, and/or refitting from previous combat operations, or military personnel manning Allied military bases and installations in Australia. Many U.S. personnel were stationed in and around Brisbane, which was the headquarters for General [[Douglas MacArthur]], Supreme [[Allies of World War II|Allied]] Commander, [[South West Pacific Area]]. Many buildings and facilities around Brisbane were given over to the U.S. military's use. Brisbane found it difficult to cope as their population of 300,000 doubled to 600,000 almost overnight. The city was fortified, schools were closed, [[Brownout (electricity)|brownouts]] enforced, crime increased, and many families sold up and moved inland. ||| Background ||| ||| +0 Battle of Britain ||| Battle of Britain Day ||| On 15 September, two massive waves of German attacks were decisively repulsed by the RAF by deploying every aircraft in 11 Group. Sixty German and 26 RAF aircraft were shot down. Two days after the German defeat Hitler postponed preparations for the invasion of Britain. Henceforth, in the face of mounting losses in men, aircraft and the lack of adequate replacements, the Luftwaffe switched from daylight to nighttime bombing. 15 September is commemorated as [[Battle of Britain Day]]. ||| Phases of the battle ||| Raids on British cities ||| +0 Battle of Britain ||| Battle of France ||| During the [[Battle of France]], Grand Admiral [[Erich Raeder]], met Hitler on 21 May 1940 and raised the topic of invasion, stressing the difficulties and his own preference for a blockade. The report issued on 30 June by OKW Chief of Staff [[Alfred Jodl]] 30 June set out options, with invasion as a last resort once the British economy had been damaged and the Luftwaffe had full air superiority.{{sfn | Bungay | 2000 | pp=31–33}}{{sfn| Overy | 2013 | pp=68–69}} Raeder emphasised that the Kriegsmarine had been considerably weakened by the [[Norwegian Campaign]]. ||| Background ||| German aims and directives ||| Invasion plans +0 Battle of Britain ||| Dunkirk evacuation ||| After the [[Dunkirk evacuation|evacuation of British and French soldiers from Dunkirk]] and the French surrender on 22 June 1940, Hitler mainly focused his energies on the possibility of invading the [[Soviet Union]] ||| Background ||| First stages of World War II ||| +0 Battle of Britain ||| Operation Overlord ||| The British victory in the Battle of Britain was achieved at a heavy cost. Total British civilian losses from July to December 1940 were 23,002 dead and 32,138 wounded, with one of the largest single raids on 19 December 1940, in which almost 3,000 civilians died. With the culmination of the concentrated daylight raids, Britain was able to rebuild its military forces and establish itself as an Allied stronghold, later serving as a base from which [[Operation Overlord|the Liberation of Western Europe]] was launched. ||| Aftermath ||| ||| +0 Battle of Britain ||| The Blitz ||| The '''Battle of Britain ''' ([[German language|German]]: ''Luftschlacht um England'', literally 'Air battle for England') is the name given to the [[World War II|Second World War]] defence of the [[United Kingdom]] by the [[Royal Air Force]] (RAF) against an onslaught by the German Air Force ([[Luftwaffe]]) which began at the end of June 1940. In Britain, the officially recognised dates are 10 July – 31 October 1940, overlapping with the period of large-scale night attacks known as [[The Blitz]]. ||| ||| ||| +0 Battle of Britain Day ||| Battle of Britain ||| The '''Battle of Britain Day''' is the name given to the large-scale aerial battle that took place on 15 September 1940, during the [[Battle of Britain]] (German: ''Luftschlacht um England'' or ''Luftschlacht um Großbritannien''). ||| ||| ||| +0 Battle of Britain Day ||| The Hardest Day ||| Over claiming in aerial warfare is not uncommon. During the Second World War, pilots often claimed more aircraft shot down than was actually the case. The [[Air Ministry]] released a press statement on 15 September that 175–185 German aircraft had been shot down. The actual number of aircraft destroyed was ⅔ lower and significantly less than the number of German losses on 15 and 18 August ([[The Hardest Day]]), in which the ''Luftwaffe'' lost 75 and 69 respectively. ||| Aftermath ||| Overclaiming and propaganda ||| +0 Battle of Brześć Litewski ||| Battle of Wizna ||| Initially, the Polish forces did not plan to defend the old [[Brest Fortress|fortress of Brześć]]. The town was located deep behind the Polish lines and was seen as a supply depot and organisation centre rather than a front-line fort. However, after the [[Battle of Mława|Battles of Mława]] and [[Battle of Wizna|Wizna]] the German XIX Panzer Corps under General [[Heinz Guderian]] broke through Polish lines and sped southward with the aim of flanking [[Warsaw]] from the East and cutting Poland in two. ||| History ||| Before the battle ||| +0 Battle of Brześć Litewski ||| Defense of Brest Fortress ||| The [[Brest Fortress]] was handed over to the Soviets in accordance with the Molotov-Ribbentrop Pact. {{rp|83}} It was [[Defense of Brest Fortress|besieged and captured again]] by the Wehrmacht in the beginning of [[Operation Barbarossa]] in 1941. ||| Aftermath ||| ||| +0 Battle of Brześć Litewski ||| Soviet invasion of Poland ||| According to the secret protocol of the [[Molotov-Ribbentrop Pact]] of 23 August 1939, the region of Brześć was assigned to the Soviet 'sphere of influence'. However, the Soviets did not begin [[Soviet invasion of Poland|their invasion of Poland]] yet, and had the rapidly advancing German corps stopped, it would give Poles time to regroup and prepare. Already on 8 September the German foreign minister, [[Joachim von Ribbentrop]], notified the Soviet government that the German forces would have to violate the Soviet 'sphere'. ||| History ||| Before the battle ||| +0 Battle of Bréville ||| 6th Airborne Division advance to the River Seine ||| After the capture of Bréville, the Germans never seriously attempted to break through the airborne division's lines again. The British division only being subjected to sporadic artillery and mortar fire. This lasted until 17 August, when the Germans started to withdraw and the [[6th Airborne Division advance to the River Seine|6th Airborne Division advanced to the River Seine]]. ||| ||| ||| +0 Battle of Bréville ||| Battle of Merville Gun Battery ||| On 6 June 1944, the [[6th Airborne Division]] landed in [[Normandy]] to secure the left flank of the British landing zone. The division's objectives were to capture intact the [[Pegasus Bridge|Caen canal bridge]], the [[Horsa Bridge|Orne river bridge]], destroy the [[Battle of Merville Gun Battery|Merville gun battery]] – which was in a position to engage troops landing at the nearby [[Sword beach]] – and the bridges crossing the [[River Dives]], the latter to prevent German reinforcements approaching the landings from the east. ||| Background ||| ||| +0 Battle of Buda (1686) ||| Battle of Vienna ||| The '''Battle of Buda (1686)''' was fought between the [[Holy League (1684)|Holy League]] and the [[Ottoman Empire]], as part of the follow-up campaign in [[Hungary]] after the [[Battle of Vienna]]. The Holy League took [[Buda]] after a long [[siege]]. ||| ||| ||| +0 Battle of Bull's Ferry ||| Battle of Connecticut Farms ||| Meanwhile, Knyphausen staged the Springfield Raid in June 1780. The Hessian general started out with 5,000 men on 7 June. That day, he was successfully blocked by [[Elias Dayton]]'s Continentals and militia in the [[Battle of Connecticut Farms]]. Clinton returned to New York on 17 June. Hearing that a French fleet and army was on the way to [[Newport, Rhode Island]], the British commander sent some ships up the Hudson to make it difficult for the Americans to cross to the east side and join the French. Washington moved his army to cover his key fort at [[West Point, New York]] on the Hudson, leaving [[Nathanael Greene]] to shield his base at [[Morristown, New Jersey]]. On 23 June, Knyphausen lunged at Morristown. In the [[Battle of Springfield (1780)|Battle of Springfield]], Greene's division slowed the Hessian general's thrust. That evening Knyphausen withdrew into [[Staten Island]]. ||| Background ||| ||| +0 Battle of Bull's Ferry ||| Battle of Monmouth ||| The [[Battle of Monmouth]] on 28 June 1778 was the last significant engagement in the north. ||| Background ||| ||| +0 Battle of Bull's Ferry ||| Battle of Springfield (1780) ||| Meanwhile, Knyphausen staged the Springfield Raid in June 1780. The Hessian general started out with 5,000 men on 7 June. That day, he was successfully blocked by [[Elias Dayton]]'s Continentals and militia in the [[Battle of Connecticut Farms]]. Clinton returned to New York on 17 June. Hearing that a French fleet and army was on the way to [[Newport, Rhode Island]], the British commander sent some ships up the Hudson to make it difficult for the Americans to cross to the east side and join the French. Washington moved his army to cover his key fort at [[West Point, New York]] on the Hudson, leaving [[Nathanael Greene]] to shield his base at [[Morristown, New Jersey]]. On 23 June, Knyphausen lunged at Morristown. In the [[Battle of Springfield (1780)|Battle of Springfield]], Greene's division slowed the Hessian general's thrust. That evening Knyphausen withdrew into [[Staten Island]]. ||| Background ||| ||| +0 Battle of Buna–Gona ||| Guadalcanal Campaign ||| The battle is noteworthy for a number of reasons. The resolve and tenacity of the Japanese in defence was unprecedented and had not previously been encountered. It was to mark the desperate nature of fighting that characterised battles for the remainder of the Pacific war. For the Allies, there were a number of valuable but costly lessons in the conduct of [[jungle warfare]]. Allied losses in the battle were at a rate higher than that experienced at [[Guadalcanal Campaign|Guadalcanal]]. ||| ||| ||| +0 Battle of Buna–Gona ||| New Guinea campaign ||| The '''Battle of Buna–Gona''' was part of the [[New Guinea campaign]] in the [[Pacific war|Pacific Theatre]] during [[World War II]]. It followed the conclusion of the [[Kokoda Track campaign]] and lasted from 16 November 1942 until 22 January 1943. The battle was conducted by [[Australian Defence Force|Australian]] and [[United States armed forces|United States forces]] against the [[Empire of Japan|Japanese]] [[beachhead]]s at [[Buna, Papua New Guinea|Buna]], [[Sanananda]] and [[Gona]]. From these, the Japanese had launched an overland attack on [[Port Moresby]]. In light of developments in the [[Solomon Islands campaign]], Japanese forces approaching Port Moresby were ordered to withdraw to and secure these bases on the northern coast. Australian forces maintained contact as the Japanese conducted a well-ordered [[rearguard]] action. The [[Allies of World War II|Allied]] objective was to eject the Japanese forces from these positions and deny them their further use. The Japanese forces were skilful, well prepared and resolute in their defence. They had developed a strong network of well-concealed defences. ||| ||| ||| +0 Battle of Buqqar Ridge ||| Battle of Beersheba (1917) ||| Four days later, two infantry and two mounted divisions launched the EEF's [[Southern Palestine Offensive]], with the [[Battle of Beersheba (1917)|Battle of Beersheba]] on 31 October 1917. ||| ||| ||| +0 Battle of Bussaco ||| Battle of Sobral ||| After probing the Lines in the [[Battle of Sobral]] on 14 October, Masséna found them too strong to attack and withdrew into winter quarters. Deprived of food for his men and harried by Anglo-Portuguese hit-and-run tactics, he lost a further 25,000 men captured or dead from starvation or sickness before he retreated into Spain early in 1811. This finally freed Portugal from French occupation except for the fortress of [[Almeida, Portugal|Almeida]], near the frontier. During the retreat, several actions were fought, including the [[Battle of Sabugal]]. ||| Aftermath ||| ||| +0 Battle of Bussaco ||| Siege of Almeida (1810) ||| In 1810, [[Napoleon I of France|Emperor Napoleon I]] ordered Masséna to drive the British from Portugal. Accordingly, the French marshal began the [[Siege of Ciudad Rodrigo (1810)|Siege of Ciudad Rodrigo]] in April. The Spanish garrison held out until 9 July when the fortress fell. The [[Battle of the Côa]] was fought soon after. The [[Siege of Almeida (1810)|Siege of Almeida]] ended suddenly with a massive explosion of the fortress magazine on 26 August. With all obstacles cleared from their path, the French could march on [[Lisbon]] in strength. ||| Background ||| Operations ||| +0 Battle of Calabria ||| Battle of Jutland ||| The Italian commander decided to take on ''Warspite'', and started moving his two battleships into position. At 15:52 ''Giulio Cesare'' opened fire at a range of 26,400 metres. ''Conte di Cavour'' did not fire, a decision many have questioned. Italian strategy was to have only one ship targeted at a time, as it was learned during the [[Battle of Jutland]] that with more than one ship firing at a single target it became very difficult for the rangefinding parties to tell which rounds were theirs. ''Conte di Cavour'' had been assigned to ''Malaya'' and ''Royal Sovereign'', which were further back and did not enter the engagement. ||| Battle ||| Battleship engagement ||| +0 Battle of Calcinato ||| Battle of Cassano (1705) ||| The latter, repulsed by Vendôme at [[Battle of Cassano (1705)|Cassano]], had retired to [[Brescia]] and [[Lake Garda]], Vendôme following up and wintering about [[Castiglione delle Stiviere|Castiglione]] and [[Mantua]]. ||| Prelude ||| ||| +0 Battle of Calcinato ||| Battle of Ramillies ||| Vendôme was sent to Flanders after the crushing defeat there in the [[Battle of Ramillies]]. As a result of the disastrous [[Siege of Turin]] the French position in Italy deteriorated drastically, and by the end of the year, all French forces had been chased from Italy. ||| Aftermath ||| ||| +0 Battle of Calcinato ||| Siege of Turin ||| Vendôme was sent to Flanders after the crushing defeat there in the [[Battle of Ramillies]]. As a result of the disastrous [[Siege of Turin]] the French position in Italy deteriorated drastically, and by the end of the year, all French forces had been chased from Italy. ||| Aftermath ||| ||| +0 Battle of Caldera Bay ||| Battle of Tsushima ||| The battle had a wider impact on naval weapons development because ''Blanco Encalada'' was the first ironclad warship sunk by a [[Robert Whitehead#The first torpedo|self-propelled torpedo]].{{sfn|Scheina|1987|p=64}} News of the attack spread and as a result of the action, navies of several major powers realized the potential of torpedoes as a cheap counter to expensive pre-dreadnoughts,{{sfn|Colomb|p=434}} which led to the acceleration of submarine and torpedo boat production, the addition of torpedo nets to ships for use when they were moored in port, and the addition of torpedo tubes to surface ships. During the [[Russo-Japanese War]], over 300 self-propelled torpedoes were fired, in one instance finishing off the already seriously damaged Russian [[flagship]] [[Russian battleship Knyaz Suvorov|''Knyaz Suvorov'']] at the [[Battle of Tsushima]].{{sfn|Olender|2010|pp=235–236}} Torpedo boats also sank two [[armored cruiser]]s and two [[destroyer]]s during the course of the war.{{sfn|Olender|2010|p=234}} By the start of [[World War I]], torpedo boats and submarines were in widespread use in many navies. ||| Aftermath and impact on torpedo use ||| ||| +0 Battle of Caldiero (1796) ||| Battle of Arcole ||| The battle was part of the third Austrian effort to relieve the [[Siege of Mantua (1796-1797)|Siege of Mantua]]. Two Austrian forces converged toward [[Mantua]], the main army from the east and an independent corps from the north. Both forces enjoyed early successes, driving back the outnumbered French forces in front of them. When the main army reached a position threatening Verona, Bonaparte ordered the divisions of [[André Masséna]] and [[Pierre Augereau]] to attack. Sturdy Austrian resistance and bad weather contributed to the French defeat. Bonaparte soon embarked upon a new strategy which concluded with an Austrian defeat at the [[Battle of Arcole]] a few days later. ||| ||| ||| +0 Battle of Caldiero (1796) ||| Battle of Calliano ||| Davidovich routed Vaubois in the [[Battle of Calliano]] on 7 November, inflicting 4,400 casualties on the French for an Austrian loss of 3,500. Bonaparte focused on the threat from the north as he pulled back his eastern force to Verona. Davidovich remained inactive because he was under the mistaken impression that Masséna's division had reinforced Vaubois. ||| Background ||| ||| +0 Battle of Caldiero (1805) ||| Battle of Ulm ||| At the beginning of the war, [[Archduke John of Austria]] was assigned to command the army in the [[County of Tyrol|Tyrol]] and the [[Vorarlberg]]. He was directed to detach forces under [[Franz Jellacic]] and [[Franz Xavier von Auffenberg]] to the Danube army. Auffenberg's division was mauled at the [[Battle of Wertingen]] and later surrendered at the [[Battle of Ulm]]. Jellacic was required to guard the south flank of the Danube army near [[Lake Constance]]. Marshal [[Pierre Augereau]]'s [[VII Corps (Grande Armée)|VII Corps]] ran him to earth in the Vorarlberg. Jellacic surrendered with his infantry on 14 November in the [[Capitulation of Dornbirn]], his cavalry having gotten away. Another brigade of the Tyrol army under Prince [[Louis Victor Rohan-Guéméné]] became separated in the retreat and slipped away to the south where it made a dash for Venice. ||| Strategic aftermath ||| ||| +0 Battle of Caldiero (1805) ||| Capitulation of Dornbirn ||| At the beginning of the war, [[Archduke John of Austria]] was assigned to command the army in the [[County of Tyrol|Tyrol]] and the [[Vorarlberg]]. He was directed to detach forces under [[Franz Jellacic]] and [[Franz Xavier von Auffenberg]] to the Danube army. Auffenberg's division was mauled at the [[Battle of Wertingen]] and later surrendered at the [[Battle of Ulm]]. Jellacic was required to guard the south flank of the Danube army near [[Lake Constance]]. Marshal [[Pierre Augereau]]'s [[VII Corps (Grande Armée)|VII Corps]] ran him to earth in the Vorarlberg. Jellacic surrendered with his infantry on 14 November in the [[Capitulation of Dornbirn]], his cavalry having gotten away. Another brigade of the Tyrol army under Prince [[Louis Victor Rohan-Guéméné]] became separated in the retreat and slipped away to the south where it made a dash for Venice. ||| Strategic aftermath ||| ||| +0 Battle of Caldiero (1805) ||| Ulm Campaign ||| By mid October, [[Marshal of France|Marshal]] [[André Masséna]], a seasoned French general, who had fought the Austrians in [[Lombardia]] before during the [[Italian campaigns of the French Revolutionary Wars|campaign of 1796–1797]], was waiting for developments on the main theatre of operations in [[Ulm Campaign|Bavaria]]. ||| Preliminaries ||| ||| +0 Battle of Caldiero (1809) ||| Battle of Caldiero (1805) ||| Eugène's army occupied the same ground where the [[Battle of Caldiero (1805)|Battle of Caldiero of 1805]] was fought. Macdonald's corps held [[Caldiero]] in the center while Seras, Abbé, one Italian brigade, and the Italian Guard were on high ground on the left at [[Colognola ai Colli]]. Pully's dragoon division was in reserve, while the other cavalry units were deployed on the west bank of the Adige under Grouchy. On 29 April, General of Brigade Antoine-Louis-Ignace Bonfanti's brigade of Fontanelli's division and the Italian guard attacked the Austrian detachment on the heights. Meanwhile, Grenier led the divisions of Seras and Abbé to attack Soave, with MacDonald's troops in support. ||| Battle ||| ||| +0 Battle of Camden ||| Capture of Savannah ||| Following the British [[Battles of Saratoga|defeat at Saratoga]] in 1777 and French entry into the [[American Revolutionary War]] in early 1778, the British decided to renew a '[[Southern theater of the American Revolutionary War|southern strategy]]' to win back their rebellious North American colonies. This campaign began in December 1778 with the [[Capture of Savannah|capture of Savannah, Georgia]], and gained further ground in January 1780, when General [[Henry Clinton (1730–1795)|Sir Henry Clinton]] led an army and [[Siege of Charleston|captured Charleston, South Carolina]]. Clinton returned to New York in the summer of 1780, leaving Lord Cornwallis the task of fortifying the South and raising the anticipated large numbers of [[Loyalist (American Revolution)|Loyalists]]. The [[Continental Army]] in the south, most of which had surrendered at Charleston, was completely driven from [[South Carolina]] in the May 1780 [[Battle of Waxhaws]]. ||| Background ||| ||| +0 Battle of Camden ||| Siege of Charleston ||| The '''Battle of Camden''' was a major victory for the [[Kingdom of Great Britain|British]] in the [[Southern theater of the American Revolutionary War|Southern theater]] of the [[American Revolutionary War]] (American War of Independence). On August 16, 1780, British forces under [[Lieutenant General]] [[Charles Cornwallis|Charles, Lord Cornwallis]] routed the American forces of [[Major General]] [[Horatio Gates]] about 10 km (five miles) north of [[Camden, South Carolina]], strengthening the British hold on the [[Province of Carolina|Carolinas]] following the [[Siege of Charleston|capture of Charleston]]. ||| ||| ||| +0 Battle of Camp Hill ||| Battle of Edgehill ||| Historian John Willis-Bund, said that one characteristic of Charles were the small acts of vengeance in which he indulged and so among the orders given to Prince Rupert for the Lichfield expedition was that he should teach Birmingham a lesson for their disloyalty, especially for the insults they had put on the King in October, 1642, before the [[Battle of Edgehill]], when they plundered the Royal Coach. ||| Prelude ||| ||| +0 Battle of Cane Hill ||| Battle of Pea Ridge ||| The Battle of Cane Hill was part of a Confederate attempt to drive the Union forces back into [[Missouri]] and recapture ground lost during the [[Battle of Pea Ridge|Pea Ridge campaign]] of early 1862, when Union forces had secured parts of northern Arkansas. Now, Confederate General [[Thomas C. Hindman]] moved his army of 11,000 soldiers into [[Fort Smith, Arkansas]], and prepared to move across the Boston Mountains into the extreme northwestern corner of the state. Awaiting him there was Blunt with 5,000 troops. Hindman hoped to attack Blunt's force, which was over {{convert|70|mi|km}} from the nearest Union reinforcements. Hindman dispatched Marmaduke and 2,000 cavalry troopers to hold Blunt in place while Hindman moved the rest of his force through the mountains. ||| ||| ||| +0 Battle of Cane Hill ||| Battle of Prairie Grove ||| This small engagement was a prelude to a much larger clash at the [[Battle of Prairie Grove]], Arkansas, nine days later. Blunt's advance left him dangerously isolated from Union forces in [[Springfield, Missouri]], but when Hindman attacked again on December 7, he again failed to expel Blunt from northwestern Arkansas. ||| ||| ||| +0 Battle of Cape Henry ||| Siege of Yorktown ||| Lafayette, when he learned of the French failure, turned back north to rejoin Washington. Washington then ordered Lafayette to stay in Virginia, having learned of the reinforcements sent to Arnold. Although the French operation to support Lafayette was unsuccessful, the later naval operations by the [[François Joseph Paul de Grasse|Comte de Grasse]] that culminated in the French naval victory in the September 1781 [[Battle of the Chesapeake]] paved the way for a successful naval blockade and [[Siege of Yorktown|land siege]] of [[Charles Cornwallis, 1st Marquess Cornwallis|Lord Cornwallis']] army at [[Yorktown, Virginia]]. ||| Aftermath ||| ||| +0 Battle of Cape Kaliakra ||| Battle of Trafalgar ||| The tactics used by Ushakov were a serious innovation in the theory of sea warfare. After that, a similar maneuver used [[Horatio Nelson, 1st Viscount Nelson|Admiral Nelson]] in the [[Battle of Aboukir (1799)|Battle of Aboukir]] in 1799 and the [[Battle of Trafalgar]] in 1805. ||| Consequence ||| ||| +0 Battle of Cape Matapan ||| Battle of Crete ||| The Italian fleet did not venture into the Eastern Mediterranean again until the [[Battle of Crete|fall of Crete]] two months later. Despite his impressive victory, Admiral Cunningham was somewhat disappointed with the failure of the destroyers to make contact with ''Vittorio Veneto''. The escape of the Italian battleship was, in the words of the British Admiral, 'much to be regretted'. ||| Aftermath ||| Balance of naval power in the Mediterranean ||| +0 Battle of Cape Spartel ||| Great Siege of Gibraltar ||| The '''Battle of Cape Spartel''' was an indecisive naval battle between a [[France|Franco]]-[[Spain|Spanish]] fleet under [[Admiral]] [[Luis de Córdova y Córdova]] and a [[Kingdom of Britain|British]] fleet under Admiral [[Richard Howe, 1st Earl Howe|Richard Howe]]. These forces met on 20 October 1782 after Howe successfully resupplied [[Gibraltar]], then [[Great Siege of Gibraltar|under siege]] by [[House of Bourbon|Bourbon]] forces during the [[Anglo-French War 1778|Anglo-French War]] and the [[Anglo-Spanish War (1779)|Anglo-Spanish War]]. ||| ||| ||| +0 Battle of Cape St Vincent (1797) ||| Battle of Trafalgar ||| By 4:00, the Spanish ship ''Santísima Trinidad'' was relieved by two of her escorts and made away from the scene. Admiral Moreno's squad put together the survivors of Córdoba's group and turned to assist the harassed Spanish sails. Jervis signalled his fleet to cover the prizes and disabled vessels and at 4:15 the frigates were directed to take the prizes in tow. At 4:39 the fleet was ordered to take station in line astern of ''Victory''. The battle was by now almost over with only some remaining skirmishing between ''Britannia'', ''Orion'' and the departing Spanish covering ''Santísima Trinidad'' (which was to later serve as the Spanish flagship at the [[Battle of Trafalgar]]). ||| Battle ||| 3:00 p.m. ||| +0 Battle of Cape St Vincent (1797) ||| Battle of the Nile ||| The containment of the Spanish threat, and the further reinforcement of his command, enabled Jervis to send a squadron under Nelson back into the Mediterranean the following year. That squadron, including Saumarez's [[HMS Orion (1787)|''Orion'']], Troubridge's ''Culloden'', and the ''Goliath'', now under Foley, re-established British command of the Mediterranean at the [[Battle of the Nile]]. ||| Aftermath ||| ||| +0 Battle of Cape St Vincent (1797) ||| Spanish Armada ||| As the last ship in the British line passed the Spanish, the British line had formed a U shape with ''Culloden'' in the lead and on the reverse course but chasing the rear of the Spanish. At this point the Spanish lee division bore up to make an effort to join their compatriots to windward. Had they managed to do this, the battle would have ended indecisively and with the Spanish fleet running for Cádiz. The British ships would have been left harrying their sterns in much the manner of the [[Spanish Armada|Armada, 1588]]. ||| Battle ||| 12:30 p.m. ||| +0 Battle of Cape St. Vincent (1780) ||| Battle of Cape St Vincent (1797) ||| * [[Battle of Cape St. Vincent (disambiguation)]], for several other naval battles fought off Cape St Vincent, the best known in [[Battle of Cape St Vincent (1797)|1797]] ||| See also ||| ||| +0 Battle of Carillon ||| American Revolutionary War ||| The fort, abandoned by its garrison, was [[Battle of Ticonderoga (1759)|captured by the British the following year]], and it has been known as Fort Ticonderoga (after its location) ever since. This battle gave the fort a reputation for impregnability that had an effect on future military operations in the area. Despite several large-scale military movements through the area, in both the French and Indian War and the [[American Revolutionary War]], this was the only major battle fought near the fort's location. ||| ||| ||| +0 Battle of Casaglia ||| Battle of Occhiobello ||| After Murat was defeated at the [[Battle of Occhiobello]], the Neapolitans stopped their advance and made a defensive line on the [[Po River]]. However, even from his new position, Murat was still able to threaten the key Austrian held city of [[Ferrara]], which had been under attack since 7 April. The commander of the main Austrian force on the north bank of the Po, [[Johann Maria Philipp Frimont|Johann Frimont]], decided to break out from his bridgehead at [[Occhiobello]] and drive Murat from his position, forcing him to lift the [[Siege of Ferrara]]. ||| Battle ||| ||| +0 Battle of Cassano (1799) ||| Siege of Mantua (1799) ||| When [[Field Marshal]] Suvorov joined the allied army, he took over the top command from Kray, though the latter had just been promoted to [[Feldzeugmeister]]. The arrival of General of Cavalry [[Michael von Melas]] displaced Kray the top Austrian field command. Therefore, Kray was assigned to capture the fortress of [[Mantua]], while Melas and Suvorov pursued the French. The [[Siege of Mantua (1799)|Siege of Mantua]] lasted from April until the garrison surrendered on 28 July. ||| Background ||| ||| +0 Battle of Cassano (1799) ||| War of the Second Coalition ||| The '''Battle of Cassano d'Adda''' was fought on 27 April 1799 near [[Cassano d'Adda]], about {{convert|28|km|mi|abbr=on}} ENE of [[Milan]]. It resulted in a victory for the [[Habsburg Monarchy|Austrians]] and [[Russian Empire|Russians]] under [[Alexander Suvorov]] over [[Jean Victor Marie Moreau|Jean Moreau's]] [[French First Republic|French]] army. The action took place during the [[War of the Second Coalition]] during the larger conflict known as the [[French Revolutionary Wars]]. ||| ||| ||| +0 Battle of Castalla ||| Siege of Tarragona (1813) ||| The Anglo-Allied force lost 440 casualties. The next action in the theater was the [[Siege of Tarragona (1813)|Siege of Tarragona]]. ||| Results ||| ||| +0 Battle of Castel di Sangro ||| Battle of Tolentino ||| Following defeat at the [[Battle of Tolentino]], the 4th Division of the Neapolitan army, commanded by General Pignatelli Cerchiara had detached from the main army under their king, [[Joachim Murat]], and were retreating south. The commander of the Austrian force, Frederick Bianchi, dispatched his advanced guard, consisting of Hungarian [[hussar]]s and [[county of Tyrol|Tyrolean]] [[jäger (military)|jägers]], in pursuit. The Austrians finally caught up with the Neapolitans on 13 May in the town of Castel di Sangro. Seeing the hussars, the Neapolitans formed squares. However, during the cause of the disastrous campaign, the 4th Division had been reduced to less than 2,000 men. The hussars broke the Neapolitan square and sent the remaining troops into disarray. ||| ||| ||| +0 Battle of Castelfranco Veneto ||| Ulm Campaign ||| The [[Ulm Campaign]] of October 1805 resulted in an Austrian disaster when the [[Grande Armée]] of [[Napoleon]] enveloped and destroyed most of its units. Afterward, only [[Michael von Kienmayer]]'s fleeing corps and a newly arriving Russian army under [[Mikhail Kutuzov]] stood between Napoleon and the Austrian capital of [[Vienna]]. After hearing the news of Ulm, the main army of [[Archduke Charles, Duke of Teschen]] began withdrawing from northern Italy and [[Archduke John of Austria]]'s smaller army pulled out of the [[County of Tyrol]]. In the confusion, Rohan's brigade became separated from John's army. First, Rohan attempted to join part of Charles' army. Failing, he had his men move south to link up with the Austrian garrison of [[Venice]]. After an epic march Rohan's brigade was cornered short of Venice. The issue of the war would be determined at the [[Battle of Austerlitz]] in early December. ||| ||| ||| +0 Battle of Castiglione ||| Battle of Arcole ||| '''The Battle of Castiglione''' saw the [[Army of Italy (France)|French Army of Italy]] under General [[Napoleon Bonaparte]] attack an army of [[Habsburg Austria]] led by ''[[Feldmarschall]]'' [[Dagobert Sigmund von Wurmser]] on 5 August 1796. The outnumbered Austrians were defeated and driven back along a line of hills to the river crossing at Borghetto, where they retired beyond the [[Mincio]] River. The town of [[Castiglione delle Stiviere]] is located {{convert|10|km|mi|0}} south of [[Lake Garda]] in northern Italy. This battle was one of four famous victories won by Bonaparte during the [[War of the First Coalition]], part of the [[Wars of the French Revolution]]. The others were [[Battle of Bassano|Bassano]], [[Battle of Arcole|Arcole]], and [[Battle of Rivoli|Rivoli]]. ||| ||| ||| +0 Battle of Castiglione (1706) ||| Battle of Ramillies ||| Since May 1706 a French army of 48,000 under [[Louis d'Aubusson de la Feuillade]] was besieging the Savoy capital Turin, while another army of 44,000 under [[Louis Joseph de Bourbon, duc de Vendôme]] barred the Austrians' path from [[Lake Garda]]. However Vendôme was recalled to Flanders to restore order after the lost [[Battle of Ramillies]], leaving command to the inexperienced [[Philippe II, Duke of Orléans|Duke of Orléans]]. [[Eugene of Savoy]] exploited the situation and dashed to Turin, forcing Orléans to split his forces. He left 23,000 men under the [[Jacques Eléonor Rouxel de Grancey|Count of Médavy]] near the [[Adige]] in case allied reinforcements appeared from the other side of the Alps. ||| The battle ||| ||| +0 Battle of Castiglione (1706) ||| Battle of Toulon (1707) ||| The [[Battle of Toulon (1707)|attack on Toulon]] materialized on 29 July but by now the French were prepared and strengthened, and the attack was a failure. ||| Aftermath ||| ||| +0 Battle of Castlebar ||| Battle of Vinegar Hill ||| The [[Lord Lieutenant of Ireland]], [[Charles Cornwallis, 1st Marquess Cornwallis|Lord Cornwallis]], requested urgent reinforcements from England but in the interim all available forces were concentrated at [[Castlebar]] under the command of General [[Gerard Lake, 1st Viscount Lake|Gerard Lake]], the victor of the [[Battle of Vinegar Hill]]. The build-up of the British forces at Castlebar had reached 6,000 militia soldiers with dozens of [[artillery]] pieces and huge [[cache (disambiguation)|cache]]s of supplies by dawn of 27 August. ||| Background ||| ||| +0 Battle of Caulk's Field ||| Battle of Craney Island ||| The '''Battle of Caulk's Field''' occurred during the [[War of 1812]]. Similar to the [[Battle of Craney Island]] a year earlier, [[United States|American]] [[militia]] units were able to repulse a [[United Kingdom of Great Britain and Ireland|British]] landing attempt along the shores of the [[Chesapeake Bay]]. ||| ||| ||| +0 Battle of Cedar Creek ||| Battle of New Market ||| Sigel, in command of the Department of [[West Virginia]], had orders from Grant to move 'up the Valley' with 10,000 men to destroy the railroad center at [[Lynchburg, Virginia|Lynchburg]]. Sigel's force was quickly intercepted by 4,000 Confederate troops under Maj. Gen. [[John C. Breckenridge]], and defeated at the [[Battle of New Market]] on May 15. He retreated to Strasburg and was replaced by Maj. Gen. [[David Hunter]]. Hunter resumed the Union offensive and defeated Brig. Gen. [[William E. Jones|William E. 'Grumble' Jones]], who was killed in the [[Battle of Piedmont]] on June 6. Hunter occupied Staunton and joined with Brig. Gen. [[George Crook]]. His force of 20,000 men, ordered by Grant to live off the land, began a campaign of destruction. ||| Background ||| Sigel and Hunter ||| +0 Battle of Cedar Creek ||| Second Battle of Kernstown ||| Early got off to a good start. He drove down the Valley without opposition, bypassed [[Harpers Ferry, West Virginia|Harpers Ferry]], crossed the [[Potomac River]], and advanced into [[Maryland]]. Grant dispatched a corps under Maj. Gen. [[Horatio G. Wright]] and other troops under Crook to reinforce Washington and pursue Early. Early defeated a smaller force under Maj. Gen. [[Lew Wallace]] in the [[Battle of Monocacy]] on July 9, but this battle delayed his progress enough to allow time for the reinforcement of the defenses of Washington. Early attempted some tentative attacks against [[Battle of Fort Stevens|Fort Stevens]] (July 11-12) on the northern outskirts of Washington, but then withdrew to Virginia. A number of small battles ensued as the Union pursued, including the defeat of Crook at the [[Second Battle of Kernstown]] on July 24. ||| Background ||| Early's campaign ||| +0 Battle of Cedar Creek ||| Siege of Petersburg ||| Believing that Early could no longer muster attacks after more than a month of battling, Sheridan ordered the [[VI Corps (Union Army)|VI Corps]] under Maj. Gen. [[Horatio G. Wright]] to return to the [[Siege of Petersburg|Petersburg]] siege lines. However, Early's troops arrived at Hupp's Hill, just north of Strasburg, on October 13, deployed in battle formation, and began shelling Federal camps around Belle Grove plantation. Col. [[Joseph Thoburn]]'s Union division moved forward to silence the guns and engaged in a sharp fight with Kershaw's division, resulting in 209 Union casualties, 182 Confederate. Sheridan recalled Wright's corps, which by this time had reached [[Ashby Gap|Ashby's Gap]] in the Blue Ridge Mountains. He departed on October 16 for a conference in Washington with [[United States Secretary of War|Secretary of War]] [[Edwin M. Stanton]], accompanied by his Cavalry Corps as far as [[Front Royal, Virginia|Front Royal]], intending that those two divisions would then raid the [[Virginia Central Railroad]]. However, Sheridan changed his plan when he was notified that Early was sending [[Signal Corps in the American Civil War#Wig-wag signaling|wig-wag signals]] implying that Lt. Gen. [[James Longstreet]]'s corps might join him from Petersburg. This was disinformation on Early's part, hoping that it would induce the Federals to withdraw down the Valley, but instead Sheridan brought all of his forces back to the camps along Cedar Creek. ||| Background ||| Prelude to battle ||| +0 Battle of Cepeda (1820) ||| Chilean War of Independence ||| Supreme Director [[José Rondeau]] called back the Armies that were fighting the [[Argentine War of Independence]] to fight the Federals. The [[Army of the Andes]], commanded by [[José de San Martín]] refused to abandon the offensive against the [[Royalist (Spanish American Revolution)|royalists]] in [[Chilean War of Independence|Chile]] and [[Peruvian War of Independence|Peru]]. The [[Army of the North]], commanded by [[Manuel Belgrano]], [[Arequito Revolt|mutinied at Arequito]], as the troops and the officiality refused to fight a [[Argentine Civil War|civil war]], and asked instead to go back to the [[Upper Peru|northern frontier]] to fight the royalists. ||| ||| ||| +0 Battle of Chalai ||| Northern Theater of Eelam War IV ||| The '''Battle of Chalai''' was an armed confrontation over control of Chalai, Sri Lanka between the [[55 Division (Sri Lanka)|55 Division]] of the [[Military of Sri Lanka|Sri Lankan Military]] and the [[Liberation Tigers of Tamil Eelam]] (LTTE) during the [[Sri Lankan civil war]], fought in February 2009. Chalai was the final [[Sea Tigers|Sea Tiger]] base held by the LTTE during the [[Northern Theater of Eelam War IV|Northern Theater]] of [[Eelam War IV]]. ||| ||| ||| +0 Battle of Champaubert ||| Battle of Vauchamps ||| This victory split Blücher's army in two. The next day Napoleon attacked the vanguard and defeated [[Fabian Gottlieb von Osten-Sacken|Osten-Sacken]] and [[Ludwig Yorck von Wartenburg|Yorck]] at [[Battle of Montmirail|Montmirail]], before turning and defeating the main body of Blücher's army [[Battle of Vauchamps]] on 14 February. ||| Aftermath ||| ||| +0 Battle of Chancellorsville ||| Battle of Antietam ||| In the [[Eastern Theater of the American Civil War]], the basic offensive plan for the [[Union (American Civil War)|Union]] had been to advance and seize the [[Confederate States of America|Confederate]] capital, [[Richmond, Virginia]]. In the first two years of the war, four major attempts had failed: the first foundered just miles away from [[Washington, D.C.]], at the [[First Battle of Bull Run]] (First Manassas) in July 1861. Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] took an amphibious approach, landing his [[Army of the Potomac]] on the [[Virginia Peninsula]] in the spring of 1862 and coming within {{convert|6|mi|km}} of Richmond before being turned back by Gen. [[Robert E. Lee]] in the [[Seven Days Battles]]. That summer, Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] was defeated at the [[Second Battle of Bull Run]]. In December 1862, Maj. Gen. [[Ambrose Burnside]] commanded the Army of the Potomac and attempted to reach Richmond by way of [[Fredericksburg, Virginia]], where he was defeated at the [[Battle of Fredericksburg]]. This string of Union defeats was interrupted in September 1862 when Lee moved into Maryland and his campaign was turned back by McClellan at the [[Battle of Antietam]], but this represented no threat to Richmond. ||| Background ||| Union attempts against Richmond ||| +0 Battle of Chancellorsville ||| Battle of Fredericksburg ||| In the [[Eastern Theater of the American Civil War]], the basic offensive plan for the [[Union (American Civil War)|Union]] had been to advance and seize the [[Confederate States of America|Confederate]] capital, [[Richmond, Virginia]]. In the first two years of the war, four major attempts had failed: the first foundered just miles away from [[Washington, D.C.]], at the [[First Battle of Bull Run]] (First Manassas) in July 1861. Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] took an amphibious approach, landing his [[Army of the Potomac]] on the [[Virginia Peninsula]] in the spring of 1862 and coming within {{convert|6|mi|km}} of Richmond before being turned back by Gen. [[Robert E. Lee]] in the [[Seven Days Battles]]. That summer, Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] was defeated at the [[Second Battle of Bull Run]]. In December 1862, Maj. Gen. [[Ambrose Burnside]] commanded the Army of the Potomac and attempted to reach Richmond by way of [[Fredericksburg, Virginia]], where he was defeated at the [[Battle of Fredericksburg]]. This string of Union defeats was interrupted in September 1862 when Lee moved into Maryland and his campaign was turned back by McClellan at the [[Battle of Antietam]], but this represented no threat to Richmond. ||| Background ||| Union attempts against Richmond ||| +0 Battle of Chancellorsville ||| Battle of Gettysburg ||| Stonewall Jackson wanted to press his advantage before Hooker and his army could regain their bearings and plan a counterattack, which might still succeed because of the sheer disparity in numbers. He rode out onto the Plank Road that night to determine the feasibility of a night attack by the light of the full moon, traveling beyond the farthest advance of his men. When one of his staff officers warned him about the dangerous position, Jackson replied, 'The danger is all over. The enemy is routed. Go back and tell A.P. Hill to press right on.' As he and his staff started to return, they were incorrectly identified as Union cavalry by men of the [[18th North Carolina Infantry]], who hit Jackson with [[friendly fire]]. Jackson's three bullet wounds were not in themselves life-threatening, but his left arm was broken and had to be amputated. He contracted [[pneumonia]] and died on May 10. His death was a devastating loss for the Confederacy. Some historians and participants—particularly those of the postbellum [[Lost Cause of the Confederacy|Lost Cause]] movement—attribute the Confederate defeat at [[Battle of Gettysburg|Gettysburg]] two months later to Jackson's absence. ||| Battle ||| May 2: Jackson's flank attack ||| +0 Battle of Chancellorsville ||| Battle of the Wilderness ||| The battlefield was a scene of widespread destruction, covered with dead men and animals. The Chancellor family, whose house was destroyed during the battle, placed the entire 854-acre property for sale four months after the battle. A smaller version of the house was rebuilt using some of the original materials, which served as a landmark for many of the veteran reunions of the late 19th century. In 1927, the rebuilt house was destroyed by fire. That same year, the [[United States Congress]] authorized the [[Fredericksburg and Spotsylvania National Military Park]], which preserves some of the land that saw fighting in the 1862 [[Battle of Fredericksburg]], the Chancellorsville Campaign, the [[Battle of the Wilderness]], and the [[Battle of Spotsylvania Court House]] (the latter two being key battles in the 1864 [[Overland Campaign]]). ||| Aftermath ||| Battlefield preservation ||| +0 Battle of Chancellorsville ||| Peninsula Campaign ||| In the [[Eastern Theater of the American Civil War]], the basic offensive plan for the [[Union (American Civil War)|Union]] had been to advance and seize the [[Confederate States of America|Confederate]] capital, [[Richmond, Virginia]]. In the first two years of the war, four major attempts had failed: the first foundered just miles away from [[Washington, D.C.]], at the [[First Battle of Bull Run]] (First Manassas) in July 1861. Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] took an amphibious approach, landing his [[Army of the Potomac]] on the [[Virginia Peninsula]] in the spring of 1862 and coming within {{convert|6|mi|km}} of Richmond before being turned back by Gen. [[Robert E. Lee]] in the [[Seven Days Battles]]. That summer, Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] was defeated at the [[Second Battle of Bull Run]]. In December 1862, Maj. Gen. [[Ambrose Burnside]] commanded the Army of the Potomac and attempted to reach Richmond by way of [[Fredericksburg, Virginia]], where he was defeated at the [[Battle of Fredericksburg]]. This string of Union defeats was interrupted in September 1862 when Lee moved into Maryland and his campaign was turned back by McClellan at the [[Battle of Antietam]], but this represented no threat to Richmond. ||| Background ||| Union attempts against Richmond ||| +0 Battle of Chancellorsville ||| Second Battle of Bull Run ||| In the [[Eastern Theater of the American Civil War]], the basic offensive plan for the [[Union (American Civil War)|Union]] had been to advance and seize the [[Confederate States of America|Confederate]] capital, [[Richmond, Virginia]]. In the first two years of the war, four major attempts had failed: the first foundered just miles away from [[Washington, D.C.]], at the [[First Battle of Bull Run]] (First Manassas) in July 1861. Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] took an amphibious approach, landing his [[Army of the Potomac]] on the [[Virginia Peninsula]] in the spring of 1862 and coming within {{convert|6|mi|km}} of Richmond before being turned back by Gen. [[Robert E. Lee]] in the [[Seven Days Battles]]. That summer, Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] was defeated at the [[Second Battle of Bull Run]]. In December 1862, Maj. Gen. [[Ambrose Burnside]] commanded the Army of the Potomac and attempted to reach Richmond by way of [[Fredericksburg, Virginia]], where he was defeated at the [[Battle of Fredericksburg]]. This string of Union defeats was interrupted in September 1862 when Lee moved into Maryland and his campaign was turned back by McClellan at the [[Battle of Antietam]], but this represented no threat to Richmond. ||| Background ||| Union attempts against Richmond ||| +0 Battle of Chancellorsville ||| Seven Days Battles ||| In the [[Eastern Theater of the American Civil War]], the basic offensive plan for the [[Union (American Civil War)|Union]] had been to advance and seize the [[Confederate States of America|Confederate]] capital, [[Richmond, Virginia]]. In the first two years of the war, four major attempts had failed: the first foundered just miles away from [[Washington, D.C.]], at the [[First Battle of Bull Run]] (First Manassas) in July 1861. Maj. Gen. [[George B. McClellan]]'s [[Peninsula Campaign]] took an amphibious approach, landing his [[Army of the Potomac]] on the [[Virginia Peninsula]] in the spring of 1862 and coming within {{convert|6|mi|km}} of Richmond before being turned back by Gen. [[Robert E. Lee]] in the [[Seven Days Battles]]. That summer, Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] was defeated at the [[Second Battle of Bull Run]]. In December 1862, Maj. Gen. [[Ambrose Burnside]] commanded the Army of the Potomac and attempted to reach Richmond by way of [[Fredericksburg, Virginia]], where he was defeated at the [[Battle of Fredericksburg]]. This string of Union defeats was interrupted in September 1862 when Lee moved into Maryland and his campaign was turned back by McClellan at the [[Battle of Antietam]], but this represented no threat to Richmond. ||| Background ||| Union attempts against Richmond ||| +0 Battle of Chawinda ||| Battle of Kursk ||| The '''Battle of Chawinda''' was a part of the [[Sialkot]] Campaign in the [[Indo-Pakistani War of 1965]]. It was one of the largest [[tank]] battles in history since the [[Battle of Kursk]] in [[World War II]]. ||| ||| ||| +0 Battle of Chawinda ||| Battle of Phillora ||| The Indian plan was to drive a wedge between Sialkot and the 6th Armoured Division. In fact there was only a single regiment there at the time. The Indian 1st Armoured Division's drive quickly divided, with the 43rd Lorried Infantry Brigade supported by a tank regiment attacking Gat, while the main blow of the 1st Armoured Brigade was [[Battle of Phillora|hurled against Phillaura]]. Pakistani air attacks caused moderate damage to the tank columns, but exacted a heavier toll on the truck columns and infantry. The terrain features of the area were very different from those around Lahore, being quite dusty, and the approach of the Indian attack was evident to the 25th Cavalry by the rising dust columns on the Charwah-Phillaura road. ||| The battle ||| ||| +0 Battle of Chawinda ||| World War II ||| The '''Battle of Chawinda''' was a part of the [[Sialkot]] Campaign in the [[Indo-Pakistani War of 1965]]. It was one of the largest [[tank]] battles in history since the [[Battle of Kursk]] in [[World War II]]. ||| ||| ||| +0 Battle of Cherbourg ||| Battle of Bloody Gulch ||| In the immediate aftermath of the landings the priority for the invasion forces at Utah Beach was to link up with the main Allied landings further east. On June 9, the 101st Airborne Division managed to cross the [[Douve river|Douve River valley]] and [[Battle of Carentan|captured Carentan]] the next day. After vicious house-to-house fighting during the [[Battle of Carentan]], the airborne troops were able to take the town, ensuring the Allies a continuous front. The front was maintained despite a German counterattack reinforced by armored units on the 13th, known as the [[Battle of Bloody Gulch]]. ||| Landings ||| ||| +0 Battle of Cherbourg ||| Normandy landings ||| The '''Battle of Cherbourg''' was part of the [[Operation Overlord|Battle of Normandy]] during [[World War II]]. It was fought immediately after the successful [[Allies of World War II|Allied]] [[Normandy landings|landings on June 6, 1944]]. Allied troops mainly [[United States Army|American]] isolated and captured the fortified port, which was considered vital to the [[Western Front (World War II)|campaign in Western Europe]], in a hard-fought, month-long campaign. ||| ||| ||| +0 Battle of Cheriton ||| Battle of Alton ||| Early in 1644, a Royalist army under [[Ralph Hopton, 1st Baron Hopton|Lord Hopton]] faced a Parliamentarian army under [[William Waller|Sir William Waller]] in the southern counties of England. After some reverses during the previous December, culminating in the [[Battle of Alton]], Hopton had withdrawn to [[Winchester]] to regroup and recruit. He was joined here by a detachment from the King's main 'Oxford Army' under the [[Patrick Ruthven, 1st Earl of Brentford|Earl of Forth]], who unwillingly took command of the army. They resumed their advance eastward early in March. ||| Campaign ||| ||| +0 Battle of Cheriton ||| Battle of Lostwithiel ||| The defeat of Forth's and Hopton's army meant that the Parliamentarian armies of Essex and Waller could concentrate against the King at Oxford. Although Charles was able to partly restore the situation later in 1644 by gaining victories at [[Battle of Cropredy Bridge|Cropredy Bridge]] and [[Battle of Lostwithiel|Lostwithiel]], the Royalists could never again resume the offensive in the south of England. ||| Results ||| ||| +0 Battle of Chesma ||| Battle of the Nile ||| After organizing a plan of attack, the Russian battle line (see Table 1) sailed towards the south end of the Ottoman line and then turned north, coming alongside the Ottomans, with the tail end coming into action last (Elphinston had wanted to approach the northern end first, then follow the wind along the Ottoman line, attacking their ships one by one – the method used by [[Horatio Nelson, 1st Viscount Nelson|Nelson]] at the [[Battle of the Nile]] in 1798). ||| Prelude ||| ||| +0 Battle of Chickamauga ||| Battle of Gettysburg ||| The '''Battle of Chickamauga''', fought September 19–20, 1863, marked the end of a [[Union Army|Union]] offensive in southeastern [[Tennessee]] and northwestern [[Georgia (U.S. state)|Georgia]] called the [[Chickamauga Campaign]]. The battle was the most significant Union defeat in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]] and involved the second highest number of casualties in the war following the [[Battle of Gettysburg]]. It was the first major battle of the war that was fought in [[Georgia (U.S. state)|Georgia]]. ||| ||| ||| +0 Battle of Chickamauga ||| Battle of Perryville ||| On the Union side, Rosecrans held a council of war with most of his corps and division commanders to determine a course of action for September 20. The Army of the Cumberland had been significantly hurt in the first day's battle and had only five fresh brigades available, whereas the Confederate army had been receiving reinforcements and now outnumbered the Federals. Both of these facts ruled out a Union offensive. The presence of Assistant Secretary of War [[Charles Anderson Dana|Charles A. Dana]] at the meeting made any discussion of retreating difficult. Rosecrans decided that his army had to remain in place, on the defensive. He recalled that Bragg had retreated after [[Battle of Perryville|Perryville]] and [[Battle of Stones River|Stones River]] and could conceivably repeat that behavior. ||| Opening engagements: September 18 ||| Planning for the second day ||| +0 Battle of Chickamauga ||| Battle of Stones River ||| On the Union side, Rosecrans held a council of war with most of his corps and division commanders to determine a course of action for September 20. The Army of the Cumberland had been significantly hurt in the first day's battle and had only five fresh brigades available, whereas the Confederate army had been receiving reinforcements and now outnumbered the Federals. Both of these facts ruled out a Union offensive. The presence of Assistant Secretary of War [[Charles Anderson Dana|Charles A. Dana]] at the meeting made any discussion of retreating difficult. Rosecrans decided that his army had to remain in place, on the defensive. He recalled that Bragg had retreated after [[Battle of Perryville|Perryville]] and [[Battle of Stones River|Stones River]] and could conceivably repeat that behavior. ||| Opening engagements: September 18 ||| Planning for the second day ||| +0 Battle of Chillianwala ||| Battle of Gujrat ||| Gough was criticised for his handling of the battle, and was relieved of command and was superseded by General [[Charles James Napier]]. Before Napier could arrive from England to take over command, Gough had fought the decisive [[Battle of Gujrat|Battle of Goojerat]] (or Gujrat, Gujerat). ||| Result ||| ||| +0 Battle of Chillianwala ||| Charge of the Light Brigade ||| Within the British Army, such was the consternation over the events at Chillianwala that, after the disastrous [[Charge of the Light Brigade]], when [[George Bingham, 3rd Earl of Lucan|Lord Lucan]] remarked '''This is a most serious matter''', [[Richard Airey, 1st Baron Airey|General Airey]] replied, '''These sort of things will happen in war. It is nothing to Chillianwala.''' ||| Result ||| ||| +0 Battle of Chillianwala ||| First Anglo-Sikh War ||| The Second Anglo-Sikh war broke out in the Punjab, which had recently lost much of its independence to the [[British East India Company]] following the [[First Anglo-Sikh War]], in April 1848, when the city of [[Multan]] rebelled under [[Dewan Mulraj]]. The East India Company's Commissioner for the Punjab, [[Sir Frederick Currie, 1st Baronet|Frederick Currie]], sent several forces of locally raised troops to help quell the revolt. One of these forces consisted largely of Sikhs, formerly from the [[Khalsa]], the army of the [[Sikh Empire]], under [[Sher Singh Attariwalla]]. Some junior British Political Officers viewed this development with alarm as Sher Singh's father, [[Chattar Singh Attariwalla]], was known to be plotting sedition in [[Hazara, Pakistan|Hazara]], north of the Punjab. ||| Prelude ||| ||| +0 Battle of Chinhat ||| Siege of Lucknow ||| By about 11:30 a.m, the retreat had been successfully completed. The British Residency at Lucknow, to which Lawrence withdrew, was then the scene of the [[Siege of Lucknow]] until November 1857. ||| The retreat ||| ||| +0 Battle of Chippawa ||| Capture of Fort Erie ||| On July 3, Brown's army, consisting of the regular brigades commanded by Scott (with 1,377 men) and Brigadier General [[Eleazar Wheelock Ripley]] (with 1,082 men), and four companies of artillery numbering 327 men under Major Jacob Hindman, easily surrounded and captured [[Capture of Fort Erie|Fort Erie]] which was defended only by two weak companies under Major Thomas Buck. After a brigade of 750 volunteers from the militia under Brigadier General [[Peter B. Porter]], together with 600 [[Iroquois]], arrived on July 4, Scott began advancing north along the portage road alongside the Niagara River. A British covering force under Lieutenant Colonel [[Thomas Pearson]] was easily driven back before they could destroy any of the bridges or block the road with fallen trees. ||| Background ||| Niagara campaign ||| +0 Battle of Chippawa ||| Peninsular War ||| Early 1814, it was clear that [[Napoleon I|Napoleon]] was defeated in [[Europe]], and seasoned British veteran soldiers from the [[Peninsular War]] would be redeployed to Canada. The [[United States Secretary of War]], [[John Armstrong, Jr.|John Armstrong]], was eager to win a victory in Canada before British reinforcements arrived there. ||| Background ||| ||| +0 Battle of Chojnice (1656) ||| Deluge (history) ||| The '''Battle of Chojnice''' (''Battle of Konitz'') was a surprise nighttime attack followed by a run-and-chase [[battle]] during [[Deluge (history)|The Deluge]]. ||| ||| ||| +0 Battle of Chongju (1950) ||| New Guinea campaign ||| Australia was one of the first nations to commit units to the fighting, playing a small but sometimes significant part in the [[United Nations Command]], which was initially led by [[General of the Army (United States)|General]] [[Douglas MacArthur]]. Training and re-equipment began immediately, while hundreds of reinforcements were hastily recruited in Australia as part of [[K Force]]; they soon began arriving to fill out the battalion. The battalion's commanding officer, [[Lieutenant Colonel (Australia)|Lieutenant Colonel]] Floyd Walsh, was subsequently replaced by Lieutenant Colonel [[Charles Hercules Green|Charles Green]]. An officer with extensive operational experience fighting the Japanese in [[New Guinea campaign|New Guinea]] during the [[Second World War]], Green took over from Walsh due to the latter's perceived inexperience. ||| Background ||| Military situation ||| +0 Battle of Château-Thierry (1918) ||| Russian Revolution ||| Despite the [[Russian Revolution|revolution in Russia]], fortune seemed to favor the Allies with the arrival of the Americans to France. However, these troops needed time to train before they could be combat effective. Recognizing the window of opportunity, Ludendorff consolidated the manpower freed up from the [[Eastern Front (World War I)|Eastern Front]] to conduct [[Spring Offensive|Operation ''Michael'']] in order to split the Allies' lines. The successes of the German [[Stormtrooper]]s [[infiltration tactics]] earned Germany approximately 40 miles of territory. But the offensive lost momentum when it surpassed its supply lines. ||| Background ||| ||| +0 Battle of Cisterna ||| Battle of Monte Cassino ||| On 22 January 1944, the Allies launched [[Battle of Anzio|Operation Shingle]], the [[Amphibious warfare|amphibious landing]] by the [[United States Army|U.S.]] and [[British Army|British]] [[Division (military)|division]]s of [[VI Corps (United States)|U.S. VI Corps]] in the area of [[Anzio]] and [[Nettuno]]. This was designed to unhinge the formidable [[Wehrmacht|German]] [[Winter Line|Gustav Line]] defenses some {{convert|60|mi|km|abbr=on}} to the southeast which had been under attack from the south by the other three [[corps]] (one British, one French and one U.S.) of [[Mark W. Clark|Mark Clark]]'s [[United States Army North|United States Fifth Army]] since 16 January in the first [[Battle of Monte Cassino]]. Following the landings, which had been virtually unopposed, [[John P. Lucas]]—the VI Corps commander—had chosen a cautious strategy of consolidating the [[beachhead]] and building up his force strength, which also allowed time for the Germans to reinforce their defensive positions. By 29 January, there were 69,000 men in the beachhead but the Germans had also had time to react and move 71,500 troops to face them. ||| Background ||| ||| +0 Battle of Cockpit Point ||| First Battle of Bull Run ||| After victory at [[First Battle of Bull Run]], the [[Confederate States Army]] (CSA) established a defensive line from [[Centreville, Virginia|Centreville]] along the [[Occoquan River]] to the [[Potomac River]]. The Confederates used the Potomac's banks as gun positions to halt Union traffic on the river, protecting Manassas Junction to the west and Fredericksburg to the south and to close the Potomac River to shipping and isolate [[Washington, D.C.|Washington]]. In October 1861, the Confederates constructed batteries at Evansport (now downtown [[Quantico, Virginia|Quantico]], consisted of two batteries on the river bank, and another {{convert|400|yd|m|abbr=on}} inland), a CSA field battery located at the mouth of [[Chopawamsic Creek]] where it empties to the [[Potomac River|Potomac]] (now the Marine Corps Air Facility), Shipping Point (now Hospital Point on Quantico, number of guns unknown), Freestone Point (a CSA four-gun battery on the shore of the Potomac River, now within [[Leesylvania State Park]]), and Cockpit Point (near the current asphalt plant, consisted of six guns (one heavy gun) in four batteries, a powder magazine, and rear rifle pits, on top of a {{convert|75|ft|m|abbr=on}} high cliff known as Possum Nose). By mid-December, the Confederates had 37 heavy guns in position along the river. ||| ||| ||| +0 Battle of Colberger Heide ||| Battle of Fehmarn (1644) ||| While the Dano-Norwegian fleet gained a minor success when it subsequently managed to incarcerate the Swedish fleet at the [[Bay of Kiel]], the battle was not decisive: in a subsequent encounter, the Dano-Norwegian navy was utterly [[Battle of Fehmarn (1644)|defeated off the Fehmarn coast]]. The significance of the battle lies rather in it being retrospectively perceived as the last Dano-Norwegian victory over her long-time adversary, Sweden, in the two countries' struggle for control of the [[dominium maris baltici]], as well as the heroization of the Dano-Norwegian king's personal commitment during the battle, memorized in the famous [[Vilhelm Marstrand|Marstrand]] painting and the first lines of the Danish royal anthym ''[[Kong Christian stod ved højen mast]]''. {{cite book|title=Being Danish. Paradoxes of Identity in Everyday Life|first=Richard|last=Jenkins|publisher=Museum Tusculanum Press|year=2011|isbn=8763526034|pages=78-79}} ||| Impact ||| ||| +0 Battle of Cold Harbor ||| Battle of Antietam ||| Some authors (Catton, Esposito, Foote, McPherson, Grimsley) estimate the casualties for the major assault on June 3 and all agree on approximately 7,000 total Union casualties, 1,500 Confederate. Gordon Rhea, considered the preeminent modern historian of Grant's Overland campaign, has examined casualty lists in detail and has published a contrarian view in his 2002 book, ''Cold Harbor''. For the morning assault on June 3, he can account for only 3,500 to 4,000 Union killed, wounded, and missing, and estimates that for the entire day the Union suffered about 6,000 casualties, compared to Lee's 1,000 to 1,500. Rhea noted that although this was a horrific loss, Grant's main attack on June 3 was dwarfed by Lee's daily losses at [[Battle of Antietam|Antietam]], [[Battle of Chancellorsville|Chancellorsville]], and [[Pickett's Charge]], and is comparable to [[Battle of Malvern Hill|Malvern Hill]]. ||| Aftermath ||| ||| +0 Battle of Cold Harbor ||| Battle of Fredericksburg ||| At 4:30 a.m. on June 3, the three Union corps began to advance through a thick ground fog. Massive fire from the Confederate lines quickly caused heavy casualties and the survivors were pinned down. Although the results varied in different parts of the line, the overall repulse of the Union advance resulted in the most lopsided casualties since the assault on Marye's Heights at the [[Battle of Fredericksburg]] in 1862. ||| Battle ||| June 3 ||| +0 Battle of Cold Harbor ||| Battle of Malvern Hill ||| Some authors (Catton, Esposito, Foote, McPherson, Grimsley) estimate the casualties for the major assault on June 3 and all agree on approximately 7,000 total Union casualties, 1,500 Confederate. Gordon Rhea, considered the preeminent modern historian of Grant's Overland campaign, has examined casualty lists in detail and has published a contrarian view in his 2002 book, ''Cold Harbor''. For the morning assault on June 3, he can account for only 3,500 to 4,000 Union killed, wounded, and missing, and estimates that for the entire day the Union suffered about 6,000 casualties, compared to Lee's 1,000 to 1,500. Rhea noted that although this was a horrific loss, Grant's main attack on June 3 was dwarfed by Lee's daily losses at [[Battle of Antietam|Antietam]], [[Battle of Chancellorsville|Chancellorsville]], and [[Pickett's Charge]], and is comparable to [[Battle of Malvern Hill|Malvern Hill]]. ||| Aftermath ||| ||| +0 Battle of Cold Harbor ||| Battle of the Crater ||| The Battle of Cold Harbor was the final victory won by Lee's army during the war (part of his forces won the [[Battle of the Crater]] the following month, during the [[Siege of Petersburg]], but this did not represent a general engagement between the armies), and its most decisive in terms of casualties. The Union army, in attempting the futile assault, lost 10,000 to 13,000 men over twelve days. The battle brought the toll in Union casualties since the beginning of May to a total of more than 52,000, compared to 33,000 for Lee. Although the cost was great, Grant's larger army finished the campaign with lower relative casualties than Lee's. ||| Aftermath ||| ||| +0 Battle of Cold Harbor ||| Seven Days Battles ||| The battle was fought in central Virginia, in what is now [[Mechanicsville, Virginia|Mechanicsville]], over the same ground as the [[Battle of Gaines's Mill]] during the [[Seven Days Battles]] of 1862. Some accounts refer to the 1862 battle as the First Battle of Cold Harbor, and the 1864 battle as the Second Battle of Cold Harbor. Union soldiers were disturbed to discover skeletal remains from the first battle while entrenching. Cold Harbor was not a port city, despite its name. Rather, it described two rural crossroads named for the Cold Harbor Tavern (owned by the Isaac Burnett family) which provided shelter (harbor) but not hot meals. Old Cold Harbor stood two miles east of Gaines's Mill, and New Cold Harbor a mile southeast. Both were approximately {{convert|10|mi|km}} northeast of [[Richmond, Virginia|Richmond]], capital of the [[Confederate States of America|Confederacy]]. From these crossroads, the [[Union army]] was positioned to receive reinforcements sailing up the [[Pamunkey River]], and could attack either the Confederate capital or its [[Army of Northern Virginia]]. ||| Location ||| ||| +0 Battle of Cold Harbor ||| Siege of Petersburg ||| The Battle of Cold Harbor was the final victory won by Lee's army during the war (part of his forces won the [[Battle of the Crater]] the following month, during the [[Siege of Petersburg]], but this did not represent a general engagement between the armies), and its most decisive in terms of casualties. The Union army, in attempting the futile assault, lost 10,000 to 13,000 men over twelve days. The battle brought the toll in Union casualties since the beginning of May to a total of more than 52,000, compared to 33,000 for Lee. Although the cost was great, Grant's larger army finished the campaign with lower relative casualties than Lee's. ||| Aftermath ||| ||| +0 Battle of Colenso ||| Battle of Magersfontein ||| On this front, the Boers had made some raids and reconnaissances into the southern part of the province, but in the face of a large British army, they had retired north of the [[Tugela River]] at Colenso and dug in there, blocking the road and railway line to Ladysmith. Buller originally intended making a flank march to cross the Tugela at Potgieters Drift {{convert|80|km}} upstream of Colenso. On hearing that Gatacre and Methuen been defeated at the battles of [[Battle of Stormberg|Stormberg]] and [[Battle of Magersfontein|Magersfontein]], Buller felt he needed to relieve Ladysmith as soon as possible and resume overall command of the forces in South Africa, He decided to make a frontal assault at Colenso after two days' artillery bombardment, beginning on 13 December. ||| Background ||| ||| +0 Battle of Colenso ||| Battle of Spion Kop ||| Over the next month he made his original intended flank march to Potgieters Drift, but this ended with the disastrous [[Battle of Spion Kop]]. Eventually he returned to Colenso, and forced his way over the Tugela by laboriously outflanking and capturing Hlangwane, which dominated the Boer left. Even so, another ten days' fighting were necessary, but eventually Botha's forces were broken and forced to retreat, temporarily demoralised. Ladysmith was relieved on 28 February 1900. ||| Aftermath ||| ||| +0 Battle of Colenso ||| Relief of Ladysmith ||| Shortly before the outbreak of the war, General Sir [[Redvers Buller]] was dispatched to South Africa at the head of an Army Corps, and appointed Commander-in-Chief of all British forces in South Africa. On arrival, he found British garrisons besieged on widely separated fronts, with limited communications between the fronts. Having detached forces under Generals [[Paul Sanford Methuen, 3rd Baron Methuen|Lord Methuen]] and [[William Forbes Gatacre|Gatacre]] to the western and central fronts, Buller assumed command of his largest detachment and proposed to lead it to the [[Relief of Ladysmith|relief]] of a besieged British force in [[Ladysmith, KwaZulu-Natal|Ladysmith]], in [[KwaZulu-Natal Province|Natal]]. ||| Background ||| ||| +0 Battle of Columbus (1865) ||| Battle of Antietam ||| General [[Robert Toombs]], the successful defender of [[Burnside's Bridge]] at the [[Battle of Antietam]], commanded two cannon on the Georgia side of the upper bridge. These cannon were loaded with canister and prepared to slaughter anyone who tried to make their way through the covered bridge. Knowing that the soldiers running across the bridge were a mix of Union and Confederates, Toombs did not fire the cannon. ||| The battle ||| ||| +0 Battle of Columbus (1865) ||| Battle of Selma ||| Wilson left Gravelly Springs, [[Alabama]], on March 22, 1865, heading for [[Selma, Alabama|Selma]], a major Confederate manufacturing and supply center. The [[Battle of Selma]] was fought on April 2, 1865, against the highly skilled leadership of General [[Nathan Bedford Forrest]], whose men by now were hopelessly outnumbered by the invaders. The battle took place on the same day the Confederate capital of [[Richmond, Virginia|Richmond]] fell to the army of General [[Ulysses S. Grant]]. Forrest managed to inflict heavy casualties on the attackers, but [[James H. Wilson|Wilson]]'s raiders finally managed to break through the defenses and captured Selma by 7 p.m. that evening. Wilson's men then destroyed all the military supplies and looted the city before moving on. ||| Events leading to the battle ||| ||| +0 Battle of Connecticut Farms ||| Battle of Springfield (1780) ||| A fortnight later, Knyphausen made a second attempt to capture the Hobart Gap and threaten Washington's main army at the [[Battle of Springfield (1780)|Battle of Springfield]]. ||| British withdrawal ||| ||| +0 Battle of Connor ||| Battle of Faughart ||| The government forces under Butler did not engage Bruce, allowing him to consolidate his hold in Ulster. His occupation of Ulster encouraged risings in Meath and Connacht, further weakening de Burgh. Despite this, and another Scottish/Irish victory at the [[Battle of Skerries]], the campaign was to be defeated at the [[Battle of Faughart]]. ||| Aftermath ||| ||| +0 Battle of Cooch's Bridge ||| Battle of Brandywine ||| But the attack never came. Instead, on September 8, Howe moved his force north, through Newark and [[Hockessin]] into Pennsylvania. Upon realizing what the British were doing late in the night, Washington rushed his forces north as well to find a new defensive position. He settled on [[Chadds Ford]], just across the Delaware border, upon the [[Brandywine Creek (Christina River)|Brandywine River]]—the last natural defense before the [[Schuylkill River]] and Philadelphia. It was there that the two armies clashed again in the major [[Battle of Brandywine]] on September 11. The British victory in that battle paved the way for their eventual entry into and occupation of the city of Philadelphia. ||| Aftermath ||| ||| +0 Battle of Cooch's Bridge ||| Battles of Saratoga ||| This success was more than offset by the failure of the expedition to the Hudson, in which General Burgoyne surrendered his army after the [[Battles of Saratoga]], in October 1777. News of Burgoyne's surrender greatly changed the war, because it (and the [[Battle of Germantown]], fought after the British occupied Philadelphia) was a major factor in [[France]]'s decision to enter the war as [[Franco-American alliance|an American ally]] in 1778. ||| Aftermath ||| ||| +0 Battle of Copenhagen (1801) ||| Battle of Copenhagen (1807) ||| This was not to be the end of the Danish-Norwegian conflict with the British. In 1807, similar circumstances led to another British attack, in the [[Battle of Copenhagen (1807)|Second Battle of Copenhagen]]. ||| Subsequent events ||| ||| +0 Battle of Copenhagen (1807) ||| Battle of Copenhagen (1801) ||| Despite the defeat and loss of many ships in the first [[Battle of Copenhagen (1801)|Battle of Copenhagen]] in 1801, Denmark-Norway, possessing [[Schleswig-Holstein]] and [[Iceland]], still maintained a considerable navy. The majority of the [[Danish army]], under the [[Frederick VI of Denmark|Crown Prince]], was at this time defending the southern border against possible attack from the French. ||| Background ||| ||| +0 Battle of Corpus Christi ||| Battle of Hampton Roads ||| USS ''Sachem'' was originally commanded by [[Captain (nautical)|Captain]] H. W. Morris, the former U.S. Navy commander of [[New Orleans]], and was armed with one 20lb (0.91kg) [[parrott rifle]] and four 32 pounder (15 kg) [[cannon]]s. The size of her crew was about fifty; she had also participated in several other historic naval engagements such as [[Battle of Hampton Roads|Hampton Roads]] and the [[Battle of Forts Jackson and St. Philip]]. Captain Morris is not believed to have fought in this battle. [[Lieutenant]] [[Amos Johnson]] commanded ''Sachem''. Lieutenant [[John W. Kittredge]] was in charge of ''Arthur'', which held over eighty men and was armed with six 32 pounder smooth-bore guns. Kittredge commanded the [[flotilla]] and ''Arthur'' was the [[flagship]] of the force. ''Corypheus'' mounted one 30 lb (14 kg) rifled gun and one 24 pounder (11 kg) [[howitzer]]. She had a crew of twenty-eight men and was commanded by [[brevet (military)|Acting]] [[Sailing Master|Master]] A. T. Spear. ''Bella Italia''{{'}}s armament and crew are not known. ''Reindeer'' mustered six 24 pounder howitzers. Little is known of the Confederate ships. ||| Background ||| ||| +0 Battle of Corregidor ||| Battle of Corregidor (1945) ||| The US army [[Battle of Corregidor (1945)|recaptured the island]] in 1945. ||| ||| ||| +0 Battle of Corregidor ||| Raid at Cabanatuan ||| About 4,000 of the 11,000 American and Filipino [[prisoner of war|prisoners of war]] from Corregidor were marched through the streets of [[Manila]] to incarceration at [[Fort Santiago]] and Bilibid Prison, criminal detention centers turned POW camps. US Army and Navy nurses (the '[[Angels of Bataan]] and Corregidor') continued to work on Corregidor for several weeks, and were then sent to Santo Tomas. The rest were sent off in trains to various Japanese prison camps. General Wainwright was incarcerated in [[Manchuria]]. Over the course of the war, thousands were shipped to the Japanese home islands as slave labor. Some were eventually freed at the [[Raid at Cabanatuan]] and during the [[Battle for the Liberation of Manila|battle for Manila's liberation]]. While most of the Allied forces on Corregidor surrendered, many individuals continued fighting as [[guerrilla]]s. ||| Aftermath ||| ||| +0 Battle of Corregidor (1945) ||| Battle of Corregidor ||| The '''Battle for the Recapture of Corregidor''', 16–26 February 1945, pitted American liberation forces against the defending Japanese garrison on the island [[fortress]]. Prior to the Japanese invasion in 1942, the [[USAFFE]] had held the bastion until they [[Battle of Corregidor|surrendered in 1942]]. ||| ||| ||| +0 Battle of Courtrai (1794) ||| Battle of Tourcoing ||| On 10 May the French infantry formed square to repel Coalition cavalry charges for the first time during the war. Later in the day, after being bombarded by British artillery, three squares were finally broken with heavy losses. The following day, the French shifted the weight of their attacks against Clerfayt and forced him to retreat to the north. As a result of the battle, the French ''[[Army of the North (France)|Army of the North]]'' maintained the grip on Kortrijk and [[Menen|Menen (Menin)]] which it had won in the [[Battle of Mouscron]] in April. The next Coalition attempt to eliminate the French hold on the area resulted in the [[Battle of Tourcoing]] a week later. ||| ||| ||| +0 Battle of Crater Hill ||| Battle of Kankiryo Saddle ||| Following further harassment from the Australian infantry, and dive bombing from [[Curtiss P-40 variants|Kittyhawk]] fighters and mortar attacks, the Japanese were gradually being weakened, and started to retreat from Crater Hill. A company led by Captain A. Marshall, the 2/9th, got to within {{convert|100|yd|m|abbr=on}} of the summit, but could not get past the trees and the steep rockface. Another company, led by a Captain Taylor, made an alternate attack and killed 19 Japanese, while Marshall retreated to [[Battle of Kankiryo Saddle|Kankiryo Saddle]]. ||| Battle ||| Japanese surrounded ||| +0 Battle of Crete ||| Battle of Belgium ||| On 25 April, Hitler signed Directive 28, ordering the invasion of Crete. The Royal Navy retained control of the waters around Crete so an [[amphibious assault]] would be a risky proposition and with German air superiority assured, an airborne invasion was chosen. This was to be the first big airborne invasion, although the Germans had made smaller parachute and [[Military glider|glider]]-borne assaults in the invasions of [[German invasion of Denmark (1940)|Denmark]] and [[Norwegian Campaign|Norway]], [[Battle of Belgium|Belgium]], [[Battle of the Netherlands|the Netherlands]], [[Battle of France|France]] and mainland [[Battle of Greece|Greece]]. In Greece {{lang|de|''Fallschirmjäger''}} had been dispatched to capture the bridge over the [[Corinth Canal]], which was being readied for demolition by the [[Royal Engineers]]. German engineers landed near the bridge in gliders, while parachute infantry attacked the perimeter defence. The bridge was damaged in the fighting, which slowed the German advance and gave the Allies time to evacuate 18,000 troops to Crete and 23,000 to Egypt, albeit with the loss of most of their heavy equipment. ||| Prelude ||| Order of battle ||| Axis forces +0 Battle of Crete ||| Battle of France ||| On 25 April, Hitler signed Directive 28, ordering the invasion of Crete. The Royal Navy retained control of the waters around Crete so an [[amphibious assault]] would be a risky proposition and with German air superiority assured, an airborne invasion was chosen. This was to be the first big airborne invasion, although the Germans had made smaller parachute and [[Military glider|glider]]-borne assaults in the invasions of [[German invasion of Denmark (1940)|Denmark]] and [[Norwegian Campaign|Norway]], [[Battle of Belgium|Belgium]], [[Battle of the Netherlands|the Netherlands]], [[Battle of France|France]] and mainland [[Battle of Greece|Greece]]. In Greece {{lang|de|''Fallschirmjäger''}} had been dispatched to capture the bridge over the [[Corinth Canal]], which was being readied for demolition by the [[Royal Engineers]]. German engineers landed near the bridge in gliders, while parachute infantry attacked the perimeter defence. The bridge was damaged in the fighting, which slowed the German advance and gave the Allies time to evacuate 18,000 troops to Crete and 23,000 to Egypt, albeit with the loss of most of their heavy equipment. ||| Prelude ||| Order of battle ||| Axis forces +0 Battle of Crete ||| Battle of the Netherlands ||| On 25 April, Hitler signed Directive 28, ordering the invasion of Crete. The Royal Navy retained control of the waters around Crete so an [[amphibious assault]] would be a risky proposition and with German air superiority assured, an airborne invasion was chosen. This was to be the first big airborne invasion, although the Germans had made smaller parachute and [[Military glider|glider]]-borne assaults in the invasions of [[German invasion of Denmark (1940)|Denmark]] and [[Norwegian Campaign|Norway]], [[Battle of Belgium|Belgium]], [[Battle of the Netherlands|the Netherlands]], [[Battle of France|France]] and mainland [[Battle of Greece|Greece]]. In Greece {{lang|de|''Fallschirmjäger''}} had been dispatched to capture the bridge over the [[Corinth Canal]], which was being readied for demolition by the [[Royal Engineers]]. German engineers landed near the bridge in gliders, while parachute infantry attacked the perimeter defence. The bridge was damaged in the fighting, which slowed the German advance and gave the Allies time to evacuate 18,000 troops to Crete and 23,000 to Egypt, albeit with the loss of most of their heavy equipment. ||| Prelude ||| Order of battle ||| Axis forces +0 Battle of Crete ||| Operation Barbarossa ||| ''[[Oberkommando des Heeres]]'' (OKH, German army high command) was preoccupied with [[Operation Barbarossa]], the invasion of the Soviet Union and was largely opposed to a German attack on Crete. Before the invasion, the Germans conducted a bombing campaign to establish [[air superiority]] and forced the RAF to move its remaining aeroplanes to [[Alexandria]]. ||| Background ||| ||| +0 Battle of Cropredy Bridge ||| Siege of Lyme Regis ||| After Rupert departed, the King's council changed this policy. To find reinforcements for the West Country where Rupert's brother [[Prince Maurice von Simmern|Prince Maurice]] was [[Siege of Lyme Regis|besieging Lyme Regis]], they ordered the fortress of [[Reading, Berkshire|Reading]], in [[Berkshire]], to be abandoned. This did indeed release 2,500 foot soldiers for service elsewhere, but it also allowed the Parliamentarian armies of the [[Robert Devereux, 3rd Earl of Essex|Earl of Essex]] and Sir [[William Waller]] to concentrate against Oxford. On 19 May, they began advancing from Reading. On 25 May, the Royalists abandoned [[Abingdon, Oxfordshire|Abingdon]] in the face of Essex's advance. Essex occupied the town and then crossed the [[River Thames|Thames]] to capture bridges over the [[River Cherwell]] north of Oxford, while Waller passed south of Oxford to capture a crossing over the Thames to the west at [[Newbridge, Oxfordshire|Newbridge]]. ||| Campaign ||| ||| +0 Battle of Cropredy Bridge ||| Siege of York ||| In the early part of 1644, the Royalists suffered several setbacks. Two field armies were defeated at [[Battle of Nantwich|Nantwich]] and [[Battle of Cheriton|Cheriton]], and a [[Scotland|Scottish]] [[Covenanter]] army invaded the north of England, driving the Royalists there into [[York]], where they were [[Siege of York|besieged]]. ||| Background ||| ||| +0 Battle of Cuito Cuanavale ||| Carnation Revolution ||| After the [[Carnation Revolution]] of April 1974 in Portugal, the [[Movimento das Forças Armadas|new revolutionary government of Portugal]] let go of Portugal's African overseas possessions, including Angola. The [[Alvor Agreement|Treaty of Alvor]] comprised a series of agreements between the three rebel factions and Portugal that were to pave the way to independence. Under its terms, a transitional government was formed, elections were scheduled for the end of the year, and 11 November 1975 was slated as Angola's independence day. Fighting between the three rebel factions started soon after the transitional government took office on 31 January 1975, with each movement gaining control of their traditional areas of influence by mid-1975: The MPLA in the capital and central Angola, the FNLA in the north and UNITA in the south. The FNLA was effectively eliminated in the 1970s, and the struggle for control continued between the Soviet backed MPLA government and the United States and South African backed UNITA movement. The MPLA government of Angola and SWAPO were supported by Cuba and the Soviet Union and some countries of the Eastern bloc, while UNITA was supported by the West, albeit clandestinely, foremost the United States and South Africa. ||| Background ||| ||| +0 Battle of Cuito Cuanavale ||| World War II ||| The '''Battle of Cuito Cuanavale''' in 1987/88 was an important episode in the [[Angolan Civil War]] (1975 to 2002). Between 9 September and 7 October 1987, the [[Armed Forces for the Liberation of Angola]] (FAPLA), in an attempt to destroy the guerrillas of [[UNITA]] (the National Union for the Total Independence of Angola), advanced into southeastern Angola from Cuito Cuanavale to attack UNITA at [[Mavinga]]. The [[South African Defence Force]] (SADF), whose primary objective was to protect UNITA in southern Angola in order to prevent the South West African People's Organization ([[SWAPO]]) from using the region to launch attacks into South West Africa, once more intervened on UNITA's behalf. The Battle of Cuito Cuanavale, which took place over about six months, was at that time the biggest battle on African soil since [[World War II]]. ||| ||| ||| +0 Battle of Culloden ||| Battle of Dettingen ||| After a lengthy wait, Charles persuaded his generals that English Jacobites would stage an uprising in support of his cause. He was convinced that France would launch an invasion of England as well. His army of around 5,000 invaded England on 8 November 1745. They advanced through [[Carlisle, Cumbria|Carlisle]] and [[Manchester]] to [[Derby, England|Derby]] and a position where they appeared to threaten [[City of London|London]]. It is often alleged that [[George II of Great Britain|King George II]] made plans to decamp to [[Hanover]], but there is no evidence for this and the king is on record as stating that he would lead the troops against the rebels himself if they approached London. (George had experience at the head of an army: in 1743 he had led his soldiers to victory at the [[Battle of Dettingen]], becoming the last British monarch to lead troops into battle. ) The Jacobites met only token resistance. There was, however, little support from English Jacobites, and the French invasion fleet was still being assembled. The armies of [[Field Marshal]] [[George Wade]] and of [[William Augustus, Duke of Cumberland]], were approaching. In addition to the militia, London was defended by nearly 6,000 infantry, 700 horse and 33 artillery pieces and the Jacobites received (fictitious) reports of a third army closing on them. The Jacobite general, [[Lord George Murray (general)|Lord George Murray]], and the Council of War insisted on returning to join their growing force in Scotland. On 6 December 1745, they withdrew, with Charles Edward Stuart leaving command to Murray. ||| Background ||| ||| +0 Battle of Culloden ||| Battle of Falkirk Muir ||| On the long march back to Scotland, the Highland Army wore out its boots and demanded all the boots and shoes of the townspeople of [[Dumfries]] as well as money and hospitality. The Jacobites reached [[Glasgow]] on 25 December. There they reprovisioned, having threatened to sack the city, and were joined by a few thousand additional men. They then defeated the forces of General [[Henry Hawley]] at the [[Battle of Falkirk Muir]]. The Duke of Cumberland arrived in Edinburgh on 30 January to take over command of the government army from General Hawley. He then marched north along the coast, with the army being supplied by sea. Six weeks were spent at [[Aberdeen]] training. ||| Background ||| ||| +0 Battle of Culloden ||| War of the Austrian Succession ||| [[Charles Edward Stuart]], known as 'Bonnie Prince Charlie' or the 'Young Pretender', arrived in Scotland in 1745 to incite a rebellion of Stuart sympathizers against the House of Hanover. He successfully raised forces, mainly of [[Scottish Highlands|Scottish Highland]] [[Scottish clan|clansmen]], and slipped past the [[House of Hanover|Hanover]]ian stationed in [[Scotland]] and defeated a force of [[militiamen]] at the [[Battle of Prestonpans]]. The city of [[Edinburgh]] was occupied, but the castle held out and most of the Scottish population remained hostile to the rebels; others, while sympathetic, were reluctant to lend overt support to a movement whose chances were unproven. The British government recalled forces from the [[War of the Austrian Succession|war with France in Flanders]] to deal with the rebellion. ||| Background ||| ||| +0 Battle of Curapalihue ||| Battle of Chacabuco ||| After the defeat of [[Battle of Chacabuco|Chacabuco]] and the capture of Santiago by the [[Army of the Andes]], the royalist forces concentrated around [[Concepción, Chile|Concepción]] under Colonel [[José Ordóñez]]. General [[José de San Martín]] ordered Colonel [[Juan Gregorio de Las Heras]] to take command of a division and move south. When Colonel Ordóñez heard of the approach of the patriot army, he decided to stage a surprise night attack against them. ||| Background ||| ||| +0 Battle of Custoza (1866) ||| Battle of Lissa (1866) ||| Despite the victory at Custoza and a naval defeat of the Italians at [[Battle of Lissa (1866)|Lissa]], due to Königgrätz the Austrians were forced to surrender to the Prussians and were forced to cede Venetia. ||| Aftermath ||| ||| +0 Battle of Custoza (1866) ||| Italian unification ||| The '''Battle of Custoza ''' took place on June 24, 1866 during the [[Third Italian War of Independence]] in the [[Italian unification]] process. ||| ||| ||| +0 Battle of Cynoscephalae ||| Battle of Cynoscephalae (364 BC) ||| :''For the earlier battle fought here, see [[Battle of Cynoscephalae (364 BC)]]. '' ||| ||| ||| +0 Battle of Cynoscephalae ||| Battle of Pydna ||| It is generally perceived that with the later [[Battle of Pydna]], this defeat demonstrated the superiority of the [[Roman legion]] over the [[Macedonian phalanx]]. The phalanx, though very powerful head on, was not as flexible as the Roman manipular formation. Yet, this notion is challenged by a number of details of both battles up to the point of even proving the opposite in spite of the actual result. In any case, the result of the battle of Cynoscephalae was a fatal blow to the political aspirations of the Macedonian kingdom; Macedonia would never again be in a position to challenge Rome's geopolitical expansion. Although the peace that followed allowed Philip to keep his kingdom intact, Flamininus proclaimed that other Greek states previously under Macedonian domination were now free. Philip also had to pay 1,000 [[Talent (weight)|talents]] of silver to Rome, disband his navy, most of his army, and send his son to Rome as a hostage. ||| Aftermath ||| ||| +0 Battle of Cēsis (1919) ||| Lithuanian Wars of Independence ||| The Battle of Cēsis was a decisive victory for Estonia against the pro-German forces. The 3rd Estonian Division continued their advance towards Riga. On 3 July, the Estonian forces were at the outskirts of the city. Estonia, Latvia and the pro-German Provisional Government of Latvia signed the [[Ceasefire of Strazdumuiža]] on the demand of the [[Allies of World War I|Entente]]. The armistice restored the Ulmanis government in Riga. German forces were ordered to leave Latvia, the Baltic-German Landeswehr was put under command of the Latvian government and sent to fight against the Red Army. However, to circumvent Entente's orders, many German soldiers instead of leaving, were incorporated into the [[West Russian Volunteer Army]]. Fighting in [[Latvian War of Independence|Latvia]] and [[Lithuanian Wars of Independence|Lithuania]] restarted in October and continued until December 1919. ||| Aftermath ||| ||| +0 Battle of Dachen Archipelago ||| First Taiwan Strait Crisis ||| The '''Battle of Dachen Archipelago''' ({{zh|t=大陳等島之戰|s=大陈等岛之战|hp=Dàchén Děng Dǎo Zhī Zhàn}}) was a struggle between the [[Kuomintang|Nationalists]] and the [[Communist Party of China|Communists]] for the control of several [[archipelagos]] just off the coast of [[Zhejiang]], [[China]] during the [[Chinese Civil War]] in the post-[[World War II]] era, and it was part of the [[First Taiwan Strait Crisis]]. The Communists targeted and eventually took the [[Dachen Archipelago]], and the other two smaller archipelagos from Nationalists: the Southern Muntjac Archipelago ({{zh|links=no|t=南麂山列島|s=南麂山列岛|hp=Nán Jǐshān Liè Dǎo}}) and the Southern Deer Mountain Archipelago ({{zh|links=no|t=南鹿山列島|s=南鹿山列岛|hp=Nán Lùshān Liè Dǎo}}). ||| ||| ||| +0 Battle of Dachen Archipelago ||| World War II ||| The '''Battle of Dachen Archipelago''' ({{zh|t=大陳等島之戰|s=大陈等岛之战|hp=Dàchén Děng Dǎo Zhī Zhàn}}) was a struggle between the [[Kuomintang|Nationalists]] and the [[Communist Party of China|Communists]] for the control of several [[archipelagos]] just off the coast of [[Zhejiang]], [[China]] during the [[Chinese Civil War]] in the post-[[World War II]] era, and it was part of the [[First Taiwan Strait Crisis]]. The Communists targeted and eventually took the [[Dachen Archipelago]], and the other two smaller archipelagos from Nationalists: the Southern Muntjac Archipelago ({{zh|links=no|t=南麂山列島|s=南麂山列岛|hp=Nán Jǐshān Liè Dǎo}}) and the Southern Deer Mountain Archipelago ({{zh|links=no|t=南鹿山列島|s=南鹿山列岛|hp=Nán Lùshān Liè Dǎo}}). ||| ||| ||| +0 Battle of Daecheong ||| ROKS Cheonan sinking ||| * [[ROKS Cheonan sinking]] ||| See also ||| ||| +0 Battle of Debaltseve ||| Battle of Ilovaisk ||| Fighting further intensified into 16 February, with 'non-stop explosions' striking the city. One member of the [[Donbas Battalion]] said that the situation for Ukrainian soldiers in the city was dire, and resembled the '[[Battle of Ilovaisk|Ilovaisk kettle]]', but on a much larger scale. ||| Events ||| After Minsk II ||| +0 Battle of Debecka Pass ||| Battle of the Alamo ||| The '''Battle of Debecka (Dibagah, Dibege, دیبه‌گه) Pass''', sometimes known as the '''Battle of Debecka Ridge or Debecka Crossroads''', or otherwise referred to as the [[Battle of the Alamo|Alamo]] of the Iraq War, was a successful operation launched by U.S. Special Forces to secure a major crossroads near the village of [[Debecka]] (Dibege, دیبه‌گه in Kurdish), between [[Mosul]] and [[Kirkuk]] in northern [[Iraq]]. It was notable for its use of the [[Raytheon]]/[[Lockheed-Martin]] [[Javelin anti-tank missile]]. The weapon demonstrated how lethal and crucial technology can be in determining the outcome of a battle. The light unarmored SOF and Peshmerga (KDP) force faced a mechanized force of Iraqi infantry and tanks. The numerically inferior US and KPD force was able to defeat the Iraqi mechanized infantry & tank force with combined air-to-ground strikes, superior maneuvering, and the use of the Javelin missiles. ||| ||| ||| +0 Battle of Delaware Bay ||| Battle of Bladensburg ||| The Americans won the day and Lieutenant Joshua Barney was given command of the prize HMS ''General Monk'' which had well over 300 shot-holes in her sides. He was then ordered to France to deliver dispatches to [[Benjamin Franklin]] before joining the [[French Navy]] after the war ended. During the [[War of 1812]], Barney was a captain and commanded the [[Chesapeake Bay Flotilla]] and later commanded marines and sailors at the [[Battle of Bladensburg]]. Later the story of the Delaware Bay action was put into print by Myron V. Brewington, author of the book ''The Battle of Delaware Bay, 1782''. ||| Aftermath ||| ||| +0 Battle of Delaware Bay ||| War of 1812 ||| The Americans won the day and Lieutenant Joshua Barney was given command of the prize HMS ''General Monk'' which had well over 300 shot-holes in her sides. He was then ordered to France to deliver dispatches to [[Benjamin Franklin]] before joining the [[French Navy]] after the war ended. During the [[War of 1812]], Barney was a captain and commanded the [[Chesapeake Bay Flotilla]] and later commanded marines and sailors at the [[Battle of Bladensburg]]. Later the story of the Delaware Bay action was put into print by Myron V. Brewington, author of the book ''The Battle of Delaware Bay, 1782''. ||| Aftermath ||| ||| +0 Battle of Delium ||| Battle of Mantinea (362 BC) ||| The Boeotians charged unexpectedly while Hippocrates was giving a speech to his men. The centre lines saw the heaviest fighting. As [[Thucydides]] reports, the Boeotian left wing was surrounded and close to defeat, and only the Thespian contingent stood its ground. The victorious Athenian line got into confusion as it circled round the Thespian contingent and surrounded it. Some of the Athenian hoplites fought and killed one another when they met at the other end, mistaking their countrymen for the enemy. This was history's first documented incident of [[fratricide]] ([[Geoffrey Regan]], ''Back Fire'', Robson Books Ltd., London, 1995). It is thought the incident occurred in part because no 'state' shield devices were in use, a practice which seems to have become general by the time of the [[Battle of Mantinea (362 BC)|Second Battle of Mantinea]], fought in 362 BC between the Thebans and the [[Sparta]]ns (and each side's allies) [http://www.ospreypublishing.com/content4.php/cid=203]. In any case, Pagondas sent his cavalry to support the Boeotian left wing and the Athenians were defeated in turn. Meanwhile, the Boeotian right wing was also victorious, and the Athenians fighting there fled; when the Athenian centre saw that their two wings had been defeated they also fled. About 500 Boeotians and 1,000 Athenians had been killed, including Hippocrates. ||| Battle ||| ||| +0 Battle of Denain ||| Battle of Malplaquet ||| The command of the French northern army went to Marshal Villars in 1709, who wasted no time in seeing to its reorganization. When the Allied campaign led by Prince Eugene and the Duke of Marlborough engaged the French at [[Battle of Malplaquet|Malplaquet]], Villars was wounded and the French retreated from the field, but the Allies suffered twice as many casualties and their campaign soon sputtered out. France's precarious position had been stabilized, the Allies were unable to achieve their goal of forcing harsh terms on the Bourbons, and the war continued. ||| Background ||| ||| +0 Battle of Diamond Rock ||| Invasion of Martinique (1809) ||| Villeneuve had retaken the rock, but the day the attack began the frigate {{HMS|Didon|1805|2}} had arrived with orders from Napoleon. The rock remained in French hands until the [[Invasion of Martinique (1809)|capture of Martinique]] in 1809. ||| Aftermath ||| ||| +0 Battle of Dinwiddie Court House ||| Siege of Petersburg ||| The '''Battle of Dinwiddie Court House''' was fought on March 31, 1865, during the [[American Civil War]] at the end of the [[Siege of Petersburg|Richmond-Petersburg Campaign]] and in the beginning stage of the [[Appomattox Campaign]]. Along with the [[Battle of White Oak Road]] which was fought simultaneously on March 31, the battle involved the last offensive action by [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] attempting to stop the progress of [[Lieutenant general|Lieutenant General]] [[Ulysses S. Grant|Ulysses S. Grant's]] [[Union Army]] ([[Army of the Potomac]], [[Union Army of the Shenandoah|Army of the Shenandoah]] and [[Army of the James]]). Grant's forces were moving to cut the remaining Confederate supply lines and to force the Confederates to extend their defensive lines at [[Siege of Petersburg|Petersburg, Virginia]] and [[Richmond in the Civil War|Richmond, Virginia]] to the breaking point, if not to force them into a decisive open field battle. ||| ||| ||| +0 Battle of Dogger Bank (1915) ||| Battle of Trafalgar ||| But the combination of the signal of 'Course NE' — which happened to be the direction of ''Blücher'' — and the signal to engage the rear was misunderstood by Beatty's second-in-command — Rear-Admiral [[Gordon Moore (Royal Navy officer)|Gordon Moore]] on ''New Zealand'' — as an order for all the battlecruisers to finish off the cripple. The remaining British battlecruisers therefore broke off the pursuit of the fleeing German squadron and rounded on ''Blücher''. Most of the British light cruisers and destroyers also attacked ''Blücher''. Beatty tried to correct this obvious misunderstanding by using [[Horatio Nelson, 1st Viscount Nelson|Horatio Nelson]]′s famous order from [[Battle of Trafalgar|Trafalgar]] 'Engage the enemy more closely', but this order was not in the signal book, so he chose 'Keep nearer to the enemy' as the closest equivalent. But by the time this signal was hoisted, Moore′s ships were too far away to read Beatty′s flags, and the correction was not received. ||| Battle ||| ||| +0 Battle of Dresden ||| Battle of Katzbach ||| On 16 August, Napoleon had sent [[Marshal of France|Marshal]] [[Laurent Gouvion Saint-Cyr|Saint-Cyr's]] corps to fortify and hold Dresden in order to hinder allied movements and to serve as a possible base for his own manoeuvres. He planned to strike against the interior lines of his enemies and defeat them in detail, before they could combine their full strength. He had some 300,000 men 800 cannons against allied forces totaling over 450,000 and 1200 cannons. But the Coalition avoided battle with Napoleon himself, choosing to attack his subordinate commanders instead (see the [[Trachenberg Plan]]). On 23 August, at the [[Battle of Grossbeeren]], south of Berlin, [[Charles XIV John of Sweden|Crown Prince Charles]] of Sweden (formerly French Marshal Bernadotte, Napoleon's own Marshal) defeated his old comrade [[Nicolas Oudinot|Marshal Oudinot]]. And on 26 August, Prussian Marshal [[Gebhard Leberecht von Blücher|Blücher]] defeated [[Étienne-Jacques-Joseph-Alexandre MacDonald|Marshal MacDonald]] at the [[Battle of Katzbach|Katzbach]]. ||| Prelude ||| ||| +0 Battle of Drewry's Bluff ||| Siege of Petersburg ||| The area saw action again during the [[Siege of Petersburg]]. The [[Army of the James]] landed on May 5, 1864, at Bermuda Hundred, a neck of land north of City Point at the confluence of the James and Appomattox Rivers, only 15 miles (25 km) south of Richmond. The army marched overland, advancing within three miles (5 km) of Drewry's Bluff by May 9. From a tactical perspective, Bermuda Hundred allowed a complete amphibious landing with less likelihood of counterattack than a landing five miles closer to Drewry's Bluff and Fort Darling. ||| Aftermath ||| ||| +0 Battle of Driniumor River ||| Huon Peninsula campaign ||| The river is approximately {{convert|20|mi|km|abbr=on}} east of [[Aitape]]. The landings at several key points around Hollandia on 22 April had cut off the [[Japanese 18th Army]], which was retreating westwards toward the [[Japanese Second Area Army]] in [[Dutch New Guinea]]. When U.S. troops landed and seized Aitape on 22 April, a [[covering force]] comprising the [[32nd Infantry Division (United States)|32nd Infantry Division]] and [[112th Cavalry Regiment]] was sent approximately 20 mi east to guard Aitape's eastern flank on the line of Driniumor River. The 18th Army—which had not been reinforced after severe losses in the [[Battle of Lae|Lae]], [[Huon Peninsula campaign|Huon Peninsula]] and [[Finisterre Range campaign]]s—was commanded by Lieutenant-General [[Hatazō Adachi]]. Its main fighting units were the [[Japanese 20th Division|20th]] and the [[Japanese 41st Division|41st Divisions]]. ||| ||| ||| +0 Battle of Driniumor River ||| Western New Guinea campaign ||| The '''Battle of Driniumor River''', also known as '''The Battle of Aitape''', 10 July – 25 August 1944, was part of the [[Western New Guinea campaign]] of World War II. [[Empire of Japan|Japanese]] forces attacked United States forces on the Driniumor River, near [[Aitape]] in [[New Guinea]]. The battle should not be confused with [[Operations Reckless and Persecution|Operation Persecution]], which included [[amphibious landing]]s near Aitape in April 1944, or the [[Aitape-Wewak campaign]], which began in November. The Japanese referred to the Driniumor as the ''Hanto''. ||| ||| ||| +0 Battle of Drøbak Sound ||| Phoney War ||| The '''Battle of Drøbak Sound''' took place in the northernmost part of the [[Oslofjord]] on 9 April 1940, on the first day of the [[Operation Weserübung|German invasion of Norway]]. It was the start of the war in Western Europe—and an end to the '[[Phoney War]]'. ||| ||| ||| +0 Battle of Dublin ||| Irish War of Independence ||| The '''Battle of Dublin''' was a week of [[urban warfare|street battles]] in Dublin from 28 June to 5 July 1922 that marked the beginning of the [[Irish Civil War]]. Six months after the [[Anglo-Irish Treaty]] ended the recent [[Irish War of Independence]], it was fought between [[National Army (Ireland)|the forces]] of the new [[Provisional Government of the Irish Free State|Provisional Government]], and a section of the [[Irish Republican Army (1922–1969)|Irish Republican Army]] (IRA) who opposed the Treaty. The fighting began with an assault by Provisional Government forces on the [[Four Courts]] building, which had been occupied by the Anti-Treaty IRA, and ended in a decisive victory for the Provisional Government. ||| ||| ||| +0 Battle of Dunbar (1650) ||| Battle of Marston Moor ||| As Cromwell led his army over the border at [[Berwick-upon-Tweed]] in July 1650, the Scottish general, Sir [[David Leslie (Scottish general)|David Leslie]], continued his deliberate strategy of avoiding any direct confrontation with the enemy. His army were no longer the battle-hardened veterans of the [[Thirty Years' War]] who had taken the field for the Scots at [[Battle of Newburn|Newburn]] and [[Battle of Marston Moor|Marston Moor]]. Many of them had perished during the [[First English Civil War|Civil War]] and the [[Second English Civil War|ill fated 1648 invasion of England]]. Far more had left active service after the former event. This meant that a new army had to be raised and trained by the remaining veterans. It eventually comprised some 12,000 soldiers,{{sfn|Reid|2004|p=68}} outnumbering the English army of 11,000 men.{{sfn|Reid|2004|p=64}} Though the Scots were well armed, the pressure of time meant they were poorly trained compared with their English counterparts, all of whom had served with [[Cromwell|Oliver Cromwell]] for years. Leslie chose therefore to barricade his troops behind strong defensive works around Edinburgh and refused to be drawn out to meet the English in battle. Furthermore, between Edinburgh and the border with England, Leslie adopted a [[scorched earth]] policy thus forcing Cromwell to obtain all of his supplies from England, most arriving by sea through the port at [[Dunbar]]. ||| Background ||| ||| +0 Battle of Dunbar (1650) ||| Battle of Newburn ||| As Cromwell led his army over the border at [[Berwick-upon-Tweed]] in July 1650, the Scottish general, Sir [[David Leslie (Scottish general)|David Leslie]], continued his deliberate strategy of avoiding any direct confrontation with the enemy. His army were no longer the battle-hardened veterans of the [[Thirty Years' War]] who had taken the field for the Scots at [[Battle of Newburn|Newburn]] and [[Battle of Marston Moor|Marston Moor]]. Many of them had perished during the [[First English Civil War|Civil War]] and the [[Second English Civil War|ill fated 1648 invasion of England]]. Far more had left active service after the former event. This meant that a new army had to be raised and trained by the remaining veterans. It eventually comprised some 12,000 soldiers,{{sfn|Reid|2004|p=68}} outnumbering the English army of 11,000 men.{{sfn|Reid|2004|p=64}} Though the Scots were well armed, the pressure of time meant they were poorly trained compared with their English counterparts, all of whom had served with [[Cromwell|Oliver Cromwell]] for years. Leslie chose therefore to barricade his troops behind strong defensive works around Edinburgh and refused to be drawn out to meet the English in battle. Furthermore, between Edinburgh and the border with England, Leslie adopted a [[scorched earth]] policy thus forcing Cromwell to obtain all of his supplies from England, most arriving by sea through the port at [[Dunbar]]. ||| Background ||| ||| +0 Battle of Dunbar (1650) ||| First English Civil War ||| As Cromwell led his army over the border at [[Berwick-upon-Tweed]] in July 1650, the Scottish general, Sir [[David Leslie (Scottish general)|David Leslie]], continued his deliberate strategy of avoiding any direct confrontation with the enemy. His army were no longer the battle-hardened veterans of the [[Thirty Years' War]] who had taken the field for the Scots at [[Battle of Newburn|Newburn]] and [[Battle of Marston Moor|Marston Moor]]. Many of them had perished during the [[First English Civil War|Civil War]] and the [[Second English Civil War|ill fated 1648 invasion of England]]. Far more had left active service after the former event. This meant that a new army had to be raised and trained by the remaining veterans. It eventually comprised some 12,000 soldiers,{{sfn|Reid|2004|p=68}} outnumbering the English army of 11,000 men.{{sfn|Reid|2004|p=64}} Though the Scots were well armed, the pressure of time meant they were poorly trained compared with their English counterparts, all of whom had served with [[Cromwell|Oliver Cromwell]] for years. Leslie chose therefore to barricade his troops behind strong defensive works around Edinburgh and refused to be drawn out to meet the English in battle. Furthermore, between Edinburgh and the border with England, Leslie adopted a [[scorched earth]] policy thus forcing Cromwell to obtain all of his supplies from England, most arriving by sea through the port at [[Dunbar]]. ||| Background ||| ||| +0 Battle of Dunbar (1650) ||| Second English Civil War ||| As Cromwell led his army over the border at [[Berwick-upon-Tweed]] in July 1650, the Scottish general, Sir [[David Leslie (Scottish general)|David Leslie]], continued his deliberate strategy of avoiding any direct confrontation with the enemy. His army were no longer the battle-hardened veterans of the [[Thirty Years' War]] who had taken the field for the Scots at [[Battle of Newburn|Newburn]] and [[Battle of Marston Moor|Marston Moor]]. Many of them had perished during the [[First English Civil War|Civil War]] and the [[Second English Civil War|ill fated 1648 invasion of England]]. Far more had left active service after the former event. This meant that a new army had to be raised and trained by the remaining veterans. It eventually comprised some 12,000 soldiers,{{sfn|Reid|2004|p=68}} outnumbering the English army of 11,000 men.{{sfn|Reid|2004|p=64}} Though the Scots were well armed, the pressure of time meant they were poorly trained compared with their English counterparts, all of whom had served with [[Cromwell|Oliver Cromwell]] for years. Leslie chose therefore to barricade his troops behind strong defensive works around Edinburgh and refused to be drawn out to meet the English in battle. Furthermore, between Edinburgh and the border with England, Leslie adopted a [[scorched earth]] policy thus forcing Cromwell to obtain all of his supplies from England, most arriving by sea through the port at [[Dunbar]]. ||| Background ||| ||| +0 Battle of Dungan's Hill ||| Cromwellian conquest of Ireland ||| The '''Battle of Dungan's Hill''' took place in [[County Meath]], in eastern Ireland in August 1647. It was fought between the armies of [[Confederate Ireland]] and the [[English Parliament]] during the [[Wars of the Three Kingdoms]]. The Irish army was intercepted on a march towards [[Dublin]] and destroyed. Although it is a little-known event, even in Ireland, the battle was very bloody (with over 3000 deaths) and had important political repercussions. The Parliamentarian victory there destroyed the Irish Confederate forces' Leinster army and contributed to the collapse of the Confederate cause and the [[Cromwellian conquest of Ireland]] in 1649. ||| ||| ||| +0 Battle of Dungan's Hill ||| English Civil War ||| From a Parliamentarian point of view, victory in this battle was presented to them by the incompetence of the Irish commander. Preston was a veteran of the [[Thirty Years' War]], where he had been a commander of the Spanish garrison at [[Leuven]], but had no experience of open warfare or handling [[cavalry]]. Jones, by contrast, had been a cavalry officer in the [[English Civil War]]. As a result, Preston tried to move his cavalry along a narrow covered lane (site of the present day main road), where they were trapped and subjected to enemy fire without being able to respond. Even worse, Preston had placed a large number of his troops in wheat fields over seven feet tall. As a result these troops were unable to see the Parliamentarians until it was too late. With the Confederate army spread out and in confusion, Jones' troops fell in amongst them causing the demoralised Irish cavalry to flee the field, leaving the remainder of Preston's infantry unsupported. ||| The battle ||| ||| +0 Battle of Dunkirk ||| Battle of Arnhem ||| The heaviest fighting was in the 5th Division's sector. Still on 27 May, Brooke ordered [[Major-general (United Kingdom)|Major-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Montgomery]]{{refn|'Monty' was later to win the [[Second Battle of El Alamein]], plan the [[Normandy landings]] and [[Operation Market Garden]] at [[Battle of Arnhem|Arnhem]]. He rose to the rank of field marshal and became the most celebrated British general of the Second World War, but in 1940 he was commander of the 3rd Division under Brooke.|group='Notes'}} to extend his 3rd Division's line to the left, thereby freeing [[10th Infantry Brigade (United Kingdom)|10th]] and [[11th Infantry Brigade and Headquarters South East|11th]] brigades of 4th Division to join the 5th Division at Messines Ridge. 10th Brigade arrived first, to find the enemy had advanced so far they were closing on the British field artillery. Between them, 10th and 11th brigades cleared the ridge of Germans, and by 28 May they were securely dug in east of Wytschaete. ||| Battle ||| Battle of Wytschaete ||| +0 Battle of Dunkirk ||| Battle of France ||| The '''Battle of Dunkirk''' was an important battle that took place in [[Dunkirk]], France, during the [[World War II|Second World War]] between the [[Allies of World War II|Allies]] and Germany. As part of the [[Battle of France]] on the [[Western Front (World War II)|Western Front]], the Battle of Dunkirk was the defence and evacuation of British and allied forces in Europe from 26 May–4 June 1940. ||| ||| ||| +0 Battle of Dunkirk ||| Dunkirk evacuation ||| In one of the most widely-debated decisions of the war, the Germans halted their advance on Dunkirk. Contrary to popular belief, what became known as 'the Halt Order' did not originate with [[Adolf Hitler]]. [[Gerd von Rundstedt]] and [[Günther von Kluge]] suggested that the German forces around the Dunkirk pocket should cease their advance on the port and consolidate, to avoid an Allied break. Hitler sanctioned the order on 24 May with the support of the ''[[Oberkommando der Wehrmacht]]'' (OKW). The army was to halt for three days, giving the Allies time to organise the [[Dunkirk evacuation]] and build a defensive line. Despite the Allies' gloomy estimates of the situation, with Britain discussing a conditional surrender to Germany, in the end over 330,000 Allied troops were rescued. ||| ||| ||| +0 Battle of Dunkirk ||| Le Paradis massacre ||| On 27 May, the British fought back to the Dunkirk perimeter line. The [[Le Paradis massacre]] took place that day, when the [[3rd SS Division Totenkopf|3. SS Division ''Totenkopf'']] machine-gunned 97 British prisoners near the La Bassée Canal. These prisoners were from the 2nd Battalion, [[Royal Norfolk Regiment]] of the [[4th Infantry Brigade (United Kingdom)|4th Brigade]], 2nd Division. The Germans lined them against the wall of a barn and shot them all; only two survived. Meanwhile, the Luftwaffe dropped bombs and leaflets on the Allied armies. The leaflets showed a map of the situation. They read, in English and French: 'British soldiers! Look at the map: it gives your true situation! Your troops are entirely surrounded – stop fighting! Put down your arms!' The Allied soldiers mostly used these as toilet paper. To the land- and air-minded Nazis, the sea seemed an impassable barrier, so they really did think the Allies were surrounded; but the British saw the sea as a route to safety. ||| Battle ||| 'Fight back to the west' ||| +0 Battle of Dunkirk ||| Normandy landings ||| The heaviest fighting was in the 5th Division's sector. Still on 27 May, Brooke ordered [[Major-general (United Kingdom)|Major-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Montgomery]]{{refn|'Monty' was later to win the [[Second Battle of El Alamein]], plan the [[Normandy landings]] and [[Operation Market Garden]] at [[Battle of Arnhem|Arnhem]]. He rose to the rank of field marshal and became the most celebrated British general of the Second World War, but in 1940 he was commander of the 3rd Division under Brooke.|group='Notes'}} to extend his 3rd Division's line to the left, thereby freeing [[10th Infantry Brigade (United Kingdom)|10th]] and [[11th Infantry Brigade and Headquarters South East|11th]] brigades of 4th Division to join the 5th Division at Messines Ridge. 10th Brigade arrived first, to find the enemy had advanced so far they were closing on the British field artillery. Between them, 10th and 11th brigades cleared the ridge of Germans, and by 28 May they were securely dug in east of Wytschaete. ||| Battle ||| Battle of Wytschaete ||| +0 Battle of Dunkirk ||| Operation Barbarossa ||| The true reason for the decision to halt the German armour on 24 May is still a matter of debate. One theory states that Von Rundstedt and Hitler agreed to conserve the armour for ''[[Fall Rot]]'', an operation to the south. It is possible that the air force's closer ties than the army's to the Nazi Party contributed to Hitler's approval of Göring's request. Another theory—which few historians have given credence—was that Hitler was still trying to establish diplomatic peace with Britain before [[Operation Barbarossa]]. Although von Rundstedt after the war stated his suspicions that Hitler wanted 'to help the British', based on alleged praise of the British Empire during a visit to his headquarters, no evidence exists that Hitler wanted to let the Allies escape. [[Brian Bond]] stated: ||| Halt order ||| ||| +0 Battle of Dunkirk ||| Phoney War ||| After the [[Phoney War]], the Battle of France began in earnest on 10 May 1940. To the east, the German [[Army Group B]] had invaded the Netherlands and advanced westward. In response, the Supreme Allied Commander—French General [[Maurice Gamelin]]—initiated 'Plan D' and invaded Belgium to engage the Germans in the Netherlands. The plan relied heavily on the [[Maginot Line]] fortifications along the German-French border, but the Germans had already crossed through most of Holland before the French forces arrived. Thus, Gamelin committed the forces under his command, three mechanised armies, the French First and Seventh and the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) to the River Dyle. On 14 May, German [[Army Group A]] burst through the [[Ardennes]] and advanced rapidly to the west toward [[Sedan, France|Sedan]], then turned northward to the English Channel, in what [[Field Marshal (Germany)|''Generalfeldmarschall'']] [[Erich von Manstein]] called the 'Sickle Cut' (known as 'Plan Yellow' or the [[Manstein Plan]]), effectively flanking the Allied forces. ||| ||| ||| +0 Battle of Dunkirk ||| Second Battle of El Alamein ||| The heaviest fighting was in the 5th Division's sector. Still on 27 May, Brooke ordered [[Major-general (United Kingdom)|Major-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Montgomery]]{{refn|'Monty' was later to win the [[Second Battle of El Alamein]], plan the [[Normandy landings]] and [[Operation Market Garden]] at [[Battle of Arnhem|Arnhem]]. He rose to the rank of field marshal and became the most celebrated British general of the Second World War, but in 1940 he was commander of the 3rd Division under Brooke.|group='Notes'}} to extend his 3rd Division's line to the left, thereby freeing [[10th Infantry Brigade (United Kingdom)|10th]] and [[11th Infantry Brigade and Headquarters South East|11th]] brigades of 4th Division to join the 5th Division at Messines Ridge. 10th Brigade arrived first, to find the enemy had advanced so far they were closing on the British field artillery. Between them, 10th and 11th brigades cleared the ridge of Germans, and by 28 May they were securely dug in east of Wytschaete. ||| Battle ||| Battle of Wytschaete ||| +0 Battle of Dunkirk ||| Western Front (World War II) ||| The '''Battle of Dunkirk''' was an important battle that took place in [[Dunkirk]], France, during the [[World War II|Second World War]] between the [[Allies of World War II|Allies]] and Germany. As part of the [[Battle of France]] on the [[Western Front (World War II)|Western Front]], the Battle of Dunkirk was the defence and evacuation of British and allied forces in Europe from 26 May–4 June 1940. ||| ||| ||| +0 Battle of Durbe ||| Battle of Memel ||| The Livonian Order had been fighting the Samogitians since 1253, when [[Mindaugas]] was crowned as [[King of Lithuania]] and transferred parts of Samogitia to the order. The Samogitians did not recognize the transfer and fought for their independence. For the knights, Samogitia was a strategically important region as it physically separated their Prussian and Livonian branches. After the Samogitians killed 12 knights in the [[Battle of Memel (1257)|Battle of Memel]], near the newly built [[Memel Castle]] ([[Klaipėda]]) in 1257, a two-year [[truce]] was concluded. The knights attempted to strengthen their strategic position and attacked [[Tērvete]] (Terwerten) hoping to turn the Semigallian outpost into a Teutonic castle. ||| Background ||| ||| +0 Battle of Dürenstein ||| Battle of Amstetten ||| The few Austrian corps not trapped at Ulm withdrew toward Vienna, with the French in close pursuit. A [[Russian Empire|Russian]] army under General Mikhail Kutuzov also maneuvered away from the French, withdrawing to the east. At the [[Ill (Austria)|Ill river]] on 22 October, it joined with the retreating Austrian corps commanded by [[Michael von Kienmayer]]. On 5 November, the Coalition forces held a successful rearguard action in [[Battle of Amstetten|Amstetten]]. On 7 November, the Russians arrived in [[St. Pölten]], and crossed the Danube river the next day. Late on 9 November, they destroyed the bridges across the Danube, holding the last one at the hamlet of Stein, near the village [[Krems an der Donau|Krems]], until the late afternoon. ||| Prelude to battle ||| ||| +0 Battle of Dürenstein ||| Battle of Hohenlinden ||| The loss of Schmitt was a significant blow to the Austrian military organization. Called out of retirement for this specific task, he was arguably their most experienced general staff officer, other than the Archduke Charles. From the summer of 1796 until his retirement in 1800, he had been Chief of the Quartermaster General Staff of the Army, the Lower Rhine, the Rhine, and the Army of Germany. Furthermore, he was a trusted member of [[Archduke Charles, Duke of Teschen|Archduke Charles']] staff. He had helped to design several of Charles' more important victories at [[Battle of Emmendingen|Emmendingen]], [[Battle of Schliengen|Schliengen]], the sieges at [[siege of Kehl (1796)|Kehl and Hünigen]], the battles at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and the northern Swiss Campaign of 1799 that included battles at [[Battle of Winterthur (1799)|Winterthur]] and [[First Battle of Zurich|Zürich]]. An experienced officer and excellent tactician, he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the [[Battle of Austerlitz]] than his eventual replacement, [[Franz von Weyrother]]. In Schmitt's absence, Weyrother, the architect of the Austrian catastrophe at [[Battle of Hohenlinden|Hohenlinden]] in 1800, was chosen to develop the general battle plan of Coalition action at Austerlitz. Schmitt, undoubtedly a far better tactician than Weyrother, and possessed of superior training and mapping skills, would have developed a more realistic Coalition plan for Austerlitz. Schmitt's presence would probably not have been enough to turn that defeat into a victory, but it would have mitigated the magnitude of the Coalition's losses; Austerlitz was arguably one of Napoleon's finest triumphs. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| Battle of Ostrach ||| The loss of Schmitt was a significant blow to the Austrian military organization. Called out of retirement for this specific task, he was arguably their most experienced general staff officer, other than the Archduke Charles. From the summer of 1796 until his retirement in 1800, he had been Chief of the Quartermaster General Staff of the Army, the Lower Rhine, the Rhine, and the Army of Germany. Furthermore, he was a trusted member of [[Archduke Charles, Duke of Teschen|Archduke Charles']] staff. He had helped to design several of Charles' more important victories at [[Battle of Emmendingen|Emmendingen]], [[Battle of Schliengen|Schliengen]], the sieges at [[siege of Kehl (1796)|Kehl and Hünigen]], the battles at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and the northern Swiss Campaign of 1799 that included battles at [[Battle of Winterthur (1799)|Winterthur]] and [[First Battle of Zurich|Zürich]]. An experienced officer and excellent tactician, he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the [[Battle of Austerlitz]] than his eventual replacement, [[Franz von Weyrother]]. In Schmitt's absence, Weyrother, the architect of the Austrian catastrophe at [[Battle of Hohenlinden|Hohenlinden]] in 1800, was chosen to develop the general battle plan of Coalition action at Austerlitz. Schmitt, undoubtedly a far better tactician than Weyrother, and possessed of superior training and mapping skills, would have developed a more realistic Coalition plan for Austerlitz. Schmitt's presence would probably not have been enough to turn that defeat into a victory, but it would have mitigated the magnitude of the Coalition's losses; Austerlitz was arguably one of Napoleon's finest triumphs. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| Battle of Schliengen ||| The loss of Schmitt was a significant blow to the Austrian military organization. Called out of retirement for this specific task, he was arguably their most experienced general staff officer, other than the Archduke Charles. From the summer of 1796 until his retirement in 1800, he had been Chief of the Quartermaster General Staff of the Army, the Lower Rhine, the Rhine, and the Army of Germany. Furthermore, he was a trusted member of [[Archduke Charles, Duke of Teschen|Archduke Charles']] staff. He had helped to design several of Charles' more important victories at [[Battle of Emmendingen|Emmendingen]], [[Battle of Schliengen|Schliengen]], the sieges at [[siege of Kehl (1796)|Kehl and Hünigen]], the battles at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and the northern Swiss Campaign of 1799 that included battles at [[Battle of Winterthur (1799)|Winterthur]] and [[First Battle of Zurich|Zürich]]. An experienced officer and excellent tactician, he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the [[Battle of Austerlitz]] than his eventual replacement, [[Franz von Weyrother]]. In Schmitt's absence, Weyrother, the architect of the Austrian catastrophe at [[Battle of Hohenlinden|Hohenlinden]] in 1800, was chosen to develop the general battle plan of Coalition action at Austerlitz. Schmitt, undoubtedly a far better tactician than Weyrother, and possessed of superior training and mapping skills, would have developed a more realistic Coalition plan for Austerlitz. Schmitt's presence would probably not have been enough to turn that defeat into a victory, but it would have mitigated the magnitude of the Coalition's losses; Austerlitz was arguably one of Napoleon's finest triumphs. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| Battle of Stockach (1799) ||| The loss of Schmitt was a significant blow to the Austrian military organization. Called out of retirement for this specific task, he was arguably their most experienced general staff officer, other than the Archduke Charles. From the summer of 1796 until his retirement in 1800, he had been Chief of the Quartermaster General Staff of the Army, the Lower Rhine, the Rhine, and the Army of Germany. Furthermore, he was a trusted member of [[Archduke Charles, Duke of Teschen|Archduke Charles']] staff. He had helped to design several of Charles' more important victories at [[Battle of Emmendingen|Emmendingen]], [[Battle of Schliengen|Schliengen]], the sieges at [[siege of Kehl (1796)|Kehl and Hünigen]], the battles at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and the northern Swiss Campaign of 1799 that included battles at [[Battle of Winterthur (1799)|Winterthur]] and [[First Battle of Zurich|Zürich]]. An experienced officer and excellent tactician, he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the [[Battle of Austerlitz]] than his eventual replacement, [[Franz von Weyrother]]. In Schmitt's absence, Weyrother, the architect of the Austrian catastrophe at [[Battle of Hohenlinden|Hohenlinden]] in 1800, was chosen to develop the general battle plan of Coalition action at Austerlitz. Schmitt, undoubtedly a far better tactician than Weyrother, and possessed of superior training and mapping skills, would have developed a more realistic Coalition plan for Austerlitz. Schmitt's presence would probably not have been enough to turn that defeat into a victory, but it would have mitigated the magnitude of the Coalition's losses; Austerlitz was arguably one of Napoleon's finest triumphs. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| Battle of Ulm ||| The battle was fought three weeks after the Austrian [[Battle of Ulm|capitulation at Ulm]] and three weeks before the Russo-Austrian defeat at the [[Battle of Austerlitz]]. After Austerlitz, Austria withdrew from the war. The French demanded a high [[indemnity]] and [[Francis II, Holy Roman Emperor|Francis II]] abdicated as [[Holy Roman Emperor]], releasing the German states from their allegiance to the [[Holy Roman Empire]]. ||| ||| ||| +0 Battle of Dürenstein ||| Battle of Winterthur (1799) ||| The loss of Schmitt was a significant blow to the Austrian military organization. Called out of retirement for this specific task, he was arguably their most experienced general staff officer, other than the Archduke Charles. From the summer of 1796 until his retirement in 1800, he had been Chief of the Quartermaster General Staff of the Army, the Lower Rhine, the Rhine, and the Army of Germany. Furthermore, he was a trusted member of [[Archduke Charles, Duke of Teschen|Archduke Charles']] staff. He had helped to design several of Charles' more important victories at [[Battle of Emmendingen|Emmendingen]], [[Battle of Schliengen|Schliengen]], the sieges at [[siege of Kehl (1796)|Kehl and Hünigen]], the battles at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and the northern Swiss Campaign of 1799 that included battles at [[Battle of Winterthur (1799)|Winterthur]] and [[First Battle of Zurich|Zürich]]. An experienced officer and excellent tactician, he might well have made a more effective Chief of the Quartermaster General Staff of the Coalition Army at the [[Battle of Austerlitz]] than his eventual replacement, [[Franz von Weyrother]]. In Schmitt's absence, Weyrother, the architect of the Austrian catastrophe at [[Battle of Hohenlinden|Hohenlinden]] in 1800, was chosen to develop the general battle plan of Coalition action at Austerlitz. Schmitt, undoubtedly a far better tactician than Weyrother, and possessed of superior training and mapping skills, would have developed a more realistic Coalition plan for Austerlitz. Schmitt's presence would probably not have been enough to turn that defeat into a victory, but it would have mitigated the magnitude of the Coalition's losses; Austerlitz was arguably one of Napoleon's finest triumphs. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| French invasion of Russia ||| In a series of conflicts from 1803 to 1815 known as the [[Napoleonic Wars]], various European powers formed five coalitions against the [[First French Empire]]. Like the wars sparked by the [[French Revolution]] (1789), these further revolutionized the formation, organization, and training of European armies and led to an unprecedented militarization, mainly due to [[Levée en masse|mass conscription]]. Under the leadership of [[Napoleon I of France|Napoleon]], French power rose quickly, as the ''[[Grande Armée]]'' conquered most of Europe and it collapsed rapidly after the disastrous [[French invasion of Russia|invasion of Russia]] in 1812. Napoleon's empire ultimately suffered complete military defeat in the 1813–1814 campaigns, resulting in the [[Bourbon Restoration|restoration of the Bourbon monarchy]] in France. Although Napoleon made a spectacular return in 1815, known as the [[Hundred Days]], his defeat at the [[Battle of Waterloo]], the pursuit of his army and himself, his abdication, and his banishment to the Island of [[Saint Helena]], concluded the Napoleonic Wars. ||| Background ||| ||| +0 Battle of Dürenstein ||| Hundred Days ||| In a series of conflicts from 1803 to 1815 known as the [[Napoleonic Wars]], various European powers formed five coalitions against the [[First French Empire]]. Like the wars sparked by the [[French Revolution]] (1789), these further revolutionized the formation, organization, and training of European armies and led to an unprecedented militarization, mainly due to [[Levée en masse|mass conscription]]. Under the leadership of [[Napoleon I of France|Napoleon]], French power rose quickly, as the ''[[Grande Armée]]'' conquered most of Europe and it collapsed rapidly after the disastrous [[French invasion of Russia|invasion of Russia]] in 1812. Napoleon's empire ultimately suffered complete military defeat in the 1813–1814 campaigns, resulting in the [[Bourbon Restoration|restoration of the Bourbon monarchy]] in France. Although Napoleon made a spectacular return in 1815, known as the [[Hundred Days]], his defeat at the [[Battle of Waterloo]], the pursuit of his army and himself, his abdication, and his banishment to the Island of [[Saint Helena]], concluded the Napoleonic Wars. ||| Background ||| ||| +0 Battle of Dürenstein ||| Trafalgar Campaign ||| From 1803 to 1806, the [[War of the Third Coalition|Third Coalition]] fought the [[First French Empire]] and its [[French client republic|client states]] (see table at right). Although several [[Trafalgar Campaign|naval battles]] determined control of the seas, the outcome of the war was decided on the continent, predominantly in two major land operations in the Danube valley: the [[Ulm Campaign|Ulm campaign]] in the upper Danube, and the [[Battle of Austerlitz|Vienna campaign]], in the middle Danube valley. ||| Danube campaign ||| ||| +0 Battle of Dürenstein ||| War of the Fourth Coalition ||| The second determining event, the decisive French victory at the [[Battle of Austerlitz]] over the combined Russian and Austrian armies, forced the Austrian withdrawal from the Coalition. The subsequent [[Peace of Pressburg (1805)|Peace of Pressburg]], signed on 26 December 1805, reinforced the earlier treaties of [[Treaty of Campo Formio|Campo Formio]] and [[Treaty of Lunéville|Lunéville]]. Furthermore, Austria ceded land to Napoleon's German allies, and paid an [[indemnity]] of 40 million [[franc]]s. Victory at Austerlitz also gave Napoleon the latitude to create a [[Confederation of the Rhine|buffer zone]] of German states between France and the states of Prussia, Russia, and Austria. These measures did not establish a lasting peace on the continent. [[Kingdom of Prussia|Prussian]] worries about growing French influence in [[Central Europe]] sparked the [[War of the Fourth Coalition]] in 1806, in which Austria did not participate. ||| Aftermath ||| ||| +0 Battle of Dürenstein ||| War of the Second Coalition ||| Political conflicts in Vienna delayed Austria's entry into the Third Coalition until 1805. After hostilities of the [[War of the Second Coalition]] ended in 1801, [[Archduke Charles, Duke of Teschen|Archduke Charles]], the emperor's brother, took advantage of the subsequent years of peace to develop a military restructuring plan. He carefully put this plan into effect beginning in 1803–1804, but implementation was incomplete in 1805 when [[Karl Freiherr Mack von Leiberich|Karl Mack]], Lieutenant Field Marshal and Quartermaster-General of the Army, implemented his own restructuring. Mack bypassed Charles' methodical approach. Occurring in the field, Mack's plan also undermined the overall command and organizational structure. Regardless, Mack sent an enthusiastic report to Vienna on the military's readiness. Furthermore, after misreading Napoleon's maneuvers in Württemberg, Mack also reported to Vienna on the weakness of French dispositions. His reports convinced the war party advising the emperor, [[Francis II, Holy Roman Emperor|Francis II]], to enter the conflict against France, despite Charles' own advice to the contrary. Responding to the report and rampant anti-French fever in Vienna, Francis dismissed Charles from his post as ''generalissimo'' and appointed his [[Francophobe|Francophobic]] brother-in-law, [[Archduke Ferdinand Karl Joseph of Austria-Este|Archduke Ferdinand]], as commander. ||| Danube campaign ||| ||| +0 Battle of Edgehill ||| Battle of Malplaquet ||| The last survivor of the battle, [[William Hiseland]], fought also at [[Battle of Malplaquet|Malplaquet]] sixty-seven years later. ||| Outcome ||| ||| +0 Battle of Edgehill ||| Battle of Turnham Green ||| Essex's decision to return northwards to Warwick allowed the King to continue southwards in the direction of London. Rupert urged this course, and was prepared to undertake it with his cavalry alone. With Essex's army still intact, Charles chose to move more deliberately, with the whole army. After capturing Banbury on 27 October, Charles advanced via [[Oxford]], [[Battle of Aylesbury|Aylesbury]] and [[Reading, Berkshire|Reading]]. Essex meanwhile had moved directly to London. Reinforced by the London Trained Bands and many citizen volunteers, his army proved to be too strong for the King to contemplate another battle when the Royalists advanced to [[Battle of Turnham Green|Turnham Green]]. The King withdrew to Oxford, which he made his capital for the rest of the war. With both sides almost evenly matched, it would drag on ruinously for years. ||| Outcome ||| ||| +0 Battle of Edgehill ||| Irish Rebellion of 1641 ||| There were some significant differences between the opposing armies, which were to be important to the course of the battle and its outcome. Although both were composed of very raw soldiers, they both had several experienced officers who had previously fought in the [[Netherlands|Dutch]] or [[Sweden|Swedish]] armies during the [[Thirty Years' War]]. (Several of these had been recruited to lead English forces which were intended to be sent to Ireland following the [[Irish Rebellion of 1641]]. Both King and Parliament had bid highly for the services of these officers.) ||| The opposing forces ||| ||| +0 Battle of Edgehill ||| Siege of Hull (1642) ||| Charles then attempted to seize the port of [[Kingston-upon-Hull]] where arms and equipment previously collected for the [[Bishops' Wars]] had been gathered. In the [[Siege of Hull (1642)|Siege of Hull]], the Parliamentarian garrison defied the King's authority and drove his forces away from the city. In early August the King moved south, to [[Lincoln, Lincolnshire|Lincoln]] and [[Leicester]], where he secured the contents of the local armouries. On 22 August, he took the decisive step by raising the royal standard in [[Nottingham]], effectively declaring war on Parliament. The [[English Midlands|Midlands]] were generally Parliamentarian in sympathy, and few people rallied to the king there, so having again secured the arms and equipment of the local trained bands, Charles moved to [[Chester]] and subsequently to [[Shrewsbury]], where large numbers of recruits from [[Wales]] and the [[Welsh Marches|Welsh border]] were expected to join him. (By this point, there was conflict in almost every part of England, as local commanders attempted to seize the main cities, ports and castles for their respective factions). ||| Background ||| ||| +0 Battle of El Agheila ||| Battle of Beda Fomm ||| Despite the importance of the [[Port of Benghazi]] to the Axis supply chain, Rommel abandoned the port to avoid a repeat of the disastrous entrapment suffered by the Italians at the [[Battle of Beda Fomm]] in February 1941.{{sfn|Rommel|1982|p=604}} Rommel ordered the demolition of port facilities and [[materiel]] in Benghazi, writing afterwards that ||| Background ||| ||| +0 Battle of Elands River (1900) ||| Battle of Elands River (1901) ||| The battle had a number of strategic implications also. Not only did the difficulty that the British have in relieving the garrison serve to boost the morale of the Boers, which had been flagging due to earlier reverses, but the act of doing so drew forces away from cordon that was being set up by the British to capture [[Christiaan De Wet]], The fighting would continue and over a year later, on 17 September 1901, [[Battle of Elands River (1901)|another battle]] was fought along the Elands River at Modderfontein farm, ||| Aftermath ||| ||| +0 Battle of Elephant Point ||| Battle of Meiktila and Mandalay ||| On 22 March, as the joint [[Battle of Meiktila and Mandalay|battles of Meiktila and Mandalay]] were drawing to a close, a conference was held at [[Monywa]] in Burma, attended by senior Allied military figures including Admiral [[Louis Mountbatten, 1st Earl Mountbatten of Burma|Lord Mountbatten]], the commander in chief of the Allied [[South East Asia Command]], and [[General]] [[William Slim]], commander of [[British Fourteenth Army|Fourteenth Army]]. The object of the conference was to discuss future Allied strategy in South East Asia in the aftermath of Meiktila and Mandalay, including the reconquest of [[Burma]] and the retaking of [[British Malaya|Malaya]] and then [[Singapore]]. In order to secure these objectives however, [[Rangoon]], the capital of Burma, would have to be captured before the onset of the [[monsoon]] rains, which would impede any Allied advance over land; the Allied Chiefs of Staff worked on the assumption that this would occur before June. ||| Background ||| ||| +0 Battle of Elsenborn Ridge ||| Operation Nordwind ||| The weather improved in late December and early January, allowing Allied planes to attack the Germans from the air and further slow their advance. The Germans launched a [[Operation Bodenplatte|Luftwaffe offensive]] in the Netherlands, destroying many Allied aircraft but sacrificing many more of their own, irreplaceable aircraft and skilled pilots. They also launched a [[Operation Nordwind|major ground offensive]] in Alsace on January 1, but they failed to regain the initiative. The end of Battle of the Bulge is officially January 16, exactly one month after the Germans launched it, but fighting continued for three more weeks until early February when the front lines were reestablished to the positions held on 16 December. ||| Renewed German offensives fail ||| ||| +0 Battle of Emmendingen ||| Battle of Schliengen ||| The '''Battle of Emmendingen''' (19 October 1796) was fought between the French ''[[Army of Rhin-et-Moselle]]'' under [[Jean Victor Marie Moreau]] and the Austrian ''Army of the Upper Rhine'' commanded by [[Archduke Charles, Duke of Teschen]]. The Austrians won the battle and forced the French to withdraw to the south where the [[Battle of Schliengen]] was fought five days later. The action occurred during the [[War of the First Coalition]], the first conflict of the larger [[French Revolutionary Wars]]. ||| ||| ||| +0 Battle of Empress Augusta Bay ||| Bombing of Rabaul (November 1943) ||| After the Japanese ships returned to Rabaul, they were joined by four cruisers and more destroyers from [[Chuuk State|Truk]] for another attack on the Allied landing forces at Bougainville. On 5 November, however, two U.S. [[aircraft carrier]]s [[Bombing of Rabaul (November 1943)|raided Rabaul]], heavily damaging four heavy cruisers, which had to withdraw to Truk. This ended the Japanese warship threat to the Allied landing forces at Bougainville. ||| Naval battle ||| ||| +0 Battle of Empress Augusta Bay ||| New Guinea campaign ||| The '''Battle of [[Empress Augusta Bay]]''', on 1–2 November 1943—also known as the '''Battle of Gazelle Bay''', '''Operation Cherry Blossom''', and in Japanese sources as the '''Sea Battle off Bougainville Island''' (ブーゲンビル島沖海戦)—was a [[naval battle]] fought near the island of [[Bougainville Island|Bougainville]]. The naval battle was a result of Allied landings on nearby Bougainville in the first action in the [[Bougainville campaign (1943–45)|Bougainville campaign]] of [[World War II]] and may also be seen as part of the [[Solomon Islands campaign|Solomons]] and [[New Guinea campaign]]s. The battle was significant as part of a broader [[Allies of World War II|Allied]] strategy—known as [[Operation Cartwheel]]—aimed at isolating and surrounding the major Imperial base at [[Rabaul]]. The intention was to establish a [[beachhead]] on Bougainville, within which an airfield would be built. ||| ||| ||| +0 Battle of Eniwetok ||| Battle of Kwajalein ||| The invasion of Eniwetok followed the American success in the [[Battle of Kwajalein]] to the southeast. Capture of Eniwetok would provide an airfield and harbour to support attacks on the [[Mariana Islands]] to the northwest. ||| Background ||| ||| +0 Battle of Fair Garden ||| Battle of Dandridge ||| Following the [[Battle of Dandridge]] on January 16–17, [[Union Army|Union]] [[cavalry]] moved to the south side of the [[French Broad River]], where they disrupted [[Confederate States Army|Confederate]] foraging parties and captured numerous loaded supply wagons in that area. On January 25, 1864, Lt. Gen. [[James Longstreet]], commander of the Department of East Tennessee, instructed his subordinates to curtail Union operations south of the French Broad. On January 26, [[Brigadier General (United States)|Brig. Gen.]] [[Samuel D. Sturgis]], having had previous brushes with Confederate cavalry, deployed his troopers to watch the fords in the area. Two Confederate cavalry [[brigade]]s and artillery advanced from Fair Garden in the afternoon but were checked about four miles from [[Sevierville, Tennessee|Sevierville]]. Other Confederates attacked a Union cavalry brigade, though, at Fowler's on Flat Creek, and drove it about two miles. No further fighting occurred that day. ||| Background ||| ||| +0 Battle of Fairfax Court House (June 1863) ||| Battle of Chancellorsville ||| On the night of May 5-6, 1863, after the Army of the Potomac commanded by [[Major general (United States)|Major General]] [[Joseph Hooker]] had been defeated at the [[Battle of Chancellorsville]] (April 30, 1863 to May 6, 1863), in [[Spotsylvania County, Virginia]] by the General Robert E. Lee's Army of Northern Virginia, Hooker withdrew his forces to positions north of the [[Rappahannock River]], mainly in the vicinity of [[Falmouth, Virginia]]. Lee's army remained just to the south of the Rappahannock in the Fredericksburg, Virginia area after the battle. ||| Background ||| Plan to invade the North ||| +0 Battle of Falkirk ||| Battle of Falkirk Muir ||| :''For the battle in 1746 see [[Battle of Falkirk Muir]].'' ||| ||| ||| +0 Battle of Fallen Timbers ||| American Revolutionary War ||| The [[Western Confederacy]], an alliance of Native American nations, was formed to fight to retain their traditional lands. It achieved several victories over United States military forces in 1790 and 1791, alarming the administration of President [[George Washington]]. Washington realized that the settlers were to blame for much of the violence; nevertheless, he made preparations to defeat the alliance as the battles became more serious. In 1792, Washington ordered [[American Revolutionary War|Revolutionary War]] hero General [['Mad' Anthony Wayne]] to build and lead a new army to crush resistance to American settlement. Wayne could see that previous campaigns had failed because of poor training and discipline. He had time to train his volunteers, since peace negotiations were undertaken in the summer of 1793. ||| Background ||| ||| +0 Battle of Famaillá ||| Battle of San Cala ||| While Lamadrid formed a new army in Tucumán Province, Lavalle spent several months in a campaign in [[La Rioja Province (Argentina)|La Rioja Province]], to delay Oribe and to give his ally time to prepare. In order to open new fronts, he sent two divisions, one to [[Santiago del Estero]], which failed without a fight, and another to [[Cuyo (Argentina)|Cuyo]], which was destroyed at the [[Battle of San Cala]]. ||| Prelude to the battle ||| ||| +0 Battle of Faughart ||| Battle of Bannockburn ||| Although King Robert's victory over [[Edward II of England|Edward II]] at the [[Battle of Bannockburn]] had effectively secured the independence of Scotland, it did not bring the war with England any closer to an end. Even repeated Scots raids into the northern counties of England had little effect on a king seemingly blind to political and military realities. Something more decisive was needed to end the stalemate. It came in 1315 with an invitation from Ireland, too tempting to resist. ||| A united Gaelic realm ||| ||| +0 Battle of Finschhafen ||| Huon Peninsula campaign ||| The '''Battle of Finschhafen''' was part of the [[Huon Peninsula campaign]] during the [[Second World War]] between September and October 1943 between [[Australia]]n and [[Empire of Japan|Japanese]] forces. The operation to capture [[Finschhafen]] was important to capture the western cape of the [[Vitiaz Strait]] for the construction of airfields and naval facilities for the upcoming [[New Britain campaign]] as part of [[Operation Cartwheel]]. ||| ||| ||| +0 Battle of Fishing Creek ||| Battle of Camden ||| In the absence of Continental Army units in South Carolina, militia commanders like [[Francis Marion]], [[Andrew Pickens (congressman)|Andrew Pickens]], and [[Thomas Sumter]] began to form units to contest the British presence. Sumter had been particularly successful in the northern part of the state, making attacks on [[Battle of Rocky Mount|Rocky Mount]] and [[Battle of Hanging Rock|Hanging Rock]] in early August 1780. In August a new Continental Army threat began to form in [[North Carolina]], as General [[Horatio Gates]] began moving a regrouped army formation, accompanied by a large number of militia, south to dispute the British outpost at [[Camden, South Carolina]]. Cornwallis moved reinforcements to Camden from [[Charleston, South Carolina|Charleston]], while Sumter, in some coordination with Gates' movements, harassed British communication and supply lines. The armies of Gates and Cornwallis met north of Camden on August 16, and [[Battle of Camden|Gates was decisively routed]]. ||| Background ||| ||| +0 Battle of Fleurus (1794) ||| Battle of Tourcoing ||| After the [[Battle of Tourcoing (1794)|Battle of Tourcoing]] on 17–18 May 1794, Jourdan was given the command of the ''[[Army of the Ardennes]]'' and four divisions of the [[Armée du Nord|Army of the North]], about 96,000 men in total. This new group was then named the ''[[Army of Sambre-et-Meuse|Army of the Sambre-et-Meuse]]''. The new army was then given the task of capturing [[Charleroi]]. ||| Background ||| Operations ||| +0 Battle of Fleurus (1794) ||| Flanders Campaign ||| The '''Battle of Fleurus''', on 26 June 1794, was a major engagement between the army of the [[First French Republic]], under General [[Jean-Baptiste Jourdan]], and the Coalition Army ([[Kingdom of Great Britain|Great Britain]], [[Hanover]], [[Dutch Republic]], and [[Habsburg Monarchy]]), commanded by [[Prince Josias of Coburg]], in the most decisive battle of the [[Flanders Campaign]] in the [[Low Countries]] during the [[French Revolutionary Wars]]. Both sides had forces in the area numbering in the vicinity of 80,000 men, but the [[France|French]] were able to more effectively concentrate their troops in order to achieve victory against the [[First Coalition]]. The Allied defeat led to the permanent loss of the [[Austrian Netherlands]] and to the destruction of the [[Dutch Republic]]. The battle marked a turning point for the French army which afterwards remained ascendant throughout the rest of the [[War of the First Coalition]]. ||| ||| ||| +0 Battle of Flirey ||| Battle of Saint-Mihiel ||| The battle created a salient projecting into the French lines south of Verdun. Of the two roads and one railway that led to Verdun, all bar one minor road were closed, which imposed severe supply difficulties on the French troops in the RFV. The city was enveloped on three sides and neutralised as a base for French offensives. The area was to see much fighting over the rest of the war. Despite attempts by the French to reduce the salient in the First Battle of Woëvre in early 1915, the [[First Offensive Battle of Verdun]] in late 1916 and the [[Second Offensive Battle of Verdun]] in 1917, the salient was not reduced until the [[Battle of Saint-Mihiel]] in September 1918. ||| Aftermath ||| ||| +0 Battle of Fontenoy ||| Battle of Culloden ||| In contrast, the Pragmatic army contained some of the better trained and disciplined troops of Europe in the British and Hanoverian contingents but were not blessed with a great captain to command them. The young, 26-year-old Cumberland owed his position to his high rank and he had no prior experience commanding an army. He would win only one battle in his career with a very small army, [[Battle of Culloden|Culloden]], and he is described by historian Armstrong Starkey as 'a very good brigadier.' ||| Opposing armies ||| ||| +0 Battle of Fontenoy ||| Siege of Brussels ||| In three months Saxe had achieved his grand design: he had established himself on the shores of the English Channel and the river Scheldt. Britain was perilously near to exclusion from the mainland of Europe, and would find it hard to make contact with its continental allies. With the capitulation of Ath in early October France controlled much of the Austrian Netherlands. Saxe, now raised to heroic status in his adopted country, was soon [[Siege of Brussels|threatening Brussels]] and Antwerp. ||| Aftermath ||| French gains ||| +0 Battle of Fontenoy ||| Siege of Louisbourg (1745) ||| Additionally, the triumph of de Saxe over the British inspired fell to French forces in August, and [[Nieuwpoort, Belgium|Nieuport]] in early September. The only good news for the British came in North America when [[William Pepperrell]] [[Siege of Louisbourg (1745)|captured]] the key French [[fortress of Louisbourg]] at [[Cape Breton Regional Municipality, Nova Scotia|Cape Breton]] in late June. ||| Aftermath ||| French gains ||| +0 Battle of Fort Anne ||| Siege of Fort Ticonderoga (1777) ||| The '''Battle of Fort Anne''', fought on July 8, 1777, was an engagement between [[Continental Army]] forces in retreat from [[Fort Ticonderoga]] and forward elements of [[John Burgoyne]]'s much larger [[British Army during the American War of Independence|British]] army that had [[Siege of Fort Ticonderoga (1777)|driven them from Ticonderoga]], early in the [[Saratoga campaign]] of the [[American Revolutionary War]]. ||| ||| ||| +0 Battle of Fort Bull ||| Battle of Fort Oswego (1756) ||| A star-shaped wood stockade with four interior buildings was built in May-August 1756 as [[Fort Wood Creek]]. Fort Wood Creek was destroyed by the British in August 1756 when reports of another French force was received. Léry was promoted to captain for his successful command. The loss of the supplies at Fort Bull effectively ruined any British plans for military campaigns against French forts on Lake Ontario, and may have contributed to the French [[Battle of Fort Oswego (1756)|capture of Fort Oswego]] in August 1756. ||| Aftermath ||| ||| +0 Battle of Fort Donelson ||| Battle of Fort Henry ||| The battle followed the Union capture of [[Battle of Fort Henry|Fort Henry]] on February 6. Grant moved his army {{convert|12|mi|km}} overland to Fort Donelson on February 12 and 13 and conducted several small probing attacks. (Although the name was not yet in use, the troops serving under Grant were the nucleus of the Union's [[Army of the Tennessee]]. ) On February 14, Union gunboats under [[Flag Officer]] [[Andrew Hull Foote|Andrew H. Foote]] attempted to reduce the fort with gunfire, but were forced to withdraw after sustaining heavy damage from Fort Donelson's water batteries. ||| ||| ||| +0 Battle of Fort Donelson ||| Battle of Shiloh ||| Cannons were fired and church bells rung throughout the North at the news. The [[Chicago Tribune|Chicago ''Tribune'']] wrote that 'Chicago reeled mad with joy.' The capture of Forts Henry and Donelson were the first significant Union victories in the war and opened two great rivers to invasion in the heartland of the South. Grant was promoted to major general of volunteers, second in seniority only to [[Henry W. Halleck]] in the West. After newspapers reported that Grant had won the battle with a cigar clamped in his teeth, he was inundated with cigars sent from his many admirers. (Grant would eventually die of throat cancer, likely brought on by his heavy smoking.) Close to a third of all Albert Sidney Johnston's forces were prisoners. Grant had captured more soldiers than all previous American generals combined, and Johnston was thereby deprived of more than twelve thousand soldiers who would otherwise have provided a decisive advantage at the impending [[Battle of Shiloh]] in less than two months time. The rest of Johnston's forces were 200 miles (320 km) apart, between Nashville and Columbus, with Grant's army between them. Grant's forces also controlled nearby rivers and railroads. General Buell's army threatened Nashville, while [[John Pope (military officer)|John Pope]]'s troops threatened Columbus. Johnston evacuated Nashville on February 23, surrendering this important industrial center to the Union and making it the first Confederate state capital to fall. Columbus was evacuated on March 2. Most of Tennessee fell under Union control, as did all of Kentucky, although both were subject to periodic Confederate raiding. ||| Aftermath ||| ||| +0 Battle of Fort Driant ||| Battle of Metz ||| The '''Battle of Fort Driant''' was a constituent battle in the 1944 [[Battle of Metz]], during the [[Lorraine Campaign]] and the greater [[Allied advance from Paris to the Rhine|Siegfried Line Campaign]]. The battle was on occupied [[France|French territory]] between the forces of the [[United States Third Army]] under the command of General [[George S. Patton]] and the forces of [[Nazi Germany]] under General [[Otto von Knobelsdorff]]. ||| ||| ||| +0 Battle of Fort George ||| Battle of Queenston Heights ||| During the ensuing [[Battle of Queenston Heights]], the guns of Fort George and Fort Niagara began to fire at the opposite fort. ||| Events in 1812 ||| ||| +0 Battle of Fort Henry ||| Battle of Fort Donelson ||| The surrender of Fort Henry opened the Tennessee River to Union traffic south of the [[Alabama]] border. In the days following the fort's surrender, from February 6 through February 12, Union raids used timberclad boats to destroy [[Confederate States of America|Confederate]] shipping and railroad bridges along the river. On February 12, Grant's army proceeded overland {{convert|12|mi|km}} to engage with Confederate troops in the [[Battle of Fort Donelson]]. ||| ||| ||| +0 Battle of Fort Henry ||| Battle of Shiloh ||| Fort Henry's fall quickly opened the Tennessee River to Union gunboats and shipping south of the Alabama border. Immediately after the surrender, Foote sent Lieutenant Phelps with the three timberclads, the ''Tyler'', ''Conestoga'', and ''Lexington'', on a mission upriver to destroy installations and supplies of military value. (The flotilla's ironclads had sustained damage in the bombardment of Fort Henry and were slower and less maneuverable for the mission at hand, which included pursuit of Confederate ships.) The raid reached as far as [[Muscle Shoals, Alabama|Muscle Shoals]], just past [[Florence, Alabama]], the river's [[head of navigation|navigable limit]]. The Union timberclads and their raiding parties destroyed supplies and an important bridge of the Memphis and Ohio Railroad, {{convert|25|mi|km}} upriver. They also captured a variety of southern ships, including the ''Sallie Wood'', the ''Muscle'', and the ''Eastport'', an ironclad under construction. The Union gunboats returned safely to Fort Henry on February 12; however, Phelps made a major blunder during his otherwise successful raid. The citizens of Florence asked him to spare their town and its railroad bridge, which served the Memphis and Charleston Railroad. Phelps agreed, seeing no military importance to the bridge, but destruction of the bridge would have essentially split the Confederate theater in half. Johnston's army later rode across this bridge on their journey to [[Corinth, Mississippi]], in preparation for the [[Battle of Shiloh]]. ||| Aftermath and the timberclad raid ||| ||| +0 Battle of Fort Lahtzanit ||| Operation Badr (1973) ||| The '''Battle of Fort Lahtzanit''' took place on October 6, 1973, between the [[Egyptian Army]] and the [[Israel Defense Forces]] (IDF). Part of the Egyptian-initiated [[Operation Badr (1973)|Operation Badr]], the battle was one of the first of the [[Yom Kippur War]], fought in and around Fort Lahtzanit, a fortification of the [[Bar Lev Line]], located {{convert|19|km|mi}} south of [[Port Fouad]] in the [[Sinai Peninsula]]. ||| ||| ||| +0 Battle of Fort McAllister (1864) ||| Siege of Vicksburg ||| Sherman was overjoyed with the victory and rowed down the Ogeechee to view the fort. That evening at Gen. Hazen's Head Quarters, Lt. Col Strong, General Sherman and Gen. Hazen had supper with Major Anderson, commander of the now defeated fortification who was confined there. The next day he rowed out to Dahlgren's flagship to greet the admiral. Sherman also had reason to be proud of the troops that had taken part in the victory at Fort McAllister. These were the same troops he personally led as a division commander at [[Battle of Shiloh|Shiloh]] and a corps commander at [[Siege of Vicksburg|Vicksburg]]. ||| Battle ||| ||| +0 Battle of Fort Oswego (1756) ||| Battle of Fort Bull ||| The French in 1755 had the only large naval vessels on Lake Ontario, and moved freely about the lake, between Fort Niagara in the west and [[Fort Frontenac]] at the head of the [[Saint Lawrence River]]. In March 1756 they launched a winter [[Battle of Fort Bull|attack on Fort Bull]] on [[Wood Creek]]. Fort Bull was a key depot on the supply line for the Oswego forts, which was the waterway leading up the [[Mohawk River]] and crossing over to the [[Oswego River (New York)|Oswego River]] watershed. In the successful attack, they destroyed many provisions intended for the Oswego garrison, and effectively ruined Shirley's plan to attempt the expedition against Fort Niagara in 1756. ||| Background ||| ||| +0 Battle of Fort Oswego (1756) ||| Battle of Jumonville Glen ||| Following the beginning of open conflict between French and British colonists in 1754 with the [[Battle of Jumonville Glen]], the governments of Britain and France both sent [[regular army]] troops to [[North America]] to further contest the disputed territories of the [[Ohio Country]] and other border areas, including the frontier between the French province of [[Canada, New France|Canada]] and the British province of [[Province of New York|New York]], an area in present-day [[Upstate New York]] that was then largely controlled by the [[Iroquois]] nations. Part of the British plans for 1755 included an expedition to take [[Fort Niagara]] at the western end of [[Lake Ontario]]. The planned route for this expedition followed the [[Oswego River (New York)|Oswego River]] to the lake, with a major base of operations at the mouth of the river (where the present-day city of [[Oswego, New York]] is located). ||| Background ||| ||| +0 Battle of Fort Oswego (1814) ||| Battle of Big Sandy Creek ||| The British had missed twenty-one more guns which had still been en route to Oswego, and were {{convert|12|mi|km}} away at [[Fulton, Oswego County, New York|Oswego Falls]]. Rather than launch an expedition up the Oswego River, Yeo mounted a blockade of Sackett's Harbor to prevent them reaching Chauncey. The Americans tried to move them to Sackett's Harbor in launches and small boats but were intercepted. British marines and sailors then mounted a 'cutting-out' attack against them but failed, with 200 marines and sailors ambushed and captured at the [[Battle of Big Sandy Creek]]. ||| Result ||| ||| +0 Battle of Fort Sumter ||| American Revolutionary War ||| [[Major (United States)|Major]] [[Robert Anderson (Civil War)|Robert Anderson]] of the [[1st Regiment of Artillery|1st U.S. Artillery regiment]] had been appointed to command the Charleston garrison that fall because of rising tensions. A native of Kentucky, he was a protégé of [[Winfield Scott]], the [[Commanding General of the United States Army|general in chief]] of the Army, and was thought more capable of handling a crisis than the garrison's previous commander, Col. [[John L. Gardner (brigadier general)|John L. Gardner]], who was nearing retirement. Anderson had served an earlier tour of duty at Fort Moultrie and his father had been a defender of the fort (then called Fort Sullivan) during the [[American Revolutionary War]]. Throughout the fall, South Carolina authorities considered both secession and the expropriation of Federal property in the harbor to be inevitable. As tensions mounted, the environment around the fort increasingly resembled a [[siege]], to the point that the South Carolina authorities placed picket ships to observe the movements of the troops and threatened violence when forty rifles were transferred to one of the harbor forts from the U.S. [[arsenal]] in the city. ||| Background ||| The forts of Charleston ||| +0 Battle of Fort Washington ||| Battle of Long Island ||| British General [[William Howe, 5th Viscount Howe|William Howe]], after first gaining control of western [[Long Island]] in the [[Battle of Long Island]] at the end of August 1776, [[Landing at Kip's Bay|launched an invasion]] of Manhattan on September 15. His northward progress was checked the next day in the [[Battle of Harlem Heights]], after which he sought to flank the strong American position on the north of the island. ||| Background ||| Movements ||| +0 Battle of Fort Washington ||| Fort Lee Historic Park ||| During the American Revolutionary War, [[Fort Washington (New York)|Fort Washington]] was located at the highest point of the island of [[Manhattan]], along a large outcropping of [[Manhattan schist]] near its northernmost tip. Along with [[Fort Lee Historic Park|Fort Lee]], located just across the [[Hudson River]] atop the [[New Jersey Palisades]], the twin forts were intended to protect the lower Hudson from British warships. ||| Background ||| Construction and defenses ||| +0 Battle of Forts Jackson and St. Philip ||| Battle of Port Royal ||| Although land-based forts had long been considered to be invulnerable to attack by naval guns, some weaknesses had been exposed in the [[Battle of Port Royal]], South Carolina, on November 7, 1861. Following that battle, (Union) Assistant Secretary of the Navy [[Gustavus V. Fox]] began to press for expanded use of the United States Navy in attacking coastal Confederate positions. He particularly emphasized the desirability of assaulting New Orleans, the largest city in the Confederacy, from the Gulf. Fox proposed that the two forts could be weakened if not completely destroyed by a mortar barrage, and a relatively small Army force then could assault the weakened forts. Following the reduction of the forts, or even during the army assault, a fleet could steam past them and attack New Orleans directly. ||| Background ||| Union preparations ||| +0 Battle of Forts Jackson and St. Philip ||| Peninsula Campaign ||| At first, the Army, in the person of General-in-Chief [[George B. McClellan]], opposed the plan. The contingent of 30,000 to 50,000 troops that McClellan considered the minimum needed for success would be a diversion from other Army operations, particularly the [[Peninsula Campaign]] against [[Richmond, Virginia]], that he was directing at that time. ||| Background ||| Union preparations ||| +0 Battle of Forts Jackson and St. Philip ||| Union blockade ||| New Orleans, the largest city in the Confederacy, was already under threat of attack from the north when [[David Farragut]] moved his fleet into the river from the south. The Confederate Navy had already driven off the [[Union blockade]] fleet in the [[Battle of the Head of Passes]] the previous October. Although the menace from upriver was geographically more remote than that from the [[Gulf of Mexico]], a series of losses in Kentucky and Tennessee had forced the War and Navy Departments in [[Richmond, Virginia|Richmond]] to strip the region of much of its defenses. Men and equipment had been withdrawn from the local defenses, so that by mid-April almost nothing remained to the south except the two forts and an assortment of gunboats of questionable worth. ||| ||| ||| +0 Battle of France ||| Battle for The Hague ||| The German 18th ''Armee'' secured all the strategically vital bridges [[Battle of Rotterdam|in and toward Rotterdam]], which penetrated [[Fortress Holland]] and bypassed the [[The Dutch Water Line|New Water Line]] from the south. However, an operation organised separately by the ''Luftwaffe'' to seize the [[Capital of the Netherlands|Dutch seat of government]], known as the [[Battle for The Hague]], ended in complete failure. ||| ''Fall Gelb'' ||| Northern front ||| The Netherlands +0 Battle of France ||| Battle of Dunkirk ||| The '''Battle of France''', also known as the '''Fall of France''', was the German invasion of [[France]] and the [[Low Countries]] during the [[World War II|Second World War]], beginning on 10 May 1940, defeating primarily French forces. The battle consisted of two main operations. In the first, ''Fall Gelb'' (Case Yellow), German armoured units pushed through the [[Ardennes]] and then along the [[Somme (river)|Somme]] valley to cut off and [[Encirclement|surround]] the [[Allies of World War II|Allied]] units that had advanced into Belgium. When British, Belgian and adjacent French forces were pushed back to the sea by the highly mobile and well-organized German operation, the British government decided to evacuate the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) as well as several French divisions at [[Battle of Dunkirk|Dunkirk]] in [[Dunkirk evacuation|Operation Dynamo]]. ||| ||| ||| +0 Battle of France ||| Battle of Montcornet ||| Colonel [[Charles de Gaulle]], in command of France's hastily formed 4th DCR, attempted to launch an attack from the south at [[Montcornet, Aisne|Montcornet]], where Guderian had his ''Korps'' headquarters and the 1st ''Panzer'' Division had its rear service areas. During the [[Battle of Montcornet]] Germans hastily improvised a defence while Guderian rushed up the 10th ''Panzer'' Division to threaten De Gaulle's flank. This flank pressure and attacks by the ''Luftwaffe''{{'}}s VIII ''Fliegerkorps'' broke up the attack. French losses on 17 May amounted to 32 tanks and armoured vehicles, but the French nonetheless 'inflicted loss on the Germans'. ||| ''Fall Gelb'' ||| Central front ||| Failed Allied counter-attacks +0 Battle of France ||| Battle of Rotterdam ||| The German 18th ''Armee'' secured all the strategically vital bridges [[Battle of Rotterdam|in and toward Rotterdam]], which penetrated [[Fortress Holland]] and bypassed the [[The Dutch Water Line|New Water Line]] from the south. However, an operation organised separately by the ''Luftwaffe'' to seize the [[Capital of the Netherlands|Dutch seat of government]], known as the [[Battle for The Hague]], ended in complete failure. ||| ''Fall Gelb'' ||| Northern front ||| The Netherlands +0 Battle of France ||| Battle of Verdun ||| Hitler had expected a million Germans to die in conquering France; instead, his goal was accomplished in just six weeks with only 27,000 Germans killed, 18,400 missing, and 111,000 wounded, a little more than one third of the total German casualties in the [[Battle of Verdun]] during World War I.{{r|atkin1990}}{{rp |233–34}} The unexpectedly swift victory resulted in a wave of euphoria among the German population and a strong upsurge in war-fever. Hitler's personal popularity reached its peak with the celebration of France's capitulation on 6 July 1940: ||| Aftermath ||| Popular reaction in Germany ||| +0 Battle of France ||| Phoney War ||| Following the [[Invasion of Poland (1939)|German invasion of Poland]] in September 1939, a period of inaction called the [[Phoney War]] (''Drôle de guerre'' in French, 'joke of a war', or ''Sitzkrieg'' in German, 'sitting war') set in between the major powers. [[Adolf Hitler]] had hoped that France and Britain would acquiesce in his conquest and quickly make peace. On 6 October, he may have made some type of peace offer to both Western powers. Even before they had time to respond, on 9 October, he also formulated a new military policy in case their reply was negative: ''Führer-Anweisung N°6'', or '[[Führer Directives|''Führer''-Directive]] Number 6'. ||| Prelude ||| ||| +0 Battle of France ||| Western Allied invasion of Germany ||| The [[free France|Free French provisional government]] declared the re-establishment of a [[GPRF|provisional French Republic]] to ensure continuity with the defunct Third Republic. It set about raising new troops to participate in the [[Allied advance from Paris to the Rhine|advance to the Rhine]] and the [[Western Allied invasion of Germany]] by using the [[French Forces of the Interior]] as [[En cadre|military cadres]] and manpower pools of experienced fighters to allow a very large and rapid expansion of the French Liberation Army (''Armée française de la Libération''). It was well equipped and well supplied despite the economic disruption brought by the occupation thanks to [[Lend-Lease]] and grew from 500,000 men in the summer of 1944 to over 1,300,000 by [[V-E day]], making it the fourth largest Allied army in Europe. ||| Aftermath ||| ||| +0 Battle of Fraustadt ||| Battle of Cannae ||| The Swedish success in the battle was mainly due to Rehnskiöld effectively neutralising the Saxon infantry, who were superior in number at the start of the battle, combined with the pincer movement performed by the Swedish cavalry under [[Hummerhielm]] and [[Ernst Detlof von Krassow|von Krassow]]. Schulenburg also made two grave mistakes: first by being lured into terrain not to his advantage and then underestimating the mobility of the Swedish cavalry, especially on the flanks. It is known from Rehnskiöld's personal journals that he had intended a double envelopment from the beginning. The Battle of Fraustadt is one of the most classic [[double envelopment]]s in military history. It is probable that Rehnskiöld had studied the [[Battle of Cannae]] 216 BC although it is uncertain if he intended to copy it. ||| Analysis ||| ||| +0 Battle of Fraustadt ||| Battle of Helsingborg ||| The road to Saxony was open for King [[Charles XII of Sweden]]. King [[August II of Poland|August II]] of [[Polish-Lithuanian Commonwealth|Poland]] gave up his claim on the Polish crown, although he remained [[Prince-elector|Elector]] Frederick Augustus I of Saxony. He would later regain the Polish throne in 1709. The prisoners taken by the Swedes during the battle that were of German, French and Swiss nationality were immediately reorganized into the ranks of the Swedish army. The Saxon prisoners were shipped to Sweden, where they formed a regiment and three battalions. This regiment made a good effort at the [[Battle of Helsingborg (1710)|Battle of Helsingborg]] 1710. ||| Aftermath ||| ||| +0 Battle of Fredericksburg ||| Battle of Antietam ||| In November 1862, [[President of the United States|U.S. President]] [[Abraham Lincoln]] needed to demonstrate the success of the Union war effort before the Northern public lost confidence in his administration. Confederate armies had been on the move earlier in the fall, invading [[Battle of Perryville#Kentucky Campaign of 1862|Kentucky]] and [[Maryland Campaign|Maryland]], and although each had been turned back, those armies remained intact and capable of further action. Lincoln urged Maj. Gen. [[Ulysses S. Grant]] to advance against the Confederate stronghold of [[Vicksburg Campaign|Vicksburg, Mississippi]]. He replaced Maj. Gen. [[Don Carlos Buell]] with Maj. Gen. [[William S. Rosecrans]], hoping for a more aggressive posture against the Confederates in Tennessee, and on November 5, seeing that his replacement of Buell had not stimulated Maj. Gen. [[George B. McClellan]] into action, he issued orders to replace McClellan in command of the Army of the Potomac in Virginia. McClellan had stopped Robert E. Lee at the [[Battle of Antietam]] in Maryland, but had not been able to destroy Lee's army, nor did he pursue Lee back into Virginia aggressively enough for Lincoln. ||| Background and Burnside's plan ||| ||| +0 Battle of Frenchtown ||| Siege of Detroit ||| On January 18, 1813 the Americans forced the retreat of the British and their Native American allies from Frenchtown, which they had earlier occupied, in a relatively minor skirmish. The movement was part of a larger United States plan to advance north and retake [[Fort Shelby (Michigan)|Fort Detroit]], following its loss in the [[Siege of Detroit]] the previous summer. Despite this initial success, the British and Native Americans rallied and launched a surprise [[counterattack]] four days later on January 22. Ill prepared, the Americans lost 397 soldiers in this second battle, while 547 were taken prisoner. Dozens of wounded prisoners were murdered the next day in a massacre by the Native Americans. More prisoners were killed if they could not keep up on the forced march to [[Fort Malden]]. This was the deadliest conflict recorded on Michigan soil, and the casualties included the highest number of Americans killed in a single battle during the War of 1812. ||| ||| ||| +0 Battle of Friedberg ||| Battle of Ettlingen ||| Two French armies crossed the [[Rhine]] and thrust east into Germany in the [[Rhine Campaign of 1796]]. [[Jean-Baptiste Jourdan]]'s [[Army of Sambre-et-Meuse]] advanced on a more northerly route while Moreau's [[Army of Rhin-et-Moselle]] took a more southerly path. Opposing them were [[Wilhelm von Wartensleben]]'s Army of the Lower Rhine and Latour's Army of the Upper Rhine, both under the overall direction of [[Archduke Charles, Duke of Teschen]]. Moreau defeated Charles at the battles of [[Battle of Ettlingen|Ettlingen]] on 9 July and [[Battle of Neresheim|Neresheim]] on 11 August. ||| ||| ||| +0 Battle of Froeschwiller (1793) ||| Battle of Kaiserslautern ||| The Austrian victory in the [[First Battle of Wissembourg (1793)|First Battle of Wissembourg]] threatened to overrun the territory of [[Alsace]]. Hoche assumed command of the ''[[Army of the Moselle]]'' and attacked the Prussian army in the [[Battle of Kaiserslautern]] without success. However, the French took advantage of the lack of cooperation between the Prussians and their Austrian allies. Hoche sent 12,000 troops under [[Alexandre Camille Taponier]] across the [[Vosges Mountains]] to attack Wurmser's right flank at Froeschwiller. On 22 December, Hoche launched a successful assault with five divisions while Pichegru's ''[[Army of the Rhine (France)|Army of the Rhine]]'' attacked Wurmser from the south. The [[Second Battle of Wissembourg (1793)|Second Battle of Wissembourg]] on 25-26 December would decide the fate of Alsace. ||| ||| ||| +0 Battle of Gainsborough ||| Siege of Hull (1643) ||| Meanwhile, Newcastle was besieging Gainsborough, and fired on the town with [[cannon]], setting fire to part of it. After a three-day [[siege]], Willoughby surrendered on 31 July. Newcastle then turned his forces around and headed north to besiege [[Siege of Hull (1643)|Hull]], leaving a Royalist garrison at Gainsborough. With the town back in Royalist hands, raiding parties once more started to harass Parliamentary held areas. ||| Aftermath ||| ||| +0 Battle of Gandesa (1938) ||| Battle of Caspe ||| After the [[Battle of Caspe|fall]] of Caspe, the Nationalists troops continued their advance towards Catalonia with the support of the ''[[Legion Condor]]'' and the ''[[Aviazione Legionaria]]''. By the end of February the nationalist had reached the outskirts of [[Gandesa]]. The [[XV International Brigade]] had been retreating since the [[Aragón Offensive]] began and the republican lines collapsed. ||| Background ||| ||| +0 Battle of Gang Toi ||| Operation Hump ||| The '''Battle of Gang Toi''' (8 November 1965) was fought during the [[Vietnam War]] between [[Australian Defence Force|Australian troops]] and the [[Viet Cong]]. The battle was one of the first engagements between the two forces during the war and occurred when A Company, [[1st Battalion, Royal Australian Regiment]] (1 RAR) struck a Viet Cong bunker system defended by Company 238 in the Gang Toi Hills, in northern Bien Hoa Province. It occurred during a major joint US-Australian operation codenamed [[Operation Hump]], involving the [[173rd Airborne Brigade Combat Team (United States)|US 173rd Airborne Brigade]], to which 1 RAR was attached. During the latter part of the operation an Australian rifle [[Company (military)|company]] clashed with an entrenched company-sized Viet Cong force in well-prepared defensive positions. Meanwhile, an American paratroop [[battalion]] was also heavily engaged in fighting on the other side of the [[Đồng Nai River|Song Dong Nai]]. ||| ||| ||| +0 Battle of Gangut ||| Battle of Grengam ||| * [[Battle of Grengam]] (1720) — was fought on the same day six years later and marked the end of Swedish supremacy in the Baltic waters; ||| Related battles ||| ||| +0 Battle of Gangut ||| Battle of Svensksund ||| * [[Battle of Svensksund]] (1790) — Sweden's most ambitious attempt to regain supremacy in the Baltic. ||| Related battles ||| ||| +0 Battle of García Hernández ||| Battle of Salamanca ||| The previous day, the [[Anglo-Portuguese Army|Allied army]] commanded by [[Arthur Wellesley, 1st Duke of Wellington]] had won a decisive victory over a French army led by Marshal [[Auguste Marmont]] in the [[Battle of Salamanca]]. Foy's division was the only French unit not engaged in the battle and it was acting as rearguard on 23 July. ||| Background ||| ||| +0 Battle of Garibpur ||| Battle of Boyra ||| An intimately entangled part of this battle is the air battle over the Boyra Salient, the actual '''[[Battle of Boyra]]''' where the Mitro Bahini successfully engaged and destroyed strike elements of the [[Pakistan Air Force]]. The battle took place prior to the start of hostilities in the western front of India (known as [[Indo-Pakistani War of 1971]]). The Mitro Bahini defeated [[Pakistan Army]] in the battle thus capturing key areas and severely denting Pakistani morale. ||| ||| ||| +0 Battle of Garibpur ||| Battle of Hilli ||| The battle coming just weeks before the official start of the war had an unexpected turn of events. Even the allied forces comprising Mukti Bahini and the Indian Army had only dreamt of such a victory given the overwhelming odds they were up against in this battle. A single [[battalion]] had been able to destroy an entire [[brigade]] supported by an [[air force]] and [[artillery]]. This and victories in other battles nearby like [[Battle of Hilli]] ensured that the Northern sector of East Pakistan was virtually in the hands of [[Mitro Bahini]] (Allied forces) before the war was declared. The morale of the Pakistanis dipped and following the mass defections of Bengalis, it was only a matter of time before they would face ultimate defeat ||| Aftermath ||| ||| +0 Battle of Garibpur ||| Indo-Pakistani War of 1971 ||| An intimately entangled part of this battle is the air battle over the Boyra Salient, the actual '''[[Battle of Boyra]]''' where the Mitro Bahini successfully engaged and destroyed strike elements of the [[Pakistan Air Force]]. The battle took place prior to the start of hostilities in the western front of India (known as [[Indo-Pakistani War of 1971]]). The Mitro Bahini defeated [[Pakistan Army]] in the battle thus capturing key areas and severely denting Pakistani morale. ||| ||| ||| +0 Battle of Garris ||| Battle of Orthez ||| The rout demoralized Harispe's division. The French general was unable to rally his soldiers in Saint-Palais and had to retreat further west. Consequently, the Anglo-Allied army breached the line of the Bidouze. Though the French engineers managed to set off demolition charges on the bridge, the work was done poorly and the Allies soon had the bridge back in operation. Soult recalled two of his divisions from north of the Adour and reformed his line on the [[Gave d'Oloron|Gave d'Oloron River]] with six divisions. The next major clash would be the [[Battle of Orthez]]. ||| Result ||| ||| +0 Battle of Gazala ||| First Battle of El Alamein ||| Auchinleck dismissed Ritchie on 25 June and assumed command of the Eighth Army through the [[First Battle of El Alamein]], where he stopped Rommel's advance. ||| Aftermath ||| Analysis ||| +0 Battle of Gefrees ||| Battle of Wagram ||| The '''Battle of [[Gefrees]]''' was fought on 8 July 1809 during the [[War of the Fifth Coalition]] between a joint force of Austrians and Brunswickers under the command of [[Michael von Kienmayer|General Kienmayer]] and a French force under the command of [[Jean-Andoche Junot|General Junot]], Duke of Abrantès. The battle ended in victory for the Austrians who avoided being trapped by Junot and a force of Saxons and Westphalians led by [[Jérôme Bonaparte]], King of Westphalia. After Jérôme's troops were defeated at the '''Battle of [[Hof, Germany|Hof]]''', the Austrians effectively had control over all of [[Kingdom of Saxony|Saxony]]. However the victory was in vain, due to the major Austrian defeat at [[Battle of Wagram|Wagram]] and the [[Armistice of Znaim]]. ||| ||| ||| +0 Battle of Gefrees ||| Walcheren Campaign ||| Duke Frederick William, however, was appalled by the [[Armistice of Znaim]]. He had hoped with the help of Kienmayer and the Austrians to start a popular uprising against Napoleon in northern Germany. Refusing to agree to the peace between Austria and France, the Black Duke decided to take matters into his own hands and make for the [[North Sea]] with his 2,000 troops. He still hoped to start popular uprising and in the following weeks, the Black Duke caused Jérôme major problems, defeating his Westphalian troops twice at the battles of [[Battle of Halberstadt|Halberstadt]] and [[Battle of Ölper (1809)|Ölper]], as well as reinforcing his army with Westphalian deserters from both battles. The Black Brunswickers even managed to temporarily retake the city of Brunswick but Jérôme had ordered three generals to find and destroy the Duke Frederick William's forces. Despite this the Black Brunswickers still managed to reach the coast and were evacuated to the [[Isle of Wight]] in August 1809 on the ships used to land troops at [[Walcheren Campaign|Walcheren]]. ||| Aftermath ||| ||| +0 Battle of Gembloux (1940) ||| Battle of Dunkirk ||| In the aftermath of the [[Battle of Hannut]], some {{convert|35|km|mi|abbr=on}} to the northeast, the town of Gembloux represented the last major prepared defensive position for the French on the Belgian front after the withdrawal from Hannut. Throughout the two-day battle, the French repeatedly defeated attempts by elements of the [[6th Army (Wehrmacht)|German Sixth Army]] to break through or circumvent French defences. However, in [[operational]] terms, the damage done to the French First Army, and developments elsewhere, forced it to retreat from Gembloux, out of Belgium and eventually toward the city of [[Lille]] inside the French border. The retreat caused the absence of coherent defence on the central sector of the Belgian front which in turn allowed the ''Wehrmacht'' to advance its operations toward French territory and subdue central Belgium. In [[strategic]] terms, the battle was inconclusive. Both sides benefitted from the engagement. For the ''Wehrmacht'', it delayed and distracted the most powerful French Army from their decisive breakthrough point near [[Battle of Sedan (1940)|Sedan]], which allowed the Germans to achieve their strategic goals as laid out in ''Fall Gelb''. However, the French First Army survived the initial battles and during the [[Siege of Lille (1940)|Siege of Lille]] diverted German forces from the [[Battle of Dunkirk]], which allowed the [[British Expeditionary Force (World War II)|British Expeditionary Force]] and a substantial French contingent to escape. ||| ||| ||| +0 Battle of Gembloux (1940) ||| Battle of Sedan (1940) ||| In the aftermath of the [[Battle of Hannut]], some {{convert|35|km|mi|abbr=on}} to the northeast, the town of Gembloux represented the last major prepared defensive position for the French on the Belgian front after the withdrawal from Hannut. Throughout the two-day battle, the French repeatedly defeated attempts by elements of the [[6th Army (Wehrmacht)|German Sixth Army]] to break through or circumvent French defences. However, in [[operational]] terms, the damage done to the French First Army, and developments elsewhere, forced it to retreat from Gembloux, out of Belgium and eventually toward the city of [[Lille]] inside the French border. The retreat caused the absence of coherent defence on the central sector of the Belgian front which in turn allowed the ''Wehrmacht'' to advance its operations toward French territory and subdue central Belgium. In [[strategic]] terms, the battle was inconclusive. Both sides benefitted from the engagement. For the ''Wehrmacht'', it delayed and distracted the most powerful French Army from their decisive breakthrough point near [[Battle of Sedan (1940)|Sedan]], which allowed the Germans to achieve their strategic goals as laid out in ''Fall Gelb''. However, the French First Army survived the initial battles and during the [[Siege of Lille (1940)|Siege of Lille]] diverted German forces from the [[Battle of Dunkirk]], which allowed the [[British Expeditionary Force (World War II)|British Expeditionary Force]] and a substantial French contingent to escape. ||| ||| ||| +0 Battle of Gembloux (1940) ||| Invasion of Poland ||| On the German side and forming part of [[Army Group B]] was General Walter von Reichenau's German Sixth Army. Its forces at Gembloux were mostly first-line and experienced reservists. The divisions had been active divisions in peacetime and were filled out with reservists as war approached; they had the best equipment establishments in the [[German Army (Wehrmacht)|''Heer'']] (German Army), and most had experienced action in the [[Invasion of Poland]] the preceding September. The formations included the [[XVI Army Corps (Wehrmacht)|XVI Corps]] commanded by General Erich Hoepner, and the IV Corps commanded by General [[Viktor von Schwedler]]. ||| Prelude ||| German offensive preparations ||| +0 Battle of Gemmano ||| Battle of Monte Cassino ||| The '''Battle of Gemmano''' was fought between the [[Germany|German]] and [[Allies of World War II|Allied]] forces in [[World War II]]. It was part of the Allies' '''Operation Olive''', the offensive in August 1944 on the [[Gothic Line]], the German line of defence in the [[Apennine Mountains|Apennines]] in northern [[Italy]]. It consisted of a series of four [[Eighth Army (United Kingdom)|British]] attacks between 4 September to 15 September 1944, on the German defences in and around the village of [[Gemmano]]. The village itself was taken on 9 September during the second attack, two more actions being required to take the surrounding area. Fighting was heavy, and the Battle of Gemmano has been called the '[[Battle of Monte Cassino|Cassino]] of the Adriatic' by some historians. ||| ||| ||| +0 Battle of Gemmano ||| Gothic Line ||| The '''Battle of Gemmano''' was fought between the [[Germany|German]] and [[Allies of World War II|Allied]] forces in [[World War II]]. It was part of the Allies' '''Operation Olive''', the offensive in August 1944 on the [[Gothic Line]], the German line of defence in the [[Apennine Mountains|Apennines]] in northern [[Italy]]. It consisted of a series of four [[Eighth Army (United Kingdom)|British]] attacks between 4 September to 15 September 1944, on the German defences in and around the village of [[Gemmano]]. The village itself was taken on 9 September during the second attack, two more actions being required to take the surrounding area. Fighting was heavy, and the Battle of Gemmano has been called the '[[Battle of Monte Cassino|Cassino]] of the Adriatic' by some historians. ||| ||| ||| +0 Battle of Gerona (1808) ||| Second Siege of Gerona ||| As part of his plan to overthrow the Spanish ruling family, [[Napoleon Bonaparte|Emperor Napoleon I]] ordered his soldiers to seize Barcelona in February 1808. The city's fortress was successfully occupied, but a few weeks later the Spanish people rebelled against [[First French Empire|Imperial French]] rule. Duhesme and his soldiers soon found themselves in difficulties. Hemmed in by Catalan [[militia]] and regular Spanish troops, the French general attempted to capture Girona in order to open up a secure supply line from France to Barcelona. The Franco-Italian force attempted to storm the city but they were repulsed by the city militia and two small battalions of Irish regular infantry in Spanish service. Duhesme fell back to Barcelona, but he returned to mount the [[Siege of Gerona (1808)|Second Siege of Gerona]] five weeks later. ||| ||| ||| +0 Battle of Getaria ||| Battle of Palermo ||| The destruction of the Spanish fleet by fireships had made a deep impression on [[Abraham Duquesne]], who successfully used the same tactics at the [[Battle of Palermo]] in 1676. ||| Consequences ||| ||| +0 Battle of Gettysburg ||| Battle of Antietam ||| Shortly after the Army of Northern Virginia won a major victory over the Army of the Potomac at the [[Battle of Chancellorsville]] (April 30 - May 6, 1863), Robert E. Lee decided upon a second invasion of the North (the first was the unsuccessful [[Maryland Campaign]] of September 1862, which ended in the bloody [[Battle of Antietam]]). Such a move would upset [[Union (American Civil War)|Federal]] plans for the summer campaigning season and possibly reduce the pressure on the besieged Confederate garrison at [[Vicksburg, Mississippi|Vicksburg]]. The invasion would allow the Confederates to live off the bounty of the rich Northern farms while giving war-ravaged [[Virginia]] a much-needed rest. In addition, Lee's 72,000-man army could threaten Philadelphia, [[Baltimore, Maryland|Baltimore]], and [[Washington, D.C.|Washington]], and possibly strengthen the growing peace movement in the North. ||| Background and movement to battle ||| ||| +0 Battle of Gettysburg ||| Battle of Chancellorsville ||| After his success at [[Battle of Chancellorsville|Chancellorsville]] in [[Virginia]] in May 1863, Lee led his army through the [[Shenandoah Valley]] to begin his second invasion of the North&mdash;the [[Gettysburg Campaign]]. With his army in high spirits, Lee intended to shift the focus of the summer campaign from war-ravaged northern Virginia and hoped to influence Northern politicians to give up their prosecution of the war by penetrating as far as [[Harrisburg, Pennsylvania]], or even [[Philadelphia]]. Prodded by [[President of the United States|President]] [[Abraham Lincoln]], Maj. Gen. [[Joseph Hooker]] moved his army in pursuit, but was relieved of command just three days before the battle and replaced by Meade. ||| ||| ||| +0 Battle of Gettysburg ||| Battle of Fort Sumter ||| During the [[American Civil War Centennial|Civil War Centennial]], the U.S. Post Office issued five postage stamps commemorating the 100th anniversaries of famous battles, as they occurred over a four-year period, beginning with the [[Battle of Fort Sumter]] Centennial issue of 1961. The [[Battle of Shiloh]] commemorative stamp was issued in 1962, the Battle of Gettysburg in 1963, the [[Battle of the Wilderness]] in 1964, and the [[Battle of Appomattox Court House|Appomattox]] Centennial commemorative stamp in 1965. ||| Commemoration in U.S. postage and coinage ||| ||| +0 Battle of Gettysburg ||| Battle of Shiloh ||| During the [[American Civil War Centennial|Civil War Centennial]], the U.S. Post Office issued five postage stamps commemorating the 100th anniversaries of famous battles, as they occurred over a four-year period, beginning with the [[Battle of Fort Sumter]] Centennial issue of 1961. The [[Battle of Shiloh]] commemorative stamp was issued in 1962, the Battle of Gettysburg in 1963, the [[Battle of the Wilderness]] in 1964, and the [[Battle of Appomattox Court House|Appomattox]] Centennial commemorative stamp in 1965. ||| Commemoration in U.S. postage and coinage ||| ||| +0 Battle of Gettysburg ||| Battle of the Wilderness ||| During the [[American Civil War Centennial|Civil War Centennial]], the U.S. Post Office issued five postage stamps commemorating the 100th anniversaries of famous battles, as they occurred over a four-year period, beginning with the [[Battle of Fort Sumter]] Centennial issue of 1961. The [[Battle of Shiloh]] commemorative stamp was issued in 1962, the Battle of Gettysburg in 1963, the [[Battle of the Wilderness]] in 1964, and the [[Battle of Appomattox Court House|Appomattox]] Centennial commemorative stamp in 1965. ||| Commemoration in U.S. postage and coinage ||| ||| +0 Battle of Gettysburg ||| Seven Days Battles ||| Prior to Gettysburg, Robert E. Lee had established a reputation as an almost invincible general, achieving stunning victories against superior numbers&mdash;although usually at the cost of high casualties to his army&mdash;during the [[Seven Days Battles|Seven Days]], the [[Northern Virginia Campaign]] (including the [[Second Battle of Bull Run]]), [[Battle of Fredericksburg|Fredericksburg]], and [[Battle of Chancellorsville|Chancellorsville]]. Only the [[Maryland Campaign]], with its tactically inconclusive [[Battle of Antietam]], had been less than successful. Therefore, historians have attempted to explain how Lee's winning streak was interrupted so dramatically at Gettysburg. Although the issue is tainted by attempts to portray history and Lee's reputation in a manner supporting different partisan goals, the major factors in Lee's loss arguably can be attributed to: (1) his overconfidence in the invincibility of his men; (2) the performance of his subordinates, and his management thereof; (3) his failing health, and (4) the performance of his opponent, George G. Meade, and the Army of the Potomac. ||| Historical assessment ||| Lee vs. Meade ||| +0 Battle of Gingindlovu ||| Siege of Eshowe ||| The '''Battle of Gingindlovu''' (uMgungundlovu) was fought on 2 April 1879 between a British relief column sent to break the [[Siege of Eshowe]] and a [[Zulu people|Zulu]] [[impi]] of King [[Cetshwayo]]. ||| ||| ||| +0 Battle of Glen Shiel ||| Battle of Cape Passaro ||| The British government responded on 11 August; declaring a violation of the Utrecht Treaty, the Royal Navy intercepted and destroyed the fleet of [[José Antonio de Gaztañeta]] in the region of [[Battle of Cape Passaro|Cape Passaro]], near [[Syracuse, Italy|Syracuse]]. Spain then declared war, with Alberoni deciding to take the initiative and stir up trouble in Britain to forestall an attack on the [[Iberian Peninsula]]. ||| Build-up and previous events ||| ||| +0 Battle of Glen Shiel ||| Spanish Armada ||| Three weeks after leaving [[Cadiz]], Ormonde's fleet encountered a storm near [[Cape Finisterre]] (29 March) which dispersed and damaged most of the ships. Ormonde was forced to withdraw the ships to several Spanish havens (comparable to the fate of the [[Spanish Armada]] of 1588). By then, Keith had already left the Spanish port of [[Pasajes]] ([[Pasaia]] in [[Basque language|Basque]]) and occupied the [[Isle of Lewis]], including [[Stornoway, Outer Hebrides|Stornoway]] where he set camp. On 13 April 1719, Keith's men disembarked on the Highlands near [[Loch Alsh|Lochalsh]], although the Highlanders did not join the 'Little Rising' in the expected numbers (the Spaniards carried 2000 guns to distribute), mistrusting the enterprise and waiting for news from the south. Keith could not proceed to [[Inverness]] and established his headquarters in the castle of [[Eilean Donan]]. ||| Build-up and previous events ||| Alberoni plan ||| +0 Battle of Glendale ||| Battle of Malvern Hill ||| The [[Confederate States Army|Confederate]] divisions of [[Major General (CSA)|Maj. Gens.]] [[Benjamin Huger (general)|Benjamin Huger]], [[James Longstreet]], and [[A.P. Hill]] converged on the retreating [[Union Army]] in the vicinity of Glendale or Frayser's Farm. Longstreet's and Hill's attacks penetrated the Union defense near Willis Church. Union counterattacks sealed the break and saved their line of retreat along the Willis Church Road. Huger's advance was stopped on the Charles City Road. The divisions led by Maj. Gen. [[Stonewall Jackson|Thomas J. 'Stonewall' Jackson]] were delayed by Brig. Gen. [[William B. Franklin]]'s corps at [[Battle of White Oak Swamp|White Oak Swamp]]. Confederate Maj. Gen. [[Theophilus H. Holmes]] made a feeble attempt to attack the Union left flank at Turkey Bridge but was driven back. This had been Lee's best chance to cut off the Union army from the James River. That night, the Union army established a strong position on [[Battle of Malvern Hill|Malvern Hill]]. ||| ||| ||| +0 Battle of Glorieta Pass ||| Battle of Gettysburg ||| The '''Battle of Glorieta Pass''', fought from March 26 to 28, 1862 in northern [[New Mexico Territory]], was the decisive [[battle]] of the [[New Mexico Campaign]] during the [[American Civil War]]. Dubbed the '[[Battle of Gettysburg|Gettysburg]] of the West' (a term that 'serves the novelist better than the historian' ) by some authors, it was intended as the killer blow by [[Confederate States of America|Confederate]] forces to break the [[Union (American Civil War)|Union]] possession of the West along the base of the [[Rocky Mountains]]. It was fought at [[Glorieta Pass]] in the [[Sangre de Cristo Mountains]] in what is now [[New Mexico]], and was an important event in the history of the [[New Mexico Territory in the American Civil War]]. ||| ||| ||| +0 Battle of Gloucester (1775) ||| Battles of Lexington and Concord ||| In April 1775, tensions between [[Kingdom of Great Britain|British]] colonists in the [[Province of Massachusetts Bay]] and the royal governor, General [[Thomas Gage]], boiled over into [[American Revolutionary War|war]]. When General Gage dispatched troops to [[Concord, Massachusetts|Concord]] to search for military supplies the colonists had stored there, alarms were raised, and colonists and soldiers [[Battles of Lexington and Concord|clashed in Lexington and Concord]] on April 19. Militia companies continued to arrive in the days following, and the British troops were [[Siege of Boston|besieged in Boston]]. ||| Background ||| ||| +0 Battle of Gloucester (1775) ||| Siege of Boston ||| In April 1775, tensions between [[Kingdom of Great Britain|British]] colonists in the [[Province of Massachusetts Bay]] and the royal governor, General [[Thomas Gage]], boiled over into [[American Revolutionary War|war]]. When General Gage dispatched troops to [[Concord, Massachusetts|Concord]] to search for military supplies the colonists had stored there, alarms were raised, and colonists and soldiers [[Battles of Lexington and Concord|clashed in Lexington and Concord]] on April 19. Militia companies continued to arrive in the days following, and the British troops were [[Siege of Boston|besieged in Boston]]. ||| Background ||| ||| +0 Battle of Gloucester (1777) ||| Battle of Red Bank ||| After a Hessian assault on [[Fort Mercer]], one of the principal defenses on the New Jersey side of the river, was repulsed in the [[Battle of Red Bank]], Howe sent part of his army across the Delaware to [[Gloucester County, New Jersey|Gloucester, New Jersey]] under the command of [[Charles Cornwallis|Lord Cornwallis]] to take Fort Mercer. Washington reacted to this by detaching forces under General [[Nathanael Greene]] across the Delaware just north of Gloucester. ||| Background ||| ||| +0 Battle of Gloucester Point (1861) ||| Battle of Gettysburg ||| Captain John Thompson Brown ultimately became a colonel. He was commander of the artillery for the 2d Corps of the [[Army of Northern Virginia]] at the [[Battle of Gettysburg]]. Brown was in charge of a division of three battalions of artillery at the [[Battle of the Wilderness]] when he was killed in action on May 6, 1864. ||| Aftermath ||| ||| +0 Battle of Gloucester Point (1861) ||| Battle of Pig Point ||| Similar minor engagements between Union gunboats and Virginia shore batteries occurred soon after the action at Gloucester Point at the [[Battle of Sewell's Point]], the [[Battle of Aquia Creek]] and the [[Battle of Pig Point]]. The Battle of Gloucester Point can be considered with those subsequent actions as part of the Union campaign to blockade the Chesapeake Bay and the entire coast of the Southern States. ||| Aftermath ||| ||| +0 Battle of Gloucester Point (1861) ||| Battle of the Wilderness ||| Captain John Thompson Brown ultimately became a colonel. He was commander of the artillery for the 2d Corps of the [[Army of Northern Virginia]] at the [[Battle of Gettysburg]]. Brown was in charge of a division of three battalions of artillery at the [[Battle of the Wilderness]] when he was killed in action on May 6, 1864. ||| Aftermath ||| ||| +0 Battle of Gloucester Point (1861) ||| Peninsula Campaign ||| The Confederates abandoned the naval batteries at Gloucester Point and Yorktown overnight on May 3-4, 1862. They took this action during the Confederate retreat up the Peninsula toward Richmond during the [[Peninsula Campaign]]. ||| Aftermath ||| ||| +0 Battle of Go Cong ||| Battle of Ap Bac ||| The '''Battle of Go Cong''' was a small battle during the [[Vietnam War]]. It took place on September 3, 1963, after the General Staff of the [[Viet Cong]] (NLF) called for 'another [[Battle of Ap Bac|Ap Bac]]' on [[South Vietnam]]ese forces. The intent of the operation was to drive out the rebels who had survived the earlier Ap Bac engagement. The battle was won by American and South Vietnamese forces, after inflicting heavy casualties on the Viet Cong, using artillery to slaughter rebel fighters fleeing American [[special operation]] troops who ambushed them with intense [[sniper]] fire. It was later discovered that the 91 of the captured NLF troops were new recruits, and did not have weapons. ||| ||| ||| +0 Battle of Gospić ||| Battle of the Barracks ||| '''Battle of Gospić''' ({{lang-hr|Bitka za Gospić}}) was fought in the environs of [[Gospić]], [[Croatia]], from 29 August until 22 September 1991 during the [[Croatian War of Independence]]. The battle pitted the [[Yugoslav People's Army]] (JNA), stationed in five barracks in the town, and paramilitary elements of the [[Serbian Guard (paramilitary)|Serbian Guard]] against the [[Croatian National Guard]] (ZNG), [[Croatian Police|police forces]] based in Gospić and police reinforcements from elsewhere in Croatia. Fighting in the eastern districts of Gospić, controlled by JNA forces with supporting artillery, was largely static but the balance shifted in favor of the Croatian forces following the [[Battle of the Barracks|capture of several JNA depots and barracks]] on 14 September. The remaining barracks were captured by 20 September leading to the expulsion of the JNA and Serbian Guard forces from the town ||| ||| ||| +0 Battle of Gospić ||| Plitvice Lakes incident ||| The battle followed escalating ethnic tensions in the [[Lika]] region, including attacks on Croatian civilians in [[Lovinac]], an attack on a Croatian police checkpoint in [[Žuta Lokva]], and skirmishes at the [[Plitvice Lakes incident|Plitvice Lakes]] and the Ljubovo Pass on the Gospić–[[Plitvička Jezera]] road. The remainder of 1991 saw further deterioration of the situation in the region, resulting in war crimes against [[Serb]]s and [[Croat]]s in the [[Gospić massacre|Gospić]] and [[Široka Kula massacre]]s. Fighting in the region remained deadlocked, with little to no territorial gains to either side, until a lasting ceasefire was called with the signing of the [[Sarajevo Agreement]] of 2 January 1992. ||| ||| ||| +0 Battle of Gratangen ||| Battles of Narvik ||| The '''Battle of Gratangen''' occurred during the first Norwegian counter-attack in the [[Battles of Narvik|Narvik Campaign]]. The Norwegian 6th Division gathered forces to push the Germans out of the [[Gratangen]] area and back towards [[Narvik]]. The first attack failed disastrously when the Germans counter-attacked unprepared Norwegian forces, [[Wiktionary:rout#Verb|routing]] a [[battalion]] and blunting the first Norwegian advance. ||| ||| ||| +0 Battle of Gravia Inn ||| Battle of Alamana ||| The Ottoman army under the command of Omer Vrioni, following his defeat of the Greeks at the [[Battle of Alamana]] and the execution of their leader [[Athanasios Diakos]], planned to attack the [[Peloponnese]] with an army of 9,000 men. However, his army was met by a Greek group numbering 120 men, under the command of Odysseas Androutsos, who had barricaded themselves inside an old inn. The Ottoman army surrounded the area and attacked the inn but were thrown back with heavy losses. While the Ottoman army paused their attacks to bring up the cannon, the Greeks slipped away and escaped through the Ottoman lines. ||| ||| ||| +0 Battle of Grenada ||| Siege of Savannah ||| D'Estaing returned to Grenada to make repairs, while Byron made for St. Kitts to do the same. The French admiral failed to capitalise on his superior strength to launch further attacks in the West Indies. Byron returned home in August. D'Estaing, after co-operating unsuccessfully with the Americans in an [[Siege of Savannah|attack on Savannah]] in September also returned to Europe. ||| Aftermath ||| ||| +0 Battle of Grengam ||| Battle of Gangut ||| Like the previous [[Battle of Gangut]], the Battle of Grengam was fought on [[Saint Pantaleon]] Day. In order to commemorate the perceived victory, a timber church to this saint was built in [[Saint Petersburg]] in 1722. It was rebuilt in stone in 1735-39. Since 1914 the [[facade]] of the church has borne two marble plaques listing the ships and regiments that fought at Gangut and Grengam. ||| Commemoration ||| ||| +0 Battle of Grunwald ||| Battle of Tannenberg ||| The [[German people|Germans]] generally saw the Knights as heroic and noble men who brought Christianity and civilization to the east. In August 1914, during [[World War I]], Germany won a battle against Russia near the site. When the Germans realized its propaganda potential, they named the battle the [[Battle of Tannenberg (1914)|Battle of Tannenberg]], ||| Legacy ||| Germany and Russia ||| +0 Battle of Guam (1944) ||| Capture of Guam ||| Guam is the largest of the Marianas, 32 miles (52 km) long and 10 miles (16 km) wide. {{rp|14}} It had been a United States possession since its [[Capture of Guam|capture from Spain]] in 1898 until it was [[Battle of Guam (1941)|captured by the Japanese]] on 10 December 1941, following the [[attack on Pearl Harbor]]. It was not as heavily fortified as the other Mariana Islands such as [[Saipan]] that had been Japanese possessions since the end of [[World War I]], but by 1944 it had a large Japanese garrison. ||| Background ||| ||| +0 Battle of Guanzhong (1946–47) ||| World War II ||| '''The Battle of Guanzhong''' (关中战斗) was a battle fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during the [[Chinese Civil War]] in the post-[[World War II]] era and resulted in [[communist]] victory. ||| ||| ||| +0 Battle of Guastalla ||| Battle of San Pietro ||| The Franco-Sardinian allies marched on Milan in October 1733, and occupied Lombardy without significant losses. In the spring of 1734 the Austrians responded in force, but suffered a bloody defeat in the [[Battle of San Pietro]], won by the French under de Coigny and de Broglie. Following the victory, reluctance on the part of Charles Emmanuel to pursue the retreating Austrians led to relatively little action throughout the summer of 1734. In September Field Marshal [[Dominik von Königsegg-Rothenfels]], who replaced [[Florimund Mercy]] (killed at San Pietro), renewed the Austrian offensive, winning a small victory near [[Quistello]] when his troops successfully raided de Broglio's headquarters on September 14, taking 1,500 prisoners and capturing Charles Emmanuel's silver service and campaign warchest. As the Austrians pursued the allies, they surrounded additional pockets of soldiers, taking another 3,000 prisoners. The allies fell back toward [[Guastalla]], where they fortified a position between the [[Crostolo]] and [[Po River|Po]] rivers. ||| Background ||| ||| +0 Battle of Guillemont ||| Battle of Bazentin Ridge ||| The '''Battle of Guillemont''' (3–6 September 1916) was an attack by the Fourth Army on the village of [[Guillemont]]. The village is on the D 20 running east to Combles and the D 64 south-west to Montauban. Longueval and Delville Wood lie to the north-west and Ginchy to the north-east. The village lay on the right flank of the British sector, near the boundary with the [[France|French]] Sixth Army. The Fourth Army had advanced close to Guillemont during the [[Battle of Bazentin Ridge]] {{nowrap|(14–17 July)}} and the capture of the village was the culmination of British attacks which began on {{nowrap|22/23 July,}} to advance on the right flank of the Fourth Army, to eliminate a salient further north at Delville Wood. German defences ringed the wood and had observation over the French Sixth Army area to the south, towards the Somme. ||| ||| ||| +0 Battle of Gujrat ||| First Anglo-Sikh War ||| After the British victory in the [[First Anglo-Sikh War]], the Punjab was indirectly governed by a British representative at the [[Durbar (court)|Durbar]] (court) in [[Lahore]] and Agents in several of the regions. The Sikh Army, the [[Khalsa]], was kept in being and used to keep order in the Punjab and [[North-West Frontier Province (1901–1955)|North West Frontier]] Region. The Khalsa regarded itself as betrayed rather than defeated in the first war, and several of its Sardars (Generals) plotted rebellion. ||| Outbreak and course of the war ||| ||| +0 Battle of Gujrat ||| Siege of Multan ||| On the British side, once news of Chillianwala reached Britain, Gough was almost immediately superseded. His replacement was General [[Charles James Napier]], who would require several weeks to travel from England. In the meantime, the [[Siege of Multan]] had resumed, and Mulraj was forced to surrender on 22 January. This allowed the bulk of the besieging force to reinforce Gough's army. In particular, they brought large numbers of heavy guns with them. Gough, who had now received word of his dismissal but who remained in command until formally relieved, advanced against the Sikh army. He had three infantry divisions and a large cavalry force, with 100 guns of various weights and calibres. ||| Prelude to the Battle ||| ||| +0 Battle of Gurun ||| Battle of Jitra ||| The '''Battle of Gurun''' was a minor engagement between the Japanese and Commonwealth forces during the [[Malayan Campaign]] of the [[World War II|Second World War]]. The battle occurred when the [[Indian 11th Infantry Division|11th Indian Division]] attempted to slow down the Japanese advance after the disastrous [[Battle of Jitra]] at a position 3 miles north of the village of [[Gurun, Kedah|Gurun]]. ||| ||| ||| +0 Battle of Gurun ||| Operation Krohcol ||| General Percival gave permission to Major-General [[David Murray-Lyon|Murray-Lyon]] to withdraw from the Jitra position after just a few days of fighting. Murray-Lyon believed he was under attack from far greater forces than he actually was and also believed that his line of retreat was threatened by the failure of [[Operation Krohcol|Krohcol]] to stop the Japanese advance from [[Patani (region)|Patani]]. Murray-Lyon was given permission to withdraw {{convert|30|mi|km|abbr=on}} south to unprepared positions at Gurun. The terrain at Gurun offered a natural defensive obstacle for the British to use in the hope of stopping the Japanese advance. ||| Background ||| ||| +0 Battle of Hakodate ||| Battle of Tsushima ||| The future admiral [[Togo Heihachiro]], hero of the 1905 [[Battle of Tsushima]], participated to the battle as a gunner on board the paddle steam warship [[Japanese warship Kasuga (1862)|''Kasuga'']]. ||| Aftermath ||| ||| +0 Battle of Haman ||| Battle of Masan ||| Operating in defense of [[Masan]] during the [[Battle of Masan]], the [[US Army]]'s [[US 24th Infantry Regiment|24th Infantry Regiment]] was stretched along a long line on a ridge to the west of the town, at Haman. When the [[North Korean People's Army]] [[NK 6th Division|6th Division]] attacked the town, the US troops fought to repel their advance in a weeklong battle in which the 24th Infantry performed poorly, and other US reinforcements were brought in to assist in fighting off the attack. The battle remained bitterly deadlocked long enough for another UN force to [[Battle of Inchon|counterattack at Inchon]], forcing the North Korean Army to retreat from Masan. ||| ||| ||| +0 Battle of Haman ||| Battle of Taejon ||| The 24th Infantry Division was the first US unit sent into Korea with the mission to take the initial 'shock' of North Korean advances, delaying much larger North Korean units for several weeks to buy time to allow reinforcements to arrive, They made a final stand in the [[Battle of Taejon]], where they were almost completely destroyed, but their resistance kept the North Koreans from advancing until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of Haman ||| World War II ||| Following the June 25, 1950, outbreak of the Korean War after the invasion of the [[Republic of Korea]] (South Korea) by the [[Democratic People's Republic of Korea]] (North Korea), the [[United Nations]] voted to commit troops to the conflict in support of South Korea. The United States, as a member of the UN, committed ground forces to the Korean peninsula with the goals of repelling the North Korean invasion and preventing South Korea from collapsing. By 1950, US forces in the [[Far East]] had been steadily decreasing since the end of [[World War II]], five years earlier, and at the time the closest forces were the [[US 24th Infantry Division]], headquartered in [[Japan]]. The division was understrength, and most of its equipment was antiquated due to reductions in military spending. Regardless, the 24th was ordered to South Korea. ||| Background ||| Outbreak of war ||| +0 Battle of Hamel ||| Battle of the Somme ||| Many of the tactics employed, such as the use of [[combined arms]] from the [[Human wave attack|massed attacks]] mounted earlier in the war, illustrate the evolution of modern military tactics. All the Allies' objectives were achieved in 93 minutes, just three minutes more than Monash's calculated battle time of 90 minutes. Using conventional tactics, the fighting could have lasted for weeks or months, with much higher casualty rates. For example, a similar defensive position had resisted Allied capture for two months at the [[Battle of the Somme]]. ||| ||| ||| +0 Battle of Hampton Roads ||| Battle of Fort Sumter ||| On April 19, 1861, shortly after the outbreak of hostilities at [[Battle of Fort Sumter|Charleston Harbor]], US President [[Abraham Lincoln]] proclaimed a [[Union blockade|blockade]] of ports in the seceded states. On April 27, after Virginia and North Carolina had also passed ordinances of secession, the blockade was extended to include their ports also. ||| The blockade at Norfolk ||| ||| +0 Battle of Hampton Roads ||| Crimean War ||| When steam propulsion began to be applied to warships, naval constructors renewed their interest in armor for their vessels. Experiments had been tried with armor during the [[Crimean War]], just prior to the American Civil War, ||| Birth of the ironclads ||| ||| +0 Battle of Hampton Roads ||| Union blockade ||| On April 19, 1861, shortly after the outbreak of hostilities at [[Battle of Fort Sumter|Charleston Harbor]], US President [[Abraham Lincoln]] proclaimed a [[Union blockade|blockade]] of ports in the seceded states. On April 27, after Virginia and North Carolina had also passed ordinances of secession, the blockade was extended to include their ports also. ||| The blockade at Norfolk ||| ||| +0 Battle of Hanau ||| Battle of Leipzig ||| Following Napoleon's defeat at the [[Battle of Leipzig]] earlier in October, Napoleon began to retreat from Germany into France and relative safety. Wrede attempted to block Napoleon's line of retreat at [[Hanau]] on 30 October. Napoleon arrived at Hanau with reinforcements and defeated Wrede's forces. On 31 October Hanau was in French control, opening Napoleon's line of retreat. ||| ||| ||| +0 Battle of Hanko (1941) ||| Winter War ||| As part of the 1940 [[Moscow Peace Treaty]] which formally ended the Soviet-Finnish [[Winter War]], [[Hanko]] was leased to the [[Soviet Union]] as a naval base. The civilian population was forced to evacuate before Soviet forces arrived. The leased area included several surrounding islands, several coastal artillery sites (among them the important fort of [[Russarö]]), important harbor facilities, and an area suitable for an airfield, which the [[Soviet Union|Soviets]] quickly constructed. Troop transport rights from the Soviet Union to Hanko and back put severe strain on Finnish-Soviet relations, and played a part both in Finland's decision to allow German troops to transit Northern Finland, and later, to go to war with the Soviet Union. Though Hanko had originally been leased as a naval base, ground forces were far more numerous, with only a small naval detachment being present at the base. ||| Background ||| ||| +0 Battle of Harpers Ferry ||| Battle of Antietam ||| During the fighting on Maryland Heights, the other Confederate columns arrived and were astonished to see that critical positions to the west and south of town were not defended. Jackson methodically positioned his artillery around Harpers Ferry and ordered Maj. Gen. [[A.P. Hill]] to move down the west bank of the [[Shenandoah River]] in preparation for a flank attack on the Federal left the next morning. By the morning of September 15, Jackson had positioned nearly 50 guns on Maryland Heights and at the base of Loudoun Heights. He began a fierce artillery barrage from all sides and ordered an infantry assault. Miles realized that the situation was hopeless and agreed with his subordinates to raise the white flag of surrender. Before he could surrender personally, he was mortally wounded by an artillery shell and died the next day. After processing more than 12,000 Union prisoners, Jackson's men then rushed to [[Sharpsburg, Maryland]], to rejoin Lee for the [[Battle of Antietam]]. ||| ||| ||| +0 Battle of Harpers Ferry ||| First Battle of Bull Run ||| McClellan had wanted to add the Harpers Ferry garrison to his field army, but general-in-chief [[Henry W. Halleck]] had refused, saying that the movement would be too difficult and that the garrison had to defend itself 'until the latest moment,' or until McClellan could relieve it. Halleck had probably expected its commander, [[Colonel (United States)|Col.]] [[Dixon S. Miles]], to show some military knowledge and courage. Miles was a 38-year veteran of the U.S. Army and the [[Mexican-American War]], but who had been disgraced after the [[First Battle of Bull Run]] when a court of inquiry held that he had been drunk during the battle. Miles swore off liquor and was sent to the supposedly quiet post at Harpers Ferry. ||| Background ||| ||| +0 Battle of Hartsville ||| Battle of Perryville ||| The Stones River Campaign started in early November 1862 when [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[William S. Rosecrans]] moved his [[Army of the Cumberland]] southeast from [[Nashville, Tennessee]], toward [[Murfreesboro, Tennessee|Murfreesboro]]. [[Confederate States of America|Confederate]] General [[Braxton Bragg]], commanding the [[Confederate Army of Tennessee|Army of Tennessee]], had retreated there after his defeat at the [[Battle of Perryville]]. Bragg ordered Colonel [[John Hunt Morgan]] to move north with his cavalry and operate along Rosecrans's lines of communications, to prevent him from foraging for supplies north of Nashville. The action at Hartsville, a crossing point on the Cumberland River about 40 miles upstream from Nashville, north of Murfreesboro, was an incident in Morgan's raid to the north, before Rosecrans had the bulk of his infantry forces on the move. ||| Background ||| ||| +0 Battle of Hartsville ||| Battle of Stones River ||| The action at Hartsville foreshadowed the Confederate cavalry raids by [[Nathan Bedford Forrest]] into West Tennessee, December 1862 to January 1863, and by Morgan into Kentucky, from December 1862 to January 1863. Rosecrans arrived in Murfreesboro on December 29, setting the stage for the [[Battle of Stones River]]. ||| Aftermath ||| ||| +0 Battle of Heartbreak Ridge ||| Battle of Bloody Ridge ||| After withdrawing from [[Battle of Bloody Ridge|Bloody Ridge]], the [[Korean People's Army]] (KPA) set up new positions just {{Convert|1500|yd}} away on a seven-mile (11 km) long hill mass. If anything, the Communist defenses were even more formidable here than on [[Battle of Bloody Ridge|Bloody Ridge]]. The [[2nd Infantry Division (United States)|US 2nd Infantry Division's]] acting commander, [[Brigadier general (United States)|Brig. Gen.]] Thomas de Shazo, and his immediate superior, [[Major general (United States)|Maj. Gen.]] [[Clovis E. Byers]], the [[U.S. X Corps|X Corps]] commander, seriously underestimated the strength of the North Korean position. They ordered a single infantry regiment, the [[23rd Infantry Regiment (United States)|23rd]], and its attached [[French Battalion in the Korean War|French battalion]], to make what would prove to be an ill-conceived assault straight up Heartbreak's heavily fortified slopes. ||| Background ||| ||| +0 Battle of Heartbreak Ridge ||| Battle of Triangle Hill ||| The '''Battle of Heartbreak Ridge''' ({{korean|hangul=단장의 능선 전투|hanja=斷腸의 稜線 戰鬪}}; {{lang-fr|Bataille de Crèvecœur}}), also known as the '''Battle of Wendengli''' ({{zh|s=文登里战斗|p=Wéndēnglǐ Zhàndòu}}), was a month-long battle in the [[Korean War]] which took place between September 13 and October 15, 1951. The Battle of Heartbreak Ridge was one of several major engagements in the hills of North Korea a few miles north of the [[38th parallel north|38th parallel]] (the pre-war boundary between [[North Korea|North]] and [[South Korea]]), near [[Chorwon]]. For the Chinese, this battle is often confused with [[Battle of Triangle Hill]], which occurred a year later. ||| ||| ||| +0 Battle of Heilsberg ||| Battle of Guttstadt-Deppen ||| On 24 May 1807, the [[Siege of Danzig (1807)|Siege of Danzig]] ended when Prussian General [[Friedrich Adolf, Count von Kalckreuth]] capitulated to [[Marshal of France|French Marshal]] [[François Joseph Lefebvre]]. With Danzig (modern day [[Gdańsk]]) secured, Napoleon was now free to turn against Bennigsen's army. Yet it was the Russian who struck first when he ordered his columns to converge on Marshal [[Michel Ney]]'s exposed VI Corps on 2 June. Outnumbered 63,000 to 17,000, Ney fought a brilliant rear guard action at the [[Battle of Guttstadt-Deppen]] on 5 and 6 June. Though he lost his baggage train, two guns, and 2,042 men, Ney managed to escape to the southwest over the [[Pasłęka|Pasłęka (Passarge) River]] with the bulk of his soldiers, leaving Bennigsen seething with rage over his missed opportunity. ||| Overview ||| ||| +0 Battle of Hel ||| Battle of Gdynia ||| The German army forced Polish units of [[Armia Pomorze]] to retreat from the [[Danzig Corridor]] in the first week of September, and began the assault on the Polish forces in Hel on 9 September. After Armia Pomorze was defeated in the [[Battle of Tuchola Forest]], and other Polish strongholds on the coast capitulated ([[Battle of Westerplatte]], [[Battle of Gdynia]] and [[Battle of Kępa Oksywska]]), from 20 September onward Hel was the only viable pocket of Polish resistance in northern Poland. ||| The battle ||| ||| +0 Battle of Hill 70 ||| Second Battle of Passchendaele ||| The remainder of August, all of September and the beginning of October were relatively quiet, with Canadian efforts devoted mainly to preparations for another offensive. No further offensives took place however, largely because the British First Army lacked sufficient resources for the task.{{sfn|Nicholson|1962|p=297}} Instead, the Canadian Corps was transferred to the Ypres sector in early October in preparation for the [[Second Battle of Passchendaele]].{{sfn|Nicholson|1962|p=312}} Soon after the battle, German Sixth Army commander {{lang|de|''General der Infanterie''}} Otto von Below was transferred to the [[Italian Campaign (World War I)|Italian front]], where he took command of the newly formed Austro-German [[14th Army (German Empire)|14th Army]]. In this capacity, he executed an extremely successful offensive at the [[Battle of Caporetto]] in October 1917. {{lang|de|''General der Infanterie''}} Ferdinand von Quast took over command of the German Sixth Army until the end of the war. ||| Aftermath ||| Subsequent operations ||| +0 Battle of Hlobane ||| Battle of Isandlwana ||| On 17 January 1879, Wood advanced his column north-eastwards, and a [[laager]] (a defensive wagon circle) was established at [[Tinta's Kraal]], {{convert|10|mi}} south of a chain of flat-topped mountains on the 20th. These were [[Zunguin]], [[Hlobane]] and [[Ityentika]], connected by a nek, and running for {{convert|15|mi}} in a north-easterly direction. While the camp was being fortified, scouts investigating the mountains were attacked from Zunguin by about 1,000 Zulus. At dawn the next day an attack was mounted on Zunguin, and the Zulus fled to Hlobane, where Wood observed some 4,000 Zulus drilling that afternoon. An attack on Hlobane began on the 24th, but was scrapped when Wood learnt of the [[Battle of Isandlwana|disaster at Isandlwana]]. After falling back to Tinta's Kraal, Wood decided to move his column north-westwards to [[Kambula hill]], about 14 miles due west of Zunguin. Their arrival on the 31st was met with a message from Lord Chelmsford informing Wood that all orders were cancelled, he was now on his own with no expectation of reinforcements and that he must be prepared to face the whole Zulu Army. ||| Prelude ||| ||| +0 Battle of Hlobane ||| Battle of Kambula ||| The Battle of Hlobane had been a British defeat. Fifteen officers and 110 soldiers were killed, a further 8 wounded and 100 native soldiers died. The loss in horses gravely weakened Wood's mounted capability. The Border Horse unit, trapped and unable to retreat to Kambula was wiped out, and the battalions of Zulu warriors helping the British had decamped. However, Wood was confident that the Zulu impi would now attack Kambula as he hoped, and he was confident of victory. The following day, at the [[Battle of Kambula]], Wood did indeed rout the Zulu army. ||| Results ||| ||| +0 Battle of Hohenfriedberg ||| Battle of Mollwitz ||| Austria sought to regain [[Silesia]], which had been lost to Prussia in the [[Battle of Mollwitz]]. An Austrian army of about 62,500, including allied [[Saxony|Saxon troops]] marched to Silesia. The commander was [[Prince Charles Alexander of Lorraine]], brother-in-law of [[Maria Theresa of Austria|Empress Maria Theresa]]. [[Johann Adolf II, Duke of Saxe-Weissenfels]] commanded the Saxons. ||| Background ||| ||| +0 Battle of Hoke's Run ||| First Battle of Bull Run ||| The '''Battle of Hoke's Run''', also known as the '''Battle of [[Falling Waters, West Virginia|Falling Waters]]''' or '''[[Hainesville, Berkeley County, West Virginia|Hainesville]]''', took place on July 2, 1861, in [[Berkeley County, West Virginia|Berkeley County]], [[Virginia]] (now [[West Virginia]]) as part of the [[First Battle of Bull Run|Manassas Campaign]] of the [[American Civil War]]. Notable as an early engagement of Confederate [[Stonewall Jackson|Colonel Thomas J. Jackson]] and his Brigade of Virginia Volunteers, nineteen days before their famous nickname would originate, this brief skirmish was hailed by both sides as a stern lesson to the other. about how to operate in the face of superior numbers, Jackson's forces resisted [[Robert Patterson|General Robert Patterson's]] Union forces briefly and then slowly retreated over several miles. ||| ||| ||| +0 Battle of Hollabrunn (1809) ||| Battle of Wagram ||| The French victory at the [[Battle of Wagram]] on 6 July forced the commander of the ''Kaiserlich-königliche Hauptarmee Hauptarmee'', the main Austrian army, [[Archduke Charles of Austria-Teschen]], to retreat. In spite of the defeat, the retreat was orderly and very well handled. The French, commanded by [[Napoleon I]], were initially unsure about the exact direction, with reports saying that the Austrians were retreating towards [[Bohemia]], but it was still unclear whether they would retreat using the road to [[Brno|Brünn]] or the road to [[Znojmo|Znaim]]. Other reports from, sent by General [[Louis-Pierre Montbrun]] were indicating that the Austrians were actually retreating towards [[Moravia]]. Masséna sent scouts towards [[Krems an der Donau|Krems]] and the district of [[Horn District|Horn]] and was able to ascertain that the enemy was not retreating in that direction, but he was unable to conclude where they would retreat. It thus took the French a few days after the battle of Wagram, before they could gather enough intelligence to really understand where the Austrians were going. However, by 8 July, things began to clarify for Napoleon, mainly due to intelligence sent by [[Auguste de Marmont]], commander of XI Corps and the significance of a series of combats fought by elements of Masséna's Corps against the VI Korps under Klenau. These combats, fought at [[Combat of Korneuburg|Korneuburg]] and [[Combat of Stockerau|Stocerau]] allowed Masséna to inform Napoleon that a large Austrian force was indeed retreating towards Bohemia. ||| Context and battle ||| ||| +0 Battle of Hondschoote (1793) ||| Flanders Campaign ||| The '''Battle of Hondschoote''' took place during the [[Flanders Campaign]] of the [[French Revolutionary Wars: Campaigns of 1793|Campaign of 1793]] in the [[French Revolutionary Wars]]. It was fought during operations surrounding the [[Siege of Dunkirk (1793)|Siege of Dunkirk]] between 6 and 8 September 1793 at [[Hondschoote]], [[Nord (département)|Nord]], [[France]], and resulted in a French victory under General [[Jean Nicolas Houchard]] and General [[Jean-Baptiste Jourdan]] against the command of [[Heinrich Wilhelm von Freytag|Marshal Freytag]], part of the Anglo-Hanoverian corps of the [[Prince Frederick, Duke of York and Albany|Duke of York]]. ||| ||| ||| +0 Battle of Hondschoote (1793) ||| Siege of Dunkirk (1793) ||| The '''Battle of Hondschoote''' took place during the [[Flanders Campaign]] of the [[French Revolutionary Wars: Campaigns of 1793|Campaign of 1793]] in the [[French Revolutionary Wars]]. It was fought during operations surrounding the [[Siege of Dunkirk (1793)|Siege of Dunkirk]] between 6 and 8 September 1793 at [[Hondschoote]], [[Nord (département)|Nord]], [[France]], and resulted in a French victory under General [[Jean Nicolas Houchard]] and General [[Jean-Baptiste Jourdan]] against the command of [[Heinrich Wilhelm von Freytag|Marshal Freytag]], part of the Anglo-Hanoverian corps of the [[Prince Frederick, Duke of York and Albany|Duke of York]]. ||| ||| ||| +0 Battle of Hong Kong ||| Second Sino-Japanese War ||| Britain first thought of Japan as a threat with the ending of the [[Anglo-Japanese Alliance]] in the early 1920s, a threat that increased with the escalation of the [[Second Sino-Japanese War]]. On 21 October 1938 the Japanese occupied [[Guangzhou|Canton]] (Guangzhou) and Hong Kong was effectively surrounded. ||| Background ||| ||| +0 Battle of Horlivka ||| Siege of Sloviansk ||| Horlivka is a large city in [[Donetsk Oblast]], north of [[Donetsk]] city. Amidst [[2014 pro-Russian unrest in Ukraine|rising unrest]] across [[Eastern Ukraine|eastern]] and [[Southern Ukraine|southern]] Ukraine, armed men stormed and took control of a police station in Horlivka on 14 April. Soon after this, the men stormed the city administration, and gained effective control over the city for the breakaway [[Donetsk People's Republic]]. After DPR forces [[Siege of Sloviansk|withdrew from Sloviansk]] in northern Donetsk Oblast on 5 July, many travelled to Horlivka, which remained under DPR control. ||| Background ||| ||| +0 Battle of Horodok ||| Deluge (history) ||| The '''battle of Gródek Jagielloński''' or '''battle of Horodok''' took place during the [[Russo-Polish War (1654–67)]] on 29 September 1655. Russian and [[Ukrainian Cossack]] forces under [[Vasily Borisovich Sheremetev]] and [[Bohdan Khmelnytsky]] engaged a Polish–Lithuanian army under [[Stanisław 'Rewera' Potocki]] near [[Gródek Jagielloński]], which at that time was part of [[Polish-Lithuanian Commonwealth]]'s [[Ruthenian Voivodeship]] (now [[Horodok, Lviv Oblast]], Ukraine). Polish forces were defeated and forced to retreat, losing their supplies to the Russians. The Russians advanced, besieging [[Lwow]], and Potocki with the remains of his army was soon forced to surrender to the [[Deluge (history)|invading Swedes]]. ||| ||| ||| +0 Battle of Horseshoe Bend (1814) ||| Battle of Bladensburg ||| [[Eric Flint]] has written a series of [[alternate history]] novels, ''[[1812: The Rivers of War|Trail of Glory]],'' that begin with the Battle of Horseshoe Bend. In Flint's version, Houston is only lightly wounded in the battle. He is breveted to captain by Jackson and sent to the national [[Capital city|capital]] to help negotiate a peaceful settlement between the U.S. and the Cherokee, Creek, and other Southeastern tribes. He arrives in Washington shortly after the [[Battle of Bladensburg]], where he rallies defeated American troops and organizes [[Black people|black]] [[teamster]]s into an ''[[ad hoc]]'' artillery force to successfully defend the Capitol building and prevent the [[British Army|British]] from burning the city. ||| In fiction ||| ||| +0 Battle of Horseshoe Bend (1814) ||| Battle of Burnt Corn ||| In 1813, militia troops intercepted a Red Stick party returning from obtaining arms in (Spanish colonial) [[Pensacola, Florida|Pensacola]]. While they were looting the material, the Red Sticks returned and defeated them, at what became known as the [[Battle of Burnt Corn]]. Red Sticks' raiding of enemy settlements continued; and in August 1813 they attacked [[Fort Mims]], in retaliation for the Burnt Corn attack. ||| Background ||| ||| +0 Battle of Horseshoe Bend (1814) ||| Battle of New Orleans ||| This victory, along with that at the [[Battle of New Orleans]], greatly contributed to Jackson's favorable national reputation and his popularity. It was a fact that he was well known when he ran successfully for [[President of the United States|President]] in 1828. ||| Results ||| ||| +0 Battle of Hsimucheng ||| Battle of Tashihchiao ||| Following its defeat at the [[Battle of Tashihchiao]], the 2nd Siberian Corps under General Zasulich retreated to the village of Hsimungcheng. General Zasulich had a total of 33 battalions and 80 artillery pieces, but was in an exposed position in mountainous terrain. ||| Prelude ||| ||| +0 Battle of Huaiyin–Huai'an ||| World War II ||| Battle of [[Huaiyin District, Huai'an|Huaiyin]]-[[Huai'an]] is also called by the Campaign to Defend [[Huaiyin District, Huai'an|Huaiyin]]-[[Huai'an]] (两淮保卫战) by the [[Communist Party of China]], and it was a struggle between the [[Kuomintang|nationalists]] and the communists for the control of [[Huaiyin District, Huai'an|Huaiyin]] and [[Huai'an]], the two richest cities in [[China]] during the [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[Kuomintang|nationalist]] victory. ||| ||| ||| +0 Battle of Humenné ||| Battle of Vienna ||| The battle of Humenné was an important part of the war as the Polish intervention saved Vienna - the capital city of the Holy Roman Empire - from Transylvania. That is why some Polish sources call it the ''first Vienna relief'' - the second being the famous [[Battle of Vienna]] in 1683. ||| Aftermath ||| ||| +0 Battle of Hwanggan ||| Battle of Pusan Perimeter ||| The North Koreans eventually were able to overwhelm the US forces with sheer numbers, capturing Hwanggan and pushing the American units further south. However, the action solidified the 27th Infantry's position as a valuable reserve unit for the [[US Eighth Army]] during the [[Battle of Pusan Perimeter]]. The 27th would go on to distinguish itself in several critical battles, including the [[Battle of the Bowling Alley]]. ||| ||| ||| +0 Battle of Hwanggan ||| Battle of Taejon ||| The [[US Army]]'s [[US 27th Infantry|27th Infantry Regiment]], [[US 25th Infantry Division|25th Infantry Division]], newly arrived in Korea, was moved to a road north of [[Hwanggan]] to block the [[North Korean People's Army]]'s [[NK 2nd Division|2nd Division]], advancing following the [[Battle of Taejon]]. In an unusually good first performance, the 27th Infantry was able to delay the North Korean division for almost a week, inflicting heavy casualties on it while suffering few casualties of their own. ||| ||| ||| +0 Battle of Hwanggan ||| Battle of the Bowling Alley ||| The North Koreans eventually were able to overwhelm the US forces with sheer numbers, capturing Hwanggan and pushing the American units further south. However, the action solidified the 27th Infantry's position as a valuable reserve unit for the [[US Eighth Army]] during the [[Battle of Pusan Perimeter]]. The 27th would go on to distinguish itself in several critical battles, including the [[Battle of the Bowling Alley]]. ||| ||| ||| +0 Battle of Höchstädt (1800) ||| Battle of Biberach (1800) ||| On 4 and 5 May, the French launched repeated and fruitless assaults on the Messkirch. At nearby [[Sauldorf|Krumbach]], where the Austrians also had the superiority of position and force, the 1st Demi-Brigade took the village and the heights around it, which gave them a commanding aspect over Messkirch. Subsequently, Kray withdrew his forces to [[Sigmaringen]], followed closely by the French. Fighting at nearby [[Battle of Biberach (1800)|Biberach an der Ris]] ensued on 9 May; action principally consisted of the 25,000 man-strong French 'Center', commanded by [[Laurent de Gouvion Saint-Cyr]] against a Habsburg force of similar size. ||| Background ||| ||| +0 Battle of Höchstädt (1800) ||| Battle of Kaiserslautern ||| Although the [[First Coalition]] forces achieved several initial victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Höchstädt (1800) ||| Battle of Neerwinden (1793) ||| Although the [[First Coalition]] forces achieved several initial victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Höchstädt (1800) ||| War of the Spanish Succession ||| The Danube passage connecting Ulm, [[Donauwörth]], [[Ingolstadt]] and [[Regensburg]] had strategic importance in the ongoing competition for European hegemony between France and the [[Holy Roman Empire]]; the army that commanded the Danube, especially its passage through [[Duchy of Württemberg|Württemberg]] and Bavaria, could command access to the important cities of [[Munich]] and the seat of Habsburg authority: Vienna. The end result of the battle was the opposite of what had occurred on those same fields almost 100 years earlier, when the armies of the [[Grand Alliance (League of Augsburg)|Grand Alliance]] had faced the armies of France during the [[War of the Spanish Succession]]. At the Second Battle of Höchstädt in 1704, called the [[Battle of Blenheim]] by the English, the overwhelming Allied victory ensured the safety of Vienna from the Franco-Bavarian army, thus preventing the collapse of the Grand Alliance. France's loss during that engagement opened the pathway into France for the allied English and Austrian forces. ||| ||| ||| +0 Battle of Hürtgen Forest ||| Battle of Aachen ||| The U.S. commanders' initial goal was to pin down German forces in the area to keep them from reinforcing the front lines further north in the [[Battle of Aachen]], where the Allies were fighting a trench war between a network of fortified industrial towns and villages speckled with pillboxes, tank traps and minefields. A secondary objective may have been to [[flanking maneuver|outflank]] the front line. The Americans' initial tactical objectives were to take Schmidt and clear [[Monschau]]. In a second phase the Allies wanted to advance to the [[Rur|Rur River]] as part of [[Operation Queen|Operation ''Queen'']]. ||| ||| ||| +0 Battle of Hürtgen Forest ||| Battle of the Bulge ||| The Germans fiercely defended the area because it served as a staging area for the 1944 winter offensive Watch on the Rhine (German: Unternehmen: Wacht am Rhein—later known as the [[Battle of the Bulge]]), and because the mountains commanded access to the Rur Dam at the head of the Rur Reservoir (Rurstausee). If the floodgates were opened, the resulting surge would flood low-lying areas downstream and temporarily prevent forces from crossing the river. The [[Allies of World War II|Allies]] failed to capture the area after several heavy setbacks and the Germans successfully held the region until they launched their last-ditch offensive into the [[Ardennes]]. The [[Battle of the Bulge]] gained widespread press and public attention, leaving the battle of Hürtgen Forest largely forgotten. ||| ||| ||| +0 Battle of Hürtgen Forest ||| Operation Cobra ||| Historical discussion revolves around whether the American battle plan made any operational or tactical sense. One analysis {{rp|240–241}} is that the Allies under-estimated the strength and determination remaining in the psyche of the German soldier, believing his fighting spirit to have totally collapsed under the stress of the [[Operation Cobra|Normandy breakout]] and the reduction of the [[Falaise Pocket]]. ||| Historical analysis ||| ||| +0 Battle of Ia Drang ||| Korean War ||| Air mobility called for battalion-sized forces to be delivered, supplied and extracted from an area of action using helicopters. Since the heavy weapons of a normal combined-arms force could not follow, the infantry would be supported by coordinated [[close air support]], artillery and [[Aerial Rocket Artillery|aerial rocket]] fire, arranged from a distance and directed by local observers. They had been practising these tactics in the U.S. in the new 11th Air Assault Division (Test). The 11th was renamed the [[1st Cavalry Division (Airmobile) (United States)|1st Cavalry Division]], which had been in [[South Korea]] since the [[Korean War]]. The 1st Cavalry Division's reflagged units became the [[2nd Infantry Division (United States)|2nd Infantry Division]] and the 1st Cavalry's colors were transferred to the 11th Air Assault (Test) at [[Fort Benning]], just before deployment overseas. ||| Background ||| ||| +0 Battle of Ilomantsi ||| Winter War ||| At first, the Soviet offensive seemed to be successful as on July 21, 1944, the [[Red Army]] units were able to reach the Finnish-Soviet border of 1940 for the only time during the entire Soviet offensive of 1944 and, in fact, ever since 1941. Finnish reinforcements arrived on July 28, and on July 31 Raappana started the counterattack. Already by August 1 the Finns had cut the sole road leading to the 176th Rifle Division and by August 3 both Soviet divisions were encircled as the Finnish forces utilized envelopment tactics ('motti' in [[Finnish language|Finnish]]) that drew upon ancient methods of warfare and those already used by them in the [[Winter War]] (1939–1940). Soldiers of the [[Erillinen Pataljoona 4]] disrupted the supply lines of the Soviet artillery, preventing effective fire support. ||| Battle ||| ||| +0 Battle of Ilovaisk ||| Euromaidan ||| The remaining government forces in Ilovaisk became completely encircled by DPR insurgents and Russian reinforcements on 24–26 August, and the fighting continued to take its toll. In response to commander Semenchenko's pleas, many [[Euromaidan]] activists in the Ukrainian capital [[Kiev]] protested what they saw as the government's 'abandonment' of the volunteers fighting against the insurgents. ||| Events ||| Encirclement of government forces; Ilovaisk under siege ||| +0 Battle of Imjin River (1592) ||| Battle of the Imjin River ||| :'' For the similarly named battle during the [[Korean War]] (1950-1953), see [[Battle of the Imjin River]]. ||| ||| ||| +0 Battle of Imphal ||| Battle of Kohima ||| The '''Battle of Imphal''' took place in the region around the city of [[Imphal]], the capital of the state of [[Manipur]] in [[northeast India]] from March until July 1944. [[Empire of Japan|Japanese]] armies attempted to destroy the Allied forces at Imphal and invade [[India]], but were driven back into [[Burma]] with heavy losses. Together with the simultaneous [[Battle of Kohima]] on the road by which the encircled Allied forces at Imphal were relieved, the battle was the turning point of the [[Burma Campaign]], part of the [[South-East Asian Theatre of World War II|South-East Asian Theatre of the Second World War]]. The defeat at Kohima and Imphal was the largest defeat to that date in Japanese history. ||| ||| ||| +0 Battle of Imphal ||| Battle of the Admin Box ||| In late February, a local Japanese counterattack was launched against [[XV Corps (British India)|Indian XV Corps]] in Arakan, using much the same tactics as Mutaguchi proposed to use. The engagement became known to the Allies as the [[Battle of the Admin Box]]. The attack failed when Allied aircraft parachuted supplies to cut-off troops, allowing them to stand firm, while the Japanese who had infiltrated behind them ran out of supplies. From this point onwards, the Allies were to place increasing faith and reliance on their transport aircraft. Also, the Japanese unexpectedly encountered a number of Indian tanks, to which the lightly equipped infiltrators had little counter. The planning of U-Go, however, was too far advanced to take account of these developments. ||| The situation ||| Prelude to the operation ||| +0 Battle of Imphal ||| The Hump ||| Mutaguchi planned to exploit the capture of Imphal by advancing to the [[Brahmaputra Valley]]. This would cut the Allied lines of communication to the front in northern Burma, where the American-led [[Northern Combat Area Command]] was attempting to construct the [[Ledo Road]] to link India and China by land, and to the airfields supplying the Nationalist Chinese under [[Chiang Kai-shek]] via an airlift over '[[The Hump]]' (the Himalaya Mountains). Although the staffs at Burma Area Army and at [[Southern Expeditionary Army Group]] (the supreme command for the Japanese forces in southeast Asia and the southern Pacific) had reservations over the scale of Mutaguchi's proposed operation, they were eventually won over by his persistent advocacy. Finally, Prime Minister [[Hideki Tojo]] and [[Imperial General Headquarters]] gave their approval to the plan. ||| The situation ||| Japanese plan ||| +0 Battle of Inverlochy (1645) ||| Battle of Tippermuir ||| Argyll did not stay for the battle, but instead he left the command of his army to his general, Duncan Campbell of Auchinbreck, and retired to his galley anchored on [[Loch Linnhe]]. Auchinbreck lined up the covenanters in front of Inverlochy castle, which he reinforced with 200 musketeers to protect his left flank. In the centre he placed the Campbells of Argyll and put the lowland militias on the flanks. Unlike at [[Battle of Tippermuir|Tippermuir]] and [[Battle of Aberdeen (1644)|Aberdeen]], where Montrose had annihilated hastily [[conscript]]ed and poorly trained [[militia]]s, the troops he faced at Inverlochy were veterans of the [[English Civil War|war in England]]. Montrose lined his army up in only two lines deep to avoid being out flanked, placing his 600 highlanders in the centre with the Irish on the flanks, the right being commanded by [[Alasdair MacColla|MacColla]]. The fight did not start straight away and instead skirmishes broke out along the line. This is probably because Auchinbreck and his officers believed that they were only fighting one of Montrose's lieutenants and not the man himself, believing he was still far up the glen. Just before first light, the Royalists launched their attack. ||| ||| ||| +0 Battle of Inverlochy (1645) ||| English Civil War ||| Argyll did not stay for the battle, but instead he left the command of his army to his general, Duncan Campbell of Auchinbreck, and retired to his galley anchored on [[Loch Linnhe]]. Auchinbreck lined up the covenanters in front of Inverlochy castle, which he reinforced with 200 musketeers to protect his left flank. In the centre he placed the Campbells of Argyll and put the lowland militias on the flanks. Unlike at [[Battle of Tippermuir|Tippermuir]] and [[Battle of Aberdeen (1644)|Aberdeen]], where Montrose had annihilated hastily [[conscript]]ed and poorly trained [[militia]]s, the troops he faced at Inverlochy were veterans of the [[English Civil War|war in England]]. Montrose lined his army up in only two lines deep to avoid being out flanked, placing his 600 highlanders in the centre with the Irish on the flanks, the right being commanded by [[Alasdair MacColla|MacColla]]. The fight did not start straight away and instead skirmishes broke out along the line. This is probably because Auchinbreck and his officers believed that they were only fighting one of Montrose's lieutenants and not the man himself, believing he was still far up the glen. Just before first light, the Royalists launched their attack. ||| ||| ||| +0 Battle of Inverlochy (1645) ||| Scotland in the Wars of the Three Kingdoms ||| The '''Battle of Inverlochy''' (2 February 1645) was a battle of the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]] in which [[James Graham, 1st Marquess of Montrose|Montrose]] routed the pursuing forces of [[Archibald Campbell, 1st Marquess of Argyll|the Marquess of Argyll]]. The battlefield is currently under research to be inventoried and protected by [[Historic Scotland]] under the [[Scottish Historical Environment Policy]] of 2009. ||| ||| ||| +0 Battle of Inverurie (1745) ||| Battle of Inverurie (1308) ||| ''For the battle of the same name during the Wars of Scottish Independence see: [[Battle of Inverurie (1308)]]''. ||| ||| ||| +0 Battle of Isandlwana ||| Battle of Ulundi ||| After Isandlwana, the British field army was heavily reinforced and again invaded Zululand. Sir Garnet Wolseley was sent to take command and relieve Chelmsford, as well as Bartle Frere. Chelmsford, however, avoided handing over command to Wolseley and managed to defeat the Zulus in a number of engagements, the last of which was the [[Battle of Ulundi]], followed by capture of King Cetshwayo. With the fall of the Disraeli's government, Bartle Frere was recalled in August 1880 and the policy of Confederation was abandoned. ||| Aftermath ||| Impact ||| +0 Battle of Ismailia ||| Battle of the Chinese Farm ||| The failed Egyptian offensive gave the initiative to the Israelis, who immediately launched [[Operation Abiray-Lev]], aiming to cross the canal between two Egyptian armies in order to encircle Egyptian forces on the east banks and cut their supply lines. Optimistically planned, the operation began smoothly, but quickly ran into problems. The Israelis faced difficulties in establishing a corridor to the canal due to unexpectedly determined resistance by Egyptian defenses, in what became known as the [[Battle of the Chinese Farm]]. After several days of heavy fighting, they were able to secure the roads to the canal, and by October 18 had two bridges laid down at Deversoir, at the northern end of the [[Great Bitter Lake]]. By the next day there were three Israeli armored divisions across the canal. Two advanced south toward Suez City, while the 143rd Armored Division under Major General [[Ariel Sharon]] advanced north to seize [[Ismailia]], hoping to sever the supply lines to three Egyptian divisions of the Second Field Army across the canal. ||| Background ||| ||| +0 Battle of Iwo Jima ||| Battle of Eniwetok ||| After the U.S. seized bases in the Marshalls in the battles of [[Battle of Kwajalein|Kwajalein]] and [[Battle of Eniwetok|Eniwetok]] in February 1944, Japanese Army and Navy reinforcements were sent to Iwo Jima: 500 men from the naval base at [[Yokosuka]] and 500 from Chichi Jima reached Iwo Jima during March and April 1944. At the same time, with reinforcements arriving from Chichi Jima and the home islands, the Army garrison on Iwo Jima reached a strength of more than 5,000 men. Adding to their woes, there was a serious shortage of properly trained and experienced [[aviator|pilots]] and other aircrew to man the warplanes Japan had—because such large numbers of pilots and crewmen had perished fighting over the [[Solomon Islands]] and during the [[Battle of the Philippine Sea]] in mid-1944. ||| Background ||| ||| +0 Battle of Iwo Jima ||| Battle of Kwajalein ||| After the U.S. seized bases in the Marshalls in the battles of [[Battle of Kwajalein|Kwajalein]] and [[Battle of Eniwetok|Eniwetok]] in February 1944, Japanese Army and Navy reinforcements were sent to Iwo Jima: 500 men from the naval base at [[Yokosuka]] and 500 from Chichi Jima reached Iwo Jima during March and April 1944. At the same time, with reinforcements arriving from Chichi Jima and the home islands, the Army garrison on Iwo Jima reached a strength of more than 5,000 men. Adding to their woes, there was a serious shortage of properly trained and experienced [[aviator|pilots]] and other aircrew to man the warplanes Japan had—because such large numbers of pilots and crewmen had perished fighting over the [[Solomon Islands]] and during the [[Battle of the Philippine Sea]] in mid-1944. ||| Background ||| ||| +0 Battle of Iwo Jima ||| Battle of Leyte ||| At the end of the [[Battle of Leyte]] in the [[Philippines]], the [[Allies of World War II|Allies]] were left with a two-month lull in their offensive operations before the planned [[Battle of Okinawa|invasion of Okinawa]]. Iwo Jima was strategically important: it provided an [[air base]] for Japanese [[Fighter aircraft|fighter plane]]s to intercept long-range [[Boeing B-29 Superfortress|B-29 Superfortress]] bombers, and it provided a haven for Japanese naval units in dire need of any support available. In addition, it was used by the Japanese to stage [[Japanese air attacks on the Mariana Islands|air attacks on the Mariana Islands]] from November 1944 through January 1945. The capture of Iwo Jima would eliminate these problems and provide a staging area for [[Operation Downfall]] - the eventual invasion of the Japanese Home Islands. The distance of B-29 raids could (hypothetically) be cut in half, and a base would be available for [[North American P-51 Mustang|P-51 Mustang]] fighters to escort and protect the bombers. ||| Background ||| ||| +0 Battle of Iwo Jima ||| Operation Hailstone ||| After the [[Gilbert and Marshall Islands campaign|American capture of the Marshall Islands]], and the devastating [[Operation Hailstone|air attacks]] against the Japanese fortress island of [[Chuuk Lagoon|Truk Atoll]] in the [[Caroline Islands|Carolines]] in January 1944, the Japanese military leaders reevaluated their situation. All indications pointed to an American drive toward the [[Mariana Islands]] and the Carolines. To counter such an offensive, the [[Imperial Japanese Army]] and the [[Imperial Japanese Navy]] (I.J.N.) established an inner line of defenses extending generally northward from the Carolines to the Marianas, and thence to Japan via the [[Volcano Islands]], and westward from the Marianas via the Carolines and the [[Palau Islands]] to [[the Philippines]]. ||| Background ||| ||| +0 Battle of Iwo Jima ||| Pacific War ||| In March 1944, the [[Thirty-First Army (Japan)|Japanese 31st Army]], commanded by General [[Hideyoshi Obata]], was activated to garrison this inner line. (Note that a Japanese army was about the size of an American, [[British Army]], or [[Canadian Army]] [[corps]]. The Japanese Army had many [[Armies of the Imperial Japanese Army#Armies|armies]], but the [[United States Army|U.S. Army]] only had [[Formations of the United States Army during World War II#Field Armies|ten]] at its peak, with the 4th Army, the 6th Army, the 8th Army, and the 10th Army being in the [[Pacific War|Pacific Theater]]. Also, the 10th Army only fought on [[Okinawa]] in the spring of 1945.) ||| Background ||| ||| +0 Battle of Jaffa (1192) ||| Battle of Arsuf ||| On September 7, 1191, after the [[Battle of Arsuf]], the [[Crusades|Crusader]] army proceeded from [[Arsuf]] to [[Jaffa]], which the Crusaders took and fortified. Jaffa, they hoped, would be the base of operations in a drive to reconquer [[Jerusalem]] itself. As the winter of 1191–1192 approached, sporadic negotiations between [[Richard I of England|Richard the Lionheart]] and [[Saladin]] were taken up, though without any immediate result. ||| Prelude ||| ||| +0 Battle of Jaffa (1917) ||| Sinai and Palestine Campaign ||| The '''Battle of Jaffa''' was an engagement fought during the [[Southern Palestine Offensive]] of the [[Sinai and Palestine Campaign]] in [[World War I]], between the [[Egyptian Expeditionary Force]] of the [[British Empire]] on one side and the [[Yildirim Army Group]] of the [[Ottoman Empire]] and [[German Empire]]s on the other. ||| ||| ||| +0 Battle of Jarosław (1656) ||| Deluge (history) ||| The '''Battle of Jarosław''' took place during the [[Deluge (history)|Deluge]] (part of the [[Second Northern War]]) in March 15, 1656. Polish-Lithuanian Commonwealth forces under the command of [[Stefan Czarniecki]] defeated the Swedish forces commanded by [[Charles X Gustav of Sweden]]. ||| ||| ||| +0 Battle of Jarrab ||| Arab Revolt ||| The main significance of the battle was the death of [[Ibn Sa'ud]]'s [[United Kingdom of Great Britain and Ireland|British]] Military Advisor, [[Captain William Shakespear]]. This diminished the relationship between [[Ibn Sa'ud]] and the [[United Kingdom of Great Britain and Ireland|British]], changing the course of the [[Arab Revolt]] against the [[Ottoman Empire]]. ||| ||| ||| +0 Battle of Java (1942) ||| Battle of Sunda Strait ||| The Japanese troops landed at three points on Java on 1 March. The West Java invasion convoy landed on [[Bantam Bay]] near [[Merak, Banten|Merak]] and Eretan Wetan. The West Java convoy had previously fought in the [[Battle of Sunda Strait]], a few hours prior to the landings. ||| Japanese landings ||| ||| +0 Battle of Jemappes ||| French Revolution ||| General [[Charles François Dumouriez]], in command of an army of [[French Revolution]]ary [[Military volunteer|volunteers]], faced the [[Habsburg Monarchy|Imperial]] army of [[Field Marshal]] Duke [[Albert of Saxe-Teschen]] and his second-in-command [[François Sebastien Charles Joseph de Croix, Count of Clerfayt|François de Croix, Count of Clerfayt]]. The French, who outnumbered their opponents by about three-to-one, launched a series of enthusiastic but uncoordinated attacks against the Austrian position on a ridge. At length, the French seized a portion of the ridge and the Austrian were unable to drive them away. Saxe-Teschen conceded defeat by ordering a withdrawal. ||| ||| ||| +0 Battle of Jersey ||| Battle of Ballinamuck ||| This was almost the last land battle in the [[British Islands]]. The [[Battle of Culloden]] in 1746 was the last pitched battle on the British mainland; the [[Battle of Fishguard]] involved a short-lived French invasion of Wales in February 1797, and a French expeditionary force fought at the [[Battle of Ballinamuck]] in the [[Irish Rebellion of 1798]]. ||| Aftermath ||| ||| +0 Battle of Jersey ||| Battle of Culloden ||| This was almost the last land battle in the [[British Islands]]. The [[Battle of Culloden]] in 1746 was the last pitched battle on the British mainland; the [[Battle of Fishguard]] involved a short-lived French invasion of Wales in February 1797, and a French expeditionary force fought at the [[Battle of Ballinamuck]] in the [[Irish Rebellion of 1798]]. ||| Aftermath ||| ||| +0 Battle of Jersey ||| Great Siege of Gibraltar ||| The French government decided to neutralize this threat. Furthermore, at the time, [[Gibraltar]] was in the midst of the [[Great Siege of Gibraltar|Great Siege]]: contemporary British newspapers reported that the attack on Jersey was an attempt to distract British attention from Gibraltar and divert military resources away from the siege. ||| Causes ||| ||| +0 Battle of Jerusalem ||| Battle of Beersheba (1917) ||| This series of battles was successfully fought by the [[British Empire]]'s [[XX Corps (United Kingdom)|XX Corps]], [[XXI Corps (United Kingdom)|XXI Corps]], and the [[Desert Mounted Corps]] against strong opposition from the [[Yildirim Army Group]]'s [[Seventh Army (Ottoman Empire)|Seventh Army]] in the Judean Hills and the [[Eighth Army (Ottoman Empire)|Eighth Army]] north of Jaffa on the Mediterranean coast. The loss of Jaffa and Jerusalem, together with the loss of {{convert|50|mi|km}} of territory during the [[Egyptian Expeditionary Force]] (EEF) advance from [[Gaza City|Gaza]], after the capture of [[Battle of Beersheba (1917)|Beersheba]], [[Third Battle of Gaza|Gaza]], [[Battle of Hareira and Sheria|Hareira and Sheria]], [[Battle of Tel el Khuweilfe|Tel el Khuweilfe]] and the [[Battle of Mughar Ridge]], constituted a grave setback for the [[Ottoman Army]] and the [[Ottoman Empire]]. ||| ||| ||| +0 Battle of Jerusalem ||| Battle of Jaffa (1917) ||| The '''Battle of Jerusalem''' occurred during the [[British Empire]]'s 'Jerusalem Operations' against the [[Ottoman Empire]], when fighting for the city developed from 17 November, continuing after the surrender until 30 December 1917, to secure the final objective of the [[Southern Palestine Offensive]] during the [[Sinai and Palestine Campaign]] of [[World War I]]. Before [[Jerusalem]] could be secured, two battles were recognised by the British as being fought in the [[Judean Hills]] to the north and east of the [[Hebron]]–Junction Station line. These were the [[Battle of Nebi Samwill (1917)|Battle of Nebi Samwill]] from 17 to 24 November and the Defence of Jerusalem from 26 to 30 December 1917. They also recognised within these Jerusalem Operations, the successful second attempt on 21 and 22 December 1917 to advance across the Nahr el Auja, as the [[Battle of Jaffa (1917)|Battle of Jaffa]], although Jaffa had been occupied as a consequence of the Battle of Mughar Ridge on 16 November. ||| ||| ||| +0 Battle of Jerusalem ||| Battle of Magdhaba ||| About this time the Ottoman Eighth Army's fighting commander Friedrich Freiherr Kress von Kressenstein, was relieved of his duties. He had been in the Sinai and Palestine since 27 September 1914, leading two armies and a raiding party across the Sinai Peninsula to unsuccessfully attack the British Empire on the [[First Suez Offensive#Sinai and Palestine Camaign|Suez Canal]] in January 1915, at [[Battle of Romani|Romani]] in August 1916, and the very successful [[Affair of Katia|raid on Katia]] in April 1916. Subsequently he commanded the defences at [[Battle of Magdhaba|Magdhaba]] in December 1916, at [[Battle of Rafa|Rafa]] in January 1917, at Gaza and Beersheba in March, April and October 1917 and [[Battle of Mughar Ridge|during rearguard battles]] up the maritime plain to Jaffa in November 1917. He was replaced by Brigadier General [[Cevat Çobanlı|Djevad Pasha]]. ||| Battle ||| 24 November: First attack across the Nahr el Auja ||| +0 Battle of Jerusalem ||| Battle of Mughar Ridge ||| This series of battles was successfully fought by the [[British Empire]]'s [[XX Corps (United Kingdom)|XX Corps]], [[XXI Corps (United Kingdom)|XXI Corps]], and the [[Desert Mounted Corps]] against strong opposition from the [[Yildirim Army Group]]'s [[Seventh Army (Ottoman Empire)|Seventh Army]] in the Judean Hills and the [[Eighth Army (Ottoman Empire)|Eighth Army]] north of Jaffa on the Mediterranean coast. The loss of Jaffa and Jerusalem, together with the loss of {{convert|50|mi|km}} of territory during the [[Egyptian Expeditionary Force]] (EEF) advance from [[Gaza City|Gaza]], after the capture of [[Battle of Beersheba (1917)|Beersheba]], [[Third Battle of Gaza|Gaza]], [[Battle of Hareira and Sheria|Hareira and Sheria]], [[Battle of Tel el Khuweilfe|Tel el Khuweilfe]] and the [[Battle of Mughar Ridge]], constituted a grave setback for the [[Ottoman Army]] and the [[Ottoman Empire]]. ||| ||| ||| +0 Battle of Jerusalem ||| Battle of Rafa ||| About this time the Ottoman Eighth Army's fighting commander Friedrich Freiherr Kress von Kressenstein, was relieved of his duties. He had been in the Sinai and Palestine since 27 September 1914, leading two armies and a raiding party across the Sinai Peninsula to unsuccessfully attack the British Empire on the [[First Suez Offensive#Sinai and Palestine Camaign|Suez Canal]] in January 1915, at [[Battle of Romani|Romani]] in August 1916, and the very successful [[Affair of Katia|raid on Katia]] in April 1916. Subsequently he commanded the defences at [[Battle of Magdhaba|Magdhaba]] in December 1916, at [[Battle of Rafa|Rafa]] in January 1917, at Gaza and Beersheba in March, April and October 1917 and [[Battle of Mughar Ridge|during rearguard battles]] up the maritime plain to Jaffa in November 1917. He was replaced by Brigadier General [[Cevat Çobanlı|Djevad Pasha]]. ||| Battle ||| 24 November: First attack across the Nahr el Auja ||| +0 Battle of Jerusalem ||| Battle of Romani ||| About this time the Ottoman Eighth Army's fighting commander Friedrich Freiherr Kress von Kressenstein, was relieved of his duties. He had been in the Sinai and Palestine since 27 September 1914, leading two armies and a raiding party across the Sinai Peninsula to unsuccessfully attack the British Empire on the [[First Suez Offensive#Sinai and Palestine Camaign|Suez Canal]] in January 1915, at [[Battle of Romani|Romani]] in August 1916, and the very successful [[Affair of Katia|raid on Katia]] in April 1916. Subsequently he commanded the defences at [[Battle of Magdhaba|Magdhaba]] in December 1916, at [[Battle of Rafa|Rafa]] in January 1917, at Gaza and Beersheba in March, April and October 1917 and [[Battle of Mughar Ridge|during rearguard battles]] up the maritime plain to Jaffa in November 1917. He was replaced by Brigadier General [[Cevat Çobanlı|Djevad Pasha]]. ||| Battle ||| 24 November: First attack across the Nahr el Auja ||| +0 Battle of Jerusalem ||| Imperial War Cabinet ||| The [[Imperial War Cabinet|British War Cabinet]] had cautioned Allenby not to commit to any operations that might not be sustainable in the long term if the strength of British forces in the area could not be maintained. ||| Background ||| ||| +0 Battle of Jerusalem ||| Sinai and Palestine Campaign ||| The '''Battle of Jerusalem''' occurred during the [[British Empire]]'s 'Jerusalem Operations' against the [[Ottoman Empire]], when fighting for the city developed from 17 November, continuing after the surrender until 30 December 1917, to secure the final objective of the [[Southern Palestine Offensive]] during the [[Sinai and Palestine Campaign]] of [[World War I]]. Before [[Jerusalem]] could be secured, two battles were recognised by the British as being fought in the [[Judean Hills]] to the north and east of the [[Hebron]]–Junction Station line. These were the [[Battle of Nebi Samwill (1917)|Battle of Nebi Samwill]] from 17 to 24 November and the Defence of Jerusalem from 26 to 30 December 1917. They also recognised within these Jerusalem Operations, the successful second attempt on 21 and 22 December 1917 to advance across the Nahr el Auja, as the [[Battle of Jaffa (1917)|Battle of Jaffa]], although Jaffa had been occupied as a consequence of the Battle of Mughar Ridge on 16 November. ||| ||| ||| +0 Battle of Jerusalem ||| Western Front (World War I) ||| The enormous territorial gains of the Palestine offensive contrasted with the British Expeditionary Force's offensive on the [[Western Front (World War I)|Western Front]] at [[Battle of Cambrai (1917)|Cambrai]]. Fought in Flanders from 20 to 30 November, it ended with heavy losses and no gains. ||| Aftermath ||| Summation of campaign ||| +0 Battle of Jitra ||| Pacific War ||| [[Allies of World War II|Allied]] defences at [[Jitra]] were not completed when the [[Pacific War]] broke out. ||| Background ||| ||| +0 Battle of Jobourg ||| Battle of Leipzig ||| By the end of October 1813 the [[War of the Sixth Coalition]] was in its final stages; [[Emperor Napoleon]] had been defeated at the [[Battle of Leipzig]] by the Allied European armies and was retreating to the borders of France, while the British army under the [[Arthur Wellesley, 1st Duke of Wellington|Lord Wellington]] had crossed the [[Pyrenees]] and was advancing on [[Toulouse]]. The French Navy had never recovered from defeat at the [[Battle of Trafalgar]] in 1805 and had made no serious effort to put to sea since the abortive attempt which ended in defeat at the [[Battle of Basque Roads]] in 1809. ||| Background ||| ||| +0 Battle of Juncal ||| Battle of Monte Santiago ||| The republican naval victory off Juncal was rapidly followed on land by [[Battle of Ituzaingó|Ituzaingó]] (20 Feb) and [[Carmen de Patagones]] (28 Feb). After this, the conflict ground to a halt, as the Brazilian Empire had been defeated in various fronts while Argentina was incapable of taking advantage of the situation given that the Naval blockade still persisted, especially after the [[Battle of Monte Santiago]] which almost fully destroyed the Navy of the [[United Provinces of the Rio de la Plata]], and also given that Montevideo and Colonia, the two largest cities in the Banda Oriental, were still under control by the Empire of Brazil. ||| Aftermath ||| ||| +0 Battle of Jutas ||| Battle of Oravais ||| The '''Battle of Jutas''' ('''[[Finnish language|Fi]]''': ''Juuttaan taistelu'', '''[[Swedish language|Sv]]''': ''Slaget vid Jutas'') was fought on September 13, 1808 between [[Sweden|Swedish]] and [[Imperial Russia|Russia]]n troops south of [[Nykarleby]] in [[Ostrobothnia (region)|Ostrobothnia]], [[Finland]]. Before the battle the Swedish army was in retreat after the campaign of the previous summer. The main Swedish force was retreating from [[Vaasa]] to Nykarleby. The Russians sent a force to cut off the Swedish retreat. In response the Swedes sent a force under [[Georg Carl von Döbeln]] to intercept them. The battle ended in a Swedish victory, but the main Swedish army was beaten in the [[Battle of Oravais]] the very next day. ||| ||| ||| +0 Battle of Jutland ||| Battle of Tannenberg ||| The Battle of Jutland was annually celebrated as a great victory by the right wing in Weimar Germany. This 'victory' was used to repress the memory of the German navy's initiation of the [[German Revolution of 1918–1919]], as well as the memory of the defeat in World War I in general. (The celebrations of the [[Battle of Tannenberg (1914)|Battle of Tannenberg]] played a similar role in the [[Weimar Republic]].) This is especially true for the city of [[Wilhelmshaven]], where wreath-laying ceremonies and torch-lit parades were performed until the end of the 1960s. ||| Remembrance ||| ||| +0 Battle of Jutland ||| Battle of Trafalgar ||| Despite numerical superiority, the British had been disappointed in their hopes for a decisive victory comparable to [[Battle of Trafalgar|Trafalgar]] and the objective of the influential strategic doctrines of [[Alfred Mahan]]. The High Seas Fleet survived as a [[fleet in being]]. Most of its losses were made good within a month – even ''Seydlitz'', the most badly damaged ship to survive the battle, was repaired by October and officially back in service by November. However, the Germans had failed in their objective of destroying a substantial portion of the British Fleet, and no progress had been made towards the goal of allowing the High Seas Fleet to operate in the Atlantic Ocean. ||| Outcome ||| Assessments ||| +0 Battle of Jutland ||| Battle of Tsushima ||| The '''Battle of Jutland''' ({{lang-de|[[Skagerrak]] }}) was a [[naval battle]] fought by the British [[Royal Navy]]'s [[Grand Fleet]] under Admiral [[John Jellicoe, 1st Earl Jellicoe|Sir John Jellicoe]], against the [[Imperial German Navy]]'s [[High Seas Fleet]] under Vice-Admiral [[Reinhard Scheer]] during the [[First World War]]. The battle was fought from 31 May to 1 June 1916 in the [[North Sea]], near the coast of Denmark's [[Jutland]] Peninsula. It was the largest naval battle and the only full-scale clash of [[battleship]]s in the war. It was the third [[fleet action]] between steel battleships, following the smaller but more decisive battles of the [[Battle of the Yellow Sea|Yellow Sea (1904)]] and [[Battle of Tsushima|Tsushima (1905)]] during the [[Russo-Japanese War]]. ||| ||| ||| +0 Battle of Ka-san ||| Battle of Masan ||| When the North Koreans approached the Pusan Perimeter on August 5, they attempted the same frontal assault technique on the four main avenues of approach into the perimeter. Throughout August, the [[NK 6th Division]], and later the [[NK 7th Division]] engaged the [[US 25th Infantry Division]] at the [[Battle of Masan]], initially repelling a UN [[counteroffensive]] before countering with battles at [[Battle of Komam-ni|Komam-ni]] ||| Background ||| Pusan Perimeter ||| +0 Battle of Ka-san ||| Battle of Tabu-dong ||| Simultaneous with their attack at Ka-san, UN and North Korean units were similarly deadlocked a short distance away in the [[Battle of Tabu-dong]]. He reported that a full-scale North Korean attack was to begin at dusk that day. ||| Battle ||| ||| +0 Battle of Kaiserslautern ||| Battle of Froeschwiller (1793) ||| In the [[First Battle of Wissembourg (1793)|First Battle of Wissembourg]], the Coalition army of [[Dagobert Sigmund von Wurmser]] broke through the frontier defenses and drove the French ''[[Army of the Rhine (France)|Army of the Rhine]]'' south to [[Strasbourg]]. In response to this crisis, the French government appointed Hoche to command the ''[[Army of the Moselle]]'' and [[Jean-Charles Pichegru]] to lead the ''Army of the Rhine'', while urging then to relieve the [[Siege of Landau (1793)|Siege of Landau]]. In November, Hoche launched an offensive which pressed back the Duke of Brunswick's army to Kaiserslautern. On 28 November, French troops moved on Brunswick's defenses from the north, northwest and west, but for two days the Coalition army fended off the piecemeal attacks of their adversaries. Hoche finally got his entire army into action on the 30th, but the professional Prussian soldiers proved more than a match for the enthusiastic but indifferently-trained French. After the setback, Hoche changed his strategy and turned a large part of his army against Wurmser's exposed western flank in [[Alsace]]. The next engagement was the [[Battle of Froeschwiller (1793)|Battle of Froeschwiller]] in December. ||| ||| ||| +0 Battle of Kaiserslautern ||| Siege of Landau (1793) ||| In the [[First Battle of Wissembourg (1793)|First Battle of Wissembourg]], the Coalition army of [[Dagobert Sigmund von Wurmser]] broke through the frontier defenses and drove the French ''[[Army of the Rhine (France)|Army of the Rhine]]'' south to [[Strasbourg]]. In response to this crisis, the French government appointed Hoche to command the ''[[Army of the Moselle]]'' and [[Jean-Charles Pichegru]] to lead the ''Army of the Rhine'', while urging then to relieve the [[Siege of Landau (1793)|Siege of Landau]]. In November, Hoche launched an offensive which pressed back the Duke of Brunswick's army to Kaiserslautern. On 28 November, French troops moved on Brunswick's defenses from the north, northwest and west, but for two days the Coalition army fended off the piecemeal attacks of their adversaries. Hoche finally got his entire army into action on the 30th, but the professional Prussian soldiers proved more than a match for the enthusiastic but indifferently-trained French. After the setback, Hoche changed his strategy and turned a large part of his army against Wurmser's exposed western flank in [[Alsace]]. The next engagement was the [[Battle of Froeschwiller (1793)|Battle of Froeschwiller]] in December. ||| ||| ||| +0 Battle of Kalach ||| Battle of Stalingrad ||| The '''Battle of Kalach'''{{#tag:ref|''Battle of Kalach'' is a phrase found in German- ({{lang-de|Kesselschlacht bei Kalatsch}}) and English-language historiography. The Soviet history of World War II (История второй мировой войны 1939-1945 в двенадцати томах) considers the battles at Kalach to have been the initial blows of the [[Battle of Stalingrad]].|group=nb}} took place between the German [[6th Army (Wehrmacht)|Sixth Army]] and elements of the Soviet [[Stalingrad Front]] between July 25 and August 11, 1942. The Soviets deployed the [[62nd Army (Soviet Union)|62nd]] and [[7th Guards Army|64th Armies]] in a [[Don River (Russia)|Don River]] bridgehead west of [[Kalach-na-Donu|Kalach]] with the intent of impeding the German advance on [[Stalingrad]]. In the initial period of the battle, the Germans attacked and managed to surround part of the 62nd Army. In reaction, the Soviets counter-attacked and temporarily forced the Germans onto the defense. Following resupply of German forces, the roles again reversed and the Germans attacked into the flanks of the Soviet bridgehead, successfully collapsing it. The German victory positioned the Sixth Army to cross the Don River and advance on Stalingrad, which became the site of one of the [[Battle of Stalingrad|most decisive battles]] of World War II. ||| ||| ||| +0 Battle of Kambula ||| Battle of Hlobane ||| Following the disaster at [[Battle of Hlobane|Hlobane]] on 28 March 1879, Colonel [[Evelyn Wood (British Army officer)|Evelyn Wood's]] forces prepared to receive an attack by the entire Zulu [[impi]], of which they had only previously encountered the leading sections. Soon after dawn of 29 March, [[Transvaal Rangers]] rode out to locate the enemy impi, the cattle were put out to graze and, after some deliberation, two companies were despatched to collect firewood. By 11 am the Rangers had returned with the news that the impi was on the move and was to attack Kambula at noon. ||| Prelude ||| ||| +0 Battle of Kapyong ||| Operation Killer ||| The United Nations counter offensive between February and April 1951 had been largely successful, with the [[US Eighth Army]] pushing the Chinese north of the [[Han River (Korea)|Han River]] during [[Operation Killer]], while [[Seoul]] was recaptured in mid-March during [[Operation Ripper]] and UN forces once again approached the [[38th parallel north|38th parallel]]. Meanwhile, the offensive continued with a series of short thrusts. [[Operation Courageous]], in late March, pushed forward to the Benton Line, {{convert|8|km|mi}} south of the 38th parallel, while [[Operation Courageous#Operations Rugged and Dauntless|Operation Rugged]] in early-April pushed just north of the 38th parallel to the Kansas Line. Finally, in mid-April a further advance moved the US Eighth Army to the Utah Line. ||| Background ||| Military situation ||| +0 Battle of Katia ||| Gallipoli Campaign ||| After the conclusion of the [[Gallipoli Campaign]], both sides had large numbers of troops available for redeployment, and the British decided to move their Suez Canal defences from positions on the canal eastwards into the Sinai desert. ||| Background ||| ||| +0 Battle of Katia ||| Sinai and Palestine Campaign ||| The '''Battle of Katia''', also known as the '''Affair of Qatia''' by the British, was an engagement fought east of the [[Suez Canal]] and north of [[El Ferdan Railway Bridge|El Ferdan Station]], in the vicinity of [[Qatia, Egypt|Katia]] and [[Oghratina]], on 23 April 1916 during the [[Sinai and Palestine Campaign|Defence of the Suez Canal Campaign]] of [[World War I]]. An [[Ottoman Empire|Ottoman]] force led by the [[German Empire|German]] General [[Friedrich Freiherr Kress von Kressenstein]] made a surprise attack on three and a half squadrons of the [[British Empire|British]] [[5th Mounted Brigade]], which was widely scattered to the east of Romani. The mounted brigade had been ordered to the area to protect the new railway and water pipeline being built from [[Al Qantarah El Sharqiyya|Kantara]] on the [[Suez Canal]], as this infrastructure extended out past the Canal's zone of defences into the [[Sinai Peninsula]] towards Romani. Kress Von Kressenstein's attack was completely successful, decimating the equivalent of little more than a [[regiment]]. On the same day, an associated Ottoman attack on Duidar, very close to the Suez Canal, failed when it met with strong British opposition. ||| ||| ||| +0 Battle of Katzbach ||| Battle of Dresden ||| The '''Battle of the Katzbach''' on 26 August 1813, was an engagement of the [[Napoleonic Wars]] between the forces of the [[First French Empire]] under [[Marshal of France|Marshal]] [[Étienne-Jacques-Joseph-Alexandre MacDonald|MacDonald]] and a [[Imperial Russia|Russo]]-[[Kingdom of Prussia|Prussian]] army of the [[Sixth Coalition]] under Prussian Marshal [[Graf]] ([[Count]]) [[Gebhard Leberecht von Blücher|von Blücher]]. To which are Appended, Biographical Sketches of the Heroes of Waterloo Taking place the same day as the [[Battle of Dresden]], it resulted in a Coalition victory. ||| ||| ||| +0 Battle of Katzbach ||| Battle of Kulm ||| Beyond the battle losses, the French strategic position had been weakened. This, coupled with the defeats at [[Battle of Kulm|Kulm]], four days later, and [[Battle of Dennewitz|Dennewitz]] on 6 September, would more than negate Napoleon's victory at Dresden. ||| Battle ||| ||| +0 Battle of Kauhajoki ||| Battle of Lapua ||| The '''Battle of Kauhajoki''' was fought between [[Sweden|Swedish]] and [[Russia]]n troops on August 10, 1808. After the important Swedish victory at the [[Battle of Lapua]] the force under the command of [[Georg Carl von Döbeln]] defeated a Russian force near [[Kauhajoki]], [[Southern Ostrobothnia]], [[Finland]]. ||| ||| ||| +0 Battle of Kcynia ||| Deluge (history) ||| The '''Battle of Kcynia''' took place on June 1, 1656, and was one of battles of the [[Deluge (history)|Swedish invasion of Poland]]. It resulted in a victory of Swedish forces, commanded by King [[Charles X Gustav of Sweden|Charles X Gustav]] and [[Adolph John I, Count Palatine of Kleeburg]]. ||| ||| ||| +0 Battle of Keelung ||| Sino-French War ||| The first major battle of the invasion took place on 3 June around the Shih-ch'iu-ling battery ([[Traditional Chinese]]: 獅球嶺砲台) overlooking the port city of Keelung. Eleven years earlier, during the [[Sino-French War]], Chinese forces had bottled up a French expeditionary corps in [[Keelung Campaign|Keelung]] for seven months, and the Shih-ch'iu-ling battery had been held against the French for most of the war. Now, in 1895, following a preliminary bombardment by the warships ''[[Japanese cruiser Matsushima|Matsushima]]'', ''Oshima'', {{ship|Japanese cruiser|Naniwa||2}}, ''[[Japanese cruiser Takachiho|Takachiho]]'' and ''[[Japanese cruiser Chiyoda|Chiyoda]]'', Colonel Kojima's 2nd Battalion, 1st Infantry Regiment routed the fort's garrison and captured the fort with little loss. The other coastal defence batteries—the Ta-sha-wan and [[Uhrshawan Battery|Ehr-sha-wan]] batteries to the east of Keelung and a battery on Palm Island (modern-day [[Hoping Island]])—hardly put up a struggle. Keelung was occupied on the afternoon of the same day, after the Qing commanders fled the city and left the garrison force leaderless. ||| The battle for Keelung, 3 June 1895 ||| ||| +0 Battle of Kehl (1796) ||| Battle of Schliengen ||| The situation reversed when Charles and Wartensleben's forces reunited to defeat Jourdan's army at the battles of [[Battle of Amberg|Amberg]], [[Battle of Würzburg|Würzburg]] and [[Battle of Limburg|2nd Altenkirchen]]. On 18 September, an Austrian division under Feldmarschall-Leutnant [[Franz Petrasch|Petrasch]] stormed the Rhine bridgehead at Kehl, but a French [[Second Battle of Kehl (1796)|counterattack]] drove them out. Even though the French still held the crossing between Kehl and Strasbourg, Petrasch's Austrians controlled the territory leading to the crossing. After battles at [[Battle of Emmendingen|Emmendingen]] (19 October) and [[Battle of Schliengen|Schliengen]] (24 October), Moreau withdrew his troops south to Hüningen. ||| Aftermath ||| ||| +0 Battle of Kettle Creek ||| Battle of Brier Creek ||| The victory demonstrated the inability of British forces to hold the interior of the state, or to protect even sizable numbers of Loyalist recruits outside their immediate protection. The British, who had already decided to abandon Augusta, recovered some prestige a few weeks later, surprising a Patriot force in the [[Battle of Brier Creek]]. Georgia's back country would not come fully under British control until after the 1780 [[Siege of Charleston]] broke Patriot forces in the [[Southern theater of the American Revolutionary War|South]]. ||| ||| ||| +0 Battle of Kettle Creek ||| Capture of Savannah ||| The British began their [[Southern theater of the American Revolutionary War|'southern strategy']] by sending expeditions from [[New York City]] and [[Saint Augustine, Florida|Saint Augustine]], [[East Florida]] to capture [[Savannah, Georgia]] late in 1778. The New York expedition, under the command of [[Lieutenant Colonel]] [[Archibald Campbell (British Army officer)|Archibald Campbell]], arrived first, and successfully [[Capture of Savannah|captured]] the town on December 29, 1778. ||| Background ||| ||| +0 Battle of Kettle Creek ||| Siege of Charleston ||| The victory demonstrated the inability of British forces to hold the interior of the state, or to protect even sizable numbers of Loyalist recruits outside their immediate protection. The British, who had already decided to abandon Augusta, recovered some prestige a few weeks later, surprising a Patriot force in the [[Battle of Brier Creek]]. Georgia's back country would not come fully under British control until after the 1780 [[Siege of Charleston]] broke Patriot forces in the [[Southern theater of the American Revolutionary War|South]]. ||| ||| ||| +0 Battle of Kham Duc ||| Battle of Lang Vei ||| In [[I Corps Tactical Zone]], the North Vietnamese military had mixed successes against allied military forces. On 7 February 1968, a North Vietnamese infantry contingent armed with satchel charges, tear gas, and flamethrowers, and reinforced with Soviet-made [[PT-76]] amphibious tanks, successfully breached the wires of the [[Battle of Lang Vei|Lang Vei Special Forces Camp]]. ||| Background ||| ||| +0 Battle of Khe Sanh ||| Korean War ||| Those who agree with Westmoreland reason that there is no other explanation as to why Hanoi would have committed so many forces to the area instead of deploying them for the Tet Offensive. The fact that the North Vietnamese only committed about half of their available forces to the offensive (60–70,000), the majority of whom were members of the VC, is cited in favor of Westmoreland's argument. Other theories argued that the forces around Khe Sanh were simply a localized defensive measure in the DMZ area, or that they were serving as a reserve in case of an offensive American end run in the mode of the American [[Battle of Incheon|invasion at Inchon]] during the [[Korean War]]. However, North Vietnamese sources claim that the Americans did not win a victory at Khe Sanh but they were forced to retreat in order to avoid destruction. NVA claims Khe Sanh was 'a stinging defeat from both the military and political points of view': Westmoreland was replaced two months after the end of the battle and his successor explained the retreat in different ways. ||| Relief and retreat from Khe Sanh ||| Riddle of Khe Sanh ||| +0 Battle of Kiev (1943) ||| Battle of Kursk ||| The '''Second Battle of Kiev''' describes three strategic operations (two offensive and one defensive) by the [[Soviet Red Army]], and one operational counterattack by the ''[[Wehrmacht]]'' which took place in the wake of the failed German offensive at [[Battle of Kursk|Kursk]] during [[World War II]]. These four operations took place between 3 October and 22 December 1943. ||| ||| ||| +0 Battle of Kilkis–Lahanas ||| First Balkan War ||| The Bulgarian [[Second Army (Bulgaria)|2nd Army]] commanded by General [[Nikola Ivanov]] held a line from [[Lake Dojran]] south east to [[Kilkis]], [[Lachanas]], [[Serres]] and then across the [[Pangaion Hills]] to the Aegean. The army had been in place since May, and was considered a veteran having fought at the [[battle of Adrianople (1913)|siege of Adrianople]] in the [[First Balkan War]]. On 16 June 1913 it had about 75,076 men and 175 guns in 57 infantry battalions, 10 cavalry squadrons and 37 batteries. General Ivanov claimed after the war that his Army consisted of only 36,000 men of whom 20,000 were 'still untrained' and that many of his units were understrength. The Greek General Staff considerably overestimated the numbers of Bulgarians, reckoning them to be between 80,000 and 105,000. Although General Ivanov probably underestimated the number of his soldiers, he still faced a much larger Greek enemy. ||| Conflict ||| ||| +0 Battle of Kilsyth ||| Battle of Naseby ||| Lanark's forces were told of the defeat, and dispersed. Lanark himself and the Committee of Estates escaped across the border to England. Briefly, Montrose found himself undisputed master of Scotland, and proceeded to Glasgow, where he summoned a parliament in the name of the King. Unknown to Montrose, the victory was too late; the [[Battle of Naseby]] had already been lost and the Royalist cause was in ruins. Montrose made an attempt to move south in support of the king, but was himself decisively defeated at [[Battle of Philiphaugh|Philiphaugh]]. ||| Aftermath ||| ||| +0 Battle of Kings Mountain ||| Battle of Camden ||| Some Whig leaders briefly considered attacking the Tory stronghold at [[Ninety Six National Historic Site|Ninety Six]], South Carolina; but they hurriedly dispersed after learning that a large Patriot army had been [[Battle of Camden|defeated at Camden]] three days previous. ||| Prelude to battle ||| Battle of Musgrove's Mill ||| +0 Battle of Kings Mountain ||| Siege of Charleston ||| Kings Mountain was a pivotal moment in the history of the American Revolution. Coming after a series of disasters and humiliations in the Carolinas—the [[Siege of Charleston|fall of Charleston]] and capture of the American army there, the destruction of another American army at the [[Battle of Camden]], the [[Battle of Waxhaws|Waxhaws Massacre]]—the surprising, decisive victory at Kings Mountain was a great boost to Patriot morale. The Tories of the Carolina back country were broken as a military force. He would not return to North Carolina until early 1781, when he was chasing [[Nathanael Greene]] after the Americans had dealt British forces another defeat at the [[Battle of Cowpens]]. ||| Aftermath ||| ||| +0 Battle of Kirksville ||| Battle of Hartville ||| McNeil's reputation would be darkened further by the “[[Palmyra Massacre]]” on October 18, but he would go on to serve two terms as Sheriff of St. Louis County, dying June 7, 1891. Porter died February 18, 1863, of wounds received in an engagement at [[Battle of Hartville|Hartville]]. ||| Aftermath ||| ||| +0 Battle of Kitcheners' Wood ||| Battle of Passchendaele ||| The 2008 film ''[[Passchendaele (film)|Passchendaele]]'' presents a fictionalized view of a soldier who fought in both the 2nd and [[Battle of Passchendaele|3rd Battle of Ypres]], including the Battle of Kitcheners' Wood. The main character is based on 10th Battalion veteran Michael Dunne. ||| Legacy ||| ||| +0 Battle of Kitcheners' Wood ||| Second Battle of Ypres ||| '''The Battle of Kitcheners' Wood''' was fought during [[World War I]] during the [[Second Battle of Ypres]]. ||| ||| ||| +0 Battle of Knocknaclashy ||| Cromwellian conquest of Ireland ||| Most of the province of [[Munster]] had fallen to the [[Cromwellian conquest of Ireland]] in 1649-50. [[Oliver Cromwell]] had led an assault by the [[New Model Army]] from the south-east of Ireland, while Roger Boyle had inspired a mutiny among the English [[Cavalier|Royalist]] garrison in [[Cork (city)|Cork]], causing them to defect to the Parliamentarians. This had outflanked the defences of Irish Confederates and English Royalists, causing them to retreat behind the river Shannon into [[Connacht]], where the held the fortified cities of [[Limerick]] and [[Galway]]. [[Henry Ireton]], went on to [[siege of Limerick (1650-51)|besiege Limerick]]. The only organised Irish forces remaining in south Munster were those of Donagh MacCarthy, Viscount Muskerry, who held out in the mountainous area of west Cork and [[county Kerry]] – which was his clan's native territory. In July 1651, Muskerry set out from [[Ross Castle]] in [[Killarney]] to try to relieve the besieged defenders of Limerick. He rallied his men by spreading a prophecy that the Irish would win a great battle over the English – such predictions were commonly believed in Irish culture at that time . Muskerry marched in the direction of [[Mallow, County Cork|Mallow]] with 3000 infantry and some cavalry, hoping to link up with bands of Irish [[guerrilla warfare|guerrillas]] or 'tories' on the road north. However, Ireton had positioned Boyle in Cork to prevent such a move and Orrerry's Parliamentarian force intercepted the Irish at Knocknaclashy, near the village of [[Banteer]]. ||| The Campaign ||| ||| +0 Battle of Ko Chang ||| Battle of Tsushima ||| The torpedo boat ''Chonburi'' was sunk with a loss of two men, as was HTMS ''Songhkla'' with fourteen dead. The survivors were rescued by the torpedo boat HTMS ''Rayong'', the minelayer HTMS ''Nhong Sarhai'', and the fishery protection vessel ''Thiew Uthok''. These three ships, which had been sheltering to the north of Ko Chang, wisely chose not to break cover and were not spotted by the French. On the other hand, the French sailors were elated, believing they had inflicted a defeat as decisive in its way as the Japanese at [[Battle of Tsushima|Tsushima]], and had not suffered losses of significance. ||| Aftermath ||| ||| +0 Battle of Kobryń ||| Soviet invasion of Poland ||| On September 17 the [[Soviet invasion of Poland (1939)|Soviet invasion of Poland]] started. After the German withdrawal and with the Soviet planes spreading propaganda, Polish civilians and military were attacked by the pro—Soviet bandits. Some Polish soldiers were captured by one of the Soviet bands led by Sava Droniuk. However, those captured soldiers, in turn, got captured and executed by the Ukrainian nationalists. 42 bodies were dug out in 2008 and re—buried with the proper military honors. ||| Battle ||| ||| +0 Battle of Kock (1939) ||| Battle of Wizna ||| After breaking through the Polish line in the [[Battle of Wizna]], the German XIX Panzer Corps under General [[Heinz Guderian]] started its rapid advance south. The corps, composed of the 3rd and 10th [[Panzer]] Divisions, the 20th Motorised Infantry Division, with the 2nd Motorised Division in reserve, was ordered to capture the old fortress in Brześć Litewski and then strike further southwards towards [[Kowel]] and [[Galicia (Central Europe)|Galicia]]. The purpose of this attack was to cut Poland in two and paralyse the defences east of the [[Bug River]]. ||| Battle of Brześć and Kobryń ||| ||| +0 Battle of Kohima ||| Battle of Imphal ||| The '''Battle of Kohima''' was the turning point of the [[Imperial Japan|Japanese]] [[Operation U-Go|U Go offensive]] into [[India]] in 1944 in the [[Second World War]]. The battle was fought in three stages from 4 April to 22 June 1944 around the town of [[Kohima]] in [[Nagaland]] in northeast India. From 3 to 16 April, the Japanese attempted to capture Kohima ridge, a feature which dominated the road by which the besieged British and [[British Indian Army|Indian]] troops of [[IV Corps (United Kingdom)|IV Corps]] at [[Imphal]] were supplied. By mid-April, the small British force at Kohima was relieved. From 18 April to 13 May, British and Indian reinforcements counter-attacked to drive the Japanese from the positions they had captured. The Japanese abandoned the ridge at this point but continued to block the Kohima–Imphal road. From 16 May to 22 June, the British and Indian troops pursued the retreating Japanese and reopened the road. The battle ended on 22 June when British and Indian troops from Kohima and Imphal met at Milestone 109, ending the [[Battle of Imphal|Siege of Imphal]]. ||| ||| ||| +0 Battle of Kohima ||| Battle of Sangshak ||| The Indian troops were the [[50th Indian Parachute Brigade]] under Brigadier Maxwell Hope-Thompson, at Sangshak. Although they were not Miyazaki's objective, he decided to clear them from his line of advance. The [[Battle of Sangshak]] continued for six days. The parachute brigade's troops were desperately short of drinking water, ||| Prelude ||| ||| +0 Battle of Kohima ||| Battle of Stalingrad ||| The battle is often referred to as the '''[[Battle of Stalingrad|Stalingrad]] of the East'''. ||| ||| ||| +0 Battle of Kohima ||| Battle of Thermopylae ||| The verse is attributed to [[John Maxwell Edmonds]] (1875–1958), and is thought to have been inspired by [[Battle of Thermopylae#Epitaph of Simonides|the epitaph]] written by [[Simonides of Ceos|Simonides]] to honour the Spartans who fell at the [[Battle of Thermopylae]] in 480 BC. ||| Aftermath ||| Memorial ||| +0 Battle of Kohima ||| Battle of the Admin Box ||| The Allies were already hastily reinforcing the Imphal Front. As part of this move, the infantry and artillery of [[5th Indian Infantry Division]] were flown from the [[Rakhine State|Arakan]], where they had just participated in the defeat of a subsidiary Japanese offensive at the [[Battle of the Admin Box]]. While the main body of the division went to Imphal (where some units had been isolated and almost all of IV Corps' reserves had already been committed), the [[161st Indian Infantry Brigade]], commanded by Brigadier Dermot Warren and with 24th Mountain Artillery Regiment [[Royal Indian Artillery|Indian Artillery]] attached, were flown to Dimapur. ||| Prelude ||| ||| +0 Battle of Kolb's Farm ||| Battle of Atlanta ||| The battle demonstrated Hood's main deficiency as a battlefield commander: his willingness to attack without adequate reconnaissance. He would go on to make the same error, this time as an army commander, at three future engagements in the [[Atlanta Campaign]]&mdash;the [[Battle of Peachtree Creek]], the [[Battle of Atlanta]], and the [[Battle of Ezra Church]]&mdash;with exceedingly costly results. ||| Aftermath ||| ||| +0 Battle of Kolb's Farm ||| Battle of Peachtree Creek ||| The battle demonstrated Hood's main deficiency as a battlefield commander: his willingness to attack without adequate reconnaissance. He would go on to make the same error, this time as an army commander, at three future engagements in the [[Atlanta Campaign]]&mdash;the [[Battle of Peachtree Creek]], the [[Battle of Atlanta]], and the [[Battle of Ezra Church]]&mdash;with exceedingly costly results. ||| Aftermath ||| ||| +0 Battle of Koljonvirta ||| Battle of Oravais ||| The '''Battle of Koljonvirta''' ({{lang-fi|Koljonvirran taistelu}}) ({{lang-sv|Virta Bro}}) i.e. the Battle of the Virta Bridge was fought between [[Sweden|Swedish]] and [[Russia]]n troops on October 27, 1808. The Swedish force consisted of troops from Savolax and Östergötland. After the main Swedish army had been defeated at the [[Battle of Oravais]] the army under [[Johan August Sandels]] in [[Savonia (historical province)|Savonia]] had to retreat in order not to be outflanked by the Russians. Sandels found a good defensive position north of [[Iisalmi]] and decided to resist the Russian advance there. ||| ||| ||| +0 Battle of Kos ||| Battle of Leros ||| The capture of Kos would have disastrous consequences for British operations in the Dodecanese Islands. Deprived of air cover, the Allies were in the long run unable to hold the other islands, while the Germans pressed their advantage, [[Battle of Leros|capturing Leros]] a month later and completing their conquest of the Dodecanese by the end of November. In the conclusion of the official [[wikt:Special:Search/despatch|despatch]] covering these operations, it is remarked that: ||| Aftermath ||| ||| +0 Battle of Kowel ||| Western Front (World War I) ||| The Tsar had provided large amounts of artillery and shells for Brusilov's army, however this had repercussions for the Russians as Brusilov reverted to the tactic of extensive barrages followed by waves of advancing soldiers, a tactic that had proved unsuccessful since 1915 with German commanders observing the new similarities between Kowel and the [[Western Front (World War I)|Western Front]]. ||| The battle ||| ||| +0 Battle of Kramatorsk ||| 2014 Ukrainian revolution ||| An entrenched standoff between the [[Armed Forces of Ukraine]] and pro-Russian insurgents affiliated with the [[Donetsk People's Republic]] took place from 12 April until 5 July 2014. During the [[2014 pro-Russian unrest in Ukraine|rising unrest in Ukraine]] in the aftermath of the [[2014 Ukrainian revolution]], the city of [[Kramatorsk]] in [[Donetsk Oblast]] came under the control of the breakaway [[Donetsk People's Republic]] on 12 April. In an effort to retake the city, the Ukrainian government launched a counter-offensive against the separatist insurgents, who had taken up positions in the city. The insurgents withdrew from city on 5 July, allowing Ukrainian forces to subsequently recapture the city, ending the standoff. ||| ||| ||| +0 Battle of Krasnokutsk–Gorodnoye ||| Battle of Holowczyn ||| During the end of the 17th century [[Russia]], [[Denmark-Norway]], [[Saxony]] and [[Polish-Lithuanian Commonwealth]] formed an allegiance against the [[Swedish Empire]] in order to regain what was lost in earlier wars. However, three of the original four nations were defeated in the span of seven years, leaving only Russia to stand up against the Swedish invasions. In 1707 Charles XII began his campaign of Russia and strove through victories as [[Battle of Holowczyn|Holowczyn]] – 1708 and the siege of [[Siege of Veprik|Veprik]] – 1708, but also through setbacks as the Swedish defeat at [[Battle of Lesnaya|Lesnaya]] – 1708. Charles reached the outskirts of Krasnokutsk not long after Veprik and there encountered a small force of Russians which he engaged and managed to take several prisoners who told him that Rönne would be close-by Krasnokutsk with about 5,000 dragoons. He then began his march there. ||| Prelude ||| ||| +0 Battle of Krasny Bor ||| Demyansk Pocket ||| Operation ''Polyarnaya Zvezda'' tried to build on the success of Operation ''Iskra'' and began only days later. Zhukov, who had overseen ''Iskra'', was promoted to [[marshal of the Soviet Union]] on January 18, the day the two Soviet Fronts linked up and broke the blockade. This foresaw a three-front attack by the [[Northwestern Front]] [roughly equivalent to an army group], under [[Marshal]] [[Semyon Timoshenko]]; the [[Volkhov Front]] under [[Colonel General]] [[Kirill Meretskov]], and the Leningrad Front under Colonel General [[Leonid Govorov]], of which the 55th Army was now a part. The Northwestern Front was to attack the Ramushevo Corridor, which connected the [[Demyansk Pocket|Demyansk Salient]], held by the Germans to their main positions since 1942. The destruction of the bulk of the [[16th Army (Wehrmacht)|German 16th Army]] in the pocket would allow the Front to exploit the gap in the German lines. ||| Background ||| Operation ''Polyarnaya Zvezda'' ||| +0 Battle of Krasny Bor ||| Siege of Leningrad ||| The '''Battle of Krasny Bor''' was part of the Soviet offensive [[Operation Polyarnaya Zvezda|Operation ''Polyarnaya Zvezda'']]. It called for a pincer attack near Leningrad, to build on the success of [[Operation Iskra|Operation ''Iskra'']] and completely lift the [[Siege of Leningrad]], encircling a substantial part of the German [[18th Army (Wehrmacht)|18th Army]]. The offensive near ''[[Krasny Bor, Tosnensky District, Leningrad Oblast|Krasny Bor]]'', formed the western arm of the pincer. The Soviet offensive began on Wednesday, 10 February 1943. It produced noticeable gains on the first day, but rapidly turned into a stalemate. The strong defense of the [[Blue Division|250th (Spanish) Infantry Division]] led by General [[Emilio Esteban Infantes]] and the [[4th SS Polizei Division|4th SS Police Division]] gave the German forces time to reinforce their positions. By February 13, the Soviet forces had stopped their offensive in this sector. ||| ||| ||| +0 Battle of Kulm ||| Battle of Dresden ||| Following the French [[Battle of Dresden|victory at Dresden]], Vandamme pursued the retreating allies. [[Napoleon]] sent Marshals [[Laurent Gouvion Saint-Cyr|Gouvion Saint Cyr]] and [[Auguste Marmont]] to support Vandamme's corps. With Vandamme in advance, Saint Cyr's and Marmont's corps brought up the rear. Vandamme caught up with [[Alexander Ivanovich Ostermann-Tolstoy]]'s forces near the town of Kulm, eight kilometres northwest of [[Ústí nad Labem|Aussig]] ([[Ústí nad Labem]], now in the Czech Republic). ||| Background ||| ||| +0 Battle of Kupres (1994) ||| Battle of Kupres (1992) ||| [[Kupres]] was of interest to the ARBiH and the HVO, albeit for different reasons. The HVO wanted to reverse [[Battle of Kupres (1992)|April 1992 loss of the town]], home to a significant [[Croat]] community before the war, and to control the [[Tomislavgrad]]–[[Bugojno]]–[[Šipovo]] road. The ARBiH advance towards Kupres was planned as a secondary axis of its offensive towards Donji Vakuf, {{convert|20|km|abbr=off}} to the northwest, [[codename]]d Autumn-94. ||| Prelude ||| ||| +0 Battle of Kursk ||| Battle of Stalingrad ||| As the [[Battle of Stalingrad]] slowly ground to its conclusion the Soviet army moved to a general offensive in the south, pressuring the exhausted German forces who had survived the winter. By January 1943, a {{convert|160|to|300|km|abbr=on}} wide gap had opened between [[Army Group B#Eastern Front|Army Group B]] and [[Army Group Don]], and the advancing Soviet armies threatened to cut off all German forces south of the [[Don River (Russia)|Don River]], including [[Army Group A]] operating in the [[Caucasus]].{{sfn|Kasdorf|2000|p=7}}{{sfn|Clark|2012|p=167}} Army Group Center came under significant pressure as well. [[Kursk]] fell to the Soviets on 8 February 1943, and [[Rostov-on-Don|Rostov]] on 14 February.{{sfn|Clark|2012|p=176}} The Soviet [[Bryansk Front|Bryansk]], [[Western Front (Soviet Union)|Western]], and newly created [[Central Front (Soviet Union)|Central Front]]s prepared for an offensive which envisioned the encirclement of Army Group Center between [[Bryansk]] and [[Smolensk]].{{sfn|Kasdorf|2000|p=7}}{{sfn|Glantz|House|2004|p=11}} By February 1943 the [[Wehrmacht]] was in danger of a general collapse. ||| Background ||| ||| +0 Battle of Kwajalein ||| Battle of Eniwetok ||| The U.S. forces for the landings were [[Rear admiral (United States)|Rear Admiral]] [[Richmond K. Turner]]'s 5th Fleet Amphibious Force, and Major General [[Holland M. Smith]]'s [[V Amphibious Corps]], which comprised the [[U.S. 4th Marine Division|4th Marine Division]] commanded by Maj. Gen. [[Harry Schmidt (USMC)|Harry Schmidt]], the Army's [[7th Infantry Division (United States)|7th Infantry Division]] commanded by Maj. Gen. [[Charles H. Corlett]], as well as the [[22nd Marines]], and the Army's 106th and [[111th Infantry Regiment (United States)|111th Infantry]] regiments. The 4th and 7th Divisions were assigned to the initial landings at Kwajalein, while the 2nd Battalion of the 106th was assigned to the simultaneous capture of Majuro Atoll. The rest of the 106th and the 22nd Marines were in reserve for Kwajalein, while awaiting the following [[Battle of Eniwetok|assault on Eniwetok]], scheduled for three months later. ||| Battle ||| ||| +0 Battle of Kwajalein ||| Battle of Guam (1944) ||| The Japanese also realized that beach-line defenses were too vulnerable to naval and aerial bombardment. In the campaign for the [[Mariana Islands]], the defense in depth on [[Battle of Guam (1944)|Guam]] and [[battle of Peleliu|Peleliu]] would be much harder to overcome than the comparatively thin line on Kwajalein. ||| Aftermath ||| ||| +0 Battle of La Ciotat ||| Operation Dragoon ||| The '''Battle of La Ciotat''' was a naval engagement in August 1944 during [[World War II]] as part of [[Operation Dragoon]]. [[Allies of World War II|Allied]] forces, engaged at the main landings in [[Vichy France]], ordered a small flotilla of [[United States|American]] and [[United Kingdom|British]] warships to make a feint against the port city of [[La Ciotat]] as a diversion. The Allies hoped to draw [[Nazi Germany|German]] forces away from the main landing zones at [[Cavalaire-sur-Mer]], [[Saint-Tropez]] and [[Saint-Raphaël, Var|Saint Raphaël]]. During the operation, two German warships attacked the Allied [[flotilla]]. ||| ||| ||| +0 Battle of Lacolle Mills (1812) ||| Battle of Lacolle Mills (1814) ||| The American invasion force, prepared and led by Major General [[Henry Dearborn]], captured the blockhouse in the early morning, possibly following a brief confrontation with the outnumbered defending forces. In the dark, a second group of American [[militia]] attacked the troops at the guardhouse, resulting in a short battle between two groups of American forces. In the aftermath of this confusion, the Canadian forces under the command of [[Charles de Salaberry]] launched a counterattack against the shaken American forces, forcing a retreat to Champlain before the American forces withdrew from [[Lower Canada]] completely. After this defeat, the demoralized American forces would not attempt this assault again until 1814 in the [[Battle of Lacolle Mills (1814)]]. ||| ||| ||| +0 Battle of Ladysmith ||| Relief of Ladysmith ||| Since the Boers launched no immediate assault, the British force reorganised and constructed defensive lines around the town, which would require a major effort to overcome. They recovered morale through some small-scale raids at night which sabotaged some of the Boer artillery. Thereafter the siege became a long drawn-out blockade, except for a single storming attempt. After several failures, a force under General [[Redvers Buller]], who was later known as 'Sir Reverse' and the 'Ferryman of the Tugela', broke through the Boer forces defending the Tugela to effect the [[Relief of Ladysmith]] on 28 February 1900. ||| Aftermath ||| ||| +0 Battle of Ladysmith ||| Siege of Ladysmith ||| The '''Battle of Ladysmith''' was one of the early engagements of the [[Second Boer War]]. A large British force which had concentrated at the garrison town of [[Ladysmith, KwaZulu-Natal|Ladysmith]] launched a sortie on 30 October 1899, against Boer armies which were slowly surrounding the town. The result was a disaster for the British. The main body was driven back into the town, and an isolated detachment of 800 men was forced to surrender to Commandant De Wet. The Boers did not follow up their advantage by proceeding towards the strategically important port of Durban, and instead began a [[Siege of Ladysmith]], which was relieved after 118 days. ||| ||| ||| +0 Battle of Laing's Nek ||| Battle of Majuba Hill ||| The British lost 84 killed, 113 wounded, and 2 captured during what was perceived as a fiasco. Most of the casualties were in the 58th Regiment with 74 killed and 101 wounded, around 35% of their total strength. Among those killed in the battle were many of General Colley's staff including Major Poole and Lieutenants Dolphin, [[Robert Elwes (Lieut.)|Elwes]] and Inman. The Boers reported their losses at 14 killed and 27 wounded. One month later, General Colley was killed at the [[Battle of Majuba Hill]] which ended the war, after which Transvaal was recognised as an independent state. ||| Aftermath ||| ||| +0 Battle of Lake Poyang ||| Battle of Caishi ||| * [[Battle of Caishi]] ||| See also ||| ||| +0 Battle of Lambusart ||| Battle of Fleurus (1794) ||| Three times during the spring of 1794 the French armies attempted to cross the Sambre in the face of resistance by First Coalition forces. The French were turned back at [[Battle of Grandreng|Grandreng]] on 13 May, [[Battle of Erquelinnes|Erquelinnes]] on 24 May and [[Battle of Gosselies|Gosselies]] on 3 June. On the last occasion the French were able to briefly lay siege to the fortress of Charleroi. Meanwhile, Jourdan was detached from the ''[[Army of the Moselle]]'' with four divisions and moved toward the fighting on the Sambre. After arriving with large reinforcements on 4 June, Jourdan assumed control of the ''[[Army of the Ardennes]]'' and the right wing of the ''[[Army of the North (France)|Army of the North]]''. On 12 June, the French crossed the Sambre and laid siege to Charleroi for the second time. On the 16th, the Prince of Orange attacked and broke the French right flank, forcing Jourdan to lift the siege and withdraw south of the Sambre. The final showdown along the Sambre would come at the [[Battle of Fleurus (1794)|Battle of Fleurus]] on 26 June 1794. ||| ||| ||| +0 Battle of Lanzerath Ridge ||| Task Force Baum ||| Corporal Sam Jenkins and PFC Preston were captured before they reached Allied lines, and they later joined Bouck and the rest of the platoon in prison. The men barely survived, most suffering from the advanced effects of malnutrition. When [[Task Force Baum]] from Patton's [[4th Armored Division (United States)|4th Armored Division]] attempted to liberate the camp, Captain Abe Baum was surprised at the large number of prisoners and was unable to rescue them all. ||| Aftermath ||| Prisoners of war ||| +0 Battle of Laon ||| Battle of Craonne ||| Blücher unsuccessfully attacked Marmont and Mortier along the [[Ourcq]] river in late February and early March and ordered a retreat north to regroup when he heard of Napoleon's advance. Prussian troops crossed the swollen [[Aisne river]] and arrived at [[Soissons]] on 4 March. There they linked up with reinforcements that brought Blücher's total force to 100,000. On 7 March, a clash ensued at the [[Battle of Craonne]] as Napoleon attacked westwards along the [[Chemin des Dames]] (literally, the 'ladies' path'). Blücher's outflanking maneuver did not materialize in time and the Prussians were forced to withdraw towards Laon. ||| Prelude ||| ||| +0 Battle of Laon ||| Battle of Reims (1814) ||| This setback did not by itself spell the end for Napoleon. Just a few days later the French crushed an isolated enemy corps at [[Battle of Reims (1814)|Rheims]]. Blücher's Army of Silesia remained inactive for a week after the victory. Nevertheless, the Allied stand had prevented Napoleon from driving them further north. The Allies were still in a position to advance on Paris, which they did at the end of March. ||| Aftermath ||| ||| +0 Battle of Las Piedras (1811) ||| May Revolution ||| In 1810, the [[May Revolution]] had forced the [[Royalist (Spanish American Revolution)|Spanish]] to abandon [[Buenos Aires]], but they held on to the [[Banda Oriental]] (present-day Uruguay), as Spain moved the headquarters of the [[Viceroyalty of the Río de la Plata]] to [[Montevideo]]. At the beginning of April 1811, the revolutionary [[José Gervasio Artigas]] returned to the [[Banda Oriental]] with approximately 180 men provided by the [[Junta Grande|Government of Buenos Aires]]. On April 11, he issued the Mercedes Proclamation, assuming control of the revolution. ||| Background and development of events ||| ||| +0 Battle of Leeds ||| Battle of Adwalton Moor ||| Soon after this defeat the Royalists fell back to the city of [[York]] and Sir Thomas recaptured Wakefield. This was, however, almost immediately followed by another Royalist advance into the [[West Riding]], this time under Newcastle himself. The [[Battle of Adwalton Moor]] saw the Parliamentarians narrowly defeated by Newcastle's forces, with Bradford falling shortly afterwards. Fairfax escaped and spent the rest of 1643 besieged in the Parliamentarian stronghold of [[Kingston upon Hull|Hull]]. ||| Aftermath ||| ||| +0 Battle of Leipzig ||| Battle of Bautzen ||| Despite opposition at home, Napoleon rebuilt his army, with the intention of either inducing a temporary alliance or at least cessation of hostilities, or knocking at least one of the Great Powers of the Coalition out of the war. He sought to regain the offensive by [[German campaign (Napoleonic Wars)|re-establishing his hold]] in Germany, winning two hard-fought tactical victories, at [[Battle of Lützen (1813)|Lützen]] on 2 May and [[Battle of Bautzen|Bautzen]] on 20–21 May, over Russo-Prussian forces. The victories led to a brief [[armistice]]. He then won a major victory at the [[Battle of Dresden]] on 27 August. Following this, the Coalition forces, under individual command of [[Gebhard Leberecht von Blücher|Gebhard von Blücher]], [[Carl XIV Johan|Crown Prince Charles John of Sweden]], [[Karl Philipp, prince zu Schwarzenberg|Karl von Schwarzenberg]], and [[Count Benningsen]] of Russia, followed the strategy outlined in the [[Trachenberg Plan]]: they would avoid clashes with Napoleon, but seek confrontations with his marshals. This policy led to victories at [[Battle of Großbeeren|Großbeeren]], [[Battle of Kulm|Kulm]], [[Battle of Katzbach|Katzbach]], and [[Battle of Dennewitz|Dennewitz]]. After these defeats, the French emperor could not easily follow up on his victory at Dresden. Thinly-stretched supply lines spanning now somewhat hostile Rhineland German lands, coupled with Bavaria's switching of sides to the Coalition just eight days prior to the battle, made it almost impossible to replace his army's losses. As a result, by the time of the battle, the total strength of all Coalition armies east of the Rhine probably exceeded a million; by contrast Napoleon's forces had shrunk to just a few hundred thousand. ||| Background ||| ||| +0 Battle of Leipzig ||| Battle of Dresden ||| Despite opposition at home, Napoleon rebuilt his army, with the intention of either inducing a temporary alliance or at least cessation of hostilities, or knocking at least one of the Great Powers of the Coalition out of the war. He sought to regain the offensive by [[German campaign (Napoleonic Wars)|re-establishing his hold]] in Germany, winning two hard-fought tactical victories, at [[Battle of Lützen (1813)|Lützen]] on 2 May and [[Battle of Bautzen|Bautzen]] on 20–21 May, over Russo-Prussian forces. The victories led to a brief [[armistice]]. He then won a major victory at the [[Battle of Dresden]] on 27 August. Following this, the Coalition forces, under individual command of [[Gebhard Leberecht von Blücher|Gebhard von Blücher]], [[Carl XIV Johan|Crown Prince Charles John of Sweden]], [[Karl Philipp, prince zu Schwarzenberg|Karl von Schwarzenberg]], and [[Count Benningsen]] of Russia, followed the strategy outlined in the [[Trachenberg Plan]]: they would avoid clashes with Napoleon, but seek confrontations with his marshals. This policy led to victories at [[Battle of Großbeeren|Großbeeren]], [[Battle of Kulm|Kulm]], [[Battle of Katzbach|Katzbach]], and [[Battle of Dennewitz|Dennewitz]]. After these defeats, the French emperor could not easily follow up on his victory at Dresden. Thinly-stretched supply lines spanning now somewhat hostile Rhineland German lands, coupled with Bavaria's switching of sides to the Coalition just eight days prior to the battle, made it almost impossible to replace his army's losses. As a result, by the time of the battle, the total strength of all Coalition armies east of the Rhine probably exceeded a million; by contrast Napoleon's forces had shrunk to just a few hundred thousand. ||| Background ||| ||| +0 Battle of Leipzig ||| Battle of Hanau ||| By the end of the battle at the afternoon of 19 October, all the remnants of the French army have crossed the Elster River and began a good-ordered retreat. The battle had ended conclusively and decisively with the nations of the Coalition as the victors, and the German Campaign was a complete failure for the French, although they achieved a minor victory when an army of the [[Kingdom of Bavaria]] attempted to block the retreat of the ''Grande Armée'' at [[Battle of Hanau|Hanau]]. Even though the heavy casualties the Coalition army incurred and the exhaustion from the bloody 4-day battle they fought made it impossible for them to promptly pursue the retreating ''Grande Armée'', the French were also already very exhausted after the battle, and were themselves retreating at a fast pace towards the Rhine River. ||| Conclusion ||| ||| +0 Battle of Leipzig ||| Battle of Katzbach ||| Despite opposition at home, Napoleon rebuilt his army, with the intention of either inducing a temporary alliance or at least cessation of hostilities, or knocking at least one of the Great Powers of the Coalition out of the war. He sought to regain the offensive by [[German campaign (Napoleonic Wars)|re-establishing his hold]] in Germany, winning two hard-fought tactical victories, at [[Battle of Lützen (1813)|Lützen]] on 2 May and [[Battle of Bautzen|Bautzen]] on 20–21 May, over Russo-Prussian forces. The victories led to a brief [[armistice]]. He then won a major victory at the [[Battle of Dresden]] on 27 August. Following this, the Coalition forces, under individual command of [[Gebhard Leberecht von Blücher|Gebhard von Blücher]], [[Carl XIV Johan|Crown Prince Charles John of Sweden]], [[Karl Philipp, prince zu Schwarzenberg|Karl von Schwarzenberg]], and [[Count Benningsen]] of Russia, followed the strategy outlined in the [[Trachenberg Plan]]: they would avoid clashes with Napoleon, but seek confrontations with his marshals. This policy led to victories at [[Battle of Großbeeren|Großbeeren]], [[Battle of Kulm|Kulm]], [[Battle of Katzbach|Katzbach]], and [[Battle of Dennewitz|Dennewitz]]. After these defeats, the French emperor could not easily follow up on his victory at Dresden. Thinly-stretched supply lines spanning now somewhat hostile Rhineland German lands, coupled with Bavaria's switching of sides to the Coalition just eight days prior to the battle, made it almost impossible to replace his army's losses. As a result, by the time of the battle, the total strength of all Coalition armies east of the Rhine probably exceeded a million; by contrast Napoleon's forces had shrunk to just a few hundred thousand. ||| Background ||| ||| +0 Battle of Leipzig ||| Battle of Kulm ||| Despite opposition at home, Napoleon rebuilt his army, with the intention of either inducing a temporary alliance or at least cessation of hostilities, or knocking at least one of the Great Powers of the Coalition out of the war. He sought to regain the offensive by [[German campaign (Napoleonic Wars)|re-establishing his hold]] in Germany, winning two hard-fought tactical victories, at [[Battle of Lützen (1813)|Lützen]] on 2 May and [[Battle of Bautzen|Bautzen]] on 20–21 May, over Russo-Prussian forces. The victories led to a brief [[armistice]]. He then won a major victory at the [[Battle of Dresden]] on 27 August. Following this, the Coalition forces, under individual command of [[Gebhard Leberecht von Blücher|Gebhard von Blücher]], [[Carl XIV Johan|Crown Prince Charles John of Sweden]], [[Karl Philipp, prince zu Schwarzenberg|Karl von Schwarzenberg]], and [[Count Benningsen]] of Russia, followed the strategy outlined in the [[Trachenberg Plan]]: they would avoid clashes with Napoleon, but seek confrontations with his marshals. This policy led to victories at [[Battle of Großbeeren|Großbeeren]], [[Battle of Kulm|Kulm]], [[Battle of Katzbach|Katzbach]], and [[Battle of Dennewitz|Dennewitz]]. After these defeats, the French emperor could not easily follow up on his victory at Dresden. Thinly-stretched supply lines spanning now somewhat hostile Rhineland German lands, coupled with Bavaria's switching of sides to the Coalition just eight days prior to the battle, made it almost impossible to replace his army's losses. As a result, by the time of the battle, the total strength of all Coalition armies east of the Rhine probably exceeded a million; by contrast Napoleon's forces had shrunk to just a few hundred thousand. ||| Background ||| ||| +0 Battle of Leipzig ||| Battle of Ulm ||| The French had around 160,000 soldiers along with 700 guns consisting of 145,000 Russians, 110,000 Austrians, 90,000 Prussians, and 30,000 Swedes. This made Leipzig the largest battle of the Napoleonic wars, surpassing [[Battle of Borodino|Borodino]], [[Battle of Wagram|Wagram]], [[Battle of Jena-Auerstedt|Jena and Auerstadt]], [[Battle of Ulm|Ulm]], and [[Battle of Dresden|Dresden]]. ||| Opposing forces ||| ||| +0 Battle of Leipzig ||| Battle of Vitoria ||| The [[Emperor of the French|French Emperor]] [[Napoleon I]] attempted to militarily coerce Tsar [[Alexander I of Russia|Alexander I]] of [[Imperial Russia|Russia]] into rejoining his unpopular [[Continental System]] by [[Napoleon's invasion of Russia|invading Russia]] with about 650,000 troops, collectively known as the ''[[Grande Armée]]'', and eventually occupied [[Moscow]] in late 1812, after the bloody yet indecisive [[Battle of Borodino]]. However, the Russian Tsar refused to surrender even as the French occupied the city, which was burnt by the time of its occupation. The campaign ended in complete disaster as Napoleon and his remaining forces retreated during the bitterly cold Russian winter, with sickness, starvation, and the constant harrying of Russian [[Cossacks|Cossack]] marauders and partisan forces leaving the Grande Armée virtually destroyed by the time it exited Russian territory. Making matters even worse for Napoleon, in June 1813 the combined armies of Great Britain, Portugal, and Spain, under the command of Britain's [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]], had decisively routed French forces at the [[Battle of Vitoria]] in the [[Peninsular War]], and were now advancing towards the Pyrenees and the Franco-Spanish border. With this string of defeats, the armies of France were in retreat on all fronts across Europe. ||| Background ||| ||| +0 Battle of Leipzig ||| Battle of Wagram ||| The French had around 160,000 soldiers along with 700 guns consisting of 145,000 Russians, 110,000 Austrians, 90,000 Prussians, and 30,000 Swedes. This made Leipzig the largest battle of the Napoleonic wars, surpassing [[Battle of Borodino|Borodino]], [[Battle of Wagram|Wagram]], [[Battle of Jena-Auerstedt|Jena and Auerstadt]], [[Battle of Ulm|Ulm]], and [[Battle of Dresden|Dresden]]. ||| Opposing forces ||| ||| +0 Battle of Leipzig ||| Peninsular War ||| The [[Emperor of the French|French Emperor]] [[Napoleon I]] attempted to militarily coerce Tsar [[Alexander I of Russia|Alexander I]] of [[Imperial Russia|Russia]] into rejoining his unpopular [[Continental System]] by [[Napoleon's invasion of Russia|invading Russia]] with about 650,000 troops, collectively known as the ''[[Grande Armée]]'', and eventually occupied [[Moscow]] in late 1812, after the bloody yet indecisive [[Battle of Borodino]]. However, the Russian Tsar refused to surrender even as the French occupied the city, which was burnt by the time of its occupation. The campaign ended in complete disaster as Napoleon and his remaining forces retreated during the bitterly cold Russian winter, with sickness, starvation, and the constant harrying of Russian [[Cossacks|Cossack]] marauders and partisan forces leaving the Grande Armée virtually destroyed by the time it exited Russian territory. Making matters even worse for Napoleon, in June 1813 the combined armies of Great Britain, Portugal, and Spain, under the command of Britain's [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]], had decisively routed French forces at the [[Battle of Vitoria]] in the [[Peninsular War]], and were now advancing towards the Pyrenees and the Franco-Spanish border. With this string of defeats, the armies of France were in retreat on all fronts across Europe. ||| Background ||| ||| +0 Battle of Lepanto ||| Battle of Actium ||| The engagement was a significant defeat for the Ottomans, who had not lost a major naval battle since the fifteenth century. The defeat was mourned by them as an act of Divine Will, contemporary chronicles recording that 'the Imperial Fleet encountered the fleet of the wretched infidels and the will of God turned another way.' and some Western historians have held it to be the most decisive naval battle anywhere on the globe since the [[Battle of Actium]] of 31 BC. ||| Aftermath ||| ||| +0 Battle of Leuctra ||| Battle of Gaugamela ||| [[Battle of Delium]]. Further, [[Philip II of Macedon]], who studied and lived in Thebes, was no doubt heavily influenced by the battle to develop his own, highly effective approach to tactics and armament. In turn, his son [[Alexander the Great|Alexander]] would go on to develop his father's theories to an entirely new level. Many innovations of Philip and Alexander are traced to this battle. Concentration of force, refused flank and combined arms are tactics that they used in many of their battles. Philip's victories against the Illyrians and at [[Battle of Chaeronea (338 BC)|Chaeronea]] and Alexander's triumphs at [[Battle of the Granicus|the Granicus]], [[Battle of Issus|Issus]], [[Battle of Gaugamela|Gaugamela]], and [[Battle of the Hydaspes|the Hydaspes]] owe credit to the tactical manoeuver used to vanquish the Spartans. ||| Historical significance ||| ||| +0 Battle of Leuctra ||| Battle of Issus ||| [[Battle of Delium]]. Further, [[Philip II of Macedon]], who studied and lived in Thebes, was no doubt heavily influenced by the battle to develop his own, highly effective approach to tactics and armament. In turn, his son [[Alexander the Great|Alexander]] would go on to develop his father's theories to an entirely new level. Many innovations of Philip and Alexander are traced to this battle. Concentration of force, refused flank and combined arms are tactics that they used in many of their battles. Philip's victories against the Illyrians and at [[Battle of Chaeronea (338 BC)|Chaeronea]] and Alexander's triumphs at [[Battle of the Granicus|the Granicus]], [[Battle of Issus|Issus]], [[Battle of Gaugamela|Gaugamela]], and [[Battle of the Hydaspes|the Hydaspes]] owe credit to the tactical manoeuver used to vanquish the Spartans. ||| Historical significance ||| ||| +0 Battle of Leuctra ||| Battle of Mantinea (362 BC) ||| The battle's political effects were far-reaching: the losses in material strength and prestige (prestige being an inestimably important factor in the [[Peloponnesian War]]) sustained by the Spartans at Leuctra and subsequently at the [[Battle of Mantinea (362 BC)|Battle of Mantinea]] were key in depriving them forever of their supremacy in Greece. Therefore, the battle permanently altered the Greek balance of power, as Sparta was deprived of her former prominence and was reduced to a second-rate power among the Greek [[Polis|city-states]]. ||| Historical significance ||| ||| +0 Battle of Leuctra ||| Battle of the Hydaspes ||| [[Battle of Delium]]. Further, [[Philip II of Macedon]], who studied and lived in Thebes, was no doubt heavily influenced by the battle to develop his own, highly effective approach to tactics and armament. In turn, his son [[Alexander the Great|Alexander]] would go on to develop his father's theories to an entirely new level. Many innovations of Philip and Alexander are traced to this battle. Concentration of force, refused flank and combined arms are tactics that they used in many of their battles. Philip's victories against the Illyrians and at [[Battle of Chaeronea (338 BC)|Chaeronea]] and Alexander's triumphs at [[Battle of the Granicus|the Granicus]], [[Battle of Issus|Issus]], [[Battle of Gaugamela|Gaugamela]], and [[Battle of the Hydaspes|the Hydaspes]] owe credit to the tactical manoeuver used to vanquish the Spartans. ||| Historical significance ||| ||| +0 Battle of Leuthen ||| Battle of Leuctra ||| But when the heads of the two superbly drilled Prussian columns – the distances between the marching platoons remaining exactly the width of each platoon's front – had passed the Austrian left flank, the columns veered left toward the enemy and continued their march until they had passed beyond the left Austrian flank. Then, on command, the platoons of the columns turned left at Lobetinz, and the whole Prussian army lay in line of battle at nearly a right angle to the left flank of the Austrian position. The whole Prussian army had carried out a maneuver to attack the Austrians in the flank. (This has been compared with the tactic used by [[Epaminondas]] against the Spartans at the [[Battle of Leuctra]] in 371 BC.) The weakest soldiers of the Austrian army had been put on the left flank in a position protected by the hills, as their fighting ability was doubted. ||| Maneuver ||| ||| +0 Battle of Leyte ||| Battle of Leyte Gulf ||| On 23 October, the approach of the enemy surface vessels was detected. US naval units moved out to intercept, and the air and naval [[Battle of Leyte Gulf]]—the largest naval battle in the Pacific {{rp|70}} and also one of the [[largest naval battle in history|largest naval battles in history]] —was fought from 23-26 October—the Japanese suffered a decisive defeat. Nonetheless by 11 December, the Japanese had succeeded in moving more than 34,000 troops to Leyte and over {{convert|10000|ST|t|lk=on|abbr=on}} of materiél, most through the port of Ormoc on the west coast, despite heavy losses to reinforcement convoys, including engagements at [[Battle of Ormoc Bay|Ormoc Bay]], because of relentless air interdiction missions by US aircraft. ||| Battle ||| Japanese counterattacks ||| +0 Battle of Leyte Gulf ||| American Civil War ||| Halsey was criticized for his decision to take TF 34 north in pursuit of Ozawa, and for failing to detach it when Kinkaid first appealed for help. A piece of US Navy slang for Halsey's actions is ''Bull's Run'', a phrase combining Halsey's newspaper nickname 'Bull' (in the US Navy he was known as 'Bill' Halsey) with an allusion to the [[First Battle of Bull Run|Battle of Bull Run]] in the [[American Civil War]]. ||| Criticism of Halsey ||| ||| +0 Battle of Leyte Gulf ||| Battle of Leyte ||| It was fought in waters of the [[Leyte Gulf]], near the [[Philippines|Philippine]] islands of [[Leyte Island|Leyte]], [[Samar Island|Samar]] and [[Luzon Island|Luzon]], from 23–26 October 1944, between combined [[United States|American]] and [[Australia]]n forces and the [[Imperial Japanese Navy]]. On 20 October, United States troops [[Battle of Leyte|invaded the island of Leyte]] as part of a strategy aimed at isolating Japan from the countries it had occupied in [[Southeast Asia]], and in particular depriving its forces and industry of vital [[petroleum|oil]] supplies. The Imperial Japanese Navy (IJN) mobilized nearly all of its remaining major naval vessels in an attempt to defeat the Allied invasion but was repulsed by the [[United States Navy|U.S. Navy's]] [[United States Third Fleet|3rd]] and [[United States Seventh Fleet|7th Fleets]]. The IJN failed to achieve its objective, suffered very heavy losses, and never sailed to battle in comparable force thereafter. The majority of its surviving heavy ships, deprived of fuel, remained in their bases for the rest of the Pacific War. ||| ||| ||| +0 Battle of Leyte Gulf ||| Battle of Ormoc Bay ||| The Battle of Leyte Gulf secured the [[beachhead]]s of the [[US Sixth Army]] on Leyte against attack from the sea. However, much hard fighting would be required before the island was completely in Allied hands at the end of December 1944: the [[Battle of Leyte]] on land was fought in parallel with an air and sea campaign in which the Japanese reinforced and resupplied their troops on Leyte while the Allies attempted to interdict them and establish air-sea superiority for a series of amphibious landings in [[Ormoc Bay]]—engagements collectively referred to as the [[Battle of Ormoc Bay]]. ||| Aftermath ||| ||| +0 Battle of Leyte Gulf ||| Charge of the Light Brigade ||| From {{convert|3000|mi|nmi km|abbr=on}} away in Pearl Harbor, Admiral Nimitz had been monitoring the desperate calls from Taffy 3, and sent Halsey a terse message: 'TURKEY TROTS TO WATER GG FROM CINCPAC ACTION COM THIRD FLEET INFO COMINCH CTF SEVENTY-SEVEN X WHERE IS RPT WHERE IS TASK FORCE THIRTY FOUR RR [[The world wonders|THE WORLD WONDERS]].' The first four words and the last three were 'padding' used to confuse enemy [[cryptanalysis]] (the beginning and end of the true message was marked by double consonants). The communications staff on Halsey's flagship correctly deleted the first section of padding but mistakenly retained the last three words in the message finally handed to Halsey. The last three words—probably selected by a communications officer at Nimitz's headquarters—may have been meant as a loose quote from [[Alfred, Lord Tennyson|Tennyson's]] poem on '[[Charge of the Light Brigade|The Charge of the Light Brigade]]', suggested by the coincidence that this day, 25 October, was the 90th anniversary of the [[Battle of Balaclava]]—and was not intended as a commentary on the current crisis off Leyte. Halsey, however, when reading the message, thought that the last words—'THE WORLD WONDERS'—were a biting piece of criticism from Nimitz, threw his cap to the deck and broke into 'sobs of rage'. [[Robert Carney|Rear Admiral Robert Carney]], his Chief of Staff, confronted him, telling Halsey 'Stop it! What the hell's the matter with you? Pull yourself together.' ||| Battle of Cape Engaño (25–26 October) ||| Crisis – US 7th Fleet's calls for help ||| +0 Battle of Leyte Gulf ||| First Battle of Bull Run ||| Halsey was criticized for his decision to take TF 34 north in pursuit of Ozawa, and for failing to detach it when Kinkaid first appealed for help. A piece of US Navy slang for Halsey's actions is ''Bull's Run'', a phrase combining Halsey's newspaper nickname 'Bull' (in the US Navy he was known as 'Bill' Halsey) with an allusion to the [[First Battle of Bull Run|Battle of Bull Run]] in the [[American Civil War]]. ||| Criticism of Halsey ||| ||| +0 Battle of Leyte Gulf ||| Guadalcanal Campaign ||| It is noteworthy that the Battle of Surigao Strait was one of only two battleship-versus-battleship naval battles in the entire Pacific campaign of World War II (the other being the [[Naval Battle of Guadalcanal|naval battle]] during the [[Guadalcanal Campaign]]) and was the last action of this type in history. It was also the last battle in which one force (in this case, the U.S. Navy) was able to '[[Crossing the T|cross the T]]' of its opponent. However, by the time the battleship action was joined, the Japanese line was very ragged and consisted of only one battleship (''Yamashiro''), one heavy cruiser and one destroyer, so that the 'crossing of the T' was notional and had little effect on the outcome of the battle. ||| Battle of Surigao Strait (25 October) ||| ||| +0 Battle of Leyte Gulf ||| Naval Battle of Guadalcanal ||| It is noteworthy that the Battle of Surigao Strait was one of only two battleship-versus-battleship naval battles in the entire Pacific campaign of World War II (the other being the [[Naval Battle of Guadalcanal|naval battle]] during the [[Guadalcanal Campaign]]) and was the last action of this type in history. It was also the last battle in which one force (in this case, the U.S. Navy) was able to '[[Crossing the T|cross the T]]' of its opponent. However, by the time the battleship action was joined, the Japanese line was very ragged and consisted of only one battleship (''Yamashiro''), one heavy cruiser and one destroyer, so that the 'crossing of the T' was notional and had little effect on the outcome of the battle. ||| Battle of Surigao Strait (25 October) ||| ||| +0 Battle of Lima Site 85 ||| Operation Barrel Roll ||| Phou Pha Thi is a remote mountain in [[Houaphanh Province]], northeastern [[Laos]]. The mountain, which is about {{convert|1,700|m|sp=us}} high, is located within the former [[Royal Lao Army]]'s Military Region 2, and about {{convert|24|km|sp=us}} from the border of the [[Democratic Republic of Vietnam]] and {{convert|48|km|sp=us}} away from [[Sam Neua]], the Pathet Lao capital. For the local [[Hmong people|Hmong]] and Yeo tribes that lived in the area, Phou Pha Thi was a place of religious significance; they believed it was inhabited by spirits who possessed supernatural powers to exercise control over the circumstances of their lives. The [[United States Air Force]] (USAF) considered Phou Pha Thi to be an ideal location for installing a radar navigation system to assist U.S. pilots in their [[Operation Rolling Thunder|bombing campaigns]] against North Vietnam, and along the [[Operation Barrel Roll|Ho Chi Minh Trail]]. ||| Background ||| ||| +0 Battle of Lima Site 85 ||| Operation Rolling Thunder ||| Phou Pha Thi is a remote mountain in [[Houaphanh Province]], northeastern [[Laos]]. The mountain, which is about {{convert|1,700|m|sp=us}} high, is located within the former [[Royal Lao Army]]'s Military Region 2, and about {{convert|24|km|sp=us}} from the border of the [[Democratic Republic of Vietnam]] and {{convert|48|km|sp=us}} away from [[Sam Neua]], the Pathet Lao capital. For the local [[Hmong people|Hmong]] and Yeo tribes that lived in the area, Phou Pha Thi was a place of religious significance; they believed it was inhabited by spirits who possessed supernatural powers to exercise control over the circumstances of their lives. The [[United States Air Force]] (USAF) considered Phou Pha Thi to be an ideal location for installing a radar navigation system to assist U.S. pilots in their [[Operation Rolling Thunder|bombing campaigns]] against North Vietnam, and along the [[Operation Barrel Roll|Ho Chi Minh Trail]]. ||| Background ||| ||| +0 Battle of Lincelles ||| Flanders Campaign ||| The '''Battle of Lincelles''' was an action that took place as part of a larger manoeuvre on 17 August 1793 in the [[Flanders Campaign]] of the [[War of the First Coalition]]. It was fought between the forces of Revolutionary [[France]] under the command of [[Jean Baptiste Jourdan]] and {{ill|fr|Antoine Anne Lecourt de Béru}}, versus those of [[Great Britain]] under the [[Frederick Augustus, Duke of York and Albany]] and the [[Dutch Republic]] under the [[William I of the Netherlands|Hereditary Prince of Orange]]. The action resulted in a coalition victory. ||| ||| ||| +0 Battle of Lincoln (1141) ||| Battle of Lincoln (1217) ||| *[[Battle of Lincoln (1217)]] ||| See also ||| ||| +0 Battle of Lissa (1811) ||| Battle of Trafalgar ||| To disrupt the preparations of this army, the British [[Royal Navy]], which had controlled most of the [[Mediterranean Sea|Mediterranean]] since the [[Battle of Trafalgar]] in 1805, seized the Dalmatian Island of [[Vis (island)|Lissa]] in 1807 and used it as a base for raiding the coastal shipping of Italy and Illyria. These operations captured dozens of ships and caused panic and disruption to French strategy in the region. ||| Background ||| ||| +0 Battle of Livno ||| Operation Alfa ||| Operation Beta followed on the heels of [[Operation Alfa]] in which Italian forces retook [[Prozor, Bosnia and Herzegovina|Prozor]] from the Partisans. Ten Italian battalions and two Ustaše battalions took the city from the Partisans with neither side suffering many casualties. ||| Operation Beta ||| ||| +0 Battle of Lone Pine ||| Landing at Anzac Cove ||| Prior to the battle, isolated fighting around Lone Pine had begun early in the Gallipoli campaign. At around 7:00 a.m. on the first day of the Australian and New Zealand [[Landing at Anzac Cove|landings at Anzac Cove]], 25 April 1915, elements of the Australian force had pushed through to Lone Pine in an effort to destroy an Ottoman artillery [[Battery (artillery)|battery]] that had been firing down upon the landing beach. Before the Australians could engage the battery, the Ottomans had withdrawn to a ridge to the south-west, which the Australians later dubbed 'Third Ridge' (or 'Gun Ridge'). Taking heavy casualties, the Australians withdrew north to Lone Pine, where they were able to establish a defensive position. As reinforcements were brought up from New Zealand units, in the afternoon a second Ottoman regiment, the 77th, arrived and heavy hand-to-hand fighting ensued before the counterattack was blunted. Further fighting around Lone Pine continued throughout the early stages of the campaign, but eventually a stalemate developed in which neither side was able to advance and static trench warfare began. ||| Prelude ||| Military situation ||| +0 Battle of Lone Tree Hill ||| Battle of Leyte ||| On 14 June, the US commander, General [[Walter Krueger]], sent the [[6th Infantry Division (United States)|U.S. 6th Infantry Division]], to relieve the 158th RCT. After ten days of hard fighting, the US forces took Lone Tree Hill. The Japanese suffered more than 1,000 dead, including some trapped in collapsed caves. The U.S. Army suffered about 700 battle and 500 non-battle casualties. With Lone Tree Hill in American possession, Maffin Bay became a major staging base for six subsequent battles: [[Battle of Biak|Biak]], [[Battle of Noemfoor|Noemfoor]], [[Battle of Sansapor|Sansapor]], [[Battle of Leyte|Leyte]] and [[Battle of Luzon|Luzon]]. ||| ||| ||| +0 Battle of Lone Tree Hill ||| Battle of Luzon ||| On 14 June, the US commander, General [[Walter Krueger]], sent the [[6th Infantry Division (United States)|U.S. 6th Infantry Division]], to relieve the 158th RCT. After ten days of hard fighting, the US forces took Lone Tree Hill. The Japanese suffered more than 1,000 dead, including some trapped in collapsed caves. The U.S. Army suffered about 700 battle and 500 non-battle casualties. With Lone Tree Hill in American possession, Maffin Bay became a major staging base for six subsequent battles: [[Battle of Biak|Biak]], [[Battle of Noemfoor|Noemfoor]], [[Battle of Sansapor|Sansapor]], [[Battle of Leyte|Leyte]] and [[Battle of Luzon|Luzon]]. ||| ||| ||| +0 Battle of Lone Tree Hill ||| Battle of Noemfoor ||| On 14 June, the US commander, General [[Walter Krueger]], sent the [[6th Infantry Division (United States)|U.S. 6th Infantry Division]], to relieve the 158th RCT. After ten days of hard fighting, the US forces took Lone Tree Hill. The Japanese suffered more than 1,000 dead, including some trapped in collapsed caves. The U.S. Army suffered about 700 battle and 500 non-battle casualties. With Lone Tree Hill in American possession, Maffin Bay became a major staging base for six subsequent battles: [[Battle of Biak|Biak]], [[Battle of Noemfoor|Noemfoor]], [[Battle of Sansapor|Sansapor]], [[Battle of Leyte|Leyte]] and [[Battle of Luzon|Luzon]]. ||| ||| ||| +0 Battle of Lone Tree Hill ||| Battle of Sansapor ||| On 14 June, the US commander, General [[Walter Krueger]], sent the [[6th Infantry Division (United States)|U.S. 6th Infantry Division]], to relieve the 158th RCT. After ten days of hard fighting, the US forces took Lone Tree Hill. The Japanese suffered more than 1,000 dead, including some trapped in collapsed caves. The U.S. Army suffered about 700 battle and 500 non-battle casualties. With Lone Tree Hill in American possession, Maffin Bay became a major staging base for six subsequent battles: [[Battle of Biak|Biak]], [[Battle of Noemfoor|Noemfoor]], [[Battle of Sansapor|Sansapor]], [[Battle of Leyte|Leyte]] and [[Battle of Luzon|Luzon]]. ||| ||| ||| +0 Battle of Long Island ||| French and Indian War ||| Newly promoted Brigadier General [[Samuel Holden Parsons]] a lawyer from Connecticut who had recently secured a commission in the [[Continental Army]], and Colonel [[Samuel Atlee]] in command of the First Regiment of Pennsylvania Musketry - a veteran of the [[French and Indian War]] - were stationed further north on the Gowanus Road. Putnam had been awakened by a guard at 0300 and told that the British were attacking through the Gowanus Pass. ||| Battle ||| Grant's diversionary attack ||| +0 Battle of Long Island ||| Siege of Boston ||| After defeating the British in the [[Siege of Boston]] on March 17, 1776, General [[George Washington]], Commander-in-Chief, brought the [[Continental Army]] to defend the port city of New York, then limited to the southern end of [[Manhattan Island]]. Washington understood that the [[New York Harbor|city's harbor]] would provide an excellent base for the British Navy during the campaign. There he established defenses and waited for the British to attack. In July, the British, under the command of General [[William Howe, 5th Viscount Howe|William Howe]], landed a few miles across the harbor from Manhattan on the sparsely-populated [[Staten Island]], where during the next month and a half they were slowly reinforced by ships in [[Lower New York Bay]], bringing their total force to 32,000 troops. With the British fleet in control of the entrance to the harbor at [[The Narrows]], Washington knew the difficulty in holding the city. Believing Manhattan would be the first target, he moved there the bulk of his forces. ||| ||| ||| +0 Battle of Longewala ||| Battle of Thermopylae ||| The British media significantly exploited{{Clarify|date=July 2015}} the defence of Longewala. James Hatter compared the Battle of Longewala as to [[Battle of Thermopylae]] in his article ''Taking on the enemy at Longewala'' describing it as the deciding moment of the 1971 war. Similarly, Field Marshal R.M. Carver, the British Chief of the Imperial General Staff, visited Longewala a few weeks after the war to learn the details of the battle from [[Kuldip Singh Chandpuri|Major Chandpuri]]. ||| Aftermath ||| ||| +0 Battle of Longue-Pointe ||| Invasion of Canada (1775) ||| With the [[American Revolutionary War]] beginning, many thought it would be easy to spread the rebellion to the [[Province of Quebec (1763–1791)|Province of Quebec]], which had only been conquered by the British in 1759, and whose population was seen as resentful of British rule. The American [[Invasion of Canada (1775)|invasion of Quebec]] began with the arrival at [[Île aux Noix]] of the [[Continental Army]] under the command of General [[Philip Schuyler]] on September 4, 1775. ||| Background ||| ||| +0 Battle of Los Angeles ||| Attack on Pearl Harbor ||| The '''Battle of Los Angeles''', also known as '''The Great Los Angeles Air Raid''', is the name given by contemporary sources to the rumored [[Mainland invasion of the United States|enemy attack]] and subsequent [[anti-aircraft artillery]] barrage which took place from late 24 February to early 25 February 1942 over Los Angeles, California. The incident occurred less than three months after the United States entered [[World War II]] as a result of the [[Japanese Imperial Navy]]'s [[Attack on Pearl Harbor|attack]] on [[Pearl Harbor]], and one day after the [[bombardment of Ellwood]] on 23 February. ||| ||| ||| +0 Battle of Los Yébenes ||| Battle of Albuera ||| Finally, there is also the fate of Colonel Konopka, who – against explicit orders – placed the regiment's banners in the wagons of the train. He risked a lot, even the loss of his position, but it looked like nothing happened: his travel to France (surely connected with the investigation into the case ) took a long time, but without any visible consequences. After the [[Battle of Albuera]] – he was supposedly nominated a French General and Baron, and disappeared from the Vistula Lancers forever. ||| Fate of the lost banners ||| ||| +0 Battle of Losecoat Field ||| Battle of Edgecote Moor ||| Almost a year earlier, in July 1469, an army loyal to the [[House of York|Yorkist king]], [[Edward IV of England|King Edward IV]] was defeated at the [[Battle of Edgecote Moor]] by [[Richard Neville, 16th Earl of Warwick]], his disaffected former supporter; Edward himself was subsequently captured in [[Olney, Buckinghamshire]]. However with the help and support of his brother [[Richard III of England|Richard, Duke of Gloucester]], he had by now regained power. Despite the nominal reconciliation of Warwick and the king, by March 1470 Warwick found himself in a similar position to that which he had been in before the battle of Edgecote. He was unable to exercise any control over, or influence, Edward's policies. Warwick wanted to place another of the King's brothers, [[George, Duke of Clarence]], on the throne so that he could regain his influence. To do so, he called on former supporters of the defeated [[House of Lancaster]]. ||| Background ||| ||| +0 Battle of Lostwithiel ||| Battle of Cropredy Bridge ||| After defeating the army of Sir [[William Waller]] at the [[Battle of Cropredy Bridge]], King Charles marched west in pursuit of the Parliamentarian army of the Earl of Essex, who was invading the Royalist stronghold of [[Cornwall]]. ||| Prelude ||| ||| +0 Battle of Lowestoft ||| Battle of Portland ||| In the early morning of the 13th the Dutch fleet was positioned to the southeast of the English fleet. Most English historians have assumed Van Wassenaer (who on the 12 June had sent all of his silverware and other valuables home as to show how much confidence he had in himself) made a sudden dash to the west, trying to regain the weather gage, and the English beat him to it. If so, the wind must have been blowing from the southwest &mdash; otherwise there was no gain in this manoeuvre &mdash; but this makes it difficult to explain how the English fleet, sailing to the south, could be swifter than the Dutch. An alternative interpretation, more in accordance with the Dutch sources, would be that the wind was blowing from the northwest and Van Wassenaer tried to engage the English from a defensive leeward position, his favorite tactic. Indeed both fleets passed in opposite tack and then turned. During the turn the ''[[Great Charity]]'' (originally an Amsterdam Directors' ship the 'Groote Liefde', captured during the [[Battle of Portland]] in 1653) became isolated and was boarded and captured by captain [[Jan de Haen]], the later admiral, who immediately returned with his prize to the Netherlands, an obviously unsound practice that would be forbidden after this battle. ||| The battle ||| ||| +0 Battle of Ludford Bridge ||| Battle of Blore Heath ||| Richard's forces began the campaign dispersed over the country. Richard himself was at [[Ludlow]] in the [[Welsh Marches]], Salisbury was at [[Middleham Castle]] in [[North Yorkshire]] and Warwick was at Calais. As Salisbury and Warwick marched to join Richard, Margaret ordered a force under [[James Tuchet, 5th Baron Audley]] to intercept Salisbury. At the bloody [[Battle of Blore Heath]], Audley's forces were routed. ||| Background ||| ||| +0 Battle of Luding Bridge ||| Pingjin Campaign ||| Despite their rewards, none of the survivors lived to see the establishment of the People's Republic. The duty squad commander of the 4th squad of the 2nd company Liu Zihua (刘梓华) was killed in January 1949 when liberating [[Tianjin]] during the [[Pingjin Campaign]], and the commander of the 2nd [[Company (military unit)|company]], Liao Dazhu (廖大珠) was the last to die; he was killed in the battle to liberate Shanghai in May 1949. The commander of the 4th regiment, Wang Kaixiang (王开湘) did not survive either; after the [[Long March]], the regimental commander was struck with malaria and he accidentally shot himself while under the convulsive effects of the disease. At the Luding Bridge memorial museum, specially built to commemorate the event, only four out of the 22 pillars had names engraved, while the rest were unnamed. For the pillar with the name of the deputy squad commander of the 4th squad of the 2nd company, Liu Zihua (刘梓华), his head statue was also engraved. ||| The battle at the bridge ||| ||| +0 Battle of Lund ||| Battle of Fehrbellin ||| After the Swedish defeat at the [[Battle of Fehrbellin]] and a number of Danish triumphs at sea, the Swedish military was occupied retaining their tenuous hold on dominions in [[Brandenburg]] and [[Pomerania]]. ||| Events leading up to the battle ||| ||| +0 Battle of Lundy's Lane ||| Battle of Chippawa ||| On 3 July 1814 an American army under Major General [[Jacob Brown]] launched an attack across the [[Niagara River]] near its source on [[Lake Erie]]. His force quickly [[Capture of Fort Erie|captured]] the British position at [[Fort Erie, Ontario|Fort Erie]] and then advanced north. Two days later one of his two brigades of regular U.S. Infantry under Brigadier General [[Winfield Scott]] defeated a British force commanded by Major General [[Phineas Riall]] at the [[Battle of Chippawa]]. ||| Background ||| ||| +0 Battle of Lushunkou ||| Battle of Port Arthur ||| The '''Battle of Lüshunkou''' ({{zh|s=旅顺口之战}}; Japanese: {{nihongo|''Ryōjunkō-no-tatakai''|旅順口の戦い|}}) was a land battle of the [[First Sino-Japanese War]]. It took place on 21 November 1894 in [[Lüshunkou]], [[Manchuria]] (later called [[Lüshunkou|Port Arthur]], in present-day [[Liaoning Province]], [[China]]) between the forces of the [[Empire of Japan]] and the [[Qing dynasty|Empire of China]]. It is sometimes referred to archaically in western sources as the '''Battle of Port Arthur''' (that name is now primarily used for the [[Battle of Port Arthur|opening battle]] of the [[Russo-Japanese War]] in 1904). ||| ||| ||| +0 Battle of Luzon ||| Battle of Leyte ||| A few months after this, MacArthur expressed his belief that an attempt to recapture the Philippines was necessary. The U.S. Pacific Commander [[Admiral]] [[Chester Nimitz]] and [[Chief of Naval Operations]] Admiral [[Ernest King]] both opposed this idea, arguing that it must wait until victory was certain. MacArthur had to wait two years for his wish; it was 1944 before a campaign to recapture the Philippines was launched. The island of [[Leyte]] was the first objective of the campaign, which was [[Battle of Leyte|captured]] by the end of December 1944. This was followed by the [[Battle of Mindoro|attack on Mindoro]], and later, Luzon. ||| Background ||| ||| +0 Battle of Luzon ||| Battle of Manila (1945) ||| A second [[Amphibious warfare|amphibious landing]] took place on 15 January, {{convert|45|mi|km|abbr=on}} southwest of Manila. On 31 January, two regiments of the [[11th Airborne Division]] made an airborne assault, capturing a bridge, and later advanced toward Manila. On 3 February, the [[1st Cavalry Division (United States)|1st Cavalry Division]] captured the bridge across [[Tullahan River]] leading to the city. They advanced into the city that evening, and the [[Battle of Manila (1945)|battle for the capture of Manila]] began. On 4 February, the paratroopers of the 11th Airborne—approaching the city from the south—came to the main Japanese defences south of the city of Manila where their advance was halted by heavy resistance. General Yamashita had ordered his troops to destroy all bridges and other vital installations as soon as the U.S. forces entered the city, and Japanese forces entrenched throughout the city continued to resist U.S. forces. General MacArthur announced the imminent recapture of Manila on the same day. On 11 February, the 11th Airborne Division captured the last Japanese outer defences, thus encircling the whole city. U.S. and Filipino forces carried out clearing operations in the city in the following weeks. Military casualties totalled 1,010 Americans, 3,079 Filipinos and 12,000 Japanese. ||| Battle ||| ||| +0 Battle of Luzzara ||| Battle of Guastalla ||| : ''This article is about the 1702 Battle of Luzzara. For the Battle of 1734 see the [[Battle of Guastalla]].'' ||| ||| ||| +0 Battle of Lyngør ||| Battle of Copenhagen (1807) ||| The Norwegians preferred to limit military operations to coastal defence. Nevertheless, what was left of the [[Denmark-Norway|Dano-Norwegian]] fleet after the [[Battle of Copenhagen (1807)]] fleet was committed to breaking the blockade. After years of skirmishes, the Dano-Norwegian fleet was reduced to one major ship, the frigate ''[[HDMS Najaden (1811)|Najaden]]'', which they had finished in 1811 with materiel salvaged from a ship-of-the-line destroyed in earlier battles. ''Najaden'' was under the command of Danish naval officer Hans Peter Holm. ''Lolland'', and ''Samsøe'' – accompanied ''Najaden''. ||| Background ||| ||| +0 Battle of Machias ||| Battles of Lexington and Concord ||| On April 19, 1775, the [[American Revolutionary War]] began with the [[Battles of Lexington and Concord]] in the [[Kingdom of Great Britain|British]] [[Province of Massachusetts Bay]]. Following the battle, the militia that had mustered to oppose the British [[Siege of Boston|besieged the city of Boston]] where the British troops were located. ||| Background ||| ||| +0 Battle of Machias ||| Siege of Boston ||| Following the outbreak of the war and the start of the [[Siege of Boston]], British authorities enlisted the assistance of [[Loyalist (American Revolution)|Loyalist]] merchant Ichabod Jones to assist in the acquisition of needed supplies. Two of Jones' merchant ships arrived in Machias on June 2, accompanied by the British armed sloop ''Margaretta'', commanded by midshipman James Moore. The townspeople, unhappy with Jones' business practices, decided to arrest him, and in the attempt, decided to go after Moore and his ship. Moore was able to escape out of the harbor, but the townspeople seized one of Jones' ships, armed it and a second local ship, and sailed out to meet him. In a short confrontation, they captured Moore's vessel and crew, fatally wounding him in the process. ||| ||| ||| +0 Battle of Mackinac Island (1814) ||| Battle of the Thames ||| For the rest of the year and through much of 1813, the British hold on Mackinac was secure since they also held [[Detroit, Michigan|Detroit]], which the Americans would have to recapture before attacking Mackinac. Then on 10 September 1813, the Americans won the decisive naval [[Battle of Lake Erie]], which allowed them to recover Detroit and defeat the retreating British and Native force at the subsequent [[Battle of the Thames]]. Although it was too late in the year to allow the Americans to mount an expedition to recover Mackinac before the lakes froze in winter, they had nevertheless cut the British supply lines to the post. The British garrison, commanded by Captain Richard Bullock of the [[Welch Regiment|41st Regiment of Foot]], were placed on half rations and also procured some fish and maize locally but were suffering severe shortages by the end of the winter. ||| Background ||| ||| +0 Battle of Mackinac Island (1814) ||| Siege of Fort Mackinac ||| On 18 July 1812, a mixed force of British regular soldiers, Canadian voyageurs and Native Americans captured the island in the [[Siege of Fort Mackinac]] before the American defenders knew that war had been declared. The news of this success influenced many more Native tribes who had previously been neutral or undecided to rally to the British cause, contributing to several more British victories over the next year. The British meanwhile abandoned their own defences at [[St. Joseph Island (Ontario)|St. Joseph Island]] and concentrated their forces at Mackinac Island. ||| Background ||| ||| +0 Battle of Madras ||| Siege of Madras ||| The [[Treaty of Aix-la-Chapelle (1748)|Treaty of Aix-la-Chapelle]] that ended the war made provision for [[Chennai|Madras]] to be returned to the British in exchange for [[Louisbourg]] in [[Acadia]] which had been [[Siege of Louisbourg (1745)|captured by British forces]] in 1745. The French [[Siege of Madras|besieged Madras again in 1759]], this time without success. ||| Aftermath ||| ||| +0 Battle of Magdhaba ||| Battle of Rafa ||| Aerial reconnaissance found Ottoman forces moving their headquarters north from Beersheba, while the garrison at their main desert base of Hafir El Auja was slightly increased. Other Ottoman outposts at El Kossaima and Nekhl remained, along with their strong defensive system of trenches and redoubts at [[Battle of Rafa|El Magruntein]], defending Rafa, on the frontier between Egypt and the southern Ottoman Empire. ||| Aftermath ||| ||| +0 Battle of Magdhaba ||| Battle of Romani ||| In August 1916, a combined Ottoman and [[German Empire]] Army had been forced to retreat to Bir el Abd, after the British victory in the [[Battle of Romani]]. During the following three months the defeated force retired further eastwards to El Arish, while the captured territory stretching from the [[Suez Canal]] was consolidated and garrisoned by the EEF. Patrols and reconnaissances were carried out by British forces, to protect the continuing construction of the railway and water pipeline and to deny passage across the Sinai desert to the Ottoman forces by destroying water cisterns and wells. ||| ||| ||| +0 Battle of Magdhaba ||| Sinai and Palestine Campaign ||| The '''Battle of Magdhaba''' (officially known by the British as the Affair of Magdhaba) took place on 23 December 1916 during the Defence of Egypt section of the [[Sinai and Palestine Campaign]] in the First World War. The attack by the [[Anzac Mounted Division]] took place against an entrenched [[Ottoman Army]] garrison to the south and east of Bir Lahfan in the [[Sinai Peninsula|Sinai desert]], some {{convert|18|-|25|mi|km}} inland from the Mediterranean coast. This [[Egyptian Expeditionary Force]] (EEF) victory against the [[Ottoman Empire]] garrison also secured the town of El Arish after the Ottoman garrison withdrew. ||| ||| ||| +0 Battle of Magersfontein ||| Battle of Colenso ||| The week from 10 December to 17 December 1899 rapidly became known to troops in the field—and to politicians in Britain—as '[[Black Week]]', during which the British suffered three defeats: the battles of [[Battle of Stormberg|Stormberg]] in the Cape Midlands and [[Battle of Colenso|Colenso]] in Natal, as well as the Battle of Magersfontein. ||| Aftermath ||| Strategic consequences ||| +0 Battle of Magersfontein ||| Battle of Modder River ||| The '''Battle of Magersfontein''' ({{IPAc-en|ˈ|m|ɑː|x|ər|s|f|ɒ|n|t|eɪ|n}} {{respell|MAH|khərs-fon-tayn}}) was fought on 11 December 1899, at [[Magersfontein]] near [[Kimberley, Northern Cape|Kimberley]] on the borders of the [[British Cape Colony|Cape Colony]] and the independent republic of the [[Orange Free State]]. [[United Kingdom|British]] forces under Lieutenant General [[Paul Sanford Methuen, 3rd Baron Methuen|Lord Methuen]] were advancing north along the railway line from the Cape in order to relieve the [[Siege of Kimberley]], but their path was blocked at Magersfontein by a [[Boer]] force that was entrenched in the surrounding hills. The British had already fought a series of battles with the Boers, most recently at [[Battle of Modder River|Modder River]], where the advance was temporarily halted. ||| ||| ||| +0 Battle of Magersfontein ||| Battle of Paardeberg ||| Following their defeat, the British delayed at the Modder River for another two months while reinforcements were brought forward. General [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]] was appointed Commander in Chief of the British forces in South Africa and moved to take personal command of this front. He subsequently lifted the Siege of Kimberley and forced Cronje to surrender at the [[Battle of Paardeberg]]. ||| ||| ||| +0 Battle of Magersfontein ||| Siege of Kimberley ||| The '''Battle of Magersfontein''' ({{IPAc-en|ˈ|m|ɑː|x|ər|s|f|ɒ|n|t|eɪ|n}} {{respell|MAH|khərs-fon-tayn}}) was fought on 11 December 1899, at [[Magersfontein]] near [[Kimberley, Northern Cape|Kimberley]] on the borders of the [[British Cape Colony|Cape Colony]] and the independent republic of the [[Orange Free State]]. [[United Kingdom|British]] forces under Lieutenant General [[Paul Sanford Methuen, 3rd Baron Methuen|Lord Methuen]] were advancing north along the railway line from the Cape in order to relieve the [[Siege of Kimberley]], but their path was blocked at Magersfontein by a [[Boer]] force that was entrenched in the surrounding hills. The British had already fought a series of battles with the Boers, most recently at [[Battle of Modder River|Modder River]], where the advance was temporarily halted. ||| ||| ||| +0 Battle of Magersfontein ||| Siege of Ladysmith ||| The Boers had learnt in earlier battles that the British artillery was superior in numbers to theirs, and could pound any high ground where they placed their guns or rifle pits. At [[Siege of Ladysmith|Ladysmith]], the Boers used rocks to build defensive [[sangar (fortification)|sangars]], but the ground at Magersfontein was sandy and less rocky. ||| Prelude ||| Boer defences ||| +0 Battle of Magersfontein ||| Siege of Mafeking ||| In the early days of the war in the [[British Cape Colony|Cape Colony]], the Boers surrounded and [[Siege of Kimberley|laid siege]] to the British garrisons in the towns of [[Kimberley, South Africa|Kimberley]] and [[Siege of Mafeking|Mafeking]] and destroyed the railway bridge across the [[Orange River]] at [[Hopetown]]. ||| Background ||| ||| +0 Battle of Majadahonda ||| Battle of Salamanca ||| After General [[Arthur Wellesley, 1st Duke of Wellington]]'s great victory at the [[Battle of Salamanca]], the [[Anglo-Portuguese Army]] moved on Madrid from the northwest. On 11 August, the 1st, 11th and 12th Dragoons of D'Urban's Portuguese brigade formed Wellington's advanced guard. Behind them was Bock's brigade under Colonel de Jonquières, consisting of the 1st and 2nd King's German Legion (KGL) Dragoons. Farther back in the column, Colonel [[Colin Halkett]] led the 1st and 2nd KGL Light Infantry battalions, plus 7 companies of the Brunswick Oels battalion. ||| Battle ||| ||| +0 Battle of Majuba Hill ||| Crimean War ||| The bulk of the 405 British soldiers occupying the hill were 171 men of the [[Northamptonshire Regiment|58th Regiment]] with 141 men of the [[92nd (Gordon Highlanders) Regiment of Foot|92nd (Gordon) Highlanders]], and a small [[naval brigade]] from ''[[HMS Dido (1869)|HMS Dido]]''. Besides the Gordons, most of his troops were inexperienced and their regiments had not seen action since the [[Crimean War]]. General Colley had brought no artillery up to the summit, nor did he order his men to dig in against the advice of several of his subordinates, expecting that the Boers would retreat when they saw their position on the Nek was untenable. However, the Boers quickly formed a group of storming parties, led by [[Nicolas Smit]], from an assortment of volunteers from various commandos, totaling at least 450 men, maybe more, to attack the hill. ||| The first part of the battle ||| ||| +0 Battle of Malvern Hill ||| Battle of Glendale ||| The subsequent two weeks on the peninsula were mostly quiet. On June{{nbsp}}25, though, a surprise attack by McClellan began a series of six major battles over the next week near Richmond—the [[Seven Days Battles]]. On the first day, as Lee led the Army of Northern Virginia toward the Union lines, McClellan preempted him with an attack at [[Battle of Oak Grove|Oak Grove]]. Lee's men successfully warded off the Union assault, and Lee continued with his plans. The next morning, the Confederates attacked the Army of the Potomac at [[Battle of Mechanicsville|Mechanicsville]]. Union forces turned back the Confederate onslaught, inflicting heavy losses. After Mechanicsville, McClellan's army withdrew to a position behind Boatswain's Swamp. There, on June{{nbsp}}27, the Union soldiers suffered another Confederate attack, this time at Gaines's Mill. In the [[Battle of Gaines's Mill|resulting battle]], the Confederates launched numerous failed charges, until a final concerted attack broke the Union line, resulting in the only clear Confederate victory during the Seven Days. The [[Battle of Garnett's and Golding's Farms|action at Garnett's and Golding's Farm]], fought next, was merely a set of skirmishes. Lee attacked the Union Army at the [[Battle of Savage's Station]] on June{{nbsp}}29 and the battles of [[Battle of Glendale|Glendale]] and [[Battle of White Oak Swamp|White Oak Swamp]] June{{nbsp}}30, but all three battles were inconclusive. After this series of conflicts that inflicted thousands of casualties on both armies, McClellan began to position his forces to an imposing natural position atop [[Malvern Hill]]. ||| Background ||| Military situation ||| +0 Battle of Manila (1896) ||| Battle of San Juan del Monte ||| The '''Battle of Manila of 1896''' occurred in [[Manila]] in then Spanish colony of the [[Philippines]] during the [[Philippine Revolution]]. [[Katipunan]] under [[Andres Bonifacio]] attempted to take the city but the attempt failed, and Bonifacio retreated to the city's outskirts. The [[Battle of San Juan del Monte]] was joined a day later when Bonifacio attempted to capture the San Juan's [[Gunpowder magazine|powder magazine]], but this too failed. ||| ||| ||| +0 Battle of Manila (1945) ||| Atomic bombings of Hiroshima and Nagasaki ||| In the month-long battle, the Americans and Japanese inflicted worse destruction on Manila than the German ''[[Luftwaffe]]'' had exacted upon London, which resulted in the destruction of the city and in a death toll comparable to that of the [[Bombing of Tokyo in World War II|Tokyo firebombing]] or the [[Atomic bombings of Hiroshima and Nagasaki|atomic bombing of Hiroshima]]. ||| Aftermath ||| ||| +0 Battle of Mansilla ||| Battle of Corunna ||| La Romana's Spanish corps cooperated with [[John Moore (British soldier)|Sir John Moore's]] British army in its advance into northern Spain and in its subsequent retreat to the northwest. At Mansilla de las Mulas on the [[Esla River]], the Spanish commander posted Martinengo's division to hold off Soult's pursuing French corps. The rear guard commander unwisely drew up his soldiers with the bridge at their backs. Franceschi's cavalry charged and cut the Spanish formation to pieces. Half of the rear guard were trapped against the river and forced to surrender, others were cut down by Imperial French sabers. La Romana abandoned León the following day. The next major action in the area was the [[Battle of Corunna]] on 16 January 1809. ||| ||| ||| +0 Battle of Mantinea (362 BC) ||| Battle of Leuctra ||| After the [[Battle of Leuctra]] in 371 BC had shattered the foundations of [[Spartan hegemony]], [[Thebes (Greece)|Thebes]]' chief politician and general [[Epaminondas]] attempted to build a new hegemony centered on his city. Consequently, the Thebans had marched south, into the area traditionally dominated by the [[Sparta]]ns, and set up the [[Arcadia]]n League, a federation of city-states of the central [[Peloponnese|Peloponnesian]] plateau, to contain Spartan influence in the Peloponnese and thereby maintain overall Theban control. In years prior to the Battle of Mantinea, the Spartans had joined with the [[Elis|Eleans]] (a minor Peloponnesian people with a territorial grudge against the Arcadians) in an effort to undermine the League. When the Arcadians miscalculated and seized the [[Greeks|Pan-Hellenic]] sanctuary of [[Zeus]] at [[Olympia, Greece|Olympia]] in Elis, one of the Arcadian city-states, [[Mantinea]], detached itself from the League. The Spartans and Eleans joined the Mantineans in a military attack on the Arcadian League. Athens decided to support the Spartans, as she resented the growing Theban power. The Athenians also recalled that at the end of [[Peloponnesian War]], the Thebans demanded that Athens be destroyed and its inhabitants enslaved; the Spartans had resisted these demands. An Athenian army was sent by sea to join the Spartan-led forces, in order to avoid being intercepted on land by Theban forces. Epaminondas then led a Theban army into the Peloponnese to restore order and re-establish Theban/Arcadian hegemony there. ||| Background ||| ||| +0 Battle of Mantinea (418 BC) ||| Battle of Amphipolis ||| Instead of allowing Mantinea to be flooded, the Argive army moved more quickly than the Spartans anticipated, as the Argive hoplites were very angry at their generals for not pursuing the Spartan army and accused them of treason. They surprised their enemies by drawing up as the Spartans emerged from a nearby wood. The Spartans quickly organized themselves, with no time to wait for their other allies. Brasidas' veterans (Brasidas himself had been killed at the [[Battle of Amphipolis]]), and the [[Sciritae]] (an elite unit of Spartan troops) formed the left wing, the Spartans, Arcadians, Heraeans and [[Maenalon|Maenalians]] in the centre, and the Tegeans, who were fighting for their homeland took the position of honour on the right wing. The Argive lines were formed by the Mantineans on the right, the Argives in the centre, and the Athenians on the left. [[Thucydides]] did not know the exact numbers of men on each side, but estimated that there were about 9,000 men on the Spartan side (the Spartan army must have numbered about 3,500, with 600 Sciritae, about 2,000 neodamodeis and Brasideans and about 3,000 Arcadians on the whole) with somewhat fewer men on the Argive and Athenian side (about 8,000), according to [[Donald Kagan]]. Other scholars, such as [[Victor Davis Hanson]], give slightly bigger numbers. ||| The battle ||| ||| +0 Battle of Marash ||| Armenian Genocide ||| The '''Battle of Marash''' ({{lang-tr|Maraş Muharebesi}}) was a battle that took place in the early winter of 1920 between the [[French Third Republic|French]] forces occupying the city of [[Kahramanmaraş|Maraş]] in the [[Ottoman Empire]] and the [[Turkish National Forces]] linked to [[Mustafa Kemal Atatürk]]. It was the first major battle of the [[Turkish War of Independence]], and the three-week-long engagement in the city ultimately forced the French to abandon and retreat from Marash and resulted in a Turkish massacre of [[Armenians|Armenian]] refugees who had just been repatriated to the city following the [[Armenian Genocide]]. The controversial retreat, along with the massacre that took place under French watch, was subsequently dubbed the 'Marash Affair.' ||| ||| ||| +0 Battle of Mariazell ||| Ulm Campaign ||| The 1805 war began with the [[Ulm Campaign]] which was disastrous for Austria, with only the corps of [[Michael von Kienmayer]] and [[Franz Jellacic]] escaping envelopment by the [[Grande Armée]] of [[Napoleon]]. As Kienmayer's columns fled to the east, they joined with elements of the [[Russian Empire]]'s army in a [[rear guard]] action at the [[Battle of Amstetten]] on 5 November. A few days later, Davout's III Corps caught up with Merveldt's division at Mariazell. The Austrian soldiers, their morale shaken by continuous retreating, were routed after a brief struggle. On 12 November, Austria's capital [[Vienna]] fell to the French without a fight. The outcome of the war would be decided by the [[Battle of Austerlitz]] in early December. ||| ||| ||| +0 Battle of Marston Moor ||| Battle of Adwalton Moor ||| In [[Northern England]], the Royalists had the advantage in numbers and local support, except in parts of [[Lancashire]] and the [[West Riding of Yorkshire]], where the Parliamentarians had support from the clothing-manufacturing towns which 'naturally maligned the gentry'. On 30 June 1643, the Royalists commanded by the [[William Cavendish, 1st Duke of Newcastle|Marquess of Newcastle]] defeated the Parliamentarian army of [[Ferdinando Fairfax, 2nd Lord Fairfax of Cameron|Lord Fairfax]] at the [[Battle of Adwalton Moor]] near [[Bradford]]. Fairfax and his son, Sir [[Thomas Fairfax, 3rd Lord Fairfax of Cameron|Thomas Fairfax]], fled with their remaining forces to the port of [[Kingston upon Hull|Hull]], which was held for Parliament. ||| Background ||| The civil war in the north ||| +0 Battle of Marston Moor ||| Battle of Gainsborough ||| Newcastle sent some of his army south into [[Lincolnshire]], as part of a planned 'three-pronged' advance on London, but was forced to [[Siege of Hull (1643)|besiege Hull]] with most of his forces. The siege failed, as the Parliamentarian navy could supply and reinforce the port and the garrison flooded wide areas around the city, while the Royalist detachments sent into Lincolnshire were defeated at the [[Battle of Gainsborough]] and the [[Battle of Winceby]]. ||| Background ||| The civil war in the north ||| +0 Battle of Marston Moor ||| Bolton Massacre ||| Rupert set out from [[Shrewsbury]] with a small force on 16 May. His first moves were intended to gather reinforcements along the way to bolster his army, and secure Lancashire for the troops heading over from Ireland for the Royalist cause. He assumed the direction of a small Royalist army, based on [[Chester]] and commanded by [[John Byron, 1st Baron Byron|Lord John Byron]], raising his force to 2,000 horse and 6,000 foot. Having forced a crossing of the [[River Mersey]] at [[Stockport]], he [[Bolton Massacre|stormed Bolton]], allegedly killing 1,600 of the Parliamentarian defenders and citizens. ||| Background ||| Relief moves ||| +0 Battle of Marston Moor ||| First English Civil War ||| The '''Battle of Marston Moor''' was fought on 2 July 1644, during the [[First English Civil War]] of 1642–1646.{{efn|In some older sources this battle is described as taking place on '''Hessam-Moor'''.{{sfn|Carte|1739|p=56}} Hessay Moor and Marston Moor were then contiguous areas of common land.}} The combined forces of the English [[Roundhead|Parliamentarians]] under [[Ferdinando Fairfax, 2nd Lord Fairfax of Cameron|Lord Fairfax]] and the [[Edward Montagu, 2nd Earl of Manchester|Earl of Manchester]] and the Scottish [[Covenanters]] under the [[Alexander Leslie, 1st Earl of Leven|Earl of Leven]] defeated the [[Cavalier|Royalists]] commanded by [[Prince Rupert of the Rhine]] and the [[William Cavendish, 1st Duke of Newcastle|Marquess of Newcastle]]. ||| ||| ||| +0 Battle of Marston Moor ||| Siege of York ||| During the summer of 1644, the Covenanters and Parliamentarians had been [[Siege of York|besieging York]], which was defended by the Marquess of Newcastle. Rupert had gathered an army which marched through the northwest of England, gathering reinforcements and fresh recruits on the way, and across the [[Pennines]] to relieve the city. The convergence of these forces made the ensuing battle the largest of the civil wars. ||| ||| ||| +0 Battle of Masan ||| Battle of Haman ||| An initial UN counteroffensive out of Masan proved ineffective in stopping the North Koreans from advancing. In the subsequent fight, the 35th Infantry was able to repel the North Koreans at the [[Battle of Nam River]] and were highly regarded for these actions. However, the 24th Infantry performed very poorly at the battles of [[Battle of Battle Mountain|Blue Mountain]] and [[Battle of Haman|Haman]], forcing the 25th Division to muster reserves to counter the North Korean gains against the 24th. ||| ||| ||| +0 Battle of Masan ||| Battle of Nam River ||| An initial UN counteroffensive out of Masan proved ineffective in stopping the North Koreans from advancing. In the subsequent fight, the 35th Infantry was able to repel the North Koreans at the [[Battle of Nam River]] and were highly regarded for these actions. However, the 24th Infantry performed very poorly at the battles of [[Battle of Battle Mountain|Blue Mountain]] and [[Battle of Haman|Haman]], forcing the 25th Division to muster reserves to counter the North Korean gains against the 24th. ||| ||| ||| +0 Battle of Masan ||| Battle of Taejon ||| The 24th Infantry Division was the first US unit sent into Korea with the mission to take the initial 'shock' of North Korean advances, delaying much larger North Korean units to buy time to allow reinforcements to arrive. The division made a final stand in the [[Battle of Taejon]], where it was nearly destroyed, but delayed North Korean forces until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of Masan ||| World War II ||| Following the 25 June 1950 invasion of the [[Republic of Korea]] (South Korea) by its northern neighbor, the [[Democratic People's Republic of Korea]] (North Korea), the [[United Nations]] decided to commit troops to the conflict on behalf of South Korea. The United States, a member of the UN, subsequently committed ground forces to the Korean peninsula with the goal of fighting back the North Korean invasion and preventing South Korea from collapsing. However, US forces in the [[Far East]] had been steadily decreasing since the end of [[World War II]], five years earlier, and at the time the closest forces were the 24th Infantry Division, headquartered in [[Japan]]. The division was understrength, and most of its equipment was antiquated due to reductions in military spending. Regardless, the 24th Division was ordered to South Korea. ||| Background ||| Outbreak of war ||| +0 Battle of Mathias Point ||| Battle of Fort Sumter ||| On April 15, 1861, the day after the small U.S. Army garrison surrendered [[Battle of Fort Sumter|Fort Sumter]] in the harbor [[Charleston, South Carolina]] to Confederate forces, [[President of the United States|President]] [[Abraham Lincoln]] called for 75,000 volunteers to reclaim federal property and to suppress the rebellion begun by the seven [[Deep South]] [[Slave and free states|slave states]] which had formed the [[Confederate States of America]]. Four [[Upper South]] states which also permitted slavery, including Virginia, refused to furnish troops for this purpose and began the process of [[secession]] from the Union. ||| Background ||| ||| +0 Battle of Mathias Point ||| Peninsula Campaign ||| The Confederates continued to hold their position and operate the battery on Mathias Point, which they completed placing on the point on the day after the battle. They were not attacked by land forces and did not abandon the location and nearby batteries until Confederate forces withdrew from Manassas and other [[northern Virginia]] locations on March 9, 1862 in order to protect Richmond from Union forces which were being deployed for the [[Peninsula Campaign]]. ||| Aftermath ||| ||| +0 Battle of Mathias Point ||| Union blockade ||| The '''Battle of Mathias Point''', Virginia (June 27, 1861) was an early naval action of the [[American Civil War]] in connection with the [[Union blockade]] and the corresponding effort by the [[Confederate States Army|Confederates]] to deny use of the [[Potomac River|Potomac]] to the enemy. ||| ||| ||| +0 Battle of Maya ||| Battle of Roncesvalles (1813) ||| At 20:00 the British, having learned of the [[Battle of Roncesvalles (1813)|defeat at Roncesvalles]], were obliged to retreat southwards towards Pamplona. ||| The battle ||| ||| +0 Battle of Medina de Rioseco ||| Dos de Mayo Uprising ||| Recent French operations in the region had come far short of [[Napoleon I of France|Napoleon's]] expectations. The Galician and Biscayan provinces were ideally suited as a base for resistance against France: remote and mountainous; out of the French Army's immediate reach yet flanking its long communications to [[Dos de Mayo Uprising|occupied Madrid]]; its coastline largely secured by the allied [[Royal Navy]], which disgorged supplies and materiel. In June, [[Jean-Baptiste Bessières|Marshal Bessières]]' [[flying column]], marching on [[Santander, Spain|Santander]] in an attempt to secure French communications in [[Galicia (Spain)|Galicia]] and guard the coast against a possible [[United Kingdom of Great Britain and Ireland|British]] landing, had been forced back by popular resistance. Stung by these and other reverses, Napoleon committed more troops and formulated a new strategy. In July he ordered Bessières to renew his western offensive. ||| Situation in northern Spain ||| ||| +0 Battle of Megiddo (1918) ||| Arab Revolt ||| The Battle of [[Tel Megiddo|Megiddo]] was the final Allied offensive of the [[Sinai and Palestine Campaign]] of the [[First World War]]. The contending forces were the [[Allies of World War I|Allied]] [[Egyptian Expeditionary Force]], of three [[corps]] including one of mounted troops, and the [[Ottoman Empire|Ottoman]] [[Yildirim Army Group]] which numbered three [[Field army|armies]], each the strength of barely an Allied corps. The series of battles took place in what was then the central and northern parts of Ottoman [[Palestine (region)|Palestine]] and parts of present-day [[Israel]], [[Syria]] and [[Jordan]]. After forces of the [[Arab Revolt]] attacked the Ottoman lines of communication, distracting the Ottomans, British and [[British Indian Army|Indian]] infantry [[Division (military unit)|division]]s attacked and broke through the Ottoman defensive lines in the sector adjacent to the coast in the set-piece [[Battle of Sharon (1918)|Battle of Sharon]]. The [[Desert Mounted Corps]] rode through the breach and almost [[encirclement|encircled]] the Ottoman [[Eighth Army (Ottoman Empire)|Eighth]] and [[Seventh Army (Ottoman Empire)|Seventh Armies]] still fighting in the Judean Hills. The subsidiary [[Battle of Nablus (1918)|Battle of Nablus]] was fought virtually simultaneously in the Judean Hills in front of [[Nablus]] and [[Third Transjordan attack (1918)|at crossings]] of the [[Jordan River]]. The Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was subsequently attacked in the Hills of [[Moab]] at [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 Battle of Megiddo (1918) ||| Battle of Abu Tellul ||| There was a comparative lull in activity while Allenby's divisions were reorganised and retrained, but some local attacks were made, especially in the Judean Hills. On 19 July, the Ottomans and Germans mounted a brief attack at [[Battle of Abu Tellul|Abu Tellul]] near the Jordan, but were defeated by [[Australian Light Horse]] regiments with heavy casualties to the German 11th Reserve [[jäger (military)|Jäger]] battalion, which was subsequently withdrawn from Palestine. ||| Background ||| Allied reorganisation ||| +0 Battle of Megiddo (1918) ||| Battle of Aqaba ||| In 1916, the [[Arab Revolt]] against Ottoman rule had broken out in the [[Hejaz]], led by [[Hussein bin Ali, Sharif of Mecca]]. Although the Ottomans defended [[Medina]], at the end of the [[Hejaz Railway]] against them, part of the [[Sharifian Army|Sherifian Army]], led by Hussein's son, the [[Faisal I of Iraq|Emir Feisal]], and British liaison officer [[T. E. Lawrence]], extended the revolt northwards. Finally, Lawrence and bedouin tribesmen won the [[Battle of Aqaba]] in July 1917. The capture of the port of [[Aqaba]] allowed the Allies to supply Feisal's forces and deprived the Ottomans of a position behind the right flank of the EEF. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Battle of Beersheba (1917) ||| Secrecy was an essential part, as it had been at the [[Battle of Beersheba (1917)|Battle of Beersheba]] the preceding year. It was feared that the Ottomans could thwart the preparations for the attack by making a withdrawal in the coastal sector. ||| Prelude ||| Allenby's plan ||| Entente deceptions +0 Battle of Megiddo (1918) ||| Battle of Magdhaba ||| The [[Allies of World War I|Entente Powers]] had declared war on the Ottoman Empire in November 1914. In early 1915 and in August 1916 the Ottomans, with German commanders, aid and encouragement, had attacked the [[Suez Canal]], a vital link between Britain and India, Australia and New Zealand. Under General [[Archibald Murray]], the British [[Egyptian Expeditionary Force]] (EEF) stopped the Ottoman army at the [[Battle of Romani]] and drove them back to [[Battle of Magdhaba|Magdhaba]] and across the Sinai to [[Battle of Rafa|Rafa]] to reoccupy Egyptian territory and secure the safety of the Suez Canal. Having constructed a railway and water pipeline across the desert, Murray then attacked southern Palestine. In the [[First Battle of Gaza]] and the [[Second Battle of Gaza]] in March and April 1917, the British attacks were defeated. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Battle of Nablus ||| The Battle of [[Tel Megiddo|Megiddo]] was the final Allied offensive of the [[Sinai and Palestine Campaign]] of the [[First World War]]. The contending forces were the [[Allies of World War I|Allied]] [[Egyptian Expeditionary Force]], of three [[corps]] including one of mounted troops, and the [[Ottoman Empire|Ottoman]] [[Yildirim Army Group]] which numbered three [[Field army|armies]], each the strength of barely an Allied corps. The series of battles took place in what was then the central and northern parts of Ottoman [[Palestine (region)|Palestine]] and parts of present-day [[Israel]], [[Syria]] and [[Jordan]]. After forces of the [[Arab Revolt]] attacked the Ottoman lines of communication, distracting the Ottomans, British and [[British Indian Army|Indian]] infantry [[Division (military unit)|division]]s attacked and broke through the Ottoman defensive lines in the sector adjacent to the coast in the set-piece [[Battle of Sharon (1918)|Battle of Sharon]]. The [[Desert Mounted Corps]] rode through the breach and almost [[encirclement|encircled]] the Ottoman [[Eighth Army (Ottoman Empire)|Eighth]] and [[Seventh Army (Ottoman Empire)|Seventh Armies]] still fighting in the Judean Hills. The subsidiary [[Battle of Nablus (1918)|Battle of Nablus]] was fought virtually simultaneously in the Judean Hills in front of [[Nablus]] and [[Third Transjordan attack (1918)|at crossings]] of the [[Jordan River]]. The Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was subsequently attacked in the Hills of [[Moab]] at [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 Battle of Megiddo (1918) ||| Battle of Nablus (1918) ||| The Battle of [[Tel Megiddo|Megiddo]] was the final Allied offensive of the [[Sinai and Palestine Campaign]] of the [[First World War]]. The contending forces were the [[Allies of World War I|Allied]] [[Egyptian Expeditionary Force]], of three [[corps]] including one of mounted troops, and the [[Ottoman Empire|Ottoman]] [[Yildirim Army Group]] which numbered three [[Field army|armies]], each the strength of barely an Allied corps. The series of battles took place in what was then the central and northern parts of Ottoman [[Palestine (region)|Palestine]] and parts of present-day [[Israel]], [[Syria]] and [[Jordan]]. After forces of the [[Arab Revolt]] attacked the Ottoman lines of communication, distracting the Ottomans, British and [[British Indian Army|Indian]] infantry [[Division (military unit)|division]]s attacked and broke through the Ottoman defensive lines in the sector adjacent to the coast in the set-piece [[Battle of Sharon (1918)|Battle of Sharon]]. The [[Desert Mounted Corps]] rode through the breach and almost [[encirclement|encircled]] the Ottoman [[Eighth Army (Ottoman Empire)|Eighth]] and [[Seventh Army (Ottoman Empire)|Seventh Armies]] still fighting in the Judean Hills. The subsidiary [[Battle of Nablus (1918)|Battle of Nablus]] was fought virtually simultaneously in the Judean Hills in front of [[Nablus]] and [[Third Transjordan attack (1918)|at crossings]] of the [[Jordan River]]. The Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was subsequently attacked in the Hills of [[Moab]] at [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 Battle of Megiddo (1918) ||| Battle of Romani ||| The [[Allies of World War I|Entente Powers]] had declared war on the Ottoman Empire in November 1914. In early 1915 and in August 1916 the Ottomans, with German commanders, aid and encouragement, had attacked the [[Suez Canal]], a vital link between Britain and India, Australia and New Zealand. Under General [[Archibald Murray]], the British [[Egyptian Expeditionary Force]] (EEF) stopped the Ottoman army at the [[Battle of Romani]] and drove them back to [[Battle of Magdhaba|Magdhaba]] and across the Sinai to [[Battle of Rafa|Rafa]] to reoccupy Egyptian territory and secure the safety of the Suez Canal. Having constructed a railway and water pipeline across the desert, Murray then attacked southern Palestine. In the [[First Battle of Gaza]] and the [[Second Battle of Gaza]] in March and April 1917, the British attacks were defeated. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Capture of Afulah and Beisan ||| The '''Battle of Megiddo''' ({{lang-tr|{{italics correction|Megiddo Muharebesi}}}}) also known in Turkish as the ''Nablus Hezimeti'' ('Rout of Nablus'), the ''Nablus Yarması'' ('Breakthrough at Nablus') was fought between 19 and 25 September 1918, on the [[Plain of Sharon]], in front of [[Battle of Tulkarm (1918)|Tulkarm]], [[Battle of Tabsor (1918)|Tabsor]] and [[Battle of Arara|Arara]] in the [[Judean Hills]] as well as on the [[Jezreel Valley|Esdralon Plain]] at [[Battle of Nazareth (1918)|Nazareth]], [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin (1918)|Jenin]] and [[Battle of Samakh (1918)|Samakh]]. ||| ||| ||| +0 Battle of Megiddo (1918) ||| First Transjordan attack on Amman ||| However, Allenby maintained pressure on the Ottoman armies by twice sending mounted and infantry divisions across the [[Jordan River|Jordan]]. The [[First Transjordan attack on Amman|first attack]] briefly cut the Hejaz Railway near [[Amman]] before the attackers retreated. In the [[Second Transjordan attack on Shunet Nimrin and Es Salt|second attack]], Allenby's troops captured [[Es Salt]] on the road to Amman, but fell back when their communications were threatened. Despite these failures, Allenby had established two bridgeheads across the Jordan north of the [[Dead Sea]] which were retained during the ensuing occupation of the southern [[Occupation of the Jordan Valley (1918)|Jordan Valley]]. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Sinai and Palestine Campaign ||| The Battle of [[Tel Megiddo|Megiddo]] was the final Allied offensive of the [[Sinai and Palestine Campaign]] of the [[First World War]]. The contending forces were the [[Allies of World War I|Allied]] [[Egyptian Expeditionary Force]], of three [[corps]] including one of mounted troops, and the [[Ottoman Empire|Ottoman]] [[Yildirim Army Group]] which numbered three [[Field army|armies]], each the strength of barely an Allied corps. The series of battles took place in what was then the central and northern parts of Ottoman [[Palestine (region)|Palestine]] and parts of present-day [[Israel]], [[Syria]] and [[Jordan]]. After forces of the [[Arab Revolt]] attacked the Ottoman lines of communication, distracting the Ottomans, British and [[British Indian Army|Indian]] infantry [[Division (military unit)|division]]s attacked and broke through the Ottoman defensive lines in the sector adjacent to the coast in the set-piece [[Battle of Sharon (1918)|Battle of Sharon]]. The [[Desert Mounted Corps]] rode through the breach and almost [[encirclement|encircled]] the Ottoman [[Eighth Army (Ottoman Empire)|Eighth]] and [[Seventh Army (Ottoman Empire)|Seventh Armies]] still fighting in the Judean Hills. The subsidiary [[Battle of Nablus (1918)|Battle of Nablus]] was fought virtually simultaneously in the Judean Hills in front of [[Nablus]] and [[Third Transjordan attack (1918)|at crossings]] of the [[Jordan River]]. The Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was subsequently attacked in the Hills of [[Moab]] at [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 Battle of Megiddo (1918) ||| Spring Offensive ||| After a pause of several weeks caused by bad weather and the need to repair his lines of communication, Allenby advanced eastward to [[Capture of Jericho (1918)|capture Jericho]] in February 1918. However, in March, the Germans launched their [[Spring Offensive]] on the [[Western Front (World War I)|Western Front]], intending to defeat the Allied armies in France and Belgium. Allenby was ordered to send reinforcements (two complete divisions, another 24 infantry [[battalion]]s from other divisions and nine dismounted [[yeomanry]] [[regiment]]s) to the Western Front. ||| Background ||| Allied situation ||| +0 Battle of Megiddo (1918) ||| Third Battle of Gaza ||| General Edmund Allenby had been appointed to succeed Murray in command of the EEF, and was encouraged to renew the offensive. After receiving reinforcements, he broke through the Ottoman defences in the [[Third Battle of Gaza]] and defeated an Ottoman attempt to make a stand to the north at the [[Battle of Mughar Ridge]]. Despite Ottoman counter-attacks, the EEF [[Battle of Jerusalem (1917)|captured Jerusalem]] in the second week in December 1917. ||| Background ||| Allied situation ||| +0 Battle of Meiktila and Mandalay ||| Battle of Imphal ||| In 1944, the Japanese had sustained several defeats in the mountainous frontier regions of Burma. In particular, at the [[Battle of Imphal]] and [[Battle of Kohima]], the [[Japanese Fifteenth Army]] had suffered disastrous losses, mainly resulting from disease and starvation. ||| The Situation in 1945 ||| The Japanese situation ||| +0 Battle of Meiktila and Mandalay ||| Battle of Kohima ||| In 1944, the Japanese had sustained several defeats in the mountainous frontier regions of Burma. In particular, at the [[Battle of Imphal]] and [[Battle of Kohima]], the [[Japanese Fifteenth Army]] had suffered disastrous losses, mainly resulting from disease and starvation. ||| The Situation in 1945 ||| The Japanese situation ||| +0 Battle of Memel ||| Operation Bagration ||| The Soviet [[Belorussian Offensive]] of June–August 1944 (commonly known as [[Operation Bagration]]) had seen the German [[Army Group Centre]] nearly destroyed and driven from what is now [[Belarus]], most of what is now [[Lithuania]] and much of [[Poland]]. During August and September of that year, a series of German counter-offensives - [[Operation Doppelkopf|Operations Doppelkopf and Casar]] - succeeded in stalling the Soviet advance and maintaining the connection between the German Army Groups Centre and North; however, ''[[Stavka]]'' made preparations for an attack by the [[1st Baltic Front]] against the positions of the Third Panzer Army and thence towards [[Klaipėda|Memel]], splitting the two Army Groups. ||| Prelude ||| ||| +0 Battle of Memel ||| Operation Doppelkopf ||| The Soviet [[Belorussian Offensive]] of June–August 1944 (commonly known as [[Operation Bagration]]) had seen the German [[Army Group Centre]] nearly destroyed and driven from what is now [[Belarus]], most of what is now [[Lithuania]] and much of [[Poland]]. During August and September of that year, a series of German counter-offensives - [[Operation Doppelkopf|Operations Doppelkopf and Casar]] - succeeded in stalling the Soviet advance and maintaining the connection between the German Army Groups Centre and North; however, ''[[Stavka]]'' made preparations for an attack by the [[1st Baltic Front]] against the positions of the Third Panzer Army and thence towards [[Klaipėda|Memel]], splitting the two Army Groups. ||| Prelude ||| ||| +0 Battle of Menin (1793) ||| Battle of Hondschoote (1793) ||| After his victory in the [[Battle of Hondschoote (1793)|Battle of Hondschoote]], the French commander [[Jean Nicolas Houchard]] decided to fall on the Dutch forces defending Menen. About 27,000 French troops advanced on Menen from two directions - northward from [[Lille]] toward Menen and eastward along the north bank of the [[Leie|Leie (Lys)]] River toward Wervik and Menen. The Dutch defenders held their own on the 12th. However, on the 13th the French won a significant victory, forcing the Dutch to withdraw to [[Deinze]]. Two days later, the French were beaten by Beaulieu in the [[Battle of Courtrai (1793)|Battle of Courtrai]] and abandoned Menen. Despite his recent successes, Houchard was charged with treason and executed. ||| ||| ||| +0 Battle of Menin (1793) ||| Flanders Campaign ||| The '''Battle of Menin''', or of '''[[Wervik]] and [[Menen]]''' was fought on 12 and 13 September 1793 between 30,000 men of the French ''[[Army of the North (France)|Army of the North]]'' commanded by [[Jean Nicolas Houchard]], and 13,000 Coalition troops: the ''veldleger'' (mobile army) of the [[Dutch States Army]], commanded by the [[William I of the Netherlands|William, Hereditary Prince of Orange]] and his brother [[Prince Frederick of Orange-Nassau]], and a few squadrons of Austrian cavalry under [[Pál Kray]], seconded by [[Johann Peter Beaulieu]]. The great superiority in numbers being on the French side the battle ended in a victory for France, with the Dutch army suffering heavy losses. Among the casualties was Prince Frederick, who was wounded in the shoulder at Wervik, an injury from which he never fully recovered. The combat occurred during the [[Flanders Campaign]] of the [[War of the First Coalition]]. Menen is a city in Belgium located on the French border about {{convert|100|km|mi|0}} west of [[Brussels]]. ||| ||| ||| +0 Battle of Merdjayoun ||| Battle of Damascus (1941) ||| The [[2/3rd Battalion (Australia)|2/3rd Battalion]] of the 6th Division was part of the column sent to relieve elements of the [[5th Indian Infantry Brigade]] Group which had been cut off and surrounded in Mezze, a western neighborhood of [[Damascus]], after the [[Battle of Damascus (1941)|Battle of Damascus]]. They gallantly stormed the high ground near Mezze but in spite of their efforts the column were only able to fight their way into Mezze a few hours after the Allied defenders, out of ammunition and without food for the previous 50 hours, had been overrun. ||| ||| ||| +0 Battle of Mesamávida ||| Chilean War of Independence ||| The '''Battle of Mesamávida '''was a [[Royalist (Spanish American Independence)|Royalist]] victory during the [[Guerra a muerte]] campaign of the [[Chilean War of Independence]]. It was fought on 23 February 1819. ||| ||| ||| +0 Battle of Messines (1917) ||| Battle of Passchendaele ||| The Second Army had five corps, of which three conducted the attack and two remained on the northern flank, not engaged in the main operation; the XIV Corps was available in General Headquarters reserve (GHQ reserve). The 4th Army divisions of {{lang|de|''Gruppe Wijtschate''}} (Group Wytschaete) held the ridge, which were later reinforced by a division from {{lang|de|''Gruppe Ypern''}}.{{efn|British forces engaged were II Anzac Corps with the 3rd Australian Division, New Zealand Division, 25th and 4th Australian divisions in corps reserve, IX Corps with the 36th, 16th and 19th divisions and the 11th Division in corps reserve, X Corps with 41st, 47th and 23rd Divisions and 24th Division in corps reserve. XIV Corps was in GHQ reserve with the Guards, 1st, 8th and 32nd Divisions and the 30th, 55th, 39th and 38th divisions of II Corps and VIII Corps, which were not involved in the main offensive but guarded the northern flank and made probing attacks on 8 June. {{lang|de|''Gruppe Wijtschate''}} (IX Reserve Corps) held the ridge with the 204th, 35th, 2nd, 3rd Bavarian (relieving the 40th Division when the British attack began) and 4th Bavarian divisions, supported by the 7th Division and 1st Guard Reserve Division as {{lang|de|''Eingreif''}} (counter-attack) divisions. The [[24th Saxon Division]] had been relieved on 5 June and was rushed back when the British attack began, the 11th Division in {{lang|de|''Gruppe Ypern''}} reserve arrived on 8 June.{{sfn|Edmonds|1948|p=85}}}} The battle began with the detonation of a [[Mines in the Battle of Messines (1917)|series of mines]] beneath German lines, which created {{nowrap|19}} large craters and devastated the German front line defences. This was followed by a [[creeping barrage]] {{convert|700|yd|m}} deep, covering the British troops as they secured the ridge, with support from tanks, cavalry patrols and aircraft. The effectiveness of the British [[Mining (military)|mines]], barrages and bombardments was improved by advances in artillery survey, flash-spotting and centralised control of artillery from the Second Army headquarters. British attacks from {{nowrap|8–14 June}} advanced the front line beyond the former German {{lang|de|''Sehnen''}} (Oosttaverne) line. The Battle of Messines was a prelude to the much larger [[Battle of Passchendaele|Third Battle of Ypres]] campaign, the preliminary bombardment for which began on 11 July 1917. ||| ||| ||| +0 Battle of Metz ||| Normandy landings ||| The '''Battle of Metz''' was a battle fought during [[World War II]] at the city of [[Metz]], France, from late September 1944 through mid-December between the [[United States Army]] and the [[German Army (Wehrmacht)|German Army]]. Following the [[Operation Cobra]] Allied breakout after the [[Normandy landings]] the U.S. Third Army attacked the heavily fortified city. {{cite video ||| ||| ||| +0 Battle of Metz ||| Operation Cobra ||| The '''Battle of Metz''' was a battle fought during [[World War II]] at the city of [[Metz]], France, from late September 1944 through mid-December between the [[United States Army]] and the [[German Army (Wehrmacht)|German Army]]. Following the [[Operation Cobra]] Allied breakout after the [[Normandy landings]] the U.S. Third Army attacked the heavily fortified city. {{cite video ||| ||| ||| +0 Battle of Meung-sur-Loire ||| Battle of Patay ||| :5. The [[Battle of Patay]]. ||| Background ||| ||| +0 Battle of Midway ||| Indian Ocean raid ||| Thus, [[Fifth Carrier Division|Carrier Division 5]], consisting of the two most advanced aircraft carriers of the ''[[Kido Butai]]''{{refn|The ''[[Kido Butai]]'' (機動部隊 lit. Mobile Unit/Force) was the Combined Fleet's tactical designation for its carrier battle group. This title was used as a term of convenience and was not a formal name for the organization. One month after Midway, the ''Kido Butai'' was disbanded and its surviving ships were transferred to [[Third Fleet (Imperial Japanese Navy)|Third Fleet]].|group=nb}} would not be available, which meant that Admiral Nagumo had to rely on four fleet carriers: {{Ship|Japanese aircraft carrier|Kaga||2}} and {{Ship|Japanese aircraft carrier|Akagi||2}} forming [[First Carrier Division|Carrier Division 1]] and {{Ship|Japanese aircraft carrier|Hiryū||2}} and {{Ship|Japanese aircraft carrier|Sōryū||2}} as [[Second Carrier Division|Carrier Division 2]]. At least part of this was due to fatigue; Japanese carriers had been constantly on operations since 7 December 1941, including raids on [[Bombing of Darwin (February 1942)|Darwin]] and [[Indian Ocean raid|Colombo]]. ||| Prelude ||| Japanese shortcomings ||| +0 Battle of Mileto ||| French Revolution ||| From their Sicilian base, the Bourbons and the British then attempted to foment a [[brigandage|brigand]] revolt against the new French-ruled Kingdom of Naples. These stirrings of revolt made life difficult for the French rulers and triggered a vicious crackdown, mainly led by captain [[Charles Antoine Manhès]], formerly an aide de camp to Murat. Ferdinand and his wife [[Maria Carolina of Austria]] continued their claims to the Kingdom of Naples, particularly on Maria's part - she hated France for guillotining her sister [[Marie Antoinette]] during the [[French Revolution]]. It was Maria who chose [[Louis of Hesse-Philippsthal]] as commander of the Bourbon army. ||| Preparations ||| ||| +0 Battle of Mileto ||| French Revolutionary Wars ||| It was later realised that the main reason for the Bourbon rout had been the inferior structure of their army, which was still organised on feudal lines - such an army was capable of quelling internal rebellions but inadequate for a pitched battle in which it faced an organised and experienced army with veterans of several previous victories in the [[French Revolutionary Wars]] and [[Napoleonic Wars]], especially without the land forces of its British ally (which had been present at the previous Anglo-Bourbon victory at [[Battle of Maida|Maida]] on 4 July 1806). The original Bourbon plan of reconquering Naples had also not been implemented at the time of the battle. That plan had hinged on dividing the Bourbon force into five corps which would envelop the French forces and at the same time support a general uprising by the local population, combining these two prongs to annihilate the French. Varied political reasons meant that the plan did not become a reality, leading to the defeat at Mileto. ||| Course ||| ||| +0 Battle of Mine Run ||| Battle of Chancellorsville ||| Unlike Maj. Gen. [[Joseph Hooker]]'s plan in the [[Battle of Chancellorsville|Chancellorsville Campaign]] earlier that year on essentially the same ground, Meade planned no diversions; he intended a lightning strike with his entire army. The army marched on November 25 and got off to a good start, aided by fog on Clark's Mountain, which screened his movements from Confederate lookouts. However, Maj. Gen. [[William H. French]]'s [[III Corps (Union Army)|III Corps]] got bogged down in fording the river at Jacob's Ford, causing traffic jams when they moved their artillery to Germanna Ford, where other units were attempting to cross. ||| Background ||| ||| +0 Battle of Mobile Bay ||| Siege of Fort Gaines ||| On August 3, 1864, in preparation for the [[Siege of Fort Gaines]], 1,500 men were landed approximately 15 miles west of the fort while under protection from one of Farragut's flotillas. The troops consisted of infantry detachments from the [[77th Illinois Volunteer Infantry Regiment]], [[34th Iowa Volunteer Infantry Regiment]], [[96th Ohio Infantry]], and 3rd Maryland Volunteer Cavalry Regiment, with General [[Gordon Granger]] as commander. The troops then marched toward Fort Gaines. On the evening of August 4, they entrenched and formed their skirmish line less than a half mile away. ||| The attackers ||| Union Army ||| +0 Battle of Modder River ||| Battle of Belmont ||| During November, Methuen's force advanced north along the Western Cape Railway. They fought and won two engagements against Boers from the Orange Free State under General Prinsloo at the [[Battle of Belmont (1899)|Battle of Belmont]] and at Graspan. ||| Situation in November 1899 ||| ||| +0 Battle of Modder River ||| Battle of Magersfontein ||| The '''Battle of Modder River''' (known in [[Afrikaans]] as ''Slag van die Twee Riviere'', which translates as 'Battle of the two rivers') was an engagement in the [[Second Boer War|Boer War]], fought at [[Modder River, Northern Cape|Modder River]], on 28 November 1899. A [[British Empire|British]] column under [[Paul Sanford Methuen, 3rd Baron Methuen|Lord Methuen]], that was attempting to relieve the [[Siege of Kimberley|besieged town of Kimberley]], forced Boers under General [[Piet Cronje]] to retreat to [[Battle of Magersfontein|Magersfontein]], but suffered heavy casualties themselves. ||| ||| ||| +0 Battle of Modena (1799) ||| Battle of Cassano (1799) ||| In the battles of [[Battle of Magnano|Magnano]] and [[Battle of Cassano (1799)|Cassano]], the Austrians and allied [[Russian Empire]] forces swept the French from much of northern Italy in April 1799. MacDonald collected the French occupying forces in south and central Italy into an army and marched north to retrieve the situation. Bursting out of the [[Apennine Mountains]], the French mauled Hohenzollern's division at Modena. MacDonald swung west to fight the Coalition forces. The next action would be the [[Battle of Trebbia (1799)|Battle of Trebbia]] from 17 to 19 June. ||| ||| ||| +0 Battle of Mogadishu (1993) ||| Second Battle of Fallujah ||| The exact number of Somali casualties is unknown, but estimates range from several hundred to over a thousand militiamen and others killed, but the toll was actually 18 American soldiers dead and 73 wounded. Two days later, a 19th soldier, Delta operator [[Sergeant First Class|SFC]] Matt Rierson, was killed in a [[Mortar (weapon)|mortar]] attack and it was 3 months before the rescue of the final Naval Seal HM2 Ricky Foster. Among U.N. forces, one Malaysian and one Pakistani died; seven Malaysians and two Pakistanis were wounded. At the time, the battle was the bloodiest involving U.S. troops since the [[Vietnam War]] and remained so until the [[Second Battle of Fallujah]] in 2004. ||| Summary ||| ||| +0 Battle of Mohács (1687) ||| Battle of Vienna ||| The [[Great Turkish War]] began in July 1683 with an attack on Vienna by the Ottoman army. The siege was broken by the [[Battle of Vienna]] on 12 September 1683, won by the combined forces of the [[Holy Roman Empire|Holy Roman Empire of the German Nations]] and the [[Polish–Lithuanian Commonwealth]], under the overall command of the King of Poland, [[John III Sobieski]], who led the Polish forces. From September 1683 the initiative passed to the imperial troops. In the following years, the Imperial Habsburg armies under Charles of Lorraine drove the Osmans back, conquering from them many fortresses (such as [[Esztergom]], [[Vác]], [[Pest, Hungary|Pest]]). After the [[Battle of Buda (1686)|Battle of Buda]] they laid siege to and took over the former Hungarian capital of Buda. At the end of 1686, the Ottomans made peace overtures; however, the Imperial Habsburgs now saw a chance to conquer the whole of Hungary and the peace overtures were rejected. ||| Background ||| ||| +0 Battle of Monmouth ||| Battle of Rhode Island ||| After the battle the British continued their march eastwards until they reached [[Sandy Hook]]. From there they were taken by boat to New York City where they began preparing the city's defenses in expectation of an attack. D'Estaing's fleet arrived just too late, narrowly missing a chance to trap Clinton's army at Sandy Hook. Plans to attack New York were abandoned, and it remained the principal base for British forces until 1783. Instead D'Estaing sailed north to participate in a [[Battle of Rhode Island|Franco-American assault]] on the British garrison at [[Newport, Rhode Island]], which ended in failure. ||| Aftermath ||| ||| +0 Battle of Mont Saint-Quentin ||| Hindenburg Line ||| Australians of the Second Division crossed to the north bank of the Somme River on the evening of 30 August. At 5 am on 31 August 1918, supported by artillery, two significantly undermanned Australian battalions, charged up Mont St Quentin ordered by Monash to 'scream like bushrangers'. The Germans quickly surrendered and the Australians continued to the main German trench-line. In the rear, other Australians crossed the Somme by a bridge which Australian engineers had saved and repaired. The Australians were unable to hold their gains on Mont St Quentin and German reserves regained the crest. However, the Australians held on just below the summit and next day it was recaptured and firmly held. On that day also, 1 September 1918, Australian forces broke into Péronne and took most of the town. The next day it completely fell into Australian hands. In three days the Australians endured 3000 casualties but ensured a general German withdrawal eastwards back to the [[Hindenburg Line]]. ||| Battle ||| ||| +0 Battle of Montcornet ||| Battle of Belgium ||| On 10 May 1940, the [[Third Reich]] had launched a vast offensive against the [[Battle of the Netherlands|Netherlands]], [[Battle of Belgium|Belgium]] and France. After their breakthrough at Sedan on 13 May, the Germans had driven the French troops to a hasty retreat. ||| Context ||| ||| +0 Battle of Montcornet ||| Battle of France ||| The '''Battle of Montcornet''', on 17 May 1940, was an engagement of the [[Battle of France]]. The French [[4e Division cuirassée]], under Colonel [[Charles de Gaulle|De Gaulle]], attacked the strategic village of [[Montcornet, Aisne|Montcornet]], then held by the Germans. The French successfully drove off the Germans, but had to retreat later due to lack of support and to the intervention of the ''[[Luftwaffe]]''. ||| ||| ||| +0 Battle of Montcornet ||| Battle of the Netherlands ||| On 10 May 1940, the [[Third Reich]] had launched a vast offensive against the [[Battle of the Netherlands|Netherlands]], [[Battle of Belgium|Belgium]] and France. After their breakthrough at Sedan on 13 May, the Germans had driven the French troops to a hasty retreat. ||| Context ||| ||| +0 Battle of Monte Cassino ||| Battle of Ortona ||| Although in the east the German defensive line had been breached on Eighth Army's Adriatic front and [[Battle of Ortona|Ortona was captured]], the advance had ground to a halt with the onset of winter blizzards at the end of December, making close air support and movement in the jagged terrain impossible. The route to Rome from the east using Route 5 was thus excluded as a viable option leaving the routes from Naples to Rome, highways 6 and 7, as the only possibilities; highway 7 (the old Roman [[Appian Way]]) followed along the west coast but south of Rome ran into the [[Pontine Marshes]], which the Germans had flooded. ||| Background ||| ||| +0 Battle of Montgomery's Tavern ||| Lower Canada Rebellion ||| When the [[Lower Canada Rebellion]] broke out in the Fall of 1837, Sir [[Francis Bond Head]] sent the British troops stationed in [[Toronto]] (formerly [[York, Upper Canada|York]]) to help suppress it. With the regular troops gone, [[William Lyon Mackenzie]] and his followers seized a Toronto armoury and organized an armed march down Yonge Street, beginning at Montgomery's Tavern (on Yonge St just north of Eglinton Avenue – the present-day site of Postal Station K) on December 4, 1837. ||| Prelude ||| ||| +0 Battle of Moon Sound ||| Operation Albion ||| It was the Germans' intention to destroy the Russian Army and occupy the West Estonian Archipelago (Moonsund Archipelago). The Germans captured the archipelago, with its main islands of [[Saaremaa]] (Ösel), [[Hiiumaa]] (Dagö), and [[Muhu]] (Moon) during the [[Operation Albion]] in September 1917. This left a Russian squadron consisting of the old [[Russo-Japanese War]]-era [[pre-dreadnought battleship]]s Grazhdanin ({{Ship|Russian battleship|Tsesarevich||2}}), and {{Ship|Russian battleship|Slava||2}}, together with cruisers and destroyers, stranded in the [[Gulf of Riga]]. The Russian fleet escaped on 17 October 1917 by way of the Suur Strait separating the island of Muhu from the Estonian mainland. ||| Background ||| ||| +0 Battle of Moon Sound ||| Russo-Japanese War ||| It was the Germans' intention to destroy the Russian Army and occupy the West Estonian Archipelago (Moonsund Archipelago). The Germans captured the archipelago, with its main islands of [[Saaremaa]] (Ösel), [[Hiiumaa]] (Dagö), and [[Muhu]] (Moon) during the [[Operation Albion]] in September 1917. This left a Russian squadron consisting of the old [[Russo-Japanese War]]-era [[pre-dreadnought battleship]]s Grazhdanin ({{Ship|Russian battleship|Tsesarevich||2}}), and {{Ship|Russian battleship|Slava||2}}, together with cruisers and destroyers, stranded in the [[Gulf of Riga]]. The Russian fleet escaped on 17 October 1917 by way of the Suur Strait separating the island of Muhu from the Estonian mainland. ||| Background ||| ||| +0 Battle of Moore's Mill ||| Battle of Pea Ridge ||| Following the [[Battle of Pea Ridge]], [[Arkansas]] and the resulting Confederate withdrawal from northern Arkansas, recruiters were dispatched throughout Missouri in an attempt to rebuild the Confederate forces. Southern [[guerrilla]]s aided the recruiters and often fought alongside them. ||| Background ||| ||| +0 Battle of Moorefield ||| Second Battle of Kernstown ||| Following the resounding [[Confederate States Army|Confederate]] victory at the [[Battle of Kernstown II|Second Battle of Kernstown]] on July 24, General [[Jubal A. Early]] dispatched cavalry under Generals McCausland and [[Bradley Tyler Johnson]] to raid the towns of [[Chambersburg, Pennsylvania]], and [[Cumberland, Maryland]]. On the 29th the cavalry force crossed the [[Potomac River|Potomac]] west of [[Williamsport, Maryland]], evading their Union counterparts under General Averell. As the Confederates moved north towards their target, Averell mistakenly assumed they would turn east to attack [[Baltimore, Maryland|Baltimore]] and moved his force to repel such a maneuver. In doing so he allowed the Confederates to raid and burn Chambersburg virtually unopposed and then make off for Cumberland and West Virginia. ||| Background ||| ||| +0 Battle of Moscow ||| Operation Barbarossa ||| The '''Battle of Moscow''' ({{lang-ru|Битва за Москву}}) is the name given by Soviet historians to two periods of strategically significant fighting on a {{convert|600|km|mi|abbr=on}} sector of the [[Eastern Front (World War II)|Eastern Front]] during [[World War II]]. It took place between October 1941 and January 1942. The Soviet defensive effort frustrated [[Adolf Hitler|Hitler]]'s attack on [[Moscow]], capital of the [[Union of Soviet Socialist Republics]] (USSR) and the largest Soviet city. Moscow was one of the primary [[Strategic goal (military)|military]] and political objectives for [[Axis forces]] in their [[Operation Barbarossa|invasion of the Soviet Union]]. ||| ||| ||| +0 Battle of Moscow ||| Siege of Leningrad ||| For the first time since June 1941, Soviet forces had stopped the Germans and driven them back. This resulted in Stalin becoming overconfident and deciding to further expand the offensive. On 5 January 1942, during a meeting in the Kremlin, Stalin announced that he was planning a general spring counteroffensive, which would be staged simultaneously near Moscow, Leningrad and in southern Russia. This plan was accepted over Zhukov's objections. Low Red Army reserves and Wehrmacht tactical skill led to a bloody stalemate near Rzhev, known as the '[[Battles of Rzhev|Rzhev meat grinder]]', and to a string of Red Army defeats, such as the [[Second Battle of Kharkov]], the failed attempt at elimination of the [[Demyansk pocket]], and the encirclement of General [[Andrey Vlasov|Vlasov]]'s army near Leningrad in a failed attempt to lift the [[Siege of Leningrad|siege of the city]]. Ultimately, these failures would lead to a successful German offensive in the south and to the [[Battle of Stalingrad]]. ||| Aftermath ||| ||| +0 Battle of Motien Pass ||| Battle of Yalu River (1904) ||| General Count [[Fedor Keller]] had assumed command of the Russian Eastern Force from General Zasulich after the [[Battle of Yalu River (1904)|Battle of Yalu River]]. His force of 25,000 men held Motien Pass, in the middle of [[Liaodong Peninsula]], on the main road between Antung (modern [[Dandong]], China) and [[Liaoyang]]. Keller, a loyal friend of General [[Aleksey Kuropatkin]] and a student of General [[Mikhail Skobelev]], observed that the Japanese strategy was similar to that of the [[First Sino-Japanese War]] (i.e. that the three Japanese armies would converge on Haicheng, as they had 10 years previously). Kuropatin agreed, and in an effort to fortify his position at Haicheng, he began a series of complex and confusing troop movements as he endeavored to plug real or imaginary gaps in his defensive line. Keller, already weakened by the loss of men at the [[Battle of Te-li-Ssu]], was further forced to give up two more [[regiment]]s to Kuropatin's defenses at Haicheng. ||| Preliminary movements ||| ||| +0 Battle of Mughar Ridge ||| Battle of Jerusalem ||| The delay caused by these rearguards may have seriously compromised the British Empire advance as there was not much time to conclude military engagements in southern Palestine. The winter rains were expected to start in the middle of the month and the black soil plain which was currently firm, facilitating the movements of large military units would with the rains become a giant boggy quagmire, impassable for wheeled vehicles and very heavy marching for infantry. With the rains the temperatures which were currently hot during the day and pleasant at night would drop rapidly to become piercingly cold. In 1917 the rains began on 19 November just as the infantry began their [[Battle of Jerusalem|advance]] into the Judean Hills. ||| Background ||| ||| +0 Battle of Mughar Ridge ||| Sinai and Palestine Campaign ||| The '''Battle of Mughar Ridge''', officially known by the British as the '''Action of El Mughar''', took place on 13 November 1917 during the Pursuit phase of the [[Southern Palestine Offensive]] of the [[Sinai and Palestine Campaign]] in the First World War. Fighting between the advancing [[Egyptian Expeditionary Force]] (EEF) and the retreating [[Yildirim Army Group]], occurred after the [[Battle of Beersheba (1917)|Battle of Beersheba]] and the [[Third Battle of Gaza]]. Operations occurred over an extensive area north of the [[Gaza City|Gaza]] to [[Beersheba]] line and west of the road from Beersheba to [[Jerusalem]] via [[Hebron]]. ||| ||| ||| +0 Battle of Mukden ||| Battle of Leipzig ||| The Russian forces, numbering more than 340,000, under General [[Alexei Nikolajevich Kuropatkin]], fought the attacking [[Imperial Japanese Army]] forces numbering more than 280,000, led by Marshal [[Marquess]] [[Oyama Iwao]]. Involving more than 600,000 combat participants, it was the largest battle since the [[Battle of Leipzig]] in 1813, and also the largest modern-era battle ever fought in Asia before [[World War II]]. ||| ||| ||| +0 Battle of Mukden ||| Battle of Sandepu ||| A second Russian counter-offensive, the [[Battle of Sandepu]], fought from (25 – 29 January 1905) was likewise unsuccessful. ||| Background ||| ||| +0 Battle of Mukden ||| Battle of Tannenberg ||| The victory shocked the imperial powers of Europe, as they thought that although the Russians had more manpower and material, the Japanese proved overwhelming throughout the battle. The battle became a proof that the Europeans were not invincible and could be even decisively outmatched in battle. Two Russian generals, [[Alexander Samsonov|Aleksandr Samsonov]] and [[Paul von Rennenkampf]], the future commanders of two armies which would fight in the even more disastrous [[Battle of Tannenberg]] in [[World War I]], began to loath each other as von Rennenkampf, the commander of the Russian left flank during the battle, was accused by Samsonov of failing to assist him during the fighting, and Samsonov later publicly complained against von Rennenkampf. But it shocked [[Nicholas II of Russia|Tsar Nicholas II]] more when news of the defeat reached the palace in [[St. Petersburg]]; it proved to them that a relatively tiny Asian empire, like Japan, could defeat a powerful and huge European empire. The tsarist government was irritated over the incompetence and clumsiness of their commanders during the battle, and the government was very frustrated that it again shifted its imperialist policies towards the Balkan region after the war, eventually becoming a precursor for the First World War. ||| Aftermath ||| ||| +0 Battle of Mukden ||| World War II ||| The Russian forces, numbering more than 340,000, under General [[Alexei Nikolajevich Kuropatkin]], fought the attacking [[Imperial Japanese Army]] forces numbering more than 280,000, led by Marshal [[Marquess]] [[Oyama Iwao]]. Involving more than 600,000 combat participants, it was the largest battle since the [[Battle of Leipzig]] in 1813, and also the largest modern-era battle ever fought in Asia before [[World War II]]. ||| ||| ||| +0 Battle of Mulhouse ||| Battle of Lorraine ||| The Army of Alsace advanced cautiously, as part of the main French offensive the [[Battle of Lorraine]] by the First and Second armies into the province of Lorraine. The French reached the area west of Mulhouse by 16 August and fought their way into the city by 19 August. The German survivors were pursued eastwards over the Rhine and the French took {{nowrap|3,000 prisoners.}} Joffre ordered the offensive to continue but by 23 August, preparations were halted as news of the French defeats in Lorraine and the Ardennes arrived. On 26 August, the French withdrew from Mulhouse to a more defensible line near Altkirch, to provide reinforcements for the French armies closer to Paris. The Army of Alsace was disbanded, the VII Corps was transferred to the Somme area in Picardy and the 8th Cavalry Division was attached to the [[First Army (France)|First Army]], to which two more divisions were sent later. The German [[7th Army (German Empire)|7th Army]] took part in the counter-offensive in Lorraine, with the German [[6th Army (German Empire)|6th Army]] and was then transferred to the Aisne in early September. ||| ||| ||| +0 Battle of Mullaitivu (2009) ||| Battle of Mullaitivu (1996) ||| The LTTE captured the Mullaitivu military base and town in 1996, following a [[Battle of Mullaitivu (1996)|battle]] which resulted in at least 1639 soldiers being killed or missing. ||| Background ||| ||| +0 Battle of Mullaitivu (2009) ||| Northern Theater of Eelam War IV ||| The '''Battle of Mullaitivu''' was a land battle fought between the [[Military of Sri Lanka|Sri Lankan Military]] and the [[Liberation Tigers of Tamil Eelam]] (LTTE) for the control of the town of [[Mullaitivu]] in the [[Northern Theater of Eelam War IV|Northern Theater]] of [[Eelam War IV]] during the [[Sri Lankan civil war]]. The town of Mullaitivu was the last stronghold of the LTTE. The government declared on 25 January 2009 that its troops had entered the town and were consolidating their positions. ||| ||| ||| +0 Battle of Munda Point ||| Battle of Munda ||| :''For the [[Ancient Rome|Roman]] [[Caesar's civil war|civil war]] battle, see [[Battle of Munda]].'' ||| ||| ||| +0 Battle of Munda Point ||| New Georgia Campaign ||| The '''Battle of Munda Point''' was a battle, from 22 July-4 August 1943, between primarily [[United States Army]] and [[Imperial Japanese Army]] forces during the [[Battle of New Georgia|New Georgia Campaign]] in the [[Solomon Islands]] in the [[Pacific War]]. In the battle, U.S. forces captured a Japanese airfield constructed at Munda Point on [[New Georgia]]. ||| ||| ||| +0 Battle of Mutina ||| Battle of Actium ||| Mutina is essentially where Octavian turns from an inferior young man to an equal of Antony. After retreating over the Alps with the remains of his army, Antony soon recrossed the Alps having gathered an army of 17 legions and 10,000 cavalry (in addition to six legions left behind with Varius, according to [[Plutarch]]). However, soon after the battle, a truce was formed between fellow Caesarians Antony and Octavian at Bologna. A Commission of Three for the Ordering of the State was to be officially established for five years, known as the [[Second Triumvirate]], with [[Marcus Aemilius Lepidus (triumvir)|Marcus Aemilius Lepidus]], Octavian and Mark Antony as the commissioners or [[Triumvirs]]. They would set aside their differences and turn on the Senators involved in Caesar's assassination while assuming a 3-way dictatorship. Eventually in the ensuing power struggles many years later, Octavian would defeat Antony and [[Cleopatra]] at [[Battle of Actium|Actium]] in 31 BC and usher in the [[Principate]], but Mutina was the milestone where Octavian first established himself as a force to be reckoned with. Without this victory, Octavian might never have achieved the prestige necessary to be looked upon as Caesar's successor, and the stability of the Empire might never have been established in the lasting manner which Octavian had decided for it. ||| Consequences ||| ||| +0 Battle of Mărășești ||| Kerensky Offensive ||| On July 22, 1917, the Romanians launched a [[Kerensky Offensive|joint offensive]] with [[Russian Empire|Russia]] against the [[Austria-Hungary|Austro-Hungarian]] 1st Army, around [[Mărăști, Vrancea|Mărăști]] and the lower part of the [[Siret River|Siret]] river, which resulted in the [[Battle of Mărăști]]. Although there was some initial success, a counter-offensive by the [[Central Powers]] in [[Kingdom of Galicia and Lodomeria|Galicia]] stopped the Romanian-Russian offensive. ||| Background ||| ||| +0 Battle of Mạo Khê ||| World War II ||| The '''Battle of Mạo Khê''' ({{lang-vi|Mạo Khê}}), occurring from March 23 to March 28, 1951, was a significant engagement in the [[First Indochina War]] between the [[French Union]] and the [[Viet Minh|Việt Minh]]. The French Union forces, led by [[World War II]] hero [[Jean de Lattre de Tassigny]], inflicted a defeat on Việt Minh forces, which were commanded by General [[Võ Nguyên Giáp]]. The French Union victory, however, was not decisive and the Việt Minh would attack again shortly afterwards. ||| ||| ||| +0 Battle of Naas ||| Battle of Prosperous ||| On the same night the [[Battle of Prosperous]] about 6 miles north of Naas resulted in a rebel success. ||| Attack ||| ||| +0 Battle of Nablus (1918) ||| Battle of Beersheba (1917) ||| After the [[Ottoman Army]]'s defeat at the [[Battle of Beersheba (1917)|Battle of Beersheba]], the loss to the [[Central Powers]] of southern Palestine, the retreat to the Judean Hills and the loss of Jerusalem at the end of 1917, several Ottoman army commanders in Palestine were replaced. The [[Yildirim Army Group]]'s German commander, [[General (Germany)|General]] [[Erich von Falkenhayn]], was replaced by the German General [[Otto Liman von Sanders]]. The commander of the [[Eighth Army (Ottoman Empire)|Eighth Army]], [[Friedrich Freiherr Kress von Kressenstein|Kress von Kressenstein]], was replaced by Djevad Pasha and [[Djemal Pasha|Cemal]] commander of the Ottoman Army, appointed [[Küçük Cemal Paşa|Cemal Kucjuk Pasha]] to command the [[Fourth Army (Ottoman Empire)|Fourth Army]]. ||| Background ||| ||| +0 Battle of Nablus (1918) ||| Battle of Sharon ||| The '''Battle of Nablus''' took place, together with the [[Battle of Sharon]] during the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] between 19 and 25 September 1918 in the last months of the [[Sinai and Palestine Campaign]] of the First World War. Fighting took place in the [[Judean Hills]] where the [[British Empire]]'s [[XX Corps (United Kingdom)|XX Corps]] attacked the [[Ottoman Empire]]'s [[Yildirim Army Group]]'s [[Seventh Army (Ottoman Empire)|Seventh Army]] defending their line in front of [[Nablus]]. This battle was also fought on the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]], where [[Chaytor's Force]] attacked and captured the [[Jordan River]] crossings, before attacking the [[Fourth Army (Ottoman Empire)|Fourth Army]] at [[Salt, Jordan|Es Salt]] and [[Amman]] capturing many thousands of prisoners and extensive territory. The Battle of Nablus began half a day after the main [[Battle of Sharon (1918)|Battle of Sharon]], which was fought on the Mediterranean section of the front line where the [[XXI Corps (United Kingdom)|XXI Corps]] attacked the [[Eighth Army (Ottoman Empire)|Eighth Army]] defending the line in front of [[Battle of Tulkarm (1918)|Tulkarm]] and [[Battle of Tabsor (1918)|Tabsor]] and the [[Desert Mounted Corps]] which rode north to capture the Esdrealon Plain. Together these two battles, known as the Battle of Megiddo, began the Final Offensive of the war in the Sinai and Palestine campaign. ||| ||| ||| +0 Battle of Nablus (1918) ||| Capture of Afulah and Beisan ||| By 17:00 20 September, about 25,000 prisoners had been captured and the Eighth Ottoman Army had ceased to exist excepting von Oppen's Asia Corps which, together with the Seventh Ottoman Army, withdrew north eastwards through the Judean Hills between Nablus and Beisan (See [[Capture of Afulah and Beisan]]) towards the Jordan River losing most of their guns and transport. The Desert Mounted Corps had already captured Lejjun, Afulah, Beisan and, at about 17:30, Jenin, while Nazareth would be captured the following morning. The coastal Plain of Sharon had been 'cleared' by the XXI Corps and the Desert Mounted Corps controlled all the main Ottoman lines of retreat. ||| Battle ||| General situation ||| +0 Battle of Nablus (1918) ||| Gallipoli Campaign ||| These divisions holding the front line from the Mediterranean Sea where they faced the XXI Corps, and into the Judean Hills where they faced the XX Corps, were highly regarded veteran formations in the Ottoman Army. In particular, the 7th and 19th Infantry Divisions, had fought with distinction in the [[Gallipoli Campaign]] as part of [[Mehmet Esat Bülkat|Esat Pasa's]] [[III Corps (Ottoman Empire)|III Corps]]. ||| Prelude ||| Yildirim Army Group ||| Eighth Army +0 Battle of Nablus (1918) ||| Sinai and Palestine Campaign ||| The '''Battle of Nablus''' took place, together with the [[Battle of Sharon]] during the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] between 19 and 25 September 1918 in the last months of the [[Sinai and Palestine Campaign]] of the First World War. Fighting took place in the [[Judean Hills]] where the [[British Empire]]'s [[XX Corps (United Kingdom)|XX Corps]] attacked the [[Ottoman Empire]]'s [[Yildirim Army Group]]'s [[Seventh Army (Ottoman Empire)|Seventh Army]] defending their line in front of [[Nablus]]. This battle was also fought on the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]], where [[Chaytor's Force]] attacked and captured the [[Jordan River]] crossings, before attacking the [[Fourth Army (Ottoman Empire)|Fourth Army]] at [[Salt, Jordan|Es Salt]] and [[Amman]] capturing many thousands of prisoners and extensive territory. The Battle of Nablus began half a day after the main [[Battle of Sharon (1918)|Battle of Sharon]], which was fought on the Mediterranean section of the front line where the [[XXI Corps (United Kingdom)|XXI Corps]] attacked the [[Eighth Army (Ottoman Empire)|Eighth Army]] defending the line in front of [[Battle of Tulkarm (1918)|Tulkarm]] and [[Battle of Tabsor (1918)|Tabsor]] and the [[Desert Mounted Corps]] which rode north to capture the Esdrealon Plain. Together these two battles, known as the Battle of Megiddo, began the Final Offensive of the war in the Sinai and Palestine campaign. ||| ||| ||| +0 Battle of Nablus (1918) ||| Spring Offensive ||| Major offensive operations in Palestine also became a low priority for the [[British Army]] in March; being postponed because of the [[Spring Offensive]] in France, but by July, it was clear that the German offensive had failed resulting in a return to the battle of attrition in the trenches. This coincided with the approach of the campaign season in [[Palestine (region)|Palestine]]. ||| Background ||| ||| +0 Battle of Nam River ||| Battle of Masan ||| Positioned in defense of [[Masan]] during the [[Battle of Masan]], the [[US 35th Infantry Regiment]], [[US 25th Infantry Division|25th Infantry Division]] took up positions along the Nam River, one of the many tributaries of the Naktong River on the southern flank of the Pusan Perimeter. The [[North Korean People's Army]]'s [[NK 7th Division|7th Division]] effected a crossing of the river on August 31, and though the 35th Infantry was able to stem the North Korean advance, thousands of North Korean troops were able to exploit a hole in the line and surround the regiment. What followed was an intense battle in which the US and North Korean units were heavily engaged all along and behind the Kum River line. Eventually, though, the North Korean force was routed and defeated by the US troops. ||| ||| ||| +0 Battle of Nam River ||| Battle of Taejon ||| The 24th Infantry Division was the first US unit sent into Korea with the mission to take the initial 'shock' of North Korean advances, delaying much larger North Korean units to buy time to allow reinforcements to arrive. The 24th made a final stand in the [[Battle of Taejon]], where it was almost completely destroyed but delaying North Korean forces until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of Nan'ao Island ||| Wanshan Archipelago Campaign ||| The nationalist defeat proved that it was impractical to hold on to the outlying islands that were at the doorstep of the enemy but far away from any friendly bases, just like the [[Wanshan Archipelago Campaign]] would have done later. As the battle had shown, once the defenders learned that it was impossible to have any reinforcement, the morale completely collapsed and most of the defenders abandoned their weapons and attempted to hide after merely suffering 27 fatalities, and the enemy spent most of the 8 hours fighting in mop-up operations to round up the demoralized defenders. Although holding on to a distant island may have propaganda value, any initial political and psychological gains would be negated by the fallout after the inevitable defeat and the loss. ||| ||| ||| +0 Battle of Nancy (1944) ||| Battle of Arracourt ||| The capture of Nancy provided the Allies an important communications center in France and the city later served as the garrison of U.S. 3rd Army Headquarters. The German defenders of Nancy, however, largely escaped the encirclement of the city and were available for further operations during the Lorraine Campaign. The XII Corps' successful assault across the Moselle around Nancy also prompted the subsequent German counter-attack at [[Battle of Arracourt|Arracourt]] by the [[5th Panzer Army|5. ''Panzerarmee'']]. ||| Aftermath ||| ||| +0 Battle of Nancy (1944) ||| Western Front (World War II) ||| The '''Battle of Nancy''' in September 1944 was a 10-day battle on the [[Western Front (World War II)|Western Front]] of [[World War II]] in which the [[U.S. Third Army|U.S. 3rd Army]] defeated [[Nazi Germany|German]] forces defending the approaches to [[Nancy, France]] and crossings over the [[Moselle River]] to the north and south of the city. The battle resulted in U.S. forces fighting their way across the Moselle and liberating Nancy. ||| ||| ||| +0 Battle of Nanking ||| Battle of Shanghai ||| Following the outbreak of war between [[Empire of Japan|Japan]] and China in July 1937 the Japanese government at first attempting to contain the fighting and sought a negotiated settlement to the war. However, after victory in the [[Battle of Shanghai]] expansionists prevailed within the Japanese military and on December 1 a campaign to capture Nanking was officially authorized. The task of occupying Nanking was given to General [[Iwane Matsui]], the commander of Japan's Central China Area Army, who believed that the capture of Nanking would force China to surrender and thus end the war. Chinese leader [[Chiang Kai-shek]] ultimately decided to defend the city and appointed [[Tang Shengzhi]] to command the Nanking Garrison Force, a hastily assembled army of local conscripts and the remnants of the Chinese units who had fought in [[Shanghai]]. ||| ||| ||| +0 Battle of Nanking ||| Nanking Massacre ||| Following the capture of the city Japanese soldiers massacred Chinese prisoners of war, murdered civilians, and committed acts of looting and rape in an event known as the [[Nanking Massacre]]. Though Japan's military victory excited and emboldened them, the subsequent massacre tarnished their reputation in the eyes of the world. Contrary to Matsui's expectations, China did not surrender and the Second Sino-Japanese War continued for another eight years. ||| ||| ||| +0 Battle of Narva (1700) ||| Battle of Narva (1704) ||| The '''Battle of [[Narva]]''' ({{lang-rus|Битва на Нарве}}; {{lang-sv|Slaget vid Narva}}) on 19 November 1700 (30 November, [[New Style|N.S.]]) was an early battle in the [[Great Northern War]]. A [[Sweden|Swedish]] relief army under [[Charles XII of Sweden]] defeated a [[Russia]]n siege force three to four times its size. Before, Charles XII had forced [[Denmark-Norway]] to sign the [[Treaty of Travendal]]. Narva was not followed by further advances of the Swedish army into Russia, instead, Charles XII turned southward to expel [[August the Strong]] from [[Livonia]] and [[Polish–Lithuanian Commonwealth|Poland-Lithuania]]. Tsar [[Peter the Great]] of Russia took Narva in a [[Battle of Narva (1704)|second battle]] in 1704. ||| ||| ||| +0 Battle of Narva (1704) ||| Battle of Narva (1700) ||| Four years after the [[Battle of Narva (1700)|first battle of Narva]], [[Peter the Great|Tsar Peter I]] marched again to the area with a reorganized army in an attempt to capture [[Narva]] and occupy [[Ingria]], previously a Swedish logistical center. {{rp|69}} General Horn, several officers and a large number of Swedish soldiers were captured, after roughly 3,200 casualties in the siege and aftermath. The Russians lost up to 3,000 men in total. The city was incorporated into the Russian Empire. ||| ||| ||| +0 Battle of Narva (1944) ||| Battle for Narva Bridgehead ||| The campaign took place in the northern section of the [[Eastern Front (World War II)|Eastern Front]] and consisted of two major phases: the [[Battle for Narva Bridgehead]] (February to July 1944) A number of foreign volunteers and local [[20 SS|Estonian conscripts]] participated in the battle as part of the German forces. By giving its support to the [[Hague Conventions (1899 and 1907)|illegal]] German conscription call, the [[National Committee of the Republic of Estonia|Estonian resistance movement]] had hoped to recreate a national army and restore the independence of the country. ||| ||| ||| +0 Battle of Narva (1944) ||| Narva Offensive (July 1944) ||| As a continuation of the [[Leningrad–Novgorod Offensive]] of January 1944, the Soviet Estonian operation pushed the front westward to the [[Narva River]], aiming to destroy 'Narwa' and to thrust deep into Estonia. The Soviet units established a number of [[bridgehead]]s on the western bank of the river in February while the Germans maintained a bridgehead on the eastern bank. Subsequent attempts failed to expand their toehold. German counterattacks annihilated the bridgeheads to the north of Narva and reduced the bridgehead south of the town, stabilizing the front until July 1944. The Soviet [[Narva Offensive (July 1944)]] led to the capture of the city forcing the German troops to retreat to their prepared Tannenberg Defence Line in the [[Sinimäed Hills|Sinimäed]] hills 16 kilometres from Narva. In the ensuing fierce Battle of Tannenberg Line, the German army group held its ground. Stalin's main strategic goal—a quick recovery of Estonia as a base for air and seaborne attacks [[Continuation War|against Finland]] and an invasion of [[East Prussia]]—was not achieved. As a result of the tough defence of the German forces the Soviet war effort in the [[Baltic Sea]] region was hampered for seven and a half months. ||| ||| ||| +0 Battle of Narva (1944) ||| Operation Bagration ||| The Soviet [[Operation Bagration|breakthrough in Belorussia]] forced the Army Group North to withdraw a large portion of their troops from Narva to the central part of the [[Eastern Front (World War II)|Eastern Front]] and to [[Vyborg–Petrozavodsk Offensive|Finland]]. As there were insufficient forces for the defence of the former front line at Narva in July, the German army detachment began preparations for withdrawal to the Tannenberg defence line in the Sinimäed Hills 16 kilometres from Narva. The commanders of the Leningrad Front were unaware of the preparations; they designed a new Narva Offensive. Shock troops from the [[Fourth Strategic Offensive|Finnish front]] were concentrated near the town, giving the Leningrad Front a 4:1 superiority both in manpower and equipment. Before the German forces had implemented their plan, the Soviet 8th Army launched their offensive; the [[Battle of Auvere]] was the result. The I.Battalion, 1st Estonian and the 44th Infantry Regiment repulsed the attack, inflicting heavy losses on the 8th Army. The 'Nordland' and 'Nederland' detachments in [[Ivangorod]] left their positions quietly during the night before 25 July. The evacuation was carried out according to the German plans until the 2nd Shock Army resumed the offensive in the morning. Supported by 280,000 shells and grenades from 1360 assault guns, the army crossed the river north of the town. The II.Battalion, 1st Estonian Regiment kept the Soviet shock Army from capturing the highway behind the retreating troops. The defensive operation led to the destruction of the SS Volunteer Panzergrenadier Regiment 48 'General Seyffardt' due to tactical errors. The Soviet forces captured Narva on 26 July. ||| Combat activity ||| The Soviets capture Narva ||| +0 Battle of Naseby ||| Siege of Oxford ||| At the same time, after the New Model Army had abandoned its attempt to relieve [[Taunton]], Parliament's [[Committee of Both Kingdoms]] had directed Fairfax, its commander, to [[Siege of Oxford|besiege Oxford]], the King's wartime capital. They sent messages ordering Goring to rejoin them, but Goring refused to leave the West Country. ||| Campaign ||| ||| +0 Battle of Nauen ||| Battle of Fehrbellin ||| The decisive military victory in favour of Brandenburg, however, took place at the [[Battle of Fehrbellin]] on the following day. ||| ||| ||| +0 Battle of Nazareth ||| Battle of Megiddo (1918) ||| The '''Battle of Nazareth''' began on 20 September 1918, during the [[Battle of Sharon]], which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] rode to the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|and|50|mi|km}} behind the front line in the [[Judean Hills]]. At [[Nazareth]] on the plain, the [[13th Cavalry Brigade (British Indian Army)|13th Cavalry Brigade]] of the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] attempted to capture the town and the headquarters of the [[Yildirim Army Group]] which was eventually captured the following day after the garrison had withdrawn. ||| ||| ||| +0 Battle of Nazareth ||| Battle of Nablus ||| The '''Battle of Nazareth''' began on 20 September 1918, during the [[Battle of Sharon]], which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] rode to the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|and|50|mi|km}} behind the front line in the [[Judean Hills]]. At [[Nazareth]] on the plain, the [[13th Cavalry Brigade (British Indian Army)|13th Cavalry Brigade]] of the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] attempted to capture the town and the headquarters of the [[Yildirim Army Group]] which was eventually captured the following day after the garrison had withdrawn. ||| ||| ||| +0 Battle of Nazareth ||| Battle of Nablus (1918) ||| The '''Battle of Nazareth''' began on 20 September 1918, during the [[Battle of Sharon]], which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] rode to the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|and|50|mi|km}} behind the front line in the [[Judean Hills]]. At [[Nazareth]] on the plain, the [[13th Cavalry Brigade (British Indian Army)|13th Cavalry Brigade]] of the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] attempted to capture the town and the headquarters of the [[Yildirim Army Group]] which was eventually captured the following day after the garrison had withdrawn. ||| ||| ||| +0 Battle of Nazareth ||| Battle of Samakh ||| By the afternoon of 19 September, it was clear that the breakthrough attacks in the Battle of Sharon by the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had been successful and the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was ordered to begin its attack, supported by an artillery barrage, against the well-defended Ottoman front line. The attacks continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Ottoman Seventh Army retreated from the Nablus area towards the River Jordan crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap provided by the infantry on 19 September to almost encircle the fighting in the Judean Hills, capturing Nazareth, [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]], before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut this line of retreat across the Jordan River. To the east of this river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] when a strong Fourth Army rearguard was defeated there on 25 September. ||| Background ||| ||| +0 Battle of Nazareth ||| Battle of Sharon ||| The '''Battle of Nazareth''' began on 20 September 1918, during the [[Battle of Sharon]], which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] rode to the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|and|50|mi|km}} behind the front line in the [[Judean Hills]]. At [[Nazareth]] on the plain, the [[13th Cavalry Brigade (British Indian Army)|13th Cavalry Brigade]] of the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] attempted to capture the town and the headquarters of the [[Yildirim Army Group]] which was eventually captured the following day after the garrison had withdrawn. ||| ||| ||| +0 Battle of Nazareth ||| Battle of Tabsor ||| By the end of 20 September, the main achievements of the British infantry during the [[Battle of Tulkarm]] were the expulsion of the Eighth Army from the coastal Plain of Sharon and the capture the Eighth Army headquarters at Tulkarm. The 60th Division also captured Anebta in the Judean Hills, while their attached 5th Light Horse Brigade cut the Jenin railway south of Arrabe. During the [[Battle of Tabsor]] the [[7th (Meerut) Division]] captured the village of Beit Lid and controlled the crossroads at Deir Sheraf. ||| Aftermath ||| ||| +0 Battle of Nazareth ||| Capture of Afulah and Beisan ||| The [[Egyptian Expeditionary Force]] (EEF) attack on Nazareth was made possible by the [[British Empire]] infantry attack on 19 September which began the Battle of Sharon. The EEF infantry attacked along an almost continuous front from the Mediterranean Sea, across the Plain of Sharon and into the Judean Hills. The [[XXI Corps (United Kingdom)|XXI Corps]]'s [[British Indian Army]] infantry [[Battle of Tulkarm (1918)|captured Tulkarm]] and the headquarters of the [[Ottoman Empire|Ottoman]] [[Eighth Army (Ottoman Empire)|Eighth Army]]. During the course of this attack, the infantry created a gap in the Ottoman front line defences through which the Desert Mounted Corps rode northwards to begin the cavalry phase of the battle. Subsequently the infantry also captured [[Battle of Tabsor (1918)|Tabsor, Et Tire]] and [[Battle of Arara|Arara]] to outflank the Eighth Army. Meanwhile, the Desert Mounted Corps advanced to capture the communications hubs of [[Capture of Afulah and Beisan|Afulah, Beisan]] and [[Capture of Jenin (1918)|Jenin]] on 20 September, cutting the main Ottoman withdrawal routes along their [[Line of communication|lines of supply and communications]]. ||| ||| ||| +0 Battle of Nazareth ||| Capture of Jenin ||| By the afternoon of 19 September, it was clear that the breakthrough attacks in the Battle of Sharon by the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had been successful and the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was ordered to begin its attack, supported by an artillery barrage, against the well-defended Ottoman front line. The attacks continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Ottoman Seventh Army retreated from the Nablus area towards the River Jordan crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap provided by the infantry on 19 September to almost encircle the fighting in the Judean Hills, capturing Nazareth, [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]], before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut this line of retreat across the Jordan River. To the east of this river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] when a strong Fourth Army rearguard was defeated there on 25 September. ||| Background ||| ||| +0 Battle of Nazareth ||| First Transjordan attack on Amman ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks by the [[Egyptian Expeditionary Force]] (EEF) in March/April and April/May 1918, the EEF commanded by General [[Edmund Allenby]] occupied the Jordan Valley and the front line, which extended across the [[Judean Hills]] to the Mediterranean. Most of the British infantry and [[yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of reorganisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack and to acclimatise the newly arrived India Army infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. During this time the [[Occupation of the Jordan Valley]] continued. ||| Background ||| ||| +0 Battle of Nazareth ||| Second Battle of Amman ||| By the afternoon of 19 September, it was clear that the breakthrough attacks in the Battle of Sharon by the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had been successful and the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was ordered to begin its attack, supported by an artillery barrage, against the well-defended Ottoman front line. The attacks continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Ottoman Seventh Army retreated from the Nablus area towards the River Jordan crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap provided by the infantry on 19 September to almost encircle the fighting in the Judean Hills, capturing Nazareth, [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]], before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut this line of retreat across the Jordan River. To the east of this river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] when a strong Fourth Army rearguard was defeated there on 25 September. ||| Background ||| ||| +0 Battle of Nazareth ||| Third Transjordan attack ||| By the afternoon of 19 September, it was clear that the breakthrough attacks in the Battle of Sharon by the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had been successful and the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was ordered to begin its attack, supported by an artillery barrage, against the well-defended Ottoman front line. The attacks continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Ottoman Seventh Army retreated from the Nablus area towards the River Jordan crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap provided by the infantry on 19 September to almost encircle the fighting in the Judean Hills, capturing Nazareth, [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]], before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut this line of retreat across the Jordan River. To the east of this river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] when a strong Fourth Army rearguard was defeated there on 25 September. ||| Background ||| ||| +0 Battle of Nazareth ||| Western Front (World War I) ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks by the [[Egyptian Expeditionary Force]] (EEF) in March/April and April/May 1918, the EEF commanded by General [[Edmund Allenby]] occupied the Jordan Valley and the front line, which extended across the [[Judean Hills]] to the Mediterranean. Most of the British infantry and [[yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of reorganisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack and to acclimatise the newly arrived India Army infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. During this time the [[Occupation of the Jordan Valley]] continued. ||| Background ||| ||| +0 Battle of Neerwinden (1793) ||| Battle of Jemappes ||| After Dumouriez's victory at [[Battle of Jemappes|Jemappes]] in November 1792, the French armies rapidly overran most of the Austrian Netherlands. Rather than driving the Austrians to the west bank of the [[Rhine]] River, Dumouriez and the French government became preoccupied with a war with the Dutch Republic. During the breathing space offered by her enemy, Austria assembled an army under the Prince of Coburg and struck back. After a French covering force was routed by Coburg at [[Battle of Aldenhoven (1793)|Aldenhoven]], Dumouriez began gathering his army for a counterstroke. ||| ||| ||| +0 Battle of Neerwinden (1793) ||| Battle of Landen ||| Dumouriez thought his soldiers' morale was too shaky for a retreat so he advanced on Coburg's army, seeking battle. In his haste, the French commander failed to call up Harville's corps or the ''Army of Holland'' as reinforcements. Earlier, [[François Joseph Drouot de Lamarche]] had been driven out of [[Tienen|Tienen (Tirlemont)]], but on 16 March the French recaptured it after a vigorous combat. Coburg pulled his army back behind the Little [[Gete River]]. Believing that he outnumbered his enemies, Dumouriez was very confident of success. A century before, the French had won the [[Battle of Landen]] on the same ground. ||| Background ||| Invasion of Dutch Republic and Austrian counterattack ||| +0 Battle of Neuburg (1800) ||| Battle of Ampfing (1800) ||| In a series of battles in what is now southern Germany, the French pushed the combined Austrian and Coalition force back, first capturing [[Stockach]], then [[Messkirch]], then [[Biberach an der Riss|Biberach]]. After his loss at Biberach, the Coalition commander [[Pál Kray]] withdrew to the fortress at [[Ulm]], leaving detachments to secure the Danube crossings that lay further to the east, at [[Höchstädt an der Donau|Höchstädt]], [[Blindheim]], Donauwörth, and Neuburg. The battle at Neuburg was the last of the Danube campaign for the summer of 1800; the armistice between the Habsburgs and the French was signed a couple of days later and ended in late November, and the French ultimately defeated the Austrians at the battles at [[Battle of Ampfing (1800)|Ampfing]] and [[Battle of Hohenlinden|Hohenlinden]]. The heaviest action of the battle occurred in the village of Unterhausen, in the outskirts of Neuburg. ||| ||| ||| +0 Battle of Neuburg (1800) ||| Battle of Hohenlinden ||| In a series of battles in what is now southern Germany, the French pushed the combined Austrian and Coalition force back, first capturing [[Stockach]], then [[Messkirch]], then [[Biberach an der Riss|Biberach]]. After his loss at Biberach, the Coalition commander [[Pál Kray]] withdrew to the fortress at [[Ulm]], leaving detachments to secure the Danube crossings that lay further to the east, at [[Höchstädt an der Donau|Höchstädt]], [[Blindheim]], Donauwörth, and Neuburg. The battle at Neuburg was the last of the Danube campaign for the summer of 1800; the armistice between the Habsburgs and the French was signed a couple of days later and ended in late November, and the French ultimately defeated the Austrians at the battles at [[Battle of Ampfing (1800)|Ampfing]] and [[Battle of Hohenlinden|Hohenlinden]]. The heaviest action of the battle occurred in the village of Unterhausen, in the outskirts of Neuburg. ||| ||| ||| +0 Battle of Neuburg (1800) ||| War of the Spanish Succession ||| The French war goal, to occupy Vienna and force the Habsburgs to accept and comply with peace terms established in 1798, required a double-pronged invasion through northern Italy, which First Consul Napoleon commanded, and through southern Germany, a campaign that fell to Moreau. To secure access into Bavaria and, eventually, to Vienna, the French needed to control the Danube riverway. This was not a new tactic: The stretch of river between Ulm and Neuburg had been the site of major battles of the [[Thirty Years' War]] and [[War of the Spanish Succession]]. Between Ulm and Ingolstadt, the Danube grows significantly in volume, making it a wide and swift waterway. The [[Iller]] joins the Danube at [[Ulm]], dumping massive amounts of water into the stream; at Donauwörth, the Lech enters the Danube. Neuburg, the first significant city on the river after Donauwörth, had been the family seat of the princes of [[Pfalz-Neuburg]]; taking it from a princely family of the [[Holy Roman Empire]] would be a blow to the morale and prestige of the Habsburgs, whose role it was to protect the small princely domains. Control of the bridges and passages between Ulm and Donauwörth, Neuburg, then Ingolstadt offered an advantage of both transport and prestige. ||| Background ||| Strategic importance of Danube Valley ||| +0 Battle of New Bern ||| Battle of Elizabeth City ||| [[Battle of Roanoke Island|Roanoke Island]] fell to a combined operation of the Union Army's Coast Division, under Brig. Gen. [[Ambrose E. Burnside]], and a Union gunboat flotilla assembled from the [[North Atlantic Blockading Squadron]], under Flag Officer [[Louis M Goldsborough]], on 7–8 February 1862. That battle was rapidly followed up by the gunboats alone, who wiped out the Confederate Navy's [[Mosquito Fleet]] in an assault on [[Battle of Elizabeth City|Elizabeth City]]. As a result of the battles, Union forces could move at will in [[Albemarle Sound|Albemarle]] and [[Pamlico Sound]]s. Every city and town accessible to those sounds hence became vulnerable to attack. The most important was [[New Bern, North Carolina|New Bern]], and Burnside soon resolved to take it. ||| Prelude ||| ||| +0 Battle of New Bern (1864) ||| Battle of New Bern ||| The '''Battle of New Bern''' was fought during the [[American Civil War]] from February 1–3, 1864. The battle resulted in a failure to Confederate forces trying to recapture the coastal town of [[New Bern, North Carolina|New Bern]] which had been [[Battle of New Bern|lost to the Union Army]] in 1862. ||| ||| ||| +0 Battle of New Market ||| Battle of Cold Harbor ||| The Confederate victory allowed the local crops to be harvested for Robert E. Lee's Army of Northern Virginia and protected Lee's lines of communications to western Virginia. The Virginia newspapers and the Confederate soldiers in the battle compared Breckinridge to [[Stonewall Jackson|Thomas J. 'Stonewall' Jackson]]. Following Sigel's retreat, Lee suggested that Breckinridge follow the Union army and invade Maryland; however, the flooded rivers in the northern Shenandoah Valley and the length of his supply line prevented Breckinridge from making a pursuit. Breckinridge's forces were transferred to eastern Virginia, where they reinforced Lee's army at the [[Battle of Cold Harbor]]. ||| Aftermath ||| ||| +0 Battle of New Orleans ||| Battle of Waterloo ||| Although the engagement was very small compared to other contemporary battles of 1815, such as the [[Battle of Waterloo]], it was important for the meaning applied to it by Americans in general and [[Andrew Jackson]] in particular. ||| Aftermath ||| ||| +0 Battle of Newton ||| Battle of Antietam ||| Unbeknownst to Sanders, he and his men had been spotted on the roads leading toward Newton, and their probable destination had been guessed. Jesse Carmichael, a [[veteran]] of the 15th Alabama who had served as a [[corporal]] and lost a [[hand]] at [[Battle of Antietam|Antietam]] in 1862, ||| Battle ||| ||| +0 Battle of Nikolayevka ||| Battle of Stalingrad ||| The '''Battle of Nikolayevka''' was fought in January 1943, as a small part of the larger [[Battle of Stalingrad]]. The Battle pitted forces of the [[Italian war in Soviet Union, 1941-1943#The Italian 8th Army or Armata Italiana in Russia|Italian 8th Army's]] [[Alpini]] Corps against the four Soviet Armies of the [[Voronezh Front]]. Since the war the village has been absorbed by the nearby village of [[Livenka, Belgorod Oblast|Livenka]]. ||| ||| ||| +0 Battle of Nisko ||| Deluge (history) ||| The '''Battle of Nisko''' took place on March 28, 1656, and was one of battles of the [[Deluge (history)|Swedish invasion of Poland]]. It resulted in a victory of Swedish forces, commanded by King [[Charles X Gustav of Sweden|Charles X Gustav]]. ||| ||| ||| +0 Battle of Noemfoor ||| Battle of Biak ||| In describing his preparations for the [[Western New Guinea campaign]], General [[Douglas MacArthur]] wrote in his memoirs that: '[t]he [[Operations Reckless and Persecution|Hollandia Invasion]] initiated a marked change in the tempo of my advance westward. Subsequent assaults against [[Battle of Wakde|Wakde]], [[Battle of Biak|Biak]], Noemfoor, and [[Sansapor Airfield|Sansapor]] were mounted in quick succession, and, in contrast to previous campaigns, I planned no attempt to complete all phases of one operation before moving on to the next objective.' ||| Background ||| ||| +0 Battle of Noemfoor ||| Battle of Morotai ||| Allied aircraft based on Noemfoor played an important role in the battles of [[Sansapor Airfield|Sansapor]] and [[Battle of Morotai|Morotai]]. ||| Aftermath ||| ||| +0 Battle of Noemfoor ||| Battle of Wakde ||| In describing his preparations for the [[Western New Guinea campaign]], General [[Douglas MacArthur]] wrote in his memoirs that: '[t]he [[Operations Reckless and Persecution|Hollandia Invasion]] initiated a marked change in the tempo of my advance westward. Subsequent assaults against [[Battle of Wakde|Wakde]], [[Battle of Biak|Biak]], Noemfoor, and [[Sansapor Airfield|Sansapor]] were mounted in quick succession, and, in contrast to previous campaigns, I planned no attempt to complete all phases of one operation before moving on to the next objective.' ||| Background ||| ||| +0 Battle of Noemfoor ||| Western New Guinea campaign ||| In describing his preparations for the [[Western New Guinea campaign]], General [[Douglas MacArthur]] wrote in his memoirs that: '[t]he [[Operations Reckless and Persecution|Hollandia Invasion]] initiated a marked change in the tempo of my advance westward. Subsequent assaults against [[Battle of Wakde|Wakde]], [[Battle of Biak|Biak]], Noemfoor, and [[Sansapor Airfield|Sansapor]] were mounted in quick succession, and, in contrast to previous campaigns, I planned no attempt to complete all phases of one operation before moving on to the next objective.' ||| Background ||| ||| +0 Battle of Northern Burma and Western Yunnan ||| Burma Campaign ||| '''Battle of Northern Burma and Western Yunnan''' ({{Zh|c=滇西缅北会战}} October 1943 – March 1945) was the name of the [[Republic of China|Chinese]] campaign with their allies in the 1943-45 [[Burma Campaign]]. The campaign ended in an Allied victory. ||| ||| ||| +0 Battle of Oberwald ||| Battle of Ostrach ||| After the Swiss uprisings of 1798, the Austrians had stationed troops in the Grisons, at the request of the Canton, which had not joined the new Helvetic Republic under the protection of the French Directory. In March 1799, war had again broken out between the Austrians and its coalition allies against the French. Massena, who commanded the French army in Switzerland, surprised the Austrian division stationed in the [[Grisons]], though, and overran the countryside. To the north, after victories at [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], and later at Feldkirch, the Archduke Charles pushed the French out. The Swiss general [[Hotze]], in Austrian service, approached through the Grisons, and following a successful engagement at [[battle of Winterthur|Winterthur]]. The Austrians, following up on their success, over ran most of eastern Switzerland. Massena left Zurich and fell back to the River Reuss. ||| Background ||| Coalition resurgence ||| +0 Battle of Ocaña ||| Battle of Talavera ||| The Spanish campaign in the autumn of 1809 called for their armies to lunge at Madrid from both north and south. They called for assistance from [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Viscount Wellington]], but after experiencing a lack of cooperation from the Spanish during the [[Battle of Talavera|Talavera campaign]] the British general refused. The French were nearly surprised by the southern thrust. By 9 November, the southern army was within 35 miles of Madrid with only 7,000 French troops blocking them. Then Aréizaga lost his nerve and halted for three days. He then pressed on toward Madrid but ran into two French divisions and pulled back. Several days of fruitless countermarching found the thoroughly alerted French concentrated and moving to intercept the Spanish army. ||| Background ||| Maneuvers ||| +0 Battle of Occhiobello ||| Battle of Casaglia ||| The Neapolitans had sustained over 2,000 casualties during the two days of fighting with thousands more deserting. The Austrians had sustained only 400 casualties and had established a bridgehead around Occhiobello from where they would able to launch attacks against [[Battle of Carpi (1815)|Carpi]] and [[Battle of Casaglia|Casaglia]]. With the morale of Neapolitan army broken and the partisans in Lombardy unable to join his cause, Murat would eventually be forced to retire back to his original headquarters in [[Ancona]] by late April. ||| Battle ||| ||| +0 Battle of Oenophyta ||| Battle of Tanagra (457 BC) ||| In this period between the [[Persian Wars]] and the [[Peloponnesian War]], alliances and leagues sprang up and collapsed, although there was very little prolonged warfare. In 457 Athens, the leader of the [[Delian League]], came into conflict with [[Corinth, Greece|Corinth]] and their ally [[Sparta]] (leader of the [[Peloponnesian League]]) over [[Megara]]; two months prior to the Battle of Oenophyta, the Athenians were defeated at the [[Battle of Tanagra (457 BC)|Battle of Tanagra]] by Sparta, but Sparta had lost so many men that they could not take advantage of their victory. ||| ||| ||| +0 Battle of Oenophyta ||| Peloponnesian War ||| In this period between the [[Persian Wars]] and the [[Peloponnesian War]], alliances and leagues sprang up and collapsed, although there was very little prolonged warfare. In 457 Athens, the leader of the [[Delian League]], came into conflict with [[Corinth, Greece|Corinth]] and their ally [[Sparta]] (leader of the [[Peloponnesian League]]) over [[Megara]]; two months prior to the Battle of Oenophyta, the Athenians were defeated at the [[Battle of Tanagra (457 BC)|Battle of Tanagra]] by Sparta, but Sparta had lost so many men that they could not take advantage of their victory. ||| ||| ||| +0 Battle of Olszynka Grochowska ||| Battle of Stoczek ||| The Russian forces had some 59000 men under arms and 178 cannon. In addition, at 15:00 the weakened corps of General Shakhovskiy arrived at the battlefield and took part in the assault. The forces of Field Marshal Diebitsch were organised into five Infantry Corps, with some cavalry units attached to them. However, the main part of the Russian cavalry was defeated in the [[Battle of Stoczek]] and did not enter the combat. ||| Opposing forces ||| ||| +0 Battle of Oravais ||| Battle of Jutas ||| At the beginning of the war, Swedish forces had retreated to [[Oulu]]. They had then managed to repel the Russians and reach [[Savonia (historical province)|Savonia]] despite the capitulation of the fortress of [[Suomenlinna|Sveaborg]] by the end of summer 1808. Russia recuperated quickly, and by the end of August the Swedish army was again retreating northwards along the coastal road. To avoid being [[encirclement|encircled]], [[colonel]] [[Georg Carl von Döbeln]] was sent in advance to [[Nykarleby]] with a brigade. The threat of encirclement was exaggerated, but the Swedish army was at this point showing signs of panic and collapse. On September 13 the army left for [[Oravais]] and it halted to await news from von Döbeln, who was fighting the Russians at [[Battle of Jutas|Jutas]]. The sound of a cannon was heard in Oravais, and a brigade was sent to reinforce von Döbeln. ||| Prelude ||| ||| +0 Battle of Ormoc Bay ||| Battle of Leyte Gulf ||| The [[Imperial Japanese Navy]] responded to this attack with a combined fleet attack that led to the [[Battle of Leyte Gulf]] from 23–26 October. In this massive naval engagement, the Japanese Navy was destroyed as a strategic force. However, this was not at first clear, and the Japanese commander in the Philippines, General [[Tomoyuki Yamashita]], believed that the [[United States Navy]] had suffered severe casualties and that the Allied land forces might be vulnerable. Accordingly, he began to reinforce and resupply the garrisons on Leyte; over the course of the battle the Japanese ran nine [[convoy]]s to the island, landing around 34,000 troops from the 1st, 8th, 26th, 30th, and 102nd divisions. [[Ormoc City]] at the head of [[Ormoc Bay]] on the west side of Leyte was the main port on the island and the main destination of the convoys. ||| Background ||| ||| +0 Battle of Orthez ||| Battle of Toulouse (1814) ||| Soult lost 6 cannon and 3,985 men including 542 killed, 2,077 wounded and 1,366 prisoners. Foy was wounded. The Anglo-Portuguese lost 367 killed, 1,727 wounded and 80 captured for a total of 2,174. Walker was wounded and sent back to England. Soult continued his retreat. The next battle would be fought at [[Battle of Toulouse (1814)|Toulouse]].{{citation needed|date=December 2014}}<!--citation needed for the whole paragraph--> ||| Results ||| ||| +0 Battle of Ortona ||| Moro River Campaign ||| The [[Eighth Army (United Kingdom)|Eighth Army]]'s offensive on the [[Winter Line]] defences east of the [[Apennine Mountains|Apennine mountains]] had commenced on 23 November with the crossing of the river [[Sangro]]. By the end of the month, the main Gustav Line defences had been penetrated and the Allied troops were fighting their way forward to the next river, the [[Moro River Campaign|Moro]], {{convert|4|mi|km|abbr=on}} north of the mouth of which lay [[Ortona]]. For the Moro crossing in early December the exhausted [[78th Infantry Division (United Kingdom)|British 78th Infantry Division]] on the Allied right flank on the [[Adriatic Sea|Adriatic coast]] had been relieved by [[1st Canadian Division|Canadian 1st Infantry Division]]. By mid-December, after fierce fighting in the cold and mud, the Division's 1st Infantry Brigade had fought its way to within {{convert|2|mi|km|abbr=on}} of Ortona and was relieved by 2nd Infantry Brigade for the advance on the town. ||| Background ||| ||| +0 Battle of Osijek ||| 1991 Yugoslav campaign in Croatia ||| After the JNA [[Battle of Vukovar|captured Vukovar]] on 18 November 1991, Osijek was the next target for its [[1991 Yugoslav campaign in Croatia|campaign in Croatia]]. The JNA units subordinated to the 12th ([[Novi Sad]]) Corps, supported by the [[Serb Volunteer Guard]], achieved modest advances in late November and early December, capturing several villages south of Osijek, but the [[Croatian Army]] maintained its defensive front and limited the JNA's advances. ||| ||| ||| +0 Battle of Ostrach ||| Battle of Stockach (1799) ||| Although casualties appeared even on both sides, the Austrians had a significantly larger fighting force, both on the field at Ostrach, and stretched along a line between [[Lake Constance]] and [[Ulm]]. French casualties amounted to eight percent of the force and Austrian, approximately four percent. The French withdrew to [[Engen, Germany|Engen]] and [[Stockach]], where a few days later the armies engaged again, this time with greater losses on both sides, and an [[Battle of Stockach (1799)|Austrian victory]]. ||| ||| ||| +0 Battle of Ostrołęka (1831) ||| Battle of Berezina ||| On the morning of 26 May, most of the Polish army was west of the [[Narew River]] except for General [[Tomasz Łubieński]]'s [[5th Infantry Division (Poland)|5th Infantry Division]] (part of the II [[Corps]]), and General Ludwik Bogusławski's [[4th Regiment of Line Infantry]], which were still east of Ostrołęka. The danger, according to the commanding officer of the Polish Cavalry Brigade, General [[Karol Turno]], was in being trapped and pushed into the river as occurred in the [[Battle of Berezina]]. ||| The Battle ||| ||| +0 Battle of Overloon ||| Battle of Arnhem ||| In September 1944, the Allies had launched [[Operation Market Garden]], a major offensive from the Dutch-Belgian border across the south of the Netherlands through [[Eindhoven]] and [[Nijmegen]] toward the [[Rhine]] bridge at [[Arnhem]], with the goal of crossing the [[Rhine]] and bypassing the [[Siegfried Line]] in preparation for the final drive toward [[Berlin]]. Allied [[Airborne forces|airborne troops]] were [[Battle of Arnhem|defeated at the Rhine bridge in Arnhem]] and the advance stopped south of the [[Nederrijn|Lower Rhine]], resulting in a narrow salient that ran from the north of [[Belgium]] across the south-east of the Netherlands. ||| Background ||| ||| +0 Battle of Overloon ||| Battle of the Scheldt ||| Despite the fact that both Overloon and eventually Venray were taken by the Allies, the advance toward the bend of the Meuse near Venlo was postponed. This was due to the number of casualties the Allies had sustained and because troops were needed to secure more essential targets: the [[Battle of the Scheldt|Scheldt estuary]], leading to the vital port of [[Antwerp]] and the west of the province of [[North Brabant]], in between Antwerp and the salient that had been established. The offensive was eventually resumed, and by early December the German bridgehead west of the Meuse was destroyed. ||| Aftermath ||| ||| +0 Battle of Overloon ||| Operation Market Garden ||| In September 1944, the Allies had launched [[Operation Market Garden]], a major offensive from the Dutch-Belgian border across the south of the Netherlands through [[Eindhoven]] and [[Nijmegen]] toward the [[Rhine]] bridge at [[Arnhem]], with the goal of crossing the [[Rhine]] and bypassing the [[Siegfried Line]] in preparation for the final drive toward [[Berlin]]. Allied [[Airborne forces|airborne troops]] were [[Battle of Arnhem|defeated at the Rhine bridge in Arnhem]] and the advance stopped south of the [[Nederrijn|Lower Rhine]], resulting in a narrow salient that ran from the north of [[Belgium]] across the south-east of the Netherlands. ||| Background ||| ||| +0 Battle of Overloon ||| Operation Overlord ||| ''TAKE PAUSE FOR A MOMENT visitor, and consider that the ground you are now on was once one of the most fiercely contested sectors of the Overloon battlefield. Bitter hand-to-hand combat ensued here. Many young lives, having escaped from the battlefields of [[Battle of Anzio|Nettuno]] and [[Operation Overlord|Normandy]], met their ends under these trees.'' ||| Remembrance ||| ||| +0 Battle of P'ohang-dong ||| Battle of Taejon ||| Advance elements of the 24th Infantry were badly defeated in the [[Battle of Osan]] on 5 July, the first encounter between American and North Korean forces. The 24th made a final stand in the [[Battle of Taejon]], where it was almost completely destroyed but delayed North Korean forces until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of P'ohang-dong ||| World War II ||| Following the invasion of the [[Republic of Korea]] (South Korea) by its northern neighbor, the [[Democratic People's Republic of Korea]] (North Korea) and the subsequent outbreak of the Korean War on 25 June 1950, the [[United Nations]] decided to enter the conflict on behalf of South Korea. The [[United States]]—a member of the UN—subsequently committed ground forces to the Korean peninsula with the goal of fighting back the North Korean invasion and to prevent South Korea from collapsing. However, U.S. forces in the [[Far East]] had been steadily decreasing since the end of [[World War II]], five years earlier, and at the time the closest forces were the 24th Infantry Division, headquartered in [[Japan]]. ||| Background ||| Outbreak of war ||| +0 Battle of Paardeberg ||| Battle of Colenso ||| Field Marshal [[Frederick Roberts, 1st Earl Roberts|Roberts]] had been appointed to command the British forces in South Africa in December 1899, succeeding General [[Redvers Buller|Buller]]. (Roberts had just learned that his son [[Frederick Hugh Sherston Roberts|Freddy]] had been mortally wounded at the [[Battle of Colenso]].) ||| British plans ||| ||| +0 Battle of Paardeberg ||| Battle of Magersfontein ||| [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] advanced up the railway line in November 1899 with the objective of relieving the besieged city of [[Siege of Kimberley|Kimberley]] (and the town of [[Siege of Mafeking|Mafeking]], also under siege). Battles were fought on this front at Graspan, Belmont, [[Battle of Modder River|Modder River]] before the advance was halted for two months after the British defeat at the [[Battle of Magersfontein]]. In February 1900, Field Marshal [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]] assumed personal command of a significantly reinforced British offensive. ||| ||| ||| +0 Battle of Paardeberg ||| Battle of Modder River ||| [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] advanced up the railway line in November 1899 with the objective of relieving the besieged city of [[Siege of Kimberley|Kimberley]] (and the town of [[Siege of Mafeking|Mafeking]], also under siege). Battles were fought on this front at Graspan, Belmont, [[Battle of Modder River|Modder River]] before the advance was halted for two months after the British defeat at the [[Battle of Magersfontein]]. In February 1900, Field Marshal [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]] assumed personal command of a significantly reinforced British offensive. ||| ||| ||| +0 Battle of Paardeberg ||| Siege of Kimberley ||| [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] advanced up the railway line in November 1899 with the objective of relieving the besieged city of [[Siege of Kimberley|Kimberley]] (and the town of [[Siege of Mafeking|Mafeking]], also under siege). Battles were fought on this front at Graspan, Belmont, [[Battle of Modder River|Modder River]] before the advance was halted for two months after the British defeat at the [[Battle of Magersfontein]]. In February 1900, Field Marshal [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]] assumed personal command of a significantly reinforced British offensive. ||| ||| ||| +0 Battle of Paardeberg ||| Siege of Mafeking ||| [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] advanced up the railway line in November 1899 with the objective of relieving the besieged city of [[Siege of Kimberley|Kimberley]] (and the town of [[Siege of Mafeking|Mafeking]], also under siege). Battles were fought on this front at Graspan, Belmont, [[Battle of Modder River|Modder River]] before the advance was halted for two months after the British defeat at the [[Battle of Magersfontein]]. In February 1900, Field Marshal [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]] assumed personal command of a significantly reinforced British offensive. ||| ||| ||| +0 Battle of Pakchon ||| Battle of Chongju (1950) ||| The '''Battle of Pakchon''' (5 November 1950), also known as the '''Battle of Bochuan''' ({{zh|s=博川战斗|p=Bó Chuān Zhàn Dòu}}), took place ten days after the start of the Chinese [[Korean War#China intervenes (October – December 1950)|First Phase Offensive]], following the entry of the [[People's Volunteer Army]] into the [[Korean War]]. The offensive reversed the United Nations (UN) advance towards the [[Yalu River]] which had occurred after their intervention in the wake of the [[North Korea]]n invasion of [[South Korea]] at the start of the war. The battle was fought between British and Australian forces from the [[27th British Commonwealth Brigade]] with American armour and artillery in support, and the Chinese [[117th Division (People's Republic of China)|117th Division]], around the village of [[Pakchon]] on the [[Taeryong River]]. After [[Battle of Chongju (1950)|capturing Chongju]] on 30 October the British and Australians had been ordered to pull back to Pakchon in an attempt to consolidate the western flank of the [[US Eighth Army]]. Meanwhile, immediately following their [[Battle of Unsan|success at Unsan]] against the Americans, the Chinese 117th Division of the [[39th Army (People's Republic of China)|39th Army]] had attacked southward, intending to cut off the UN forces as they withdrew in the face of the unexpected Chinese assault. To halt the Chinese advance, the 27th British Commonwealth Brigade was ordered to defend the lower crossings of the Taeryong and [[Ch'ongch'on River|Chongchon]] rivers as part of a rearguard, in conjunction with the [[24th Infantry Division (United States)|US 24th Infantry Division]] further upstream on the right. ||| ||| ||| +0 Battle of Pakchon ||| Battle of Unsan ||| The '''Battle of Pakchon''' (5 November 1950), also known as the '''Battle of Bochuan''' ({{zh|s=博川战斗|p=Bó Chuān Zhàn Dòu}}), took place ten days after the start of the Chinese [[Korean War#China intervenes (October – December 1950)|First Phase Offensive]], following the entry of the [[People's Volunteer Army]] into the [[Korean War]]. The offensive reversed the United Nations (UN) advance towards the [[Yalu River]] which had occurred after their intervention in the wake of the [[North Korea]]n invasion of [[South Korea]] at the start of the war. The battle was fought between British and Australian forces from the [[27th British Commonwealth Brigade]] with American armour and artillery in support, and the Chinese [[117th Division (People's Republic of China)|117th Division]], around the village of [[Pakchon]] on the [[Taeryong River]]. After [[Battle of Chongju (1950)|capturing Chongju]] on 30 October the British and Australians had been ordered to pull back to Pakchon in an attempt to consolidate the western flank of the [[US Eighth Army]]. Meanwhile, immediately following their [[Battle of Unsan|success at Unsan]] against the Americans, the Chinese 117th Division of the [[39th Army (People's Republic of China)|39th Army]] had attacked southward, intending to cut off the UN forces as they withdrew in the face of the unexpected Chinese assault. To halt the Chinese advance, the 27th British Commonwealth Brigade was ordered to defend the lower crossings of the Taeryong and [[Ch'ongch'on River|Chongchon]] rivers as part of a rearguard, in conjunction with the [[24th Infantry Division (United States)|US 24th Infantry Division]] further upstream on the right. ||| ||| ||| +0 Battle of Pakchon ||| Battle of Yongju ||| The advance continued north with little respite, and on 22 October the Australians fought their first major action at [[Battle of Yongju|Yongju]], killing 150 North Koreans and capturing 239 of the brigade's 800 prisoners, for the loss of seven men wounded. ||| Background ||| Military situation ||| +0 Battle of Pakchon ||| New Guinea campaign ||| Australia was one of the first nations to commit units to the fighting, playing a small but sometimes significant part in the [[United Nations Command]], which was initially led by [[General of the Army (United States)|General]] [[Douglas MacArthur]]. Training and re-equipment began immediately, while hundreds of reinforcements were hastily recruited in Australia as part of [[K Force]]; they soon began arriving to fill out the battalion. The battalion's commanding officer, [[Lieutenant Colonel (Australia)|Lieutenant Colonel]] Floyd Walsh, was replaced by Lieutenant Colonel [[Charles Hercules Green|Charles Green]]. An officer with extensive operational experience fighting the Japanese in [[New Guinea campaign|New Guinea]] during the [[Second World War]], Green took over from Walsh due to the latter's perceived inexperience. ||| Background ||| Military situation ||| +0 Battle of Palembang ||| Battle of Singapore ||| No. 226 (Fighter) Group RAF also arrived at Palembang in early February: two squadrons of [[Hawker Hurricane]]s transported to Sumatra by the aircraft carrier {{HMS|Indomitable|R92|6}}. They were joined by the remnants of British, Australian and [[Royal New Zealand Air Force]] Hurricane and [[Brewster Buffalo]] squadrons, which had both inflicted and suffered heavy losses in intense air battles over the [[Battle of Malaya|Malayan]] and [[Battle of Singapore|Singapore campaigns]]. ||| Prelude ||| ||| +0 Battle of Palestro ||| Battle of Montebello (1859) ||| After the [[Battle of Montebello (1859)|battle of Montebello]] of 20 May 1859, the Franco-Piedmontese army moved towards [[Novara]], aiming to reach [[Milan]], the capital of [[Lombardy-Venetia]], the Austrian province in northern Italy. Part of the Piedmontese forces advanced to [[Robbio]] to cover the right flank of the allied army. ||| History ||| ||| +0 Battle of Palmyra ||| Battle of Damascus (1941) ||| By late June [[Battle of Damascus (1941)|Damascus]] had been taken and the Allied campaign commander, [[Henry Maitland Wilson]] was ready to launch two further thrusts, this time from western Iraq to complete the capture of Syria. ||| Background ||| ||| +0 Battle of Papudo ||| Battle of Iquique ||| ''Covadonga'', now a vessel in the Chilean Navy, later saw combat in the [[Battle of Iquique]] during the [[War of the Pacific]]. ||| Background ||| ||| +0 Battle of Papudo ||| War of the Pacific ||| ''Covadonga'', now a vessel in the Chilean Navy, later saw combat in the [[Battle of Iquique]] during the [[War of the Pacific]]. ||| Background ||| ||| +0 Battle of Paris (1814) ||| Battle of Brienne ||| Utilizing his advantages, Napoleon defeated the divided Coalition forces in detail, starting with the battles at [[Battle of Brienne|Brienne]] and [[Battle of La Rothière|La Rothière]], but could not stop the latter's advance. He then launched his brilliant [[Six Days' Campaign|six-day campaign]] against the huge Coalition army, under Blucher, threatening [[Paris]] to its northeast at the [[Aisne River]]. He successfully defeated and halted it, but could not seize the strategic initiative back in their favor as Blucher's forces were still largely intact. ||| Prelude ||| Campaign in northeastern France ||| +0 Battle of Paris (1814) ||| Campaign in north-east France (1814) ||| The Coalition forces, numbering more than 400,000{{sfn|Maude|1911|p=232}} and divided into three groups, finally [[Campaign in north-east France (1814)|entered northeastern France]] in January 1814. Facing them in the theatre are the French forces numbering only about 70,000 men, but they have the advantage of fighting in friendly territory and shorter supply lines and more secure lines of communication. ||| Prelude ||| Campaign in northeastern France ||| +0 Battle of Paris (1814) ||| French invasion of Russia ||| Napoleon was retreating from his failed [[French invasion of Russia|invasion of Russia]] in 1812. With the Russian armies following up victory, the Sixth Coalition was formed with Russia, Austria, Prussia, Great Britain, Sweden, Spain and other nations hostile to the French Empire. Even though the French were victorious in the initial battles during their [[German Campaign (1813)|campaign in Germany]], the Coalition armies eventually joined together and defeated them at the [[Battle of Leipzig]] in the autumn of 1813. After the battle, the Pro-French German [[Confederation of the Rhine]] collapsed, thereby losing Napoleon's hold on Germany east of the [[Rhine River|Rhine]]. The supreme commander of the Coalition forces in the theatre and the paramount monarch among the three main Coalition monarchs, the Russian Tsar [[Alexander I of Russia|Alexander I]], then ordered all Coalition forces in Germany to cross the Rhine and invade France. ||| Background ||| ||| +0 Battle of Paris (1814) ||| Peninsular War ||| Since the disaster at Russia and the start of the war, the French populace had been increasingly becoming war-weary. France had been exhausting itself at war for 25 years, and many of its men had died during the wars Napoleon had fought until then, making [[levee en masse|conscription]] there increasingly unpopular. Once the Coalition forces entered France, the leaders were astonished and surprised upon seeing that against their expectations and fears the populace never staged a popular uprising against them, in the scale of the popular [[Peninsular War|guerrilla war in Spain]] or Russia's patriotic resistance against the ''Grande Armée'' in 1812. Even Napoleon's own ex-foreign minister, [[Charles Maurice de Talleyrand-Périgord|Charles Maurice de Talleyrand]], sent a letter to the Coalition monarchs stating that the Parisians are already becoming angry against their Emperor and would even welcome the Coalition armies as if they are to enter the city. ||| Prelude ||| French war-weariness ||| +0 Battle of Pasir Panjang ||| Battle of Sarimbun Beach ||| 13,000 Japanese troops had made an [[Amphibious warfare|amphibious landing]] in the northwest part of Singapore near [[Sarimbun]] (see [[Battle of Sarimbun Beach]]), and had started to advance south towards Pasir Panjang. They had already captured [[Tengah Air Base#RAF Tengah|Tengah Airfield]] en route. The 13,000 soldiers constituted a significant part of the total strength of 36,000 Japanese troops deployed in the invasion of Singapore. ||| ||| ||| +0 Battle of Passchendaele ||| Battle of Verdun ||| Petain had committed the French Second Army to an attack at [[Battle of Verdun|Verdun]] in mid-July, in support of the operations in Flanders. The Second Offensive Battle of Verdun was delayed, partly due to the mutinies which had affected the French army after the failure of the [[Nivelle Offensive]] and also because of a German attack at Verdun from {{nowrap|28–29 June,}} which captured some of the ground intended as a jumping-off point for the French attack. A French counter-attack on 17 July re-captured the ground, the Germans regained it on 1 August, then took ground on the east bank on 16 August.{{sfn|Doughty|2005|pp=380–383}} The battle began on 20 August and by 9 September, had taken {{nowrap|10,000 prisoners}}. Fighting continued sporadically into October, adding to the German difficulties on the Western Front and elsewhere. Ludendorff wrote: ||| Battles ||| First phase, July–August ||| Second offensive battle of Verdun +0 Battle of Passchendaele ||| Italian Front (World War I) ||| Further operations and a British supporting attack along the Belgian coast from Nieuwpoort, combined with [[Operation Hush]] (an amphibious landing), were to have reached [[Bruges]] and then the Dutch frontier. The resistance of the [[4th Army (German Empire)|German 4th Army]], unusually wet weather, the onset of winter and the diversion of British and French resources to [[Italian Front (World War I)|Italy]], following the Austro-German victory at the [[Battle of Caporetto]] {{nowrap|(24 October – 19 November),}} enabled the Germans to avoid a general withdrawal, which had seemed inevitable in early October. The campaign ended in November, when the [[Canadian Corps]] captured Passchendaele, apart from local attacks in December and the new year. In 1918, the [[Battle of the Lys (1918)|Battle of the Lys]] and the [[Fifth Battle of Ypres]] were fought before the Allies occupied the Belgian coast and reached the Dutch frontier. ||| ||| ||| +0 Battle of Passchendaele ||| Nivelle Offensive ||| A campaign in Flanders was controversial in 1917 and has remained so. The [[Prime Minister of the United Kingdom|British Prime Minister]] [[David Lloyd George|Lloyd George]] opposed the offensive, as did General [[Ferdinand Foch]] the French Chief of the General Staff. [[Field marshal (United Kingdom)|Field Marshal]] [[Douglas Haig]], commanding the [[British Expeditionary Force (World War I)|British Expeditionary Force]], did not receive approval for the Flanders operation from the War Cabinet until 25 July. Matters of dispute by the participants, writers and historians since the war, have included the wisdom of pursuing an offensive strategy in the wake of the [[Nivelle Offensive]], rather than waiting for the arrival of the [[American Expeditionary Forces]] in France. ||| ||| ||| +0 Battle of Passchendaele ||| Operation Hush ||| Further operations and a British supporting attack along the Belgian coast from Nieuwpoort, combined with [[Operation Hush]] (an amphibious landing), were to have reached [[Bruges]] and then the Dutch frontier. The resistance of the [[4th Army (German Empire)|German 4th Army]], unusually wet weather, the onset of winter and the diversion of British and French resources to [[Italian Front (World War I)|Italy]], following the Austro-German victory at the [[Battle of Caporetto]] {{nowrap|(24 October – 19 November),}} enabled the Germans to avoid a general withdrawal, which had seemed inevitable in early October. The campaign ended in November, when the [[Canadian Corps]] captured Passchendaele, apart from local attacks in December and the new year. In 1918, the [[Battle of the Lys (1918)|Battle of the Lys]] and the [[Fifth Battle of Ypres]] were fought before the Allies occupied the Belgian coast and reached the Dutch frontier. ||| ||| ||| +0 Battle of Patay ||| Battle of Agincourt ||| In this battle, the English employed the same methods used in the victories at [[Battle of Crécy|Crécy]] in 1346 and [[Battle of Agincourt|Agincourt]] in 1415, deploying an army composed predominantly of longbowmen behind a barrier of sharpened [[Archer's stake|stakes]] driven into the ground to obstruct any attack by cavalry. On this occasion, however, the result was unusual. ||| The battle ||| ||| +0 Battle of Patay ||| Battle of Meung-sur-Loire ||| After the English abandoned the [[Siege of Orléans]] on 8 May 1429, the survivors of the besieging forces withdrew to nearby garrisons along the [[Loire]]. A month later, having gathered men and supplies for the forthcoming campaign, the French army, under the nominal command of the [[Jean II, Duke of Alençon|Duke of Alençon]], set out to capture these positions and the bridges they controlled. On 12 June they took [[Battle of Jargeau|Jargeau]] by storm, then captured the bridge at [[Battle of Meung-sur-Loire|Meung-sur-Loire]] and marched on, without attacking the nearby castle, to lay siege to [[Battle of Beaugency (1429)|Beaugency]] on 15 June. ||| Background ||| ||| +0 Battle of Peachtree Creek ||| Battle of Chancellorsville ||| Throughout the morning of July 20, the Army of the Cumberland crossed Peachtree Creek and began taking up defensive positions. The [[XIV Corps (ACW)|XIV Corps]], commanded by Major General [[John M. Palmer (politician)|John M. Palmer]], took position on the right. The [[XX Corps (ACW)|XX Corps]], commanded by Major General [[Joseph Hooker]] (the former commander of the [[Army of the Potomac]] who had lost the [[Battle of Chancellorsville]]) took position in the center. The left was held by a single division ([[John Newton (engineer)|John Newton's]]) of the [[IV Corps (ACW)|IV Corps]], as the rest of that corps had been sent to reinforce Schofield and McPherson on the east side of Atlanta. The Union forces began preparing defensive positions, but had only partially completed them by the time the Confederate attack began. ||| Battle ||| ||| +0 Battle of Peachtree Creek ||| Battle of New Hope Church ||| Sherman had launched his grand offensive against the [[Army of Tennessee]] early May. For more than two months, Sherman's forces, which consisted of the [[Army of the Cumberland]], the [[Army of the Tennessee]] and the [[Army of the Ohio]] sparred with the Confederate Army of Tennessee, then under the command of General [[Joseph E. Johnston]]. Although the Southerners gained tactical successes at the [[Battle of New Hope Church]], the [[Battle of Pickett's Mill]], and the [[Battle of Kennesaw Mountain]], they were unable to counter Sherman's superior numbers. Gradually, the Union forces flanked the Confederates out of every defensive position they attempted to hold. On July 8, Union forces crossed the [[Chattahoochee River]], the last major natural barrier between Sherman and Atlanta. ||| Background ||| ||| +0 Battle of Peebles's Farm ||| Siege of Petersburg ||| The '''Battle of Peebles's Farm''' (or '''Poplar Springs Church''') was the western part of a simultaneous [[Union Army|Union]] offensive against the [[Confederate States Army|Confederate]] works guarding [[Petersburg, Virginia|Petersburg]] and [[Richmond, Virginia]], during the [[Siege of Petersburg]] in the [[American Civil War]]. ||| ||| ||| +0 Battle of Peking (1900) ||| World War II ||| A peace agreement was concluded between the Eight-Nation Alliance and representatives of the Chinese government [[Li Hongzhang|Li Hung-chang]] and [[Yikuang, Prince Qing|Prince Ching]] on 7 September 1901. The treaty required China to pay an indemnity of $335 million (over $4 billion in current dollars) plus interest over a period of 39 years. Also required was the execution or exile of government supporters of the Boxers and the destruction of Chinese forts and other defenses in much of northern China. Ten days after the treaty was signed the foreign armies left Peking, although legation guards would remain there until [[World War II]]. ||| Occupation ||| ||| +0 Battle of Pelee Island ||| Patriot War ||| The '''Battle of Pelee Island''' took place during the [[Patriot War]] along what is now the Michigan-Ontario border in 1838 involving small groups of men on each side of the border seeking to 'liberate' [[Upper Canada]] from the British. ||| ||| ||| +0 Battle of Perryville ||| Battle of Antietam ||| Following the Battle of Perryville, the Union maintained control of Kentucky for the rest of the war. Historian [[James M. McPherson]] considers Perryville to be part of a great [[Turning point of the American Civil War|turning point]] of the war, 'when battles at [[Battle of Antietam|Antietam]] and Perryville threw back Confederate invasions, forestalled European mediation and recognition of the Confederacy, perhaps prevented a Democratic victory in the northern elections of 1862 that might have inhibited the government's ability to carry on the war, and set the stage for the [[Emancipation Proclamation]] which enlarged the scope and purpose of the conflict.' ||| Aftermath ||| ||| +0 Battle of Perryville ||| Battle of Gettysburg ||| Once again the Federals had a strong defensive position, with good artillery support and a stone wall at the top of a steep slope. Maney's and Stewart's men attempted three assaults, all unsuccessful, and withdrew to the vicinity of the Open Knob at around 5:30 p.m. The assault by Maney's brigade over three hours was the bloodiest of the battle, and arguably its most crucial action. Historian [[Kenneth W. Noe]] describes Maney's final repulse as the '[[high-water mark of the Confederacy]] in the western theater, no less important than the Angle at [[Battle of Gettysburg|Gettysburg]].' ||| Battle ||| Attack from the Confederate right ||| +0 Battle of Perryville ||| Battle of Waterloo ||| |quote=The two other corps of Buell's army were each as large as the entire Confederate force engaged. Had they both advanced boldly once the battle was underway, they could have seized the town of Perryville, cut off the attackers from their supply depots in central Kentucky, and very possibly achieved a decisive battlefield victory on the model of [[Battle of Austerlitz|Austerlitz]] or [[Battle of Waterloo|Waterloo]]. ||| Aftermath ||| ||| +0 Battle of Pesaro ||| Battle of Cesenatico ||| The '''Battle of Pesaro''' was a minor battle in the [[Neapolitan War]] that took place on 28 April 1815 in the town of [[Pesaro]]. The main Neapolitan army, commanded by their king, [[Joachim Murat]], was retreating to their original headquarters in [[Ancona]] following a string a defeats in northern Italy. The Neapolitans were being pursued by an Austrian corps under the command of [[Adam Albert von Neipperg]]. Just like at the [[Battle of Cesenatico]], a vastly outnumbered Austrian raiding party of [[hussar]]s and [[Jäger (military)|jägers]] once again successfully attacked a Neapolitan garrison of 3,000 men during the night. The Austrians brought out 250 prisoners with only minor casualties whilst inflicting moderate casualties on the garrison, forcing them to flee during the night. ||| ||| ||| +0 Battle of Philippi (West Virginia) ||| Battle of Fort Sumter ||| After the commencement of hostilities at [[Battle of Fort Sumter|Fort Sumter]] in April 1861, [[Major General (United States)|Maj. Gen.]] [[George B. McClellan]] returned to the Army and on May 13 assumed command of the [[Department of the Ohio]], headquartered in [[Cincinnati, Ohio]]. McClellan planned an offensive into what is now the State of West Virginia (at the time the northwestern counties of the Commonwealth of Virginia) which he hoped would lead to a campaign against the [[Confederate States of America|Confederate]] capital of [[Richmond, Virginia]]. His immediate objectives were to occupy the territory to protect the largely pro-[[Union (American Civil War)|Union]] populace in the counties along the Ohio River, and to keep open the [[Baltimore & Ohio Railroad]] line, a critical supply line for the Union. ||| Background ||| ||| +0 Battle of Philippi (West Virginia) ||| First Battle of Bull Run ||| The '''Battle of Philippi''' formed part of the [[Western Virginia Campaign]] of the [[American Civil War]], and was fought in and around [[Philippi, West Virginia|Philippi]], [[Virginia]] (now [[West Virginia]]) on June 3, 1861. A decisive Union victory, it was the first organized land action of the war, though generally viewed as a skirmish rather than a battle. However, the Northern press celebrated it as an epic triumph, and this encouraged Congress to call for the drive on Richmond that ended with the Union defeat at [[First Battle of Bull Run|First Bull Run]] in July. It brought overnight fame to [[Major General (United States)|Maj. Gen.]] [[George B. McClellan]], and was notable for the first battlefield amputations. It also encouraged the western counties of Virginia to form their own Union state. ||| ||| ||| +0 Battle of Phillora ||| Battle of Chawinda ||| |isbn = 978-81-7099-890-7}} A day before, the Indian Army had experienced another victory at [[Battle of asal uttar|Asal Uttar]] when they successfully thwarted Pakistani offensive in the Khem Karan sector. The continued thrust by the Indian Army into Pakistani territory finally culminated in the [[Battle of Chawinda]], where Indian army's advance was successfully halted. {{cite book|last=Fricker|first=John|title=Battle for Pakistan: the air war of 1965|year=1979|publisher=I. Allan|location=University of Michigan|pages=128|url =https://books.google.com/books?ei=7x-XVPS9EselNrKrhMAC&id=RPttAAAAMAAJ&dq=Battle+for+Pakistan%3A+the+air+war+of+1965+chawinda&focus=searchwithinvolume&q=+chawinda ||| Conclusion ||| ||| +0 Battle of Picacho Pass ||| Battle of Glorieta Pass ||| Before this engagement a Confederate cavalry patrol had advanced as far west as [[Stanwix Station]], where it was burning the hay stored there when it was attacked by a patrol of the [[California Column]]. The Confederates had been burning hay stored at the stage stations in order to delay the Union advance from California. About the same time as the skirmish at [[Picacho Peak]], a larger force of Confederates was thwarted in its attempt to advance northward from Santa Fe, New Mexico, in the [[Battle of Glorieta Pass]]. By July the Confederates had retreated to Texas, though pro-Confederate militia units operated in some areas until mid-1863. The following year, the Union organized its own [[Arizona Territory|territory of Arizona]], dividing New Mexico along the state's current north-south border, extending control southwards from the provisional capital of [[Prescott, Arizona|Prescott]]. The encounter at Picacho Pass may have been only a minor event in the Civil War, but it can be considered the high-water mark of the Confederate West. ||| Aftermath ||| ||| +0 Battle of Pickett's Mill ||| Battle of New Hope Church ||| After the Union defeat at [[Battle of New Hope Church|New Hope Church]], Sherman ordered Maj. Gen. [[Oliver O. Howard]] to attack Johnston's seemingly exposed right flank. The Confederates were ready for the attack, which did not unfold as planned because supporting troops never appeared. The Confederates repulsed the attack causing high casualties. ||| ||| ||| +0 Battle of Pokoku and Irrawaddy River operations ||| Battle of Imphal ||| The [[31st Division (Imperial Japanese Army)|Japanese 31st Division]]'s thrust [[Battle of Kohima|at Kohima]] had been a costly failure, eventually forcing it to a disastrous retreat. The [[33rd Division (Imperial Japanese Army)|Japanese 33rd Division]], [[15th Division (Imperial Japanese Army)|Japanese 15th Division]] and the [[Indian National Army|INA 1st Division]] had suffered a similar fate [[Battle of Imphal|at Imphal]]. The Japanese and allied forces lost at least fifty thousand dead.{{Citation needed|date=August 2007}} In previous years there used to be lull during the monsoon period but not this year (1944–45). The command decided that it was time to target the heart of [[Imperial Japanese Army|Japanese Army]] in Burma. General [[William Slim, 1st Viscount Slim|William 'Bill' Slim]]'s plan through the monsoon months had been pursuit of the defeated Japanese in [[Kohima]] and plains of [[Imphal]] with [[5th Indian Infantry Division]] down the Tiddim Road and [[1st (African) Division (United Kingdom)|11th East African Division]] down the [[Kabaw Valley]], until the two joined hand at Kalemyo. The next offensive plan centred on the occupation of Central Burma, as far south as [[Mandalay]] to exploit further south and destroy the Japanese forces in the Shewbo Plains, north of [[Irrawaddy River|Irrawaddy]], where armour could be used. Allied forces crossed River Chindwin and the spearheads of both corps of the Fourteenth Army (IV and XXXIII Corps) were moving into selected battle areas, which surprised Japanese as they had not anticipated any major operations during the monsoon period. The British Fourteenth Army was now faced with a major obstacle (the Irrawaddy) covered by determined Japanese. The Irrawaddy River in its middle is about {{convert|2000|yd|m}} broad and dotted with treacherous and shifting sand bars. An opposed direct crossing would have been very expensive with low percentage of success. ||| Preparation ||| ||| +0 Battle of Pokoku and Irrawaddy River operations ||| Burma Campaign ||| The '''Battle of Pakokku and Irrawaddy River operations''' were a series of battles fought between the [[British Indian Army]] and the [[Imperial Japanese Army]] and allied forces over the successful [[Allies of World War II|Allied]] [[Burma Campaign]] on the [[China Burma India Theater]] during World War II. The battles and operations were instrumental in facilitating the eventual capture of [[Rangoon]] in summer 1945. ||| ||| ||| +0 Battle of Pollilur (1780) ||| Battle of Chillianwala ||| The '''Battle of Pollilur''', also known as the '''Battle of Polilore''' or '''Battle of Perambakam''', took place on 10 September 1780 at Pollilur near the city of [[Kanchipuram]] in present-day [[Tamil Nadu]] state, India as part of the [[Second Anglo-Mysore War]]. It was waged between two forces commanded by [[Tipu Sultan]] of the [[Kingdom of Mysore]], and Colonel [[William Baille]] of the [[British East India Company]]. The army of the East India Company surrendered and suffered a high number of casualties. It was the worst loss the British suffered on the subcontinent until [[Battle of Chillianwala|Chillianwala]]. ||| ||| ||| +0 Battle of Port Arthur ||| Revolution of 1905 ||| The {{Nihongo|'''Battle of Port Arthur'''|旅順口海戦|Ryojunkō Kaisen|lead=yes}} of 8–9 February 1904 (Monday February 8 - Tuesday February 9) marked the commencement of the [[Russo-Japanese War]]. It began with a surprise night attack by a squadron of [[Imperial Japanese Navy|Japanese]] [[destroyer]]s on the [[Imperial Russian Navy|Russia]]n fleet anchored at [[Lüshunkou|Port Arthur]], [[Manchuria]], and continued with an engagement of major [[surface combatant]]s the following morning; further skirmishing off Port Arthur would continue until May 1904. The battle itself ended inconclusively, though later events would result in the war [[Treaty of Portsmouth|ending]] in a Japanese victory. For a major European power to lose to the Japanese was not only inconceivable to the world at large but also fraught with dire circumstances for the Imperial regime; the Russian people, from the nobility down to the recently emancipated serfs, lost confidence in the military and in the Tsarist political system. This led directly to the [[Revolution of 1905|Russian Revolution of 1905]], and would be well-remembered upon yet-more-disastrous defeats to come later in [[World War I]]. ||| ||| ||| +0 Battle of Port Cros ||| Operation Dragoon ||| The '''Battle of Port Cros''' was a battle of [[World War II]] fought off the [[French Riviera]] in the [[Mediterranean Sea]] on the island of [[Port-Cros]]. The battle began when a [[United States]] [[United States Navy|Navy]] warship encountered two [[Nazi Germany|German]] warships in August 1944 while supporting the [[Allies of World War II|Allied]] [[Operation Dragoon]]. It was one of the few surface engagements fought between the [[United States Navy]] and the [[Nazi Germany|German]] ''[[Kriegsmarine]]''. Later that day, the combined American and [[Canada|Canadian]] [[1st Special Service Force|Devil's Brigade]] was dropped on the main island and captured the German held positions. ||| ||| ||| +0 Battle of Portland ||| Battle of Scheveningen ||| The naval '''Battle of Portland''', or '''Three Days' Battle''' took place during 18-20 February 1653 (28 February – 2 March 1653 ([[Gregorian calendar]])),{{efn|name=date|During this period in English history dates of events are usually recoded in the [[Julian calendar]], while those the Netherlands are recorded in the [[Gregorian calendar]]. In this article dates are in the Julian calendar with the start of the year adjusted to 1 January (see [[Old Style and New Style dates]]).<!--NB. This is per [[WP:OSNS]]-->}} during the [[First Anglo-Dutch War]], when the fleet of the [[Commonwealth of England]] under General at Sea [[Robert Blake (admiral)|Robert Blake]] was attacked by a fleet of the [[Dutch Republic]] under Lieutenant-Admiral [[Maarten Tromp]] escorting merchant shipping through the [[English Channel]]. The battle failed to settle supremacy of the English Channel, although both sides claimed victory, and ultimate control over the Channel would only be decided at the [[Battle of the Gabbard]] which allowed the English to blockade the Dutch coast until the [[Battle of Scheveningen]], where Admiral Maarten Tromp would meet his fate at the hands of an English musket ball. As such, it can be considered a slight setback for the English nation and another example of Dutch superiority regarding pure seamanship at the time. It also illustrated England's drive to control the seas, which would ultimately allow it to become the prime maritime power of the world. ||| ||| ||| +0 Battle of Portland ||| Battle of Worcester ||| This changed when Parliamentary armies finally routed the Royalists at the [[Battle of Worcester]], effectively ending the English Civil War. With Cromwell fully in power, the Parliament passed the [[Navigation Acts#Navigation Ordinance 1651|Navigation Act of 1651]], requiring all goods destined to English ports to be transported by English ships, which severed part of the Dutch ability to trade, since they were cut off from all of England's colonies in the Americas and elsewhere. Later that year the Parliament gave an order which allowed English [[privateer]]s and warships to seize Dutch shipping and 'recover their losses' from Dutch vessels. Finally, the English Parliament began to enforce its sovereignty over the 'British Seas', which granted the English Navy dominion from the [[North Sea]] to [[Cape Finisterre]]. The translation of Parliament's words into action came when English Admiral Sir [[George Ayscue]] claimed Barbados as part of the Commonwealth and seized 27 Dutch ships. ||| Background ||| ||| +0 Battle of Portland ||| Battle of the Downs ||| The Dutch response was divided; the moderate [[States of Holland]] tried to appease the English; but when the negotiations failed and the Navigation Acts were adopted the ferocious Orangist faction became more powerful, and the [[Estates-General of the Netherlands|States General]] passed a resolution which would allow the Dutch war fleet, to be tripled in size, to protect Dutch interest over the areas in question. This fleet was put under the command of Admiral [[Maarten Tromp]], who had defeated the sixth and final [[Spanish Armada]] at the [[Battle of the Downs]], 31 October 1639. That same year, the Dutch signed a treaty with [[Denmark]] with the intent to hurt English shipping. War finally broke out after a confrontation between admirals [[Robert Blake (admiral)|Robert Blake]] and Maarten Tromp, May 1652, at the [[Battle of Goodwin Sands|Battle of Dover]]. ||| Background ||| ||| +0 Battle of Portland ||| English Civil War ||| The [[First Anglo-Dutch War]] was caused by friction between the two naval powers of the century, competing for strategic supremacy over the world's merchant routes. [[England]] and the [[Dutch Republic|United Provinces]] had always been 'natural allies' against the [[Habsburgs]], as deemed by the [[Council of State]] under the rule of [[Charles I of England|Charles I]]. It has been argued that had Charles I stayed in power the war between the two nations would have never sprung, as he would never have obtained the necessary funding from parliament. However, the rise of the English Parliament under [[Oliver Cromwell]] saw the deterioration of diplomacy between the two as the Dutch [[stadtholder]] financially supported the Royalists. During the [[English Civil War]], the Dutch had taken advantage of the internal strife within their neighbours, and greatly expanded their maritime presence throughout the world's merchant harbors and routes, ultimately even challenging British dominance in its colonies, and the Dutch even boasted of driving all nations out of the sea. Nonetheless, Cromwell did not challenge the Dutch, still consolidating his power at home. ||| Background ||| ||| +0 Battle of Portland ||| Spanish Armada ||| The Dutch response was divided; the moderate [[States of Holland]] tried to appease the English; but when the negotiations failed and the Navigation Acts were adopted the ferocious Orangist faction became more powerful, and the [[Estates-General of the Netherlands|States General]] passed a resolution which would allow the Dutch war fleet, to be tripled in size, to protect Dutch interest over the areas in question. This fleet was put under the command of Admiral [[Maarten Tromp]], who had defeated the sixth and final [[Spanish Armada]] at the [[Battle of the Downs]], 31 October 1639. That same year, the Dutch signed a treaty with [[Denmark]] with the intent to hurt English shipping. War finally broke out after a confrontation between admirals [[Robert Blake (admiral)|Robert Blake]] and Maarten Tromp, May 1652, at the [[Battle of Goodwin Sands|Battle of Dover]]. ||| Background ||| ||| +0 Battle of Potidaea ||| Battle of Sybota ||| The '''Battle of Potidaea''' was, with the [[Battle of Sybota]], one of the catalysts for the [[Peloponnesian War]]. It was fought near [[Potidaea]] in 432 BC between [[Athens]] and a combined army from [[Corinth, Greece|Corinth]] and Potidaea, along with their various allies. ||| ||| ||| +0 Battle of Poznań (1945) ||| Eastern Front (World War II) ||| By 1945, the Red Army advances on the [[Eastern Front (World War II)|Eastern Front]] had driven the Germans out of eastern Poland as far as the [[Vistula River]]. The Red Army launched the [[Vistula-Oder Offensive]] on 12 January 1945, inflicted a huge defeat on the defending German forces, and advanced rapidly into western Poland and eastern Germany. ||| Background ||| ||| +0 Battle of Prairie Grove ||| Battle of Cane Hill ||| Unexpectedly Blunt moved forward with his 5,000 men and 30 artillery pieces to meet Marmaduke. The two clashed in a nine-hour running battle known as the [[Battle of Cane Hill]] on November 28, 1862. Marmaduke was pushed back but Blunt found himself 35 miles deeper into Arkansas and that much farther from the remainder of his army. ||| Maneuvering to battle ||| ||| +0 Battle of Prairie Grove ||| Battle of Pea Ridge ||| In late 1862 [[Confederate States of America|Confederate]] forces had withdrawn from southwest [[Missouri]] and were wintering in the wheat-rich and milder climate of northwest Arkansas. Many of the regiments had been transferred to Tennessee, after the defeat at the [[Battle of Pea Ridge]] in March, to bolster the [[Confederate Army of Tennessee|Army of Tennessee]]. ||| Strategic situation: Union ||| ||| +0 Battle of Prairie Grove ||| Battle of Van Buren ||| By December 29 Blunt and Herron would threaten Hindman at his Van Buren sanctuary and [[Battle of Van Buren|drive him from northwest Arkansas]] permanently. ||| Battle ||| ||| +0 Battle of Preston (1715) ||| Battle of Sedgemoor ||| The battle of Preston is often claimed to have been the last fought on English soil, but this depends on the definition of 'battle', for which there are different interpretations. Preston was a siege rather than a [[pitched battle]], so the [[Battle of Sedgemoor]] fought in 1685 is also a contender for the title of the last battle, as is the [[Clifton Moor Skirmish|skirmish at Clifton Moor]] near [[Penrith, England|Penrith]] in [[Cumbria]] on 18 December 1745 during the [[Jacobite Risings#The Rebellion/Rising of 1745 ('The Forty-Five')|'Forty-Five' Jacobite Rebellion]]. However, there was a great deal of savage fighting in streets all over the town during the Battle of Preston, far more than in most sieges. It was as much of a battle as, for example, the Battle of St Albans (1455) in the [[Wars of the Roses]], which was also fought in the streets of a town, but which is generally regarded as a battle and not a siege, as is the [[Battle of Reading (1688)|Battle of Reading]] of 1688. The [[Battle of Bossenden Wood]], fought on 31 May 1838, is a much later contender. ||| ||| ||| +0 Battle of Preston (1715) ||| Second English Civil War ||| :''See [[Battle of Preston (1648)]] for the battle of the [[Second English Civil War]].'' ||| ||| ||| +0 Battle of Prestonpans ||| Battle of Culloden ||| The battle greatly boosted the morale of all Stuart supporters, and more recruits were soon gained in Scotland. At this point, the campaign was going the Stuarts' way. The Prince's army advanced as far as [[Derby]] by December 1745 unimpeded, using the most skilled generalship. However, in Derby, the Council of Chiefs resolved at Exeter House to proceed no further, since they had been deliberately misled into believing that a major Hanoverian army stood between them and London. They conducted a skilled retreat, with a further victory at [[Battle of Falkirk (1746)|Falkirk]], before finally meeting total defeat at the [[Battle of Culloden]], near [[Inverness]]. ||| The second Jacobite rising continues ||| ||| +0 Battle of Prestonpans ||| Battle of Fontenoy ||| As part of the [[War of the Austrian Succession]], George II had sent most of the British army to the continent of Europe to do battle with their long-time enemy, the French. In May 1745 at the [[Battle of Fontenoy]], both armies suffered heavy casualties, but the French carried the day and forced the allied British, Hanoverian and Austrian army from the field. Maintaining the offensive, the French invaded and captured a number of Flemish towns through 1745, and kept the opposing forces off-balance throughout. ||| Background ||| The second Jacobite Rising ||| +0 Battle of Prestonpans ||| Juno Beach ||| Subsequent public perception of the battle in general and General Cope in particular has been influenced by [[Adam Skirving]]'s popular songs. Skirving was a local farmer who did not see the battle itself, but visited the battlefield later that afternoon where he was, by his own account, mugged by the victors. Skirving wrote two songs, '[[Hey, Johnnie Cope, Are Ye Waking Yet?]]', and 'Tranent Muir'; the former is quite well known, and is a short, catchy, and mostly historically inaccurate insult to Cope. The tune is still played by some Scottish regiments for [[Reveille]] and was also played as the [[51st (Highland) Division]] disembarked on [[Juno Beach]] in Normandy on June 6, 1944. While Cope's troops fled the battle, he himself did not; nor is it true that he slept the night before. Poet [[Robert Burns]] later wrote his own words to the song, but these are not as well known as Skirving's. ||| The battle in art and legend ||| ||| +0 Battle of Prestonpans ||| War of the Austrian Succession ||| As part of the [[War of the Austrian Succession]], George II had sent most of the British army to the continent of Europe to do battle with their long-time enemy, the French. In May 1745 at the [[Battle of Fontenoy]], both armies suffered heavy casualties, but the French carried the day and forced the allied British, Hanoverian and Austrian army from the field. Maintaining the offensive, the French invaded and captured a number of Flemish towns through 1745, and kept the opposing forces off-balance throughout. ||| Background ||| The second Jacobite Rising ||| +0 Battle of Prokhorovka ||| Battle of Raseiniai ||| |See also: [[Battle of Brody (1941)]], [[Battle of Raseiniai]], [[Operation Goodwood]], [[Valley of Tears|Battle for Golan Heights (1973)]], and others. ||| References ||| Notes ||| +0 Battle of Prokhorovka ||| Operation Goodwood ||| |See also: [[Battle of Brody (1941)]], [[Battle of Raseiniai]], [[Operation Goodwood]], [[Valley of Tears|Battle for Golan Heights (1973)]], and others. ||| References ||| Notes ||| +0 Battle of Prokhorovka ||| Valley of Tears ||| |See also: [[Battle of Brody (1941)]], [[Battle of Raseiniai]], [[Operation Goodwood]], [[Valley of Tears|Battle for Golan Heights (1973)]], and others. ||| References ||| Notes ||| +0 Battle of Puerto de Baños ||| Battle of Talavera ||| In the summer of 1809, the British army of [[Arthur Wellesley, 1st Duke of Wellington]] marched into western Spain to join [[Gregorio García de la Cuesta]]'s Spanish army. Wilson's 3,500-man Portuguese-Spanish force served as the left flank guard of this offensive. The Allied armies defeated King [[Joseph Bonaparte]]'s [[First French Empire|Imperial French]] army at [[Battle of Talavera|Talavera]] at the end of July. However, the threat of Marshal [[Nicolas Soult]]'s large army to the north soon forced Wellesley and Cuesta to withdraw to the west. ||| ||| ||| +0 Battle of Pyongtaek ||| Battle of Pusan Perimeter ||| The regiment was forced to regroup at Cheonan and oppose the North Korean forces again, and it suffered heavy casualties before being forced to withdraw after the [[Battle of Cheonan]]. The 24th Infantry Division would continue to fight in delaying actions such as this one for two more weeks until it was overwhelmed at the [[Battle of Taejon]], however by that time the [[Pusan Perimeter]] would be in place, and other US divisions would be able to hold the line for several more months during the [[Battle of Pusan Perimeter]] until the [[Inchon Landings]], when American forces would finally defeat the North Korean Army, ending the first phase of the war. ||| Aftermath ||| ||| +0 Battle of Pyongtaek ||| Battle of Taejon ||| The regiment was forced to regroup at Cheonan and oppose the North Korean forces again, and it suffered heavy casualties before being forced to withdraw after the [[Battle of Cheonan]]. The 24th Infantry Division would continue to fight in delaying actions such as this one for two more weeks until it was overwhelmed at the [[Battle of Taejon]], however by that time the [[Pusan Perimeter]] would be in place, and other US divisions would be able to hold the line for several more months during the [[Battle of Pusan Perimeter]] until the [[Inchon Landings]], when American forces would finally defeat the North Korean Army, ending the first phase of the war. ||| Aftermath ||| ||| +0 Battle of Pyongtaek ||| World War II ||| The battalion's new commander, Lieutenant Colonel Ayres, was apparently given faulty intelligence, and he told his command that the Koreans advancing south were poorly trained and poorly equipped. Additionally, only a few of the soldiers of the regiment had any combat experience from [[World War II]], and they had been hastily transferred from another division the day before. ||| Background ||| Battle of Osan ||| +0 Battle of Quebec (1775) ||| Battle of the Plains of Abraham ||| Governor Carleton, despite appearing to have a significant advantage in manpower, chose not to attack the American camp, and remained within Quebec's walls. Montgomery, in analysing the situation before the battle, had observed that Carleton served under [[James Wolfe]] during the 1759 [[Siege of Quebec]], and knew that the French General [[Louis-Joseph de Montcalm]] had paid a heavy price for leaving the city's defenses, ultimately losing the city and his life in the [[Battle of the Plains of Abraham]]. British General [[James Murray (Quebec governor)|James Murray]] had also lost [[Battle of Sainte-Foy|a battle]] outside the city in 1760; Montgomery judged that Carleton was unlikely to repeat their mistakes. ||| Siege ||| ||| +0 Battle of Quebec (1775) ||| French and Indian War ||| One significant expectation of the American advance into Quebec was that the large French Catholic Canadian population of the province and city would rise against British rule. Since the British took control of the province, during the [[French and Indian War]] in 1760, there had been difficulties and disagreements between the local French Catholics and the Protestant English-speaking British military and civilian administrations. However these tensions had been eased by the passage of the [[Quebec Act]] of 1774, which restored land and many civil rights to the Canadians (an act which had been [[Intolerable Acts|condemned]] by the thirteen rebelling colonies). The majority of Quebec's French inhabitants chose not to play an active role in the American campaign, in large part because, encouraged by their clergy, they had come to accept British rule with its backing of the Catholic Church and preservation of French culture. ||| Background ||| ||| +0 Battle of Quebec (1775) ||| Invasion of Canada (1775) ||| The Continental Army began [[Invasion of Canada (1775)|moving into Quebec]] in September 1775. Its goal, as stated in a proclamation by General Schuyler, was to 'drive away, if possible, the troops of Great Britain' that 'under the orders of a despotic ministry ... aim to subject their fellow-citizens and brethren to the yoke of a hard slavery.' ||| Background ||| ||| +0 Battle of Quebec (1775) ||| Siege of Boston ||| The men Arnold chose for his expedition were volunteers drawn from New England companies serving in the [[Siege of Boston]]. They were formed into two battalions for the expedition; a third battalion was composed of riflemen from [[Pennsylvania]] and [[Virginia]] under Lieutenant Colonel [[Daniel Morgan]]'s command. The trek through the wilderness of Maine was long and difficult. The conditions were wet and cold, and the journey took much longer than either Arnold or Washington had expected. Bad weather and wrecked boats spoiled much of the expedition's food stores, and about 500 men of the original 1,100 died en route or turned back. Those who turned back, including one of the New England battalions, took many of the remaining provisions with them. The men who continued on were starving by the time they reached the first French settlements in early November. ||| Arnold's arrival ||| ||| +0 Battle of Queenston Heights ||| Battle of Lacolle Mills (1812) ||| At Albany, the defeat of Van Rensselaer only increased Henry Dearborn's reluctance to act. With two armies already defeated, Dearborn was not keen on leading the third. He led a half-hearted advance as far as [[Odelltown, Quebec|Odelltown]], where his militia refused to proceed further. After his regulars were easily repulsed by the garrison of an outpost at [[Battle of Lacolle Mills (1812)|Lacolle Mills]], Dearborn retired to American territory. He would be replaced the following year with only minor successes to his credit. ||| Aftermath ||| ||| +0 Battle of Queenston Heights ||| Siege of Fort Wayne ||| The one aggressive action which Brock was able to take during the armistice was to facilitate the [[Siege of Fort Wayne]] on the [[Maumee River]], which ended in a defeat of the Native attackers. ||| Prelude ||| British moves ||| +0 Battle of Quiberon Bay ||| Battle of Trafalgar ||| The power of the French fleet was broken, and would not recover before the war was over; in the words of [[Alfred Thayer Mahan]] (''[[The Influence of Sea Power upon History]]''), 'The battle of 20 November 1759 was the [[Battle of Trafalgar|Trafalgar]] of this war, and [...] the English fleets were now free to act against the colonies of France, and later of Spain, on a grander scale than ever before'. For instance, the French could not follow up their victory at the land [[Battle of Sainte-Foy]] in what is now Canada in 1760 for want of reinforcements and supplies from France, and so Quiberon Bay may be regarded as the battle that determined the fate of [[New France]] and hence [[Canada]]. [[Edward Hawke, 1st Baron Hawke|Hawke]]'s commission was extended and followed by a peerage (allowing him and his heirs to speak in the [[House of Lords]]) in 1776. ||| Aftermath ||| ||| +0 Battle of Raab ||| Battle of Caldiero (1809) ||| During the 1809 campaign in Italy, Viceroy [[Eugène de Beauharnais]] led the Franco-Italian army while [[General of the Cavalry (Austria)|General der Kavallerie]] [[Archduke John of Austria]] commanded the [[Austrian Empire|Austrian]] army. At the outbreak of war, John moved rapidly to defeat his opponent at the [[Battle of Sacile]] on 16 April. This victory drove Eugène back to the [[Adige River]]. The front remained static for a few weeks despite attacks by Eugène in the [[Battle of Caldiero (1809)|Battle of Caldiero]]. Meanwhile, an Austrian force bottled up the corps of [[General of Division]] [[Auguste Marmont]] in [[Dalmatia]]. After the Austrian defeat at the [[Battle of Eckmühl]], John received orders to retreat in order to cover the strategic left flank of the army in southern Germany. ||| Campaign ||| Early moves ||| +0 Battle of Raab ||| Battle of Piave River (1809) ||| John fought Eugène in a tough rearguard action at the [[Battle of Piave River (1809)|Battle of Piave River]] on 8 May. Up to this moment, John and his soldiers had fought well. Now, John probably committed a serious blunder by splitting up his command. With the main army he fell back to the northeast. By the second week of May, John and [[Feldmarschallleutnant]] [[Albert Gyulai]] stood at [[Tarvisio]] with 8,340 troops. Feldmarschallleutnant [[Johann Maria Philipp Frimont]]'s 13,060-man Mobile Force lay at nearby [[Villach]]. Feldmarschallleutnant [[Ignaz Gyulai]] with 14,880 men of the IX Armeekorps defended the [[Ljubljana|Ljubljana (Laibach)]] area to the southeast of Villach. Far to the west-northwest, Feldmarschallleutnant [[Johann Gabriel Chasteler de Courcelles]] and 17,460 soldiers of the VIII Armeekorps held the region around [[Innsbruck]]. Feldmarschallleutnant [[Franjo Jelačić]] and the 10,200-strong Northern Division was stationed at [[Salzburg]] to the northwest. Finally, [[General-major]] Andreas von Stoichewich's 8,100 men continued to pin Marmont in Dalmatia to the south of Ljubljana. By this time a large proportion of John's forces was made up of hastily raised [[landwehr]] infantry. ||| Campaign ||| Austrian retreat ||| +0 Battle of Raab ||| Battle of Wagram ||| The '''Battle of Raab''' ([[Hungarian language|Hungarian]]: ''Győri csata'') was fought on June 14, 1809 during the [[Napoleonic Wars]], between Franco-Italian forces and Habsburg forces. The battle was fought near [[Győr]] (Raab), [[Kingdom of Hungary]], and ended in a Franco-Italian victory. The victory prevented [[Archduke John of Austria]] from bringing any significant force to the [[Battle of Wagram]], while Prince [[Eugène de Beauharnais]]'s force was able to link up with [[Napoleon Bonaparte|Emperor Napoleon]] at [[Vienna]] in time to fight at Wagram. Napoleon referred to the battle as 'a granddaughter of [[Battle of Marengo|Marengo]] and [[Battle of Friedland|Friedland]],' as it fell on the anniversary of those two battles. ||| ||| ||| +0 Battle of Radzymin (1944) ||| Operation Bagration ||| The '''Battle of Radzymin''' was one of a series of engagements between the [[Red Army]]'s [[1st Byelorussian Front]] and the [[Wehrmacht Heer]]'s [[XXXIX Panzer Corps (Germany)|XXXIXth Panzer Corps]] that occurred as part of the [[Lublin-Brest Offensive]] between 1 and 10 August 1944 at the conclusion of the [[Operation Bagration|Belorussian strategic offensive operation]] near the town of [[Radzymin]] in the vicinity of [[Warsaw]], part of which entailed a large tank battle at [[Wołomin]]. It was the largest tank battle on the territories of Poland during World War II. ||| ||| ||| +0 Battle of Radzymin (1944) ||| Warsaw Uprising ||| Approach of the Red Army forces into the proximity of Warsaw served to initiate the [[Warsaw Uprising]] by the [[Home Army]] with expectation of help from the Red Army. The battle ended with Soviet's defeat; it is unclear to what extent this defeat contributed to Soviet's decision not to aid the Warsaw Uprising. ||| ||| ||| +0 Battle of Rafa ||| Battle of Magdhaba ||| After the British Empire victories at the [[Battle of Romani]] in August 1916 and the [[Battle of Magdhaba]] in December, the Ottoman Army had been forced back to the southern edge of Palestine as the EEF pushed eastwards supported by extended [[lines of communication]]. This advance depended on the construction of a railway and water pipeline. With the railway reaching [[Arish|El Arish]] on 4 January 1917, an attack on Rafa by the newly formed Desert Column became possible. During the day-long assault, the Ottoman garrison defended El Magruntein's series of fortified [[redoubt]]s and trenches on rising ground surrounded by flat grassland. They were eventually [[Encirclement|encircled]] by [[Australian Light Horse]]men, [[New Zealand]] mounted riflemen, mounted Yeomanry, cameliers and armoured cars. In the late afternoon, the [[New Zealand Mounted Rifles Brigade]] captured the central redoubt and the remaining defences were occupied shortly afterwards. ||| ||| ||| +0 Battle of Rafa ||| Battle of Romani ||| After the British Empire victories at the [[Battle of Romani]] in August 1916 and the [[Battle of Magdhaba]] in December, the Ottoman Army had been forced back to the southern edge of Palestine as the EEF pushed eastwards supported by extended [[lines of communication]]. This advance depended on the construction of a railway and water pipeline. With the railway reaching [[Arish|El Arish]] on 4 January 1917, an attack on Rafa by the newly formed Desert Column became possible. During the day-long assault, the Ottoman garrison defended El Magruntein's series of fortified [[redoubt]]s and trenches on rising ground surrounded by flat grassland. They were eventually [[Encirclement|encircled]] by [[Australian Light Horse]]men, [[New Zealand]] mounted riflemen, mounted Yeomanry, cameliers and armoured cars. In the late afternoon, the [[New Zealand Mounted Rifles Brigade]] captured the central redoubt and the remaining defences were occupied shortly afterwards. ||| ||| ||| +0 Battle of Rafa ||| Sinai and Palestine Campaign ||| The '''Battle of Rafa''', also known as the '''Action of Rafah''', fought on 9 January 1917, was the third and final battle to complete the recapture of the [[Sinai Peninsula]] by British forces during the [[Sinai and Palestine Campaign]] of the [[First World War]]. The [[Desert Column]] of the [[Egyptian Expeditionary Force]] (EEF) attacked an entrenched [[Ottoman Army]] garrison at El Magruntein to the south of [[Rafah|Rafa]], close to the frontier between the [[Sultanate of Egypt]] and the [[Ottoman Empire]], to the north and east of Sheikh Zowaiid. The attack marked the beginning of fighting in the Ottoman territory of [[Palestine (region)|Palestine]]. ||| ||| ||| +0 Battle of Raismes (1793) ||| Battle of Neerwinden (1793) ||| Following the defeat of [[Battle of Neerwinden (1793)|Neerwinden]] and the defection of [[Charles François Dumouriez|Dumouriez]], French forces in the Low Countries were in a disorganised and severely weakened condition. Pulling back towards the fortified camp of Famars, closer to French frontier, the new commander Dampierre was acutely aware of his dangerous situation. He was outnumbered by a well-organised enemy, his troops were discouraged and needed rest, he himself was under suspicion by the ardent revolutionary [[Représentant en mission|Representatives en Mission]]. ||| Background ||| ||| +0 Battle of Ramadi (2006) ||| Battle of Donkey Island ||| In January 2007, Ramadi averaged approximately 35 enemy attacks on US forces per day. Following heavy fighting over an 8-week campaign, which was led by a Task Force commanded by 1st Brigade, 3rd ID, also known as Task Force Raider, attacks in the brigade's area of operations dropped to one or two per day within the city of Ramadi. In the early months of 2007, [[3rd Battalion, 69th Armor Regiment|3-69 Armor Battalion]], in conjunction with two Marine Battalions, along with TF PathFinder was largely responsible for securing Southern and Central Ramadi. By August 2007, Ramadi had gone 80 consecutive days without a single attack on US forces and the 1st BDE, 3rd ID commander commander, Colonel John Charlton, stated, '...al-Qaida is defeated in Al Anbar'. However, despite 1-3 ID's effectiveness, insurgents continued to launch attacks on Ramadi and the surrounding areas in the weeks and months to follow. On June 30, 2007, a group of between 50 and 60 insurgents attempting to infiltrate Ramadi were [[Battle of Donkey Island|intercepted and destroyed]], following a tip from Iraqi Police officers. The insurgents were intercepted by elements of the 1st Battalion, 77th Armor on 30 June 2007 and on 1 July 2007 they were destroyed by elements of Bravo company, 2nd Squad, 1st platoon, 1-18 Infantry Regiment. 1-18 operated out of the Ta'Meem district of Ramadi's western sector. North of Ramadi, elements of [[3rd Battalion, 69th Armor Regiment|3-69 Armor]], whose headquarters had been moved north of Ramadi, engaged elements of [[al-Qaeda in Iraq]] who had taken refuge in rural areas north of the city. After several counter-insurgency operations, 3-69 AR Battalion effectively removed [[Al-Qaeda in Iraq|Al Qaeda in Iraq]] from the greater Anbar province. By March 2008, Ramadi, Iraq had become a vastly safer city than it had been only a year before and the number of enemy attacks in the city had fallen drastically. Years later, by mid 2012, Ramadi remained far safer than it had been since 2003. {{cite web ||| Aftermath ||| 'Raider' Brigade takes over Ramadi ||| +0 Battle of Ramadi (2006) ||| Operation Together Forward ||| On June 14, U.S. and Iraqi forces in [[Baghdad]] began [[Operation Together Forward]], an operation intended to curb the sectarian killings in the capital. ||| Prelude ||| ||| +0 Battle of Ramadi (2006) ||| Second Battle of Fallujah ||| Since the [[Second Battle of Fallujah|fall of Fallujah]] in 2004, Ramadi had been the center of the insurgency in Iraq. The Islamic State of Iraq, a front group for [[Al-Qaida in Iraq]], had declared the city to be its capital. {{cite news ||| Background ||| ||| +0 Battle of Ramillies ||| Battle of Blenheim ||| After their disastrous defeat at [[Battle of Blenheim|Blenheim]] in 1704, the next year brought the French some respite. The [[John Churchill, 1st Duke of Marlborough|Duke of Marlborough]] had intended the 1705 campaign – an invasion of France through the [[Moselle River|Moselle]] valley – to complete the work of Blenheim and persuade King [[Louis XIV of France|Louis XIV]] to make peace, but the plan had been thwarted by both friend and foe alike. ||| Background ||| ||| +0 Battle of Ramillies ||| Battle of Calcinato ||| The campaign began well for Louis XIV's generals: in Italy Marshal [[Louis Joseph, Duke of Vendôme|Vendôme]] had defeated the Austrians at the [[Battle of Calcinato]] in April, while in [[Alsace]] Marshal [[Claude Louis Hector de Villars|Villars]] had forced the [[Louis William, Margrave of Baden-Baden|Margrave of Baden]] back across the [[Rhine]]. Encouraged by these early gains Louis XIV urged Marshal [[François de Neufville, duc de Villeroi|Villeroi]] to go over to the offensive in the Spanish Netherlands and, with victory, gain a 'fair' peace. Accordingly, the French Marshal set off from [[Leuven]] (''Louvain'') at the head of 60,000 men and marched towards [[Tienen]] (''Tirlemont''), as if to threaten [[Zoutleeuw]] (''Léau''). Also determined to fight a major engagement, the [[John Churchill, 1st Duke of Marlborough|Duke of Marlborough]], commander-in-chief of Anglo-Dutch forces, assembled his army – some 62,000 men – near [[Maastricht]], and marched past Zoutleeuw. With both sides seeking battle, they soon stumbled upon one other on the dry ground between the [[Mehaigne]] and Petite Gheete rivers, close to the small village of [[Ramillies, Belgium|Ramillies]]. ||| ||| ||| +0 Battle of Ramnagar ||| First Anglo-Sikh War ||| Following the Sikh defeat in the [[First Anglo-Sikh War]], British Commissioners and Political Agents had effectively ruled the [[Punjab region|Punjab]], using the Sikh army, the [[Khalsa]] to maintain order and implement British policy. There was much unrest over this arrangement and the other galling terms of the peace treaty, not least within the Khalsa which believed it had been betrayed rather than defeated in the first war. ||| Background ||| ||| +0 Battle of Raseiniai ||| Baltic Operation ||| The '''Battle of Raseiniai''' (23–27 June 1941) was a tank battle fought between the elements of the [[Fourth Panzer Army (Germany)|4th Panzer Group]] commanded by [[Erich Hoepner|Gen. Erich Hoepner]] and the [[20th Guards Motor Rifle Division|3rd Mechanized Corps]] {{ref label|Note2|b|b}} commanded by Major General Shestapolov in [[Lithuania]] 75 km northwest of [[Kaunas]] in the attempt by the commander of the [[Northwestern Front]], [[Fyodor Isodorovich Kuznetsov|Kuznetsov]] to contain and destroy German troops that had crossed the [[Neman River]] (Nemunas). The result of the battle was the almost complete destruction of Soviet armoured forces of the [[Northwestern Front]], clearing the way for the continued German offensive towards the crossings of the [[Daugava River]] (Western Dvina). This was one of the major battles during the initial phases of [[Operation Barbarossa]] known in Soviet history as the [[Border Defensive Battles]] (22–27 June 1941) as part of the larger [[Baltic Operation|Baltic Strategic Defensive Operation]]. ||| ||| ||| +0 Battle of Raseiniai ||| Siege of Leningrad ||| Colonel General [[Fyodor Isodorovich Kuznetsov|Kuznetsov]] was removed as front commander by [[Semyon Timoshenko|Timoshenko]], and [[8th Army (Soviet Union)|8th Army]] commander Major-General Sobennikov took over the front on 4 July. [[Semyon Timoshenko|Timoshenko]] issued a directive on 29 June to the [[Northwestern Front]] stipulating that in the event of a withdrawal from the [[Daugava River|Daugava]], the next river line, the [[Velikaya River|Velikaya]], was to be held and every effort made to get Soviet troops emplaced there. Despite this, the river [[Velikaya River|Velikaya]] line fell rapidly on 8 July, with the rail and road bridges remaining intact. [[Pskov]] itself fell on the evening of 9 July. The [[11th Army (Soviet Union)|11th Army]] commander was therefore ordered to move to [[Dno]]. The crumbling of the [[Northwestern Front]] on the Velikaya and the German sweep to [[Luga River|Luga]] were grave setbacks for the Soviets, and the 8th Army was being rammed inexorably towards the [[Gulf of Finland]]. But the German pause had given time for more troops to be rushed in to [[Siege of Leningrad]], and the battle for the city would be long and hard. ||| After the operation ||| ||| +0 Battle of Rathenow ||| Battle of Fehrbellin ||| Over the next few days, as a result of the pursuit launched by the Brandenburg army, this withdrawal became a thoroughly disorderly rout, that finally ended after 3 days on 28 June in the decisive defeat of the Swedes at the [[Battle of Fehrbellin]]. ||| Outcome and aftermath of the battle ||| ||| +0 Battle of Rathmines ||| English Civil War ||| By 1649, Ireland had already been at war for eight years, since the outbreak of the [[Irish Rebellion of 1641]]. During this time, most of Ireland was ruled by the [[Confederate Ireland|Irish Confederate Catholics]], a government of Irish Catholics based in [[Kilkenny]]. The Confederates allied themselves with the English Royalists in the [[English Civil War]], against the English Parliament, which was committed to re-conquering Ireland, suppressing the Catholic religion and destroying the Irish Catholic land-owning class. After much internal in-fighting, the Confederates signed a peace treaty with [[Charles I of England|Charles I]], who was soon to be executed by the [[Rump Parliament]], agreeing to accept English Royalist troops into Ireland and put their own armies under the command of Royalist officers, in particular [[James Butler, 1st Duke of Ormonde]]. By 1649, the English Parliament held only two small enclaves in Ireland –at [[Dublin]] and [[Derry]]. ||| Background ||| ||| +0 Battle of Reading (1688) ||| Siege of Reading ||| :''See also [[Battle of Reading (871)]], [[Siege of Reading]] (1642–1643)'' ||| ||| ||| +0 Battle of Remagen ||| Battle of the Bulge ||| After pushing the Germans back during the [[Battle of the Bulge]], the Allies quickly advanced into [[Allied advance from Paris to the Rhine|western Germany]]. General Eisenhower established a twofold mission. The first was to prevent German forces defending the west bank of the Rhine River from escaping to the east bank. The second was to allow the Allied forces to select a river crossing where they could concentrate the attack leaving minimum forces defending the remainder of the front. The Allies held little hope they would be able to capture a Rhine River bridge intact. Instead, they brought up huge numbers of bridging equipment to the front. But Eisenhower left a standing order that if any unit found a bridge intact, they were to 'exploit its use to the fullest, and establish a bridgehead on the other side.' ||| Background ||| Allied Rhineland campaign ||| +0 Battle of Remagen ||| Normandy landings ||| [[Operation Lumberjack]] was planned to prepare the way for [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Field Marshal Montgomery]]'s massive [[Operation Plunder]], an operation that rivaled the [[Operation Overlord|Normandy landings]] in size and complexity, {{rp|2006}} Montgomery's typically cautious plan was to cross the Rhine in late March and invade central Germany. It included a large array of transport aircraft to ferry paratroopers and glider-borne infantry across the Rhine to set up the river crossing. ||| Background ||| Allied Rhineland campaign ||| +0 Battle of Remagen ||| Operation Grenade ||| On 1 March during U.S. [[Operation Grenade]], the Fifth Panzer and Fifteenth Armies switched zones and responsibility for the bridges. ||| Background ||| German defensive confusion ||| +0 Battle of Remagen ||| Operation Overlord ||| [[Operation Lumberjack]] was planned to prepare the way for [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Field Marshal Montgomery]]'s massive [[Operation Plunder]], an operation that rivaled the [[Operation Overlord|Normandy landings]] in size and complexity, {{rp|2006}} Montgomery's typically cautious plan was to cross the Rhine in late March and invade central Germany. It included a large array of transport aircraft to ferry paratroopers and glider-borne infantry across the Rhine to set up the river crossing. ||| Background ||| Allied Rhineland campaign ||| +0 Battle of Remagen ||| Operation Plunder ||| The '''Battle of Remagen''' during the [[Western Allied invasion of Germany|Allied invasion of Germany]] resulted in the unexpected capture of the [[Ludendorff Bridge]] over the [[Rhine]] and possibly shortened [[World War II]] in Europe. After capturing the [[Siegfried Line]], the [[9th Armored Division (United States)|9th Armored Division]] of the [[First Army (United States)|U.S. First Army]] had advanced unexpectedly quickly towards the Rhine. They were very surprised to see the last bridge across the Rhine still standing. The Germans had wired the bridge with about {{convert|2800|kg|sp=us}} of demolition charges. When they tried to blow it up, only a portion of the explosives detonated. U.S. forces captured the bridge and rapidly expanded their first bridgehead across the Rhine, two weeks before [[Operation Plunder]]. The GIs' actions prevented the Germans from regrouping east of the Rhine and consolidating their positions. ||| ||| ||| +0 Battle of Rennell Island ||| Naval Battle of Guadalcanal ||| The last major attempt by the Japanese to drive Allied forces from Guadalcanal and Tulagi was defeated during the decisive [[Naval Battle of Guadalcanal]] in early November 1942. Thereafter, the Japanese Navy was only able to deliver subsistence supplies and a few replacement troops to Japanese [[Japanese Imperial Army|Army]] forces on Guadalcanal. Because of the threat from Allied aircraft based at [[Honiara International Airport|Henderson Field]] on Guadalcanal, plus nearby U.S. [[aircraft carriers]], the Japanese delivered these supplies at night, usually by [[destroyer]] or [[submarine]], in operations the Allies called the '[[Tokyo Express]].' ||| Background ||| ||| +0 Battle of Rennell Island ||| New Guinea campaign ||| On 7 August 1942, Allied forces (primarily U.S.) landed on Guadalcanal, [[Tulagi]], and [[Florida Islands]] in the [[Solomon Islands]]. The landings on the islands were meant to deny their use by the Japanese as bases for threatening the supply routes between the U.S. and Australia, and to secure the islands as starting points for a campaign with the eventual goal of isolating the major Japanese base at [[Rabaul]] while also supporting the Allied [[New Guinea campaign]]. The landings initiated the six-month-long Guadalcanal campaign. ||| Background ||| ||| +0 Battle of Rennell Island ||| Operation Ke ||| In the battle, Japanese naval land-based [[torpedo bomber]]s, seeking to provide protection for the [[Operation Ke|impending evacuation of Japanese forces from Guadalcanal]], made several attacks over two days on US warships operating as a [[task force]] south of this island. In addition to approaching Guadalcanal with the objective of engaging any Japanese ships that might come into range, the U.S. task force was protecting an [[Allies of World War II|Allied]] transport ship convoy carrying replacement troops there. ||| ||| ||| +0 Battle of Restigouche ||| Battle of Grenada ||| The loss of important provisions hastened the fall of New France. Without outside support and surrounded by three separate British forces, [[Montreal]] fell on September 8. La Giraudais finally surrendered on October 29, six days after hearing the news of the capitulation. Byron later commanded the British fleet that was defeated at the [[Battle of Grenada]] in 1779, as well as becoming Governor of [[Colony of Newfoundland|Newfoundland]]. ||| Aftermath ||| ||| +0 Battle of Restigouche ||| Battle of Quiberon Bay ||| Quebec had fallen to the British in September 1759, but French forces still remained in New France in large numbers. Several appeals to the French government for reinforcements met with indifference or neglect, partly because the French navy had been smashed at the [[Battle of Quiberon Bay]] in November 1759. On April 10, 1760, the frigate ''Le Machault'' under Lieutenant Francois La Giraudais sailed from [[Bordeaux]] with 5 merchant ships carrying 2,000 casks of provisions and 400 troops. [[Francois-Gabriel D'Angeac]] commanded reinforcement troops because of his familiarity with the area. ||| Background ||| ||| +0 Battle of Restigouche ||| Battle of the Plains of Abraham ||| The '''Battle of Restigouche''' was a naval battle fought during the [[French and Indian War]] (the North American theatre of the [[Seven Years' War]]) on the [[Restigouche River]] between the British [[Royal Navy]] and the small flotilla of vessels of the [[French Navy]], [[Military history of the Acadians|Acadian militia]] and [[Military history of the Mi'kmaq People|Mi'kmaq militias]]. The French vessels had been sent to relieve [[New France]] after the fall of [[Battle of the Plains of Abraham|Quebec]]. Supplies were extraordinarily important because France ran their colonies such that the colonies were wholly dependent on products and manufacturing of the motherland. The loss of the Battle of Restigouche and the consequent inability to supply the troops, marked the end of any serious attempt by France to keep hold of their colonies in North America, and it severely curtailed any hopes for a lengthy resistance to the British by the French forces that remained. The battle was the last major engagement of the Mi'kmaq and Acadian militias before the [[Burying the Hatchet ceremony (Nova Scotia)|Burying of the Hatchet Ceremony]] between the Mi'kmaq and the British. ||| ||| ||| +0 Battle of Revolax ||| Battle of Siikajoki ||| The Swedish commander Klingspor continued his retreat towards [[Oulu]] after the Swedish victory at the [[Battle of Siikajoki]]. They were closely followed by the Russians. A Russian fore, commanded by Bulatov, had set camp at the village of [[Siikajoki|Revonlahti]]. Cronstedt prepared an assault to drive them away. He led a force of some 1,800 men through the night of 26 and 27 April. The Swedes could hear the sound of musket fire to the north, where Adlercreutz were fighting against the forward Russian unit which had been advancing on him. However Adlercreutz managed to stop the advance. ||| The summer offensive begins ||| ||| +0 Battle of Richmond ||| Battle of Cannae ||| Civil war historian [[Shelby Foote]] remarked that Smith 'accomplished in Kentucky the nearest thing to a [[Battle of Cannae|Cannae]] ever scored by any general, North or South, in the course of the whole war.' ||| Aftermath ||| ||| +0 Battle of Rimini (1944) ||| Battle of Gemmano ||| On 23 August 1944 [[Eighth Army (United Kingdom)|Eighth Army]] launched Operation ''Olive'', attacking on a three Corps front up the eastern flank of Italy into the Gothic Line defenses. By the first week in September the offensive had broken through the forward defences of the Gothic Line and the defensive positions of the Green I line and United States Fifth Army entered the offensive in central Italy attacking towards Bologna. In Eighth Army's centre 1st Canadian Corps had broken through Green II on the right of its front advancing to pinch out the Polish Corps on the very right of the army (and allowing the latter to be withdrawn to army reserve) but inland in the hills the Corps' advance had been held up by stubborn defence at Coriano and [[V Corps (United Kingdom)|V Corps]] on the army's left flank had been halted at Croce and [[Battle of Gemmano|Gemmano]]. A new attack to clear the Green II positions in the hills and destroy the Rimini Line running from the port of Rimini inland to San Marino was scheduled to start on 12 September. ||| Background ||| ||| +0 Battle of Rimini (1944) ||| Gothic Line ||| The '''Battle of [[Rimini]]''' took place in between 13 and 21 September 1944 during Operation ''Olive'', the main Allied offensive on the [[Gothic Line]] in August and September 1944, part of the [[Italian Campaign (World War II)|Italian Campaign]] in the [[Second World War]]. Rimini, a town on the Adriatic coast of Italy, anchored the Rimini Line, a German defensive line which was the third such line forming the [[Gothic Line]] defenses. Rimini, which had been hit previously by air raids, had 1,470,000 rounds fired against it by allied land forces. According to Lieutenant-General Sir [[Oliver Leese]], commander of the 8th Army: ||| ||| ||| +0 Battle of Roliça ||| Battle of Vimeiro ||| The Anglo-Portuguese won with 487 casualties, over half that number from the precipitate 29th. The French lost 700 men and three of their five guns. General Delaborde himself was wounded. The following day Wellesley found that the 4,000 additional British troops had arrived from England and were off the coast. He marched his men to cover their disembarkation rather than follow Delaborde. Four days later they would be attacked again and the [[Battle of Vimeiro]] would ensue. ||| Aftermath ||| ||| +0 Battle of Romani ||| Battle of Magdhaba ||| The battle of Romani marked the end of the German and Ottoman campaign against the Suez Canal; the offensive had passed decisively into the hands of the British Empire force led by the Anzac Mounted Division. After the battle, von Kressenstein's force was pushed back across the Sinai Peninsula, to be beaten at the [[Battle of Magdhaba]] in December 1916 and back to the border of Ottoman Empire-controlled Palestine to be defeated at the [[Battle of Rafa]] in January 1917, which effectively secured the Egyptian Sinai Peninsula. This successful, seven-month-long British Empire campaign, begun at Romani in August, ended at the [[First Battle of Gaza]] in March 1917. ||| Aftermath ||| ||| +0 Battle of Romani ||| Battle of Rafa ||| The battle of Romani marked the end of the German and Ottoman campaign against the Suez Canal; the offensive had passed decisively into the hands of the British Empire force led by the Anzac Mounted Division. After the battle, von Kressenstein's force was pushed back across the Sinai Peninsula, to be beaten at the [[Battle of Magdhaba]] in December 1916 and back to the border of Ottoman Empire-controlled Palestine to be defeated at the [[Battle of Rafa]] in January 1917, which effectively secured the Egyptian Sinai Peninsula. This successful, seven-month-long British Empire campaign, begun at Romani in August, ended at the [[First Battle of Gaza]] in March 1917. ||| Aftermath ||| ||| +0 Battle of Romani ||| Gallipoli Campaign ||| In response to this attack, the British Empire presence in the region doubled. The next day, the [[New Zealand Mounted Rifles Brigade]] and the [[2nd Light Horse Brigade]] which had served dismounted during the [[Gallipoli Campaign]], ||| Background ||| ||| +0 Battle of Romani ||| Sinai and Palestine Campaign ||| The '''Battle of Romani''' was the last ground attack of the [[Central Powers]] on the [[Suez Canal]] at the beginning of the [[Sinai and Palestine Campaign]] during the First World War. The battle was fought between 3 and 5 August 1916 near the [[Egypt]]ian town of Romani and the site of ancient [[Pelusium]] on the [[Sinai Peninsula]], {{convert|23|mi|km}} east of the Suez Canal. This victory by the [[52nd (Lowland) Division]] and the [[Anzac Mounted Division]] of the [[Egyptian Expeditionary Force]] (EEF) over a joint [[Ottoman Empire|Ottoman]] and [[German Empire|German]] force, which had marched across the Sinai, marked the end of the Defence of the Suez Canal campaign, also known as the ''Offensive zur Eroberung des Suezkanals'' and the ''İkinci Kanal Harekâtı'', which had begun on 26 January 1915. This [[British Empire]] victory, the first against the Ottoman Empire in the war, ensured the safety for the [[Suez Canal]] from ground attacks, and ended the [[Central Powers]]' ambitions of disrupting traffic through the canal by gaining control of the strategically important northern approaches to the Suez Canal. The pursuit by the Anzac Mounted Division which ended at Bir el Abd on 12 August began the Sinai and Palestine Campaign. Thereafter, the Anzac Mounted Division supported by the [[Imperial Camel Brigade]] were on the offensive, pursuing the German and Ottoman army many miles across the Sinai Peninsula, reversing in a most emphatic manner the defeat suffered at Katia three months earlier. ||| ||| ||| +0 Battle of Romani ||| Western Front (World War I) ||| General Sir [[Archibald Murray]], the commander of the British Empire forces in Egypt, formed the [[Egyptian Expeditionary Force]] (EEF) in March 1916 by merging the Force in Egypt, which had protected Egypt since the beginning of the war, with the [[Mediterranean Expeditionary Force]] which had fought at [[Gallipoli]]. The role of this new force was to both defend the British Protectorate of Egypt and provide reinforcements for the [[Western Front (World War I)|Western Front]]. ||| Prelude ||| British forces ||| +0 Battle of Roncesvalles (1813) ||| Battle of Vitoria ||| After [[Arthur Wellesley, 1st Duke of Wellington|Wellington's]] decisive defeat of [[Joseph Bonaparte|King Joseph]] at [[Battle of Vitoria|Vitoria]], he advanced to capture [[San Sebastián]] and [[Pamplona]], the last French outposts on Spanish soil. ||| Background ||| ||| +0 Battle of Ronco ||| Battle of Occhiobello ||| The '''Battle of Ronco''' was a battle in the [[Neapolitan War]] the took place on 21 April 1815 in the village of Ronco, just south of [[Forlì]]. The main Neapolitan army, retreating following the disaster at the [[Battle of Occhiobello]], was being pursued by an Austrian corps under the command of [[Adam Albert von Neipperg]]. The Neapolitans, commanded by their king, [[Joachim Murat]], turned to check the Austrians at the [[Ronco River]]. The Neapolitans rear guard was defeated by a smaller advanced Austrian force, compelling Murat to retreat further south to the [[Savio (river)|Savio River]]. The Austrians suffered light casualties, whereas nearly 1,000 Neapolitans were killed or wounded and more deserted Murat altogether. ||| ||| ||| +0 Battle of Rorke's Drift ||| Battle of Inkerman ||| Eleven [[Victoria Cross]]es were awarded to the defenders of Rorke's Drift, seven of them to soldiers of the 2nd/24th Foot – the most ever received in a single action by one regiment (although not, as commonly thought, the most awarded in a single action or the most in a day: 16 were awarded at the [[Battle of Inkerman]], on 5 November 1854; 28 were awarded during the [[Siege of Lucknow|Second Relief of Lucknow]], 14–22 November 1857). ||| Victoria Crosses and Distinguished Conduct Medals ||| ||| +0 Battle of Rorke's Drift ||| Battle of Isandlwana ||| The '''Battle of Rorke's Drift''', also known as the '''Defence of Rorke's Drift''', was a battle in the [[Anglo-Zulu War]]. The defence of the [[mission (station)|mission station]] of Rorke's Drift, under the command of [[John Rouse Merriott Chard|Lieutenant John Chard]] of the [[Royal Engineers]], and Lieutenant [[Gonville Bromhead]] immediately followed the [[British Army]]'s defeat at the [[Battle of Isandlwana]] on 22 January 1879, and continued into the following day, 23 January. ||| ||| ||| +0 Battle of Rorke's Drift ||| Siege of Lucknow ||| Eleven [[Victoria Cross]]es were awarded to the defenders of Rorke's Drift, seven of them to soldiers of the 2nd/24th Foot – the most ever received in a single action by one regiment (although not, as commonly thought, the most awarded in a single action or the most in a day: 16 were awarded at the [[Battle of Inkerman]], on 5 November 1854; 28 were awarded during the [[Siege of Lucknow|Second Relief of Lucknow]], 14–22 November 1857). ||| Victoria Crosses and Distinguished Conduct Medals ||| ||| +0 Battle of Rostov (1941) ||| First Battle of Kharkov ||| After concluding the [[Battle of Kiev (1941)|Battle of Kiev]] in September 1941, the German Army Group South advanced from the [[Dniepr River|Dniepr]] to the [[Sea of Azov]] coast. [[Walther von Reichenau]]'s [[6th Army (Wehrmacht)|6th Army]] [[First Battle of Kharkov|captured Kharkov]]. [[Carl-Heinrich von Stülpnagel]]'s [[17th Army (Wehrmacht)|17th Army]] marched through [[Poltava]] towards [[Voroshilovgrad]]. [[Erich von Manstein]]'s [[11th Army (Wehrmacht)|11th Army]] moved into the [[Crimean Peninsula|Crimea]] and had taken control of all of the peninsula by autumn (except [[Sevastopol]], which held out until 3 July 1942). ||| Prelude ||| ||| +0 Battle of Rostov (1941) ||| Siege of Odessa (1941) ||| At this time the [[LIV Army Corps (Germany)|LIVth Army Corps]] of the 11th Army was still engaged in [[Crimea]], and because the Romanian forces were still engaged in the [[Siege of Odessa (1941)|Siege of Odessa]], the Army's resources for the Rostov objective were severely limited even against retreating Red Army troops. Therefore, initially von Manstein replaced the LIV Corps with the smaller [[XXX Army Corps (Germany)|XXXth Army Corps]] and [[XLIX Mountain Corps (Germany)|XLIXth Mountain Corps]], and ordered the LIV Corps into the first echelon in the advance to Rostov. ||| Sea of Azov offensive Operation ||| ||| +0 Battle of Rotterdam ||| Rotterdam Blitz ||| '''The Battle of [[Rotterdam]]''' was a [[World War II|Second World War]] battle fought during the [[Battle of the Netherlands]]. Fought between 10–14 May 1940, it was a German attempt to seize the Dutch city. It ended in a German victory, following the [[Rotterdam Blitz]]. ||| ||| ||| +0 Battle of Rovaniemi ||| Battle of Tornio ||| Already on October 1 Finns moved against the [[Battle of Tornio|Germans in the Kemi-Tornio region]] to convince the Russians of their intention to live up to the treaty. Simultaneously Finnish forces started advancing also along other roads in northern directions. The Finnish armoured division started its advance north in the direction of [[Rovaniemi]] from [[Ranua]]. Also once the fighting in Tornio region had ended Finnish 3rd Division's started to advance towards Rovaniemi on the road running alongside the [[Kemijoki]] river. ||| Prelude ||| ||| +0 Battle of Rowton Heath ||| Battle of Marston Moor ||| Following the destruction of [[Charles I of England|King Charles I]]'s main army at the [[Battle of Naseby]] on 14 June 1645, the [[First English Civil War]] tilted decisively in favour of the [[Roundhead|Parliamentarians]]. Charles withdrew with his remaining forces to [[Raglan Castle]] in Wales, hoping to recruit new soldiers there and travel across the [[Bristol Channel]] to link up with [[George Goring, Lord Goring|George Goring]], the only remaining Royalist commander of a significant force. The defeat of Goring at the [[Battle of Langport]] on 10 July, along with the subsequent 'disintegration' of the new troops in South Wales, led to Charles abandoning this plan. Despite this and the loss of much of Northern England following the [[Battle of Marston Moor]], Charles still had large numbers of soldiers in the West of England, and one of his supporters, the [[James Graham, 1st Marquess of Montrose|Marquess of Montrose]], was winning a string of victories across Scotland. ||| Background ||| ||| +0 Battle of Rowton Heath ||| Battle of Naseby ||| Prior to the battle, Charles had been attempting to link up with the [[James Graham, 1st Marquess of Montrose|Marquess of Montrose]] in Scotland following the Royalist defeat in the [[Battle of Naseby]]. Although his attempts to do so were unsuccessful, they were disruptive enough that the [[Committee of Both Kingdoms]] ordered [[Sydnam Poyntz]] to pursue the King with approximately 3,000 horse. After Charles was informed that [[Chester]], his only remaining port, was under siege, he marched there with the intent of relieving the defenders, ordering 3,000 horse under the command of [[Marmaduke Langdale]] to camp outside the city while he and 600 others travelled into Chester itself on 23 September 1645. The intent was to attack the besieging Parliamentarians from both sides, Charles mistakenly believing that Poyntz had failed to follow them. In fact he was barely {{convert|15|mi|km}} behind, and moved to attack Langdale's force in the early hours of 24 September. Although Langdale drove Poyntz off, the Parliamentarians besieging Chester sent reinforcements, and Langdale was forced to retreat to Rowton Heath, closer to Chester, and wait for his own reinforcements. This force, under [[Charles Gerard, 1st Earl of Macclesfield|Charles Gerard]] and [[Lord Bernard Stewart]], was prevented from joining them, and Langdale was instead attacked by both Poyntz's force and the reinforcement. After being driven off the field and failing in an attempt to regroup at Chester itself, the Royalists retreated as dusk fell. ||| ||| ||| +0 Battle of Rowton Heath ||| First English Civil War ||| Following the destruction of [[Charles I of England|King Charles I]]'s main army at the [[Battle of Naseby]] on 14 June 1645, the [[First English Civil War]] tilted decisively in favour of the [[Roundhead|Parliamentarians]]. Charles withdrew with his remaining forces to [[Raglan Castle]] in Wales, hoping to recruit new soldiers there and travel across the [[Bristol Channel]] to link up with [[George Goring, Lord Goring|George Goring]], the only remaining Royalist commander of a significant force. The defeat of Goring at the [[Battle of Langport]] on 10 July, along with the subsequent 'disintegration' of the new troops in South Wales, led to Charles abandoning this plan. Despite this and the loss of much of Northern England following the [[Battle of Marston Moor]], Charles still had large numbers of soldiers in the West of England, and one of his supporters, the [[James Graham, 1st Marquess of Montrose|Marquess of Montrose]], was winning a string of victories across Scotland. ||| Background ||| ||| +0 Battle of Réunion ||| Battle of France ||| Since the [[Battle of France]] in May–June 1940, the island of La Réunion had had little strategic importance, and little defences as a consequence. The [[Armistice with France (Second Compiègne)|Compiègne Armistice]] had reduced the military on the island to three officers, one doctor, eleven non-commissioned officers and about 270 men, of which only 23 were professionals. The coastal artillery were out of order. ||| Background ||| Vichy and Réunion ||| +0 Battle of Réunion ||| Battle of Singapore ||| After the [[Battle of Singapore]], in February 1942, the British [[Eastern Fleet]] retreated to [[Addu Atoll]] in [[Maldives]]. Then, following [[Chuichi Nagumo]]'s [[Indian Ocean raid]] in early 1942, the Fleet moved its operational base to [[Kilindini]] near [[Mombasa]] in [[Kenya]], increasing the British presence on the Eastern African coasts. Soon afterwards, the British struck the French possessions of Madagascar, under Vichy Regime control, with [[Battle of Madagascar|Operation ''Ironclad'']], on 5 May 1942. La Réunion lost her shipping communications with mainland Africa, and the attack further encouraged anti-British sentiments among the Vichy loyalists. On the other hand, De Gaulle, who had not been involved in ''Ironclad'', felt hard-pressed to re-claim La Réunion from Vichy before the British or Americans would. ||| Background ||| Strategic situation ||| +0 Battle of Saint Kitts ||| Battle of the Chesapeake ||| When [[Samuel Hood, 1st Viscount Hood|Hood]] returned to the West Indies in late 1781 after the [[Battle of the Chesapeake]], he was for a time in independent command owing to [[George Rodney|Rodney]]'s absence in England. The French Admiral, the [[Comte de Grasse]], attacked the British islands of [[Saint Kitts]] and [[Nevis]] Hood hoping to salvage the situation made for St Kitts with reinforcements however he soon learned that he was facing a much superior force. De Grasse had landed 6,000 men on St Kitts and laid siege to the fortress on Brimstone Hill. ||| Background ||| ||| +0 Battle of Saint-Louis-du-Sud ||| Battle of Santiago de Cuba (1748) ||| British sailors and marines then occupied the fort and set about dismantling it. Over the course of the week the castle was set for demolition and destroyed. Knowles stood away on 30 March and knowing with victory complete, then headed off again hoping to assault Santiago de Cuba. This time however he was [[Battle of Santiago de Cuba (1748)|repelled by the Spanish]]. ||| Battle ||| Aftermath ||| +0 Battle of Saipan ||| Battle of Midway ||| By 16:15 on 9 July, Admiral Turner announced that Saipan was officially secured. Saito — along with commanders Hirakushi and Igeta — committed suicide in a cave. Also committing suicide at the end of the battle was Vice-Admiral [[Chuichi Nagumo]] — the naval commander who led the Japanese carriers at [[Attack on Pearl Harbor|Pearl Harbor]] and [[Battle of Midway|Midway]] — who had been assigned to Saipan to direct the Japanese naval air forces based there. ||| Battle ||| ||| +0 Battle of Saipan ||| Operation Overlord ||| The '''Battle of Saipan''' was a battle of the [[Pacific War|Pacific campaign]] of World War II, fought on the island of [[Saipan]] in the [[Mariana Islands]] from 15 June–9 July 1944. The Allied invasion fleet embarking the expeditionary forces left [[Pearl Harbor]] on 5 June 1944, the day before [[Operation Overlord]] in Europe was launched. The U.S. [[2nd Marine Division (United States)|2nd Marine Division]], [[4th Marine Division (United States)|4th Marine Division]], and the Army's [[27th Infantry Division (United States)|27th Infantry Division]], commanded by [[Lieutenant general (United States)|Lieutenant General]] [[Holland Smith]], defeated the 43rd Division of the [[Imperial Japanese Army]], commanded by Lieutenant General [[Yoshitsugu Saito]]. ||| ||| ||| +0 Battle of Sakarya ||| Franco-Turkish War ||| After this, the Ankara government signed the [[Treaty of Kars]] with the Russians, and the most important [[Treaty of Ankara]] with the French, thus reducing the enemy's front notably in the [[Franco-Turkish War|Cilician theatre]] and concentrating against the Greeks on the West. ||| Aftermath ||| ||| +0 Battle of Salamanca ||| Battle of Borodino ||| The battle is mentioned in [[Leo Tolstoy|Tolstoy]]'s novel ''[[War and Peace]]'', Book 3 Chapter XXVI. Prior to the [[Battle of Borodino]], Tolstoy describes [[Napoleon I|Napoleon]] as receiving an [[aide-de-camp]], [[Charles Nicolas Fabvier|Fabvier]], who has just arrived with news of the Battle of Salamanca. 'Fabvier told him of the heroism and devotion of his troops fighting at Salamanca, at the other end of Europe, but with one thought – to be worthy of their Emperor – but with one fear – to fail to please him. The result of that battle had been deplorable. Napoleon made ironic remarks during Fabvier's account, as if he had not expected that matters could not go otherwise in his absence'. ||| Cultural references ||| ||| +0 Battle of Salamanca ||| French invasion of Russia ||| The Battle of Salamanca was a damaging defeat for the French and while they regrouped, Anglo-Portuguese forces entered [[Madrid]] on 6{{nbsp}}August. The [[Siege of Burgos]] ensued, then in the autumn the Anglo-Portuguese retreated to Portugal when renewed French concentrations threatened to trap them, although the French forces, which had been stripped of several experienced units to join the [[French invasion of Russia|Russian campaign]], were reluctant to go on the offensive. ||| Outcome ||| ||| +0 Battle of Samakh ||| Battle of Aleppo (1918) ||| On 20 September, [[German Empire|German]] [[General (Germany)|General]] [[Otto Liman von Sanders]], the commander of the Yildirim Army Group, ordered Samakh's German and Ottoman garrison to prepare a strong rearguard defence of the town. By dawn on 25 September, when a regiment and two squadrons of the Australian 4th Light Horse Brigade attacked Samakh, the rearguard was strongly entrenched. The assault, which began with a mounted cavalry charge, ended two hours later after close quarter fighting in the village and the railway station. After fierce fighting with [[bayonet]]s and [[sword]]s, from room to room in the railway buildings, the town was captured. This victory, which captured the centre of the rearguard line, concluded the Battle of Sharon section of the Battle of Megiddo and opened the way for the cavalry pursuit [[Capture of Damascus (1918)|to Damascus]], which was captured on 1 October. By the time the [[Armistice of Mudros]] between the Allies and the Ottoman Empire was signed at the end of October, [[Battle of Aleppo (1918)|Aleppo]] had been captured and fighting was in progress further north. ||| ||| ||| +0 Battle of Samakh ||| Battle of Megiddo (1918) ||| The '''Battle of Samakh''' was fought on 25 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought from 19 to 25 September 1918, in the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] commanded by the [[Australian]] [[Lieutenant General (Australia)|Lieutenant General]] [[Harry Chauvel]], captured the Esdraelon Plain (also known as the [[Jezreel Valley]] and the Plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]] on 20 September, when the [[3rd Light Horse Brigade]] [[Capture of Jenin|captured Jenin]]. The [[4th Light Horse Brigade]], [[Australian Mounted Division]] was deployed guarding supply columns, and prisoners, before being ordered to attack and capture Samakh on the shore of the [[Sea of Gallilee]]. Here the [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison had been ordered by the commander of the [[Yildirim Army Group]] to fight to the last man. ||| ||| ||| +0 Battle of Samakh ||| Battle of Nablus ||| The '''Battle of Samakh''' was fought on 25 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought from 19 to 25 September 1918, in the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] commanded by the [[Australian]] [[Lieutenant General (Australia)|Lieutenant General]] [[Harry Chauvel]], captured the Esdraelon Plain (also known as the [[Jezreel Valley]] and the Plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]] on 20 September, when the [[3rd Light Horse Brigade]] [[Capture of Jenin|captured Jenin]]. The [[4th Light Horse Brigade]], [[Australian Mounted Division]] was deployed guarding supply columns, and prisoners, before being ordered to attack and capture Samakh on the shore of the [[Sea of Gallilee]]. Here the [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison had been ordered by the commander of the [[Yildirim Army Group]] to fight to the last man. ||| ||| ||| +0 Battle of Samakh ||| Battle of Nablus (1918) ||| The '''Battle of Samakh''' was fought on 25 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought from 19 to 25 September 1918, in the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] commanded by the [[Australian]] [[Lieutenant General (Australia)|Lieutenant General]] [[Harry Chauvel]], captured the Esdraelon Plain (also known as the [[Jezreel Valley]] and the Plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]] on 20 September, when the [[3rd Light Horse Brigade]] [[Capture of Jenin|captured Jenin]]. The [[4th Light Horse Brigade]], [[Australian Mounted Division]] was deployed guarding supply columns, and prisoners, before being ordered to attack and capture Samakh on the shore of the [[Sea of Gallilee]]. Here the [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison had been ordered by the commander of the [[Yildirim Army Group]] to fight to the last man. ||| ||| ||| +0 Battle of Samakh ||| Battle of Nazareth ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by [[Lieutenant General (United Kingdom)|Lieutenant General]] [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line during the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin its own attack, supported by an artillery barrage. These attacks by both the XX and XXI Corps continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army commanded by the [[Ottoman Army]] [[Ferik (rank)|Ferik]] or [[Birinci Ferik]], [[Mustafa Kemal Atatürk|Mustafa Kemal]] retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to almost encircle the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and Samakh before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by [[Major General]] [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Battle of Samakh ||| Battle of Sharon ||| The '''Battle of Samakh''' was fought on 25 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought from 19 to 25 September 1918, in the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] commanded by the [[Australian]] [[Lieutenant General (Australia)|Lieutenant General]] [[Harry Chauvel]], captured the Esdraelon Plain (also known as the [[Jezreel Valley]] and the Plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]] on 20 September, when the [[3rd Light Horse Brigade]] [[Capture of Jenin|captured Jenin]]. The [[4th Light Horse Brigade]], [[Australian Mounted Division]] was deployed guarding supply columns, and prisoners, before being ordered to attack and capture Samakh on the shore of the [[Sea of Gallilee]]. Here the [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison had been ordered by the commander of the [[Yildirim Army Group]] to fight to the last man. ||| ||| ||| +0 Battle of Samakh ||| Capture of Afulah and Beisan ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by [[Lieutenant General (United Kingdom)|Lieutenant General]] [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line during the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin its own attack, supported by an artillery barrage. These attacks by both the XX and XXI Corps continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army commanded by the [[Ottoman Army]] [[Ferik (rank)|Ferik]] or [[Birinci Ferik]], [[Mustafa Kemal Atatürk|Mustafa Kemal]] retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to almost encircle the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and Samakh before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by [[Major General]] [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Battle of Samakh ||| Capture of Jenin ||| The '''Battle of Samakh''' was fought on 25 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought from 19 to 25 September 1918, in the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] commanded by the [[Australian]] [[Lieutenant General (Australia)|Lieutenant General]] [[Harry Chauvel]], captured the Esdraelon Plain (also known as the [[Jezreel Valley]] and the Plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]] on 20 September, when the [[3rd Light Horse Brigade]] [[Capture of Jenin|captured Jenin]]. The [[4th Light Horse Brigade]], [[Australian Mounted Division]] was deployed guarding supply columns, and prisoners, before being ordered to attack and capture Samakh on the shore of the [[Sea of Gallilee]]. Here the [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison had been ordered by the commander of the [[Yildirim Army Group]] to fight to the last man. ||| ||| ||| +0 Battle of Samakh ||| First Transjordan attack on Amman ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks in March–April and April–May 1918, by the [[Egyptian Expeditionary Force]] (EEF), which had been responsible for the Sinai and Palestine Campaign since March 1916, its commander [[General (United Kingdom)|General]] [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. He also ordered the front line be extended across the [[Judean Hills]] to the [[Mediterranean Sea]]. Most of the British infantry and [[Yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of re-organisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. ||| Background ||| ||| +0 Battle of Samakh ||| Second Battle of Amman ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by [[Lieutenant General (United Kingdom)|Lieutenant General]] [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line during the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin its own attack, supported by an artillery barrage. These attacks by both the XX and XXI Corps continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army commanded by the [[Ottoman Army]] [[Ferik (rank)|Ferik]] or [[Birinci Ferik]], [[Mustafa Kemal Atatürk|Mustafa Kemal]] retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to almost encircle the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and Samakh before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by [[Major General]] [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[Third Transjordan attack|Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Battle of Samakh ||| Sinai and Palestine Campaign ||| The '''Battle of Samakh''' was fought on 25 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought from 19 to 25 September 1918, in the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] commanded by the [[Australian]] [[Lieutenant General (Australia)|Lieutenant General]] [[Harry Chauvel]], captured the Esdraelon Plain (also known as the [[Jezreel Valley]] and the Plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]] on 20 September, when the [[3rd Light Horse Brigade]] [[Capture of Jenin|captured Jenin]]. The [[4th Light Horse Brigade]], [[Australian Mounted Division]] was deployed guarding supply columns, and prisoners, before being ordered to attack and capture Samakh on the shore of the [[Sea of Gallilee]]. Here the [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison had been ordered by the commander of the [[Yildirim Army Group]] to fight to the last man. ||| ||| ||| +0 Battle of Samakh ||| Spring Offensive ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks in March–April and April–May 1918, by the [[Egyptian Expeditionary Force]] (EEF), which had been responsible for the Sinai and Palestine Campaign since March 1916, its commander [[General (United Kingdom)|General]] [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. He also ordered the front line be extended across the [[Judean Hills]] to the [[Mediterranean Sea]]. Most of the British infantry and [[Yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of re-organisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. ||| Background ||| ||| +0 Battle of Samakh ||| Third Transjordan attack ||| [[Samakh, Tiberias|Samakh]], in the centre of a rearguard line stretching from [[Capture of Tiberias|Tiberias]] through Samakh and on to [[Deraa]] was intended to cover the retreat of three Ottoman armies. The rearguard was set up to delay the advance of the [[Egyptian Expeditionary Force]] (EEF) cavalry in the Desert Mounted Corps after the [[British Empire]] infantry victories in the Judean Hills at the [[Battle of Tulkarm]], and the [[Battle of Tabsor]] during the Battle of Sharon. These and other battles fought during the Battle of Nablus including the [[Third Transjordan attack]], also part of the Battle of Megiddo, forced the retreat of the Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth]] Armies north towards Damascus. ||| ||| ||| +0 Battle of Samos (1824) ||| Balkan Wars ||| Together with the victory at the [[Battle of Gerontas|strait of Gerontas]] soon after, the battle of Samos ensured the safety of the island this year. However, it was also not included in independent Greece; rather, it became an [[Principality of Samos|autonomous principality]] under Ottoman suzerainty until the [[Balkan Wars]]. ||| ||| ||| +0 Battle of San Domingo ||| Battle of Trafalgar ||| There was however one British squadron that had maintained contact with the French: since the [[Battle of Trafalgar]] in October 1805, the Admiralty had stationed a squadron under Vice-Admiral [[John Thomas Duckworth|Sir John Thomas Duckworth]] off Cadiz to watch the remnants of the combined fleet. In November 1805, reports reached Duckworth of a French squadron operating against British convoys off the [[Savage Islands]] between [[Madeira]] and the [[Canary Islands]]. [[Allemand's expedition of 1805|This squadron]], which belonged to Contre-Admiral [[Zacharie Allemand]], had left France in July 1805. ||| Background ||| ||| +0 Battle of San Francisco de Malabon ||| Kawit Revolt ||| The '''Battle of San Francisco De Malabon''' ([[Tagalog language|Filipino]]: ''Labanan sa San Francisco De Malabon'') was the first attack staged by revolutionaries in [[Cavite]] at 10 in the morning, August 31, 1896 near [[Pasong Kalabaw]] (Now known as [[Sta. Clara]]) and the town tribune. The uprising was fought by [[Magdiwang (Katipunan faction)|Magdiwang]] faction of the Katipunan led by Diego Mojica which signaled the start of the revolution in Cavite. Numerous [[Kawit Revolt|uprisings]] occurred later that day. ||| ||| ||| +0 Battle of San Jacinto ||| Battle of Agua Dulce ||| * [[Battle of Agua Dulce|Agua Dulce]] ||| ||| ||| +0 Battle of San Jacinto ||| Battle of Goliad ||| * [[Battle of Goliad|Goliad]] ||| ||| ||| +0 Battle of San Jacinto ||| Battle of the Alamo ||| * [[Battle of the Alamo|The Alamo]] ||| ||| ||| +0 Battle of San Jacinto ||| French Revolution ||| On June 1, Santa Anna boarded a ship to travel back to Mexico. For the next two days, crowds of soldiers, many of whom had arrived that week from the United States, gathered to demand his execution. Lamar, by now promoted to Secretary of War, gave a speech insisting that 'Mobs must not intimidate the government. We want no [[French Revolution]] in Texas!', but on June 4 soldiers seized Santa Anna and put him under military arrest. ||| Aftermath ||| Republic of Texas ||| +0 Battle of San Lorenzo ||| Paraguay campaign ||| Although Buenos Aires had suffered a difficult period in its war for independence, its prospects were improving by 1812. Even though the defeats of [[Manuel Belgrano]] during the [[Paraguay campaign]] and [[Juan José Castelli]] in the [[first Upper Peru campaign]] had generated a political crisis, Belgrano's victory at Tucuman had given new fresh hope to the revolution, which would be strengthened shortly afterwards with the victory at the [[Battle of Salta]]. Montevideo, capital of the [[Viceroyalty of the Río de la Plata]] since the [[May Revolution]], was under siege by both an army from Buenos Aires led by [[José Rondeau]] and an Uruguayan one led by [[José Gervasio Artigas]]. The city, however, maintained its [[naval supremacy]] over Buenos Aires and their ships raided the coasts of the [[Paraná River|Paraná]] and [[Uruguay river|Uruguay]] rivers to gather supplies, despite the siege. ||| Prelude ||| ||| +0 Battle of San Nicolás ||| Battle of Campichuelo ||| At the beginning of 1811 the Junta Grande was immersed in armed conflicts in various fronts against counter-revolutionary (royalist) forces. A small army under the command of [[Manuel Belgrano]] had been sent to [[Paraguay]] to help the locals join the revolution, but after an initial victory at the [[Battle of Campichuelo]], he was defeated at the [[Battle of Paraguarí]] and was forced to retreat. The Junta decided to respond to the reinforcement request from Belgrano, and tasked Azopardo with the transport by river of the reinforcement troops and artillery to Paraguay. The Maltese raised his flag in the '''Invencible''', while the [[France|Frenchman]] naturalized Argentine [[Hipólito Bouchard]] was put in charge of the brigantine '''25 de Mayo'''. Lastly, the sloop '''América''' was put under the command of the Frenchman Abel Hubac. ||| The first mission ||| ||| +0 Battle of San Pietro ||| Battle of Guastalla ||| Frederick found refuge in the [[Montechiarugolo]] castle, where he wrote a report of the battle to the emperor, blaming the failure on Mercy's recklessness. The Austrian eventually retreated to the [[Secchia]] River, where they were joined in July by reinforcements and a new leader, Field Marshal [[Dominik von Königsegg-Rothenfels|Königsegg]]. There was little significant conflict as the two armies faced each other across the Secchia until September, when Königsegg began a series of moves that culminated in the Austrian [[Battle of Guastalla|defeat at Guastalla]], again with heavy casualties, on September 19, after which the Austrians retreated to the Oglio River, a position they maintained for the rest of the year. ||| Aftermath ||| ||| +0 Battle of San Pietro Infine ||| Allied invasion of Italy ||| The [[Allied invasion of Italy]] from the south followed the Allied successes in [[North African Campaign|North Africa]]. [[Eighth Army (United Kingdom)|Eighth Army]]'s advance from the east following the [[Second Battle of El Alamein]] and the British-American invasion of [[French North Africa]] by the British [[First Army (United Kingdom)|First Army]] in [[Operation Torch]] had led by May 1943 to the surrender of Axis forces in Africa. ||| Background ||| North Africa and Sicily ||| +0 Battle of San Pietro Infine ||| Battle of Monte Cassino ||| By mid-January, Fifth Army had reached the formidable Gustav Line defenses and commenced the [[Battle of Monte Cassino|first Battle of Monte Cassino]], which started on 17 January 1944. ||| Aftermath ||| ||| +0 Battle of San Pietro Infine ||| Operation Slapstick ||| The Germans retreated to the island of Sicily and on the night of 9/10 July 1943, an Allied armada of 2,590 vessels launched one of the largest combined operations of World War II: the [[Allied invasion of Sicily|invasion of Sicily]]. Over the next five weeks, 500,000 Allied soldiers, sailors, and airmen fought German and Italian forces for control of the island. Although the Allied powers were victorious, the Axis managed to evacuate over 100,000 men and 10,000 vehicles from Sicily across the [[Straits of Messina]] during the first seventeen days in August. The Allies then invaded the Italian mainland in September 1943 at [[Operation Avalanche (World War II)|Salerno]], in [[Calabria]] (''Operation Baytown'') and [[Taranto]] (''[[Operation Slapstick]]''). ||| Background ||| North Africa and Sicily ||| +0 Battle of San Pietro Infine ||| Second Battle of El Alamein ||| The [[Allied invasion of Italy]] from the south followed the Allied successes in [[North African Campaign|North Africa]]. [[Eighth Army (United Kingdom)|Eighth Army]]'s advance from the east following the [[Second Battle of El Alamein]] and the British-American invasion of [[French North Africa]] by the British [[First Army (United Kingdom)|First Army]] in [[Operation Torch]] had led by May 1943 to the surrender of Axis forces in Africa. ||| Background ||| North Africa and Sicily ||| +0 Battle of Sana'a (2014) ||| Yemeni Revolution ||| [[Zaydi]] Shia Muslims loyal to [[Abdul-Malik al-Houthi]], a powerful tribal leader from the northern [[Saada Governorate]], participated in the [[Yemeni Revolution]] in 2011 and 2012. However, the [[Houthis]] also clashed with [[Islamism|Islamist]]s from Yemen's [[Sunni Islam|Sunni Muslim]] majority, with sporadic and sometimes intense fighting in the northern village of [[Dammaj]], as well as several neighbouring governorates. In January 2014, the Yemeni government began evacuating [[Salafi]] fighters from the Saada Governorate, handing victory in the region to the Houthis. ||| Background ||| ||| +0 Battle of Sangshak ||| Battle of Kohima ||| Japanese casualties were also heavy. The II Battalion, 58th Regiment was the hardest-hit unit, with more than 400 casualties. However, the prolonged battle had also delayed Miyazaki's advance on Kohima by a week. His Left Assault Force had the shortest and easiest route to Kohima. They arrived at the vital Kohima ridge only on April 3, by which time Allied reinforcements had also reached the area. In the ensuing [[Battle of Kohima]], the Japanese failed to capture the entire ridge, and were eventually forced to retreat by British counter-attacks and shortage of food. ||| Aftermath and results ||| ||| +0 Battle of Sappony Church ||| Battle of Staunton River Bridge ||| [[Petersburg, Virginia]], was the supply center for the Confederate capital of [[Richmond, Virginia|Richmond]], and was under siege by Union forces under the command of [[Lieutenant General (CSA)|Lt. Gen.]] [[Ulysses S. Grant]]. Petersburg was supplied by rail along three remaining lines, the [[Richmond and Petersburg Railroad]]; the [[Southside Railroad (Virginia)|South Side Railroad]], which reached to [[Lynchburg, Virginia|Lynchburg]] in the west; and the [[Wilmington and Weldon Railroad|Weldon Railroad]], also called the Petersburg and Weldon Railroad, which led to [[Weldon, North Carolina]], and the Confederacy's only remaining major port, [[Wilmington, North Carolina]]. On June 22, Grant dispatched a 3,300 strong [[cavalry]] unit under the command of [[Brigadier general (United States)|Brig. Gens.]] [[James H. Wilson]] and [[August V. Kautz]] to cut the rail lines. This led to a series of raids that destroyed {{convert|60|mi|km}} of rail track and culminated in the [[Battle of Staunton River Bridge]] on June 25, where the raiders were defeated and began a retreat back to Union positions. ||| Background ||| ||| +0 Battle of Satala (530) ||| Battle of Callinicum ||| The next day, the Persians departed and returned to Persian Armenia, unmolested by the Byzantines, who were satisfied with their victory over a far larger force. Negotiations between Persia and Byzantium also resumed after the battle, but they led nowhere, and in spring 531 war resumed, with the campaign that led to the [[Battle of Callinicum]]. ||| Aftermath ||| ||| +0 Battle of Saumur (1940) ||| Battle of France ||| The '''Battle of Saumur''' occurred during the last stages of the [[Battle of France]] during [[World War II]], when officer cadets from the [[Armoured Cavalry Branch Training School|Cavalry School at Saumur]], led by superintendent Colonel Michon, made a defensive stand along the [[Loire River]] at [[Saumur]] and [[Gennes, Maine-et-Loire|Gennes]]. For two days the Cavalry School, and other assorted units which had fallen back before the German advance, held off a German attack. Since the battle occurred after the message by [[Philippe Pétain|Marshal Pétain]] which called for an end to fighting (on 17 June 1940), the event is often considered one of the first acts of the [[French Resistance]]. ||| ||| ||| +0 Battle of Savo Island ||| Battle of Rennell Island ||| The battle was the first of five costly, large scale sea and air-sea actions fought in support of the ground battles on Guadalcanal itself, as the Japanese sought to counter the American offensive in the Pacific. These sea battles took place every few days, with increasing delays on each side to regroup and refit, until the November 30, 1942 ''[[Battle of Tassafaronga]]'' (sometimes referred to as the '''Fourth Battle of Savo Island''' or, in Japanese sources, as the {{Nihongo|'''Battle of Lunga Point'''|ルンガ沖夜戦}}) {{mdash}}after which the Japanese, eschewing the costly losses, attempted resupplying by submarine and barges. The final naval battle, the ''[[Battle of Rennell Island]]'' (Japanese: レンネル島沖海戦), took place months later on January 29–30, 1943 by which time the Japanese were preparing to withdraw and evacuate their remaining land forces. ||| ||| ||| +0 Battle of Scarrifholis ||| Cromwellian conquest of Ireland ||| The '''Battle of Scarrifholis''' was fought in [[County Donegal]] in the north-west of Ireland on 21 June 1650, during the [[Irish Confederate Wars]] – part of the [[Wars of the Three Kingdoms]] ([[Irish language|Irish]]: ''Cogadh na dTrí Ríocht''). It was fought between the Ulster Army (Catholic), commanded by [[Heber MacMahon]], [[Roman Catholic Bishop of Clogher]], and an English [[Parliament of England|Parliamentarian]] army commanded by [[Charles Coote, 1st Earl of Mountrath]] and composed of troops from the [[New Model Army]] and local Ulster [[Protestant]] settlers. The battle resulted in the annihilation of the Ulster army and the loss of most of its weapons and supplies. This secured the north of Ireland for the English Parliament and contributed greatly to the [[Cromwellian conquest of Ireland]]. ||| ||| ||| +0 Battle of Scarrifholis ||| Siege of Charlemont ||| Coote went on to [[Siege of Charlemont|besiege Charlemont]], the remaining stronghold held by the Ulster Army under [[Phelim O'Neill]] despite taking severe losses in several failed assaults, O'Neill surrendered the fort to Coote in August 1650. Coote's army proceeeded to march south, taking [[Sligo]] and then [[Galway]] after a long [[Siege of Galway|siege]] in 1652. The surrender of this city marked the effective end of the Confederacy of Kilkenny resistance to the [[Cromwellian conquest of Ireland]]. ||| The battle ||| Aftermath ||| +0 Battle of Scarrifholis ||| Siege of Galway ||| Coote went on to [[Siege of Charlemont|besiege Charlemont]], the remaining stronghold held by the Ulster Army under [[Phelim O'Neill]] despite taking severe losses in several failed assaults, O'Neill surrendered the fort to Coote in August 1650. Coote's army proceeeded to march south, taking [[Sligo]] and then [[Galway]] after a long [[Siege of Galway|siege]] in 1652. The surrender of this city marked the effective end of the Confederacy of Kilkenny resistance to the [[Cromwellian conquest of Ireland]]. ||| The battle ||| Aftermath ||| +0 Battle of Schliengen ||| Battle of Altenkirchen ||| | [[Battle of Altenkirchen|Altenkirchen]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Biberach (1796) ||| |[[Battle of Biberach (1796)|Biberach]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Emmendingen ||| |[[Battle of Emmendingen|Emmendingen]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Friedberg ||| |[[Battle of Friedberg|Friedberg]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Kehl (1796) ||| | [[Battle of Kehl (1796)|Kehl]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Neresheim ||| |[[Battle of Neresheim|Neresheim]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Rastatt (1796) ||| |[[Battle of Rastatt (1796)|Rastatt]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| Battle of Wetzlar (1796) ||| | [[Battle of Wetzlar (1796)|Wetzlar and Uckerath]] ||| Background ||| Summer of maneuvers ||| +0 Battle of Schliengen ||| French Revolution ||| Initially, the rulers of Europe viewed the [[French Revolution]] as a dispute between the French king and his subjects, and not something in which they should interfere. As revolutionary rhetoric grew more strident, they declared the interest of the monarchs of Europe as one with the interests of [[Louis XVI]] and his family; this [[Declaration of Pilnitz]] (27 August 1791) threatened ambiguous, but quite serious, consequences if anything should happen to the royal family. The position of the revolutionaries became increasingly difficult. Compounding their problems in international relations, French émigrés continued to agitate for support of a counter-revolution. Finally, on 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–98), France ranged itself against most of the European states sharing land or water borders with her, plus [[Kingdom of Portugal|Portugal]] and the [[Ottoman Empire]]. ||| Background ||| ||| +0 Battle of Schöngrabern ||| Battle of Ulm ||| The '''Battle of Schöngrabern''' (also known as the ''Battle of Hollabrunn'') was an engagement in the [[Napoleonic Wars]] during the [[War of the Third Coalition]], fought on 16 November 1805 near [[Hollabrunn]] in [[Lower Austria]], four weeks after the [[Battle of Ulm]] and two weeks before the [[Battle of Austerlitz]] ([[Slavkov]], [[Moravia]] - now [[Czech Republic]]). ||| ||| ||| +0 Battle of Sedan (1940) ||| Battle of Belgium ||| On 10 May 1940, the ''[[Wehrmacht]]'' invaded [[Luxembourg]], [[Battle of the Netherlands|Netherlands]] and [[Battle of Belgium|Belgium]]. In the Netherlands the Germans made steady process. By 12 May, parts of the German [[Army Group B]] was closing on [[Rotterdam]] and [[Amsterdam]], while in central Belgium the Germans were close to reaching the [[Dyle (river)|Dyle]] river east of [[Brussels]]. ||| Background ||| German plan ||| +0 Battle of Sedan (1940) ||| Battle of Dunkirk ||| Unfortunately for the Germans, the bulk of the [[British Army]] escaped from the port of [[Dunkirk]]. The German Army eventually won the ensuing [[Battle of Dunkirk]], forcing the Allied Armies to leave behind large amounts of equipment, but failed, through controversial circumstances, to eliminate the British manpower trapped in the pocket. The encirclement destroyed the best units of the French Army, including a [[prisoner of war]] total of 40,000, but significant forces did escape (139,732 British and 139,037 French). ||| Aftermath ||| ||| +0 Battle of Sedan (1940) ||| Battle of the Netherlands ||| On 10 May 1940, the ''[[Wehrmacht]]'' invaded [[Luxembourg]], [[Battle of the Netherlands|Netherlands]] and [[Battle of Belgium|Belgium]]. In the Netherlands the Germans made steady process. By 12 May, parts of the German [[Army Group B]] was closing on [[Rotterdam]] and [[Amsterdam]], while in central Belgium the Germans were close to reaching the [[Dyle (river)|Dyle]] river east of [[Brussels]]. ||| Background ||| German plan ||| +0 Battle of Sedgemoor ||| Battle of Culloden ||| The Battle of Sedgemoor is often referred to as the last battle fought on English soil, but this depends on the definition of [[pitched battle|battle, for which there are different interpretations]]. Other contenders for the title of last English battle include: the [[Battle of Preston (1715)|Battle of Preston]] in [[Lancashire]], which was fought on 14 November 1715, during the [[Jacobitism|First Jacobite Rebellion]]; the [[Jacobitism|Second Jacobite Rebellion's]] [[Clifton Moor Skirmish]], near [[Penrith, Cumbria|Penrith, Cumberland]], on 18 December 1745; and the skirmish known as the [[Battle of Graveney Marsh]] in Kent on 27 September 1940. The [[Battle of Culloden]] fought on Drumossie Moor to the north east of [[Inverness]] on 16 April 1746 was the last pitched battle fought on British soil. ||| Capture and aftermath ||| ||| +0 Battle of Sedgemoor ||| Battle of Preston (1715) ||| The Battle of Sedgemoor is often referred to as the last battle fought on English soil, but this depends on the definition of [[pitched battle|battle, for which there are different interpretations]]. Other contenders for the title of last English battle include: the [[Battle of Preston (1715)|Battle of Preston]] in [[Lancashire]], which was fought on 14 November 1715, during the [[Jacobitism|First Jacobite Rebellion]]; the [[Jacobitism|Second Jacobite Rebellion's]] [[Clifton Moor Skirmish]], near [[Penrith, Cumbria|Penrith, Cumberland]], on 18 December 1745; and the skirmish known as the [[Battle of Graveney Marsh]] in Kent on 27 September 1940. The [[Battle of Culloden]] fought on Drumossie Moor to the north east of [[Inverness]] on 16 April 1746 was the last pitched battle fought on British soil. ||| Capture and aftermath ||| ||| +0 Battle of Sedgemoor ||| Glorious Revolution ||| James II was overthrown in a ''[[coup d'état]]'' three years later, in the [[Glorious Revolution]]. ||| Capture and aftermath ||| ||| +0 Battle of Selby ||| Battle of Marston Moor ||| With the fall of the town huge stocks of munitions and more than 1,500 Royalist soldiers were lost to the Parliamentarians. The road from Hull to York was now opened for a Parliamentary advance on York, which they were able to besiege. When Royalist force under Price Rupert, relieved York and combined with the garrisons forces, Rupert felt strong enough to engage in the pitched [[Battle of Marston Moor]], however the Parliamentarians and Scottish Covenanters won the battle and with that victory consolidated their position in the north-east, depriving the Royalists of the area. ||| Aftermath ||| ||| +0 Battle of Seseña ||| Battle of the Sierra Guadalupe ||| The professional troops of the Spanish Army of Africa [[Extremadura campaign|had started]] their drive to Madrid in August 1936. Equipped with modern weapons they had received from Germany and Italy ([[Ju-52]] and [[Savoia SM-81]] planes, and [[L3/35|Italian tankettes]]), the Nationalist troops, had defeated the government militias in the battles of [[Battle of Mérida|Mérida]], [[Battle of Badajoz (1936)|Badajoz]], [[Battle of the Sierra Guadalupe|Sierra de Guadalupe]] ||| Background ||| ||| +0 Battle of Seven Pines ||| Battle of Shiloh ||| Although the battle was tactically inconclusive, it was the largest battle in the [[Eastern Theater of the American Civil War|Eastern Theater]] up to that time (and second only to [[Battle of Shiloh|Shiloh]] in terms of casualties thus far, about 11,000 total) and marked the end of the Union offensive, leading to the [[Seven Days Battles]] and Union retreat in late June. ||| ||| ||| +0 Battle of Seven Pines ||| Second Battle of Bull Run ||| The change in leadership of the Confederate Army in the field as a result of Seven Pines had a profound effect on the war. On June 24, 1862, McClellan's massive Army of the Potomac was within {{convert|6|mi|km}} of the Confederate capital of Richmond; Union soldiers wrote that they could hear church bells ringing in the city. Within 90 days, however, Robert E. Lee had driven McClellan from the Peninsula, [[John Pope (military officer)|Pope]] had been soundly beaten at the [[Second Battle of Bull Run]], and the battle lines were {{convert|20|mi|km}} from the Union capital in Washington. It would take almost two more years before the Union Army again got that close to Richmond, and almost three years before it finally captured it. ||| Aftermath ||| ||| +0 Battle of Seven Pines ||| Seven Days Battles ||| Although the battle was tactically inconclusive, it was the largest battle in the [[Eastern Theater of the American Civil War|Eastern Theater]] up to that time (and second only to [[Battle of Shiloh|Shiloh]] in terms of casualties thus far, about 11,000 total) and marked the end of the Union offensive, leading to the [[Seven Days Battles]] and Union retreat in late June. ||| ||| ||| +0 Battle of Sewell's Point ||| Battle of Fort Sumter ||| The '''Battle of Sewell's Point''' was an inconclusive exchange of cannon fire between the [[Union (American Civil War)|Union]] [[gunboat]] [[USS Monticello (1859)|USS ''Monticello'']], supported by the [[USS Thomas Freeborn|USS ''Thomas Freeborn'']], and [[Confederate States of America|Confederate]] [[Artillery battery|batteries]] on [[Sewell's Point]] that took place on May 18, 19 and 21, 1861, in [[Norfolk County, Virginia]] in the early days of the [[American Civil War]]. Little damage was done to either side. By the end of April 1861, [[USS Cumberland (1842)|USS ''Cumberland'']] and a small number of supporting ships were enforcing the [[Union blockade]] of the southeastern Virginia ports at the southern end of the [[Chesapeake Bay]] and had captured several ships which attempted to pass the blockade. USS ''Monticello's'' bombardment of the Sewell's Point battery was one of the earliest [[Union Navy]] actions against Confederate forces during the Civil War. {{#tag:ref|This otherwise minor incident at Sewell's Point was called a battle at the time simply because it occurred soon after the fall of [[Battle of Fort Sumter|Fort Sumter]] and before any significant military actions had occurred in the war. The U. S. National Park Service includes this engagement in its list of 384 principal battles of the American Civil War. ||| ||| ||| +0 Battle of Sewell's Point ||| Battle of Hampton Roads ||| The Sewell's Point battery and other batteries in the area engaged Union vessels on other occasions over the next 12 months, including engagements of Union vessels or supporting fire against them during the clash of the ironclads (the Union's [[USS Monitor|USS ''Monitor'']] and the Confederacy's [[CSS Virginia|CSS ''Virginia'']], formerly USS ''Merrimack'') during the [[Battle of Hampton Roads]] on March 9, 1862. Federal troops occupied Norfolk and Portsmouth on May 10, 1862. ||| Aftermath ||| ||| +0 Battle of Sewell's Point ||| Union blockade ||| The '''Battle of Sewell's Point''' was an inconclusive exchange of cannon fire between the [[Union (American Civil War)|Union]] [[gunboat]] [[USS Monticello (1859)|USS ''Monticello'']], supported by the [[USS Thomas Freeborn|USS ''Thomas Freeborn'']], and [[Confederate States of America|Confederate]] [[Artillery battery|batteries]] on [[Sewell's Point]] that took place on May 18, 19 and 21, 1861, in [[Norfolk County, Virginia]] in the early days of the [[American Civil War]]. Little damage was done to either side. By the end of April 1861, [[USS Cumberland (1842)|USS ''Cumberland'']] and a small number of supporting ships were enforcing the [[Union blockade]] of the southeastern Virginia ports at the southern end of the [[Chesapeake Bay]] and had captured several ships which attempted to pass the blockade. USS ''Monticello's'' bombardment of the Sewell's Point battery was one of the earliest [[Union Navy]] actions against Confederate forces during the Civil War. {{#tag:ref|This otherwise minor incident at Sewell's Point was called a battle at the time simply because it occurred soon after the fall of [[Battle of Fort Sumter|Fort Sumter]] and before any significant military actions had occurred in the war. The U. S. National Park Service includes this engagement in its list of 384 principal battles of the American Civil War. ||| ||| ||| +0 Battle of Shangcai ||| World War II ||| '''Battle of Shangcai''' was a series of clashes fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. The battle is also called the '''Blocking Actions at Shangcai''' (上蔡阻击战) by the [[Communist Party of China|communists]], who launched the battle to support their [[Eastern Hennan Campaign]], with intention to prevent the nationalist force from reinforce their comrades-in-arms fighting the [[Eastern Hennan Campaign]]. ||| ||| ||| +0 Battle of Shanghai ||| Atomic bombings of Hiroshima and Nagasaki ||| In his correspondence with [[Hu Shih]], Chiang wrote that China was capable of withstanding six months of combat before changes in the international situation would have to end the war. This may have also caused Chiang to devote all of his best troops in the first battle of what would eventually become a prolonged war. However, while Chiang's initial assessment was overly optimistic, China continued to fight for eight more years until Japan was finally defeated after the [[Atomic bombings of Hiroshima and Nagasaki|atomic bombs were dropped on Hiroshima and Nagasaki]]. ||| Aftermath and appraisal ||| Effects ||| +0 Battle of Shanghai ||| Battle of Dunkirk ||| In addition, if the Japanese army had made a southward advance and invaded Wuhan and then turned eastward with a push toward East and Central China and encircled the Shanghai-Nanjing region, Chinese defenders would have been chased to the sea in a scenario similar to the future [[Battle of Dunkirk]]. The [[Imperial Japanese Navy]] (IJN) had total supremacy in Chinese seas and the retreating Chinese forces would have been decimated by the enemy as they had nowhere to retreat. Under this scenario, Chiang decided to establish a second front in Shanghai, with the intention of drawing enemy troops to the East and Central China Theater. ||| Background ||| Strategic reasons ||| +0 Battle of Shanghai ||| Hindenburg Line ||| In 1933, three military zones, Nanjing, Nanjing-[[Hangzhou]], and Nanjing-Shanghai, were established to coordinate defenses in the Yangtze Delta. In 1934, with [[Sino-German cooperation until 1941|German military assistance]], the construction of the so-called 'Chinese [[Hindenburg Line]]' began, with a series of fortifications to facilitate [[defense in depth]]. Two such lines, the Wufu Line (吳福線) between [[Suzhou]] and Fushan, and the Xicheng Line (錫澄線) between [[Wuxi]] and [[Jiangyin]], were in position to protect the road to Nanjing, in case Shanghai should fall into enemy hands. In spring 1937, just barely months before the beginning of the Second Sino-Japanese War, the lines were finally completed. However, the necessary training of personnel to man these positions and coordinate the defense had not yet been completed when the war broke out. ||| Background ||| Past experience and preparation ||| +0 Battle of Shanghai ||| Mukden Incident ||| Since the outbreak of the war on July 7, 1937, most combat had occurred in and around [[North China]] in operations collectively known as the [[Battle of Beiping-Tientsin]]. Originally, neither China nor Japan wanted the skirmish to escalate into a full-scale war. Japan expected a quick [[ceasefire]] and further gains of Chinese territory, similar to what had happened earlier in the [[Mukden Incident]] (1931), [[January 28 Incident]] (1932), the [[Defense of the Great Wall|Great Wall Incident]] (1933), and various other settlements brokered in the mid-1930s. ||| Background ||| Strategic reasons ||| +0 Battle of Sharon ||| Battle of Mughar Ridge ||| After the series of [[Central Powers]] defeats in Palestine at the end of 1917, at [[Battle of Beersheba (1917)|Beersheba]], at [[Third Battle of Gaza|Gaza]], at [[Battle of Mughar Ridge|Mughar Ridge]], and with the loss of large areas of southern Palestine during the subsequent retreats of the Seventh and Eighth Armies back into the Judean Hills, and following the loss of [[Battle of Jerusalem (1917)|Jerusalem]], several of the German and Ottoman army commanders in the region were replaced. [[General (Germany)|General]] [[Erich von Falkenhayn]] commanding the [[Yildirim Army Group]] was replaced by General [[Otto Liman von Sanders]] and [[Friedrich Freiherr Kress von Kressenstein]], commander of the Eighth Army was replaced by Djevad Pasha. [[Djemal Pasha|Cemal Pasha]] appointed [[Küçük Cemal Paşa|Cemal Kucjuk Pasha]] to command the [[Fourth Army (Ottoman Empire)|Fourth Army]]. ||| Background ||| ||| +0 Battle of Sharon ||| Battle of Nablus (1918) ||| The '''Battle of Sharon''' fought between 19 and 25 September 1918, began the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] half a day before the [[Battle of Nablus (1918)|Battle of Nablus]], in which large formations engaged and responded to movements by the opposition, according to pre-existing plans, in the last months of the [[Sinai and Palestine Campaign]] of [[World War I]]. The fighting took place over a wide area from the [[Mediterranean Sea]] east to the [[Rafat, Jerusalem|Rafat]] [[Salients, re-entrants and pockets|salient]] in the [[Judean Hills]]. Here the [[Egyptian Expeditionary Force]] (EEF) [[XXI Corps (United Kingdom)|XXI Corps]] with the [[France|French]] [[brigade]] sized ''Détachment Français de Palestine et de Syrie'' attacked the [[Yildirim Army Group]] [[Eighth Army (Ottoman Empire)|Eighth Army]]'s [[XXII Corps (Ottoman Empire)|XXII Corps]] and [[German Empire|German]] [[Asia Korps|Asia Corps]]. The Battle of Sharon extended well behind the Ottoman front lines when the [[Desert Mounted Corps]] rode through a gap in the front line across the Plain of Sharon to occupy the [[Jezreel Valley|Esdraelon Plain]]. Meanwhile, during the Battle of Nablus the [[XX Corps (United Kingdom)|XX Corps]] attacked [[Nablus]] while [[Chaytor's Force]] held the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]] before advancing to secure bridges and fords across the [[Jordan River]], to continue the [[encirclement]] the defenders in the Judean Hills. Subsequently Chaytor's Force advanced against the [[Fourth Army (Ottoman Empire)|Fourth Army]] to capture [[Salt, Jordan|Es Salt]] and [[Amman]] after the [[Second Battle of Amman]]. ||| ||| ||| +0 Battle of Sharon ||| Battle of Nazareth ||| The cavalry phase of the Battle of Sharon began as soon as the gap was made during the infantry attacks. The [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] led the way north up along the [[Plain of Sharon]] followed by the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] with the [[Australian Mounted Division]] in reserve. These divisions subsequently rode across the [[Mount Carmel Range]] through two passes, to occupy the Esdraelon Plain, on 20 September. Here they cut the main Ottoman lines of communication. Units of the 4th and 5th Cavalry Divisions converged to capture [[Capture of Afulah and Beisan|Afulah]] with the 4th Cavalry Division capturing Beisan in the afternoon. The Australian Mounted Division [[Capture of Jenin (1918)|captured Jenin]] along with thousands of prisoners when they captured the main line of retreat from Nablus to Damascus. On 20 September [[Nazareth]], the site of the Ottoman Army's Yildirim Army Group headquarters, was unsuccessfully attacked by the 5th Cavalry Division. During the [[Battle of Nazareth]] the Ottoman Commander in Chief, [[Otto Liman von Sanders]], was forced to escape. The 5th Cavalry Division captured the town the following day and several days later this division also captured Haifa and Acre following the [[Battle of Haifa (1918)|Battle of Haifa]]. On the last day of the Battle of Sharon, the Australian Mounted Division attacked a German reinforced rearguard garrison at [[Samakh, Tiberias|Samakh]], which had been put on the alert by Liman von Sanders during his escape from Nazareth. The Australian Light Horse victory at the [[Battle of Samakh]] and the subsequent [[Capture of Tiberias]] ended the Battle of Sharon and the Battle of Megiddo. As a result of the battles of Sharon and Nablus, known collectively as the Battle of Megiddo, much territory and many prisoners were captured. The Final Offensive of the Sinai and Palestine Campaign began the day after the Battle of Megiddo ended, with the [[Capture of Damascus (1918)|pursuit to Damascus]], which was captured on 1 October. ||| ||| ||| +0 Battle of Sharon ||| Battle of Samakh ||| The cavalry phase of the Battle of Sharon began as soon as the gap was made during the infantry attacks. The [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] led the way north up along the [[Plain of Sharon]] followed by the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] with the [[Australian Mounted Division]] in reserve. These divisions subsequently rode across the [[Mount Carmel Range]] through two passes, to occupy the Esdraelon Plain, on 20 September. Here they cut the main Ottoman lines of communication. Units of the 4th and 5th Cavalry Divisions converged to capture [[Capture of Afulah and Beisan|Afulah]] with the 4th Cavalry Division capturing Beisan in the afternoon. The Australian Mounted Division [[Capture of Jenin (1918)|captured Jenin]] along with thousands of prisoners when they captured the main line of retreat from Nablus to Damascus. On 20 September [[Nazareth]], the site of the Ottoman Army's Yildirim Army Group headquarters, was unsuccessfully attacked by the 5th Cavalry Division. During the [[Battle of Nazareth]] the Ottoman Commander in Chief, [[Otto Liman von Sanders]], was forced to escape. The 5th Cavalry Division captured the town the following day and several days later this division also captured Haifa and Acre following the [[Battle of Haifa (1918)|Battle of Haifa]]. On the last day of the Battle of Sharon, the Australian Mounted Division attacked a German reinforced rearguard garrison at [[Samakh, Tiberias|Samakh]], which had been put on the alert by Liman von Sanders during his escape from Nazareth. The Australian Light Horse victory at the [[Battle of Samakh]] and the subsequent [[Capture of Tiberias]] ended the Battle of Sharon and the Battle of Megiddo. As a result of the battles of Sharon and Nablus, known collectively as the Battle of Megiddo, much territory and many prisoners were captured. The Final Offensive of the Sinai and Palestine Campaign began the day after the Battle of Megiddo ended, with the [[Capture of Damascus (1918)|pursuit to Damascus]], which was captured on 1 October. ||| ||| ||| +0 Battle of Sharon ||| Capture of Afulah and Beisan ||| The cavalry phase of the Battle of Sharon began as soon as the gap was made during the infantry attacks. The [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] led the way north up along the [[Plain of Sharon]] followed by the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] with the [[Australian Mounted Division]] in reserve. These divisions subsequently rode across the [[Mount Carmel Range]] through two passes, to occupy the Esdraelon Plain, on 20 September. Here they cut the main Ottoman lines of communication. Units of the 4th and 5th Cavalry Divisions converged to capture [[Capture of Afulah and Beisan|Afulah]] with the 4th Cavalry Division capturing Beisan in the afternoon. The Australian Mounted Division [[Capture of Jenin (1918)|captured Jenin]] along with thousands of prisoners when they captured the main line of retreat from Nablus to Damascus. On 20 September [[Nazareth]], the site of the Ottoman Army's Yildirim Army Group headquarters, was unsuccessfully attacked by the 5th Cavalry Division. During the [[Battle of Nazareth]] the Ottoman Commander in Chief, [[Otto Liman von Sanders]], was forced to escape. The 5th Cavalry Division captured the town the following day and several days later this division also captured Haifa and Acre following the [[Battle of Haifa (1918)|Battle of Haifa]]. On the last day of the Battle of Sharon, the Australian Mounted Division attacked a German reinforced rearguard garrison at [[Samakh, Tiberias|Samakh]], which had been put on the alert by Liman von Sanders during his escape from Nazareth. The Australian Light Horse victory at the [[Battle of Samakh]] and the subsequent [[Capture of Tiberias]] ended the Battle of Sharon and the Battle of Megiddo. As a result of the battles of Sharon and Nablus, known collectively as the Battle of Megiddo, much territory and many prisoners were captured. The Final Offensive of the Sinai and Palestine Campaign began the day after the Battle of Megiddo ended, with the [[Capture of Damascus (1918)|pursuit to Damascus]], which was captured on 1 October. ||| ||| ||| +0 Battle of Sharon ||| Capture of Jenin ||| Airmen of the [[Palestine Brigade RAF|Palestine Brigade]] of the RAF, including No. 1 Squadron, Australian Flying Corps, flew bombing raids on 19 September attacking key communication centers at the Seventh and Eighth Army headquarters at Nablus and Tulkarm, which cut communications with the Yildirim Army Group headquarters at Nazareth. They also bombed the main German air base [[Capture of Jenin|at Jenin]] and 'harassed retreating Turkish troops on the roads.' ||| Battle ||| EEF aerial attacks ||| 19 September +0 Battle of Sharon ||| Eastern Front (World War I) ||| The focus of the Ottoman Army's war effort in 1918 turned from [[Palestine (region)|Palestine]] to [[Anatolia]], to the provinces and territories lost by their empire between 1877 and 1878 during the [[Russo-Turkish War (1877–1878)|Russo-Turkish War]]. This change of direction was heavily influenced by the [[Treaty of Brest-Litovsk]], signed in March 1918 which ended the war on the [[Eastern Front (World War I)|Eastern Front]] between [[Imperial Russia]] and the Central Powers. As a result, the Ottoman Army embarked on a series of territorial conquests in the [[Caucasus]]. [[Erzerum]], which had been captured by the Russians during the [[Erzerum Offensive]] in 1916, was retaken on 24 March 1918, followed by [[Van, Turkey|Van]] on 5 April and later [[Batum]], [[Kars]] and [[Tiflis]]. The reoccupation of these former Ottoman possessions, however, brought little strategic advantage, compared with the potential benefits of military success in Palestine. ||| Background ||| ||| +0 Battle of Sharon ||| Second Battle of Amman ||| The '''Battle of Sharon''' fought between 19 and 25 September 1918, began the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] half a day before the [[Battle of Nablus (1918)|Battle of Nablus]], in which large formations engaged and responded to movements by the opposition, according to pre-existing plans, in the last months of the [[Sinai and Palestine Campaign]] of [[World War I]]. The fighting took place over a wide area from the [[Mediterranean Sea]] east to the [[Rafat, Jerusalem|Rafat]] [[Salients, re-entrants and pockets|salient]] in the [[Judean Hills]]. Here the [[Egyptian Expeditionary Force]] (EEF) [[XXI Corps (United Kingdom)|XXI Corps]] with the [[France|French]] [[brigade]] sized ''Détachment Français de Palestine et de Syrie'' attacked the [[Yildirim Army Group]] [[Eighth Army (Ottoman Empire)|Eighth Army]]'s [[XXII Corps (Ottoman Empire)|XXII Corps]] and [[German Empire|German]] [[Asia Korps|Asia Corps]]. The Battle of Sharon extended well behind the Ottoman front lines when the [[Desert Mounted Corps]] rode through a gap in the front line across the Plain of Sharon to occupy the [[Jezreel Valley|Esdraelon Plain]]. Meanwhile, during the Battle of Nablus the [[XX Corps (United Kingdom)|XX Corps]] attacked [[Nablus]] while [[Chaytor's Force]] held the right flank in the [[Jordan Valley (Middle East)|Jordan Valley]] before advancing to secure bridges and fords across the [[Jordan River]], to continue the [[encirclement]] the defenders in the Judean Hills. Subsequently Chaytor's Force advanced against the [[Fourth Army (Ottoman Empire)|Fourth Army]] to capture [[Salt, Jordan|Es Salt]] and [[Amman]] after the [[Second Battle of Amman]]. ||| ||| ||| +0 Battle of Sharon ||| Spring Offensive ||| Also in March 1918, major offensive operations in Palestine became a low priority for the [[British Army]] when the spectacular successes of [[Erich Ludendorff]]'s [[Spring Offensive]] in [[France]] seriously threatened the [[British Expeditionary Force (World War I)|British Expeditionary Force]]. By July, it had become clear that this German offensive on the [[Western Front (World War I)|Western Front]], had failed. In August, a brief return to the [[battle of attrition]] in the [[trench warfare|trenches]] ensued until the [[Hundred Days Offensive]], coinciding with preparations for a renewal of the campaign in Palestine, began in August. ||| Background ||| ||| +0 Battle of Sharon ||| Third Battle of Gaza ||| After the series of [[Central Powers]] defeats in Palestine at the end of 1917, at [[Battle of Beersheba (1917)|Beersheba]], at [[Third Battle of Gaza|Gaza]], at [[Battle of Mughar Ridge|Mughar Ridge]], and with the loss of large areas of southern Palestine during the subsequent retreats of the Seventh and Eighth Armies back into the Judean Hills, and following the loss of [[Battle of Jerusalem (1917)|Jerusalem]], several of the German and Ottoman army commanders in the region were replaced. [[General (Germany)|General]] [[Erich von Falkenhayn]] commanding the [[Yildirim Army Group]] was replaced by General [[Otto Liman von Sanders]] and [[Friedrich Freiherr Kress von Kressenstein]], commander of the Eighth Army was replaced by Djevad Pasha. [[Djemal Pasha|Cemal Pasha]] appointed [[Küçük Cemal Paşa|Cemal Kucjuk Pasha]] to command the [[Fourth Army (Ottoman Empire)|Fourth Army]]. ||| Background ||| ||| +0 Battle of Sharon ||| Third Transjordan attack ||| By September 1918 the front line was being held by EEF infantry from close to sea level on the Mediterranean coast, about {{convert|12|mi|km}} north of [[Jaffa]] and [[Arsuf]]. From this point, the line extended in the XXI Corps area about {{convert|15|mi|km}} south-eastward across the [[Sharon plain|Plain of Sharon]], before rising up to a height of {{convert|1500|–|2000|ft|m}} above sea level in the [[Judean Mountains|Judean Hills]] for about {{convert|15|mi|km}}, into the XX Corps' battle of Nablus area. From this height the front line dropped precipitously down to {{convert|1000|ft|m}} below sea level, into the area patrolled by infantry and mounted infantry in [[Chaytor's Force]]. Here the line crossed the Jordan Valley in the [[Third Transjordan attack]] area, for approximately {{convert|18|mi|km}}, ending east of the [[Dead Sea]] in the foothills of the [[Moab|Mountains of Gilead/Moab]]. ||| Background ||| Battlefield ||| +0 Battle of Sharon ||| Western Front (World War I) ||| Also in March 1918, major offensive operations in Palestine became a low priority for the [[British Army]] when the spectacular successes of [[Erich Ludendorff]]'s [[Spring Offensive]] in [[France]] seriously threatened the [[British Expeditionary Force (World War I)|British Expeditionary Force]]. By July, it had become clear that this German offensive on the [[Western Front (World War I)|Western Front]], had failed. In August, a brief return to the [[battle of attrition]] in the [[trench warfare|trenches]] ensued until the [[Hundred Days Offensive]], coinciding with preparations for a renewal of the campaign in Palestine, began in August. ||| Background ||| ||| +0 Battle of Shicun ||| Second Sino-Japanese War ||| For the former [[Kuomintang|nationalist]] turned Japanese puppet regime forces, these [[Warlord era|warlords]] and their troops had no problem of following [[Chiang Kai-shek]]'s orders, and they were eager to prove themselves. These [[Warlord era|warlords]] and their troops were well aware that due to the collaboration with the Japanese invaders during the [[Second Sino-Japanese War]], they were well hated by the general population in [[China]], including those [[Kuomintang|nationalists]] who refused to surrender to the enemy and fought the enemy until the eventual victory. Therefore, in the impending demilitarization after [[World War II]], they were certainly be disarmed and discharged, which would probably be the best outcome and the power of these [[Warlord era|warlord]] would be reduced or even completely eliminated as a result. [[Chiang Kai-shek]]'s ordering them not surrendering to the [[communist]]s and fighting off the [[communist]]s was a savior for them because by carrying out such orders, these [[Warlord era|warlords]] and their troops could legitimize themselves and thus retain their power by fighting the [[communist]]s who were targeted as rebels by [[Chiang Kai-shek]] and his [[Kuomintang|nationalist]] regime. ||| Nationalist Strategy ||| ||| +0 Battle of Shicun ||| World War II ||| The '''Battle of Shicun''' (时村战斗) was a battle fought at the Time Village (Shicun, 时村) of Xiu (宿) County in [[Anhui]], and it was a clash between the [[communist]]s and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after [[World War II]]. The battle was one of the [[Chinese Civil War]] in the immediate post [[World War II]] era. ||| ||| ||| +0 Battle of Shiloh ||| Battle of Chancellorsville ||| Reinforcements from Buell's army and a division of Grant's army arrived in the evening of April 6 and helped turn the tide the next morning, when the Union commanders launched a counterattack along the entire line. Confederate forces were forced to retreat from the area, ending their hopes of blocking the Union advance into northern [[Mississippi]]. The Battle of Shiloh was the bloodiest battle in [[American history]] up to that time, although it was superseded the next year by the [[Battle of Chancellorsville]] (and, soon after, the three-day [[Battle of Gettysburg]], which would prove to be the bloodiest of the war). ||| ||| ||| +0 Battle of Shiloh ||| Battle of Fort Donelson ||| After the losses of [[Battle of Fort Henry|Fort Henry]] and [[Battle of Fort Donelson|Fort Donelson]] in February 1862, Confederate [[General (CSA)|General]] [[Albert Sidney Johnston]] withdrew his forces into western Tennessee, northern Mississippi, and [[Alabama]] to reorganize. Johnston established his base at [[Corinth, Mississippi]], the site of a major railroad junction and strategic transportation link between the Atlantic Ocean and the Mississippi River, but left the Union troops with access into southern Tennessee and points farther south via the Tennessee River. ||| Background and plans ||| ||| +0 Battle of Shiloh ||| Battle of Fort Henry ||| After the losses of [[Battle of Fort Henry|Fort Henry]] and [[Battle of Fort Donelson|Fort Donelson]] in February 1862, Confederate [[General (CSA)|General]] [[Albert Sidney Johnston]] withdrew his forces into western Tennessee, northern Mississippi, and [[Alabama]] to reorganize. Johnston established his base at [[Corinth, Mississippi]], the site of a major railroad junction and strategic transportation link between the Atlantic Ocean and the Mississippi River, but left the Union troops with access into southern Tennessee and points farther south via the Tennessee River. ||| Background and plans ||| ||| +0 Battle of Shiloh ||| Battle of Gettysburg ||| Reinforcements from Buell's army and a division of Grant's army arrived in the evening of April 6 and helped turn the tide the next morning, when the Union commanders launched a counterattack along the entire line. Confederate forces were forced to retreat from the area, ending their hopes of blocking the Union advance into northern [[Mississippi]]. The Battle of Shiloh was the bloodiest battle in [[American history]] up to that time, although it was superseded the next year by the [[Battle of Chancellorsville]] (and, soon after, the three-day [[Battle of Gettysburg]], which would prove to be the bloodiest of the war). ||| ||| ||| +0 Battle of Shiloh ||| Battle of Perryville ||| Nevertheless, Grant's career suffered temporarily in the aftermath of Shiloh. Halleck combined and reorganized his armies, relegating Grant to the powerless position of second-in-command. In late April and May, the Union armies, under Halleck's personal command, advanced slowly toward Corinth and [[Siege of Corinth|captured it]], while an amphibious force on the [[Mississippi River]] destroyed the Confederates' [[River Defense Fleet]] and captured [[Memphis, Tennessee]]. Halleck was promoted to be general in chief of all the Union armies. With Halleck's departure to the East, Grant was restored to command and eventually pushed down the Mississippi River to besiege [[Vicksburg Campaign|Vicksburg]], Mississippi. After the surrender of Vicksburg and the fall of [[Siege of Port Hudson|Port Hudson]] in the summer of 1863, the Mississippi River was under Union control and the Confederacy was cut in two. Command of the Army of Mississippi fell to Braxton Bragg, who was promoted to full general on April 6, and during the fall of 1862, he led it on an unsuccessful invasion of Kentucky, culminating in his retreat from the [[Battle of Perryville]]. ||| Aftermath ||| ||| +0 Battle of Shiloh ||| Siege of Port Hudson ||| Nevertheless, Grant's career suffered temporarily in the aftermath of Shiloh. Halleck combined and reorganized his armies, relegating Grant to the powerless position of second-in-command. In late April and May, the Union armies, under Halleck's personal command, advanced slowly toward Corinth and [[Siege of Corinth|captured it]], while an amphibious force on the [[Mississippi River]] destroyed the Confederates' [[River Defense Fleet]] and captured [[Memphis, Tennessee]]. Halleck was promoted to be general in chief of all the Union armies. With Halleck's departure to the East, Grant was restored to command and eventually pushed down the Mississippi River to besiege [[Vicksburg Campaign|Vicksburg]], Mississippi. After the surrender of Vicksburg and the fall of [[Siege of Port Hudson|Port Hudson]] in the summer of 1863, the Mississippi River was under Union control and the Confederacy was cut in two. Command of the Army of Mississippi fell to Braxton Bragg, who was promoted to full general on April 6, and during the fall of 1862, he led it on an unsuccessful invasion of Kentucky, culminating in his retreat from the [[Battle of Perryville]]. ||| Aftermath ||| ||| +0 Battle of Short Hills ||| Battle of Bound Brook ||| General Howe spent the winter planning a campaign to capture the seat of the [[Second Continental Congress|rebel Congress]], [[Philadelphia]]. The constant skirmishing throughout the winter had taken its toll on his troops stationed in New Jersey, and even a [[Battle of Bound Brook|major attack]] on the [[Continental Army]] outpost at [[Bound Brook, New Jersey|Bound Brook]] in April had not been entirely successful. ||| Background ||| ||| +0 Battle of Short Hills ||| Battle of Trenton ||| In March 1776 the [[Kingdom of Great Britain|British]] forces of Lieutenant General [[William Howe, 5th Viscount Howe|William Howe]] withdrew from [[Boston]] after Major General [[George Washington]] [[Fortification of Dorchester Heights|fortified high ground]] threatening the city and its harbor. With this army augmented by reinforcements from Europe, General Howe [[New York and New Jersey campaign|captured New York City]], forcing Washington to retreat all the way across [[New Jersey]]. At the end of 1776, Washington [[Washington's crossing of the Delaware River|crossed]] the [[Delaware River]] and [[Battle of Trenton|surprised]] German troops at [[Trenton, New Jersey]], and eventually regained control of most of the state. The two armies then settled into [[cantonment|winter quarters]], and engaged in a [[Forage War|war of skirmishes]] during the winter months. ||| Background ||| ||| +0 Battle of Shrewsbury ||| Battle of Towton ||| There were two other 15th century churches associated with battles. The one at [[Battle of Towton|Towton]] no longer exists, but [[Battle of Wakefield|Wakefield]] does. Neither were near the battlefield. ||| Aftermath ||| ||| +0 Battle of Shrewsbury ||| Battle of Wakefield ||| There were two other 15th century churches associated with battles. The one at [[Battle of Towton|Towton]] no longer exists, but [[Battle of Wakefield|Wakefield]] does. Neither were near the battlefield. ||| Aftermath ||| ||| +0 Battle of Singapore ||| Burma Campaign ||| An Indian revolutionary, [[Rash Behari Bose]], formed the pro-[[Indian Independence|independence]] [[Indian National Army]] (INA),{{sfn|Agrawal|2008 |p=150}} with the help of the Japanese, who were highly successful in recruiting Indian soldiers taken prisoner. In February 1942, from a total of about 40,000 Indian personnel in Singapore, about 30,000 joined the INA, of which about 7,000 fought Allied forces in the [[Burma Campaign]] as well as in the northeast Indian regions of [[Kohima]] and [[Imphal]].{{sfn|Brayley|2002|p=13}} ||| Aftermath ||| ||| +0 Battle of Siping ||| Second Sino-Japanese War ||| In an attempt to eradicate the enemy and secure the city, the nationalists launched an offensive against the communists in late February. However, the former bandits proved no match for combat-hardened communists who were veterans of the [[Second Sino-Japanese War]]. The Nationalist force, consisting of former bandits from the Pressuring Nine Dragons (Ya Jiu Long, 压九龙) gang, attacked the communist [[Siping (city)|Siping]] Group and inflicted more than a dozen fatalities and injured a communist squadron commander, Cheng Bizhen (程秉贞), the communists quickly counterattacked, completely annihilating the attacking Nationalists. ||| First nationalist offensive and counterattack ||| ||| +0 Battle of Sirte (2011) ||| Battle of Misrata ||| In Abu Hadi, NTC fighters from Misrata began looting and burning houses in vengeance for the [[Battle of Misrata]]. Calls by eastern NTC troops for an end to the looting were ignored. ||| Battle ||| Fourth opposition attack ||| +0 Battle of Sittang Bridge ||| Battle of Pegu ||| The Japanese could have wiped out the 17th Division, but they did not. They wanted to take Rangoon fast, and the delays involved in a mopping up operation were unacceptable; so they disengaged and headed north in search of another crossing-point. Later on 22 February, survivors of the 17th Division swam and ferried themselves over the Sittang in broad daylight. After smaller actions at the [[Battle of Pegu]] and [[Taukkyan Roadblock]], the Japanese went on to take Rangoon unopposed, on 9 March. Fortunately for the survivors of 17th Division, they had dismantled their roadblocks, so those Indians who had escaped Sittang Bridge were able to slip away to the north. ||| Aftermath ||| ||| +0 Battle of Slankamen ||| Battle of Vienna ||| The Ottomans had suffered partial military collapse against the Austrians in the 1680s, most notably at the [[Battle of Vienna]] in 1683, and the [[Siege of Belgrade (1688)|loss of Belgrade]] to [[Maximilian II Emanuel, elector of Bavaria|Maximilian II of Bavaria]] in 1688 and [[Eyalet of Bosnia|Bosnia]] in 1689. However, with the beginning of the [[Nine Years War]] in the west, the early 1690s were to see an end to Habsburg conquests in the Balkans and a partial Ottoman recovery. Many German troops were withdrawn from the east to fight [[King Louis XIV|King Louis]]' French forces on the Rhine, encouraging the Ottomans, led by the [[Grand Vizier]] [[Köprülü Fazıl Mustafa Pasha]], to continue the war. The Ottomans managed to retake Belgrade and most of present-day Serbia. ||| Background ||| ||| +0 Battle of Slankamen ||| Siege of Belgrade (1688) ||| The Ottomans had suffered partial military collapse against the Austrians in the 1680s, most notably at the [[Battle of Vienna]] in 1683, and the [[Siege of Belgrade (1688)|loss of Belgrade]] to [[Maximilian II Emanuel, elector of Bavaria|Maximilian II of Bavaria]] in 1688 and [[Eyalet of Bosnia|Bosnia]] in 1689. However, with the beginning of the [[Nine Years War]] in the west, the early 1690s were to see an end to Habsburg conquests in the Balkans and a partial Ottoman recovery. Many German troops were withdrawn from the east to fight [[King Louis XIV|King Louis]]' French forces on the Rhine, encouraging the Ottomans, led by the [[Grand Vizier]] [[Köprülü Fazıl Mustafa Pasha]], to continue the war. The Ottomans managed to retake Belgrade and most of present-day Serbia. ||| Background ||| ||| +0 Battle of Sobraon ||| Battle of Aliwal ||| On the British side, the Governor General, Sir [[Henry Hardinge, 1st Viscount Hardinge|Henry Hardinge]], had been dismayed by the head-on tactics of the Bengal Army's commander-in-chief, Sir [[Hugh Gough, 1st Viscount Gough|Hugh Gough]], and was seeking to have him removed from command. However, no commander senior enough to supersede Gough could arrive from England for several months. Then the army's spirits were revived by the victory gained by Sir [[Sir Harry Smith, 1st Baronet|Harry Smith]] at the [[Battle of Aliwal]], in which he eliminated a threat to the army's lines of communication, and the arrival of reinforcements including much-needed heavy artillery and two battalions of [[Gurkha]]s. ||| Background ||| ||| +0 Battle of Soissons (1918) ||| Spring Offensive ||| The battle ended with the French recapturing most of the ground lost to the German [[Spring Offensive]] in May 1918. ||| ||| ||| +0 Battle of Sokolovo ||| Third Battle of Kharkov ||| The '''Battle of Sokolovo''' took place on March 8 and 9, 1943, near the town of Sokolovo near [[Kharkiv]] in [[Ukraine]] when the [[Third Battle of Kharkov|on-going attack]] of the [[Wehrmacht]] was delayed by joint [[Soviet Union|Soviet]] and [[Czechoslovak]] forces. It was the first time that a foreign military unit, the [[First Czechoslovak Independent Field Battalion]], fought together with the [[Red Army]]. Under the command of [[Ludvík Svoboda]], later President of [[Czechoslovakia]] during the [[Warsaw Pact invasion of Czechoslovakia|Soviet-led intervention in August 1968]], the Czechoslovak soldiers delayed the advance of Germans to the Mzha river. On March 13, the position was abandoned as untenable due to the complete German encirclement of Kharkov. ||| ||| ||| +0 Battle of Sokolovo ||| Warsaw Pact invasion of Czechoslovakia ||| The '''Battle of Sokolovo''' took place on March 8 and 9, 1943, near the town of Sokolovo near [[Kharkiv]] in [[Ukraine]] when the [[Third Battle of Kharkov|on-going attack]] of the [[Wehrmacht]] was delayed by joint [[Soviet Union|Soviet]] and [[Czechoslovak]] forces. It was the first time that a foreign military unit, the [[First Czechoslovak Independent Field Battalion]], fought together with the [[Red Army]]. Under the command of [[Ludvík Svoboda]], later President of [[Czechoslovakia]] during the [[Warsaw Pact invasion of Czechoslovakia|Soviet-led intervention in August 1968]], the Czechoslovak soldiers delayed the advance of Germans to the Mzha river. On March 13, the position was abandoned as untenable due to the complete German encirclement of Kharkov. ||| ||| ||| +0 Battle of Solferino ||| Crimean War ||| The French army at Solferino, personally led by Napoleon III, was divided in four Corps plus the Imperial Guard. Many of its men and generals were veterans of the [[French conquest of Algeria]] and the [[Crimean War]], but its commander-in-chief had no military experience of note. The Sardinian army had four divisions on the field. ||| The Battle ||| Opposing forces ||| +0 Battle of Someri ||| Winter War ||| During the Russo-Finnish [[Winter War]] (1939–40), Soviet forces captured several Finnish islands in the eastern [[Gulf of Finland]]. In March 1940 these were ceded to the [[Soviet Union]] in accordance with the [[Moscow Peace Treaty]]. The Soviets occupied some of them with small garrisons. When the [[Continuation War]] began in June 1941 the islands were generally ignored; in autumn 1941, however, the Finnish Navy attempted to occupy the small, rocky island of [[Sommers|Someri (now Sommers, Russia)]], mistakenly thinking it had been abandoned by the Soviets. Coming under fire from the defenders, the small Finnish landing force hastily withdrew. Over the next few weeks the Finns shelled and bombed the island several times in hopes of forcing the Soviet garrison to depart. Finally in December 1941, as Soviet forces evacuated Hanko and several other islands in the [[Gulf of Finland]], the garrison on Someri was withdrawn to [[Moshchny Island]]. Finnish coastal forces occupied the island soon after. It proved to be a good position for observing Soviet movements in the area. ||| Background ||| ||| +0 Battle of Sorovich ||| Battle of Sarantaporo ||| Following the [[Battle of Sarantaporo]], the bulk of the Greek Army marched north along the Aegean coast towards [[Thessaloniki]], while the [[5th Infantry Division (Greece)|5th Infantry Division]] was detached to advance towards Monastir (modern [[Bitola]]). While advancing however, the division was caught at unawares near Banitsa (modern [[Vevi]]) by an attack of the [[Ottoman Empire|Ottoman]] [[VI Corps (Ottoman Empire)|VI Corps]] (part of the [[Vardar Army]] with the 16th, 17th and 18th ''Nizamiye'' divisions), which was retreating following the battle of Prilep with the Serbs. The Greeks, surprised by the presence of the Ottoman Corps, isolated from the rest of Greek army and outnumbered by the now counterattacking Turks, fell back towards Sorovich (now [[Amyntaio]]), leaving Monastir to be eventually captured ||| ||| ||| +0 Battle of Spanish Fort ||| Battle of Mobile Bay ||| After the Union victory in the [[Battle of Mobile Bay]], Mobile nevertheless remained in [[Confederate States of America | Confederate]] hands. [[Spanish Fort, Alabama|Spanish Fort]] was heavily fortified as an eastern defense to the city of [[Mobile, Alabama|Mobile]]. Fort Huger, Fort (Battery) Tracey, Fort (Battery) McDermott, Fort Alexis, Red Fort, and Old Spanish Fort were all part of the Mobile defenses at Spanish Fort. ||| ||| ||| +0 Battle of Spion Kop ||| Relief of Ladysmith ||| The '''Battle of Spion Kop''' ({{lang-nl| Slag bij Spionkop}}; {{lang-af|Slag van Spioenkop}}) was fought about {{convert|38|km|mi|abbr=on}} west-south-west of [[Ladysmith, South Africa|Ladysmith]] on the hilltop of [[Spion Kop (hill)|Spioenkop]] [[#Note about the name|(1)]] along the [[Tugela River]], [[KwaZulu-Natal Province|Natal]] in [[South Africa]] from 23–24 January 1900. It was fought between the [[South African Republic]] and the [[Orange Free State]] on the one hand and [[United Kingdom of Great Britain and Ireland|British]] forces during the [[Second Boer War]] during the campaign to [[Relief of Ladysmith|relieve Ladysmith]]. It was a British defeat. ||| ||| ||| +0 Battle of Spion Kop ||| Siege of Ladysmith ||| General Sir [[Redvers Henry Buller|Redvers Buller]], [[Victoria Cross|VC]], commander of the British forces in Natal, was attempting to relieve a British force [[Siege of Ladysmith|besieged in Ladysmith]]. The Boers under General [[Louis Botha]] held the [[Tugela River]] against him. Although Botha's men were outnumbered, they were mostly equipped with modern [[Mauser]] rifles and up-to-date field guns, and had carefully entrenched their positions. In late December, 1899, Buller made a frontal assault on the Boer positions at the [[Battle of Colenso]]. The result was a heavy British defeat. ||| Prelude ||| Planning and crossing the Tugela ||| +0 Battle of Spotsylvania Court House ||| Battle of Cold Harbor ||| Grant's intended advance of Hancock's corps was delayed by the Harris farm engagement, so the troops did not begin their movement south until the night of May 20-21. Lee did not fall into Grant's trap of attacking Hancock, but traveled on a parallel path to the [[North Anna River]]. The Overland Campaign continued as Grant attempted several more times to engage Lee, found himself stymied by strong defensive positions, and moved again around Lee's flank in the direction of Richmond. Major engagements occurred at the [[Battle of North Anna]] and the [[Battle of Cold Harbor]], after which Grant crossed the [[James River (Virginia)|James River]] to attack [[Petersburg, Virginia|Petersburg]]. The armies then faced each other for nine months in the [[Siege of Petersburg]]. ||| Aftermath ||| ||| +0 Battle of Spotsylvania Court House ||| Battle of Yellow Tavern ||| Generals Meade and Sheridan had quarreled about the cavalry's performance throughout the campaign and this incident with Wilson, compounding the frustration of the uncleared Brock Road, brought Meade's notorious temper to a boil. After a heated exchange laced with expletives on both sides, Sheridan told Meade that he could 'whip Stuart' if Meade let him. Meade reported the conversation to Grant, who replied, 'Well, he generally knows what he is talking about. Let him start right out and do it.' Meade deferred to Grant's judgment and issued orders to Sheridan to 'proceed against the enemy's cavalry.' Sheridan's entire command of 10,000 cavalrymen departed the following day. They engaged with (and mortally wounded) Stuart at the [[Battle of Yellow Tavern]] on May 11, threatened the outskirts of Richmond, refitted near the James River, and did not return to the army until May 24. Grant and Meade were left without cavalry resources during the critical days of the battle to come. ||| Battle ||| May 8: Laurel Hill and cavalry troubles ||| +0 Battle of Spotsylvania Court House ||| Battle of the Wilderness ||| The '''Battle of Spotsylvania Court House''', sometimes more simply referred to as the '''Battle of Spotsylvania''' (or the 19th-century spelling '''Spottsylvania'''), was the second major battle in [[Lieutenant general (United States)|Lt. Gen.]] [[Ulysses S. Grant]]'s 1864 [[Overland Campaign]] of the [[American Civil War]]. Following the bloody but inconclusive [[Battle of the Wilderness]], Grant's army disengaged from [[Confederate States Army|Confederate]] [[General (CSA)|General]] [[Robert E. Lee]]'s army and moved to the southeast, attempting to lure Lee into battle under more favorable conditions. Elements of Lee's army beat the [[Union Army|Union]] army to the critical crossroads of Spotsylvania Court House, Virginia and began entrenching. Fighting occurred on and off from May 8 through May 21, 1864, as Grant tried various schemes to break the Confederate line. In the end, the battle was tactically inconclusive, but with almost 32,000 casualties on both sides, it was the costliest battle of the campaign. ||| ||| ||| +0 Battle of Spotsylvania Court House ||| Siege of Petersburg ||| Grant's intended advance of Hancock's corps was delayed by the Harris farm engagement, so the troops did not begin their movement south until the night of May 20-21. Lee did not fall into Grant's trap of attacking Hancock, but traveled on a parallel path to the [[North Anna River]]. The Overland Campaign continued as Grant attempted several more times to engage Lee, found himself stymied by strong defensive positions, and moved again around Lee's flank in the direction of Richmond. Major engagements occurred at the [[Battle of North Anna]] and the [[Battle of Cold Harbor]], after which Grant crossed the [[James River (Virginia)|James River]] to attack [[Petersburg, Virginia|Petersburg]]. The armies then faced each other for nine months in the [[Siege of Petersburg]]. ||| Aftermath ||| ||| +0 Battle of Springfield (1780) ||| Battle of Connecticut Farms ||| The '''Battle of Springfield''' was fought during the [[American Revolutionary War]] on June 23, 1780. After the [[Battle of Connecticut Farms]], on June 7, 1780, had foiled [[Lieutenant General]] [[Wilhelm von Knyphausen|Wilhelm, Baron von Knyphausen]]'s expedition to attack [[General]] [[George Washington]]'s army at [[Morristown, New Jersey]], Knyphausen and Lieutenant General Sir [[Henry Clinton (1730–1795)|Henry Clinton]], [[Kingdom of Great Britain|British]] commander-in-chief in North America, decided upon a second attempt. Although the British were initially able to advance, they were ultimately forced to withdraw in the face of newly arriving colonial forces, resulting in a Continental victory. ||| ||| ||| +0 Battle of St. Jakob an der Birs ||| Battle of Thermopylae ||| While the sheer bravery or foolhardiness on the Swiss side was recognized by contemporaries, it was only in the 19th century, after the collapse of the Napoleonic [[Helvetic Republic]], that the battle came to be stylized as a kind of Swiss [[Battle of Thermopylae|Thermopyle]], a heroic and selfless rescue of the fatherland from a French invasion. ''Wie einst der Spartanerkönig Leonidas und seine Schar hatte sich die tapfere Jungmannschaft der Eidgenossen geopfert, um das Vaterland vor der Zerstörung zu bewahren.' ||| Legacy in Swiss historiography and patriotism ||| ||| +0 Battle of St. Quentin Canal ||| Hindenburg Line ||| The '''Battle of St Quentin Canal''' was a pivotal battle of World War I that began on 29 September 1918 and involved [[United Kingdom|British]], [[Military history of Australia during World War I|Australian]] and [[American Expeditionary Force|American]] forces in the spearhead attack and as a single combined force against the [[German Empire|German]] ''Siegfried Stellung'' of the [[Hindenburg Line]]. Under the command of Australian general Sir [[John Monash]], the assault achieved all its objectives, resulting in the first full breach of the Hindenburg Line, in the face of heavy German resistance and, in concert with other attacks of the Great Offensive along the length of the line, convinced the German high command that there was little hope of an ultimate German victory. ||| ||| ||| +0 Battle of St. Quentin Canal ||| Spring Offensive ||| After the German [[Spring Offensive]], British, Commonwealth, French and American counterattacks during the [[Hundred Days Offensive]] brought the Allies back up against the outposts of the Hindenburg Line close to the village of [[Bellicourt]] by the Autumn of 1918 where the [[Battle of Épehy]] was fought on 18 September 1918. ||| Prelude ||| ||| +0 Battle of Stalingrad ||| Battle of Kursk ||| Stalingrad's significance has been downplayed by some historians, who point either to the [[Battle of Moscow]] or the [[Battle of Kursk]] as more strategically decisive. {{fact|date=November 2015}}Others maintain that the destruction of an entire army (the largest killed, captured, wounded figures for Axis soldiers, nearly 1 million, during the war) and the frustration of Germany's grand strategy made the battle a watershed moment. At the time, however, the global significance of the battle was not in doubt. Writing in his diary on 1 January 1943, British General [[Alan Brooke]], [[Chief of the Imperial General Staff]], reflected on the change in the position from a year before: ||| Significance ||| ||| +0 Battle of Stalingrad ||| Battle of Voronezh (1942) ||| ''Blau'' finally opened as Army Group South began its attack into southern Russia on 28 June 1942. The German offensive started well. Soviet forces offered little resistance in the vast empty steppes and started streaming eastward. Several attempts to re-establish a defensive line failed when German units [[flanking maneuver|outflanked]] them. Two major pockets were formed and destroyed: the first, northeast of Kharkov, on 2 July, and a second, around [[Millerovo]], [[Rostov Oblast]], a week later. Meanwhile, the [[Second Army (Hungary)|Hungarian 2nd Army]] and the German 4th Panzer Army had launched an [[Battle of Voronezh (1942)|assault on Voronezh]], capturing the city on 5 July. ||| Prelude ||| ||| +0 Battle of Stalingrad ||| Demyansk Pocket ||| [[Adolf Hitler]] had declared in a public speech (in the [[Berlin Sportpalast]]) on 30 September 1942 that the German army would never leave the city. At a meeting shortly after the Soviet [[encirclement]], German army chiefs pushed for an immediate breakout to a new line on the west of the Don, but Hitler was at his Bavarian retreat of Obersalzberg in [[Berchtesgaden]] with the head of the ''Luftwaffe'', [[Hermann Göring]]. When asked by Hitler, Göring replied, after being convinced by [[Hans Jeschonnek]], {{Rp|926|date=June 2011}} A similar plan had been used a year earlier at the [[Demyansk Pocket]], albeit on a much smaller scale: a corps at Demyansk rather than an entire army. ||| Sixth Army surrounded ||| ||| +0 Battle of Stalingrad ||| Operation Mars ||| During the preparations for the attack, [[Marshal of the Soviet Union|Marshal]] Zhukov personally visited the front and noticing the poor organization, insisted on a one-week delay in the start date of the planned attack. {{Rp|p.117|date=May 2009}} The operation was code-named 'Uranus' and launched in conjunction with [[Operation Mars]], which was directed at [[Army Group Center]]. The plan was similar to the one Zhukov had used to achieve victory at [[Battle of Khalkhin Gol|Khalkhin Gol]] three years before, where he had sprung a [[pincer movement|double envelopment]] and destroyed the [[IJA 23d Division|23rd Division]] of the Japanese army. ||| Soviet counter-offensives ||| Operation Uranus: the Soviet offensive ||| +0 Battle of Staten Island ||| Battle of Brandywine ||| Sullivan's forces marched south after the battle, and were able to join Washington's defensive arrangements south of Philadelphia in time to participate in the key [[Battle of Brandywine]] on September 11. ||| Aftermath ||| ||| +0 Battle of Staten Island ||| Battle of Trenton ||| In March 1776 the [[Kingdom of Great Britain|British]] forces of General William Howe withdrew from [[Boston]] after Major General [[George Washington]] [[Fortification of Dorchester Heights|fortified high ground]] threatening the city and its harbor. With this army augmented by reinforcements from Europe, General Howe [[New York and New Jersey campaign|captured New York City]], forcing Washington to retreat all the way across [[New Jersey]]. At the end of 1776, Washington [[Washington's crossing of the Delaware River|crossed]] the [[Delaware River]] and [[Battle of Trenton|surprised]] German troops at [[Trenton, New Jersey]], and eventually regained control of most of the state. The two armies then settled into [[cantonment|winter quarters]], although there was [[Forage War|much skirmishing]] before the 1777 campaign got underway. ||| Background ||| ||| +0 Battle of Stockach (1799) ||| Battle of Kaiserslautern ||| Although the [[First Coalition]] forces achieved several initial victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], [[Battle of Mainz|Mainz]], [[Battle of Amberg|Amberg]] and [[Battle of Würzburg|Würzburg]], the efforts of [[Napoleon Bonaparte]] in northern [[Italian campaigns of the French Revolutionary Wars|Italy]] pushed Austrian forces back and resulted in the negotiation of the [[Peace of Leoben]] (17 April 1797) and the subsequent [[Treaty of Campo Formio]] (October 1797). ||| Background ||| ||| +0 Battle of Stockach (1799) ||| Battle of Ostrach ||| |battles = [[Battle of Ostrach|Ostrach]] - Stockach-[[Battle of Feldkirch|Feldkirch]]-[[Battle of Winterthur (1799)|Winterthur]]-[[First Battle of Zurich|First Zurich]]-[[Second Battle of Zurich|Second Zurich]]-[[Battle of Linth| ||| ||| ||| +0 Battle of Stockach (1799) ||| Battle of Winterthur (1799) ||| |battles = [[Battle of Ostrach|Ostrach]] - Stockach-[[Battle of Feldkirch|Feldkirch]]-[[Battle of Winterthur (1799)|Winterthur]]-[[First Battle of Zurich|First Zurich]]-[[Second Battle of Zurich|Second Zurich]]-[[Battle of Linth| ||| ||| ||| +0 Battle of Stockach (1799) ||| Second Battle of Zurich ||| |battles = [[Battle of Ostrach|Ostrach]] - Stockach-[[Battle of Feldkirch|Feldkirch]]-[[Battle of Winterthur (1799)|Winterthur]]-[[First Battle of Zurich|First Zurich]]-[[Second Battle of Zurich|Second Zurich]]-[[Battle of Linth| ||| ||| ||| +0 Battle of Stoczek ||| Battle of Olszynka Grochowska ||| The battle of Stoczek was the first Polish victory in the war and had a tremendous effect on Polish morale. Also, although Dwernicki did not destroy the enemy unit completely, it did not join the rest of the Russian forces and the left flank of the Polish forces preparing for the [[Battle of Olszynka Grochowska]] was secured. ||| ||| ||| +0 Battle of Stones River ||| American Revolutionary War ||| Murfreesboro was a small town in the Stones River Valley, a former state capital named for a [[Colonel (United States)|colonel]] in the [[American Revolutionary War]], [[Hardy Murfree]]. All through the war it was a center for strong Confederate sentiment, and Bragg and his men were warmly welcomed and entertained during the month of December. It was located in a rich agricultural region from which Bragg planned to provision his army and a position that he intended to use to block a potential Federal advance on Chattanooga. Hardee noted afterward that 'The field of battle offered no particular advantages for defense.' Despite this, Bragg was reluctant to move farther south, say to the arguably more defensible [[Duck River (Tennessee)|Duck River]] Valley, or farther north, to Stewart's Creek, where Rosecrans thought Bragg would defend. Sensitive to the political requirements that almost no Tennessee ground be yielded to Federal control, he chose the relatively flat area northwest of the politically influential city, straddling the Stones River. Portions of the area, particularly near the intersection of the Nashville Pike and the Nashville and Chattanooga Railroad, were characterized by small but dense cedar forests, in places more impenetrable to infantry than the [[Battle of the Wilderness|Wilderness of Spotsylvania]] in [[Virginia]]. Short limestone outcroppings, separated by narrow cracks as if rows of teeth, impeded the movement of wagons and artillery. Hardee's Corps was initially placed in Triune, about 20 miles (32 km) to the west, Polk's on the west bank of the river, and a detached division from Hardee's Corps under Maj. Gen. [[John C. Breckinridge]] on the low hills east of the river. None of the troops were ordered to construct field fortifications. ||| Murfreesboro and plans for battle ||| ||| +0 Battle of Stones River ||| Battle of Fort Donelson ||| At dawn on December 31, about 6 a.m., Confederate [[William J. Hardee]] struck first, attacking the Union's right flank with the division of Maj. Gen. [[John P. McCown]], before many in Union Brig. Gen. [[Richard W. Johnson]]'s division had finished their breakfast. This was the third major battle, after [[Battle of Fort Donelson|Fort Donelson]] and [[Battle of Shiloh|Shiloh]], in which an early morning attack caught a Union army by surprise. The 10,000 Confederates who massed on their left attacked in one massive wave. McCook's deceptive campfires and the relative inexperience of McCown caused his division to drift away to the left, which left a gap in the front, but the gap was filled seamlessly by the division coming up from his rear, under Maj. Gen. [[Patrick Cleburne|Patrick R. Cleburne]]. These two divisions swept all resistance aside. Several artillery batteries were captured without having time to fire a shot. Johnson's division, on the right, suffered over 50% casualties. His neighboring Union division to the left, under Brig. Gen. [[Jefferson C. Davis]], was able to hold only briefly. ||| Battle ||| December 31, 1862 ||| +0 Battle of Stones River ||| Battle of Fredericksburg ||| The '''Battle of Stones River''' or '''Second Battle of Murfreesboro''' (in the [[Southern United States|South]], simply the '''Battle of Murfreesboro'''), was fought from December 31, 1862, to January 2, 1863, in [[Middle Tennessee]], as the culmination of the '''Stones River Campaign''' in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]]. Of the major battles of the Civil War, Stones River had the highest percentage of casualties on both sides. Although the battle itself was inconclusive, the [[Union Army]]'s repulse of two [[Confederate States Army|Confederate]] attacks and the subsequent Confederate withdrawal were a much-needed boost to Union morale after the defeat at the [[Battle of Fredericksburg]], and it dashed Confederate aspirations for control of [[Middle Tennessee]]. ||| ||| ||| +0 Battle of Stones River ||| Battle of Perryville ||| After the [[Battle of Perryville]] on October 8, 1862, Confederate [[Full General (CSA)|Gen.]] [[Braxton Bragg]]'s [[Army of Mississippi]] abandoned its invasion of [[Kentucky]] and withdrew to [[Harrodsburg, Kentucky]], where it was joined by [[Major General (CSA)|Maj. Gen.]] [[Edmund Kirby Smith|Kirby Smith]]'s army of 10,000 on October 10. Although Bragg's newly combined force was up to 38,000 veteran troops, he made no effort to regain the initiative. [[Major general (United States)|Maj. Gen.]] [[Don Carlos Buell]], the Union commander at Perryville, was equally passive and refused to attack Bragg. ||| Background and initial movements ||| ||| +0 Battle of Stones River ||| Battle of the Wilderness ||| Murfreesboro was a small town in the Stones River Valley, a former state capital named for a [[Colonel (United States)|colonel]] in the [[American Revolutionary War]], [[Hardy Murfree]]. All through the war it was a center for strong Confederate sentiment, and Bragg and his men were warmly welcomed and entertained during the month of December. It was located in a rich agricultural region from which Bragg planned to provision his army and a position that he intended to use to block a potential Federal advance on Chattanooga. Hardee noted afterward that 'The field of battle offered no particular advantages for defense.' Despite this, Bragg was reluctant to move farther south, say to the arguably more defensible [[Duck River (Tennessee)|Duck River]] Valley, or farther north, to Stewart's Creek, where Rosecrans thought Bragg would defend. Sensitive to the political requirements that almost no Tennessee ground be yielded to Federal control, he chose the relatively flat area northwest of the politically influential city, straddling the Stones River. Portions of the area, particularly near the intersection of the Nashville Pike and the Nashville and Chattanooga Railroad, were characterized by small but dense cedar forests, in places more impenetrable to infantry than the [[Battle of the Wilderness|Wilderness of Spotsylvania]] in [[Virginia]]. Short limestone outcroppings, separated by narrow cracks as if rows of teeth, impeded the movement of wagons and artillery. Hardee's Corps was initially placed in Triune, about 20 miles (32 km) to the west, Polk's on the west bank of the river, and a detached division from Hardee's Corps under Maj. Gen. [[John C. Breckinridge]] on the low hills east of the river. None of the troops were ordered to construct field fortifications. ||| Murfreesboro and plans for battle ||| ||| +0 Battle of Stones River ||| First Battle of Bull Run ||| On December 30, the Union force moved into line two miles (three km) northwest of Murfreesboro. The two armies were in parallel lines, about four miles (six km) long, oriented from southwest to northeast. Bragg's left [[flanking maneuver|flank]] was weak at the start, and Rosecrans could have attacked there when he arrived and wheeled left, around the flank and directly into the town of Murfreesboro, but he did not know the full disposition of Bragg's forces because of the skillful screening of the Confederate cavalry during the Union march. In a manner similar to the previous year's [[First Battle of Bull Run]], both commanders devised similar plans for the following day: envelop the enemy's right, get into his rear, and cut him off from his base. Since both plans were the same, the victory would probably go to the side that was able to attack first. Rosecrans ordered his men to be ready to attack after breakfast, but Bragg ordered an attack at dawn. ||| Murfreesboro and plans for battle ||| ||| +0 Battle of Stoney Creek ||| Battle of Fort George ||| On 27 May, the Americans had won the [[Battle of Fort George]], forcing the British defenders of [[Fort George, Ontario|Fort George]] into a hasty retreat, with heavy casualties. The British commander, Brigadier General [[John Vincent (British Army officer)|John Vincent]], gathered in all his outposts along the [[Niagara River]], disbanded the militia contingents in his force and retreated to [[Burlington Heights (Ontario)|Burlington Heights]] (at the west end of [[Burlington Bay]]), with about 1,600 men in total. The Americans under the overall leadership of General [[Henry Dearborn]], who was elderly and ill, were slow to pursue. A brigade under Brigadier General [[William H. Winder]] first followed up Vincent, but Winder decided that Vincent's forces were too strong to engage, and halted at the Forty Mile Creek. Another brigade joined him, commanded by Brigadier General [[John Chandler]], who was the senior, and took overall command. Their combined force, numbering 3,400, advanced to [[Stoney Creek, Ontario|Stoney Creek]], where they encamped on 5 June. ||| Background ||| ||| +0 Battle of Stoney Creek ||| Burning of Washington ||| Brigadier General Winder was later exchanged and subsequently commanded the Tenth Military District around Washington, where he attracted censure following the [[Burning of Washington]]. ||| Aftermath ||| ||| +0 Battle of Stony Point ||| Siege of Charleston ||| Washington had not intended to hold either point, and Stony Point was abandoned by the Americans on July 18, after carrying off the captured cannons and supplies. The British briefly reoccupied the site only to abandon it in October, as General Clinton prepared [[Siege of Charleston|a major expedition]] to the southern states. ||| Aftermath ||| ||| +0 Battle of Sullivan's Island ||| Battles of Lexington and Concord ||| When the American Revolutionary War broke out in 1775, the city of Charleston in the [[colony of South Carolina]] was a center of [[commerce]] in southern North America. The city's citizens joined other colonists in opposing the British parliament's attempts to tax them, and militia recruitment increased when word arrived of the April 1775 [[Battles of Lexington and Concord]]. ||| Background ||| ||| +0 Battle of Sullivan's Island ||| Siege of Boston ||| British army forces in [[North America]] were primarily tied up with the [[Siege of Boston]] in 1775. Seeking bases of operations where they had more control, the British planned an expedition to the southern colonies. Major General [[Henry Clinton (1730–1795)|Henry Clinton]], then in Boston, was to travel to [[Cape Fear (headland)|Cape Fear]], [[North Carolina]], where he would join with largely [[Scotland|Scottish]] [[Loyalist (American Revolution)|Loyalist]]s raised in the North Carolina backcountry, and a force of 2,000 men from [[Ireland]] under the command of [[Major General]] [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]]. ||| Background ||| British operations ||| +0 Battle of Sullivan's Island ||| Siege of Charleston ||| The '''Battle of Sullivan's Island''' or the '''Battle of Fort Sullivan''' was fought on June 28, 1776, during the [[American Revolutionary War]], also known as the American War of Independence. It took place near [[Charleston, South Carolina]], during the first [[United Kingdom|British]] attempt to capture the city from [[Thirteen Colonies|American]] rebels. It is also sometimes referred to as the '''First Siege of Charleston''', owing to a more successful [[Siege of Charleston|British siege]] in 1780. ||| ||| ||| +0 Battle of Suoi Chau Pha ||| Operation Bribie ||| By the second half of 1967 the Viet Cong seemed to have melted away in [[Phuoc Tuy Province|Phuoc Tuy province]], abandoning many of their bunker systems and avoiding the main roads and towns. The [[Battle of Long Tan]] and [[Operation Bribie]] had weakened the communist forces in the province, while further operations had restricted their movement and logistics. This prompted the commander of the [[1st Australian Task Force]] (1 ATF)—[[Brigadier (Australia)|Brigadier]] [[Stuart Clarence Graham|Stuart Graham]]—to speculate that the Viet Cong may have fled to the border, perhaps leaving the province altogether. ||| Background ||| Military situation ||| +0 Battle of Surabaya ||| Battle of Surabaya ||| In 2013, the Battle of Surabaya was commemorated in a 2D animated film called the ''[[Battle of Surabaya (film)|Battle of Surabaya]]'', which was scheduled to be released in August 2015. The film is produced by Mohammad Suryanto and focuses on a teenage courier named Musa. ||| Legacy ||| ||| +0 Battle of Suwon Airfield ||| Air Battle of South Korea ||| The '''Battle of Suwon Airfield''' was the first aerial battle of the [[Korean War]] occurring on June 27, 1950 over [[Kimpo Airfield]] and [[Suwon Air Base|Suwon Airfield]]. The battle, between aircraft of the [[United States]] and [[North Korea]], ended in a victory for the [[US Air Force]] after nine of its aircraft successfully shot down seven [[North Korean People's Air Force]] aircraft. It was the first direct engagement of the [[Air Battle of South Korea]]. ||| ||| ||| +0 Battle of Suwon Airfield ||| World War II ||| The battle was also considered a sign of the arrival of the [[Jet age]], the Il-10, which had been considered a high quality and effective conventional aircraft in [[World War II]] had been easily outmatched by the F-80 and its jet engine. The engagement was a rare example of an air-to-air battle at the early phase of the war, and North Korean forces became much more cautious when deploying their aircraft in battle, knowing they were easily outnumbered and outmatched by UN forces. For the next several months, the UN forces enjoyed [[air supremacy]], operating their air forces in support of ground combat virtually unopposed. ||| Aftermath ||| ||| +0 Battle of Sybota ||| Battle of Potidaea ||| Soon after this battle, the Athenians and Corinthians fought again at the [[Battle of Potidaea]], leading to a formal declaration of war from Sparta. ||| ||| ||| +0 Battle of Tabsor ||| Battle of Megiddo (1918) ||| The '''Battle of Tabsor''' was fought on 19–20 September 1918 beginning the [[Battle of Sharon]], which along with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the infantry phase of the Battle of Sharon the [[British Empire]] [[60th (2/2nd London) Division|60th Division]], [[XXI Corps (United Kingdom)|XXI Corps]] attacked and captured the section of the front line nearest the Mediterranean coast under cover of an intense artillery barrage including a [[creeping barrage]] and naval gunfire. This [[Egyptian Expeditionary Force]] (EEF) victory over the entrenched [[Eighth Army (Ottoman Empire)|Ottoman Eighth Army]], composed of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] soldiers, began the Final Offensive, ultimately resulting in the destruction of the equivalent of one [[Military of the Ottoman Empire|Ottoman army]], the retreat of what remained of two others, and the capture of many thousands of prisoners and many miles of territory from the Judean Hills to the border of modern-day Turkey. After the end of the battle of Megiddo, the [[Desert Mounted Corps]] pursued the retreating soldiers to [[Capture of Damascus (1918)|Damascus]], six days later. By the time the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire five weeks later, [[Pursuit to Haritan|Aleppo]] had been captured. ||| ||| ||| +0 Battle of Tabsor ||| Battle of Nablus ||| The '''Battle of Tabsor''' was fought on 19–20 September 1918 beginning the [[Battle of Sharon]], which along with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the infantry phase of the Battle of Sharon the [[British Empire]] [[60th (2/2nd London) Division|60th Division]], [[XXI Corps (United Kingdom)|XXI Corps]] attacked and captured the section of the front line nearest the Mediterranean coast under cover of an intense artillery barrage including a [[creeping barrage]] and naval gunfire. This [[Egyptian Expeditionary Force]] (EEF) victory over the entrenched [[Eighth Army (Ottoman Empire)|Ottoman Eighth Army]], composed of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] soldiers, began the Final Offensive, ultimately resulting in the destruction of the equivalent of one [[Military of the Ottoman Empire|Ottoman army]], the retreat of what remained of two others, and the capture of many thousands of prisoners and many miles of territory from the Judean Hills to the border of modern-day Turkey. After the end of the battle of Megiddo, the [[Desert Mounted Corps]] pursued the retreating soldiers to [[Capture of Damascus (1918)|Damascus]], six days later. By the time the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire five weeks later, [[Pursuit to Haritan|Aleppo]] had been captured. ||| ||| ||| +0 Battle of Tabsor ||| Capture of Damascus (1918) ||| The '''Battle of Tabsor''' was fought on 19–20 September 1918 beginning the [[Battle of Sharon]], which along with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the infantry phase of the Battle of Sharon the [[British Empire]] [[60th (2/2nd London) Division|60th Division]], [[XXI Corps (United Kingdom)|XXI Corps]] attacked and captured the section of the front line nearest the Mediterranean coast under cover of an intense artillery barrage including a [[creeping barrage]] and naval gunfire. This [[Egyptian Expeditionary Force]] (EEF) victory over the entrenched [[Eighth Army (Ottoman Empire)|Ottoman Eighth Army]], composed of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] soldiers, began the Final Offensive, ultimately resulting in the destruction of the equivalent of one [[Military of the Ottoman Empire|Ottoman army]], the retreat of what remained of two others, and the capture of many thousands of prisoners and many miles of territory from the Judean Hills to the border of modern-day Turkey. After the end of the battle of Megiddo, the [[Desert Mounted Corps]] pursued the retreating soldiers to [[Capture of Damascus (1918)|Damascus]], six days later. By the time the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire five weeks later, [[Pursuit to Haritan|Aleppo]] had been captured. ||| ||| ||| +0 Battle of Tabsor ||| Sinai and Palestine Campaign ||| The '''Battle of Tabsor''' was fought on 19–20 September 1918 beginning the [[Battle of Sharon]], which along with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the infantry phase of the Battle of Sharon the [[British Empire]] [[60th (2/2nd London) Division|60th Division]], [[XXI Corps (United Kingdom)|XXI Corps]] attacked and captured the section of the front line nearest the Mediterranean coast under cover of an intense artillery barrage including a [[creeping barrage]] and naval gunfire. This [[Egyptian Expeditionary Force]] (EEF) victory over the entrenched [[Eighth Army (Ottoman Empire)|Ottoman Eighth Army]], composed of [[German Empire|German]] and [[Ottoman Empire|Ottoman]] soldiers, began the Final Offensive, ultimately resulting in the destruction of the equivalent of one [[Military of the Ottoman Empire|Ottoman army]], the retreat of what remained of two others, and the capture of many thousands of prisoners and many miles of territory from the Judean Hills to the border of modern-day Turkey. After the end of the battle of Megiddo, the [[Desert Mounted Corps]] pursued the retreating soldiers to [[Capture of Damascus (1918)|Damascus]], six days later. By the time the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire five weeks later, [[Pursuit to Haritan|Aleppo]] had been captured. ||| ||| ||| +0 Battle of Tabsor ||| Spring Offensive ||| By July, it was clear that the [[German Empire|German]] [[Spring Offensive]] in France, which had forced the postponement of offensive plans in [[Palestine (region)|Palestine]], had failed, resulting in a return to trench warfare on the [[Western Front (World War I)|Western Front]]. This coincided with the approach of the campaign season in Palestine and the Middle East. ||| Background ||| ||| +0 Battle of Tabu-dong ||| Battle of Masan ||| When the North Koreans approached the Pusan Perimeter on August 5, they attempted the same frontal assault technique on the four main avenues of approach into the perimeter. Throughout August, the [[NK 6th Division]], and later the [[NK 7th Division]] engaged the [[US 25th Infantry Division]] at the [[Battle of Masan]], initially repelling a UN [[counteroffensive]] before countering with battles at [[Battle of Komam-ni|Komam-ni]] ||| Background ||| Pusan Perimeter ||| +0 Battle of Tacuarí ||| May Revolution ||| After the [[May Revolution]] in [[Buenos Aires]], capital of the [[Viceroyalty of the Río de la Plata]], the [[Primera Junta]] government invited the other cities and provinces to join the revolution. Any intent of preserving the local governments previous to the revolution were considered hostile; and as a consequence two military campaigns were launched to suppress the resistance, one to [[Upper Peru]] and another to Paraguay, whose Spanish governor, Bernardo de Velasco, had refused to recognize the Junta and had received political support from the [[Cabildo (council)|Cabildo]] of [[Asunción]]. ||| History ||| ||| +0 Battle of Taegu ||| Battle of Pyongtaek ||| The troops of the 24th Infantry were systematically pushed southeast in the [[Battle of Chochiwon]], the [[Battle of Chonan]], and the [[Battle of Pyongtaek]], as well as in smaller engaagements. The 24th Infantry made a desperate stand against the North Koreans in the [[Battle of Taejon]], where it was heavily decimated, but it delayed the North Korean advance until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of Taegu ||| Battle of the Bowling Alley ||| During the battle, however, North Korean troops were able to surprise US troops on Hill 303 and capture them. Late in the battle, these troops were machine gunned in the [[Hill 303 massacre]]. Despite these setbacks, the UN forces were successful in driving most of the North Koreans off, but the decisive battle to secure the city would occur during the [[Battle of the Bowling Alley]]. ||| ||| ||| +0 Battle of Taegu ||| World War II ||| The goal of American armed forces was to reinforce the remnants of the [[Republic of Korea Army|South Korean Army]] in fighting back the North Korean invasion (but only in the southeastern part of South Korea, around the major [[seaport]] of [[Pusan]]) to prevent the complete collapse of the South Korean Army and of the South Korean Government. However, the American armed forces in the [[Orient]] had been decreasing steadily since the end of [[World War II]] (in August 1945). Under the orders of [[Emperor of Japan|Emperor]] [[Hirohito]], the Japanese people had presented no trouble to the American occupation forces, and the Japanese set about peacefully rebuilding their devastated country. By mid-1950, there were no American troops in South Korea, and the American force in Japan had dwindled drastically. ||| Background ||| Outbreak of war ||| +0 Battle of Takur Ghar ||| Battle of Khafji ||| The [[quick reaction force]] (QRF) consisted of 19 Rangers, a [[United States Air Force Tactical Air Control Party|Tactical Air Control Party]] (TACP), and a three-man USAF [[Air Force Special Tactics|special tactics team]] ([[Pararescue|PJs]] and [[Combat Controllers]]) carried by two Chinooks, Razor 01 and Razor 02. Due to satellite communications difficulties, Razor 01 was mistakenly directed to the 'hot' LZ on the peak at {{Coord|33|20|34|N|69|12|49|E|type:mountain_region:AF}}. As Air Force rules prohibited AC-130 aircraft from remaining in hostile airspace in daylight after the crash of an AC-130 during the [[Battle of Khafji]] in the [[Gulf War]], the AC-130 support protecting Mako 30 was forced to leave before Razor 01 reached the LZ. Further communications difficulties meant that the pilot of the AC-130 was unaware that Razor 01 was incoming. At approximately 0610 hours, Razor 01, under the command of Captain Nate Self, reached the landing zone. The aircraft immediately began taking fire, and the right door [[minigun]]ner, Sergeant Phillip Svitak, was killed by small arms fire. An RPG then hit the helicopter, destroying the right engine and forcing it to crash land. As the Rangers and special tactics team exited the aircraft, Private First Class Matt Commons, posthumously promoted to Corporal, Sergeant Brad Crose, and Specialist Marc Anderson were killed. The surviving crew and quick-reaction force took cover in a hillock and a fierce firefight began. ||| The battle ||| ||| +0 Battle of Talavera de la Reina (1936) ||| Battle of the Sierra Guadalupe ||| In the first days of September, after a fitful retreat along the [[Battle of the Sierra Guadalupe|Tagus]], the government militias established themselves in a strong position on the heights above Talavera. Rather than risk the Republic's army defending open country in earlier battles, [[José Riquelme y López-Bago|General Riquelme]] had yielded ground constantly, allowing him to conserve his forces and muster over 10,000 men at Talavera. A strong complement of [[artillery]] and an [[armoured train]] were placed at his disposal. The weary and shot-torn Nationalists, meanwhile, had advanced several hundred miles with hardly a moment's pause. ||| ||| ||| +0 Battle of Tali-Ihantala ||| Invasion of Normandy ||| The Soviet attack on the Finnish front commenced on the [[Karelian Isthmus]] on June 9, 1944, (coordinated with the Allied [[Invasion of Normandy]]). Three Soviet armies were pitted there against the Finns, among them several experienced [[Guards unit|Guard formations]]. ||| Background ||| ||| +0 Battle of Tali-Ihantala ||| Operation Bagration ||| On June 22, Soviet forces began [[Operation Bagration|a wide-front push into Eastern Poland and Belorussia]]. ||| Related operations ||| ||| +0 Battle of Tali-Ihantala ||| Siege of Leningrad ||| After the initial Finnish advance of 1941, the Continuation War was stabilized to [[trench warfare]] with very little activity on either side. When the [[Siege of Leningrad]] was lifted in January 1944, the [[Stavka#Stavka of the RKKA during World War II|Stavka]] received orders to plan an [[Fourth strategic offensive|offensive against Finland]] to push it out of the war. ||| Background ||| ||| +0 Battle of Talladega ||| Battle of Horseshoe Bend (1814) ||| Casualties for the Creeks numbered about 300 killed and around 110 wounded. Jackson's casualties numbered 15 killed and around 85 wounded. After the battle, there was a significant lull in the fighting between the Red Sticks and Jackson's army. By December, the U.S. force was down to almost 500 because of desertion and enlistments running out. In January, in order to support the [[Georgia (U.S. state)|Georgia]] [[Militia (United States)|militia]], Jackson marched toward the village of Emuckfaw with an inexperienced force. This move resulted in the [[Battles of Emuckfaw and Enotachopo Creek]]. After these battles Jackson retired to Fort Strother. When Jackson received additional reinforcements (some of them regular U.S. troops), he once again went on the offensive and met the Red Sticks at the [[Battle of Horseshoe Bend (1814)|Battle of Horseshoe Bend]]. ||| Aftermath ||| ||| +0 Battle of Talladega ||| Battle of Tallushatchee ||| When General [[John Coffee]] returned to [[Fort Strother]] after defeating the Red Sticks at the [[Battle of Tallushatchee]], General [[Andrew Jackson]] received a call for help from friendly Creeks who were being besieged by Red Sticks at Talladega. Jackson and his force of about 2,000 men (about 1,200 infantry and 800 cavalry) were camped at Ten Islands on the Coosa River, near the present day Henry Neely Dam. The Creeks under command of Weatherford numbered about 700 warriors. A few white men and about 150 friendly Indians known as White Sticks, were inside a small defensive area known as Fort Leslie (it is often called Fort Lashley mistakenly). Fort Lashley was a palisade constructed around the trading post of a Mr. Leslie. ||| Background ||| ||| +0 Battle of Tallushatchee ||| Battle of Talladega ||| This battle was the first battle in General Andrew Jackson's military campaign. A week later, General Jackson inflicted another serious defeat on the Red Sticks at the [[Battle of Talladega]]. ||| Battle ||| ||| +0 Battle of Tamames ||| Battle of Talavera ||| Del Parque begged the [[Arthur Wellesley, 1st Duke of Wellington|Duke of Wellington]] to join him in an attempt to overrun Leon and Old Castile. However, the British general refused. Wellington had found the Spanish completely uncooperative during the campaign which culminated in the [[Battle of Talavera]] and his subsequent retreat to Portugal. A chastened Marchand would avenge his defeat at the [[Battle of Alba de Tormes]] in November. ||| Strategic picture ||| ||| +0 Battle of Tanagra (426 BC) ||| Battle of Tanagra (457 BC) ||| ''There was an earlier battle at Tanagra during the [[First Peloponnesian War]]; see [[Battle of Tanagra (457 BC)]].'' ||| ||| ||| +0 Battle of Tanagra (457 BC) ||| Battle of Oenophyta ||| Two months later, the Athenians regrouped and defeated Thebes at the [[Battle of Oenophyta]] and took control of Boeotia, taking down the wall the Spartans had built. With the victory the Athenians also occupied [[Phocis]], the original source of the conflict and the Opuntian [[Locrians|Locris]]. ||| Aftermath ||| ||| +0 Battle of Tannenberg ||| Battle of Grunwald ||| Although the battle actually took place near [[Olsztyn|Allenstein]] (Olsztyn), Hindenburg named it after Tannenberg, 30 km to the west, to avenge the defeat of the Teutonic Knights at the [[Battle of Grunwald|earlier battle of that name]] in 1410. ||| ||| ||| +0 Battle of Tannenberg ||| Battle of Waterloo ||| Hindenburg and Ludendorff's daring maneuvers to surprise and [[defeat in detail]] two enemy armies may be compared to a classic example such as the [[Battle of Austerlitz]]. However, the disastrous consequences of failing to defeat each enemy force in turn can be seen at the [[Battle of Waterloo]]. ||| Comparable historical battles ||| ||| +0 Battle of Tannenberg ||| Russo-Japanese War ||| The First Army commander was General [[Paul von Rennenkampf|Pavel Karlovitch Rennenkampf]] who in the [[Russo-Japanese War]] had earned a reputation for 'exceptional energy, determination, courage, and military capability.' The Second Army, coming north from Warsaw, was under General [[Alexander Samsonov|Alekesander Vasilevich Samsonov]], who was “…. possessed of a brilliant mind, reinforced by an excellent military education”. Since commanding a division in the war with Japan he had been governor of Turkestan. The two armies were directed by the military governor of Warsaw, who in wartime commanded the Northwest Military District, General [[Yakov Zhilinskiy|Yakov Grigorevich Zhilinskiy]]. His duties in Manchuria had been more diplomatic than military. Before moving to Warsaw he had been chief of the Russian general staff for two years. He set up his headquarters in Volkovysk. (Vawkavysk, Belarus), about {{convert|410|km|mi|abbr=on}} from Königsberg. ||| Background ||| ||| +0 Battle of Tannenberg ||| Schlieffen Plan ||| The German [[Schlieffen Plan]] proposed to defeat France swiftly while the Russians were mobilising. Then Germany's armies would shift by train to the eastern front. Therefore, East Prussia was garrisoned by a single army, the Eighth, commanded by General [[Maximilian von Prittwitz|Maximilian von Prittwitz und Gaffron]], which was to hold back the Russians while the outcome in the west was decided. A tangle of lakes, marshes and dense woods characterised the province, which would help defenders. ||| Background ||| ||| +0 Battle of Tannenberg Line ||| Battle for Narva Bridgehead ||| After [[Battle for Narva Bridgehead|defending the Narva bridgehead]] for six months, the German forces [[Narva Offensive (July 1944)|fell back to the Tannenberg Line]] in the hills of ''[[Sinimäed]]'' ({{lang-ru|Синие горы}}) on 26 July 1944. The three hills run east to west. The eastern hill was known to [[Estonians]] as the Lastekodumägi (Orphanage Hill; Kinderheimhöhe in German). The central was the Grenaderimägi (Grenadier Hill; Grenadierhöhe) and the westernmost was the Tornimägi (Tower Hill, also known in German as or 69.9 or Liebhöhe (Love Hill)). The heights have steep slopes and rise 20–50 m above the surrounding land. ||| Background ||| ||| +0 Battle of Tannenberg Line ||| Battle of Narva (1944) ||| ''This is a sub-article to [[Battle of Narva (1944)]].'' ||| ||| ||| +0 Battle of Tannenberg Line ||| Narva Offensive (July 1944) ||| After [[Battle for Narva Bridgehead|defending the Narva bridgehead]] for six months, the German forces [[Narva Offensive (July 1944)|fell back to the Tannenberg Line]] in the hills of ''[[Sinimäed]]'' ({{lang-ru|Синие горы}}) on 26 July 1944. The three hills run east to west. The eastern hill was known to [[Estonians]] as the Lastekodumägi (Orphanage Hill; Kinderheimhöhe in German). The central was the Grenaderimägi (Grenadier Hill; Grenadierhöhe) and the westernmost was the Tornimägi (Tower Hill, also known in German as or 69.9 or Liebhöhe (Love Hill)). The heights have steep slopes and rise 20–50 m above the surrounding land. ||| Background ||| ||| +0 Battle of Tannenberg Line ||| Riga Offensive (1944) ||| On 14 September, the [[Riga Offensive (1944)|Riga Offensive]] was launched by the Soviet [[1st Baltic Front|1st]], [[2nd Baltic Front|2nd]] and 3rd Baltic Fronts. It was aimed at capturing Riga and cutting off Army Group North in [[Courland]], western [[Latvia]]. After much argument, Adolf Hitler finally agreed to allow the [[Tallinn Offensive|evacuation of all the troops in Estonia]]. After months of holding the line, the exhausted men of the III SS Panzer Corps joined the withdrawal; fighting their way back from the Tannenberg Line. On 17 September, the 3rd Baltic Front launched the [[Tallinn Offensive]] from the [[Tartu Offensive|''Emajõgi'' River Front]] joining [[Lake Peipus|Lake ''Peipus'']] with Lake ''[[Võrtsjärv]]''. The operation was aimed at encircling the army detachment '''Narwa'''. Unable to hold the force, the German units withdrew towards the northwest while the incomplete II Army Corps was left to stall the Soviet attack. The '''Narwa''' withdrew quickly towards the Latvian border. On 22 September, Tallinn was abandoned. Some of the Estonian formations now began to attack the retreating Germans, attempting to secure supplies and weapons to continue a [[guerrilla warfare|guerrilla war]] as the [[Forest Brothers]] against the Soviet occupation. Several troops of the Estonian Division stayed in Estonia. These units continued fighting, some survivors joining the guerrilla groups which fought the Soviet occupying forces until the end of the 1970s. ||| Aftermath ||| ||| +0 Battle of Tannenberg Line ||| Tallinn Offensive ||| On 14 September, the [[Riga Offensive (1944)|Riga Offensive]] was launched by the Soviet [[1st Baltic Front|1st]], [[2nd Baltic Front|2nd]] and 3rd Baltic Fronts. It was aimed at capturing Riga and cutting off Army Group North in [[Courland]], western [[Latvia]]. After much argument, Adolf Hitler finally agreed to allow the [[Tallinn Offensive|evacuation of all the troops in Estonia]]. After months of holding the line, the exhausted men of the III SS Panzer Corps joined the withdrawal; fighting their way back from the Tannenberg Line. On 17 September, the 3rd Baltic Front launched the [[Tallinn Offensive]] from the [[Tartu Offensive|''Emajõgi'' River Front]] joining [[Lake Peipus|Lake ''Peipus'']] with Lake ''[[Võrtsjärv]]''. The operation was aimed at encircling the army detachment '''Narwa'''. Unable to hold the force, the German units withdrew towards the northwest while the incomplete II Army Corps was left to stall the Soviet attack. The '''Narwa''' withdrew quickly towards the Latvian border. On 22 September, Tallinn was abandoned. Some of the Estonian formations now began to attack the retreating Germans, attempting to secure supplies and weapons to continue a [[guerrilla warfare|guerrilla war]] as the [[Forest Brothers]] against the Soviet occupation. Several troops of the Estonian Division stayed in Estonia. These units continued fighting, some survivors joining the guerrilla groups which fought the Soviet occupying forces until the end of the 1970s. ||| Aftermath ||| ||| +0 Battle of Tarakan (1942) ||| Pacific War ||| The '''Battle of Tarakan''' took place on January 11–12, 1942, beginning a day after Japan declared war on the [[Kingdom of the Netherlands]]. Although [[Tarakan Island|Tarakan]] was only a small marshy island off northeastern [[Borneo]] in the [[Netherlands East Indies]], the island's 700 oil wells, oil refinery, and airfield made it a crucial objective for the [[Empire of Japan]] in the [[Pacific War]]. ||| ||| ||| +0 Battle of Taranto ||| Battle of France ||| The [[Battle of France|fall of France]] and the consequent loss of the [[French Mediterranean Fleet|French fleet in the Mediterranean]] (even before [[Attack on Mers-el-Kébir|Operation ''Catapult'']]) made redress essential. The older carrier, {{HMS|Eagle|1918|6}}, on Cunningham's strength, was ideal, possessing a very experienced air group composed entirely of obsolescent Swordfish aircraft. Three [[Gloster Gladiator|Sea Gladiator]]s were added for the operation. ||| Origins ||| ||| +0 Battle of Taranto ||| North African Campaign ||| In 1940–41, [[Italian Army]] operations in [[North Africa]], based in [[Libya]], required a supply line from Italy. The British Army's [[Western Desert Campaign|North African Campaign]], based in Egypt, suffered from much greater supply difficulties. Supply [[convoy]]s to Egypt had to either cross the Mediterranean via [[Gibraltar]] and [[Malta]], and then approach the coast of [[Sicily]], or steam all the way around the [[Cape of Good Hope]], up the whole east coast of Africa, and then through the [[Suez Canal]], to reach [[Alexandria]]. Since the latter was a very long and slow route, this put the Italian fleet in an excellent position to interdict British supplies and reinforcements. ||| Origins ||| ||| +0 Battle of Taranto ||| Raid on Alexandria ||| The attack on Taranto was avenged a year later by the Italian navy in its [[Raid on Alexandria (1941)|Raid on Alexandria]], when the Mediterranean fleet of the Royal Navy was attacked using midget submarines, severely damaging HMS ''Queen Elizabeth'' and HMS ''Valiant''. ||| Aftermath ||| ||| +0 Battle of Taranto ||| Raid on Alexandria (1941) ||| The attack on Taranto was avenged a year later by the Italian navy in its [[Raid on Alexandria (1941)|Raid on Alexandria]], when the Mediterranean fleet of the Royal Navy was attacked using midget submarines, severely damaging HMS ''Queen Elizabeth'' and HMS ''Valiant''. ||| Aftermath ||| ||| +0 Battle of Taranto ||| Western Desert Campaign ||| In 1940–41, [[Italian Army]] operations in [[North Africa]], based in [[Libya]], required a supply line from Italy. The British Army's [[Western Desert Campaign|North African Campaign]], based in Egypt, suffered from much greater supply difficulties. Supply [[convoy]]s to Egypt had to either cross the Mediterranean via [[Gibraltar]] and [[Malta]], and then approach the coast of [[Sicily]], or steam all the way around the [[Cape of Good Hope]], up the whole east coast of Africa, and then through the [[Suez Canal]], to reach [[Alexandria]]. Since the latter was a very long and slow route, this put the Italian fleet in an excellent position to interdict British supplies and reinforcements. ||| Origins ||| ||| +0 Battle of Tarawa ||| Battle of Gettysburg ||| The heavy casualties suffered at Tarawa The public reaction was aggravated by the unguardedly frank comments of some of the Marine Corps command. General [[Holland M. Smith]], commander of the [[V Amphibious Corps]] who had toured the beaches after the battle, likened the losses to [[Pickett's Charge]] at [[Battle of Gettysburg|Gettysburg]]. ||| Aftermath ||| ||| +0 Battle of Tarawa ||| Battle of Saipan ||| Following the battle, the 2nd Marine Division was shipped to Hawaii, leaving the 2nd Battalion, 6th Marine Regiment behind to clear the battlefield of ordnance, provide security for the Seabees rebuilding the airstrip and aid in the burial detail. The 2nd Marine Division remained in Hawaii for six months, refitting and training, until called upon for its next major amphibious landing, the [[Battle of Saipan]] in the Marianas in June 1944. The lessons learned at Tarawa would be applied to all subsequent amphibious assaults as the United States worked its way across the Central Pacific. Said War Correspondent [[Robert Sherrod]]: ||| Aftermath ||| ||| +0 Battle of Tarawa ||| Battles of Lexington and Concord ||| | text = Last week some 2,000 or 3,000 United States Marines, most of them now dead or wounded, gave the nation a name to stand beside those of [[Battles of Lexington and Concord|Concord Bridge]], the {{USS|Bonhomme Richard|1765|2}}, the [[Battle of the Alamo|Alamo]], [[Battle of the Little Bighorn|Little Bighorn]], and [[Battle of Belleau Wood|Belleau Wood]]. The name was Tarawa. ||| Aftermath ||| ||| +0 Battle of Tarawa ||| Guadalcanal Campaign ||| The Battle of Tarawa was the first American offensive in the critical central Pacific region. It was also the first time in the war that the United States faced serious Japanese opposition to an [[Amphibious warfare|amphibious landing]].{{sfn|Wheeler|1983|p=170}} Previous landings met little or no initial resistance, {{refn|Note: At 09:10 on 7 August, Vandegrift and 11,000 U.S. Marines came ashore on Guadalcanal between [[Koli Point]] and Lunga Point. Advancing towards Lunga Point, they encountered no resistance except for 'tangled' rain forest, and they halted for the night about 1,000 yards (910 m) from the Lunga Point airfield.|group=N}} but this time the 4,500 Japanese defenders were well-supplied and well-prepared, and they fought almost to the last man, exacting a heavy toll on the [[United States Marine Corps]]. The U.S. had suffered similar casualties in other campaigns, for example over the six months of the [[Guadalcanal Campaign]], but in this case the losses were incurred within the space of 76 hours. ||| ||| ||| +0 Battle of Tarawa ||| Makin Island raid ||| Following [[Evans Carlson|General Evans Carlson's]] diversionary [[Makin Island raid]] of August 1942, the Japanese command was made aware of the vulnerability and strategic significance of the Gilbert Islands. The [[Japanese Special Naval Landing Forces|6th Yokosuka Special Naval Landing Force]] arrived to reinforce the island in February 1943. In command was Rear Admiral Tomanari Saichiro, an experienced engineer who directed the construction of the sophisticated defensive structures on Betio. Upon their arrival the 6th Yokosuka became a garrison force, and the unit's identification was changed to the 3rd Special Base Defense Force. Saichiro's primary goal in the Japanese defensive scheme was to stop the attackers in the water or pin them on the beaches. A tremendous number of pill boxes and firing pits were constructed with excellent fields of fire over the water and sandy shore. In the interior of the island was the command post and a number of large shelters designed to protect defenders from air attack and bombardment. The island's defenses were not set up for a battle in depth across the island's interior. The interior structures were large and vented, but did not have firing ports. Defenders in them were limited to firing from the doorways. ||| Background ||| ||| +0 Battle of Tarawa ||| Russo-Japanese War ||| A series of fourteen coastal defense guns, including four large Vickers 8-inch guns purchased during the [[Russo-Japanese War]] from the [[United Kingdom|British]], were secured in concrete bunkers and located around the island to guard the open water and the approaches into the lagoon. It was thought these big guns would make it very difficult for a landing force to enter the lagoon and attack the island from the north side. The island had a total of 500 [[Pillbox (military)|pillbox]]es or 'stockades' built from logs and sand, many of which were reinforced with cement. Forty artillery pieces were scattered around the island in various reinforced firing pits. An airfield was cut into the bush straight down the center of the island. Trenches connected all points of the island, allowing troops to move where needed under cover. As the command believed their coastal guns would protect the approaches into the lagoon, an attack on the island was anticipated to come from the open waters of the western or southern beaches. Rear Admiral [[Keiji Shibazaki]], an experienced combat officer from the campaigns in China, relieved Saichiro on July 20, 1943 in anticipation of the coming combat. Shibazaki continued the defensive preparations right up to the day of the invasion. He encouraged his troops, saying 'it would take one million men one hundred years' to conquer Tarawa. ||| Background ||| ||| +0 Battle of Tarvis (1797) ||| Battle of Valvasone (1797) ||| On 16 February 1797, the divisions of Guieu and Bernadotte attacked across the [[Tagliamento River]] under cover of artillery fire. In the [[Battle of Valvasone (1797)|Battle of Valvasone]], the French inflicted 700 casualties on their foes and captured six guns. The next day, Bernadotte scored a coup at [[Gradisca d'Isonzo]] when he cut off and forced a 2,500-man enemy column to surrender. Three battalions of the ''Hoch und Deutschmeister'' Infantry Regiment Nr. 4, one battalion of the ''Splényi'' Infantry Regiment Nr. 51, 10 guns, and 8 colors fell into French hands. ||| Background ||| French offensive ||| +0 Battle of Tashihchiao ||| Battle of Hsimucheng ||| Predictably, [[Viceroy]] [[Yevgeni Ivanovich Alekseyev|Yevgeni Alekseyev]] was infuriated by Stakelberg's withdrawal, but Kuropatkin supported his subordinate. General Oku remained at Tashihchaio until 1 August 1904, when he again marched northward with three divisions, while the 5th Division was transferred to the new [[Fourth Army (Japan)|Japanese 4th Army]] under General [[Nozu Michitsura]] in time to be at the [[Battle of Hsimucheng]]. ||| Aftermath ||| ||| +0 Battle of Te-li-Ssu ||| Siege of Port Arthur ||| On the same day as the Battle of Telissu, Russian cruisers based at [[Vladivostok]] sank two Japanese [[troop transport]]s off the coast of Japan, killing over 2,000 men and costing the Japanese several batteries of siege guns that were badly needed for the stalled [[Siege of Port Arthur]]. ||| Result ||| ||| +0 Battle of Tearcoat Swamp ||| Battle of Camden ||| After the [[Battle of Camden]] and the subsequent defeat, and departure of the [[Continental Army]] from South Carolina, [[Francis Marion]] already a lieutenant colonial commanding the Williamsburg [[Militia]] in the [[Pee Dee]] area used his [[militia]] force of 20 to 70 men to harass enemy forces and disrupt supply lines. Marion and his militia operated primarily in [[South Carolina]], between the [[Pee Dee River|Pee Dee]] and [[Santee River]]s throughout 1780. Unlike the [[regular army]] Marion's Militia used [[guerrilla warfare]] to engage and harass both the British Army and the [[Loyalist]] Militia's in the area. Marion's Militia was made of citizen's farmers and slaves from the surrounding countryside, due to the lack of war materials available these men provided their own armaments, mounts and food. In return they were allowed to join the [[militia]] and leave freely at any time at their own discretion. In early fall Marion received correspondence from General [[Horatio Gates]] who encouraged him to continue his offensive. His confidence bolstered Marion moved into the area of [[Brittons Neck, South Carolina]]. At first the citizens of the surrounding area did not respond to Marion's call to arms, however after threatening departure to [[North Carolina]] Marion was able to gather 152 men. ||| Background ||| ||| +0 Battle of Tewkesbury ||| Battle of Barnet ||| Edward however, knew that Clarence was ready to turn his coat once again and betray Warwick, his father-in-law. He marched rapidly west and joined with Clarence's men who were approaching from [[Gloucestershire]]. Clarence appealed to Warwick to surrender, but Warwick refused to even speak to him. Edward's army made rapidly for London, pursued by Warwick and Montagu. London was supposedly defended by the [[Edmund Beaufort, 4th Duke of Somerset|4th Duke of Somerset]], but he was absent and the city readily admitted Edward. The unfortunate and by now feeble Henry VI was sent back to the Tower of London. Edward then turned about to face Warwick's approaching army. On 14 April, they met at the [[Battle of Barnet]]. In a confused fight in thick fog, some of Warwick's army attacked each other by mistake and at the cries of 'Treachery!' his army disintegrated and was routed. Montagu died in the battle, and Warwick was cut down trying to reach his horse to escape. ||| Edward's landing and the death of Warwick ||| ||| +0 Battle of Tewkesbury ||| Battle of Towton ||| The term, the ''Wars of the Roses'', refers to the informal heraldic badges of the two rival houses of Lancaster and York which had been contending for power, and ultimately for the throne, since the late 1450s. In 1461 the Yorkist claimant, [[Edward IV of England|Edward, Earl of March]], was proclaimed King Edward IV and defeated the supporters of the weak, intermittently insane Lancastrian king Henry VI at the [[Battle of Towton]]. Lancastrian revolts in the far north of England were defeated in 1464, and the fugitive King Henry was captured and imprisoned the next year. His Queen, [[Margaret of Anjou]], and their thirteen-year-old son [[Edward of Westminster]], were exiled and impoverished in France. Edward IV's hold on the throne appeared temporarily to be secure. ||| Background ||| ||| +0 Battle of Texel ||| Glorious Revolution ||| The Spice Fleet arrived safely, bringing the much needed financial reprieve. In the months following, the Netherlands formed a formal alliance with Spain and the Holy Roman Empire. The threat posed by German and Spanish invasions from the south and east forced the French to withdraw from the territory of the Republic. The Third Anglo-Dutch War came to an end with the signing of the [[Treaty of Westminster (1674)|Treaty of Westminster]] between the English and the Dutch in 1674. Fourteen years later the [[Glorious Revolution]], which saw Stadtholder William III ascend the throne of England, put an end to the Anglo-Dutch conflicts of the 17th century. Only in 1781 would the Dutch and British fleets fight each other again. ||| ||| ||| +0 Battle of Texel ||| Third Anglo-Dutch War ||| The naval '''Battle of [[Texel]]''' or '''Battle of [[Kijkduin]]''' took place on 21 August 1673 (11 August [[Old Style|O.S.]]) between the [[Netherlands|Dutch]] and the combined [[England|English]] and [[France|French]] fleets and was the last major battle of the [[Third Anglo-Dutch War]], which was itself part of the [[Franco-Dutch War]] (1672-1678), during which [[Louis XIV of France]] invaded the Republic and sought to establish control over the [[Spanish Netherlands]]. English involvement came about because of the [[Treaty of Dover]], secretly concluded by [[Charles II of England]], and which was highly unpopular with the English Parliament. ||| ||| ||| +0 Battle of Thermopylae (191 BC) ||| Battle of Cynoscephalae ||| :[[Antiochus III the Great|Antiochus]] marched against the Thessalians and came to Cynoscephalae, where the Macedonians [[Battle of Cynoscephalae|had been defeated]] by the Romans, and finding the remains of the dead still unburied, gave them a magnificent funeral. Thus he curried favor with the Macedonians and accused [[Philip V of Macedon|Philip]] before them of leaving unburied those who had fallen in his service. ||| ||| ||| +0 Battle of Thermopylae (191 BC) ||| Battle of Thermopylae ||| :[§18] There Antiochus built a double wall on which he placed engines. He sent Aetolian troops to occupy the summits of the mountains to prevent anybody from coming around secretly by way of the hill called Atropos, as [[Battle of Thermopylae|Xerxes had come upon the Spartans under Leonidas]], the mountain paths at that time being unguarded. One thousand Aetolians occupied each mountain. The remainder encamped by themselves near the city of [[Trachis|Heraclea]]. ||| ||| ||| +0 Battle of Thermopylae (1941) ||| Battle of Thermopylae ||| The '''Battle of Thermopylae''' as part of the [[Battle of Greece|German invasion of Greece]] during [[World War II]] occurred in 1941 following the retreat from the Olympus and Servia passes. [[Commonwealth of Nations|British Commonwealth]] forces began to set up defensive position at the pass at [[Thermopylae]], famous for the [[Battle of Thermopylae]] in 480BC. [[Bernard Freyberg, 1st Baron Freyberg|General Bernard Freyberg]] was given the task of defending the coastal pass with [[Iven Giffard Mackay|Mackay]] defending the village of [[Brallos]]. In the New Zealand sector, the 5th Brigade was deployed along the coastal road, the foothills south of [[Lamia (city)|Lamia]], and the [[Spercheios River]]. The 4th Brigade was on the right where it had established coast-watching patrols, and the 6th was in reserve. In the Australian sector, the 19th Brigade, comprising the [[2/4th Australian Infantry Battalion|2/4th]] and [[2/8th Australian Infantry Battalion|2/8th Battalions]], defended Brallos. On 19 April, the [[2/1st Australian Infantry Battalion|2/1st]] and [[2/5th Australian Infantry Battalion|2/5th]] Battalions were placed under the command of Maj Gen [[George Alan Vasey|George Vasey]], and that day and during the early hours of the next, [[2/11th Australian Infantry Battalion|2/11th Battalion]] rejoined the brigade. Generals Freyberg and Mackay had been informing their subordinates that there would be no more withdrawals, both unaware of the higher level discussions on the evacuation. After the battle, Mackay was quoted as saying. ||| ||| ||| +0 Battle of Thoppigala ||| Battle of Sampur ||| With the start of [[Eelam War IV]], the Sri Lankan military started a campaign to capture the [[Eastern Province, Sri Lanka|Eastern Province]] from the LTTE. The Sri Lanka Army [[Battle of Sampur|captured]] the town of [[Sampur, Trincomalee|Sampur]] and surrounding areas on 3 September 2006, ||| Background ||| ||| +0 Battle of Three Rocks ||| Battle of Bunclody ||| The United Irishmen now had control of almost all [[County Wexford]], and were in a powerful position to launch offensives against the few remaining foreign garrisons in the county at [[Battle of Bunclody|Bunclody]], [[Gorey]], and [[Battle of New Ross 1798|New Ross]]. ||| Fall of Wexford ||| ||| +0 Battle of Three Rocks ||| Battle of Oulart Hill ||| By 29 May, patriot victories at [[Battle of Oulart Hill|Oulart Hill]] and Enniscorthy had spread the rising throughout county Wexford, with patriot camps amassing at several locations and confining British troops to a few towns now vulnerable to attack, such as [[Wexford]], [[Gorey]], and [[Bunclody|Bunclody/Newtownbarry]]. ||| Background ||| ||| +0 Battle of Tippermuir ||| Scotland in the Wars of the Three Kingdoms ||| The '''Battle of Tippermuir''' (1 September 1644) was the first battle [[James Graham, 1st Marquis of Montrose]] fought for [[Charles I of England|the king]] during the [[Scotland in the Wars of the Three Kingdoms|Wars of the Three Kingdoms]]. The battlefield is currently under research to be inventoried and protected by [[Historic Scotland]] under the [[Scottish Historical Environment Policy]] of 2009. ||| ||| ||| +0 Battle of Tolentino ||| Battle of Waterloo ||| The '''Battle of Tolentino''' was fought on 2 – 3 May 1815 near [[Tolentino]], Kingdom of Naples in what is now [[Marche]], [[Italy]]: it was the decisive battle in the [[Neapolitan War]], fought by the Napoleonic [[Kingdom of Naples|King of Naples]] [[Joachim Murat]] to keep the throne after the [[Congress of Vienna]]. The battle itself shares many parallels with the [[Battle of Waterloo]]. Both occurred during the [[Hundred Days]] following Napoleon's return from exile and resulted in a decisive victory for the Seventh Coalition leading to the restoration of a [[House of Bourbon|Bourbon]] king. ||| ||| ||| +0 Battle of Tolosa (1813) ||| Battle of Vitoria ||| In the late spring of 1813, the Allied army of [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]] launched a powerful offensive designed to drive King [[Joseph Bonaparte]]'s [[First French Empire|Imperial French]] army from Spain. On 21 June, Wellington's army inflicted a decisive defeat on Joseph's troops at the [[Battle of Vitoria]]. As the defeated French armies withdrew toward the [[Pyrenees]], Wellington tried to intercept Foy's column in the north and [[Bertrand Clausel]]'s forces in the south. Neither Foy nor Clausel had fought at Vitoria. Graham caught up with Foy's column, but after some fighting, the French got away. Clausel also managed to avoid being cut off, but except for the [[Siege of San Sebastian|Sieges of San Sebastian]] and [[Siege of Pamplona (1813)|Pamplona]], northern Spain was soon free of French occupation. The next pitched battle was the [[Battle of the Pyrenees]] which began on 25 July. ||| ||| ||| +0 Battle of Tory Island ||| Battle of Ballinamuck ||| Hoping to capitalise on the spontaneous uprising that spread across Ireland in May 1798, [[Commodore (rank)|Commodore]] [[Daniel Savary]] led a third, and more successful, effort. He took a small frigate squadron flying false British colours to [[Killala]], and in August landed 1,150 French troops under [[Jean Joseph Amable Humbert|General Humbert]]. Although the uprising achieved some early successes, by the time Humbert arrived its outcome had already been decided with the defeat of successive rebel armies by British troops. Humbert's force was joined by many United Irishmen and had some initial success, but was unable to face superior British numbers at the [[Battle of Ballinamuck]], and surrendered on 8 September. ||| Background ||| Rebellion of 1798 ||| +0 Battle of Toungoo ||| Battle of Yenangyaung ||| *[[Battle of Yenangyaung]] ||| See also ||| ||| +0 Battle of Toungoo ||| Battle of Yunnan-Burma Road ||| '''Battle of Toungoo''', was one of the key battles in the [[Battle of Yunnan-Burma Road]] in the [[Burma Campaign]] of [[World War II]] and [[Second Sino-Japanese War]]. The failure to hold the city of Toungoo opened up the route for the Japanese to make their lunge to Lashio around the allied flank and into the Chinese rear. ||| ||| ||| +0 Battle of Tourcoing ||| Battle of Fleurus (1794) ||| Souham devised a strategic pincer movement consisting of his division attacking southwards from [[Kortrijk|Kortrijk (Courtrai)]] and Maj-Gen Bonnaud's division northeastwards from Lille, thus catching the separated allied columns of [[Georg Wilhelm von dem Bussche]], [[Rudolf Ritter von Otto]] and the Duke of York between them. Meanwhile, part of Moreau's command held off the assault of the [[Francois Sebastien Charles Joseph de Croix, Count of Clerfayt|Count of Clerfayt]] from the north. It was a sprawling engagement fought out over many square miles of countryside just west of the [[Scheldt River]] in Flanders. Together with Maj-Gen [[Jean-Baptiste Jourdan]]'s victory at the [[Battle of Fleurus (1794)|Battle of Fleurus]] on 16 June, Tourcoing marked the start of the evacuation of the allied forces from Flanders and French supremacy in Western Europe. ||| Battle in a nutshell ||| ||| +0 Battle of Tournay ||| Flanders Campaign ||| The '''Battle of Tournay''' or Tournai was fought on 22 May 1794 as part of the [[Flanders Campaign]] in the [[Belgian]] province of [[Hainaut (province)|Hainaut]] on the [[Schelde River]] (about 80 km southwest of [[Brussels]]) between French forces under [[Charles Pichegru|General Pichegru]] and Coalition forces (Austrian, British, and Hanoverian troops) under [[Prince Josias of Coburg]], in which the Coalition forces were victorious. ||| ||| ||| +0 Battle of Towton ||| Battle of Watling Street ||| It is described as 'probably the largest and bloodiest battle ever fought on English soil', {{Sfn|Gravett|2003|p=7}} though [[Boudicca]]'s defeat at the [[Battle of Watling Street]] is also a contender. According to [[chronicle]]rs, more than 50,000 soldiers from the [[House of York|Houses of York]] and [[House of Lancaster|Lancaster]] fought for hours amidst a snowstorm on that day, which was [[Palm Sunday]]. A newsletter circulated a week after the battle reported that 28,000 died on the battlefield. ||| ||| ||| +0 Battle of Trafalgar ||| Battle of Cape Finisterre (1805) ||| Villeneuve returned from the Caribbean to [[Europe]], intending to break the blockade at Brest, but after two of his Spanish ships were captured during the [[Battle of Cape Finisterre (1805)|Battle of Cape Finisterre]] by a squadron under Vice-Admiral Sir [[Robert Calder]], Villeneuve abandoned this plan and sailed back to [[Ferrol, Galicia|Ferrol]] in northern Spain. There he received orders from Napoleon to return to Brest according to the main plan. ||| Origins ||| Cádiz ||| +0 Battle of Trafalgar ||| Battle of Cape St Vincent (1797) ||| His solution to the problem was to cut the opposing line in three. Approaching in two columns, sailing perpendicular to the enemy's line, one towards the centre of the opposing line and one towards the trailing end, his ships would break the enemy formation into three, surround one third, and force them to fight to the end. Nelson hoped specifically to cut the line just in front of the flagship; the isolated ships in front of the break would not be able to see the flagship's signals, hopefully taking them out of combat while they reformed. The intention of going straight at the enemy echoed the [[Naval tactics in the Age of Sail|tactics]] used by [[Adam Duncan, 1st Viscount Duncan|Admiral Duncan]] at the [[Battle of Camperdown]] and [[John Jervis, 1st Earl of St Vincent|Admiral Jervis]] at the [[Battle of Cape St Vincent (1797)|Battle of Cape St Vincent]], both in 1797. ||| The battle ||| Nelson's plan ||| +0 Battle of Trafalgar ||| Battle of Copenhagen (1807) ||| Following the battle, the Royal Navy was never again seriously challenged by the French fleet in a large-scale engagement. Napoleon had already abandoned his plans of invasion before the battle and they were never revived. The battle did not mean, however, that the French naval challenge to Britain was over. First, as the French control over the continent expanded, Britain had to take active steps with the [[Battle of Copenhagen (1807)|Battle of Copenhagen]] in 1807 and elsewhere in 1808 to prevent the ships of smaller European navies from falling into French hands. This effort was largely successful, but did not end the French threat as Napoleon instituted a large-scale shipbuilding programme that produced a fleet of 80 ships of the line at the time of his fall from power in 1814, with more under construction. In comparison, Britain had 99 ships of the line in active commission in 1814, and this was close to the maximum that could be supported. Given a few more years, the French could have realised their plans to commission 150 ships of the line and again challenge the Royal Navy, compensating for the inferiority of their crews with sheer numbers. For almost 10 years after Trafalgar, the Royal Navy maintained a close blockade of French bases and anxiously observed the growth of the French fleet. In the end, Napoleon's Empire was destroyed before the ambitious buildup could be completed. ||| Consequences ||| ||| +0 Battle of Trafalgar ||| Battle of the Nile ||| The British possessed an experienced and well-trained corps of naval officers. By contrast, most of the best officers in the French navy had either been executed or dismissed from the service during the early part of the [[French Revolution]]. As a result, Vice-Admiral [[Pierre-Charles Villeneuve]] was the most competent senior officer available to command Napoleon's Mediterranean fleet. However, Villeneuve had shown a distinct lack of enthusiasm for facing Nelson and the Royal Navy after the French defeat at the [[Battle of the Nile]] in 1798. ||| Origins ||| ||| +0 Battle of Trafalgar ||| French Revolution ||| The British possessed an experienced and well-trained corps of naval officers. By contrast, most of the best officers in the French navy had either been executed or dismissed from the service during the early part of the [[French Revolution]]. As a result, Vice-Admiral [[Pierre-Charles Villeneuve]] was the most competent senior officer available to command Napoleon's Mediterranean fleet. However, Villeneuve had shown a distinct lack of enthusiasm for facing Nelson and the Royal Navy after the French defeat at the [[Battle of the Nile]] in 1798. ||| Origins ||| ||| +0 Battle of Trafalgar ||| War of the Third Coalition ||| The '''Battle of Trafalgar''' (21 October 1805) was a [[naval battle|naval engagement]] fought by the [[Royal Navy]] against the combined fleets of the [[French Navy|French]] and [[Spanish Navy|Spanish Navies]], during the [[War of the Third Coalition]] (August–December 1805) of the [[Napoleonic Wars]] (1803–1815). ||| ||| ||| +0 Battle of Trenton ||| Battle of the Plains of Abraham ||| Washington had stationed a spy named [[John Honeyman]], posing as a Tory, in Trenton. Honeyman had served with [[Major General]] [[James Wolfe]] in Quebec at the [[Battle of the Plains of Abraham]] on September 13, 1759, and had no trouble establishing his credentials as a Tory. Honeyman was a butcher and weaver, who traded with the British and Hessians. This enabled him to gather intelligence, and also to convince the Hessians that the Continental Army was in such a low state of morale that they would not attack Trenton. Shortly before Christmas, he arranged to be captured by the Continental Army, who had orders to bring him to Washington unharmed. After being questioned by Washington, he was imprisoned in a small hut, to be tried as a Tory in the morning, but a small fire broke out nearby, enabling him to 'escape.' ||| Prelude ||| Intelligence ||| +0 Battle of Troina ||| Allied invasion of Sicily ||| The '''Battle of Troina''' took place between 31 July and 6 August 1943, a part of the [[Allied invasion of Sicily]] during World War II. Forces of the [[US II Corps]], part of the [[US Seventh Army]], engaged in fierce fighting around the town of [[Troina]] in the central portion of [[Sicily]] along the [[Caronie Mountains]]. The battle focused around the numerous hills and mountains surrounding Troina which the [[Wehrmacht|Germans]] had heavily fortified and used as bases for direct and indirect fire. ||| ||| ||| +0 Battle of Trois-Rivières ||| Battle of Quebec (1775) ||| The [[Continental Army]], which had [[Invasion of Canada (1775)|invaded Quebec]] in September 1775, suffered a severe blow in the disastrous [[Battle of Quebec (1775)|attack on Quebec City]] on New Year's Eve in 1775. Following that loss, [[Benedict Arnold]] and the remnants of the army besieged Quebec until May 1776. ||| Background ||| ||| +0 Battle of Trois-Rivières ||| Invasion of Canada (1775) ||| The '''Battle of Trois-Rivières''' ('''Three Rivers''' in English) was fought on June 8, 1776, during the [[American Revolutionary War]]. A [[British Army during the American War of Independence|British army]] under [[Province of Quebec (1763-1791)|Quebec]] Governor [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]] defeated an attempt by units from the [[Continental Army]] under the command of Brigadier General [[William Thompson (general)|William Thompson]] to stop a British advance up the [[Saint Lawrence River]] valley. The battle occurred as a part of the American colonists' [[Invasion of Canada (1775)|invasion of Quebec]], which had begun in September 1775 with the goal of removing the province from British rule. ||| ||| ||| +0 Battle of Tskhinvali ||| Second Chechen War ||| The main Russian ground forces belonged to the [[58th Army (Russia)|58th Army]] and were veterans of the [[Second Chechen War]]. ||| Battle ||| Russian intervention ||| Arrival of Russian reinforcements +0 Battle of Tsushima ||| Battle of Jutland ||| The British and Germans were both aware of the potentially devastating consequences of a naval defeat on the scale of Tsushima. Britain needed its battle fleet to protect its empire, and the trade routes vital to its war effort. Winston Churchill, then First Lord of the Admiralty, described British Admiral [[John Jellicoe]] as 'the only man who could lose the war in an afternoon.' German naval commanders, for their part, understood the importance Kaiser [[Wilhelm II]] attached to his navy and the diplomatic prestige it carried. As a result of this mutual caution, the British and German fleets met in only one major action in [[World War I]], the indecisive [[Battle of Jutland]]. ||| Aftermath ||| Dreadnought arms race ||| +0 Battle of Tsushima ||| Battle of Port Arthur ||| Tōgō was able to use the superior maneuverability of his fleet to his advantage, '[[crossing the T]]' twice. Additionally, there were significant deficiencies in the Russian naval fleet's equipment and training. Russian naval tests with their torpedoes exposed major technological failings. (The others were Russian Admirals [[Oskar Victorovich Stark]], who had been relieved of his command following his humiliating loss in the [[Battle of Port Arthur]], Admiral [[Stepan Makarov]], killed by a mine off Port Arthur and [[Wilgelm Vitgeft]], who had been killed in the [[Battle of the Yellow Sea]].) ||| Prelude ||| ||| +0 Battle of Tsushima ||| Battle of Trafalgar ||| It was fought on May 27–28, 1905 (May 14–15 in the [[Julian calendar]] then in use in Russia) in the [[Tsushima Strait]] between [[Korea]] and southern [[Japan]]. In this battle the [[Japan]]ese fleet under Admiral [[Tōgō Heihachirō]] destroyed two-thirds of the [[Russia]]n fleet, under Admiral [[Zinovy Rozhestvensky]], which had traveled over {{convert|18000|nmi|km|lk=in}} to reach the Far East. In London in 1906, [[Sir George Sydenham Clarke]] wrote, 'The battle of Tsu-shima is by far the greatest and the most important naval event since [[Battle of Trafalgar|Trafalgar]]'; The destruction of the Russian navy caused a bitter reaction from the Russian public, which induced [[Treaty of Portsmouth|a peace treaty]] in September 1905 without any further battles. ||| ||| ||| +0 Battle of Tudela ||| Battle of Pancorbo (1808) ||| These Spanish forces consisted of the army of General [[Joaquín Blake]] on the North coast, the army of General [[Francisco Javier Castaños, 1st Duke of Bailén|Francisco Javier Castaños]] around [[Tudela, Navarre|Tudela]] and the army of General [[José Rebolledo de Palafox, 1st Duke of Saragossa|José Rebolledo de Palafox]] around [[Zaragoza]]. Blake was active in attacking the French but his offensive near [[Bilbao]] was defeated at [[Battle of Pancorbo (1808)|Pancorbo]] on 31 October 1808. ||| Historical Context ||| ||| +0 Battle of Tudela ||| Battle of Somosierra ||| Napoleon however moved more quickly, and after defeating a small Spanish army at the [[Battle of Somosierra]] on 30 November 1808, arrived in Madrid on 1 December 1808. ||| Chronology of the battle ||| Aftermath ||| +0 Battle of Tudela ||| Dos de Mayo Uprising ||| The [[Dos de Mayo Uprising]] of 2 May 1808, followed by extensive uprisings throughout Spain, forced the French to pull back from their occupation of Spain to the [[Ebro]] River. There was an opportunity for the Spanish to finally expel the French altogether but this was missed due to their failure to appoint a Supreme Commander leaving the individual Spanish forces to operate independently. ||| Historical Context ||| ||| +0 Battle of Tudela ||| Second Siege of Zaragoza ||| The Spanish armies of the left and right escaped from Tudela in two directions. The Aragonese forces on the right made for Zaragoza where they would assist in the [[Second Siege of Zaragoza]] starting on 20 December 1808. The virtually intact Spanish left moved towards Madrid to defend that city. ||| Chronology of the battle ||| Aftermath ||| +0 Battle of Tulagi and Gavutu–Tanambogo ||| Attack on Pearl Harbor ||| On 7 December 1941, [[Attack on Pearl Harbor|the Japanese attacked]] the U.S. Pacific fleet at [[Pearl Harbor]], [[Hawaii]], initiating a state of war between the two nations. The attack crippled much of the U.S. battleship fleet. The initial goals of Japanese leaders in the war were to neutralize the U.S. fleet, seize possessions rich in natural resources, and establish strategic military bases to defend Japan's empire in Asia and the Pacific. In support of these goals, Japanese forces attacked and took control of the [[Philippines]], [[Thailand]], [[British Malaya|Malaya]], [[Singapore]], the [[Dutch East Indies]], [[Wake Island]], [[Gilbert Islands]], [[New Britain]], and [[Guam]]. ||| Background ||| ||| +0 Battle of Tulagi and Gavutu–Tanambogo ||| Battle of Midway ||| Two attempts by the Japanese to extend their defensive perimeter in the south and central Pacific were thwarted in the battles of [[Battle of the Coral Sea|Coral Sea]] (May 1942) and [[Battle of Midway|Midway]] (June 1942). These two strategic victories for the Allies provided them with an opportunity to take the initiative and launch an offensive against the Japanese somewhere in the Pacific. ||| Background ||| ||| +0 Battle of Tulagi and Gavutu–Tanambogo ||| Battle of the Coral Sea ||| Two attempts by the Japanese to extend their defensive perimeter in the south and central Pacific were thwarted in the battles of [[Battle of the Coral Sea|Coral Sea]] (May 1942) and [[Battle of Midway|Midway]] (June 1942). These two strategic victories for the Allies provided them with an opportunity to take the initiative and launch an offensive against the Japanese somewhere in the Pacific. ||| Background ||| ||| +0 Battle of Tulagi and Gavutu–Tanambogo ||| New Guinea campaign ||| The Allied plan to attack the southern Solomons was conceived by U.S. Admiral [[Ernest King]], Commander in Chief, [[United States Fleet]]. He proposed the offensive to deny the use of the southern Solomon Islands by the Japanese as [[Military base|bases]] to threaten the [[materiel|supply]] routes between the U.S. and [[Australia]], and to use them as starting points for a [[Military campaign|campaign]] with the objective of capturing or neutralizing the major Japanese base at [[Rabaul]] while also supporting the Allied [[New Guinea campaign]], with the eventual goal of opening the way for the U.S. to retake the Philippines. ||| Background ||| ||| +0 Battle of Turnham Green ||| Battle of Brentford (1642) ||| On 12 November, Rupert, with a large cavalry detachment, [[Battle of Brentford (1642)|stormed Brentford]] and then proceeded to sack the town. This action encouraged those Londoners who feared for their property to side with the Parliamentarians. ||| Prelude ||| ||| +0 Battle of Turnham Green ||| Battle of Edgehill ||| After the [[Battle of Edgehill]] (23 October) King Charles captured [[Banbury]] (27 October) and was greeted by cheering crowds as he arrived in [[Oxford]] on 29 October. ||| Prelude ||| ||| +0 Battle of Turnham Green ||| Battle of Worcester ||| The Parliamentarians secured the battlefield without fully engaging, which was probably fortunate for them, as many of their number had never seen a battle before and were not used to army discipline formations and deployments. [[John Hampden]] urged the Earl of Essex to turn both flanks of the Royal army via [[Acton, London|Acton]] and [[Kingston upon Thames|Kingston]]; experienced professional soldiers, however, urged Essex not to trust the London men to hold their ground, while his other troops manoeuvred. Hampden's advice was undoubtedly premature. A [[Battle of Worcester]] (1651) was not within the power of the Parliamentarians of 1642. In [[Napoleon Bonaparte|Napoleon]]'s words: 'one only manoeuvres around a fixed point', ||| Battle ||| ||| +0 Battle of Tykocin ||| Deluge (history) ||| The '''Battle of Tykocin''' took place on 13 July 1656 and was one of battle of the [[Deluge (history)|Swedish invasion of Poland]]. It resulted in a victory of Sweden and Brandenburg forces, commanded by Duke [[Boguslaw Radziwill]], and ended siege of Tykocin. ||| ||| ||| +0 Battle of Ulm ||| Capitulation of Dornbirn ||| On 14 October, Ney crushed Riesch's small corps at the [[Battle of Elchingen]] and chased its survivors back into Ulm. Murat detected Werneck's force and raced in pursuit with his cavalry. Over the next few days, Werneck's corps was overwhelmed in a series of actions at [[Langenau]], [[Herbrechtingen]], [[Nördlingen]], and [[Neresheim]]. On 18 October he surrendered the remainder of his troops. Only [[Archduke Ferdinand Karl Joseph of Austria-Este]] and a few other generals escaped to Bohemia with about 1,200 cavalry. Meanwhile, Soult secured the surrender of 4,600 Austrians at [[Memmingen]] and swung north to box in Mack from the south. Jellacic slipped past Soult and escaped to the south only to be hunted down and captured in the [[Capitulation of Dornbirn]] in mid-November by [[Pierre Augereau]]'s late-arriving [[VII Corps (Grande Armée)|VII Corps]]. By 16 October, Napoleon had surrounded Mack's entire army at Ulm, and three days later Mack surrendered with 25,000 men, 18 generals, 65 guns, and 40 standards. ||| Battle ||| ||| +0 Battle of Ulundi ||| Battle of Kambula ||| As a result of the decisive Zulu victory at the [[battle of Isandlwana]] in January over Chelmsford's main column and the consequent defeat of the first invasion of Zululand, the British found themselves forced to launch a new invasion of Zululand. In April 1879 despite recent battles at [[Battle of Kambula|Kambula]] and [[Battle of Gingindlovu|Gingindlovu]] which had resulted in serious losses for the Zulus, the British were back at their starting point. News of the defeat at Isandlwana had hit Britain hard. In response, a flood of reinforcements had arrived in [[KwaZulu-Natal Province|Natal]] with which Chelmsford prepared a second invasion of Zululand. [[Frederic Augustus Thesiger, 2nd Baron Chelmsford|Lord Chelmsford]] was aware by mid June that [[Garnet Joseph Wolseley, 1st Viscount Wolseley|Sir Garnet Wolseley]] had superseded his command of the British forces. Chelmsford was ordered by Her Majesty's Government to '...submit and subordinate your plans to his control.' ||| Prelude ||| ||| +0 Battle of Uman ||| Operation Barbarossa ||| The '''Battle of Uman''' (15 July – 8 August 1941) was the German and allied encirclement of the [[6th Army (Soviet Union)|6th]] and [[12th Army (Soviet Union)|12th Soviet Armies]]—under the command of Lieutenant General I. N. Muzyrchenko and Major General P. G. Ponedelin, respectively—south of the city of [[Uman]] during the initial offensive operations of [[Nazi Germany|German]] [[Army Group South]], commanded by [[Field Marshal (Germany)|''Generalfeldmarshall'']] [[Gerd von Rundstedt]], as part of [[Operation Barbarossa]] on the [[Eastern Front (WWII)|Eastern Front]] during [[World War II]]. ||| ||| ||| +0 Battle of Valvasone (1797) ||| Battle of Tarvis (1797) ||| The following day, [[Jean-Baptiste Bernadotte]]'s French division isolated an enemy column and forced its surrender at [[Gradisca d'Isonzo]]. A total of 2,500 Austrian soldiers, 10 artillery pieces, and eight colors were captured. When several retreating Austrian columns made for the [[Tarvisio|Tarvis Pass]] to the northeast, the French raced to cut them off. The [[Battle of Tarvis (1797)|Battle of Tarvis]] occurred over three days beginning on 21 March as the Austrians struggled to escape. Bonaparte's forward thrust carried his army within {{convert|75|mi|km|0}} of [[Vienna]], where the [[Preliminaries of Leoben]] were concluded in mid-April 1797. ||| ||| ||| +0 Battle of Van Buren ||| Battle of Prairie Grove ||| Following the [[Battle of Prairie Grove]], on 7 December 1682, the victorious Union Generals [[James G. Blunt]] and [[Francis Herron]] pressed their prusuit of Major General [[Thomas C. Hindman]]'s 1st Corps, Army of the Trans-Mississippi across the Boston Mountains to the Arkansas River port city of Van Buren, in [[Crawford County, Arkansas]]. ||| Strategic situation ||| ||| +0 Battle of Vauchamps ||| Battle of Champaubert ||| On 13 February, having fought three successful actions in three days against the Prussian and Russian army at [[Battle of Champaubert|Champaubert]], [[Battle of Montmirail|Montmirail]] and [[Battle of Château-Thierry (1814)|Château-Thierry]], Napoleon was pursuing the defeated enemy. After his consecutive defeats, Field-marshal Blücher decided to disengage from Napoleon and move a significant force against the isolated French Army Corps of [[Marshal of the Empire|Marshal]] [[Auguste de Marmont|Marmont]], at [[Étoges]]. ||| Context ||| ||| +0 Battle of Vella Gulf ||| Battle of Kula Gulf ||| The [[United States Navy|U.S. Navy]] Task Group 31.2 (TG 31.2) of six [[destroyer]]s—{{USS|Dunlap|DD-384|6}}, {{USS|Craven|DD-382|2}}, {{USS|Maury|DD-401|2}}, {{USS|Lang|DD-399|2}}, {{USS|Sterett|DD-407|2}}, and {{USS|Stack|DD-406|2}}—commanded by Captain [[Frederick Moosbrugger]] was lying in wait, and it made radar contact with the Japanese force at 23:33. Having learned the harsh lessons of naval combat at night after the [[Battle of Tassafaronga]], the [[Battle of Kula Gulf]], and a previous PT boat skirmish, the American destroyers did not give away their position with gunfire, but rather, they waited until they had all their torpedoes in the water. The U.S. Navy destroyers fired a total of 36 torpedoes in the space of 63 seconds. Four American ships—including ''Craven''—used the mountains of the main island to their east to help camouflage their position. The radar possessed by the Japanese was not as advanced as the American radar, and it could not differentiate between the surface ships and the island. All four Japanese destroyers were hit by American torpedoes. ''Hagikaze'', ''Arashi'', and ''Kawakaze'' burst into flames and were quickly sunk by naval gunfire. The torpedo that hit [[Japanese destroyer Shigure (1935)|Shigure]] was a dud that did not explode, damaging her rudder only, and she escaped into the darkness. ||| Battle ||| ||| +0 Battle of Verdun ||| Battle of the Somme ||| The German offensive was reduced to provide artillery and infantry reinforcements for the [[Battle of the Somme|Somme front]], where the Anglo-French relief offensive began on 1 July. During local operations, the village of Fleury changed hands sixteen times from 23 June to 17 August. A German attempt to capture Fort Souville in early July, was repulsed by artillery and small-arms fire. To supply reinforcements for the Somme front, the German offensive was reduced further, along with attempts to deceive the French into expecting more attacks, to keep French reinforcements away from the Somme front. In August and December, French counter-offensives recaptured much of the ground lost on the east bank and recovered Fort Douaumont and Fort Vaux. An estimate in 2000 found a total of {{nowrap|714,231 casualties,}} {{nowrap|377,231 French}} and {{nowrap|337,000 German,}} an average of {{nowrap|70,000 casualties}} for each month of the battle; other recent estimates increase the number of casualties to {{nowrap|976,000,}} with {{nowrap|1,250,000 suffered}} at Verdun from 1914–1918. The Battle of Verdun lasted for {{nowrap|303 days}} and became the longest and one of the most [[List of battles by casualties|costly battles]] in human history. ||| ||| ||| +0 Battle of Vienna ||| War of the Reunions ||| The behavior of [[Louis XIV]] of France furthered [[French–German enmity]] - in the following month, the [[War of the Reunions]] broke out in the western part of the weakened Holy Roman Empire. ||| Significance ||| ||| +0 Battle of Vimy Ridge ||| Battle of Verdun ||| In January 1917, three Canadian Corps officers accompanied other British and Dominion officers attending a series of lectures hosted by the French Army regarding their experiences during the [[Battle of Verdun]]. The French counter offensive devised by General [[Robert Nivelle]] had been one of a number of Allied successes of 1916. Following extensive rehearsal, eight French divisions had assaulted German positions in two waves along a {{convert|6|mi|km|adj=on|disp=flip}} front. Supported by exceedingly strong artillery, the French had recovered lost ground and inflicted heavy casualties on five German divisions. ||| Prelude ||| Tactical plan ||| +0 Battle of Vimy Ridge ||| Battle of the Somme ||| The experience of the [[Battle of the Somme]] led the German command to conclude that the policy of rigidly defending a statically fixed line was no longer effective and could not be relied upon as a defensive strategy. ||| Prelude ||| German defences ||| +0 Battle of Vimy Ridge ||| Nivelle Offensive ||| The '''Battle of Vimy Ridge''' was a military engagement fought primarily as part of the [[Battle of Arras (1917)|Battle of Arras]], in the [[Nord-Pas-de-Calais]] region of [[France]], during the [[World War I|First World War]]. The main combatants were the [[Canadian Corps]], of four divisions, against three divisions of the [[6th Army (German Empire)|German Sixth Army]]. The battle, which took place from 9 to 12 April 1917, was part of the opening phase of the British-led Battle of Arras, a diversionary attack for the French [[Nivelle Offensive]]. ||| ||| ||| +0 Battle of Vimy Ridge ||| Race to the Sea ||| The ridge fell under German control in October 1914 during the [[Race to the Sea]] as the Franco-British and German forces continually attempted to outflank each other through northeastern France. ||| Background ||| ||| +0 Battle of Vimy Ridge ||| Spring Offensive ||| The Germans did not see the Canadian Corps's capture of Vimy Ridge as a loss. Contemporary German sources viewed the action, at worst, as a draw, given that no full-scale breakthrough occurred following the attack. The Germans did not attempt to recapture the ridge, even during the [[Spring Offensive]], and it remained under British control until the end of the war. ||| Aftermath ||| ||| +0 Battle of Vitoria ||| Battle of Salamanca ||| In July 1812, after the [[Battle of Salamanca]], the French had evacuated [[Madrid]], which Wellington's army entered on 12 August 1812. Deploying three divisions to guard its southern approaches, Wellington marched north with the rest of his army to lay siege to the fortress of [[Burgos]], {{convert|140|mi|km}} away, but he had underestimated the enemy's strength and on 21 October he had to abandon the [[Siege of Burgos]] and retreat. By 31 October he had abandoned Madrid too, and retreated first to [[Salamanca]] then to [[Ciudad Rodrigo]], near the Portuguese frontier, to avoid encirclement by French armies from the north-east and south-east. ||| Background ||| ||| +0 Battle of Vitoria ||| Battle of Toulouse (1814) ||| Many British soldiers turned aside to plunder the abandoned French wagons, containing 'the loot of a kingdom'. It is estimated that more than £1 million of booty (perhaps £100 million in modern equivalent) was seized, but the gross abandonment of discipline caused an enraged Wellington to write in a dispatch to [[Henry Bathurst, 3rd Earl Bathurst|Earl Bathurst]], 'We have in the service the scum of the earth as common soldiers'. The British general also vented his fury on a new cavalry regiment, writing, 'The [[18th Royal Hussars|18th Hussars]] are a disgrace to the name of soldier, in action as well as elsewhere; and I propose to draft their horses from them and send the men to England if I cannot get the better of them in any other manner.'{{sfnp|Glover|2001|p=243}} (On 8{{nbsp}}April 1814, the 18th redeemed their reputation in a gallant charge led by [[Henry Murray (British Army officer)|Lieutenant-colonel Sir Henry Murray]] at Croix d'Orade, shortly before the [[Battle of Toulouse (1814)|Battle of Toulouse]].) ||| Aftermath ||| ||| +0 Battle of Vittorio Veneto ||| Battle of the Piave River ||| In June 1918, a large [[Battle of the Piave River|Austro-Hungarian offensive]], aimed at breaking the [[Piave River]] defensive line and delivering a decisive blow to the Italian army, was launched. The Austro-Hungarian army tried on one side to force the [[Tonale Pass]] and enter [[Lombardy]], and on the other side to make two converging thrusts into central [[Venetia (region)|Venetia]], the first one southeastward from the Trentino, the second one southwestward across the lower Piave. The whole offensive came to worse than nothing, the attackers losing 60,000 dead, 90,000 wounded and 25,000 captured. ||| Background ||| ||| +0 Battle of Voronezh (1943) ||| Eastern Front (World War II) ||| The '''1943 battle of Voronezh''' (often credited in [[Russian language|Russian]] as the '''liberation of Voronezh''' (освобождение Воронежа)) was a Soviet [[counter-offensive]] on recapturing the city of [[Voronezh]] during the [[Ostrogozhsk-Rossoshansk operation|Ostrogozhsk-Rossoshansk]] and [[Voronezh-Kastornensk operation|Voronezh-Kastornensk]] operations on the [[Eastern Front (World War II)|Eastern Front of World War II]]. The Nazis had captured the city in [[Battle of Voronezh (1942)|a 1942 battle]]. ||| ||| ||| +0 Battle of Vrbanja bridge ||| Korean War ||| The '''Battle of Vrbanja bridge''' was an armed confrontation which occurred on 27 May 1995 between [[United Nations]] (UN) [[peacekeeping|peacekeepers]] from the [[French Army]] and elements of the [[Army of Republika Srpska]] (VRS), after the VRS seized French-manned [[United Nations Protection Force]] (UNPROFOR) [[observation post]]s on both ends of the [[Vrbanja bridge]] crossing of the [[Miljacka]] river in [[Sarajevo]], [[Bosnia and Herzegovina]] during the [[Bosnian War]]. Upon seizing the bridge, the VRS took the French peacekeepers hostage. A platoon of 30 French peacekeepers subsequently re-captured the bridge with the support of 70 French infantrymen and direct fire from armoured vehicles, in an action which saw the first French Army [[bayonet]] charge since the [[Korean War]]. During the French assault, elements of the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH) opened fire on the VRS-held observation posts, accidentally wounding one French hostage. ||| ||| ||| +0 Battle of Vrbanja bridge ||| Siege of Sarajevo ||| During the [[Siege of Sarajevo]], [[Vrbanja bridge]] was located in [[no-man's-land]]; it was surrounded by tall buildings, which made it a target of [[sniper]]-fire from the beginning of the [[Bosnian War]]. On 5 April 1992, six protestors were shot on the bridge by Serb snipers; two, [[Suada Dilberović]] and [[Olga Sučić]], died as a result of the sniper-fire and are considered by [[Croats]] and Bosniaks to be the first victims of the siege. ||| Background ||| ||| +0 Battle of Vyazma ||| Battle of Maloyaroslavets ||| The French departed Moscow on October 18, and after having a southern route to Smolensk denied them as a result of the [[Battle of Maloyaroslavets]] (October 24), they were compelled to backtrack and retreat along the same road used in their earlier advance on Moscow. Because the territory alongside this road had been economically ravaged by earlier campaigning, the retreat imposed on the Grande Armée extreme conditions of privation and attrition. ||| Background ||| ||| +0 Battle of Wagram ||| Battle of Aspern-Essling ||| In 1809, the French military presence in [[Confederation of the Rhine|Germany]] was diminished as Napoleon transferred a number of soldiers to fight in the [[Peninsular War]]. As a result, the Austrian Empire saw its chance to recover some of its former sphere of influence and invaded the [[Kingdom of Bavaria]], a French ally. Recovering from his initial surprise, Napoleon beat the Austrian forces and occupied [[Vienna]] at the beginning of May 1809. Despite the string of sharp defeats and the loss of the empire's capital, Archduke Charles salvaged an army, with which he retreated north of the [[Danube]]. This allowed the Austrians to continue the war but, towards the end of May, Napoleon resumed the offensive, suffering a defeat at the [[Battle of Aspern-Essling]]. ||| ||| ||| +0 Battle of Wagram ||| Battle of Ulm ||| France's main adversary in central Europe was the Austrian Empire. Defeated at [[Battle of Ulm|Ulm]] and [[Battle of Austerlitz|Austerlitz]] in 1805 and forced to conclude the humiliating [[Peace of Pressburg (1805)|Peace of Pressburg]], Austria still possessed a formidable army which, in the years following Austerlitz, had undergone major reforms. By 1809, the state was almost bankrupt and acutely aware that it could not retain its status as a great power if it did not manage to regain some of its former influence in Germany and Italy. Encouraged by Napoleon's peninsular imbroglio, British subsidies and the promise of a military intervention in northern Europe, the Austrians decided that the European political context of 1808 and 1809 offered their best chance to retake lost provinces. In order to win the war against the French, Vienna was counting on massive nationalist, anti-French uprisings throughout Germany and hoping that an early success might convince Prussia to join the new coalition, while calculating that Russia would most likely not interfere in support of the French. Austrian military preparations were accelerated in 1808 and early 1809, with operations set to occur in several war theatres, including the main one in [[Kingdom of Bavaria|Bavaria]] and sideshows in Italy, [[Dalmatia]], [[Kingdom of Westphalia|Westphalia]], [[County of Tyrol|Tyrol]] and [[Duchy of Warsaw|Poland]]. ||| Prelude ||| Context ||| +0 Battle of Wagram ||| Peninsular War ||| In 1809, the French military presence in [[Confederation of the Rhine|Germany]] was diminished as Napoleon transferred a number of soldiers to fight in the [[Peninsular War]]. As a result, the Austrian Empire saw its chance to recover some of its former sphere of influence and invaded the [[Kingdom of Bavaria]], a French ally. Recovering from his initial surprise, Napoleon beat the Austrian forces and occupied [[Vienna]] at the beginning of May 1809. Despite the string of sharp defeats and the loss of the empire's capital, Archduke Charles salvaged an army, with which he retreated north of the [[Danube]]. This allowed the Austrians to continue the war but, towards the end of May, Napoleon resumed the offensive, suffering a defeat at the [[Battle of Aspern-Essling]]. ||| ||| ||| +0 Battle of Wagram ||| War of the Fourth Coalition ||| In 1809, the [[First French Empire]] held a dominant position on the European continent. Resounding victories during the 1805 to 1807 wars against the [[War of the Third Coalition|Third]] and [[War of the Fourth Coalition|Fourth Coalition]] had ensured almost undisputed continental hegemony, to such an extent that no other European power could challenge the might of Napoleon's empire. However, despite having defeated [[Austrian Empire|Austria]], forced [[Russian Empire|Russia]] into an uneasy alliance and reduced [[Prussia]] to the rank of a second-rate power, Napoleon did not manage to force the [[United Kingdom]] to make peace. With the British in complete control of the seas, Napoleon thus opted for an [[Economic warfare|economic war]], imposing the [[Continental System]] against the British isles, in a bid to dry up vital British commercial relations with the continent. To ensure the effectiveness of the Continental System, he sought to force [[Kingdom of Portugal|Portugal]], a traditional British trading partner, to observe it; when diplomatic means failed in 1808, Napoleon had the country occupied, forcing the ruling dynasty of [[House of Braganza|Braganza]] to flee the country and seek refuge in its main colony, [[Brazil]]. In a move that would prove to be both uninspired and ill-handled, Napoleon also opted to change the ruling dynasty of [[Kingdom of Spain|Spain]], replacing King [[Charles IV of Spain|Charles IV]] with his own brother, [[Joseph Bonaparte|Joseph]], who became King José I of Spain. The new king was, however, not well received by the population and much of the country's ruling elite, which triggered a bloody [[guerrilla warfare|guerrilla war]] throughout the country. ||| Prelude ||| Context ||| +0 Battle of Wagram ||| War of the Third Coalition ||| In 1809, the [[First French Empire]] held a dominant position on the European continent. Resounding victories during the 1805 to 1807 wars against the [[War of the Third Coalition|Third]] and [[War of the Fourth Coalition|Fourth Coalition]] had ensured almost undisputed continental hegemony, to such an extent that no other European power could challenge the might of Napoleon's empire. However, despite having defeated [[Austrian Empire|Austria]], forced [[Russian Empire|Russia]] into an uneasy alliance and reduced [[Prussia]] to the rank of a second-rate power, Napoleon did not manage to force the [[United Kingdom]] to make peace. With the British in complete control of the seas, Napoleon thus opted for an [[Economic warfare|economic war]], imposing the [[Continental System]] against the British isles, in a bid to dry up vital British commercial relations with the continent. To ensure the effectiveness of the Continental System, he sought to force [[Kingdom of Portugal|Portugal]], a traditional British trading partner, to observe it; when diplomatic means failed in 1808, Napoleon had the country occupied, forcing the ruling dynasty of [[House of Braganza|Braganza]] to flee the country and seek refuge in its main colony, [[Brazil]]. In a move that would prove to be both uninspired and ill-handled, Napoleon also opted to change the ruling dynasty of [[Kingdom of Spain|Spain]], replacing King [[Charles IV of Spain|Charles IV]] with his own brother, [[Joseph Bonaparte|Joseph]], who became King José I of Spain. The new king was, however, not well received by the population and much of the country's ruling elite, which triggered a bloody [[guerrilla warfare|guerrilla war]] throughout the country. ||| Prelude ||| Context ||| +0 Battle of Wakde ||| New Guinea campaign ||| The '''Battle of Wakde''' ''('''Operation Straight Line''')'' was part of the [[New Guinea campaign]] of [[World War II]]. It was fought between the [[United States]] and [[Japan]] from 15 May 1944 to 18 May 1944. ||| ||| ||| +0 Battle of Wakefield ||| Battle of Worksop ||| York had probably underestimated the numbers of the Lancastrian army in the north, which was still being reinforced. On 16 December, at the [[Battle of Worksop]] in [[Nottinghamshire]], York's vanguard clashed with a contingent from the West Country moving north to join the Lancastrian army, and was defeated. ||| Events of the year preceding Wakefield ||| York's response ||| +0 Battle of Wakefield ||| English Civil War ||| A monument erected on the spot where the Duke of York is supposed to have perished is positioned slightly south of the more likely spot where an older monument once stood, but which was destroyed during the [[English Civil War]]. ||| Aftermath ||| ||| +0 Battle of Wanjialing ||| Second Sino-Japanese War ||| '''Battle of Wanjialing''', well known in Chinese text as the '''Victory of Wanjialing''' ({{zh|t=萬家嶺大捷|s=万家岭大捷|p=Wànjiālǐng Dàjíe}}) refers to the Chinese Army's successful engagement during the [[Battle of Wuhan|Wuhan theatre]] of the [[Second Sino-Japanese War]] against the Japanese 101st and [[106th Division (Imperial Japanese Army)|106th Divisions]] around the [[Wanjialing]] region in 1938. ||| ||| ||| +0 Battle of Washington ||| Battle of Fort Anderson ||| Maj. Gen. [[John G. Foster]], commanding the [[Department of North Carolina]], was responsible for the overall defense of the Union garrisons along the North Carolina coast. After Hill's [[Battle of Fort Anderson|attack against New Berne]] failed, Foster arrived in Washington to take personal command of the garrison. ||| Background ||| ||| +0 Battle of Washington ||| Battle of Fredericksburg ||| Following the Confederate victory at [[Battle of Fredericksburg|Fredericksburg]], General [[Robert E. Lee]] felt confident enough to dispatch a large portion of his army to deal with Union occupation forces along the coast. The whole force was put under the command of Lt. Gen. [[James Longstreet]]. While Longstreet personally operated against [[Suffolk, Virginia|Suffolk]], [[Major General (CSA)|Maj. Gen.]] [[D. H. Hill]] led a column which moved against [[Union Army|Federal]] garrisons at [[New Bern, NC|New Berne]] and [[Washington, North Carolina]]. ||| Background ||| ||| +0 Battle of Washington ||| Battle of Plymouth (1864) ||| Apart from raids conducted by Foster and Potter, North Carolina remained relatively quiet until 1864 when [[Robert E. Lee]] was able to spare troops for another [[Battle of Plymouth (1864)|operation against Federal control posts]] on along the coast. ||| Aftermath ||| ||| +0 Battle of Waterloo ||| Waterloo Campaign: Ligny through Wavre to Waterloo ||| After the [[Battle of Quatre Bras]] Wellington withdrew from [[Waterloo Campaign: Quatre Bras to Waterloo|Quatre Bras to Waterloo]]. After the simultaneous [[Battle of Ligny]] the [[Waterloo Campaign: Ligny through Wavre to Waterloo|Prussians withdrew parallel to Wellington]], drawing a third part of Napoleon's forces away from Waterloo to the separate and simultaneous [[Battle of Wavre]]. Upon learning that the Prussian army was able to support him, Wellington decided to offer battle on the [[Mont-Saint-Jean, Belgium|Mont-Saint-Jean]] [[escarpment]], across the Brussels road. Here he withstood repeated attacks by the French throughout the afternoon, aided by the progressively arriving Prussians. In the evening Napoleon committed his last reserves to a desperate final attack, which was narrowly beaten back. With the Prussians breaking through on the French right flank Wellington's Anglo-allied army counter-attacked in the center, and the French army was routed. ||| ||| ||| +0 Battle of Wau ||| New Guinea campaign ||| The '''Battle of Wau''', 29–31 January 1943, was a battle in the [[New Guinea campaign]] of World War II. Forces of the [[Empire of Japan]] sailed from [[Rabaul]] and crossed the [[Solomon Sea]] and, despite Allied air attacks, successfully reached [[Lae]], where they disembarked. Japanese troops then advanced overland on [[Wau, Papua New Guinea|Wau]], an Australian base that potentially threatened the Japanese positions at [[Salamaua]] and Lae. A race developed between the Japanese moving overland, hampered by the terrain, and the Australians, moving by air, hampered by the weather. By the time the Japanese reached the Wau area after a trek over the mountains, the Australian defenders had been greatly reinforced by air. In the battle that followed, despite achieving tactical surprise by approaching from an unexpected direction, the Japanese attackers were unable to capture Wau. ||| ||| ||| +0 Battle of Wawon ||| Turkish War of Independence ||| The '''Battle of Wawon''' ({{lang-tr|Kunuri Muharebeleri}}), also known as the '''Battle of Wayuan''' ({{zh|s=瓦院战斗|p=Wǎ Yuàn Zhàn Dòu}}), was a series of delay actions of the [[Korean War]] that took place from November 27–29, 1950 near Wawon in present-day [[North Korea]]. After the collapse of the US [[Eighth United States Army|Eighth Army]]'s right flank during the [[Battle of the Ch'ongch'on River]], the Chinese [[38th Army (People's Republic of China)|38th Corps]] advanced rapidly towards the critical road junction at [[Kunu-ri]] in an effort to cut off United Nations forces' retreat route. In what was considered to be [[Turkey]]'s first real combat action since the [[Turkish War of Independence|aftermath of World War I]], {{Cite web ||| ||| ||| +0 Battle of Waynesboro, Virginia ||| Carolinas Campaign ||| On February 27, 1865, [[Major general (United States)|Maj. Gen.]] [[Philip Sheridan]] rode with two cavalry divisions from [[Winchester, Virginia|Winchester]] 'up' the [[Shenandoah Valley]] toward [[Staunton, Virginia|Staunton]]. He had orders to take his cavalry south to join Maj. Gen. [[William T. Sherman]]'s army in the [[Carolinas Campaign]]. After crossing the North Fork of the [[Shenandoah River]] on February 28, [[Brigadier general (United States)|Brig. Gen.]] [[George Armstrong Custer]]'s division encountered some 300 Confederate cavalrymen under Brig. Gen. [[Thomas Rosser]] guarding the Middle River near the village of Mount Crawford. Rosser set a long [[covered bridge]] on fire, hoping to delay the Federals. Custer ordered two of his regiments to swim across the river and strike Rosser's flank, while additional regiments stormed the bridge. Custer successfully drove off Rosser's meager force, extinguished the fire, and rode on to Staunton, where they were joined by the bulk of Sheridan's force the next day. Desiring to eliminate Early's small force as a threat to his rear, Sheridan turned east instead of proceeding to Sherman. ||| Background ||| ||| +0 Battle of Wetzell's Mill ||| Capture of Savannah ||| The British attempt to regain control of its rebellious colonies in the [[American Revolutionary War]] through the 'southern strategy' of gaining control over the southern colonies and moving north began in late 1779 with the [[Capture of Savannah|capture of Savannah, Georgia]]. By early 1781, [[Georgia (U.S. state)|Georgia]] and [[South Carolina]] were nominally under British control, two [[Continental Army|Continental Armies]] had been captured or routed, and General [[Charles Cornwallis|Lord Cornwallis]] was chasing a third, under the command of General [[Nathanael Greene]], out of [[North Carolina]]. Greene, with a smaller and more mobile army, had risked division of his forces at one point, and was rewarded with [[Daniel Morgan]]'s victory over Cornwallis' main cavalry force, led by Lieutenant Colonel [[Banastre Tarleton]], at the [[Battle of Cowpens]] in January 1781. ||| Background ||| ||| +0 Battle of White Marsh ||| Battles of Saratoga ||| After the surrender of British Lt. Gen. [[John Burgoyne]] after the [[Battles of Saratoga]], Washington began drawing troops from the north, including the 1,200 men of Varnum's Rhode Island brigade, and about 1,000 more men from various Pennsylvania, Maryland and Virginia units. Morale was so low and desertion so common that Washington offered a [[pardon]] on October 24 to all deserters who returned by January 1. ||| Background and movement to battle ||| ||| +0 Battle of White Oak Road ||| Siege of Petersburg ||| The '''Battle of White Oak Road''', also known as '''The Battle of Hatcher's Run, Gravelly Run, Boydton Plank Road, White Oak Ridge''' was fought on March 31, 1865, during the [[American Civil War]] at the end of the [[Siege of Petersburg|Richmond-Petersburg Campaign]] and in the beginning stage of the [[Appomattox Campaign]]. Along with the [[Battle of Dinwiddie Court House]] which was fought simultaneously on March 31, the battle involved the last offensive action by [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] to stop the progress of [[Lieutenant general|Lieutenant General]] [[Ulysses S. Grant|Ulysses S. Grant's]] [[Union Army]] ([[Army of the Potomac]], [[Union Army of the Shenandoah|Army of the Shenandoah]] and [[Army of the James]]). Grant's forces were moving to cut the remaining Confederate supply lines and to force the Confederates to extend their defensive lines at [[Siege of Petersburg|Petersburg, Virginia]] and [[Richmond in the Civil War|Richmond, Virginia]] to the breaking point, if not to force them into a decisive open field battle. ||| ||| ||| +0 Battle of Wijnendale ||| Siege of Lille (1708) ||| The '''Battle of Wijnendale''' was a battle in the [[War of the Spanish Succession]] fought on 28 September 1708 near [[Wijnendale]], [[Flanders]], between an allied force protecting a convoy for the [[Siege of Lille (1708)]] and forces of Bourbon France and Spain. It ended in a victory for the allies, leading to the taking of Lille. ||| ||| ||| +0 Battle of Wilno (1939) ||| Battle of Grodno (1939) ||| The defence of Wilno has been criticized by some Polish historians, who point out that if properly organized, the Polish forces would have been able to hold on to Wilno and delay the Soviets by several days, similar to the [[Battle of Grodno (1939)|defence of Grodno]] (in which some of the units which withdrew from Wilno took part). Nonetheless this could have only been a symbolic defence, as the Polish forces had no real way of stopping the overwhelming Soviet advance. ||| Aftermath ||| ||| +0 Battle of Wilno (1939) ||| Soviet invasion of Poland ||| The '''Battle of Wilno''' (Vilnius, Vilna) was fought during the [[Soviet invasion of Poland (1939)|Soviet invasion of Poland]] in 1939; it accompanied the larger [[Invasion of Poland (1939)|German invasion]]. {{rp|82}} During 18–19 September, Soviet forces approached and occupied the city of [[Wilno]]. Polish forces in the area were relatively weak and the Polish commanders, unsure whether to actively oppose the Soviets, did not utilise the full defensive capabilities of the town and nearby fortified area, although the outcome of the battle would not have been likely any different, given the overwhelming Soviet numerical superiority. ||| ||| ||| +0 Battle of Wilson's Creek ||| Battle of Pea Ridge ||| By early 1862, Federal forces had effectively pushed Price out of Missouri. An army under Union general [[Samuel Ryan Curtis]] pursued Price into Arkansas, where General [[Earl Van Dorn]] assumed command of combined forces led by Price and General [[Ben McCulloch]]. Outnumbered, Curtis nonetheless defeated Van Dorn's Confederate [[Army of the West (1862)|Army of the West]] at the [[Battle of Pea Ridge]], ending Confederate hopes of occupying Missouri. ||| Aftermath ||| ||| +0 Battle of Wilson's Creek ||| First Battle of Bull Run ||| The '''Battle of Wilson's Creek''', also known as the '''Battle of Oak Hills''', was the first major battle of the [[Trans-Mississippi Theater of the American Civil War|Trans-Mississippi Theater]] of the [[American Civil War]]. Fought on August 10, 1861, near [[Springfield, Missouri|Springfield]], [[Missouri]], between [[Union Army|Federal]] forces and the [[Missouri State Guard]], it is sometimes called the '[[First Battle of Bull Run|Bull Run]] of the West.' ||| ||| ||| +0 Battle of Windsor ||| Battle of Pelee Island ||| On February 24, 1838, a group of Patriots began assembling on [[Fighting Island]] on the Canadian side of the [[Detroit River]]. Supplies were ferried over from Detroit and some 400 Patriots from Cleveland joined the Detroit area men. The larger force of 600 Cleveland men occupied [[Battle of Pelee Island|Pelee Island]] at the same time. It was reported that the Patriots had only 50 muskets and one dismounted cannon among them on the island. The U.S. general informed his British counterpart of the assembly, announcing that he would wait for the Patriots to break up and arrest them upon their return for violation of American neutrality laws. The British commandant replied that he would attack the Patriot camp and pursue them into the United States. This reply led General Brady to order a line of red flags to be placed in the ice on the river marking the border. He deployed his men with orders to shoot any British soldiers passing the line. ||| Fighting Island ||| ||| +0 Battle of Windsor ||| Lower Canada Rebellion ||| These events at Windsor formed the last military action of the rebellions in [[Upper Canada Rebellion|Upper]] and [[Lower Canada Rebellion|Lower Canada]] of 1837–38. ||| Aftermath ||| ||| +0 Battle of Windsor ||| Upper Canada Rebellion ||| These events at Windsor formed the last military action of the rebellions in [[Upper Canada Rebellion|Upper]] and [[Lower Canada Rebellion|Lower Canada]] of 1837–38. ||| Aftermath ||| ||| +0 Battle of Winterthur (1799) ||| Battle of Aspern-Essling ||| Furthermore, the French dangerously underestimated Austrian tenacity and military skill. The ''white coats'', as the French called the Austrians, were far better soldiers than the French assumed, and despite such demonstrations as that at Ostrach, Stockach and Winterthur, the French continued to hold this prejudice. This did not change until 1809 when the [[Battle of Aspern-Essling]] and the [[Battle of Wagram]] a few weeks later caused Napoleon to revise his opinion of the Austrian military. ||| Aftermath ||| ||| +0 Battle of Winterthur (1799) ||| Battle of Ostrach ||| By mid-May 1799, the Austrians had wrested control of parts of [[Helvetic Republic|Switzerland]] from the French as forces under the command of Hotze and [[Count Heinrich von Bellegarde]] pushed them out of the [[Grison Alps|Grisons]]. After defeating [[Jean-Baptiste Jourdan]]'s 25,000-man [[Army of the Danube]] at the battles of [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], the main Austrian army, under command of [[Archduke Charles, Duke of Teschen|Archduke Charles]], crossed the [[Rhine]] at the Swiss town of [[Schaffhausen]] and prepared to unite with the armies of Hotze and [[Friedrich Joseph, Count of Nauendorf]], on the plains surrounding Zürich. ||| ||| ||| +0 Battle of Winterthur (1799) ||| Battle of Stockach (1799) ||| By mid-May 1799, the Austrians had wrested control of parts of [[Helvetic Republic|Switzerland]] from the French as forces under the command of Hotze and [[Count Heinrich von Bellegarde]] pushed them out of the [[Grison Alps|Grisons]]. After defeating [[Jean-Baptiste Jourdan]]'s 25,000-man [[Army of the Danube]] at the battles of [[Battle of Ostrach|Ostrach]] and [[Battle of Stockach (1799)|Stockach]], the main Austrian army, under command of [[Archduke Charles, Duke of Teschen|Archduke Charles]], crossed the [[Rhine]] at the Swiss town of [[Schaffhausen]] and prepared to unite with the armies of Hotze and [[Friedrich Joseph, Count of Nauendorf]], on the plains surrounding Zürich. ||| ||| ||| +0 Battle of Winterthur (1799) ||| Battle of Wagram ||| Furthermore, the French dangerously underestimated Austrian tenacity and military skill. The ''white coats'', as the French called the Austrians, were far better soldiers than the French assumed, and despite such demonstrations as that at Ostrach, Stockach and Winterthur, the French continued to hold this prejudice. This did not change until 1809 when the [[Battle of Aspern-Essling]] and the [[Battle of Wagram]] a few weeks later caused Napoleon to revise his opinion of the Austrian military. ||| Aftermath ||| ||| +0 Battle of Winterthur (1799) ||| War of the Bavarian Succession ||| Like Ney, Friedrich Freiherr von Hotze, the Austrian commander, was also a cavalry officer. Unlike Ney, he had broad field experience. The Swiss-born Hotze had entered the military service of the Duke of Württemberg in 1758 and had been promoted to ''[[Rittmeister]]'', or captain of cavalry; he had campaigned briefly in the [[Seven Years' War]], but saw no combat. Later, he served in the Russian army in the [[Russo-Turkish War (1768–1774)|Russo-Turkish War]] (1768–74). With an Austrian commission, he joined the Habsburg imperial army, and served in the brief [[War of the Bavarian Succession]] (1778–79). His campaigning in the [[War of the First Coalition]], particularly at the [[Battle of Würzburg]], had earned him the confidence of Archduke Charles and elevation to the ranks of nobility by Charles' brother, [[Francis II, Holy Roman Emperor]]. ||| Background ||| Leadership ||| +0 Battle of Winterthur (1799) ||| War of the Second Coalition ||| The '''Battle of Winterthur''' (27 May 1799) was an important action between elements of the [[Army of the Danube]] and elements of the Habsburg army, commanded by [[Friedrich Freiherr von Hotze]], during the [[War of the Second Coalition]], part of the [[French Revolutionary Wars]]. The small town of [[Winterthur]] lies {{convert|18|km|0}} northeast of [[Zürich]], in Switzerland. Because of its position at the junction of seven cross-roads, the army that held the town controlled access to most of Switzerland and points crossing the Rhine into southern Germany. Although the forces involved were small, the ability of the Austrians to sustain their 11-hour assault on the French line resulted in the consolidation of three Austrian forces on the plateau north of Zürich, leading to the French [[First Battle of Zürich|defeat]] a few days later. ||| ||| ||| +0 Battle of Worksop ||| Battle of Wakefield ||| '''Battle of Worksop''' was a skirmish during the [[Wars of the Roses]], near the town of [[Worksop]], [[Nottinghamshire]] on 16 December 1460, part of the campaign which led to the [[Battle of Wakefield]] on 30 December. ||| ||| ||| +0 Battle of Wyoming ||| Battle of Cobleskill ||| Colonel [[John Butler (pioneer)|John Butler]] recruited [[Butler's Rangers|a regiment of Loyalists]] for the effort, while [[Seneca (tribe)|Seneca]] chiefs [[Sayenqueraghta]] and [[Cornplanter]] recruited primarily Seneca warriors, and [[Joseph Brant]] recruited primarily [[Mohawk nation|Mohawk]] men for what essentially became a [[guerrilla]] war against frontier settlers. By April 1778 the Seneca were raiding settlements along the [[Allegheny River|Allegheny]] and [[Susquehanna River]]s, and by early June these three groups met at the Indian village of [[Tioga, New York]]. Butler and the Seneca decided to attack the [[Wyoming Valley]] while Brant and the Mohawks (who had already [[Battle of Cobleskill|raided Cobleskill]] in May) went after communities further north. ||| Background ||| ||| +0 Battle of Wyoming ||| Battles of Saratoga ||| In 1777, the British General [[John Burgoyne]] led a [[Saratoga campaign|campaign to gain control of the Hudson River]] in the [[American Revolutionary War]]. Burgoyne was weakened by loss of time and forces after the [[Battle of Oriskany]] and forced to surrender after the [[Battles of Saratoga]] in October. News of his surrender prompted France to enter the war as [[Franco-American Alliance|an American ally]]. Concerned that the French might attempt to retake parts of [[New France]] that had been lost in the [[French and Indian War]] (something they did not know the Franco-American [[Treaty of Alliance (1778)|Treaty of Alliance]] specifically forbade), the British adopted a defensive stance in [[Province of Quebec (1763-1791)|Quebec]]. They recruited [[Loyalist (American Revolution)|Loyalist]]s and allied Indians to engage in a frontier war along the northern and western borders of the [[Thirteen Colonies]]. ||| Background ||| ||| +0 Battle of Wólka Węglowa ||| Battle of the Bzura ||| '''Battle of Wólka Węglowa''' ({{lang-pl|Bitwa pod Wólką Węglową}}) refers to the battle on September 19, 1939, that took place near Wólka Węglowa (near [[Warsaw]]), during the last stages of the Polish counteroffensive ([[Battle of the Bzura]]) of the [[Invasion of Poland (1939)|Invasion of Poland]]. ||| ||| ||| +0 Battle of Yashima ||| Battle of Dan-no-ura ||| The [[Taira]] were expecting a naval attack, and so [[Minamoto no Yoshitsune|Yoshitsune]] lit bonfires on [[Shikoku]], essentially in their rear, fooling the [[Taira]] into believing that a large force was approaching on land. They abandoned the fortress/palace, and took to their ships, along with Emperor Antoku and the imperial regalia. In a memorable account in the ''[[Heike monogatari]]'', the [[Taira]] supposedly placed a fan atop the mast of one of their ships, and dared the [[Minamoto]] to knock it off. In one of the most famous archery feats in all of Japanese history, [[Nasu no Yoichi]] rode out into the sea on horseback, and did just that in one shot. The [[Minamoto]] were victorious, but the majority of the [[Taira]] fleet escaped to [[Shimonoseki, Yamaguchi|Dan-no-ura]], where they were defeated one month later in the [[Battle of Dan-no-ura]]. ||| ||| ||| +0 Battle of Yellow Tavern ||| Battle of Spotsylvania Court House ||| The Overland Campaign was [[Union Army | Union]] [[Lieutenant General (United States) | Lt. Gen.]] [[Ulysses S. Grant]]'s 1864 offensive against [[General (CSA) | Gen.]] [[Robert E. Lee]]'s [[Army of Northern Virginia]]. The two had fought an inconclusive battle at the [[Battle of the Wilderness | Wilderness]] and were engaged in heavy fighting at the [[Battle of Spotsylvania Court House]]. Up to this point, Union cavalry commander Maj. Gen. [[Philip Sheridan]] was dissatisfied with his role in the campaign. His Cavalry Corps was assigned to the [[Army of the Potomac]], under Maj. Gen. [[George G. Meade]], who reported to Grant. Meade had employed Sheridan's forces primarily in the traditional role of screening and reconnaissance, whereas Sheridan saw the value of wielding the Cavalry Corps as an independently operating offensive weapon for wide ranging raids into the rear areas of the enemy. On May 8, 1864, Sheridan went over Meade's head and told Grant that if his Cavalry Corps were let loose to operate as an independent unit, he could defeat 'Jeb' Stuart, long a nemesis to the Union army. Grant was intrigued and convinced Meade of the value of Sheridan's request. ||| Background ||| ||| +0 Battle of Yenangyaung ||| Battle of Singapore ||| After the Japanese captured Rangoon in March 1942, the Allies regrouped in Central Burma. The newly formed [[Burma Corps]], commanded by Lieutenant General [[William Slim, 1st Viscount Slim|William Slim]] and consisting of British, Indian and locally raised Burmese troops, attempted to defend the [[Irrawaddy River]] valley, while the [[Chinese Expeditionary Force (in Burma)]] defended the [[Sittaung River]] valley to the east. After the Japanese captured [[Battle of Singapore|Singapore]] and the [[Dutch East Indies]], they were able to use divisions released by these successes and captured trucks to reinforce their army in Burma and launch attacks into Central Burma. ||| Background ||| ||| +0 Battle of Yijiangshan Islands ||| First Taiwan Strait Crisis ||| The '''Battle of Yijiangshan Islands''' ({{zh|t=一江山島戰役|s=一江山岛战役}}) was a conflict between forces of the [[National Revolutionary Army]] (NRA) of the [[Republic of China]] and the [[People's Liberation Army]] (PLA) of the [[People's Republic of China]], over one of the last strongholds of [[Kuomintang|Nationalist]] (ROC) forces near [[mainland China]] on the [[Yijiangshan Islands]]. The conflict occurred from January 18 to January 20, 1955, during the [[First Taiwan Strait Crisis]], and resulted in a PLA victory and the complete destruction of the ROC garrison. ||| ||| ||| +0 Battle of Yongjiazhen ||| Second Sino-Japanese War ||| The warlords gladly followed Chiang's orders, and they were eager to prove themselves. They were aware that, due to their collaboration with the Japanese during the [[Second Sino-Japanese War]], they were hated by the general Chinese population (including those nationalists who had refused to surrender to, or stop fighting, the Japanese). The order from Chiang not to surrender, and to fight the communists, was a lifeline for them. ||| {{anchor|Nationalist Strategy}}Nationalist strategy ||| ||| +0 Battle of Yongjiazhen ||| World War II ||| The '''Battle of Yongjiazhen''' (雍家镇战斗) was fought during the aftermath of [[Pacific War|World War II]] in the Yongjiazhen (雍家镇) region of central [[Anhui]], [[China]] between Communist forces and [[Kuomintang]] forces who had allied with the Japanese. The battle was part of the [[Chinese Civil War]], resulting in a victory for the [[People's Liberation Army]]. ||| ||| ||| +0 Battle of Yongju ||| New Guinea campaign ||| Australia was one of the first nations to commit units to the fighting, playing a small but sometimes significant part in the [[United Nations Command]], which was initially led by [[General of the Army (United States)|General]] [[Douglas MacArthur]]. Training and re-equipment began immediately, while hundreds of reinforcements were hastily recruited in Australia as part of [[K Force]]; they soon began arriving to fill out the battalion. The battalion's commanding officer, [[Lieutenant Colonel (Australia)|Lieutenant Colonel]] Floyd Walsh, was subsequently replaced by Lieutenant Colonel [[Charles Hercules Green|Charles Green]]. An officer with extensive operational experience fighting the Japanese in [[New Guinea campaign|New Guinea]] during the [[Second World War]], Green took over from Walsh due to the latter's perceived inexperience. ||| Background ||| Military situation ||| +0 Battle of Yongsan ||| Battle of Masan ||| When the North Koreans approached the Pusan Perimeter on August 5, they attempted the same frontal assault technique on the four main avenues of approach into the perimeter. Throughout August, the [[NK 6th Division]], and later the [[NK 7th Division]], engaged the [[US 25th Infantry Division]] at the [[Battle of Masan]], initially repelling a UN [[counteroffensive]] before countering with battles at [[Battle of Komam-ni|Komam-ni]] ||| Background ||| Pusan Perimeter ||| +0 Battle of Yongsan ||| Second Battle of Naktong Bulge ||| During the nearby [[Second Battle of Naktong Bulge]], the [[North Korean People's Army]] broke through the [[US Army]]'s [[US 2nd Infantry Division|2nd Infantry Division]] lines along the [[Naktong River]]. Exploiting this weakness, the [[NK 9th Division]] and [[NK 4th Division]] attacked to Yongsan, a village east of the river and the gateway to the UN lines of supply and reinforcement for the Pusan Perimeter. What followed was a fight between North Korean and US forces for Yongsan. ||| ||| ||| +0 Battle of Yunnan-Burma Road ||| Battle of Toungoo ||| * [[Battle of Toungoo]] March 24–30, 1942, in and around [[Toungoo]] ||| ||| ||| +0 Battle of Yunnan-Burma Road ||| Battle of Yenangyaung ||| * [[Battle of Yenangyaung]] April 17–19, 1942 ||| ||| ||| +0 Battle of Zadar ||| Battle of the Barracks ||| The '''Battle of Zadar''' ({{lang-hr|Bitka za Zadar}}) was a military engagement between the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'', or JNA), supported by the [[Croatian Serb]] [[Serbian Autonomous Oblast of Krajina]] (SAO Krajina), and the [[Croatian National Guard]] (''Zbor Narodne Garde'', or ZNG), supported by the [[Croatian Police]]. The battle was fought north and east of the city of [[Zadar]], [[Croatia]], in the second half of September and early October 1991 during the [[Croatian War of Independence]]. Although the JNA's initial orders were to lift the Croatian [[Battle of the Barracks|siege]] of the JNA's barracks in the city and isolate the region of [[Dalmatia]] from the rest of Croatia, the orders were amended during the battle to include capturing the Port of Zadar in the city centre. The JNA's advance was supported by the [[Yugoslav Air Force]] and [[Yugoslav Navy|Navy]]. ||| ||| ||| +0 Battle of Zadwórze ||| Battle of Thermopylae ||| '''Battle of Zadwórze''' (sometimes referred to as the 'Polish [[Battle of Thermopylae|Thermopylae]]') was a battle of the [[Polish-Soviet War]]. It was fought on August 17, 1920 near the train station of Zadwórze, a small village located 33 kilometres from the city centre of [[Lwów]] (now Lviv). The battle, lasting roughly 24 hours, resulted in the complete destruction of the Polish forces but at the same time halted the Soviet advance, preventing the forces of [[Siemion Budionnyi]] from seizing Lwów and so contributing to the successful [[Battle of Warsaw (1920)|defence of Warsaw]]. The battle has been called a [[Polish Thermopylae]]. ||| ||| ||| +0 Battle of Zeeland ||| Battle of the Netherlands ||| The province of [[Zeeland]] had received little attention from the Dutch government prior to the German invasion of the Low Countries in May 1940. On 10 May, the Germans launched their [[Battle of the Netherlands|attack]]. ||| Defenses and troops in the province ||| ||| +0 Battle of Zeeland ||| Rotterdam Blitz ||| On 17 May, the Germans launched a massive raid on [[Middelburg]], which would only to be surpassed for severity by the [[Rotterdam Blitz]]. Nearly 600 buildings were destroyed by the bombing and resulting fire. 800 people were made homeless. ||| 17 May ||| Bombing of Middelburg ||| +0 Battle of Zhenhai ||| Battle of Shipu ||| In early February 1885 part of Admiral Courbet's [[Far East Squadron]] left [[Keelung]] to head off a threatened attempt by part of the Chinese [[Nanyang Fleet]] (Southern Seas fleet) to break the French blockade of Formosa (Taiwan). On 11{{nbsp}}February Courbet's task force met the cruisers ''Kaiji'' (開濟), ''Nanchen'' (南琛) and ''Nanrui'' (南瑞), three of the most modern ships in the Chinese fleet, near Shipu Bay, accompanied by the frigate ''Yuyuan'' (馭遠) and the composite sloop ''Chengqing'' (澄慶). The Chinese flotilla, under the command of Admiral Wu Ankang (吳安康), scattered as the French approached, and while the three cruisers successfully escaped, the French succeeded in trapping ''Yuyuan'' and ''Chengqing'' in Shipu Bay. On the night of 14{{nbsp}}February, during the [[Battle of Shipu]], a French torpedo attack crippled both ships: a French spar torpedo hit ''Yuyuan'' while shells from her guns struck ''Chengqing'' ||| Background ||| ||| +0 Battle of Zhenhai ||| Pescadores Campaign ||| France and China signed preliminary peace accords on 4{{nbsp}}April 1885, but the French maintained their blockades of Zhenhai and the Yangzi River until a substantive peace treaty ending the Sino-French War (the Treaty of Tientsin) was signed on 9{{nbsp}}June. On 11{{nbsp}}June 1885 Admiral Courbet died of dysentery aboard his flagship ''Bayard'' in Makung harbour, where most of the Far East Squadron had been stationed since the end of the [[Pescadores Campaign]] in late March 1885. On 13{{nbsp}}June Admiral Adrien-Barthélémy-Louis Rieunier, then stationed off Shanghai with the ironclad ''Turenne'', officially notified the Chinese authorities at Shanghai of Courbet's death. He also sent word to military commissioner Ouyang Lijian at Zhenhai. As France and China were now at peace, the Chinese lowered their flags to half-mast from the Zhenhai shore batteries, in accordance with international protocol. Only three months earlier, these same batteries had done their best to kill the French admiral. ||| Aftermath ||| ||| +0 Battle of the Admin Box ||| Battle of Imphal ||| At this point, XV Corps' operations were curtailed to free transport aircraft and troops for the [[Battle of Imphal|Imphal battle]]. As the [[monsoon]] began, it was found that the low-lying area around Buthidaung was malarial and unhealthy and the Allies actually withdrew from the area to spare themselves losses to disease. With support from a unit of the Indian National Army and local Arakanese, this force mounted a successful counter-attack against the isolated West African division, forcing it to retreat and eventually withdraw from the valley. ||| Aftermath ||| ||| +0 Battle of the Alamo ||| Battle of San Jacinto ||| The '''Battle of the Alamo''' (February 23 – March 6, 1836) was a pivotal event in the [[Texas Revolution]]. Following a [[siege of the Alamo|13-day siege]], Mexican troops under [[president of Mexico|President]] [[Antonio López de Santa Anna|General Antonio López de Santa Anna]] launched an assault on the [[Alamo Mission in San Antonio|Alamo Mission]] near [[San Antonio de Béxar]] (modern-day San Antonio, [[Texas]], [[United States]]), killing all of the [[Texian]] defenders. Santa Anna's cruelty during the battle inspired many Texians—both Texas settlers and adventurers from the United States—to join the Texian Army. Buoyed by a desire for revenge, the Texians defeated the Mexican Army at the [[Battle of San Jacinto]], on April 21, 1836, ending the revolution. ||| ||| ||| +0 Battle of the Alamo ||| Battle of San Patricio ||| On March 3, the Texians watched from the walls as approximately 1,000 Mexicans marched into Béxar. The Mexican army celebrated loudly throughout the afternoon, both in honor of their reinforcements and at the news that troops under General [[José de Urrea]] had soundly defeated Texian Colonel [[Frank W. Johnson]] at the [[Battle of San Patricio]] on February 27. ||| Siege ||| Reinforcements ||| +0 Battle of the Ardennes ||| Plan XVII ||| French commander-in-chief [[Joseph Joffre]] ordered an attack through the [[Ardennes]] forest in support of the French invasion of [[Lorraine (province)|Lorraine]]. According to the pre-war French war strategy document, [[Plan XVII]], German forces in the area were only expected to be light, with French light, rapid-firing artillery proving advantageous in a wooded terrain such as that found in the Ardennes. By 20 August, however, it was becoming clear - first to General [[Charles Lanrezac]]'s French Fifth Army, and then to Commander-in-Chief Joseph Joffre - that a massive German presence was gathering in the area. That same day the Germans launched a counter-attack against the French advance into Lorraine. Even so, Joffre ordered an invasion of the Ardennes on 20 August for the following day. ||| Prelude ||| French offensive preparations ||| +0 Battle of the Argenta Gap ||| Allied invasion of Italy ||| [[Allied invasion of Sicily|Operation Husky]] — the [[Allied invasion of Sicily|invasion of Sicily]] in July 1943 — was successful, serving as a springboard for the invasion of the mainland. In September, the first Allied troops to [[Allied invasion of Italy|land in Italy]] were of the [[Eighth Army (United Kingdom)|British Eighth Army]] under the then General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]], in [[Operation Baytown]]. Further landings on 9 September 1943 saw the [[Allied invasion of Italy#Salerno landings|main attack force landing]], despite the Italian surrender to the Allied forces on the previous day. After securing the beachheads, the [[United States Army North|U.S. Fifth Army]] began its advance northwards. ||| Background ||| ||| +0 Battle of the Argenta Gap ||| Allied invasion of Sicily ||| [[Allied invasion of Sicily|Operation Husky]] — the [[Allied invasion of Sicily|invasion of Sicily]] in July 1943 — was successful, serving as a springboard for the invasion of the mainland. In September, the first Allied troops to [[Allied invasion of Italy|land in Italy]] were of the [[Eighth Army (United Kingdom)|British Eighth Army]] under the then General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]], in [[Operation Baytown]]. Further landings on 9 September 1943 saw the [[Allied invasion of Italy#Salerno landings|main attack force landing]], despite the Italian surrender to the Allied forces on the previous day. After securing the beachheads, the [[United States Army North|U.S. Fifth Army]] began its advance northwards. ||| Background ||| ||| +0 Battle of the Argenta Gap ||| South-East Asian theatre of World War II ||| The Allied invasion of Italy occurred during September 1943, for a number of key reasons not least important of which was that support for the war in Italy had been declining and it was thought that an invasion would hasten the efforts of the new government that had deposed [[Benito Mussolini]], which was seeking peace. Furthermore, the weakening of Axis control of the Mediterranean supply routes eased the pressure on Allied forces operating in the [[Middle East Theatre of World War II|Middle]] and [[South-East Asian theatre of World War II|Far East]], as well as on the efforts to supply to [[Soviet Union]]. ||| Background ||| ||| +0 Battle of the Atlantic ||| Battle of France ||| On March 5, 1941, First Lord of the Admiralty [[A.V. Alexander]] asked Parliament for 'many more ships and great numbers of men' to fight 'the Battle of the Atlantic', which he compared to the [[Battle of France]], fought the previous summer. Sargint, H.J.J., 'Mighty Nazi effort to invade England now in the making: Observers see amphibious attack as Hitler's anticipated thrust against British Isles', ''Miami News'', Jan. 18, 1941. 'This country is fighting a battle which may well be called the battle of the Atlantic, though it is not more than an extension of the battle of Britain.' ||| Name ||| ||| +0 Battle of the Atlantic ||| Battle of Jutland ||| This was in stark contrast to the traditional view of submarine deployment up until then, in which the submarine was seen as a lone ambusher, waiting outside an enemy port to attack ships entering and leaving. This had been a very successful tactic used by British submarines in the Baltic and [[Bosporus]] during World War I, but it could not be successful if port approaches were well patrolled. There had also been naval theorists who held submarines should be attached to a fleet and used like destroyers; this had been tried by the Germans at [[Battle of Jutland|Jutland]] with poor results, since underwater communications were in their infancy. (Interwar exercises had proven the idea faulty.) The [[Empire of Japan|Japanese]] also adhered to the idea of a fleet submarine, following the [[Military doctrine|doctrine]] of [[Alfred Thayer Mahan|Mahan]], and never used their submarines either for close blockade or convoy [[interdiction]]. The submarine was still looked upon by much of the naval world as 'dishonourable', compared to the prestige attached to capital ships. This was true in ''Kriegsmarine'' as well; Raeder successfully lobbied for the money to be spent on capital ships instead. ||| Submarine warfare ||| ||| +0 Battle of the Atlantic ||| Battle of the Barents Sea ||| Operation Drumbeat had one other effect. It was so successful that Dönitz's policy of economic war was seen, even by Hitler, as the only effective use of the U-boat; he was given complete freedom to use them as he saw fit. Meanwhile, Hitler sacked Raeder after the embarrassing [[Battle of the Barents Sea]], in which two German heavy cruisers were beaten off by half a dozen British destroyers. Dönitz was eventually made Grand Admiral, and all building priorities turned to U-boats. ||| Operation Drumbeat (January – June 1942) ||| ||| +0 Battle of the Atlantic ||| Convoy HG 76 ||| In October 1941, Hitler ordered Dönitz to move U-boats into the Mediterranean to support German operations in that theatre. The resulting concentration near Gibraltar resulted in a series of battles around the Gibraltar and Sierra Leone convoys. In December 1941, [[Convoy HG 76]] sailed, escorted by the 36th Escort Group of two sloops and six corvettes under Captain [[Frederic John Walker]], reinforced by the first of the new [[escort carrier]]s, {{HMS|Audacity|D10|6}}, and three destroyers from Gibraltar. The convoy was immediately intercepted by the waiting U-boat pack, resulting in a brutal battle. Walker was a tactical innovator, his ships' crews were highly trained and the presence of an escort carrier meant U-boats were frequently sighted and forced to dive before they could get close to the convoy. Over the next five days, five U-boats were sunk (four by Walker's group), despite the loss of ''Audacity'' after two days. The British lost ''Audacity'', a destroyer and only two merchant ships. The battle was the first clear Allied convoy victory. ||| Mediterranean diversion ||| ||| +0 Battle of the Atlantic ||| Invasion of Iceland ||| The completion of Hitler's campaign in Western Europe meant U-boats withdrawn<!--they were withdrawn, as Donitz points out--> from the Atlantic for the Norwegian campaign now returned to the war on trade. So at the very time the number of U-boats on patrol in the Atlantic began to increase, the number of escorts available for the convoys was greatly reduced. The only consolation for the British was that the large merchant fleets of occupied countries like Norway and the Netherlands came under British control. After the German occupation of Denmark and Norway, Britain [[Invasion of Iceland|occupied Iceland]] and the [[The British occupation of the Faroe Islands 1940-1945|Faroe Islands]], establishing bases there and preventing a German takeover. ||| British situation ||| ||| +0 Battle of the Atlantic ||| Operation Torch ||| Despite their efforts, the Axis powers were unable to prevent the build-up of Allied invasion forces for the liberation of Europe. In November 1942, at the height of the Atlantic campaign, the US Navy escorted the [[Operation Torch]] invasion fleet {{convert|3,000|mi|km|abbr=on}} across the Atlantic without hindrance, or even being detected. (This may be the ultimate example of the Allied practise of evasive routing.) In 1943 and 1944 the Allies transported some 3 million American and Allied servicemen across the Atlantic without significant loss.<!--many by use of the Queens, which were effectively immune from interception...--> By 1945 the USN was [[Operation Teardrop|able to wipe out]] in mid-Atlantic with little real difficulty a wolf-pack suspected of carrying V-weapons. <!--Not really fair; by 1945, U-boats weren't much more than targets.--> ||| Assessment ||| ||| +0 Battle of the Barents Sea ||| Battle of the North Cape ||| [[E-boat]]s continued to operate off the coast of France, but the only major surface operation executed after the battle{{citation needed|date=July 2013}} was the attempted raid on [[Convoy JW 55B]] by the [[battleship]] {{Ship|German battleship|Scharnhorst||2}}, which was sunk by an escorting British task force in what later became known as the [[Battle of the North Cape]]. ||| Aftermath ||| ||| +0 Battle of the Barracks ||| Ten-Day War ||| Croatian views of the JNA's role in the Serb revolt gradually evolved in January-September 1991. Croatian President [[Franjo Tuđman]]'s first plan was to win support from the [[European Community]] (EC) and the [[United States]] for Croatia; he dismissed advice to seize JNA barracks and storage facilities in the country. Capture of the JNA barracks and storage depots was first advocated by Špegelj in late 1990; he again urged Tuđman to adopt the plan in early-to-mid 1991 while the JNA fought [[Slovenia]]'s TO in the [[Ten-Day War]] in June-July 1991. Špegelj's calls were echoed by [[Šime Đodan]], who succeeded Špegelj as the Defence Minister in July. Špegelj remained in command of the ZNG. ||| Prelude ||| ||| +0 Battle of the Bogside ||| Siege of Derry ||| The annual Apprentice Boys parade on 12 August commemorated the Protestant victory in the [[Siege of Derry]] in 1689 and was considered highly provocative by many Catholics. Derry activist [[Eamonn McCann]] wrote that the march, 'was regarded as a calculated insult to the Derry Catholics'. ||| Apprentice Boys march ||| ||| +0 Battle of the Bowling Alley ||| Battle of Taejon ||| The 24th Infantry Division was the first US unit sent into Korea with the mission to take the initial 'shock' of North Korean advances, delaying much larger North Korean units to buy time to allow reinforcements to arrive. The 24th was finally annihilated in the [[Battle of Taejon]], but was able to delay the North Korean forces until July 20. ||| Background ||| Outbreak of war ||| +0 Battle of the Boyne ||| Battle of the Dunes (1658) ||| James was a seasoned officer who had proven his bravery when fighting for his brother – [[Charles II of England|King Charles II]] – in Europe, notably at the [[Battle of the Dunes (1658)|Battle of the Dunes]] (1658). However, recent historians have noted that he was prone to panicking under pressure and making rash decisions, possibly due to the onset of the [[dementia]] which would overtake him completely in later years. William, although a seasoned commander, was hardly one of history's great generals and had yet to win a major battle. ||| Background ||| Commanders ||| +0 Battle of the Boyne ||| Glorious Revolution ||| The '''Battle of the Boyne''' ({{lang-ga|Cath na Bóinne}} {{IPA-ga|ˈkah n̪ˠə ˈbˠoːn̪ʲə|IPA}}) was a battle in 1690 between the Catholic [[James II of England|James II]] and the Protestant [[William III of England|William III of England and II of Scotland]], who, with his wife, [[Mary II of England|Mary II]] (his cousin and James' daughter), had [[Glorious Revolution|overthrown James in England in 1688]]. The battle took place at the [[River Boyne]] near the town of [[Drogheda]] on the east coast of Ireland, and resulted in a victory for William. This turned the tide in [[Williamite War|James's failed attempt to regain the British crown]] and ultimately aided in ensuring the continued [[Protestant Ascendancy]] in Ireland. ||| ||| ||| +0 Battle of the Boyne ||| Siege of Limerick (1690) ||| The casualty figures of the battle were quite low for a battle of such a scale—of the 50,000 or so participants, about 2,000 died. Although three-quarters of them were Jacobites; William's army had far more wounded. At the time, most casualties of battles tended to be inflicted in the pursuit of an already-beaten enemy; this did not happen at the Boyne, as the counter-attacks of the skilled Jacobite cavalry screened the retreat of the rest of their army, and in addition William was always disinclined to endanger the person of James, since he was the father of his wife, [[Mary II of England|Mary]]. The Jacobites were badly demoralised by the order to retreat, which lost them the battle. Many of the Irish infantrymen deserted. The Williamites triumphantly marched into [[Dublin]] two days after the battle. The Jacobite army abandoned the city and marched to [[Limerick]], behind the [[River Shannon]], where they were [[Siege of Limerick (1690)|unsuccessfully besieged]]. ||| The battle ||| ||| +0 Battle of the Bulge ||| 20 July plot ||| After the [[20 July plot]] attempt on Hitler's life, and the close advance of the [[Red Army]] which would seize the site on 27 January 1945, Hitler and his staff had been forced to abandon the [[Wolfsschanze]] headquarters in [[East Prussia]], in which they had coordinated much of the fighting on the Eastern Front. After a brief visit to Berlin, Hitler travelled on his [[Führersonderzug]] ('Special Train of the Führer' (Leader)) to [[Giessen]] on 11 December, taking up residence in the [[Adlerhorst]] (eyrie) command complex, co-located with OB West's base at Kransberg Castle. Believing in omens and the successes of his early war campaigns that had been planned at Kransberg, Hitler had chosen the site from which he had overseen the successful 1940 campaign against France and the [[Low Countries]] or [[Benelux]] States as they are called nowadays. ||| Background ||| Planning ||| +0 Battle of the Bulge ||| Battle of France ||| Model and von Rundstedt both believed aiming for Antwerp was too ambitious, given Germany's scarce resources in late 1944. At the same time, they felt that maintaining a purely defensive posture (as had been the case since Normandy) would only delay defeat, not avert it. They thus developed alternative, less ambitious plans that did not aim to cross the [[Meuse River]] (in German and Flemish: Maas); Model's being [[Operation Herbstnebel (Northwest Europe)|Unternehmen Herbstnebel]] (Operation Autumn Mist) and von Rundstedt's [[Fall Martin]] ('Plan Martin'). The two field marshals combined their plans to present a joint 'small solution' to Hitler.{{efn|The Ardennenoffensive was also named Rundstedt-Offensive, but von Rundstedt strongly objected 'to the fact that this stupid operation in the Ardennes is sometimes called the 'Rundstedt-Offensive'. This is a complete misnomer. I had nothing to do with it. It came to me as an order complete to the last detail. Hitler had even written on the plan in his own handwriting 'not to be altered''. ({{citation |last=Jablonsky |first=David |title=Churchill and Hitler: Essays on the Political-Military Direction of Total War |publisher=Taylor & Francis |year=1994 |page=194 |isbn=978-0-7146-4119-5}}).}}{{efn|Wacht am Rhein was renamed Herbstnebel after the operation was given the go-ahead in early December, although its original name remains much better known ({{Harvnb|Parker|1991|pp=95–100}}; {{Harvnb|Mitcham|2006|p=38}}; {{Harvnb|Newton|2006|pp=329–334}}).}} A second plan called for a classic [[Blitzkrieg]] attack through the weakly defended [[Ardennes]]—mirroring the successful German offensive there during the [[Battle of France]] in 1940—aimed at splitting the armies along the U.S.—British lines and capturing [[Antwerp]]. ||| Background ||| Drafting the offensive ||| +0 Battle of the Bulge ||| Battle of the Bulge ||| The battle has been depicted in numerous works of fiction and entertainment, including the films ''[[Battleground (film)|Battleground]]'' (1949) and ''[[Battle of the Bulge (film)|Battle of the Bulge]]'' (1965). During 1992, the battle was immortalized in the movie ''[[A Midnight Clear]]''. [[Roger Ebert]] wrote that 'The opening shots of 'A Midnight Clear' have a clarity and force that linger, casting a spell over the entire movie. They show a group of young men in Jeeps, making their way through the deep snow in an almost primeval forest. Everything is dark or blinding white; the snow crunches, reluctantly accepting the trespassers. We can see at once that this is a war movie - we know from the costumes it is World War II - but somehow the film is able to suggest some hidden purpose, and we know it will not simply tell a war story.' ||| In entertainment ||| ||| +0 Battle of the Bulge ||| Battle of the Scheldt ||| [[Field Marshal (UK)|Field Marshal]] Montgomery's [[Operation Market Garden]] only achieved some of its objectives, while its territorial gains left the Allied supply situation worse off than before. In October, the [[Canadian First Army]] fought the [[Battle of the Scheldt]], opening the port of Antwerp to shipping. As a result, by the end of October the supply situation had eased somewhat. ||| Background ||| ||| +0 Battle of the Bulge ||| Operation Cobra ||| After the [[Operation Cobra|breakout from Normandy]] at the end of July 1944 and the [[Operation Dragoon|landings in southern France]] on 15 August 1944, the Allies advanced toward Germany more quickly than anticipated.{{efn|Operation Overlord planned for an advance to the line of the Seine by D+90 (i.e., the 90th day following [[D-Day]]) and an advance to the German frontier sometime after D+120.}} The Allies were faced with several [[military logistics]] issues: troops were fatigued by weeks of continuous combat, supply lines were stretched extremely thin, and supplies were dangerously depleted. General [[Dwight D. Eisenhower|Eisenhower]] (the [[Supreme Headquarters Allied Expeditionary Force|Supreme Allied Commander]]) and his staff chose to hold the [[Ardennes]] region which was occupied by the First United States Army. The Allies believed the Ardennes could be defended by as few troops as possible due to the favorable terrain (a densely wooded highland with deep river valleys and a rather thin road network) and a limited number of Allied operational objectives. Also, the [[Wehrmacht]] was known to be using the area to the east across the German border (the Eifel region, which is the geological continuation of the Ardennes) as a rest-and-refit area for its troops. ||| Background ||| ||| +0 Battle of the Bulge ||| Operation Dragoon ||| After the [[Operation Cobra|breakout from Normandy]] at the end of July 1944 and the [[Operation Dragoon|landings in southern France]] on 15 August 1944, the Allies advanced toward Germany more quickly than anticipated.{{efn|Operation Overlord planned for an advance to the line of the Seine by D+90 (i.e., the 90th day following [[D-Day]]) and an advance to the German frontier sometime after D+120.}} The Allies were faced with several [[military logistics]] issues: troops were fatigued by weeks of continuous combat, supply lines were stretched extremely thin, and supplies were dangerously depleted. General [[Dwight D. Eisenhower|Eisenhower]] (the [[Supreme Headquarters Allied Expeditionary Force|Supreme Allied Commander]]) and his staff chose to hold the [[Ardennes]] region which was occupied by the First United States Army. The Allies believed the Ardennes could be defended by as few troops as possible due to the favorable terrain (a densely wooded highland with deep river valleys and a rather thin road network) and a limited number of Allied operational objectives. Also, the [[Wehrmacht]] was known to be using the area to the east across the German border (the Eifel region, which is the geological continuation of the Ardennes) as a rest-and-refit area for its troops. ||| Background ||| ||| +0 Battle of the Bulge ||| Operation Market Garden ||| [[Field Marshal (UK)|Field Marshal]] Montgomery's [[Operation Market Garden]] only achieved some of its objectives, while its territorial gains left the Allied supply situation worse off than before. In October, the [[Canadian First Army]] fought the [[Battle of the Scheldt]], opening the port of Antwerp to shipping. As a result, by the end of October the supply situation had eased somewhat. ||| Background ||| ||| +0 Battle of the Bulge ||| Operation Nordwind ||| On the same day, German [[Army Group G]] (Heeresgruppe G) and [[Army Group Oberrhein (Germany)|Army Group Upper Rhine]] (Heeresgruppe Oberrhein) launched a major offensive against the thinly stretched, {{convert|70|mi|km|disp=flip}} line of the Seventh U.S. Army. This offensive, known as [[Operation Nordwind|Unternehmen Nordwind]] (Operation North Wind), was the last major German offensive of the war on the Western Front. The weakened Seventh Army had, at Eisenhower's orders, sent troops, equipment, and supplies north to reinforce the American armies in the Ardennes, and the offensive left it in dire straits. ||| German counterattack ||| ||| +0 Battle of the Bulge ||| Western Front (World War II) ||| The '''Battle of the Bulge''' (16 December 1944 – 25 January 1945) was a major German [[military offensive|offensive]] [[military campaign|campaign]] launched through the densely forested [[Ardennes]] region of [[Wallonia]] in Belgium, France, and [[Luxembourg]] on the [[Western Front (World War II)|Western Front]] toward the end of [[World War II]] in Europe. The surprise attack caught the [[Allies (WWII)|Allied]] forces completely off guard. United States forces bore the brunt of the attack and incurred their highest casualties for any operation during the war. The battle also severely depleted Germany's armored forces on the western front, and Germany was largely unable to replace them. German personnel, and later Luftwaffe aircraft (in [[Operation Bodenplatte|the concluding stages of the engagement]]), also sustained heavy losses. ||| ||| ||| +0 Battle of the Ch'ongch'on River ||| Battle of Onjong ||| In the aftermath of the [[Battle of Onjong]], the Chinese recognized the ROK II Corps as the most vulnerable unit of the Eighth Army. At 10 a.m. on November 24, the ROK [[7th Infantry Division (South Korea)|7th Infantry Division]] on the II Corps' left flank attacked north from Tokchon. ||| Battle ||| Actions at Tokchon and Yongwon ||| +0 Battle of the Ch'ongch'on River ||| Battle of Unsan ||| Because of the earlier UN defeat at the [[Battle of Unsan]], the US 25th Infantry Division expected to encounter heavy Chinese resistance during its advance. ||| Battle ||| Actions at Ipsok ||| +0 Battle of the Chesapeake ||| Siege of Yorktown ||| The '''Battle of the Chesapeake''', also known as the '''Battle of the Virginia Capes''' or simply the '''Battle of the Capes''', was a crucial naval battle in the [[American War of Independence]] that took place near the mouth of [[Chesapeake Bay]] on 5 September 1781, between a [[Kingdom of Great Britain|British]] fleet led by Rear Admiral [[Thomas Graves, 1st Baron Graves|Sir Thomas Graves]] and a [[Kingdom of France|French]] fleet led by Rear Admiral [[François Joseph Paul de Grasse|Francois Joseph Paul]], the Comte de Grasse. The battle was tactically inconclusive but strategically a major defeat for the British, since it prevented the Royal Navy from reinforcing or evacuating the blockaded forces of Lieutenant General [[Charles Cornwallis, 1st Marquess Cornwallis|Lord Cornwallis]] at [[Yorktown, Virginia]]. When the French were able to achieve temporary control of the sea lanes against the British, the result was the reinforcement of the [[Continental Army]] with siege artillery and French troops—all of which proved decisive in the [[Siege of Yorktown]], effectively securing independence for the [[Thirteen Colonies]]. ||| ||| ||| +0 Battle of the Chinese Farm ||| Battle of Ismailia ||| At around 4:00 PM on October 17, the pontoon bridge had been fully assembled, opening the first Israeli bridge across the canal. The roller bridge was laid soon after at dawn on October 18, and by afternoon, Adan's division crossed to the west bank followed by Kalman Magen's division. Adan, supported by Magen, would go on to reach Suez after the failure of a United Nations ceasefire, thereby cutting off two infantry divisions of the Egyptian Third Field Army. Sharon also crossed with part of his division, simultaneously trying to defend and expand the Israeli corridor to the Suez Canal—as well attacking northwards on the west bank to Ismailia in an attempt to similarly cut off the Second Army. His efforts bogged down, and he was unable to reach Ismailia (see [[Battle of Ismailia]]), while attempts to seize critical positions and expand the Israeli corridor on the east bank saw little to no success. ||| Aftermath ||| ||| +0 Battle of the Chinese Farm ||| Operation Badr (1973) ||| On October 6, 1973, Egypt launched [[Operation Badr (1973)|Operation Badr]], intending to cross the [[Suez Canal]] and establish bridgeheads on the opposite bank of the [[Sinai Peninsula]], which had been occupied by Israel since 1967. Coordinated with a [[Syria]]n assault on the [[Golan Heights]], the crossing achieved tactical surprise and was a success. Thereafter, counterattacks by Israeli reserves were unsuccessful. By October 10, fighting along the front had come to a lull. The Egyptians dug in and hoped to wear down the Israelis by attrition, while remaining within range of their ground [[surface-to-air missiles]], which provided air cover from the west bank of the canal, while the Israelis focused on directing their main efforts against the Syrians in the Golan and reorganizing their battered forces. Israeli failures led to the replacement of the chief of the Israeli Southern Command, [[Major General]] [[Shmuel Gonen]], with [[Chaim Bar-Lev]], although Gonen was retained as his aide. ||| Background ||| ||| +0 Battle of the Col de Panissars ||| Battle of Les Formigues ||| It was the last battle of the [[Aragonese Crusade]], a papally-sanctioned war on behalf of [[Charles of Valois]] to secure the Aragonese throne from the excommunicate king Peter, who [[War of the Sicilian Vespers|had conquered]] [[Sicily]] against papal interests. The battle followed on the heels of the [[Battle of Les Formigues|naval victory at Les Formigues]] on 4 September. ||| ||| ||| +0 Battle of the Coral Sea ||| Attack on Pearl Harbor ||| On 7 December 1941, using aircraft carriers, [[Attack on Pearl Harbor|Japan attacked]] the [[United States Pacific Fleet|U.S. Pacific fleet]] at [[Pearl Harbor]], Hawaii. The attack destroyed or crippled most of the U.S. Pacific Fleet's battleships and brought the United States into the war. In launching this war, Japanese leaders sought to neutralize the American fleet, seize possessions rich in natural resources, and obtain strategic military bases to defend their far-flung empire. At the same time that they were attacking Pearl Harbor, the Japanese attacked [[British Malaya|Malaya]], causing Britain, Australia, and New Zealand to join the United States as Allies in the war against Japan. In the words of the Imperial Japanese Navy (IJN) Combined Fleet 'Secret Order Number One', dated 1 November 1941, the goals of the initial Japanese campaigns in the impending war were to '(eject) British and American strength from the Netherlands Indies and the Philippines, (and) to establish a policy of autonomous self-sufficiency and economic independence.' ||| Background ||| Japanese expansion ||| +0 Battle of the Coral Sea ||| Battle of Midway ||| Although a tactical victory for the Japanese in terms of ships sunk, the battle would prove to be a strategic victory for the Allies for several reasons. The battle marked the first time since the start of the war that a major Japanese advance had been checked by the Allies. More importantly, the Japanese fleet carriers ''Shōkaku'' and {{Ship|Japanese aircraft carrier|Zuikaku||2}} – one damaged and the other with a depleted aircraft complement – were unable to participate in the [[Battle of Midway]], which took place the following month, ensuring a rough parity in aircraft between the two adversaries and contributing significantly to the US victory in that battle. The severe losses in carriers at Midway prevented the Japanese from reattempting to invade Port Moresby from the ocean. Two months later, the Allies took advantage of Japan's resulting strategic vulnerability in the South Pacific and launched the [[Guadalcanal Campaign]] that, along with the [[New Guinea Campaign]], eventually broke Japanese defenses in the South Pacific and was a significant contributing factor to Japan's ultimate defeat in World War II. ||| ||| ||| +0 Battle of the Coral Sea ||| Kokoda Track campaign ||| Because of the severe losses in carriers at Midway, however, the Japanese were unable to support another attempt to invade Port Moresby from the sea, forcing Japan to try to take Port Moresby by land. Japan began its [[Kokoda Track campaign|land offensive]] towards Port Moresby along the [[Kokoda Track]] on 21 July from [[Buna, Papua New Guinea|Buna]] and [[Gona]]. By then, the Allies had reinforced New Guinea with additional troops (primarily Australian) starting with the [[14th Brigade (Australia)|Australian 14th Brigade]] which embarked at Townsville on 15 May. ||| Significance ||| Situation in the South Pacific ||| +0 Battle of the Crater ||| Battle of Cold Harbor ||| During the Civil War, [[Petersburg, Virginia]], was an important railhead, where four railroad lines from the south met before continuing to [[Richmond, Virginia]], the capital of the Confederacy. Most of the supplies to Lee's army and to the city of Richmond funneled through this point. Consequently, the Union regarded it as the 'back door' to Richmond, without which defending the Confederate capital would be impossible. The result was the [[Siege of Petersburg]] (which was actually trench warfare rather than a true [[siege]]), in which the armies were aligned along a series of fortified positions and trenches more than {{convert|20|mi|km}} long, extending from the old [[Battle of Cold Harbor|Cold Harbor]] battlefield near Richmond to areas south of Petersburg. ||| Background ||| ||| +0 Battle of the Crater ||| Battle of Fredericksburg ||| Pleasants, a mining engineer from [[Pennsylvania]] in civilian life, proposed digging a long mine shaft underneath the [[Confederate States Army|Confederate]] lines and planting explosive charges directly underneath a fort (Elliott's Salient) in the middle of the Confederate First Corps line. If successful, this would not only kill all the defenders in the area, it would also open a hole in the Confederate defenses. If enough [[Union Army|Union]] troops filled the breach quickly enough and drove into the Confederate rear area, the Confederates would not be able to muster enough force to drive them out, and Petersburg might fall. Burnside, whose reputation had suffered from his 1862 defeat at the [[Battle of Fredericksburg]] and his poor performance earlier that year at the [[Battle of Spotsylvania Court House]], gave Pleasants the go-ahead. ||| Background ||| ||| +0 Battle of the Crater ||| Battle of Spotsylvania Court House ||| Pleasants, a mining engineer from [[Pennsylvania]] in civilian life, proposed digging a long mine shaft underneath the [[Confederate States Army|Confederate]] lines and planting explosive charges directly underneath a fort (Elliott's Salient) in the middle of the Confederate First Corps line. If successful, this would not only kill all the defenders in the area, it would also open a hole in the Confederate defenses. If enough [[Union Army|Union]] troops filled the breach quickly enough and drove into the Confederate rear area, the Confederates would not be able to muster enough force to drive them out, and Petersburg might fall. Burnside, whose reputation had suffered from his 1862 defeat at the [[Battle of Fredericksburg]] and his poor performance earlier that year at the [[Battle of Spotsylvania Court House]], gave Pleasants the go-ahead. ||| Background ||| ||| +0 Battle of the Crater ||| Siege of Petersburg ||| The '''Battle of the Crater''' was a battle of the [[American Civil War]], part of the [[Siege of Petersburg]]. It took place on July 30, 1864, between the [[Confederate States Army|Confederate]] [[Army of Northern Virginia]], commanded by [[General (CSA)|General]] [[Robert E. Lee]] and the [[Union Army|Union]] [[Army of the Potomac]], commanded by [[Major general (United States)|Maj. Gen.]] [[George G. Meade]] (under the direct supervision of the general-in-chief, [[Lieutenant General (United States)|Lt. Gen.]] [[Ulysses S. Grant]]). ||| ||| ||| +0 Battle of the Cumberland Gap (1863) ||| Battle of Chickamauga ||| Despite this, Burnside made a rapid advance on Knoxville. Many of the Confederates in eastern Tennessee had been withdrawn for the upcoming [[Battle of Chickamauga]], leaving only two brigades under General [[Sam Jones (Confederate Army officer)|Sam Jones]] (including Frazer's). Having successfully occupied Knoxville on September 2, Burnside could now return his attention to the Cumberland Gap. ||| Background ||| ||| +0 Battle of the Cumberland Gap (1863) ||| Siege of Vicksburg ||| Around 10:00 a.m. on September 9, Burnside sent a message to Frazer stating he now had a large enough force to carry the gap by storm. The large Union force, little combat experience and low morale (after news of [[Siege of Vicksburg|Vicksburg]] and [[Battle of Gettysburg|Gettysburg]]) all factored into Frazer's decision to surrender. Around 3:00 p.m. Frazer agreed to an [[unconditional surrender]] of all the Confederates guarding the Cumberland Gap. ||| Battle ||| ||| +0 Battle of the Cumberland Gap (June 1862) ||| Battle of Fort Donelson ||| In early 1862 the Union Army had met with great success in the [[Western Theater of the American Civil War|Western Theater]]. A string of victories at [[Battle of Mill Springs|Mill Springs]], [[Battle of Fort Donelson|Fort Donelson]] and [[Battle of Island Number Ten|Island No. 10]] had broken the Confederate defenses at several key points. ||| Background ||| ||| +0 Battle of the Downs ||| Second Anglo-Dutch War ||| Tromp was hailed as a hero on his return and was rewarded with 10,000 guldens, invoking the jealousy of De With who only got 1,000. De With wrote some anonymous [[pamphlet]]s painting Tromp as avaricious and himself as the real hero of the battle. With Spain gradually losing its dominant naval position, England weak, and France not yet in possession of a strong navy, the Dutch allowed their own navy to diminish greatly after a peace treaty was signed in 1648. So, with an ineffective naval administration and ships that were too light and too few in number, they were to find themselves at a serious disadvantage in their coming struggles with the English. However, they were able to maintain their large mercantile advantage over the English, entering into a period of increasing Dutch maritime superiority, both mercantile and naval, from the [[Second Anglo-Dutch War]], until the onset of the 18th century. ||| Aftermath ||| ||| +0 Battle of the Duisburg Convoy ||| Western Desert Campaign ||| The Axis forces engaged in the [[Western Desert Campaign|war against the British in North Africa]] were supplied across the Mediterranean. The [[Siege of Malta (World War II)|besieged island of Malta]] was a key British base in the Mediterranean from where the British were able to interdict Axis supplies to Libya. Allied aircraft and ships were sinking up to 60 percent of Axis shipping. ||| Background ||| ||| +0 Battle of the Dukla Pass ||| Slovak National Uprising ||| In summer 1944, [[Slovak National Uprising|Slovaks rebelled against the Nazis]] and the Czechoslovak government appealed to Soviets for help. On 31 August, Soviet marshal [[Ivan Konev]] was ordered to prepare plans for an offensive to destroy Nazi forces in Slovakia. The plan was to push through the old Slovak-Polish border in the [[Carpathian Mountains]] via the [[Dukla Pass]] near Svidník to penetrate into Slovakia proper. ||| Background ||| ||| +0 Battle of the Great Redan ||| Battle of Eupatoria ||| Britain, France and Ottomans invaded the Crimea and decided to destroy the Russian naval base at Sevastopol. They landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a 35-mile triumphal march to Sevastopol the capital of the Crimea, with 50,000 men. The Great Russian Redan (Bastion #3) was one of the large Russian fortifications that ringed the city of Sebastopol. The Redan was the centre of the defences the British forces were attacking. It became a symbol of the attempt to capture the city and eventually a symbol of its fall. ||| Background ||| ||| +0 Battle of the Grebbeberg ||| Battle of Zeeland ||| The East Front of Fortress Holland would never be attacked, as in the evening of 14 May 1940, the Dutch, after the [[Rotterdam Blitz|Bombardment of Rotterdam]] surrendered in all provinces except Zeeland, where they [[Battle of Zeeland|continued to resist]]. ||| Fall of the Netherlands ||| ||| +0 Battle of the Grebbeberg ||| Rotterdam Blitz ||| The East Front of Fortress Holland would never be attacked, as in the evening of 14 May 1940, the Dutch, after the [[Rotterdam Blitz|Bombardment of Rotterdam]] surrendered in all provinces except Zeeland, where they [[Battle of Zeeland|continued to resist]]. ||| Fall of the Netherlands ||| ||| +0 Battle of the Göhrde ||| Battle of Leipzig ||| The battle was the first victory over the French troops garrisoning Germany, and interrupted the link between XIII Corps under general Davout (with its headquarters in [[Hamburg]]) and Napoleon's main army (then in [[Saxony]]) and the French armies' supply-lines across Hanover from France to Magdeburg and Berlin. This result was critical for the outcome of the [[Battle of Leipzig]] soon afterwards. This was the first battle in which the newly developed [[Congreve Rocket]] had been successfully deployed in action. At the Battle of Leipzig, The Rocket Brigade, under Bogue and Strangways, would make a significant attack whilst attached to the Swedish Corps of Crown Prince Bernadotte. ||| Results ||| ||| +0 Battle of the Hook ||| Battle of the Samichon River ||| The Hook was defended on a fourth occasion immediately prior to the armistice by an [[Australia]]n infantry battalion, a [[New Zealand]] artillery regiment and two [[United States|American]] infantry regiments, supported by [[United Kingdom|British]] tanks, during the [[Battle of the Samichon River]]. ||| Aftermath ||| ||| +0 Battle of the Imjin River ||| Battle of Imjin River (1592) ||| :'' For the similarly named battle during the [[Japanese invasions of Korea (1592–1598)|Seven-Year War]], see [[Battle of Imjin River (1592)]]. ||| ||| ||| +0 Battle of the Imjin River ||| Battle of Kapyong ||| The section of the UN line where the battle took place was defended primarily by [[British Army|British forces]] of the [[29th Infantry Brigade (United Kingdom)|29th Infantry Brigade]], consisting of three British and one Belgian [[infantry]] [[battalion]]s ([[Belgian United Nations Command]]) supported by [[tank]]s and [[artillery]]. Despite facing a greatly superior enemy numerically, the brigade held its general positions for three days. When the units of the 29th Infantry Brigade were ultimately forced to fall back, their actions in the Battle of the Imjin River together with those of other UN forces, for example in the [[Battle of Kapyong]], had blunted the impetus of the Chinese offensive and allowed UN forces to retreat to prepared defensive positions north of Seoul, where the Chinese were halted. ||| ||| ||| +0 Battle of the Iron Triangle ||| 1975 Spring Offensive ||| Six weeks passed while the ARVN regrouped and reinforced its battered units before driving the VPA from its last foothold in the Triangle, Rach Bap. In the interim the southern Communist command received instructions from Hanoi to prepare for the [[1975 Spring Offensive|offensive strikes]] to begin at the end of the year. Withdrawing most of its units to base areas farther north, the enemy left behind only token forces. The Battle of the Iron Triangle was over. ||| ||| ||| +0 Battle of the Java Sea ||| Battle of Jutland ||| The battle was the largest surface ship engagement since the [[Battle of Jutland]] in 1916. ||| ||| ||| +0 Battle of the Java Sea ||| Battle of Sunda Strait ||| [[Allies of World War II|Allied]] navies suffered a disastrous defeat at the hand of the [[Imperial Japanese Navy]], on 27 February 1942, and in secondary actions over successive days. The [[American-British-Dutch-Australian Command]] (ABDACOM) Strike Force commander—Rear-Admiral [[Karel Doorman]]—was killed. The aftermath of the battle included several smaller actions around Java, including the smaller but also significant [[Battle of Sunda Strait]]. These defeats led to Japanese occupation of the entire [[Netherlands East Indies]]. ||| ||| ||| +0 Battle of the Lys (1918) ||| Operation Michael ||| The '''Battle of the Lys''' {{nowrap|(7–29 April 1918)}} also known as the '''Lys Offensive''', the '''Fourth Battle of Ypres''', the '''Fourth Battle of Flanders''', '''Operation Georgette''', {{lang-pt|Batalha de La Lys}} and {{lang-fr|3ème Bataille des Flandres}}, was part of the 1918 German offensive in [[Flanders]] during [[World War I]], also known as the [[Spring Offensive]]. It was originally planned by General [[Erich Ludendorff|Ludendorff]] as Operation ''George'' but was reduced to Operation ''Georgette'', with the objective of capturing [[Ypres]], forcing the British forces back to the channel ports and out of the war. In planning, execution and effects, Georgette was similar to (although smaller than) [[Operation Michael]], earlier in the [[Spring Offensive]]. ||| ||| ||| +0 Battle of the Lys (1918) ||| Spring Offensive ||| The '''Battle of the Lys''' {{nowrap|(7–29 April 1918)}} also known as the '''Lys Offensive''', the '''Fourth Battle of Ypres''', the '''Fourth Battle of Flanders''', '''Operation Georgette''', {{lang-pt|Batalha de La Lys}} and {{lang-fr|3ème Bataille des Flandres}}, was part of the 1918 German offensive in [[Flanders]] during [[World War I]], also known as the [[Spring Offensive]]. It was originally planned by General [[Erich Ludendorff|Ludendorff]] as Operation ''George'' but was reduced to Operation ''Georgette'', with the objective of capturing [[Ypres]], forcing the British forces back to the channel ports and out of the war. In planning, execution and effects, Georgette was similar to (although smaller than) [[Operation Michael]], earlier in the [[Spring Offensive]]. ||| ||| ||| +0 Battle of the Malta Convoy (1800) ||| Mediterranean campaign of 1798 ||| In May 1798, during the [[French Revolutionary Wars]], a French expeditionary force sailed from [[Toulon]] under General [[Napoleon Bonaparte]]. [[Mediterranean campaign of 1798|Crossing the Mediterranean]], the force captured [[Malta]] in early June and continued southeastwards, making landfall in [[Egypt]] on 31 June. ||| Background ||| ||| +0 Battle of the Mediterranean ||| Allied invasion of Italy ||| *3 September, ''[[Operation Avalanche]]'', the start of the [[Allied invasion of Italy]]. ||| Major Axis and Allied amphibious operations ||| 1943 ||| +0 Battle of the Mediterranean ||| Italian invasion of France ||| On 10 June 1940, [[Kingdom of Italy (1861–1946)|Italy]] declared war on Britain and [[French Third Republic|France]]. On the following day, [[Siege of Malta (World War II)#Initial Italian bombings|Italian bombers attacked Malta]] on what was to be the first of many raids. During this time, the ''Marine Nationale'' [[Italian invasion of France|shelled a number of targets on the northwestern coast of Italy]], in particular the port of [[Genoa]]. When [[Armistice with France (Second Compiègne)|France surrendered]] on 24 June, the Axis leaders allowed the new Vichy French regime to retain its naval forces. ||| History ||| First actions ||| +0 Battle of the Mediterranean ||| Pacific War ||| Outside of the [[Pacific War|Pacific]] theatre, the [[Mediterranean Sea|Mediterranean]] saw the largest conventional naval warfare actions during the conflict. In particular, Allied forces struggled to supply and retain the key naval and air base of [[Malta]]. ||| ||| ||| +0 Battle of the Mediterranean ||| Raid on Alexandria ||| Following the battle of Crete in the summer of 1941, the Royal Navy regained its ascendancy in the central Mediterranean in a series of successful convoy attacks, (including the [[Battle of the Duisburg Convoy|''Duisburg'' convoy]] and [[Battle of Cape Bon (1941)|Cap Bon]]), until the events surrounding the [[First Battle of Sirte]] and the [[Raid on Alexandria (1941)|Raid on Alexandria]] in December swung the balance of power towards the Axis. ||| History ||| Later actions ||| +0 Battle of the Mediterranean ||| Second Battle of El Alamein ||| The British re-established a substantial air garrison and offensive naval base on the island. With the aid of ''Ultra'', Malta's garrison was able to disrupt Axis supplies to North Africa immediately before the [[Second Battle of El Alamein]]. For the fortitude and courage of the Maltese people during the siege, the island was awarded the [[George Cross]]. ||| History ||| Malta ||| +0 Battle of the Mincio River (1814) ||| Battle of Leipzig ||| Following [[Napoleon]]'s defeat at the [[Battle of Leipzig]] in 1813, French armies retreated westwards in a bid to save the [[First French Empire|Empire]] from the main Allied thrust. However, the 1814 campaign involved other theaters besides France, and one of these was Northern Italy, which the Austrians were making another attempt to recover. [[Joachim Murat|Murat]], the King of Naples, had defected to the Allied side and was threatening the main French army under Napoleon's stepson, Eugène. An Austrian army commanded by Bellegarde advanced from the east and convinced Eugène that a battle was needed to eliminate one opponent before he could deal with the other. Since the Austrians were the more immediate threat, Eugène decided to make a stand on the [[Mincio River]]. ||| Strategic background ||| ||| +0 Battle of the Netherlands ||| Battle of Belgium ||| On the morning of 10 May 1940 the Dutch awoke to the sound of [[aircraft engine]]s roaring in the sky. Germany had commenced operation ''Fall Gelb'' and attacked the Netherlands, [[Battle of Belgium|Belgium]], [[Battle of France|France]] and [[German occupation of Luxembourg in World War II#Invasion|Luxembourg]], in the case of the Low Countries without a declaration of war given before hostilities; France was already at war. ||| Battle ||| 10 May ||| +0 Battle of the Netherlands ||| Phoney War ||| Britain and France declared war on Germany in 1939, following the [[German invasion of Poland]], but no major land operations occurred in Western Europe during the period known as the [[Phoney War]] in the winter of 1939–1940. During this time, the British and French built up their forces in expectation of a long war, and the Germans completed their conquest of Poland. ||| Background ||| ||| +0 Battle of the Nile ||| Battle of Santa Cruz de Tenerife (1797) ||| Nelson was a highly experienced officer who had been blinded in one eye during fighting in [[Corsica]] in 1794 and subsequently commended for his capture of two Spanish [[ships of the line]] at the [[Battle of Cape St. Vincent (1797)|Battle of Cape St. Vincent]] in February 1797. In July 1797, he lost an arm at the [[Battle of Santa Cruz de Tenerife (1797)|Battle of Santa Cruz de Tenerife]] and had been forced to return to Britain to recuperate. ||| Background ||| Mediterranean campaign ||| +0 Battle of the Nile ||| Mediterranean campaign of 1798 ||| The '''Battle of the Nile''' (also known as the '''Battle of Aboukir Bay'''; {{lang-fr|Bataille d'Aboukir}}; {{lang-arz|معركة أبي قير البحرية}}) was a major naval battle fought between the British [[Royal Navy]] and the Navy of the [[French First Republic|French Republic]] at [[Aboukir Bay]] on the Mediterranean coast off [[Egypt Eyalet|Egypt]] from 1 to 3 August 1798. The battle was the climax of a [[Mediterranean campaign of 1798|naval campaign]] that had ranged across the Mediterranean during the previous three months, as a large French convoy sailed from [[Toulon]] to [[Alexandria]] carrying an expeditionary force under then General [[Napoleon Bonaparte]]. In the battle, the British fleet, led by Rear-Admiral Sir [[Horatio Nelson, 1st Viscount Nelson|Horatio Nelson]], decisively defeated the French under Vice-Admiral [[François-Paul Brueys d'Aigalliers]]. ||| ||| ||| +0 Battle of the Nile ||| Siege of Acre (1799) ||| The battle reversed the strategic situation between the two nations' forces in the Mediterranean and entrenched the Royal Navy in the dominant position it would retain for the rest of the war. It also encouraged other European countries to turn against France, and was a factor in the outbreak of the [[War of the Second Coalition]]. Bonaparte's army was trapped in Egypt, and Royal Navy dominance off the Syrian coast contributed significantly to its defeat at the [[Siege of Acre (1799)|Siege of Acre]] in 1799 that preceded Bonaparte's return to Europe. Nelson, who had been wounded in the battle, was proclaimed a hero across Europe and was subsequently made [[Baron Nelson]], although he was privately dissatisfied with his rewards. His captains were also highly praised and would go on to form the nucleus of the legendary [[Nelsonic Band of Brothers]]. The legend of the battle has remained prominent in the popular consciousness, with perhaps the best-known representation being [[Felicia Hemans]]' 1826 poem ''[[Casabianca (poem)|Casabianca]]''. ||| ||| ||| +0 Battle of the Nile ||| War of the Second Coalition ||| The battle reversed the strategic situation between the two nations' forces in the Mediterranean and entrenched the Royal Navy in the dominant position it would retain for the rest of the war. It also encouraged other European countries to turn against France, and was a factor in the outbreak of the [[War of the Second Coalition]]. Bonaparte's army was trapped in Egypt, and Royal Navy dominance off the Syrian coast contributed significantly to its defeat at the [[Siege of Acre (1799)|Siege of Acre]] in 1799 that preceded Bonaparte's return to Europe. Nelson, who had been wounded in the battle, was proclaimed a hero across Europe and was subsequently made [[Baron Nelson]], although he was privately dissatisfied with his rewards. His captains were also highly praised and would go on to form the nucleus of the legendary [[Nelsonic Band of Brothers]]. The legend of the battle has remained prominent in the popular consciousness, with perhaps the best-known representation being [[Felicia Hemans]]' 1826 poem ''[[Casabianca (poem)|Casabianca]]''. ||| ||| ||| +0 Battle of the Paracel Islands ||| Second Sino-Japanese War ||| On July 3, 1938, the French, who had colonised [[Indochina]] in the 19th century, occupied the Paracel Islands. The [[Nationalist Government]] of China, then engaged in the [[Second Sino-Japanese War]], registered a formal protest. ||| Background ||| ||| +0 Battle of the Piave River ||| Eastern Front (World War I) ||| The Austrians, differently from their previous success at Caporetto and from the subsequent attempts to breakthrough on [[Monte Grappa]], did not prepare the attack as a pinpoint one, but as an all-out frontal attack, employing the entire residual strength of their army all along the front. The Austro-Hungarian formations were trained to employ the tactics developed by the Germans on the [[Western Front (World War I)|Western Front]] for the [[Spring Offensive|Operation Michael]] as Austrian officials, returning from the [[Eastern Front (World War I)|Eastern Front]], were extensively trained alongside their German counterparts. There were also innovations on the Italian side. Analyzing the defeat of Caporetto, the staff of Armando Diaz concluded that the main tactical causes of it were the lack of mobility of Italian units, caught in a too rigid defensive scheme, the too centralized command and control system, and the lack of depth of Italian defences, where too many soldiers were simply stuck on the frontline. The new schemes prepared for the battle led to the abolition of the [[Trench warfare|continuous entrenchment]] and in the development of a highly mobile defence system, in which even the smaller units were allowed to freely move between previously recognized strongpoints, independently decide to retreat or counterattack, or directly call the support of the artillery. Moreover, 13 divisions, equipped with 6000 trucks, were organized in a central reserve, ready to be sent where it was needed. ||| Prelude ||| ||| +0 Battle of the Piave River ||| Spring Offensive ||| Italy's defeat at Caporetto led to General [[Luigi Cadorna]]'s dismissal and General [[Armando Diaz]] replaced him as [[Chief of staff]] of the Italian Army. Diaz set up a strong defense line along the Piave. Up until this point in the war, the Italian army had been fighting alone against the [[Central Powers]]; with the defeat at Caporetto, [[France]] and [[United Kingdom of Great Britain and Ireland|Britain]] sent small reinforcements on the Italian front. These, besides accounting for less than a tenth of the Italian forces in theater, had however to be redirected for the major part to the [[Western Front (World War I)|Western Front]] as soon as the German [[Spring Offensive]] began in March 1918. ||| Prelude ||| ||| +0 Battle of the Piave River ||| Western Front (World War I) ||| Italy's defeat at Caporetto led to General [[Luigi Cadorna]]'s dismissal and General [[Armando Diaz]] replaced him as [[Chief of staff]] of the Italian Army. Diaz set up a strong defense line along the Piave. Up until this point in the war, the Italian army had been fighting alone against the [[Central Powers]]; with the defeat at Caporetto, [[France]] and [[United Kingdom of Great Britain and Ireland|Britain]] sent small reinforcements on the Italian front. These, besides accounting for less than a tenth of the Italian forces in theater, had however to be redirected for the major part to the [[Western Front (World War I)|Western Front]] as soon as the German [[Spring Offensive]] began in March 1918. ||| Prelude ||| ||| +0 Battle of the Plains of Abraham ||| Battle of Carillon ||| As the [[Seven Years' War]] entered its later stages through 1758 and 1759, French forces and colonies in northeastern North America came under renewed attacks from British armies. In 1758 after defeat in July at the [[Battle of Carillon]], the British took [[Siege of Louisbourg (1758)|Louisbourg]] in August, causing Atlantic Canada to fall into British hands, and opening the sea route to attack Quebec. [[Fort Frontenac]] fell to the British in the same month, costing the French supplies for the [[Ohio Valley]] campaign. When some of the [[Indigenous peoples of the Americas|Indian]] supporters of the French made peace with the British, France was forced to draw its troops back. French leadership, specifically Governor [[Pierre François de Rigaud, Marquis de Vaudreuil-Cavagnal|de Vaudreuil]] and General [[Louis-Joseph de Montcalm|Montcalm]], were unsettled by the British successes. However, Quebec was still able to protect itself as the British prepared a three-pronged attack for 1759. ||| Overview ||| ||| +0 Battle of the Plains of Abraham ||| Siege of Louisbourg (1758) ||| As the [[Seven Years' War]] entered its later stages through 1758 and 1759, French forces and colonies in northeastern North America came under renewed attacks from British armies. In 1758 after defeat in July at the [[Battle of Carillon]], the British took [[Siege of Louisbourg (1758)|Louisbourg]] in August, causing Atlantic Canada to fall into British hands, and opening the sea route to attack Quebec. [[Fort Frontenac]] fell to the British in the same month, costing the French supplies for the [[Ohio Valley]] campaign. When some of the [[Indigenous peoples of the Americas|Indian]] supporters of the French made peace with the British, France was forced to draw its troops back. French leadership, specifically Governor [[Pierre François de Rigaud, Marquis de Vaudreuil-Cavagnal|de Vaudreuil]] and General [[Louis-Joseph de Montcalm|Montcalm]], were unsettled by the British successes. However, Quebec was still able to protect itself as the British prepared a three-pronged attack for 1759. ||| Overview ||| ||| +0 Battle of the Pyrenees ||| Battle of Maya ||| The Battle of the Pyrenees involved several distinct actions. On 25 July, Soult and two French corps fought the reinforced [[4th Infantry Division (United Kingdom)|British 4th Division]] and a Spanish division at the [[Battle of Roncesvalles (1813)|Battle of Roncesvalles]]. The Allied force successfully held off all attacks during the day, but retreated from the [[Roncevaux Pass|Roncesvalles Pass]] that night in the face of overwhelming French numerical superiority. Also on the 25th, a third French corps severely tried the [[2nd Infantry Division (United Kingdom)|British 2nd Division]] at the [[Battle of Maya]]. The British withdrew from the Maya Pass that evening. Wellington rallied his troops a short distance north of Pamplona and repelled the attacks of Soult's two corps at the [[Battle of Sorauren]] on 28 July. ||| ||| ||| +0 Battle of the Pyrenees ||| Battle of Roncesvalles (1813) ||| The Battle of the Pyrenees involved several distinct actions. On 25 July, Soult and two French corps fought the reinforced [[4th Infantry Division (United Kingdom)|British 4th Division]] and a Spanish division at the [[Battle of Roncesvalles (1813)|Battle of Roncesvalles]]. The Allied force successfully held off all attacks during the day, but retreated from the [[Roncevaux Pass|Roncesvalles Pass]] that night in the face of overwhelming French numerical superiority. Also on the 25th, a third French corps severely tried the [[2nd Infantry Division (United Kingdom)|British 2nd Division]] at the [[Battle of Maya]]. The British withdrew from the Maya Pass that evening. Wellington rallied his troops a short distance north of Pamplona and repelled the attacks of Soult's two corps at the [[Battle of Sorauren]] on 28 July. ||| ||| ||| +0 Battle of the Pyrenees ||| Battle of Vitoria ||| After the decisive French defeat at the [[Battle of Vitoria]], Marshal Soult consolidated the remnants of four armies into a single force of 80,000 troops. Soult ordered [[General of Division]] [[Jean-Baptiste Drouet, Comte d'Erlon]] commanding one corps (21,000 men) to attack and secure the Maya Pass. General of Division [[Honoré Charles Reille|Honoré Reille]] was ordered by Soult to attack and seize the Roncesvalles Pass with his corps and the corps of General of Division [[Bertrand Clausel]] (40,000 men). Marshal Soult's plan was to relieve the siege at Pamplona first, then swing the army westward to relieve the siege at San Sebastián. ||| Background ||| ||| +0 Battle of the River Plate ||| Altmark Incident ||| Prisoners taken from merchant ships by ''Admiral Graf Spee'' who had been transferred to her supply ship ''Altmark'', were freed by a boarding party from the British destroyer {{HMS|Cossack|F03|6}}, in the [[Altmark Incident]] (16 February 1940)—whilst in [[Jøssingfjord]], at the time neutral [[Norway|Norwegian]] waters. Prisoners who had not been transferred to ''Altmark'' had remained aboard ''Graf Spee'' during the battle: they were released on arrival in Montevideo. ||| Aftermath ||| ||| +0 Battle of the River Plate ||| Phoney War ||| The German [[propaganda]] machine had reported that ''Admiral Graf Spee'' had sunk a heavy cruiser and heavily damaged two light cruisers while only being lightly damaged herself. ''Graf Spee''{{'}}s scuttling however was a severe embarrassment and difficult to explain on the basis of publicly available facts. The battle was a major propaganda victory for the British during the [[Phoney War]], as the damage to ''Ajax'' and ''Achilles'' was not sufficient to reduce their fighting efficiency, while ''Exeter'', as badly damaged as she was, was able to reach the Falkland Islands for emergency repairs, before returning to [[HMNB Devonport|Devonport]] for a 13-month refit, thus enhancing the reputation of [[First Lord of the Admiralty]] [[Winston Churchill]]. ||| Aftermath ||| ||| +0 Battle of the Ruhr ||| World War II ||| The '''Battle of the Ruhr''' of 1943 was a 5-month long [[strategic bombing during World War II|campaign of strategic bombing]] during [[World War II|the Second World War]] against the [[Nazi Germany]] [[Ruhr Area]], which had coke plants, steelworks, and [[Oil Campaign of World War II|10 synthetic oil plants]]. The campaign bombed twenty-six major [[Combined Bomber Offensive]] targets. ||| ||| ||| +0 Battle of the Saintes ||| Battle of Trafalgar ||| As a result of the battle naval warfare changed along the tactical lines employed and would be used again by the British, including in the all-important [[Battle of Trafalgar]], where Admiral [[Horatio Nelson]] defeated [[Napoleon]]'s fleet using similar tactics. ||| Aftermath ||| ||| +0 Battle of the Saintes ||| Great Siege of Gibraltar ||| Following the Franco-American [[Siege of Yorktown|victory at Yorktown]] the previous year, and the [[Second Rockingham Ministry|change of Government]] in England, peace negotiations between Britain, the American colonies, France and Spain had begun in early 1782. The Battle of the Saintes transferred the strategic initiative to the British, with the most likely further military action being an attack on the French sugar islands, and the French, in particular, were consequently inclined to ameliorate their terms. Britain's dominance at sea was reasserted and it also became clear to the Americans that they could look forward to less French support in the future. The [[Great Siege of Gibraltar|Siege of Gibraltar]] exacerbated this, when later in the year the defeat of the huge Franco-Spanish assault and the subsequent relief by [[Richard Howe, 1st Earl Howe|Richard Howe]] led to the lifting of the siege in February 1783. Initial articles of peace were [[Peace of Paris (1783)|signed in July]], with a [[Treaty of Paris (1783)|full treaty]] in September 1783. ||| Aftermath ||| ||| +0 Battle of the Scheldt ||| Battle of Moerbrugge ||| An earlier failed attempt by the Canadian 4th Armoured Division at [[Battle of Moerbrugge|Moerbrugge]] had demonstrated the challenge they faced. In addition to the formidable German defences on both the Leopold Canal and the [[Schipdonk Canal]], much of the approach area was flooded. ||| Campaign ||| Operation Switchback ||| +0 Battle of the Scheldt ||| Battle of the Bulge ||| At the end of the five-week offensive, the Canadian First Army had taken 41,043 German prisoners. After the first ship arrived on November 28, [[convoy]]s started bringing a steady stream of supplies to the continent, which began to reenergize the stalled [[Allied advance from Paris to the Rhine]]. Germany recognized the importance of the Allies having a deep water port, so in an attempt to destroy it, or at least disrupt the flow of supplies, the German military fired more [[V-2 rocket|V-2 ballistic missiles]] at Antwerp than any other city. Nearly half of the V-2s launched during the war were fired at Antwerp. The port of Antwerp was so strategically vital that, during the [[Battle of the Bulge]], one of the primary German objectives was to retake the city and its port. ||| Aftermath ||| Importance of the campaign ||| +0 Battle of the Scheldt ||| Operation Market Garden ||| Little was done about the blocked port of Antwerp during September because most of the strained Allied resources were allocated to [[Operation Market Garden]],{{citation needed|date=April 2014}} a bold plan for a single thrust into Germany that began on September 17. In the meantime, German forces in the Scheldt were able to deploy defensively and prepare for the expected advance. The first attacks occurred on September 13. ||| ||| ||| +0 Battle of the Seelow Heights ||| Battle in Berlin ||| The defensive line on the Seelow Heights was the last major defensive line outside Berlin. General Heinrici had said before the battle that the Seelow Heights could be held for only three or four days without reinforcements, which he did not have. From 19 April, the road to Berlin—{{convert|90|km|mi|abbr=on}} to the west—lay open. By 23 April, Berlin was fully encircled and the [[Battle in Berlin]] entered its last stage. Within two weeks, [[Adolf Hitler]] was dead and the [[End of World War II in Europe|war in Europe was effectively over]]. ||| Aftermath and analysis ||| ||| +0 Battle of the Seelow Heights ||| Battle of Berlin ||| This battle is often incorporated into the [[Battle of the Oder-Neisse]]. The [[Seelow Heights]] were where the most bitter fighting in the overall battle took place, but it was only one of several crossing points along the [[Oder]] and [[Lusatian Neisse|Neisse]] rivers where the Soviets attacked. The Battle of the Oder-Neisse was itself only the opening phase of the [[Battle of Berlin]]. ||| ||| ||| +0 Battle of the Severn ||| Maryland Toleration Act ||| Following the death of Leonard Calvert in 1647, Cecil Calvert named [[William Stone (Maryland governor)|William Stone]] as governor in 1649. In 1649, the colonial Assembly passed the 'Act Concerning Religion' (or the [[Maryland Toleration Act|Toleration Act]] as it is more commonly known), ensuring freedom of religion within Maryland. ||| Background ||| The settling of Providence ||| +0 Battle of the Sittang Bend ||| Battle of Sittang Bridge ||| The Japanese trapped in the Pegu Yomas prepared a massive break-out operation to rejoin [[Japanese Burma Area Army|Burma Area Army]] and escape into Thailand with them. The Sittang was unfordable and was therefore a significant military barrier, as it had been in 1942 during the first [[Battle of Sittang Bridge|Burma campaign]]. ||| Background ||| ||| +0 Battle of the Somme ||| Battle of Verdun ||| When the German Army began the [[Battle of Verdun]] on the [[Meuse]] on 21 February 1916, many French divisions intended for the Somme were diverted and the supporting attack by the British became the principal effort. The [[first day on the Somme]] (1 July) was a serious defeat for the German [[2nd Army (German Empire)|Second Army]], which was forced out of its first line of defence by the French [[Sixth Army (France)|Sixth Army]], from [[Foucaucourt-en-Santerre]] south of the Somme to [[Maricourt]] on the north bank and by the British [[Fourth Army (United Kingdom)|Fourth Army]] from Maricourt to the vicinity of the [[Albert, France|Albert]]–[[Bapaume]] road. The first day on the Somme was also the worst day in the history of the British Army, which had {{circa|57,470 casualties,}} mainly on the front between the Albert–Bapaume road and [[Gommecourt, Pas-de-Calais|Gommecourt]], where the attack was defeated and few British troops reached the German front line. The British Army on the Somme was a mixture of the remains of the pre-war regular army, the [[Territorial Force]] and the [[Kitchener's Army|Kitchener Army]], which was composed of [[Pals battalions]], recruited from the same places and occupations. ||| ||| ||| +0 Battle of the Somme ||| Hindenburg Line ||| The battle is notable for the importance of air power and the first use of the [[tank]]. At the end of the battle, British and French forces had penetrated {{convert|6|mi|km}} into German-occupied territory, taking more ground than any offensive since the [[First Battle of the Marne|Battle of the Marne]] in 1914. The Anglo-French armies failed to capture Péronne and were still {{convert|3|mi|km}} from [[Bapaume]], where the German armies maintained their positions over the winter. British attacks in the Ancre valley resumed in January 1917 and forced the Germans into local withdrawals to reserve lines in February, before the scheduled retirement to the {{lang|de|''Siegfriedstellung''}} ([[Hindenburg Line]]) began in March. The battle remains controversial over its necessity, significance and effect. ||| ||| ||| +0 Battle of the Somme ||| Order of battle for the Battle of the Somme ||| * [[Order of battle for the Battle of the Somme]] ||| See also ||| ||| +0 Battle of the Strait of Otranto (1940) ||| Battle of Taranto ||| The battle occurred when an [[Allies of World War II|Allied]] [[Squadron (naval)|squadron]] entered the Adriatic Sea looking for Italian naval targets. Although they did not know it at the time the squadron's real purpose was to help draw enemy attention from a major action against the main Italian fleet base at [[Battle of Taranto|Taranto]]. The Allied squadron was commanded by [[Vice Admiral]] Henry Pridham-Whippel in the [[light cruiser]] {{HMS|Orion|85|6}}, and included the light cruisers {{HMAS|Sydney|1934|6}} and {{HMS|Ajax|22|6}} and the destroyers {{HMS|Nubian|F36|6}} and {{HMS|Mohawk|F31|2}}. ||| Background ||| ||| +0 Battle of the Tagus ||| Battle of Grand Port ||| In spite of the French blockade and their undermining of its war effort against Liberals, the Portuguese government refused to meet French demands, and the treatment of the French prisoners even deteriorated. The French therefore decided to escalate the matter, and [[Henri de Rigny]], French Minister of the Navy, appointed rear-Admiral Baron [[Albin Roussin]] to a 6-sail of the line squadron. Roussin was a veteran of the [[Mauritius campaign of 1809–1811]], and had been honoured for his conduct at the [[Battle of Grand Port]]. ||| Background ||| ||| +0 Battle of the Tagus ||| July Revolution ||| The accession of King [[Miguel I of Portugal|Miguel I]] to the throne of Portugal and abolition of the [[Charter of 1826|Constitutional Charter]] had put the country under the rule of an absolutist monarch. Liberals challenged this usurpation, and the struggle of the [[Liberal Wars]] ensued. The government of Miguel I was hostile to France, and became even more so when the popular insurrection of the [[July Revolution]] deposited the absolutist Bourbon king [[Charles X of France|Charles X]], and established a [[constitutional monarchy]] in which [[Louis-Philippe of France|Louis-Philippe]] had become 'King of the French'. Miguel Refused to recognise the [[Monarchy of July]], government recognised his. ||| Background ||| ||| +0 Battle of the Tugela Heights ||| Bloody Sunday (1900) ||| On 12 February, Lieutenant-Colonel [[Julian Byng]] led a reconnaissance in force to Hussar Hill, a position southeast of Colenso. The position fell on 14 February to Colonel the [[Douglas Cochrane, 12th Earl of Dundonald|Earl of Dundonald]]'s mounted brigade, and 34 artillery pieces soon crowned Hussar Hill. With the support of the guns, Major-General [[Neville Lyttelton]]'s [[4th Infantry Division (United Kingdom)|4th Infantry Division]] struck to the northeast on 15 February. Cingolo Hill, to the northeast of Hussar Hill, fell next. On 18 February, while, hundreds of miles to the west, General [[Herbert Kitchener, 1st Earl Kitchener|Kitchener]]'s army was fruitlessly attacking [[Piet Cronjé|Piet Cronjé's]] surrounded army, an event known as [[Bloody Sunday (1900)|Bloody Sunday]], Major-General [[Henry J. T. Hildyard]]'s 2nd Brigade captured the {{convert|1000|ft|m}} height of Monte Cristo, and Major-General [[Geoffrey Barton]]'s 6th Brigade cleared Green Hill. The outflanked Boers abandoned Hlangwane and the south bank entirely on 19 February. Immediately, the British installed heavy artillery on the summit of Hlangwane. ||| Battle on the south bank ||| ||| +0 Battle of the Tugela Heights ||| Siege of Ladysmith ||| The '''Battle of Tugela (or Thukela) Heights''', consisted of a series of military actions lasting from 14 February through 27 February 1900 in which General Sir [[Redvers Buller]]'s British army forced [[Louis Botha]]'s Boer army to lift the [[Siege of Ladysmith]] during the [[Second Boer War]]. ||| ||| ||| +0 Battle of the Twin Tunnels ||| First and Second Battles of Wonju ||| A series of battles, including Twin Tunnels, the [[Battle of Chipyong-ni]], and the [[First and Second Battles of Wonju|Battle of Wonju]] between January and February 1951 marked a turning point in many ways for the entire Korea War. Importantly, these battles (especially Chipyong-ni on February 13–14, 1951) shaped the tactics that would replay throughout both Korea and Vietnam whereby well equipped isolated firebases, in communication by air and radio with regional divisional forces, held out against numerically superior light infantry formations. Eventually such tactics turned around the UN's disastrous retreat from the north into a stalemate that led to an [[s:Korean Armistice Agreement|Armistice]] two years later relatively close to the site of these important battles. ||| ||| ||| +0 Battle of the Wilderness ||| Battle of Chancellorsville ||| On May 4, 1864, the Army of the Potomac crossed the [[Rapidan River]] at three separate points and converged on the Wilderness Tavern, near the edge of the Wilderness of Spotsylvania, an area of more than {{convert|70|mi2|km2|0|abbr=on}} of [[Spotsylvania County, Virginia|Spotsylvania County]] and [[Orange County, Virginia|Orange County]] in central [[Virginia]]. Early settlers in the area had cut down the native forests to fuel blast furnaces that processed the iron ore found there, leaving only a secondary growth of dense shrubs. This rough terrain, which was virtually unsettled, was nearly impenetrable to 19th-century infantry and artillery maneuvers. A number of battles were fought in the vicinity between 1862 and 1864, including the bloody [[Battle of Chancellorsville]] in May 1863. ||| Disposition of forces and movement to battle ||| ||| +0 Battle of the Wilderness ||| Battle of Fort Sumter ||| During the [[American Civil War Centennial|Civil War Centennial]], the United States Post Office issued five postage stamps commemorating the 100th anniversaries of famous battles, as they occurred over a four-year period, beginning with the [[Battle of Fort Sumter]] Centennial issue of 1961. The [[Battle of Shiloh]] commemorative stamp was issued in 1962, the [[Battle of Gettysburg]] in 1963, the Battle of the Wilderness in 1964, and the [[Battle of Appomattox Court House|Appomattox]] Centennial commemorative stamp in 1965. ||| In popular culture ||| Commemorative postal stamps ||| +0 Battle of the Wilderness ||| Battle of Fredericksburg ||| Portions of the Wilderness battlefield are preserved as part of [[Fredericksburg and Spotsylvania National Military Park]], established in 1927 to memorialize the battlefields of [[Battle of Fredericksburg|Fredericksburg]], [[Battle of Chancellorsville|Chancellorsville]], [[Battle of Spotsylvania Court House|Spotsylvania Court House]], and the Wilderness. In addition to this land that has been protected by the National Park Service, several volunteer organizations have been active in preservation activities. ||| Battlefield preservation ||| ||| +0 Battle of the Wilderness ||| Battle of Gettysburg ||| During the [[American Civil War Centennial|Civil War Centennial]], the United States Post Office issued five postage stamps commemorating the 100th anniversaries of famous battles, as they occurred over a four-year period, beginning with the [[Battle of Fort Sumter]] Centennial issue of 1961. The [[Battle of Shiloh]] commemorative stamp was issued in 1962, the [[Battle of Gettysburg]] in 1963, the Battle of the Wilderness in 1964, and the [[Battle of Appomattox Court House|Appomattox]] Centennial commemorative stamp in 1965. ||| In popular culture ||| Commemorative postal stamps ||| +0 Battle of the Wilderness ||| Battle of Shiloh ||| During the [[American Civil War Centennial|Civil War Centennial]], the United States Post Office issued five postage stamps commemorating the 100th anniversaries of famous battles, as they occurred over a four-year period, beginning with the [[Battle of Fort Sumter]] Centennial issue of 1961. The [[Battle of Shiloh]] commemorative stamp was issued in 1962, the [[Battle of Gettysburg]] in 1963, the Battle of the Wilderness in 1964, and the [[Battle of Appomattox Court House|Appomattox]] Centennial commemorative stamp in 1965. ||| In popular culture ||| Commemorative postal stamps ||| +0 Battle of the Wilderness ||| Battle of Spotsylvania Court House ||| At dawn on May 6, Hancock attacked along the Plank Road, driving Hill's Corps back in confusion, but the [[First Corps, Army of Northern Virginia|First Corps]] of Lt. Gen. [[James Longstreet]] arrived in time to prevent the collapse of the Confederate right flank. Longstreet followed up with a surprise flanking attack from an unfinished railroad bed that drove Hancock's men back to the Brock Road, but the momentum was lost when Longstreet was wounded by his own men. An evening attack by Brig. Gen. [[John B. Gordon]] against the Union right flank caused consternation at Union headquarters, but the lines stabilized and fighting ceased. On May 7, Grant disengaged and moved to the southeast, intending to leave the Wilderness to interpose his army between Lee and Richmond, leading to the bloody [[Battle of Spotsylvania Court House]]. ||| ||| ||| +0 Battle of Öland ||| Battle of Fehrbellin ||| In 1672, French King [[Louis XIV]] launched an attack on the Dutch Republic, igniting the [[Franco-Dutch War]]. The attack was opposed by the Holy Roman Empire led by [[Leopold I, Holy Roman Emperor|Leopold I]]. In 1674, Sweden was pressured into joining the war by attacking the Republic's northern German allies. France promised to pay Sweden desperately needed war subsidies only on the condition that it moved in force on [[Brandenburg-Prussia|Brandenburg]]. A Swedish army of around 22,000 men under [[Carl Gustaf Wrangel]] advanced into Brandenburg in December 1674 and suffered a minor tactical defeat at the [[Battle of Fehrbellin]] in June 1675. Though not militarily significant, the defeat tarnished the reputation of near-invincibility that Sweden had enjoyed since the [[Thirty Years' War]] and emboldened its enemies. By September 1675, Denmark, the Dutch Republic, the Holy Roman Empire and [[Habsburg Spain|Spain]] were all joined in war against Sweden and its ally France. ||| Background ||| ||| +0 Battle of Öland ||| First Anglo-Dutch War ||| The [[First Anglo-Dutch War]] (1652–54) saw the development of the [[line of battle]], a tactic where ships formed a continuous line to fire [[broadside]]s at an enemy. Previously, decisive action in naval engagements had been achieved through boarding and melee, but after the middle of the 17th century tactical doctrine focused more on disabling or sinking an opponent through superior firepower from a distance. This entailed major changes in military doctrines, [[shipbuilding]], and professionalism in European navies from the 1650s onwards. ||| State of the fleets ||| ||| +0 Battle of Ölper (1809) ||| Battle of Wagram ||| Resisting this, Frederick William, equipped 2,000 troops at his own expense and offered them and his services to [[Francis II, Holy Roman Emperor|Emperor Franz I of Austria]] in the [[Treaty of Schönbrunn|Convention of Vienna]] on 25 February 1809. Due to their black uniform these troops were called the [[Black Brunswickers]]. After the [[Battle of Wagram]], [[Austria]] had made peace with Napoleon, Frederick William decided to pull his troops on their own through northern [[Germany]] to embark on the [[North Sea]] to [[England]] and on the side of England continue to struggle against Napoleon. After taking [[Halberstadt]] on 29 July, Black Brunswickers and their leader reached [[Braunschweig]]on 31 July. The troops were joyfully welcomed by the population, but on the morning following their arrival Frederick William received word that a 5,000-strong Westphalian Division commanded by [[Jean-Jacques Reubell|General Reubell]] was approaching from the north of the city. ||| History ||| ||| +0 Battle of Şarköy ||| Battle of Bulair ||| The '''Battle of Şarköy''' or '''Sarkoy operation''' ({{lang-bg|Битка при Шаркьой}}, {{lang-tr|Şarköy Çıkarması}}) took place between 9 and 11 February 1913 during the [[First Balkan War]] between [[Bulgaria]] and the [[Ottoman Empire]]. The Ottomans attempted a counter-attack, but were defeated by the [[Bulgarians]] at the Battles of [[Battle of Bulair|Bulair]] and Şarköy. ||| ||| ||| +0 Battle off Cape Palos ||| Battle of Cape Palos ||| :''For the 1938 battle of the Spanish Civil War, see [[Battle of Cape Palos]].'' ||| ||| ||| +0 Battle off Cape Palos ||| Second Barbary War ||| The '''Battle off Cape Palos''' was the last battle of the [[Second Barbary War]]. The battle began when an American squadron under [[Stephen Decatur]] attacked and captured an [[Regency of Algiers|Algerine]] [[brig]]. ||| ||| ||| +0 Battle off Horaniu ||| Battle of Vella Gulf ||| After the fall of Munda and their defeat in the [[Battle of Vella Gulf]], the Japanese had decided to evacuate their garrisons in the central Solomons. An evacuation convoy escorted by four destroyers ({{ship|Japanese destroyer|Sazanami|1931|2}}, {{ship|Japanese destroyer|Hamakaze||2}}, {{ship|Japanese destroyer|Isokaze||2}}, and {{ship|Japanese destroyer|Shigure||2}}) commanded by Rear Admiral [[Matsuji Ijuin]] set out from its staging base at Horaniu on the northern tip of Vella Lavella on 17 August to evacuate the island of [[Kolombangara]] to the east. ||| Background ||| ||| +0 Battle off Samar ||| American Civil War ||| Halsey was criticized for his decision to take TF 34 north in pursuit of Ozawa, and for failing to detach it when Kinkaid first appealed for help. A piece of U.S. Navy slang for Halsey's actions is 'Bull's Run', a phrase combining Halsey's newspaper nickname 'Bull' (in the U.S. Navy, he was known as 'Bill' Halsey) with an allusion to the [[First Battle of Bull Run|Battle of Bull Run]] in the [[American Civil War]]. ||| Criticism of Halsey ||| ||| +0 Battle off Samar ||| Battle of Leyte ||| The overall [[Empire of Japan|Japanese]] strategy at Leyte Gulf—a plan known as ''Shō-Go'' 1—called for Vice-Admiral [[Jisaburō Ozawa]]'s fleet—known as Northern Force—to lure the American 3rd Fleet away from the Allied [[Battle of Leyte|landings on Leyte]], using an apparently vulnerable force of Japanese carriers as bait. The [[Amphibious warfare|landing forces]]—stripped of air cover by the 3rd Fleet—would then be attacked from the west and south by Vice Admiral Takeo Kurita's Center Force, which would sortie from [[Brunei]], and Vice Admiral [[Shoji Nishimura]]'s Southern Force. Kurita's force consisted of five battleships—including {{Ship|Japanese battleship|Yamato||2}} and {{Ship|Japanese battleship|Musashi||2}}, the largest battleships ever built—escorted by cruisers and destroyers. Nishimura's flotilla included two battleships and would be followed by Vice Admiral [[Kiyohide Shima]] with three cruisers. ||| Background ||| ||| +0 Battle off Samar ||| Battle of the Coral Sea ||| Clifton Sprague's task unit lost two escort carriers: (''Gambier Bay'', to surface attack and ''St. Lo'', to ''kamikaze'' attack). Of the seven screening ships, fewer than half, two destroyers (''Hoel'' and ''Johnston'') and a destroyer escort (''Samuel B. Roberts'') were lost, as were several aircraft. The other four U.S. destroyers and escorts were damaged. For such a small task unit, well over a thousand Americans died, comparable to the losses suffered at the Allied defeat of the [[Battle of Savo Island]] off [[Guadalcanal campaign|Guadalcanal]] when four cruisers were sunk. It was also comparable to the combined losses of the 543 men and three ships at the [[Battle of the Coral Sea]], and 307 men and two ships at the [[Battle of Midway]]. ||| Aftermath ||| ||| +0 Battle off Samar ||| Charge of the Light Brigade ||| Halsey was infuriated (not recognizing the final phrase as padding, possibly chosen for the anniversary of the [[Charge of the Light Brigade]]). He threw his hat to the deck and began to curse in anger. ||| Battle ||| Seventh Fleet's calls for help ||| +0 Battle off Samar ||| First Battle of Bull Run ||| Halsey was criticized for his decision to take TF 34 north in pursuit of Ozawa, and for failing to detach it when Kinkaid first appealed for help. A piece of U.S. Navy slang for Halsey's actions is 'Bull's Run', a phrase combining Halsey's newspaper nickname 'Bull' (in the U.S. Navy, he was known as 'Bill' Halsey) with an allusion to the [[First Battle of Bull Run|Battle of Bull Run]] in the [[American Civil War]]. ||| Criticism of Halsey ||| ||| +0 Battle on Snowshoes ||| Battle of Carillon ||| Reports of casualties, and of the numbers of forces involved, starkly differed in this battle. Rogers' report of the event estimated the French-Indian force at 700, with one to two hundred casualties, and his accounts of the battle were doubted by a variety of commentators, as they were inconsistent with other accounts. A letter by Henry Pringle, written while held in captivity at Carillon, restored his reputation by clarifying the French advantage following the second ambush; Rogers went on to rebuild his companies and serve in the [[Battle of Carillon]] in July 1758. ||| Aftermath ||| ||| +0 Battles of Fort Budapest ||| Operation Badr (1973) ||| The '''Battles of Fort Budapest''' ({{lang-he|מעוז בודפשט}}) refer to two attempts by the [[Egyptian Army]] to capture Fort Budapest, part of the [[Bar Lev Line]] during the [[Yom Kippur War]]. The first attempt took place at noon on October 6, 1973 with the start of [[Operation Badr (1973)|Operation Badr]], but failed due to [[Israeli Air Force]] intervention. The second attempt took place on October 15, at the onset of [[Operation Abiray-Lev]], the Israeli military operation to cross the [[Suez Canal]]. Despite significant setbacks caused by poor sea conditions, the second attack was on the verge of success when the Israeli Air Force once again intervened, and this, coupled with Israeli reinforcements, repelled the Egyptian attack. ||| ||| ||| +0 Battles of Khalkhin Gol ||| Battle of Moscow ||| The battle was the first victory for the soon-to-be-famous Soviet general Georgy Zhukov, earning him the first of his four ''[[Hero of the Soviet Union]]'' awards. The two other generals, [[Grigoriy Shtern]] and [[Yakov Smushkevich]] had important roles and were also awarded the Hero of the Soviet Union. They would, however, both be executed in the [[Purge of the Red Army in 1941|1941 Purges]]. Zhukov himself was promoted and transferred west to the Kiev district. The battle experience gained by Zhukov was put to good use in December 1941 at the [[Battle of Moscow]]. Zhukov was able to use this experience to launch the first successful Soviet counteroffensive against the German invasion of 1941. Many units of the Siberian and other trans-Ural armies were part of this attack, and the decision to move these divisions from Siberia was aided by the Soviet spy [[Richard Sorge]] in Tokyo, who was able to alert the Soviet government that the Japanese were looking south and were unlikely to launch another attack against Siberia in the immediate future. A year after defending Moscow against the advancing Germans, Zhukov planned and executed the Red Army's offensive at the [[Battle of Stalingrad]], using a technique very similar to Khalkhin Gol, in which the Soviet forces held the enemy fixed in the center, built up an undetected mass force in the immediate rear area, and launched a pincer attack on the wings to trap the enemy army. ||| Summary ||| Soviet assessment ||| +0 Battles of Khalkhin Gol ||| Battle of Stalingrad ||| The battle was the first victory for the soon-to-be-famous Soviet general Georgy Zhukov, earning him the first of his four ''[[Hero of the Soviet Union]]'' awards. The two other generals, [[Grigoriy Shtern]] and [[Yakov Smushkevich]] had important roles and were also awarded the Hero of the Soviet Union. They would, however, both be executed in the [[Purge of the Red Army in 1941|1941 Purges]]. Zhukov himself was promoted and transferred west to the Kiev district. The battle experience gained by Zhukov was put to good use in December 1941 at the [[Battle of Moscow]]. Zhukov was able to use this experience to launch the first successful Soviet counteroffensive against the German invasion of 1941. Many units of the Siberian and other trans-Ural armies were part of this attack, and the decision to move these divisions from Siberia was aided by the Soviet spy [[Richard Sorge]] in Tokyo, who was able to alert the Soviet government that the Japanese were looking south and were unlikely to launch another attack against Siberia in the immediate future. A year after defending Moscow against the advancing Germans, Zhukov planned and executed the Red Army's offensive at the [[Battle of Stalingrad]], using a technique very similar to Khalkhin Gol, in which the Soviet forces held the enemy fixed in the center, built up an undetected mass force in the immediate rear area, and launched a pincer attack on the wings to trap the enemy army. ||| Summary ||| Soviet assessment ||| +0 Battles of Khalkhin Gol ||| Pacific War ||| Despite all of the above, Japanese industry wasn't powerful enough to keep up with either the [[United States of America|United States]] or the Soviet Union, and Yamashita warned against going to war with them for this reason. His recommendations were not taken to heart, and the IJN eventually [[Pacific War|successfully pushed for war]] with the United States. In spite of their recent experience and military improvements, the Japanese would generally continue to underestimate their adversaries, emphasizing the courage and determination of the individual soldier as a way to make up for their lack of numbers and smaller industrial base. To varying degrees, the basic problems that faced them at Khalkhin Gol would haunt them again when the Americans and British recovered from their defeats of late 1941 and early 1942 and turned to the conquest of the Japanese Empire. ||| Summary ||| Japanese assessment and reforms ||| +0 Battles of Lexington and Concord ||| Boston Tea Party ||| In late 1774 the [[Suffolk Resolves]] were adopted to resist the enforcement of the [[Massachusetts Government Act|alterations made to the Massachusetts colonial government]] by the British parliament following the [[Boston Tea Party]]. The colonial assembly responded by forming an illegal Patriot provisional government known as the [[Massachusetts Provincial Congress]] and calling for local militias to train for possible hostilities. The rebel government exercised effective control of the colony outside of British-controlled Boston. In response, the British government in February 1775 declared Massachusetts to be in a state of rebellion. ||| ||| ||| +0 Battles of Lexington and Concord ||| Siege of Boston ||| The British forces began their return march to Boston after completing their search for military supplies, and more militiamen continued to arrive from neighboring towns. Gunfire erupted again between the two sides and continued throughout the day as the regulars marched back towards Boston. Upon returning to Lexington, Lt. Col. Smith's expedition was rescued by reinforcements under [[Brigadier General]] [[Hugh Percy, 2nd Duke of Northumberland|Hugh Percy]], a future duke of Northumberland known as Earl Percy. The combined force, now of about 1,700 men, marched back to Boston under heavy fire in a [[withdrawal (military)|tactical withdrawal]] and eventually reached the safety of [[Charlestown, Massachusetts|Charlestown]]. The accumulated militias blockaded the narrow land accesses to Charlestown and Boston, starting the [[Siege of Boston]]. ||| ||| ||| +0 Battles of Narvik ||| Invasion of Poland ||| Narvik provided an [[Ice-free port|ice-free harbour]] in the North Atlantic for [[Swedish iron mining during World War II|iron ore]] transported by the railway from [[Kiruna]] in [[Sweden]]. Both sides in the war had an interest in securing this iron supply for themselves and denying it to the enemy, setting the stage for one of the biggest battles since the [[Invasion of Poland]]. ||| ||| ||| +0 Battles of Narvik ||| Winter War ||| Prior to the German invasion, British forces had considered Narvik as a possible landing point for an expedition to help Finland in the [[Winter War]]. Such an expedition also had the potential of taking control of the Swedish mines and opening up the Baltic for the [[Allies of World War II|Allies]]. French politicians were also eager to start a second front as far away from France as possible. ||| ||| ||| +0 Battles of Wenden (1577–78) ||| Siege of Danzig (1577) ||| John III and Stephen Báthory formed an alliance against Ivan IV in December 1577, after Báthory had concluded the [[Siege of Danzig (1577)|Danzig War]]. ||| 1578 ||| ||| +0 Battles of the Isonzo ||| Eighth Battle of the Isonzo ||| *[[Eighth Battle of the Isonzo]] – 10–12 October 1916 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| Fifth Battle of the Isonzo ||| *[[Fifth Battle of the Isonzo]] – 9–17 March 1916 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| First Battle of the Isonzo ||| *[[First Battle of the Isonzo]] – 23 June–7 July 1915 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| Fourth Battle of the Isonzo ||| *[[Fourth Battle of the Isonzo]] – 10 November–2 December 1915 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| Ninth Battle of the Isonzo ||| *[[Ninth Battle of the Isonzo]] – 1–4 November 1916 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| Second Battle of the Isonzo ||| *[[Second Battle of the Isonzo]] – 18 July–3 August 1915 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| Sixth Battle of the Isonzo ||| *[[Sixth Battle of the Isonzo]] – 6–17 August 1916 ||| Number of battles ||| ||| +0 Battles of the Isonzo ||| Tenth Battle of the Isonzo ||| *[[Tenth Battle of the Isonzo]] – 12 May–8 June 1917 ||| Number of battles ||| ||| +0 Bavarian People's Uprising ||| Battle of Blenheim ||| By the outbreak of the [[War of the Spanish Succession]] in 1701, [[Maximilian II Emanuel, Elector of Bavaria]] had developed a plan for the Wittelsbachs to supplant the Habsburgs as [[Holy Roman Emperors]]. Allying himself with the [[France|French]] against the Habsburgs, his plans were frustrated by the disastrous defeat at the [[Battle of Blenheim]] in 1704. Following his defeat, he evacuated his court to the Netherlands, and left Bavaria to the victorious Austrians. While Bavaria was occupied by troops of the emperor [[Joseph I, Holy Roman Emperor]] the Bavarian people rose up against the Imperial occupation. ||| Background ||| ||| +0 Belgorod-Khar'kov Offensive Operation ||| Battle of Kiev (1943) ||| The operation began in the early hours of 3 August 1943, with the objective of following up the successful Soviet defensive effort in the [[Battle for Kursk]]. The offensive was directed against the German [[Army Group South]]'s northern flank. By August 23, 1943 the Soviet divisions of the Voronezh and Steppe Fronts had successfully seized [[Kharkiv|Kharkov]] (now [[Kharkiv]] behind the [[Dnieper River|Dnepr River]], and it set the stage for the [[Battle of Kiev (1943)|Battle of Kiev]] in autumn 1943. ||| Operation Polkovodets Rumyantsev ||| ||| +0 Belgorod-Khar'kov Offensive Operation ||| Battle of Kursk ||| The '''Belgorod-Khar'kov Offensive Operation''' or '''Fourth Battle of Kharkov''' (12 August 1943 - 23 August 1943) was an operation conducted as part of Operation Polkovodets Rumyantsev between the [[Red Army]] with 1,144,000 soldiers and the [[Wehrmacht]] with 200,000 soldiers around the city of [[Kharkiv#German occupation|Kharkov]] (now ''[[Kharkiv]]''){{note label|Note1|a|a}}. It was one of the operations that followed the [[Battle of Kursk]]. ||| ||| ||| +0 Big Sandy Expedition ||| Battle of Camp Wildcat ||| On Monday, October 21, 1861, troops that Nelson had assembled [[Camp Dick Robinson]] became engaged in a protracted fight with Zollicoffer's Confederates along the [[Wilderness Road]] at [[Battle of Camp Wildcat|Wildcat Mountain]]. The next morning Nelson was unaware of this when he ordered 1,600 men under Col. Leonard Harris to advance {{Convert|35|mi|km}} to West Liberty with two artillery pieces. At dawn Wednesday, Nelson was in front of Hazel Green with about 3,500 men and artillery. Thirty-eight of the 200 Confederates surrendered after a brief fight. Twelve miles (19 km) north at West Liberty 500-700 Confederates suffered a loss of 21 dead, 40 wounded, and 34 captured. The Federal loss was two wounded. While Nelson waited for his wagon trains to catch up, he consolidated his forces at Licking Station (Salyersville). The operation resumed on October 31 and on reaching Prestonsburg they found the supposed 'Gibraltar of Eastern Kentucky' abandoned. ||| West Liberty and Hazel Green ||| ||| +0 Bird's invasion of Kentucky ||| Battle of Fort Charlotte ||| No part of the plan proved successful. Campbell was preoccupied with the threat posed by [[Bernardo de Gálvez]], the governor of [[Spanish Louisiana]], who [[Battle of Fort Charlotte|captured Mobile]] in March 1780 (and then also [[Battle of Pensacola (1781)|captured Pensacola]] in 1781). The expedition against St. Louis [[Battle of St. Louis|was repulsed]]. Langlade withdrew his remaining forces when Illinois cavalry approached. ||| Background: British western campaign of 1780 ||| ||| +0 Biscay Campaign ||| Bombing of Durango ||| The Nationalist offensive started on 31 March and [https://es.wikisource.org/wiki/Octavillas_lanzadas_por_Mola_sobre_Bizkaia Mola threatened] to bomb the Basque cities and industries:'I have decided to terminate rapidly the war in the north: those not guilty of assassinations and who surrender their arms will have their lives and property spared. But, if submission is not immediate, I will raze all Vizcaya to the ground, beginning with the industries of war.'. The same day the [[Condor Legion]] bombed the town of [[Bombing of Durango|Durango]], there were 250 civilian deaths. On 1 April the Colonel [[Camilo Alonso Vega]] captured the mountains of Maroto, Albertia and Jarindo, and the Navarrase troops attacked the town of [[Ochandiano]] and encircled the Basque troops in it. ||| The offensive ||| ||| +0 Biscay Campaign ||| Huesca Offensive ||| The Republican government tried to send fighters to the Basque country across France, but the French government returned the aircraft after confiscate its machine guns. The commander of the ''[[Spanish Republican Air Force]]'', [[Hidalgo de Cisneros]], decided to send 50 fighters and bombers to the Basque country, across the Nationalist held territory, 45 reached Bilbao. Meantime, the bad weather stopped again the Nationalist offensive, a new shipment of weapons (55 antiaircraft guns, 30 cannons and two squadrons of ''[[Chatos]]''), reached Bilbao, and the General [[Mariano Gámir Ulíbarri|Gámir]] was sent to Biscay in order to organize the defense of Bilbao and to replace Llano de la Encomienda. The Republican government launched two offensives in [[Segovia Offensive|Segovia]] and [[Huesca Offensive|Huesca]] to halt the Nationalist offensive against Bilbao but both failed. ||| The fall of Bilbao ||| ||| +0 Biscay Campaign ||| Segovia Offensive ||| The Republican government tried to send fighters to the Basque country across France, but the French government returned the aircraft after confiscate its machine guns. The commander of the ''[[Spanish Republican Air Force]]'', [[Hidalgo de Cisneros]], decided to send 50 fighters and bombers to the Basque country, across the Nationalist held territory, 45 reached Bilbao. Meantime, the bad weather stopped again the Nationalist offensive, a new shipment of weapons (55 antiaircraft guns, 30 cannons and two squadrons of ''[[Chatos]]''), reached Bilbao, and the General [[Mariano Gámir Ulíbarri|Gámir]] was sent to Biscay in order to organize the defense of Bilbao and to replace Llano de la Encomienda. The Republican government launched two offensives in [[Segovia Offensive|Segovia]] and [[Huesca Offensive|Huesca]] to halt the Nationalist offensive against Bilbao but both failed. ||| The fall of Bilbao ||| ||| +0 Biscay Campaign ||| War in the North ||| On 22 March 1937, [[Francisco Franco|Franco]] decided to halt his offensive against Madrid and start an [[War in the North|offensive against the northern Republican held zone]]. The northern zone was politically divided and isolated from the central Republican zone. Furthermore, there was most of Spanish iron and coal and the chemical plants of Biscay. The Nationalists decided to start the occupation of the northern Republican zone with the conquest of the Biscay province. ||| Background ||| ||| +0 Bishops' Wars ||| Battle of Newburn ||| The Scots under Leslie and Montrose crossed the [[River Tweed]], and Charles' army retreated before them. In a short time, the invaders overran the whole of [[Northumberland]] and [[County Durham]] (see [[Battle of Newburn]]). Charles had to leave the two counties in Scots hands as a pledge for the payment of Scots expenses when he agreed to peace and signed the [[Treaty of Ripon]] in October 1640. The impoverished King had to summon another parliament to grant him the supplies which he needed to make that payment; this [[Long Parliament]] attacked his Government, impeaching (and eventually executing) his chief supporters, Strafford and [[William Laud|Laud]]. It was finally dissolved in 1648. ||| {{anchor|Second Bishops' War}}Second Bishops' War (1640) ||| ||| +0 Bishops' Wars ||| English Civil War ||| The '''Bishops' Wars''' ({{lang-la|Bellum Episcopale}}) were conflicts, both political and military, which occurred in 1639 and 1640 centred on the nature of the governance of the [[Church of Scotland]], and the rights and powers of the Crown. They constitute part of a larger political [[Wars of the Three Kingdoms|conflict across Scotland, England and Ireland]], and are often considered a prelude to the [[English Civil War]]s. They were so named due to the central conflict between [[Charles I of England|Charles I]], who favoured an [[Episcopal polity|episcopal]] system of church government for Scotland (that is, with bishops), and the desire of much of the polity of Scotland for a [[Presbyterian polity|presbyterian]] system of governance (without bishops). ||| ||| ||| +0 Black Hawk War (1865–72) ||| Bear River Massacre ||| The Native American version recognizes that the incident at Manti was not the single cause of the war but rather was the last of several events that had built up anger and frustration of the natives since 1849. Some of these events included the murder of Black Hawk's family at [[Battle Creek, Utah|Battle Creek]] 1849 (which John Lowry was involved in), the killing of 70 of his kin including beheadings at [[Fort Utah]] in 1850, the [[Bear River Massacre]] in 1863, and the 'Squaw Fight' Grass valley massacre in 1865. In addition there was a local drought in 1864, and the food shortage in Mormon settlements and the US Indian agent's failure to provide enough supplies to Utes on the new [[Uintah and Ouray Indian Reservation|Uintah Reservation]] brought many native bands to the brink of starvation. It is believed that Ute leaders, especially Chief Black Hawk, were aware that within a few years life as they knew it was about to end. Chief Black Hawk's personal agony was due to his people becoming increasingly famished, sick, and their alarming death rate. ||| Causes ||| Ute version of causes ||| +0 Black Power movement ||| 1983 United States Senate bombing ||| Over the 1980s the black power movement continued but after a decline in popularity and membership in organizations. The Black Liberation Army was active in the US until at least 1981 when a [[The Brink's Company|Brinks]] [[Brinks robbery (1981)|truck robbery]], conducted with support from former [[Weather Underground]] members [[Kathy Boudin]] and [[David Gilbert (activist)|David Gilbert]], left a guard and two police officers dead. Boudin and Gilbert, along with several BLA members, were subsequently arrested. The [[May 19th Communist Organization]] engaged in a bombing campaign in the 1980s. On the 28th of January, 1983, [[M19co]] bombed the federal building on Staten Island. On April 25, 1983, [[M19co]] committed a bombing at the National War College at [[Fort McNair]] in Washington, D.C.. November 7,saw the [[1983 United States Senate bombing|1983 US Senate Bombing]] by [[M19co]]. On August 18, 1983, [[M19co]] bombed Washington Navy Yard Computer Center. Later, on April 5, 1984, [[M19co]] bombed the Israeli Aircraft Industries Building. April 20, 1984 saw a [[M19co]] bombing at the Washington Navy Yard Officers Club. On November 3, 1984, two members of the M19CO, [[Susan Rosenberg]] and Timothy Blunk, were arrested at a mini-warehouse they had rented in [[Cherry Hill, New Jersey]]. Police recovered more than 100 blasting caps, nearly 200 sticks of dynamite, more than 100 cartridges of gel explosive, and 24 bags of blasting agent from the warehouse. On September 26, 1984, [[M19co]] bombed the South African consulate in the [[United States]]. The [[M19co]] alliance's last bombing was on February 23, 1985, at the Policemen's Benevolent Association in New York City. ||| History ||| Decline in the 1980s ||| +0 Black Saturday bushfires ||| Atomic bombings of Hiroshima and Nagasaki ||| It was estimated that the amount of energy released during the firestorm in the Kinglake-Marysville area was equivalent to the amount of energy that would be released by 1,500 [[Atomic bombings of Hiroshima and Nagasaki|Hiroshima-sized atomic bombs]]. However direct comparisons between explosives and fires in units of energy released is meaningless, as explosives release their energy almost instantly in a fast pulse, in contrast to a fire, which releases its [[energy]] far more slowly - over minutes, hours and days. ||| Overall statistics ||| ||| +0 Black Sea campaigns (1941–44) ||| Operation Barbarossa ||| The [[Black Sea Fleet]] was as surprised by [[Operation Barbarossa]] as the rest of the Soviet Military. The Axis forces in the Black Sea consisted of the [[Romanian Navy|Romanian]] and Bulgarian Navies together with German and Italian units transported to the area via rail and Canal. Although the Soviets enjoyed an overwhelming superiority in surface ships over the Axis, this was effectively negated by German air superiority and most of the Soviet ships sunk were destroyed by bombing. For the majority of the war, the Black Sea Fleet was commanded by [[Filipp Oktyabrskiy]], its other commander being [[Lev Vladimirsky]]. ||| ||| ||| +0 Blockade of Almeida ||| Siege of Almeida (1810) ||| In the '''Blockade of Almeida''' (14 April – 10 May 1811) a French garrison under [[Antoine François Brenier de Montmorand]] was surrounded by approximately 13,000 Anglo-Allied soldiers led by Generals [[Sir Alexander Campbell, 1st Baronet]] and [[Sir William Erskine, 2nd Baronet]]. After a French relief attempt failed, Brenier and his troops broke out at night after blowing up portions of the fortress. To the fury of the British army commander [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Viscount Wellington]], most of the French escaped due to their commander's single-minded determination, British fumbling, and remarkably good luck. The action took place during the [[Peninsular War]] portion of the [[Napoleonic Wars]]. [[Almeida, Portugal]] is located near the Spanish border about {{convert|300|km|mi|0}} northeast of [[Lisbon]]. The town was originally captured from a Portuguese garrison during the [[Siege of Almeida (1810)|1810 Siege of Almeida]]. ||| ||| ||| +0 Bloody Sunday (1921) ||| Bloody Sunday (1920) ||| At the time the day was referred to as 'Belfast's Bloody Sunday'. However the title of 'Bloody Sunday', is now more commonly given in Ireland to events in [[Bloody Sunday (1920)|Dublin in November 1920]] or [[Bloody Sunday (1972)|Derry in January 1972]]. ||| The events of July 1921 ||| ||| +0 Bloody Sunday (1921) ||| Bloody Sunday (1972) ||| At the time the day was referred to as 'Belfast's Bloody Sunday'. However the title of 'Bloody Sunday', is now more commonly given in Ireland to events in [[Bloody Sunday (1920)|Dublin in November 1920]] or [[Bloody Sunday (1972)|Derry in January 1972]]. ||| The events of July 1921 ||| ||| +0 Bolton Massacre ||| Battle of Marston Moor ||| The only remaining major Parliamentarian foothold in Lancashire was [[Manchester]], which was heavily defended and could not have been captured without a prolonged siege. Rupert was instructed by [[Charles I of England|King Charles]] to hasten to the relief of York which he relieved on 1 July. The next day, he offered battle to the besieging armies and was decisively defeated at the [[Battle of Marston Moor]]. He withdrew to Lancashire, and subsequently went south to rejoin the king. ||| Effects and subsequent events ||| ||| +0 Bolívar's campaign to liberate New Granada ||| Crossing of the Andes ||| '''Bolívar's campaign to liberate New Granada''' of 1819-1820 was part of the Colombian and [[Venezuelan War of Independence|Venezuelan wars of independence]] and was one of the many [[Military career of Simón Bolívar|military campaigns Simón Bolívar]] fought in them. Bolívar's victory in New Granada (today, [[Colombia]]) secured the eventual independence of northern South America. It provided Bolívar with the economic and human resources to complete his victory over the Spanish in [[Venezuela]] and Colombia. Bolívar's attack on New Granada is considered one of the most daring in military history, compared by contemporaries and some historians to Napoleon's [[Napoleon Crossing the Alps|crossing of the Alps]] in 1800 and José San Martín's [[Crossing of the Andes]] in 1817. ||| ||| ||| +0 Bombardment of Callao ||| Battle of San Juan and Chorrillos ||| Several times over the year that the blockade was effected, the Chilean fleet would sortie and bombard the city. This was frequently in response to a Peruvian provocation, such as the repeated successful deployment of disguised floating bombs. After the successful attacks on the [[Lima]] [[suburb]]s of [[Battle of San Juan and Chorrillos|San Juan]] and [[Battle of Miraflores|Miraflores]] it became apparent that the city was going to fall to the advancing [[Chilean army]]. The last Peruvian [[ironclad]], the [[Monitor (warship)|monitor]] [[BAP Atahualpa|''Atahualpa'']], as well as Peru's first [[submarine]], the ''[[Toro Submarino]]'' were scuttled to prevent capture on January 16, 1881 and Callao surrendered two days later. ||| The blockade ||| ||| +0 Bombardment of Callao ||| Chincha Islands War ||| ''This article is for the '''Bombardment of Callao''' during the [[War of the Pacific]], for the conflict during the [[Chincha Islands War]] see [[Battle of Callao]].'' ||| ||| ||| +0 Bombing of Darwin ||| Battle of Java (1942) ||| The '''Bombing of Darwin''', also known as the '''Battle of Darwin''', on 19 February 1942 was both the first and the largest single attack ever mounted by a foreign power on Australia. On this day, 242 [[Empire of Japan|Japanese]] aircraft attacked ships in [[Darwin, Northern Territory|Darwin's]] harbour and the town's two airfields in an attempt to prevent the [[Allies of World War II|Allies]] from using them as bases to contest the invasions of [[Battle of Timor|Timor]] and [[Battle of Java (1942)|Java]]. The town was only lightly defended and the Japanese inflicted heavy losses upon the Allied forces at little cost to themselves. The urban areas of Darwin also suffered some damage from the raids and there were a number of civilian casualties. ||| ||| ||| +0 Bombing of Darwin ||| Battle of Midway ||| The four IJN aircraft carriers (''Akagi'', ''Kaga'', ''Hiryū'', and ''Sōryū'') that participated in the Bombing of Darwin were later sunk during the [[Battle of Midway]] in June 1942. ||| Aftermath ||| Further Japanese raids ||| +0 Bombing of Darwin ||| Battle of Timor ||| The '''Bombing of Darwin''', also known as the '''Battle of Darwin''', on 19 February 1942 was both the first and the largest single attack ever mounted by a foreign power on Australia. On this day, 242 [[Empire of Japan|Japanese]] aircraft attacked ships in [[Darwin, Northern Territory|Darwin's]] harbour and the town's two airfields in an attempt to prevent the [[Allies of World War II|Allies]] from using them as bases to contest the invasions of [[Battle of Timor|Timor]] and [[Battle of Java (1942)|Java]]. The town was only lightly defended and the Japanese inflicted heavy losses upon the Allied forces at little cost to themselves. The urban areas of Darwin also suffered some damage from the raids and there were a number of civilian casualties. ||| ||| ||| +0 Bombing of Dresden in World War II ||| Battle of the Bulge ||| Early in 1945, after the German offensive known as the [[Battle of the Bulge]] had been exhausted — including the disastrous attack by the [[Luftwaffe]] [[Operation Bodenplatte|on New Year's Day]] involving elements of eleven combat wings of the Luftwaffe's day fighter force — and after the [[Red Army]] had launched their [[Silesian Offensives]] into pre-war German territory, the [[German Army (Wehrmacht)|German army]] was retreating on all fronts, but still resisting strongly. On 8 February 1945, the Red Army crossed the [[Oder River]], with positions just 70 km from [[Berlin]].{{sfn|Taylor|2005|p=262}} As the [[Eastern Front (World War II)|Eastern]] and [[Western Front (World War II)|Western Fronts]] were getting closer, the Western Allies started to consider how they might aid the Soviets with the use of the [[strategic bomber]] force. They planned to bomb Berlin and several other eastern cities in conjunction with the Soviet advance—to cause confusion among German troops and refugees, and hamper German reinforcement from the west. ||| Background ||| ||| +0 Bombing of Dresden in World War II ||| Lower Silesian Offensive ||| A special British Joint Intelligence Subcommittee report titled ''German Strategy and Capacity to Resist'', prepared for [[Winston Churchill]]'s eyes only, predicted that Germany might collapse as early as mid-April if the Soviets overran them at their eastern defences. Alternatively, the report warned that the Germans might hold out until November if they could prevent the Soviets from taking [[Silesia]]. Hence any assistance provided to the Soviets on the Eastern Front could shorten the war.{{sfn|Davis|2006|p=491}} At the time of bombing, the Soviets were conducting their [[Lower Silesian Offensive]]. ||| Background ||| ||| +0 Bombing of Durango ||| Biscay Campaign ||| On 31 March 1937, the [[National faction (Spanish Civil War)|Nationalist forces]], led by [[Emilio Mola]], started the [[Biscay Campaign|offensive]] against the [[Second Spanish Republic|Republican]] held, [[Biscay|Vizcaya]] Province. Mola said that: 'I have decided to terminate rapidly the war in the north: those not guilty of assassinations and who surrender their arms will have their lives and property spared. But, if submission is not immediate, I will raze all Vizcaya to the ground, beginning with the industries of war'. ||| Background ||| ||| +0 Bombing of Kure (July 1945) ||| Attack on Pearl Harbor ||| In his memoirs Admiral [[William Halsey, Jr.|Halsey]] gave four reasons for why he attacked Kure despite McCain's objections. Firstly, he believed that the attack would boost US morale and retaliate for the [[Attack on Pearl Harbor]] in December 1941, secondly it would ensure that the Japanese could not disrupt the planned [[Soviet Union|Soviet]] invasion of [[Hokkaido]], thirdly it would prevent Japan from using its fleet as a bargaining point to secure better peace terms and finally that he had been ordered to conduct the attack by his superior officer, [[Fleet Admiral (United States)|Fleet Admiral]] [[Chester W. Nimitz]]. ||| Prelude ||| ||| +0 Bombing of Rabaul (November 1943) ||| Battle of Empress Augusta Bay ||| On the first night the screening naval unit succeeded in defending the landing (the [[Battle of Empress Augusta Bay]]), but Admiral [[Mineichi Koga]] responded quickly. Within a few days the local cruiser force had been augmented with reinforcements from [[Chuuk State|Truk]]. The Japanese had been conserving their naval forces over the past year, but in the face of the imminent threat to [[Rabaul]] now committed substantial resources in hopes of crushing the newly landed force and its naval support. The force refueled at Rabaul in preparation for the coming battle. ||| Carrier attacks ||| ||| +0 Bombing of Rabaul (November 1943) ||| New Guinea campaign ||| Rabaul—on the island of [[New Britain]]—was one of two major ports in the Australian [[Territory of New Guinea]]. It was the main Japanese naval base for the [[Solomon Islands campaign]] and [[New Guinea campaign]]. [[Simpson Harbor]]—[[Battle of Rabaul (1942)|captured from Australian forces]] in February 1942—was known as 'the Pearl Harbor of the South Pacific' and was well defended by 367 [[Anti-aircraft warfare|anti-aircraft gun]]s and five airfields. ||| Background ||| ||| +0 Bombing of Singapore (1941) ||| Second Sino-Japanese War ||| Though the bombing caused only minor damage to the airfields, it stunned the [[British Far East Command]]. Despite intelligence reports of Japanese aircraft performance in the [[Second Sino-Japanese War]], the command did not believe Japan's air forces were capable of striking Singapore from airfields more than 600 miles away in Indochina. The raid came as a surprise to [[Lieutenant General]] [[Arthur Percival]], who 'hardly expected the Japanese to have any very long-range aircraft.' ||| Background ||| Aftermath ||| +0 Bombing of Singapore (1944–45) ||| Battle of Leyte Gulf ||| Following the Japanese defeat in the [[Battle of Leyte Gulf]] in late October 1944, the remnants of the IJN were concentrated into two groups of ships. One group returned to bases in the [[Seto Inland Sea|Inland Sea]], while the other was stationed at the Lingga Islands. ||| Background ||| ||| +0 Bombing of Singapore (1944–45) ||| South-East Asian theatre of World War II ||| Although XX Bomber Command began preparations to attack on Singapore Naval Base again on 6 February, this raid was cancelled on the third of the month by Admiral [[Louis Mountbatten, 1st Earl Mountbatten of Burma|Louis Mountbatten]], the commander of Allied forces in the [[South-East Asian theatre of World War II|Southeast Asian theatre]]. Mountbatten ordered that the naval installations at Singapore and Penang not be targeted as they would be needed by Allied forces following the projected liberation of Malaya and Singapore later in 1945. ||| Raids ||| Later bombing raids ||| +0 Bombing of Wewak ||| New Guinea campaign ||| By August 1943, the Fourth Air Army—which had been formed in June for the [[New Guinea campaign]]—had 130 operational aircraft. ||| Background ||| ||| +0 Bombing of Wiener Neustadt in World War II ||| Operation Tidal Wave ||| | 61 [[Consolidated B-24 Liberator|B-24 Liberators]] in the first [[Ninth Air Force]] raid on Austria (using bombers on loan from the 8AF surviving from [[Operation Tidal Wave]]) ||| Background ||| ||| +0 Bophuthatswana conflict (1994) ||| South African general election, 2014 ||| Whereas many Bantustan leaders and elites had entered their own parties into the first multiracial elections in 1994 or joined the ANC, Mangope and his supporters stayed out. However, in 1999 the [[United Christian Democratic Party]], a continuation of the ruling party in Bophuthatswana, entered elections. The party remained a political force in North West Province, where most of the former homeland lies, until the [[South African general election, 2014|2014 elections]], when it lost its last national and provincial seats. ||| Aftermath ||| ||| +0 Border War (1910–19) ||| Battle of Bear Valley ||| *Revolutionary [[Yaqui people|Yaqui]] [[Indigenous peoples of the Americas|native Americans]] established a base in [[Bear Valley, Arizona]], to store weapons intended to be smuggled into Mexico. When the base was discovered by the United States Army, [[Blondy Ryder]] of the 10th Cavalry was ordered to evict the rebel Yaquis. On 9 January, Ryder's patrol [[Battle of Bear Valley|attacked]] the Yaquis in a small half-hour engagement. The camp was destroyed, one Yaqui was killed, and nine others were captured. The United States Cavalry suffered no casualties. ||| Timeline ||| 1918 ||| +0 Boris Trajkovski ||| Bosnian War ||| Trajkovski died on 26 February 2004 in a plane crash en route to an economic conference in [[Mostar]], [[Bosnia and Herzegovina]]. The aircraft crashed in thick fog and heavy rain on a mountainside in southeastern [[Herzegovina]], near the villages of Huskovici and Rotimlja some eight miles (15 km) south-south-east of Mostar. Eight other people were also aboard but none survived the impact, which broke the aircraft into three pieces. It came down in an area that had been heavily mined during the [[Bosnian War]] of the 1990s, which significantly hampered the rescue and recovery efforts. ||| Death ||| ||| +0 Bosnian War ||| Markale massacres ||| On 5 February 1994 [[Sarajevo]] suffered its deadliest single attack during the entire [[Siege of Sarajevo|siege]] with the [[Markale massacres|first Markale massacre]], when a 120 millimeter mortar shell landed in the center of the crowded marketplace, killing 68 people and wounding another 144. On 6 February, UN [[Secretary-General of the United Nations|Secretary-General]] [[Boutros Boutros-Ghali]] formally requested NATO to confirm that future requests for air strikes would be carried out immediately. ||| Course of the war ||| 1994 ||| Markale massacre +0 Bosnian War ||| Operation Deliberate Force ||| The Serbs, although initially superior due to the weapons and resources provided by the JNA, eventually lost momentum as the Bosniaks and Croats allied themselves against the Republika Srpska in 1994 with the creation of the [[Federation of Bosnia and Herzegovina]] following the [[Washington agreement]]. After the Srebrenica and [[Markale massacre|Markale]] massacres, [[NATO]] intervened in 1995 with [[Operation Deliberate Force]] targeting the positions of the Army of the Republika Srpska, which proved key in ending the war. ||| ||| ||| +0 Bosnian War ||| Operation Deny Flight ||| On 25 May 1993 the [[International Criminal Tribunal for the former Yugoslavia]] (ICTY) was formally established by [[United Nations Security Council Resolution 827|Resolution 827]] of the United Nations Security Council. In April 1993, the United Nations Security Council issued [[United Nations Security Council Resolution 816|Resolution 816]], calling on member states to enforce a no-fly zone over Bosnia-Herzegovina. On 12 April 1993, NATO commenced [[Operation Deny Flight]] to enforce this no-fly zone. ||| Course of the war ||| 1993 ||| +0 Bosnian War ||| Siege of Dubrovnik ||| Five days later, the JNA attacked the Croat village of [[Ravno, Bosnia and Herzegovina|Ravno]] in eastern Herzegovina on their way to [[Siege of Dubrovnik|attack Dubrovnik]], and in the first days of October it leveled it, killing eight Croatian civilians. The objectives of the nationalists in Croatia were shared by Croat nationalists in Bosnia and Herzegovina. ||| Background ||| Beginning of the Yugoslav Wars ||| +0 Bougainville Campaign ||| Battle of the Hongorai River ||| Savige took two weeks to allow his forces to recuperate and resupply before restarting the drive on Buin. After repelling more futile Japanese attacks in the 17 April – 22 May [[Battle of the Hongorai River]], his men crossed the Hari and Mobai Rivers. However, shortly after reaching the Mivo River their advance came to a halt as torrential rain and flooding washed away many of the bridges and roads upon which the Australian line of communications was dependent. This rendered large scale infantry operations impossible for almost a month and it was not until late July and into early August that the Australians were able to resume patrolling across the Mivo River. ||| Australian phase: November 1944 – August 1945 ||| Australian offensive operations ||| Southern front +0 Bougainville Campaign ||| Guadalcanal Campaign ||| Unlike on [[Guadalcanal Campaign|Guadalcanal]] and the [[New Georgia Campaign|New Georgias]], the Allies could get no help in planning the invasion of Bougainville from British Commonwealth [[coastwatchers]] or Australian Army detachments. The Japanese had driven them off the island long before plans for Operation Cherry Blossom began. ||| Allied planning ||| Preparations for the landings ||| +0 Bougainville Campaign ||| Invasion of Buka and Bougainville ||| In March–April 1942, the Japanese [[Invasion of Buka and Bougainville|landed on Bougainville]] as part of their advance into the South Pacific. At the time, there was only a small Australian garrison on the island which consisted of about 20 soldiers from the [[1st Independent Company (Australia)|1st Independent Company]] and some [[coastwatchers]]. Shortly after the Japanese arrived, the bulk of the Australian force was evacuated by the Allies, although some of the coastwatchers remained behind to provide intelligence. while a naval anchorage was constructed at Tonolei Harbor near Buin on the southern coastal plain, along with anchorages on the Shortland Islands group. ||| Japanese occupation ||| ||| +0 Bougainville Campaign ||| New Georgia Campaign ||| Unlike on [[Guadalcanal Campaign|Guadalcanal]] and the [[New Georgia Campaign|New Georgias]], the Allies could get no help in planning the invasion of Bougainville from British Commonwealth [[coastwatchers]] or Australian Army detachments. The Japanese had driven them off the island long before plans for Operation Cherry Blossom began. ||| Allied planning ||| Preparations for the landings ||| +0 Break of Dromore ||| Glorious Revolution ||| While much of the Protestant population of east Ulster supported the claim of [[William III of England|William III]] to thrones of Ireland, England and Scotland, the rest of Ireland, including the [[Lord Deputy of Ireland]], [[Richard Talbot, 1st Earl of Tyrconnell]] and the army, supported [[James II of England|James II]]. As a result, war broke out in Ireland after James was deposed in the [[Glorious Revolution]]. At the start of the conflict, the Jacobites were left in control of two fortified positions at [[Carrickfergus]] and [[Charlemont, County Armagh|Charlemont]] in territory which was predominantly Williamite in sympathy. The local Williamites raised a militia and met in a council at [[Hillsborough, County Down|Hillsborough]]. They made an ineffective assault on Carrickfergus. However, this was easily beaten off and a local Catholic cleric named O'Hegarty reported that the Williamite were badly armed and trained. ||| Background ||| ||| +0 Break of Dromore ||| Siege of Derry ||| In the aftermath of the engagement, Alexander rode to [[Donaghadee]] and from there took ship to England. Hamilton's men looted and sacked Dromore. The following day, he took Hillsborough and Williamite council dissolved. Thousands of Protestants, fearing Jacobite and Catholic retribution, fled either to [[Coleraine]] in the west of Ulster, or to the ports and from there to England or Scotland. A number of survivors including [[Henry Baker (soldier)|Henry Baker]] went to [[Derry]], where they took part in the [[Siege of Derry|successful defence of the city]]. ||| Aftermath ||| ||| +0 Breakup of Yugoslavia ||| Bosnian War ||| During 1990, the communists lost power to [[separatist]] parties in the [[Elections in Yugoslavia|first multi-party elections]] held across the country, except in Serbia and Montenegro, where they were won by Milošević and his allies. Nationalist rhetoric on all sides became increasingly heated. In 1991, one by one republics proclaimed independence (only [[Serbia and Montenegro]] remained federated), but the status of Serb minorities outside Serbia was left unsolved. After a string of inter-ethnic incidents, the [[Yugoslav Wars]] ensued, first [[War in Croatia|in Croatia]] and then, most severely, in multi-ethnic [[Bosnian War|Bosnia and Herzegovina]]; the wars left long-term economic and political damage in the region. ||| ||| ||| +0 Breakup of Yugoslavia ||| Croatian War of Independence ||| With the [[Plitvice Lakes incident]] of late March/early April 1991, the [[Croatian War of Independence]] broke out between the Croatian government and the rebel ethnic Serbs of the [[SAO Krajina]] (heavily backed by the by-now Serb-controlled Yugoslav People's Army). On 1 April 1991, the [[SAO Krajina]] declared that it would secede from Croatia. Immediately after Croatia's declaration of independence, Croatian Serbs also formed the [[SAO Western Slavonia]] and the [[SAO of Eastern Slavonia, Baranja and Western Srijem]]. These three regions would combine into the [[Republic of Serbian Krajina]] (RSK) on 19 December 1991. ||| The beginning of the Yugoslav Wars ||| War in Croatia ||| +0 Breakup of Yugoslavia ||| Kosovo War ||| The [[Kosovo War]] started in 1996 and ended with the [[1999 NATO bombing of Yugoslavia]]; NATO had intervened to prevent widespread human rights abuses by Serb forces. Slobodan Milošević was [[Overthrow of Slobodan Milošević|overthrown]] in 2000. ||| Aftermath in Serbia and Montenegro ||| ||| +0 Breakup of Yugoslavia ||| Vukovar massacre ||| In Vukovar, ethnic tensions between Croats and Serbs exploded into violence when the Yugoslav army entered the town. The Yugoslav army and Serbian paramilitaries devastated the town in [[urban warfare]] and the destruction of Croatian property. Serb paramilitaries committed atrocities against Croats, killing over 200, and displacing others to add to those who fled the town in the [[Vukovar massacre]]. ||| The beginning of the Yugoslav Wars ||| War in Croatia ||| +0 British airborne operations in North Africa ||| Allied invasion of Sicily ||| For the next four months the 1st Para Brigade was used in a ground role, serving under several formations and advancing with Allied ground forces; it suffered heavy casualties on several occasions but also took large numbers of Axis prisoners. The brigade was transferred out of the front in mid-April 1943 and left to rejoin the [[1st Airborne Division (United Kingdom)|1st Airborne Division]] to train for [[Allied invasion of Sicily|Operation Husky]]. ||| ||| ||| +0 British airborne operations in North Africa ||| Battle of Fort Eben-Emael ||| The German military was one of the pioneers of the use of airborne formations, conducting several successful airborne operations during the [[Battle of France]] in 1940, including the [[Battle of Fort Eben-Emael]]. Despite the Prime Minister's desire to have 5,000 airborne troops within a short period, a number of problems were rapidly encountered by the War Office. Very few [[military glider]]s existed in Britain in 1940, and these were too light for military purposes, and there was also a shortage of suitable transport aircraft to tow gliders and carry paratroopers. On 10 August, Churchill was informed that although 3,500 volunteers had been selected to train as airborne troops, only 500 could currently begin training because of limitations in equipment and aircraft. ||| Background ||| Formation ||| +0 British airborne operations in North Africa ||| Operation Torch ||| When planning began for [[Operation Torch|the invasion of North Africa]] in 1942, it was decided to attach the 1st Parachute Brigade to the [[Allies of World War II|Allied forces]] taking part, as an American airborne unit was also to be used during the invasion. After a short period of training and being brought up to operational strength, the brigade was deployed to North Africa in November 1942. ||| ||| ||| +0 British invasions of the River Plate ||| Battle of Trafalgar ||| The [[Napoleonic Wars]] played a key role in the Rio de la Plata conflict and since the beginning of the conquest of the [[Americas]], England had been interested in the riches of the region. The [[Peace of Basel]] in 1795 ended the war between Spain and France. In 1796, by the [[Second Treaty of San Ildefonso]], Spain joined France in its war with Britain, thus giving Britain cause for military action against Spanish colonies. Britain judged it the right moment after the defeat of the Franco-Spanish fleet at the [[Battle of Trafalgar]]. This battle forced Spain to reduce to a minimum its naval communications with its American colonies. Historically, Buenos Aires had been relatively neglected by Spain, which sent most of its ships to the more economically important city of [[Lima]]. The last time when a significant Spanish military force had arrived in Buenos Aires was in 1784. ||| Background ||| ||| +0 British occupation of the Jordan Valley ||| Battle of Megiddo (1918) ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Battle of Nablus ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Battle of Nablus (1918) ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Battle of Sharon ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| First Transjordan attack on Amman ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Second Battle of Amman ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Sinai and Palestine Campaign ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Third Battle of Gaza ||| As a result of the benefits of the Rest Camp on the beach at Tel el Marakeb demonstrated before the [[Third Battle of Gaza]], Desert Mounted Corps established an Ambulance Rest Station in the grounds of a monastery at Jerusalem. This was staffed by personnel from the immobile sections of Corps ambulances. Tents and mattresses and food extras were provided along with games, amusements, and comforts supplied by the Australian Red Cross. The men sent to this rest camp, included those run down or debilitated after minor illnesses. The troops were housed in conditions which were as different as possible from the ordinary regimental life. ||| Tour of duty ||| Medical support ||| Rest camp +0 British occupation of the Jordan Valley ||| Third Transjordan attack ||| The '''occupation of the Jordan Valley''' by the [[Egyptian Expeditionary Force]] (EEF) began in February 1918 during the [[Sinai and Palestine Campaign]] of World War I. After the [[Capture of Jericho]] in February the [[Auckland Mounted Rifle Regiment]] began patrolling an area of the Jordan Valley near [[Jericho]] at the base of the road from [[Jerusalem]]. Towards the end of March the [[First Transjordan attack on Amman]] and the First Battle of Amman were launched from the Jordan Valley followed a few weeks later by the equally unsuccessful [[Second Transjordan attack on Shunet Nimrin and Es Salt]] at the end of April. During this time the occupation of the Jordan was fully established and continued through the summer of 1918. The occupation ended in September with the [[Battle of Megiddo (1918)|Battle of Megiddo]] which consisted of the [[Battle of Sharon]] and the [[Battle of Nablus (1918)|Battle of Nablus]]. The [[Third Transjordan attack]] and [[Second Battle of Amman]] were fought as part of the Battle of Nablus. ||| ||| ||| +0 British occupation of the Jordan Valley ||| Western Front (World War I) ||| The focus shifted to the [[Spring Offensive|German Spring Offensive]] launched by Ludendorff on the [[Western Front (World War I)|Western Front]], which began the same day as the First Transjordan attack on Amman, completely eclipsing its failure. The British front in Picardy held by 300,000 soldiers collapsed when powerful assaults were launched on both sides of the Somme by a force of 750,000, forcing Gough's Fifth Army back almost to Amiens. On one day; 23 March German forces advanced {{convert|12|mi|km}} and captured 600 guns; in total 1,000 guns and 160,000 suffered the worst defeat of the war. The British War Cabinet recognised at once that the overthrow of the Ottoman Empire must be at least postponed. ||| Background ||| ||| +0 Brusilov Offensive ||| Battle of Verdun ||| The Russians also initiated the disastrous [[Lake Naroch Offensive]] in the [[Vilnius|Vilno]] area, during which the Germans suffered only one-fifth as many casualties as the Russians. This offensive took place at French request, in the hope that the [[German Empire|Germans]] would transfer more units to the East after [[Battle of Verdun|their attack on Verdun]]. ||| Background ||| ||| +0 Brusilov Offensive ||| First Indochina War ||| Shock tactics were later to play a large role in the early German [[blitzkrieg]] offensives of [[World War II]] and the later attacks by the [[Soviet Union]] and the Western Allies to defeat Germany, and continued until the [[Korean War]] and the [[First Indochina War]]. This helped to end the era of mass trench warfare in all but a few nations, mostly of them localized in [[Africa]]. ||| Aftermath ||| ||| +0 Brusilov Offensive ||| Korean War ||| Shock tactics were later to play a large role in the early German [[blitzkrieg]] offensives of [[World War II]] and the later attacks by the [[Soviet Union]] and the Western Allies to defeat Germany, and continued until the [[Korean War]] and the [[First Indochina War]]. This helped to end the era of mass trench warfare in all but a few nations, mostly of them localized in [[Africa]]. ||| Aftermath ||| ||| +0 Brusilov Offensive ||| Western Front (World War I) ||| The irony was that other Russian commanders did not realize the potential of the tactics that Brusilov had devised. After seeing the success of these new tactics, similar tactics began to be used on the [[Western Front (World War I)|Western Front]] by the French and Germans - who utilized 'storm troopers' to great effect in the 1918 offensive - and slightly later the British, although given the higher force-space ratio in the West, much greater concentration of artillery fire was needed to make progress. ||| Aftermath ||| ||| +0 Brusilov Offensive ||| World War II ||| Shock tactics were later to play a large role in the early German [[blitzkrieg]] offensives of [[World War II]] and the later attacks by the [[Soviet Union]] and the Western Allies to defeat Germany, and continued until the [[Korean War]] and the [[First Indochina War]]. This helped to end the era of mass trench warfare in all but a few nations, mostly of them localized in [[Africa]]. ||| Aftermath ||| ||| +0 Brécourt Manor Assault ||| Utah Beach ||| As a result of the crash of a [[C-47 Skytrain|C-47]] having killed its company commander, [[Thomas Meehan III]], command of [[E Company, 506th Infantry Regiment (United States)|Company E]], 2nd [[Battalion]], [[506th Parachute Infantry Regiment]] of the [[101st Airborne Division]] defaulted to the company executive officer, [[First Lieutenant|1st Lt.]] [[Richard Winters]]. After linking up with his parent unit at the hamlet of Le Grand Chemin on the morning of 6 June 1944, Winters was ordered up front away from his company. With minimal instructions of '''There's fire along that hedgerow there. Take care of it,''' and no briefing, Winters found himself given the task of destroying a German [[artillery battery]]. The battery had initially been reported to be [[88 mm gun]]s firing onto [[causeway]] exit #2 leading off [[Utah Beach]] and disrupting landing forces of the [[U.S. 4th Infantry Division]] advancing inland on this route. Several other units had stumbled onto the German position earlier in the morning and had been repulsed. ||| Objective ||| ||| +0 Burke's Rangers ||| Battle of Carillon ||| *[[Battle of Carillon]] (1758) ||| ||| ||| +0 Burma Campaign ||| South-East Asian theatre of World War II ||| The '''Burma Campaign''' in the [[South-East Asian theatre of World War II]] was fought primarily between the forces of the [[British Empire]] and China, with support from the United States, against the forces of the [[Empire of Japan]], [[Thailand in World War II|Thailand]], and the [[Indian National Army]]. British Empire forces peaked at around 1,000,000 land, naval and air forces, and were drawn primarily from [[British Raj|British India]], with British Army forces, 100,000 East and West African colonial troops, and smaller numbers of land and air forces from several other Dominions and Colonies. The Burmese Independence Army was trained by the Japanese and spearheaded the initial attacks against British Empire forces. ||| ||| ||| +0 Burma Campaign 1944 ||| Battle of Imphal ||| The [[Battle of Imphal]] went badly for the Japanese during April, as their attacks from several directions on the Imphal plain failed to break the Allied defensive ring. At the start of May, Slim and Scoones began a counter-offensive against the Japanese 15th Division north of Imphal. Progress was slow. The monsoon had broken, and this made movement very difficult. Also, IV Corps was suffering some shortages. Although rations and reinforcements were delivered to Imphal by air, artillery ammunition was running short. However, the Japanese were at the end of their endurance. Neither their 31st Division nor 15th Division had received adequate supplies since the offensive began, and during the rains, disease rapidly spread among the starving Japanese troops. ||| Central front ||| Imphal ||| +0 Burma Campaign 1944 ||| Battle of the Admin Box ||| Unlike previous occasions on which this had happened, the Allied forces stood firm against the attack, and supplies were dropped to them by parachute. In the [[Battle of the Admin Box]] from 5 February to 23 February, the Japanese concentrated on XV Corps' Administrative Area, defended mainly by service troops, but they were unable to deal with tanks supporting the defenders. Troops from 5th Indian Division broke through the [[Ngakyedauk Pass]] to relieve the defenders of the box. Although battle casualties were approximately equal, the overall result was a heavy Japanese defeat. Their infiltration and encirclement tactics had failed to panic Allied troops, and as the Japanese were unable to capture enemy supplies, they themselves starved. ||| Southern front 1943/44 ||| ||| +0 Burning of Norfolk ||| Battles of Lexington and Concord ||| Tensions in the [[Kingdom of Great Britain|British]] [[Colony of Virginia]] were raised in April 1775 at roughly the same time that the hostilities of the [[American Revolutionary War]] broke out in the [[Province of Massachusetts Bay]] with the [[Battles of Lexington and Concord]]. Rebellious Whigs (also known as [[Patriot (American Revolution)|Patriot]]s) in control of the provincial assembly had begun recruiting troops in March 1775, leading to a struggle for control of the colony's military supplies. Under orders from [[John Murray, 4th Earl of Dunmore]], the [[List of colonial governors of Virginia|royal Governor of Virginia]], British marines [[Gunpowder Incident|removed gunpowder]] from the colonial storehouse in [[Williamsburg, Virginia|Williamsburg]] to a [[Royal Navy]] ship, alarming members of the colonial legislature and prompting a militia uprising. ||| Background ||| ||| +0 Byzantine–Seljuq wars ||| Siege of Nicaea ||| This was beneficial for the Crusaders as it meant that they did not have to garrison captured towns and lose troop strength whilst maintaining their supply lines. The Byzantines, in return, would supply the Crusaders with food in a hostile territory and Alexius' troops would act as a reserve to reinforce them in any dangerous situations. The Crusaders first set about attacking [[Siege of Nicaea|Nicaea]] on 6 May 1097. After this, a decisive victory at [[Battle of Dorylaeum (1097)|Dorylaeum]] all fell to the Crusaders and they even reached as far as Cilicia where they liberated the Armenians from Turkic rule, establishing a supply base. ||| Byzantium Survives: 1096–1118 ||| ||| +0 Caesar's Civil War ||| Battle of the Nile ||| ** February: Caesar and his ally Cleopatra defeat the forces of the rival [[Ptolemaic Egypt|Egyptian]] Queen [[Arsinoe IV]] in the [[Battle of the Nile (47 BC)|Battle of the Nile]], Ptolemy was killed, Caesar then relieved his besieged forces in [[Alexandria]] ||| Chronology ||| ||| +0 Cambodian Campaign ||| Kent State shootings ||| As foreseen by Secretary Laird, fallout from the incursion was quick in coming on the campuses of America's universities, as protests erupted against what was perceived as an expansion of the conflict into yet another country. On 4 May the unrest escalated to violence when [[Ohio Army National Guard|Ohio National Guardsmen]] shot and killed four unarmed students (two of whom were not protesters) during the [[Kent State shootings]]. Two days later, at the [[University at Buffalo]], police wounded four more demonstrators. On 8 May 100,000 protesters gathered in Washington and another 150,000 in San Francisco on only ten days notice. The [[Student Strike of 1970|student strike]] spread nationwide, involving more than four million students and 450 universities, colleges and high schools in mostly peaceful protests and walkouts. ||| Aftermath ||| ||| +0 Cambodian Civil War ||| Cambodian Campaign ||| On 29 April 1970, South Vietnamese and U.S. units unleashed a limited, multi-pronged [[Cambodian Campaign]] that Washington hoped would solve three problems: First, it would provide a shield for the American withdrawal from Vietnam (by destroying the PAVN logistical system and killing enemy troops) in Cambodia; second, it would provide a test for the policy of [[Vietnamization]]; third, it would serve as a signal to Hanoi that Nixon meant business. ||| Widening war (1970–1971) ||| North Vietnamese offensive in Cambodia ||| +0 Cambodian Civil War ||| Laotian Civil War ||| The conflict was part of the [[Indochina Wars|Second Indochina War]] (1959–1975) which also consumed the neighboring [[Kingdom of Laos]], South Vietnam, and North Vietnam individually referred to as the [[Laotian Civil War]] and the [[Vietnam War]] respectively. The Cambodian civil war led to the [[Cambodian Genocide]], one of the bloodiest in history. ||| ||| ||| +0 Cambodian–Vietnamese War ||| 6th National Congress of the Communist Party of Vietnam ||| To reengage with the international community, and to deal with the economic challenges brought by the changes in the Soviet Union and [[Eastern Europe]], Vietnamese leaders decided to embark on a series of reforms. At the [[6th National Congress of the Communist Party of Vietnam|6th National Party Congress]] in December 1986, newly appointed General Secretary of the VCP [[Nguyen Van Linh]] introduced a major reform known as [[Doi Moi]], the Vietnamese term for 'renovation', in order to fix Vietnam's economic problems. ||| {{Anchor|Invasion of Kampuchea}}Invasion of Kampuchea ||| Vietnamese reform and withdrawal ||| +0 Cambodian–Vietnamese War ||| Cambodian Civil War ||| The conclusion of the [[Cambodian Civil War]] and the [[Fall of Saigon]] in April 1975 immediately brought a new conflict between Vietnam and Kampuchea. Although both the North Vietnamese and the Khmer Rouge had previously fought side by side, the leaders of the newly created Democratic Kampuchea continued to view Vietnam with great suspicion, because they believed the Vietnamese Communists had never given up their dream of creating an Indochinese federation with Vietnam as the leader. ||| Diplomacy and military action ||| 1975–76, from fighting to building friendly relations ||| +0 Cambodian–Vietnamese War ||| Fall of Saigon ||| The conclusion of the [[Cambodian Civil War]] and the [[Fall of Saigon]] in April 1975 immediately brought a new conflict between Vietnam and Kampuchea. Although both the North Vietnamese and the Khmer Rouge had previously fought side by side, the leaders of the newly created Democratic Kampuchea continued to view Vietnam with great suspicion, because they believed the Vietnamese Communists had never given up their dream of creating an Indochinese federation with Vietnam as the leader. ||| Diplomacy and military action ||| 1975–76, from fighting to building friendly relations ||| +0 Cambodian–Vietnamese War ||| World War II ||| The communist movement in Cambodia and Vietnam began before [[World War II]] with the founding of the [[Indochinese Communist Party]] (ICP), almost exclusively dominated by the Vietnamese, originally meant to fight French colonial rule in [[Indochina]]. ||| Background ||| Rise of communism ||| +0 Camp Chapman attack ||| Iraq War ||| Al-Balawi's wife, Defne Bayrak, a journalist who lives in Istanbul, Turkey, has translated several Arabic books into Turkish, including ''Osama bin Laden: Che Guevara of the East''. She said the radicalization of al-Bawali started in 2003 because of the [[Iraq War]]. ||| Attack ||| Attacker ||| Statements from relatives +0 Campaign at the China–Burma border ||| Vietnam War ||| The communists were shocked by the shortcomings exposed in the campaign. The deputy chief-of-staff and the future Chinese defense minister in the 1980s, [[Zhang Aiping]], and the commander-in-chief of [[Kunming]] Military Region and the future Chinese defense minister in the 1990s, Qin Jiwei (秦基伟), were sent to lead a team to establish new training and tactics based on the experience gained in the campaign in order to correct the problem. As a result, the military of both the [[Kunming]] Military Region and [[Guangzhou]] Military Region was drastically upgraded and improved in very short period of time after massive efforts were implemented. The improved later proved to be vital when Chinese troops were deployed to North Vietnam and Laos during the Chinese involvement in [[Vietnam War]]. ||| Aftermath ||| ||| +0 Campaign at the China–Burma border ||| World War II ||| The '''Campaign along the China-Burma Border''' ({{zh|s=中缅边境作战|t=中緬邊境作戰}}) was a series of battles fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the communist victory. It is also dubbed by the [[Communist Party of China|communists]] as the '''Campaign to Provide Security for the China-Burma Border Surveying''' (中缅边境勘界警卫作战). ||| ||| ||| +0 Campaign in north-east France (1814) ||| Battle of Craonne ||| On 7 March Napoleon fell upon the advance guard of this force at the [[Battle of Craonne]] and drove it back upon Laon, where the [[Battle of Laon]] took place on 9 March. Napoleon was here defeated, and with only 30,000 men at his back,{{sfn|Maude|1911|p=232}} retreated to Soissons. ||| Campaign ||| Laon ||| +0 Campaign in north-east France (1814) ||| Battle of Laon ||| On 7 March Napoleon fell upon the advance guard of this force at the [[Battle of Craonne]] and drove it back upon Laon, where the [[Battle of Laon]] took place on 9 March. Napoleon was here defeated, and with only 30,000 men at his back,{{sfn|Maude|1911|p=232}} retreated to Soissons. ||| Campaign ||| Laon ||| +0 Campaign in north-east France (1814) ||| French invasion of Russia ||| Following defeats in the [[War of the Fourth Coalition|Wars of the Fourth]] and [[War of the Fifth Coalition|Fifth Coalition]], [[Prussia]] and [[Austria]] were forcibly allied with France during the [[French invasion of Russia|Russian Campaign]]. When this campaign resulted in the destruction of Napoleon's [[Grande Armée]], Prussia and Austria took advantage of this situation by forming a [[War of the Sixth Coalition|Sixth Coalition]] against France. The retreat from Russia turned into a new war on [[German campaign (Napoleonic Wars)|German soil]], where Napoleon was decisively defeated at [[Battle of Leipzig|Leipzig]]. Most European countries then turned against Napoleon and started to invade France. ||| Background ||| ||| +0 Campaign in north-east France (1814) ||| War of the Fifth Coalition ||| Following defeats in the [[War of the Fourth Coalition|Wars of the Fourth]] and [[War of the Fifth Coalition|Fifth Coalition]], [[Prussia]] and [[Austria]] were forcibly allied with France during the [[French invasion of Russia|Russian Campaign]]. When this campaign resulted in the destruction of Napoleon's [[Grande Armée]], Prussia and Austria took advantage of this situation by forming a [[War of the Sixth Coalition|Sixth Coalition]] against France. The retreat from Russia turned into a new war on [[German campaign (Napoleonic Wars)|German soil]], where Napoleon was decisively defeated at [[Battle of Leipzig|Leipzig]]. Most European countries then turned against Napoleon and started to invade France. ||| Background ||| ||| +0 Campaign in north-east France (1814) ||| War of the Fourth Coalition ||| Following defeats in the [[War of the Fourth Coalition|Wars of the Fourth]] and [[War of the Fifth Coalition|Fifth Coalition]], [[Prussia]] and [[Austria]] were forcibly allied with France during the [[French invasion of Russia|Russian Campaign]]. When this campaign resulted in the destruction of Napoleon's [[Grande Armée]], Prussia and Austria took advantage of this situation by forming a [[War of the Sixth Coalition|Sixth Coalition]] against France. The retreat from Russia turned into a new war on [[German campaign (Napoleonic Wars)|German soil]], where Napoleon was decisively defeated at [[Battle of Leipzig|Leipzig]]. Most European countries then turned against Napoleon and started to invade France. ||| Background ||| ||| +0 Campaign of Grodno ||| Battle of Fraustadt ||| The '''Campaign of Grodno''' was a plan developed by [[Johann Patkul]] and [[Otto Arnold von Paykull]] during the [[Charles XII invasion of Poland|Swedish invasion of the Polish–Lithuanian Commonwealth]], a part of the [[Great Northern War]]. Its purpose was to crush [[Charles XII|Charles XII's]] army with overwhelming force in a combined offensive of Russian and Saxon troops. The campaign, executed by [[Peter the Great|Peter I of Russia]] and [[Augustus II the Strong|Augustus II of Saxony]], began in July 1705 and lasted almost a year. In divided areas the allies would jointly strike the Swedish troops occupied in Poland, in order to neutralize the influence the Swedes had in the Polish politics. However, the Swedish forces under Charles XII successfully outmaneuvered the allies, installed a Polish king in favor of their own and finally won two decisive victories at [[Battle of Grodno (1706)|Grodno]] and [[Battle of Fraustadt|Fraustadt]] in 1706. This resulted in the [[Treaty of Altranstädt (1706)]] in which Augustus renounced his claims to the Polish throne, broke off his alliance with Russia, and established peace between Sweden and Saxony. ||| ||| ||| +0 Campaign to Suppress Bandits in Northeast China ||| Battle of Shanhai Pass ||| [[Communist Party of China|Communist]]s, like their nationalist counterparts, also made a grave miscalculation, but in comparison to the nationalists, the communists were very quick in correcting their miscalculation and avoided disasters nationalists had suffered. The communist miscalculation was only made in the initial stage when they first ventured into [[Northeast China]] after [[World War II]]: during the start of their [[Campaign to Establish Communist Base in Northeast China]], communists were eager to expand their force in region, but most of the communist force sent to [[Northeast China]] did not reach their final destination, especially after the [[Battle of Shanhai Pass]]. Although the communists managed to sent more than 270,000 troops to [[Northeast China]], most of them were contained in [[Rehe (city)|Rehe]], [[Chahar (province)|Chahar]], [[Suiyuan]] by the nationalist forces. Although most of these areas belonged to the communist [[Northeast China]] Military Region, the communist force contained there was not much of help in supporting their comrades in [[Manchuria]]. The problem of the lack of soldiers was further compounded by the need to enlist troops who knew the local area and as a result, the communists made into Manchuria made grave miscalculation in concentrate on expanding their numbers by enlist the help of local bandits. However, the economically deprived communists were obviously no match for the better conditioned nationalists who could provide more resources, and as a result, when the communists begun to abandon large cities in [[Northeast China]] in their retreat, most bandits that first temporarily sided with communists defected to the nationalists in battalions and regiments, or even in brigades. For example, in a single communist base to the north of [[Changchun]] alone, over 33,200 former bandit-turned communist troops turned against the communists by the end of December 1945. ||| Communist strategy ||| ||| +0 Campaign to Suppress Bandits in Northeast China ||| World War II ||| '''Campaign to Suppress Bandits in [[Northeast China]]''' (东北剿匪) was a counterinsurgency / counter [[guerrilla]] campaign fought between the bandits turned guerrillas allied with [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. ||| ||| ||| +0 Campaign to Suppress Bandits in Northwestern China ||| Korean War ||| From August 1950 to the end of 1952, further operations were launched against smaller bands of bandits which totaled over 10,000 in 212 bands. Most of these bandits operated in the border regions of provinces, and during the [[Korean War]], they became more active under the commands of airdropped [[Kuomintang|nationalist]] agents. From August 1950, the communist 6th Cavalry Division, 7th Infantry Division, and troops from communist [[Pingliang]] and [[Qingyang]] Military Sub-Districts totaling more than 15,000 begun their operation against the more than a dozen bands of bandits headed by chieftains including Guo Shuanzi (郭栓子), Ma Yanbiao (马彦彪), Ma Guoyuan (马国援) and others in Xiji (西吉), Longde (隆德), [[Helan Mountains]] and [[Hexi Corridor]] regions. After one year and eight months, the 2,000 bandits in the regions were annihilated. ||| Campaign ||| ||| +0 Campaigns of the Philippine–American War ||| Battle of San Jacinto ||| * [[Battle of San Jacinto (1899)|Battle of San Jacinto]] (November 11, 1899) – U.S. General [[Loyd Wheaton]] drives Filipinos out of San Jacinto, Luzon. ||| During Philippine–American War ||| {{anchor|San Fabian campaign}}San Fabian campaign (November 6–19, 1899) ||| Significant battles: San Fabian campaign +0 Campaigns of the Philippine–American War ||| First Battle of Bud Dajo ||| * [[First Battle of Bud Dajo]] (March 5-7, 1906) – One thousand [[Moro people|Moro]]s (including women and children) fortify themselves in an extinct volcanic crater on [[Mindanao]] and battle several hundred American soldiers, before virtually all are killed. ||| Post-war period ||| {{anchor|Jolo campaign}}Jolo campaign (May 1&ndash;24, 1905, 6 &ndash;March 8, 1906 and June 11&ndash;15, 1913) ||| Significant battles: Jolo campaign +0 Canada's Hundred Days ||| Battle of Amiens (1918) ||| '''Canada's Hundred Days''' was a series of attacks made along the [[Western Front (World War I)|Western Front]] by the [[Canadian Corps]] during the [[Hundred Days Offensive]] of World War I. Reference to this period as Canada's Hundred Days is due to the substantial role the [[Canadian Corps]] of the [[British First Army]] played in causing the defeat and/or retreat of the [[German Army (German Empire)|German Army]] in a series of major battles from [[Amiens]] to [[Mons]] which along with other Allied offensives ultimately led to Germany's final defeat and surrender. During this time, the [[Canadian Corps]] fought at [[Battle of Amiens (1918)|Amiens]], [[Second Battle of the Somme (1918)|Arras]], the [[Hindenburg Line]], the [[Battle of the Canal du Nord|Canal du Nord]], [[Bourlon Wood Memorial|Bourlon Wood]], [[Battle of Cambrai (1918)|Cambrai]], [[Denain]], [[Valenciennes]] and finally at [[Mons]], on the final day of the First World War. In terms of numbers, during those 96 days the Canadian Corps' four over-strength or 'heavy' [[Division (military)|divisions]] of roughly 100 000 men, engaged and defeated or put to flight elements of forty seven German divisions, which represented one quarter of the German forces faced by the Allied Powers fighting on the Western Front. ||| ||| ||| +0 Canada's Hundred Days ||| Battle of Mons ||| As the war neared its end, the Canadian Corps pressed on towards Germany and the final phase of the war for the Canadians was known as the ''''''Pursuit to Mons''''''. It was during these final thirty-two days of the war that the Canadians engaged the retreating Germans over about seventy kilometres in a running series of battles at [[Denain]] and [[Valenciennes]] in France and finally [[Mons]] in Belgium where they pushed the Germans out of the town on November 10–11. Mons was, ironically, where the British had engaged the German armies for the [[Battle of Mons|first time in battle]] in the Great War on August 23, 1914. As such, Mons is considered by some to be considered the place where the war both began and ended for the [[British Empire]]. ||| Battles ||| Pursuit to Mons ||| +0 Canada's Hundred Days ||| Battle of the Somme ||| The German offensives on the [[Western Front (WWI)|Western Front]] beginning with [[Spring Offensive|Operation Michael]] in March 1918 had petered out by July. The Germans, recognizing their untenable position, withdrew from the [[Marne]] towards the north. At this time, [[Ferdinand Foch]] ordered the Allies to return to the offensive, as the [[American Expeditionary Force|Americans]] were in France, increasing the morale of the Allies. The British Army had also been reinforced by large numbers of troops returning from battles in [[Sinai and Palestine Campaign|Palestine]] and [[Italian Campaign (World War I)|Italy]]. In addition, they received large numbers of replacements previously held back in Britain by Prime Minister [[David Lloyd George]]. Foch agreed on a proposal by [[Field Marshal]] [[Douglas Haig, 1st Earl Haig|Douglas Haig]], the commander of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF), to strike on the [[Somme River|Somme]], east of [[Amiens]] and southwest of the 1916 battlefield of the [[Battle of the Somme (1916)|Battle of the Somme]]. The Somme was chosen as a suitable site for the offensive for several reasons. As in 1916, it marked the boundary between the BEF and the French armies, in this case defined by the Amiens-Roye road, allowing the two armies to cooperate. The Canadian Corps was at this point part of the [[Fourth Army (United Kingdom)|British Fourth Army]] under [[Henry Rawlinson, 1st Baron Rawlinson|General Henry Rawlinson]]. ||| Background ||| ||| +0 Canada's Hundred Days ||| Hundred Days Offensive ||| '''Canada's Hundred Days''' was a series of attacks made along the [[Western Front (World War I)|Western Front]] by the [[Canadian Corps]] during the [[Hundred Days Offensive]] of World War I. Reference to this period as Canada's Hundred Days is due to the substantial role the [[Canadian Corps]] of the [[British First Army]] played in causing the defeat and/or retreat of the [[German Army (German Empire)|German Army]] in a series of major battles from [[Amiens]] to [[Mons]] which along with other Allied offensives ultimately led to Germany's final defeat and surrender. During this time, the [[Canadian Corps]] fought at [[Battle of Amiens (1918)|Amiens]], [[Second Battle of the Somme (1918)|Arras]], the [[Hindenburg Line]], the [[Battle of the Canal du Nord|Canal du Nord]], [[Bourlon Wood Memorial|Bourlon Wood]], [[Battle of Cambrai (1918)|Cambrai]], [[Denain]], [[Valenciennes]] and finally at [[Mons]], on the final day of the First World War. In terms of numbers, during those 96 days the Canadian Corps' four over-strength or 'heavy' [[Division (military)|divisions]] of roughly 100 000 men, engaged and defeated or put to flight elements of forty seven German divisions, which represented one quarter of the German forces faced by the Allied Powers fighting on the Western Front. ||| ||| ||| +0 Canada's Hundred Days ||| Operation Michael ||| The German offensives on the [[Western Front (WWI)|Western Front]] beginning with [[Spring Offensive|Operation Michael]] in March 1918 had petered out by July. The Germans, recognizing their untenable position, withdrew from the [[Marne]] towards the north. At this time, [[Ferdinand Foch]] ordered the Allies to return to the offensive, as the [[American Expeditionary Force|Americans]] were in France, increasing the morale of the Allies. The British Army had also been reinforced by large numbers of troops returning from battles in [[Sinai and Palestine Campaign|Palestine]] and [[Italian Campaign (World War I)|Italy]]. In addition, they received large numbers of replacements previously held back in Britain by Prime Minister [[David Lloyd George]]. Foch agreed on a proposal by [[Field Marshal]] [[Douglas Haig, 1st Earl Haig|Douglas Haig]], the commander of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF), to strike on the [[Somme River|Somme]], east of [[Amiens]] and southwest of the 1916 battlefield of the [[Battle of the Somme (1916)|Battle of the Somme]]. The Somme was chosen as a suitable site for the offensive for several reasons. As in 1916, it marked the boundary between the BEF and the French armies, in this case defined by the Amiens-Roye road, allowing the two armies to cooperate. The Canadian Corps was at this point part of the [[Fourth Army (United Kingdom)|British Fourth Army]] under [[Henry Rawlinson, 1st Baron Rawlinson|General Henry Rawlinson]]. ||| Background ||| ||| +0 Canada's Hundred Days ||| Second Battle of the Somme (1918) ||| '''Canada's Hundred Days''' was a series of attacks made along the [[Western Front (World War I)|Western Front]] by the [[Canadian Corps]] during the [[Hundred Days Offensive]] of World War I. Reference to this period as Canada's Hundred Days is due to the substantial role the [[Canadian Corps]] of the [[British First Army]] played in causing the defeat and/or retreat of the [[German Army (German Empire)|German Army]] in a series of major battles from [[Amiens]] to [[Mons]] which along with other Allied offensives ultimately led to Germany's final defeat and surrender. During this time, the [[Canadian Corps]] fought at [[Battle of Amiens (1918)|Amiens]], [[Second Battle of the Somme (1918)|Arras]], the [[Hindenburg Line]], the [[Battle of the Canal du Nord|Canal du Nord]], [[Bourlon Wood Memorial|Bourlon Wood]], [[Battle of Cambrai (1918)|Cambrai]], [[Denain]], [[Valenciennes]] and finally at [[Mons]], on the final day of the First World War. In terms of numbers, during those 96 days the Canadian Corps' four over-strength or 'heavy' [[Division (military)|divisions]] of roughly 100 000 men, engaged and defeated or put to flight elements of forty seven German divisions, which represented one quarter of the German forces faced by the Allied Powers fighting on the Western Front. ||| ||| ||| +0 Canada's Hundred Days ||| Sinai and Palestine Campaign ||| The German offensives on the [[Western Front (WWI)|Western Front]] beginning with [[Spring Offensive|Operation Michael]] in March 1918 had petered out by July. The Germans, recognizing their untenable position, withdrew from the [[Marne]] towards the north. At this time, [[Ferdinand Foch]] ordered the Allies to return to the offensive, as the [[American Expeditionary Force|Americans]] were in France, increasing the morale of the Allies. The British Army had also been reinforced by large numbers of troops returning from battles in [[Sinai and Palestine Campaign|Palestine]] and [[Italian Campaign (World War I)|Italy]]. In addition, they received large numbers of replacements previously held back in Britain by Prime Minister [[David Lloyd George]]. Foch agreed on a proposal by [[Field Marshal]] [[Douglas Haig, 1st Earl Haig|Douglas Haig]], the commander of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF), to strike on the [[Somme River|Somme]], east of [[Amiens]] and southwest of the 1916 battlefield of the [[Battle of the Somme (1916)|Battle of the Somme]]. The Somme was chosen as a suitable site for the offensive for several reasons. As in 1916, it marked the boundary between the BEF and the French armies, in this case defined by the Amiens-Roye road, allowing the two armies to cooperate. The Canadian Corps was at this point part of the [[Fourth Army (United Kingdom)|British Fourth Army]] under [[Henry Rawlinson, 1st Baron Rawlinson|General Henry Rawlinson]]. ||| Background ||| ||| +0 Canada's Hundred Days ||| Spring Offensive ||| The German offensives on the [[Western Front (WWI)|Western Front]] beginning with [[Spring Offensive|Operation Michael]] in March 1918 had petered out by July. The Germans, recognizing their untenable position, withdrew from the [[Marne]] towards the north. At this time, [[Ferdinand Foch]] ordered the Allies to return to the offensive, as the [[American Expeditionary Force|Americans]] were in France, increasing the morale of the Allies. The British Army had also been reinforced by large numbers of troops returning from battles in [[Sinai and Palestine Campaign|Palestine]] and [[Italian Campaign (World War I)|Italy]]. In addition, they received large numbers of replacements previously held back in Britain by Prime Minister [[David Lloyd George]]. Foch agreed on a proposal by [[Field Marshal]] [[Douglas Haig, 1st Earl Haig|Douglas Haig]], the commander of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF), to strike on the [[Somme River|Somme]], east of [[Amiens]] and southwest of the 1916 battlefield of the [[Battle of the Somme (1916)|Battle of the Somme]]. The Somme was chosen as a suitable site for the offensive for several reasons. As in 1916, it marked the boundary between the BEF and the French armies, in this case defined by the Amiens-Roye road, allowing the two armies to cooperate. The Canadian Corps was at this point part of the [[Fourth Army (United Kingdom)|British Fourth Army]] under [[Henry Rawlinson, 1st Baron Rawlinson|General Henry Rawlinson]]. ||| Background ||| ||| +0 Canadian federal election, 2008 ||| 2003 invasion of Iraq ||| On September 30, it was revealed by [[Bob Rae]] of the Liberal Party that on March 20, 2003, Stephen Harper had [[Plagiarism|plagiarized]] a speech that called for troops to be [[2003 invasion of Iraq|deployed to Iraq to assist the US invasion]] from Australian Prime Minister [[John Howard]], which Howard had delivered two days before, on March 18. {{cite news ||| Election campaign ||| Issues ||| Speech plagiarism +0 Capitulation of Dornbirn ||| Battle of Castelfranco Veneto ||| One Austrian brigade led by General-major Prince Louis Victor de Rohan became separated from Archduke John's army. Hoping to join [[Feldmarschall-Leutnant]] [[Johann von Hiller]]'s wing of Archduke Charles' army in Italy, Rohan looked to the south. Starting from [[Landeck]] in the [[County of Tyrol]] on 10 November, he marched to the south. Missing both Hiller and Charles, he determined to cut his way to [[Venice]]. Seizing [[Bolzano]] on 18 November, he then marched his brigade south to [[Trento]]. Turning east into the Val Sugana and south into the [[Brenta River]] valley, the Austrians surprised the French garrison of [[Bassano del Grappa|Bassano]] on 22 November. Marching hard, the Austrians reached [[Castelfranco Veneto]] the next evening. On 24 November, Rohan's epic march came to an end in the [[Battle of Castelfranco Veneto]] when his troops were trapped between the divisions of Generals of Division [[Jean Reynier]] and [[Laurent Gouvion Saint-Cyr]]. After a brief struggle, 4,400 Austrian soldiers surrendered. ||| Aftermath ||| ||| +0 Capitulation of Dornbirn ||| Ulm Campaign ||| The [[Ulm Campaign]] in October 1805 was catastrophic for Austria, with only the corps of [[Michael von Kienmayer]] and [[Franz Jellacic]] escaping envelopment and capture by the [[Grande Armée]] of [[Napoleon]]. While Kienmayer's troops withdrew east toward [[Vienna]], the only escape route open to Jellacic was to the south. As some of Napoleon's corps moved south into the [[Alps]] and the Austrian army of [[Archduke Charles, Duke of Teschen]] withdrew from Italy, Jellacic's force was cut off from the rest of Austria. In a remarkable trek, his cavalry set off for [[Bohemia]] and evaded capture. However, Augereau's late-arriving corps moved into the Vorarlberg and, after a number of clashes, trapped Jellacic's infantry at Dornbirn. The day before Jellacic's surrender, the French occupied the Austrian capital of Vienna, but the war would not be decided until the [[Battle of Austerlitz]] was fought on 2 December. ||| ||| ||| +0 Capitulation of Saldanha Bay ||| Battle of Blaauwberg ||| There were no further attacks on the Cape Colony during the war. The Treaty of Amiens in 1802 returned all captured Dutch colonies except [[British Ceylon|Ceylon]] to the Batavian Republic, including the Cape Colony.{{sfn|Chandler|1999 [1993]|page=10}} The peace was short-lived, and early in the [[Napoleonic Wars]] a second British expeditionary force was prepared. In 1806 the British seized the Cape Colony a second time following the [[Battle of Blaauwberg]].{{sfn|Gardiner|1997|page=65}} Cape Colony remained part of the [[British Empire]] until its independence as part of a unified [[South Africa]] in 1910. ||| Aftermath ||| ||| +0 Capitulation of Saldanha Bay ||| Invasion of the Cape Colony (1795) ||| The '''Capitulation of Saldanha Bay''' saw the surrender to the British [[Royal Navy]] of a Dutch expeditionary force sent to recapture the [[Dutch Cape Colony]] in 1796 during the [[French Revolutionary Wars]]. In 1794 the army of the [[First French Republic|French Republic]] overran the [[Dutch Republic]] which then became a French [[client state]], the [[Batavian Republic]]. Concerned by the threat posed to the trade routes between [[Kingdom of Great Britain|Great Britain]] and [[British India]] by the Dutch Cape Colony in Southern Africa, a British expeditionary force had landed at [[Simon's Town]] in June 1795 and forced the [[Invasion of the Cape Colony (1795)|surrender of the colony]] in a short campaign. The British commander, [[Vice-Admiral]] [[George Elphinstone, 1st Viscount Keith|Sir George Elphinstone]], then reinforced the garrison and stationed a naval squadron at the Cape to protect the British conquest. ||| ||| ||| +0 Capture of Afulah and Beisan ||| Battle of Al-Fule ||| Near Lejjun, the remains of the ancient fortress of Megiddo on [[Tel Megiddo|Tell al Mutesellim]] dominate the entry to the plain from the Musmus Pass. Here a relatively small garrison could control the routes across the Esdraelon Plain where the armies of [[Egyptians]], [[Imperial Roman army|Romans]], [[Mongols]], [[Arabs]], and [[Crusaders]] who had fought [[Saladin]] near Afulah during the [[Battle of Al-Fule (1183)|Battle of Al-Fule]], as well as of [[Napoleon]], had marched and fought towards Nazareth, the Galilean Hills, and Damascus. ||| Background ||| Esdraelon Plain ||| +0 Capture of Afulah and Beisan ||| Battle of Megiddo (1918) ||| The '''Capture of Afulah and Beisan''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Nablus]], formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon, the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] of the [[Desert Mounted Corps]] attacked and captured the main communications hub at [[Afulah]], located in the centre of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]), and [[Beisan]] on the plain's eastern edge near the [[Jordan River]], some {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. ||| ||| ||| +0 Capture of Afulah and Beisan ||| Battle of Nablus (1918) ||| The '''Capture of Afulah and Beisan''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Nablus]], formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon, the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] of the [[Desert Mounted Corps]] attacked and captured the main communications hub at [[Afulah]], located in the centre of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]), and [[Beisan]] on the plain's eastern edge near the [[Jordan River]], some {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. ||| ||| ||| +0 Capture of Afulah and Beisan ||| Battle of Sharon ||| The '''Capture of Afulah and Beisan''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Nablus]], formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon, the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] of the [[Desert Mounted Corps]] attacked and captured the main communications hub at [[Afulah]], located in the centre of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]), and [[Beisan]] on the plain's eastern edge near the [[Jordan River]], some {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. ||| ||| ||| +0 Capture of Afulah and Beisan ||| Capture of Damascus (1918) ||| Several days later while garrisoning Beisan, the 4th Cavalry Division advanced southwards down the Jordan River to close a {{convert|20|mi|km}} long gap, through which the retreating remnants of the Seventh and Eighth Armies had been escaping. They successfully attacked and captured several fords during 23 and 24 September, to completely cut off all remaining Ottoman soldiers in the Judean Hills. By the end of the month, one [[Military of the Ottoman Empire|Ottoman army]] had been destroyed, while the remnants of two others were in retreat to Damascus after the German rearguard at [[Battle of Samakh (1918)|Samakh]] was captured by [[Australian Light Horse]]men on 25 September. [[Capture of Damascus (1918)|Damascus was captured]] on 1 October, and by the time the [[Armistice of Mudros]] between the [[Allies of World War I|Allies]] and the Ottoman Empire was signed at the end of October, fighting for [[Pursuit to Haritan|Aleppo]] was underway. ||| ||| ||| +0 Capture of Afulah and Beisan ||| Sinai and Palestine Campaign ||| The '''Capture of Afulah and Beisan''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Nablus]], formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought during the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon, the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] of the [[Desert Mounted Corps]] attacked and captured the main communications hub at [[Afulah]], located in the centre of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]), and [[Beisan]] on the plain's eastern edge near the [[Jordan River]], some {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. ||| ||| ||| +0 Capture of Combles ||| Battle of Morval ||| Combles was attacked by the British and French on 25 September, during the [[Battle of Morval]] after several delays due to rain and poor visibility. Brigades from the 56th and 5th divisions in the north, wheeled to the right to form a south-facing flank above Combles, as the French [[2nd Infantry Division (France)|2nd Division]] attacked from the south. The British attack swiftly established the defensive flank and patrols began to probe southwards. German resistance against the French attack close to the village, particularly with machine-gun fire, held back the advance but further east, the French captured Rancourt in the afternoon and closed up to Frégicourt. Prisoners taken by the British and French, revealed that a retirement from the village was intended during the night and a constant Allied artillery barrage was maintained on the exits. Infantry patrols probed forwards and the British and French forces met at several points in and east of the village, in the early hours of 26 September. A huge amount of equipment, ammunition and engineering stores were captured in the village and on 27 September, the inter-army boundary was moved north to Morval, to assist French attacks towards Sailly-Saillisel. On 24 March 1918, Combles was recaptured by German troops, during the retreat of the 9th Division in [[Operation Michael]], the German spring offensive. The village was recaptured for the last time on 29 August, by the 18th Division, during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Arab Revolt ||| The '''Capture of Damascus''' occurred on 1 October 1918 after the capture of [[Battle of Haifa (1918)|Haifa]] and the victory at the [[Battle of Samakh]] which opened the way for the pursuit north from the [[Sea of Galilee]] and the [[Third Transjordan attack]] which opened the way to [[Deraa]] and the inland pursuit, after the decisive [[Egyptian Expeditionary Force]] victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] during the [[Sinai and Palestine Campaign]] of World War I. Damascus was captured when [[Desert Mounted Corps]] and [[Feisal I of Iraq|Prince Feisal]]'s Sherifial Hejaz Army encircled the city, after a cavalry pursuit northwards along the two main roads to [[Damascus]]. During the pursuit to Damascus, many rearguards established by remnants of the [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth Armies]], were attacked and captured. Prince Feisal's Sherifial Army, [[Desert Mounted Corps]]' [[Australian Mounted Division]] the [[4th Cavalry Division (British Indian Army)|4th]] and the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]]s. The important tactical success of capturing Damascus resulted in political manoeuvring by representatives from France, Britain and Prince Feisal's [[Arab Revolt|force]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Battle of Megiddo (1918) ||| The '''Capture of Damascus''' occurred on 1 October 1918 after the capture of [[Battle of Haifa (1918)|Haifa]] and the victory at the [[Battle of Samakh]] which opened the way for the pursuit north from the [[Sea of Galilee]] and the [[Third Transjordan attack]] which opened the way to [[Deraa]] and the inland pursuit, after the decisive [[Egyptian Expeditionary Force]] victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] during the [[Sinai and Palestine Campaign]] of World War I. Damascus was captured when [[Desert Mounted Corps]] and [[Feisal I of Iraq|Prince Feisal]]'s Sherifial Hejaz Army encircled the city, after a cavalry pursuit northwards along the two main roads to [[Damascus]]. During the pursuit to Damascus, many rearguards established by remnants of the [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth Armies]], were attacked and captured. Prince Feisal's Sherifial Army, [[Desert Mounted Corps]]' [[Australian Mounted Division]] the [[4th Cavalry Division (British Indian Army)|4th]] and the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]]s. The important tactical success of capturing Damascus resulted in political manoeuvring by representatives from France, Britain and Prince Feisal's [[Arab Revolt|force]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Battle of Nablus ||| Following the victories at the [[Battle of Sharon]] and [[Battle of Nablus (1918)|Battle of Nablus]] during the Battle of Megiddo, on 25 September, the combined attacks by the [[XXI Corps (United Kingdom)|XXI Corps]], Desert Mounted Corps, the [[XX Corps (United Kingdom)|XX Corps]] supported by [[Battle of Sharon (1918)#EEF air support and aerial bombing|extensive aerial bombing attacks]], gained all objectives. The Seventh and Eighth Armies in the Judean Hills were forced by the attacks at [[Battle of Tulkarm (1918)|Tulkarm]], and [[Battle of Tabsor (1918)|Tabsor]] to disengage and retreat, in turn forcing the Fourth Army, east of the Jordan River to avoid outflanking by retreating from [[Third Transjordan attack|Amman]] when they were attacked by Chaytor's Force. As a consequence of these withdrawals large numbers of prisoners were captured at [[Capture of Jenin (1918)|Jenin]] while the surviving columns retreated behind a strong rearguard at [[Battle of Samakh (1918)|Samakh]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Battle of Nablus (1918) ||| Following the victories at the [[Battle of Sharon]] and [[Battle of Nablus (1918)|Battle of Nablus]] during the Battle of Megiddo, on 25 September, the combined attacks by the [[XXI Corps (United Kingdom)|XXI Corps]], Desert Mounted Corps, the [[XX Corps (United Kingdom)|XX Corps]] supported by [[Battle of Sharon (1918)#EEF air support and aerial bombing|extensive aerial bombing attacks]], gained all objectives. The Seventh and Eighth Armies in the Judean Hills were forced by the attacks at [[Battle of Tulkarm (1918)|Tulkarm]], and [[Battle of Tabsor (1918)|Tabsor]] to disengage and retreat, in turn forcing the Fourth Army, east of the Jordan River to avoid outflanking by retreating from [[Third Transjordan attack|Amman]] when they were attacked by Chaytor's Force. As a consequence of these withdrawals large numbers of prisoners were captured at [[Capture of Jenin (1918)|Jenin]] while the surviving columns retreated behind a strong rearguard at [[Battle of Samakh (1918)|Samakh]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Battle of Samakh ||| The '''Capture of Damascus''' occurred on 1 October 1918 after the capture of [[Battle of Haifa (1918)|Haifa]] and the victory at the [[Battle of Samakh]] which opened the way for the pursuit north from the [[Sea of Galilee]] and the [[Third Transjordan attack]] which opened the way to [[Deraa]] and the inland pursuit, after the decisive [[Egyptian Expeditionary Force]] victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] during the [[Sinai and Palestine Campaign]] of World War I. Damascus was captured when [[Desert Mounted Corps]] and [[Feisal I of Iraq|Prince Feisal]]'s Sherifial Hejaz Army encircled the city, after a cavalry pursuit northwards along the two main roads to [[Damascus]]. During the pursuit to Damascus, many rearguards established by remnants of the [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth Armies]], were attacked and captured. Prince Feisal's Sherifial Army, [[Desert Mounted Corps]]' [[Australian Mounted Division]] the [[4th Cavalry Division (British Indian Army)|4th]] and the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]]s. The important tactical success of capturing Damascus resulted in political manoeuvring by representatives from France, Britain and Prince Feisal's [[Arab Revolt|force]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Battle of Sharon ||| Following the victories at the [[Battle of Sharon]] and [[Battle of Nablus (1918)|Battle of Nablus]] during the Battle of Megiddo, on 25 September, the combined attacks by the [[XXI Corps (United Kingdom)|XXI Corps]], Desert Mounted Corps, the [[XX Corps (United Kingdom)|XX Corps]] supported by [[Battle of Sharon (1918)#EEF air support and aerial bombing|extensive aerial bombing attacks]], gained all objectives. The Seventh and Eighth Armies in the Judean Hills were forced by the attacks at [[Battle of Tulkarm (1918)|Tulkarm]], and [[Battle of Tabsor (1918)|Tabsor]] to disengage and retreat, in turn forcing the Fourth Army, east of the Jordan River to avoid outflanking by retreating from [[Third Transjordan attack|Amman]] when they were attacked by Chaytor's Force. As a consequence of these withdrawals large numbers of prisoners were captured at [[Capture of Jenin (1918)|Jenin]] while the surviving columns retreated behind a strong rearguard at [[Battle of Samakh (1918)|Samakh]]. ||| ||| ||| +0 Capture of Damascus (1918) ||| Third Transjordan attack ||| The '''Capture of Damascus''' occurred on 1 October 1918 after the capture of [[Battle of Haifa (1918)|Haifa]] and the victory at the [[Battle of Samakh]] which opened the way for the pursuit north from the [[Sea of Galilee]] and the [[Third Transjordan attack]] which opened the way to [[Deraa]] and the inland pursuit, after the decisive [[Egyptian Expeditionary Force]] victory at the [[Battle of Megiddo (1918)|Battle of Megiddo]] during the [[Sinai and Palestine Campaign]] of World War I. Damascus was captured when [[Desert Mounted Corps]] and [[Feisal I of Iraq|Prince Feisal]]'s Sherifial Hejaz Army encircled the city, after a cavalry pursuit northwards along the two main roads to [[Damascus]]. During the pursuit to Damascus, many rearguards established by remnants of the [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth Armies]], were attacked and captured. Prince Feisal's Sherifial Army, [[Desert Mounted Corps]]' [[Australian Mounted Division]] the [[4th Cavalry Division (British Indian Army)|4th]] and the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]]s. The important tactical success of capturing Damascus resulted in political manoeuvring by representatives from France, Britain and Prince Feisal's [[Arab Revolt|force]]. ||| ||| ||| +0 Capture of Eaucourt l'Abbaye ||| Battle of Le Transloy ||| Military operations began in the area in September 1914 during the [[Race to the Sea]], when the divisions of the [[II Royal Bavarian Corps|II Bavarian Corps]] advanced westwards on the north bank of the Somme, towards Albert and Amiens. Eaucourt l'Abbaye became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}}.<!-- and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity.--> During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} divisions of the British [[III Corps (United Kingdom)|III Corps]] in the [[Fourth Army (United Kingdom)|Fourth Army]] advanced close to Eaucourt and operations to capture it began on 1 October. The Eaucourt defenders of a regiment of the [[6th Bavarian Reserve Division (German Empire)|6th Bavarian Reserve Division]] were overrun by a brigade of the [[47th (1/2nd London) Division|47th Division]] on 1 October, during the [[Battle of Le Transloy]] {{nowrap|(1 October – 5 November)}} but operations continued until 3 October. ||| ||| ||| +0 Capture of Eaucourt l'Abbaye ||| Race to the Sea ||| Military operations began in the area in September 1914 during the [[Race to the Sea]], when the divisions of the [[II Royal Bavarian Corps|II Bavarian Corps]] advanced westwards on the north bank of the Somme, towards Albert and Amiens. Eaucourt l'Abbaye became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}}.<!-- and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity.--> During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} divisions of the British [[III Corps (United Kingdom)|III Corps]] in the [[Fourth Army (United Kingdom)|Fourth Army]] advanced close to Eaucourt and operations to capture it began on 1 October. The Eaucourt defenders of a regiment of the [[6th Bavarian Reserve Division (German Empire)|6th Bavarian Reserve Division]] were overrun by a brigade of the [[47th (1/2nd London) Division|47th Division]] on 1 October, during the [[Battle of Le Transloy]] {{nowrap|(1 October – 5 November)}} but operations continued until 3 October. ||| ||| ||| +0 Capture of Eilean Donan Castle ||| Battle of Glen Shiel ||| The rising ended with the defeat of the Jacobites (poorly provisioned and armed) with the remaining Spanish troops on 10 June at the [[Battle of Glen Shiel]]. ||| Assault & destruction ||| ||| +0 Capture of Fort Erie ||| Battle of Chippawa ||| From their new base at Fort Erie, Brown next marched up the [[Niagara River]] and met the British at the [[Battle of Chippawa]]. The British commander at Chippawa, Major General [[Phineas Riall]], believed that the garrison of Fort Erie was still holding out, which contributed to his decision to launch a hasty and ill-fated attack. ||| Aftermath ||| ||| +0 Capture of Fort Erie ||| Battle of Fort George ||| In 1813, the Americans won the [[Battle of Fort George]] at the northern end of the Niagara River. The British abandoned the Niagara frontier and allowed Fort Erie to fall into American hands without a fight. The Americans failed to follow up their victory, and later in the year they withdrew most of their soldiers from the Niagara to furnish an ill-fated attack on [[Montreal]]. This allowed the British to recover their positions and to mount raids which led to the [[Capture of Fort Niagara]] and the devastation of large parts of the American side of the Niagara River. ||| Background ||| ||| +0 Capture of Fort Erie ||| Siege of Fort Erie ||| Following the [[Battle of Lundy's Lane]] in July, British forces under the command of [[Gordon Drummond]] advanced and [[Siege of Fort Erie|unsuccessfully besieged]] the fort. However, American commanders decided to abandon the fort, which was evacuated and blown up in November 1814. ||| Aftermath ||| ||| +0 Capture of Garadaghly ||| Nagorno-Karabakh War ||| The '''Capture of Garadaghly''' ({{lang-az|Qaradağlı qətliamı}}) refers to the occupation by Armenian troops of [[Qaradağlı, Khojavend|Garadaghly]], a village in [[Khojavend Rayon|Khojavend district]] of [[Azerbaijan]], on 17 February 1992 during the [[Nagorno-Karabakh War]], in which more than 20 civilians were killed and many taken prisoners. ||| ||| ||| +0 Capture of Gueudecourt ||| Battle of Morval ||| During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September)}} the Germans were forced back from Flers and the survivors retired to {{lang|de|''(Gallwitz Riegel)''}}, a defence line which ran in front of Gueudecourt. At the [[Battle of Morval]] (25–28 September), the first attack by the 21st Division on 25 September, was stopped short of the village. Next day a combined infantry, tank and aircraft operation inflicted many casualties on the defenders and forced the survivors to surrender, after which the village was occupied and consolidated. British cavalry went forward to probe the area around the village, to exploit the success but were forced back by machine-gun and artillery-fire, from improvised German defences on Transloy Ridge. ||| ||| ||| +0 Capture of Gueudecourt ||| Operation Michael ||| At the [[Battle of Le Transloy]] {{nowrap|(1–28 October)}} and in local operations in November, Gueudecourt was used as a jumping-off point; in the winter of 1916–1917 the area was held by the [[I Anzac Corps]], which considered the conditions around the village to be the worst on the Somme front. Gueudecourt became a backwater until 1918, when the village was lost on 24 March during [[Operation Michael]], the German spring offensive and was recaptured for the last time on 28 August, by the [[17th (Northern) Division (United Kingdom)|17th Division]], during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Gueudecourt ||| Race to the Sea ||| '''Gueudecourt''' village lies on the Le Sars–Le Transloy road, north-east of Flers and north-west of Lesbœufs. Behind Gueudecourt lay open country which had hardly been shelled with Le Barque in the middle distance and then Bapaume beyond. German troops passed through the village in late September 1914 during the First Battle of Albert, part of a series of reciprocal operations by the German and Franco-British armies, to advance round the northern flank of their opponent during the operations known as the [[Race to the Sea]]. The village became a backwater until 1916 when a third line of defence was dug behind the Somme front, as part of the German preparations to receive the British-French offensive being prepared on the Somme. ||| ||| ||| +0 Capture of Jenin ||| Battle of Megiddo (1918) ||| The '''Capture of Jenin''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September during the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon carried out by the [[Desert Mounted Corps]], the [[3rd Light Horse Brigade]], [[Australian Mounted Division]] attacked and captured the town of [[Jenin]] located on the southern edge of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. The [[Australian]] light horse captured about 2,000 prisoners, the main supply base and the ordnance depot of the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]] in and near the town. They also cut the main road from [[Nablus]] and a further 6,000 [[Ottoman Empire]] and [[German Empire]] prisoners, were subsequently captured as they attempted to retreat away from the Judean Hills. ||| ||| ||| +0 Capture of Jenin ||| Battle of Nablus ||| The '''Capture of Jenin''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September during the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon carried out by the [[Desert Mounted Corps]], the [[3rd Light Horse Brigade]], [[Australian Mounted Division]] attacked and captured the town of [[Jenin]] located on the southern edge of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. The [[Australian]] light horse captured about 2,000 prisoners, the main supply base and the ordnance depot of the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]] in and near the town. They also cut the main road from [[Nablus]] and a further 6,000 [[Ottoman Empire]] and [[German Empire]] prisoners, were subsequently captured as they attempted to retreat away from the Judean Hills. ||| ||| ||| +0 Capture of Jenin ||| Battle of Nablus (1918) ||| The '''Capture of Jenin''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September during the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon carried out by the [[Desert Mounted Corps]], the [[3rd Light Horse Brigade]], [[Australian Mounted Division]] attacked and captured the town of [[Jenin]] located on the southern edge of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. The [[Australian]] light horse captured about 2,000 prisoners, the main supply base and the ordnance depot of the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]] in and near the town. They also cut the main road from [[Nablus]] and a further 6,000 [[Ottoman Empire]] and [[German Empire]] prisoners, were subsequently captured as they attempted to retreat away from the Judean Hills. ||| ||| ||| +0 Capture of Jenin ||| Battle of Nazareth ||| On 19 September, the [[Battle of Megiddo (1918)|Battle of Megiddo]] commenced with the [[XXI Corps (United Kingdom)|XXI Corps]] (commanded by [[Lieutenant General]] [[Edward Bulfin]]), under cover of a [[creeping barrage]], broke through the Ottoman front line to begin the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] began the Battle of Nablus, also supported by an artillery barrage. This offensive by the XX and XXI Corps, continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]], to disengage. The Seventh Army retreated from the [[Nablus]] area towards the [[Jordan River]], crossing at the [[Jisr ed Damieh]] bridge before a rearguard at Nablus was captured. While the EEF infantry were fighting the Seventh and Eighth Armies in the Judean Hills, the [[Desert Mounted Corps]] commanded by the [[Australian]] Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry on the morning of 19 September, to ride northwards and virtually [[encirclement|encircle]] the Ottoman forces before they disengaged. The cavalry divisions captured [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah, Beisan]], and Jenin before and Samakh and the [[Capture of Tiberias]] ended the Battle of Megiddo. During this time, [[Chaytor's Force]] (temporarily detached from Desert Mounted Corps) commanded by [[Major General]] [[Edward Chaytor]], captured part of the retreating Ottoman and German column at the [[Capture of Jisr ed Damieh]] bridge over the Jordan River to cut off this line of retreat, during the [[Third Transjordan attack]]. To the east of the river, as the Ottoman Fourth Army began its retreat, Chaytor's Force advanced to capture Es Salt on 23 September and [[Amman]] on 25 September. Units of Chaytor's Force captured Amman after defeating a strong Fourth Army rearguard during the [[Second Battle of Amman]]. ||| Background ||| ||| +0 Capture of Jenin ||| Battle of Samakh ||| The [[Egyptian Expeditionary Force]] (EEF) [[cavalry]] had ridden through a gap on the [[Mediterranean Sea]] coast, created by the infantry during the [[Battle of Tulkarm]], to capture the two Ottoman armies' main [[Lines of communication|lines of communication and supply]] north of the Judean Hills, while the infantry battles continued. On 20 September, the Desert Mounted Corps captured [[Capture of Afulah and Beisan|Afulah]], Beisan and Jenin on the Esdrealon Plain. The next day the headquarters of the Seventh Army at Nablus, and the General Headquarters (GHQ) of the Yilderim Army Group at [[Battle of Nazareth (1918)|Nazareth]], were both captured, while [[Battle of Haifa (1918)|Haifa was captured]] two days later. During a subsequent early morning attack on 25 September, a German rearguard was captured during the [[Battle of Samakh]], which ended the Battle of Sharon. During these operations the greater part of one [[Military of the Ottoman Empire|Ottoman army]] was captured in the Judean Hills and at Jenin. These and other battles fought during the Battle of Megiddo including the Battle of Nablus and [[Third Transjordan attack]], forced the retreating Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], and remnants of the Seventh and the Eighth Armies, to the eastern side of the [[Jordan River]]. As they withdrew northwards towards [[Capture of Damascus (1918)|Damascus]] they were pursued by the Desert Mounted Corps. ||| ||| ||| +0 Capture of Jenin ||| Battle of Sharon ||| The '''Capture of Jenin''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September during the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon carried out by the [[Desert Mounted Corps]], the [[3rd Light Horse Brigade]], [[Australian Mounted Division]] attacked and captured the town of [[Jenin]] located on the southern edge of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. The [[Australian]] light horse captured about 2,000 prisoners, the main supply base and the ordnance depot of the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]] in and near the town. They also cut the main road from [[Nablus]] and a further 6,000 [[Ottoman Empire]] and [[German Empire]] prisoners, were subsequently captured as they attempted to retreat away from the Judean Hills. ||| ||| ||| +0 Capture of Jenin ||| Capture of Afulah and Beisan ||| The [[Egyptian Expeditionary Force]] (EEF) [[cavalry]] had ridden through a gap on the [[Mediterranean Sea]] coast, created by the infantry during the [[Battle of Tulkarm]], to capture the two Ottoman armies' main [[Lines of communication|lines of communication and supply]] north of the Judean Hills, while the infantry battles continued. On 20 September, the Desert Mounted Corps captured [[Capture of Afulah and Beisan|Afulah]], Beisan and Jenin on the Esdrealon Plain. The next day the headquarters of the Seventh Army at Nablus, and the General Headquarters (GHQ) of the Yilderim Army Group at [[Battle of Nazareth (1918)|Nazareth]], were both captured, while [[Battle of Haifa (1918)|Haifa was captured]] two days later. During a subsequent early morning attack on 25 September, a German rearguard was captured during the [[Battle of Samakh]], which ended the Battle of Sharon. During these operations the greater part of one [[Military of the Ottoman Empire|Ottoman army]] was captured in the Judean Hills and at Jenin. These and other battles fought during the Battle of Megiddo including the Battle of Nablus and [[Third Transjordan attack]], forced the retreating Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], and remnants of the Seventh and the Eighth Armies, to the eastern side of the [[Jordan River]]. As they withdrew northwards towards [[Capture of Damascus (1918)|Damascus]] they were pursued by the Desert Mounted Corps. ||| ||| ||| +0 Capture of Jenin ||| Capture of Damascus (1918) ||| The [[Egyptian Expeditionary Force]] (EEF) [[cavalry]] had ridden through a gap on the [[Mediterranean Sea]] coast, created by the infantry during the [[Battle of Tulkarm]], to capture the two Ottoman armies' main [[Lines of communication|lines of communication and supply]] north of the Judean Hills, while the infantry battles continued. On 20 September, the Desert Mounted Corps captured [[Capture of Afulah and Beisan|Afulah]], Beisan and Jenin on the Esdrealon Plain. The next day the headquarters of the Seventh Army at Nablus, and the General Headquarters (GHQ) of the Yilderim Army Group at [[Battle of Nazareth (1918)|Nazareth]], were both captured, while [[Battle of Haifa (1918)|Haifa was captured]] two days later. During a subsequent early morning attack on 25 September, a German rearguard was captured during the [[Battle of Samakh]], which ended the Battle of Sharon. During these operations the greater part of one [[Military of the Ottoman Empire|Ottoman army]] was captured in the Judean Hills and at Jenin. These and other battles fought during the Battle of Megiddo including the Battle of Nablus and [[Third Transjordan attack]], forced the retreating Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], and remnants of the Seventh and the Eighth Armies, to the eastern side of the [[Jordan River]]. As they withdrew northwards towards [[Capture of Damascus (1918)|Damascus]] they were pursued by the Desert Mounted Corps. ||| ||| ||| +0 Capture of Jenin ||| First Transjordan attack on Amman ||| Following the [[Capture of Jericho]] in February, the commander of the [[Egyptian Expeditionary Force]] (EEF), [[General (United Kingdom)|General]] [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. In March–April and April–May 1918, the [[First Transjordan attack on Amman|First]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan attacks]] took place, while the front line across the [[Judean Hills]] to the [[Mediterranean Sea]] was defended. During this time, three-quarters of the British infantry and [[yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]]. They were replaced by [[British India Army]] infantry and cavalry which required a [[Sinai and Palestine Campaign#Reorganisations|reorganisation]]. These newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line in the Judean Hills during the summer months, as part of their training. These attacks including the [[Battle of Tell 'Asur]] and Action of Berukin in March and April, were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. This fighting [[Sinai and Palestine Campaign#Summer 1918 front line operations|continued during the summer months]]. By the middle of September the consolidated EEF was once again ready for large-scale offensive operations. ||| Background ||| ||| +0 Capture of Jenin ||| Sinai and Palestine Campaign ||| The '''Capture of Jenin''' occurred on 20 September 1918, during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September during the last months of the [[Sinai and Palestine Campaign]] of the [[First World War]]. During the cavalry phase of the Battle of Sharon carried out by the [[Desert Mounted Corps]], the [[3rd Light Horse Brigade]], [[Australian Mounted Division]] attacked and captured the town of [[Jenin]] located on the southern edge of the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) {{convert|40|-|50|mi|km}} behind the front line in the [[Judean Hills]]. The [[Australian]] light horse captured about 2,000 prisoners, the main supply base and the ordnance depot of the [[Seventh Army (Ottoman Empire)|Seventh]] and the [[Eighth Army (Ottoman Empire)|Eighth Armies]] in and near the town. They also cut the main road from [[Nablus]] and a further 6,000 [[Ottoman Empire]] and [[German Empire]] prisoners, were subsequently captured as they attempted to retreat away from the Judean Hills. ||| ||| ||| +0 Capture of Jenin ||| Third Transjordan attack ||| The [[Egyptian Expeditionary Force]] (EEF) [[cavalry]] had ridden through a gap on the [[Mediterranean Sea]] coast, created by the infantry during the [[Battle of Tulkarm]], to capture the two Ottoman armies' main [[Lines of communication|lines of communication and supply]] north of the Judean Hills, while the infantry battles continued. On 20 September, the Desert Mounted Corps captured [[Capture of Afulah and Beisan|Afulah]], Beisan and Jenin on the Esdrealon Plain. The next day the headquarters of the Seventh Army at Nablus, and the General Headquarters (GHQ) of the Yilderim Army Group at [[Battle of Nazareth (1918)|Nazareth]], were both captured, while [[Battle of Haifa (1918)|Haifa was captured]] two days later. During a subsequent early morning attack on 25 September, a German rearguard was captured during the [[Battle of Samakh]], which ended the Battle of Sharon. During these operations the greater part of one [[Military of the Ottoman Empire|Ottoman army]] was captured in the Judean Hills and at Jenin. These and other battles fought during the Battle of Megiddo including the Battle of Nablus and [[Third Transjordan attack]], forced the retreating Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], and remnants of the Seventh and the Eighth Armies, to the eastern side of the [[Jordan River]]. As they withdrew northwards towards [[Capture of Damascus (1918)|Damascus]] they were pursued by the Desert Mounted Corps. ||| ||| ||| +0 Capture of Kufra ||| Battle of France ||| After the [[Battle of France|defeat of France]] in 1940, the colony of [[French Equatorial Africa]] (FEA) declared its allegiance to the [[Free France]], the exile government headed by [[Charles de Gaulle]]. [[Chad]], the northern part of FEA, borders Libya. De Gaulle ordered the Free French in Chad to attack Italian positions in Libya. Kufra was the obvious target. The Free French commander in Chad was [[Lieutenant-Colonel]] [[Jean Colonna d'Ornano]]. The troops available were 5,000 ''[[tirailleur]]s'' (riflemen) of the [[Senegal]]ese Light Infantry Regiment of Chad (''Régiment de Tirailleurs Sénégalais du Tchad''; RTST) in 20 companies in different garrisons; also three detachments of ''[[méhariste]]s '' ([[camel cavalry]]), in [[Borkou]], [[Tibesti]] and [[Ennedi]]. ||| Prelude ||| ||| +0 Capture of Le Sars ||| Battle of Le Transloy ||| Military operations began in the area in September 1914 during the [[Race to the Sea]], when the divisions of the [[II Royal Bavarian Corps|II Bavarian Corps]] advanced westwards on the north bank of the Somme, passing through Le Sars towards Albert and Amiens. The village became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}} and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity. During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} the British Fourth Army advanced close to the village and operations to capture it began on 1 October. The village was overrun by the [[23rd Division (United Kingdom)|23rd Division]] on 7 October, during the [[Battle of Le Transloy]] {{nowrap|(1 October – 5 November),}} several hundred prisoners being taken from the [[4th Ersatz Division (German Empire)|4th ''Ersatz'' Division]]. ||| ||| ||| +0 Capture of Lesboeufs ||| Battle of Le Transloy ||| Lesbœufs was transferred to the control of the Sixth Army a few days later to enable the French to attack Sailly-Saillisel from the west. British attacks in the vicinity continued during the [[Battle of Le Transloy]] {{nowrap|(1–28 October).}} During the rest of the winter of 1916–1917, offensive operations in the area diminished to shelling, sniper fire and trench raiding; the area became quiet after the German retreat to the [[Hindenburg Line]] in March 1917. The village was captured in March 1918 by the Germans during [[Operation Michael]], the German spring offensive and reoccupied for the final time on 29 August, by the [[38th (Welsh) Infantry Division|38th Division]], during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of Lesboeufs ||| Battle of Morval ||| A combined offensive was prepared by the Fourth Army and the French [[Sixth Army (France)|Sixth Army]] but was postponed several times because of inclement weather and the [[Battle of Morval]] took place from {{nowrap|25–26 September.}} In the British sector, the final objectives of the Battle of Flers–Courcelette were captured, the [[52nd Reserve Division (German Empire)|52nd Reserve Division]] garrison in {{lang|de|''Gallwitz Riegel''}} (Gird Trench and Gird Support Trench) and Lesbœufs being overwhelmed by brigades of the 6th Division and the Guards Division. No German troops were available to counter-attack and the village was consolidated. The capture of Gueudecourt next day, linked the new front line between the villages. ||| ||| ||| +0 Capture of Mametz ||| Battle of Bazentin Ridge ||| British and French attacks south of the Albert–Bapaume road continued on 2 July and by 13 July had pushed up close to the German second position through Mametz Wood to the north of Mametz, ready for the [[Battle of Bazentin Ridge]] on 14 July, the 7th Division having been relieved by the [[38th (Welsh) Infantry Division|38th Division]] on 5 July. In 1918, the village was recaptured by German troops on 25 March, during [[Operation Michael]] the German spring offensive, when the 17th Division, the [[12th (Eastern) Division|12th Division]] and the 1st Dismounted Brigade of the [[1st Cavalry Division (United Kingdom)|1st Cavalry Division]] were forced to retire to the north-west. Mametz and the vicinity were retaken for the last time on 26 August by the 18th and 12th divisions. ||| ||| ||| +0 Capture of Mametz ||| Operation Michael ||| British and French attacks south of the Albert–Bapaume road continued on 2 July and by 13 July had pushed up close to the German second position through Mametz Wood to the north of Mametz, ready for the [[Battle of Bazentin Ridge]] on 14 July, the 7th Division having been relieved by the [[38th (Welsh) Infantry Division|38th Division]] on 5 July. In 1918, the village was recaptured by German troops on 25 March, during [[Operation Michael]] the German spring offensive, when the 17th Division, the [[12th (Eastern) Division|12th Division]] and the 1st Dismounted Brigade of the [[1st Cavalry Division (United Kingdom)|1st Cavalry Division]] were forced to retire to the north-west. Mametz and the vicinity were retaken for the last time on 26 August by the 18th and 12th divisions. ||| ||| ||| +0 Capture of Martinpuich ||| Attacks on High Wood ||| '''Martinpuich''' is situated {{convert|18|mi|km}} south of Arras, near the junction of the D 929 and D 6 roads, opposite Courcelette. The village lies south of [[Le Sars]], west of [[Flers, Somme|Flers]] and north-west of [[Attacks on High Wood|High Wood]]. In September 1914, during the [[Race to the Sea]], the divisions of the [[XIV Corps (German Empire)|XIV Corps]] advanced westwards, on the north bank of the Somme towards Albert and Amiens, passing through Martinpuich. The village became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}} and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity. ||| ||| ||| +0 Capture of Minorca (1798) ||| Battle of the Nile ||| While Britain and Spain had initially entered the [[French Revolutionary War]] as allies, in 1796 Spain had switched to supporting France and had gone to war with Britain. The British attempted to assert their authority over the Mediterranean but had a shortage of usable bases. After the failure to establish a British presence in [[Corsica]], other targets such as [[Minorca]], [[Malta]] and [[Elba]] were considered. Once the French Mediterranean Fleet had been [[Battle of the Nile|destroyed in Aboukir Bay]], [[John Jervis, 1st Earl of St Vincent|Earl St Vincent]] was determined to restore British hegemony in the Mediterranean. To ensure this, his fleet needed a base with a well protected deep water harbour that could not be assaulted by land. The best island harbour in the Western Mediterranean was at [[Mahón|Port Mahon]] on Minorca, where a large modern dockyard included a careening wharf, extensive storehouses and a purpose-built naval hospital. At the end of October St Vincent decided to send an expedition against Minorca, which departed on 19 October 1798. The expeditionary force arrived off Minorca on 7 November. ||| Background ||| ||| +0 Capture of Montauban ||| Operation Michael ||| A German counter-attack in the early hours of 2 July was a costly failure and the 30th Division began operations against Bernafay and Trônes woods on 3 July. Montauban was recaptured by German troops on 25 March 1918 during [[Operation Michael]], as the right flank units of the [[17th (Northern) Division|17th Division]] and the 1st Dismounted Brigade of the [[1st Cavalry Division (United Kingdom)|1st Cavalry Division]] retreated. The village was recaptured for the last time six months later on 26 August, by the [[18th (Eastern) Division|18th Division]], during the [[Second Battle of Bapaume]]. ||| ||| ||| +0 Capture of New Orleans ||| Battle of Baton Rouge (1862) ||| The expected rebel counteroffensive came on August 5 in the form of a naval and army assault on Baton Rouge, led by Maj. Gen. [[John C. Breckinridge]], resulting in the [[Battle of Baton Rouge (1862)|Battle of Baton Rouge]]. After a hard fought battle, the Confederate forces were driven out of the city, and both Confederate and Union forces withdrew after the battle. The significant aspect of the battle was that it did not result in a popular uprising, nor widespread support for Confederate forces in Louisiana. As a result, Rebel forces were not able to mount a sustained campaign to retake New Orleans or the rest of the state. This can be considered a tribute to the Union consensus building wrought by Butler's political manipulation and broad-based political support. Chester G. Hearn summed up the bases of this support: “The huge, illiterate majority – the poorer classes of blacks and whites – would have starved had Butler not fed and employed them, and thousands may have died had his sanitation policies not cleansed the city of disease.” ||| Occupation and pacification ||| The moment of truth, the Confederate counterstroke ||| +0 Capture of New Orleans ||| Battle of New Orleans ||| A formative event in the early history of New Orleans was the [[Battle of New Orleans]]. This battle, though fought after the end of the [[War of 1812]], enhanced the political career of [[Andrew Jackson]], who, along with [[Martin Van Buren]], in turn founded the [[Democratic Party (United States)|Democratic Party]]. Jackson became the first of America's “Imperial Presidents”, and began a new political movement now known as the [[Jacksonian Democracy]]. This new direction in American politics had a profound influence on the development of New Orleans and the American Southwest. One of these developments was the construction of [[Fort Jackson, Louisiana]], a [[star fort]] suggested by and named after Jackson. This fortress was intended to support [[Fort St. Philip]] and bar the Mississippi Delta from invasion. The presidents of the Jacksonian Democracy supported the concept of [[Manifest Destiny]], greatly expanding acquisition of territory in the American Southwest and the support of international trade along with the spread of slavery. This powerful political movement also produced sectional tension between the northern and southern halves of the United States, resulting in the creation of the [[Whig Party (United States)|Whig Party]] to oppose the new Democratic Party. As the political rivalry between the Jacksonian Democrats and the Whigs intensified, the [[Republican Party (United States)|Republican Party]] was founded, to counter the spread of slavery into states produced by territorial conquests of the Jacksonian Democrats. The victory of [[Abraham Lincoln]], the Republican presidential candidate, in the election of 1860, resulted in the secession crisis and the American Civil War. ||| Background ||| Jacksonian democracy and manifest destiny ||| +0 Capture of New Orleans ||| Union blockade ||| The Union's strategy was devised by [[Winfield Scott]], whose '[[Anaconda Plan]]' called for the division of the Confederacy by seizing control of the Mississippi River. One of the first steps in such operations was the imposition of the [[Union blockade]]. After the blockade was established, a [[Confederate States Navy|Confederate naval]] counterattack attempted to drive off the Union navy, resulting in the [[Battle of the Head of Passes]]. The Union countermove was to enter the mouth of the Mississippi River, ascend to New Orleans and capture the city, closing off the mouth of the Mississippi to Confederate shipping both from the [[Gulf of Mexico|Gulf]] and from Mississippi River ports still used by Confederate vessels. In mid-January 1862, Flag Officer [[David G. Farragut]] had undertaken this enterprise with his [[West Gulf Blockading Squadron]]. The way was soon open except the water passage past the two masonry forts held by Confederate artillery, [[Fort Jackson, Louisiana|Fort Jackson]] and [[Fort St. Philip]], which were above the [[Head of Passes]] approximately {{convert|70|mi}} downriver below New Orleans. ||| War and battle ||| ||| +0 Capture of New Orleans ||| War of 1812 ||| A formative event in the early history of New Orleans was the [[Battle of New Orleans]]. This battle, though fought after the end of the [[War of 1812]], enhanced the political career of [[Andrew Jackson]], who, along with [[Martin Van Buren]], in turn founded the [[Democratic Party (United States)|Democratic Party]]. Jackson became the first of America's “Imperial Presidents”, and began a new political movement now known as the [[Jacksonian Democracy]]. This new direction in American politics had a profound influence on the development of New Orleans and the American Southwest. One of these developments was the construction of [[Fort Jackson, Louisiana]], a [[star fort]] suggested by and named after Jackson. This fortress was intended to support [[Fort St. Philip]] and bar the Mississippi Delta from invasion. The presidents of the Jacksonian Democracy supported the concept of [[Manifest Destiny]], greatly expanding acquisition of territory in the American Southwest and the support of international trade along with the spread of slavery. This powerful political movement also produced sectional tension between the northern and southern halves of the United States, resulting in the creation of the [[Whig Party (United States)|Whig Party]] to oppose the new Democratic Party. As the political rivalry between the Jacksonian Democrats and the Whigs intensified, the [[Republican Party (United States)|Republican Party]] was founded, to counter the spread of slavery into states produced by territorial conquests of the Jacksonian Democrats. The victory of [[Abraham Lincoln]], the Republican presidential candidate, in the election of 1860, resulted in the secession crisis and the American Civil War. ||| Background ||| Jacksonian democracy and manifest destiny ||| +0 Capture of Rome ||| Austro-Prussian War ||| In July 1870, the [[Franco-Prussian War]] began. In early August, Napoleon III recalled his garrison from Rome. The French not only needed the troops to defend their homeland - Prussian diplomats were actively trying to convince Italy to join the war, so there was real concern that Italy might use the French presence in Rome as a pretext to go to war with France. In the earlier [[Austro-Prussian War]] Italy had allied with Prussia and Italian public opinion favoured the Prussian side at the start of the war. The removal of the French garrison eased tensions between Italy and France. Italy remained neutral in the Franco-Prussian War. ||| Prelude ||| Franco-Prussian War ||| +0 Capture of Rome ||| Battle of Sedan ||| With the French garrison gone, widespread public demonstrations demanded that the Italian government take Rome. But Rome remained under French protection on paper, therefore an attack would still have been regarded as an act of war against the French Empire. Until events elsewhere took their course the Italians were unwilling to provoke Napoleon, but after the surrender of Napoleon and his army at the [[Battle of Sedan]] the situation changed radically. The French Emperor was deposed. The new French government was clearly in no position to retaliate against Italy, nor did it possess the political will to protect the Pope's position. ||| Prelude ||| Franco-Prussian War ||| +0 Capture of Schwaben Redoubt ||| Battle of Albert (1914) ||| The '''Schwaben Redoubt''' ({{lang|de|''Schwaben-Feste''}}) was a [[Imperial Germany|German]] [[strongpoint|strong point]] {{convert|500|–|600|yd|m}} long and {{convert|200|yd|m}} wide, built in stages since 1915, near the village of [[Thiepval]], overlooking the [[River Ancre]]. It formed part of the German defensive system in the [[Somme (department)|Somme]] sector of the [[Western Front (World War I)|Western Front]] during the [[First World War]] and consisting of a mass of machine-gun emplacements, trenches and dug-outs. The redoubt was defended by the [[26th Reserve Division (German Empire)|26th Reserve Division]], from [[Swabia]] in south-west Germany, which had arrived in the area during the [[Battle of Albert (1914)|First Battle of Albert]] in 1914. British troops of the [[36th (Ulster) Division]] captured the redoubt on 1 July 1916, until forced out by German bombardments and counter-attacks after night had fallen. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Nablus ||| The '''Capture of Tiberias''' took place on 25 September 1918 during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] occupied the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) 40–50 miles (64–80 km) behind the front line in the [[Judean Hills]]. One squadron from each of the [[3rd Light Horse Brigade|3rd]] and [[4th Light Horse Brigade]]s [[Australian Mounted Division]] attacked and captured [[Tiberias]] (on the western shore of the [[Sea of Galilee]] also known as Lake Tiberias), along with the [[Yildirim Army Group]]'s [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Nablus (1918) ||| The '''Capture of Tiberias''' took place on 25 September 1918 during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] occupied the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) 40–50 miles (64–80 km) behind the front line in the [[Judean Hills]]. One squadron from each of the [[3rd Light Horse Brigade|3rd]] and [[4th Light Horse Brigade]]s [[Australian Mounted Division]] attacked and captured [[Tiberias]] (on the western shore of the [[Sea of Galilee]] also known as Lake Tiberias), along with the [[Yildirim Army Group]]'s [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Samakh ||| Tiberias was captured by two squadrons of [[Australian Light Horse|light horse]], one from the [[3rd Light Horse Brigade]] supported by armoured cars, and one from the [[4th Light Horse Brigade]] after fighting the [[Battle of Samakh]]. The two squadrons converged on the town from the north–west and south respectively and took 100 prisoners. The remainder of the garrison retreated northwards to form a rearguard at Lake Hule with the survivors from the [[Samakh, Tiberias|Samakh]] garrison. The next day the Australian Mounted Division and the [[5th Cavalry Division (British Indian Army)|5th Cavalry Division]] pursued the Ottoman forces towards [[Damascus]], paralleling the pursuit on the inland route begun by the [[4th Cavalry Division (British Indian Army)|4th Cavalry Division]] a day earlier. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Sharon ||| The '''Capture of Tiberias''' took place on 25 September 1918 during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] occupied the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) 40–50 miles (64–80 km) behind the front line in the [[Judean Hills]]. One squadron from each of the [[3rd Light Horse Brigade|3rd]] and [[4th Light Horse Brigade]]s [[Australian Mounted Division]] attacked and captured [[Tiberias]] (on the western shore of the [[Sea of Galilee]] also known as Lake Tiberias), along with the [[Yildirim Army Group]]'s [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Battle of Tabsor ||| The Tiberias garrison formed part of a rearguard stretching to [[Samakh, Tiberias|Samakh]] and on to [[Deraa]] which was intended to cover the retreat of three Ottoman armies. They were set up to delay the advance of the [[Desert Mounted Corps]] of the [[Egyptian Expeditionary Force]] (EEF) after the [[British Empire]] infantry victories at the [[Battle of Tulkarm]], [[Battle of Tabsor]] during the Battle of Sharon. These and other battles fought during the [[Battle of Nablus (1918)|Battle of Nablus]] including the [[Third Transjordan attack]], also part of the Battle of Megiddo, forced the retreat of the Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth]] Armies north towards Damascus. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Capture of Damascus (1918) ||| The loss of Tiberias ended Liman von Sanders' plans for a rearguard line extending from the Yarmuk via the Sea of Galilee and on to Lake Huleh. The remnants of the Tiberias and Samakh garrisons established a strong rearguard south of Lake Huleh, at Jisr Benat Yakub which was attacked and captured during the [[Capture of Damascus (1918)|pursuit to Damascus]]. ||| Aftermath ||| ||| +0 Capture of Tiberias (1918) ||| First Transjordan attack on Amman ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks in March–April and April–May 1918, by the [[Egyptian Expeditionary Force]] (EEF), which had been responsible for the Sinai and Palestine Campaign since March 1916, its commander General [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. He also ordered the front line be extended across the [[Judean Hills]] to the Mediterranean. Most of the British infantry and [[Yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of re-organisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. ||| Background ||| ||| +0 Capture of Tiberias (1918) ||| Second Battle of Amman ||| On 19 September, the [[XXI Corps (United Kingdom)|XXI Corps]] commanded by Lieutenant General [[Edward Bulfin]] had, with the support of a creeping barrage, broken through the Ottoman front line to begin the Battle of Sharon. In the afternoon the [[XX Corps (United Kingdom)|XX Corps]] commanded by Lieutenant General [[Philip Chetwode, 1st Baron Chetwode|Philip Chetwode]] was then ordered to begin the Battle of Nablus, supported by an artillery barrage. These infantry attacks by both the XX and XXI Corps, known as the Battle of Megiddo, continued until midday on 21 September, when a successful flanking attack by the XXI Corps, combined with the XX Corps assault, forced the Seventh and Eighth Armies to disengage. The Seventh Army retreated from the Nablus area towards the Jordan River, crossing at the [[Jisr ed Damieh]] bridge before the rearguard at Nablus was captured. The [[Desert Mounted Corps]] commanded by Lieutenant General [[Harry Chauvel]] advanced through the gap created by the XXI Corps infantry during the morning of 19 September to continue the Battle of Megiddo, almost [[encirclement|encircling]] the Ottoman forces fighting in the Judean Hills, capturing [[Battle of Nazareth|Nazareth]], [[Battle of Haifa (1918)|Haifa]], [[Capture of Afulah and Beisan|Afulah and Beisan]], [[Capture of Jenin|Jenin]] and [[Battle of Samakh|Samakh]] before advancing to Tiberias. During this time, [[Chaytor's Force]] commanded by Major General [[Edward Chaytor]] captured part of the retreating Ottoman and German column at the [[capture of Jisr ed Damieh]] bridge to cut off this line of retreat across the Jordan River. To the east of the river, as the Fourth Army began its retreat, Chaytor's Force advanced to capture [[Third Transjordan attack|Es Salt]] on 23 September. Amman was captured on 25 September during the [[Second Battle of Amman]] where a strong Fourth Army rearguard was defeated on 25 September. ||| Background ||| ||| +0 Capture of Tiberias (1918) ||| Sinai and Palestine Campaign ||| The '''Capture of Tiberias''' took place on 25 September 1918 during the [[Battle of Sharon]] which together with the [[Battle of Nablus (1918)|Battle of Nablus]] formed the set piece [[Battle of Megiddo (1918)|Battle of Megiddo]] fought between 19 and 25 September in the last months of the [[Sinai and Palestine Campaign]] of the First World War. During the cavalry phase of the Battle of Sharon the [[Desert Mounted Corps]] occupied the Esdraelon Plain (also known as the [[Jezreel Valley]] and the plain of [[Armageddon]]) 40–50 miles (64–80 km) behind the front line in the [[Judean Hills]]. One squadron from each of the [[3rd Light Horse Brigade|3rd]] and [[4th Light Horse Brigade]]s [[Australian Mounted Division]] attacked and captured [[Tiberias]] (on the western shore of the [[Sea of Galilee]] also known as Lake Tiberias), along with the [[Yildirim Army Group]]'s [[Ottoman Empire|Ottoman]] and [[German Empire|German]] garrison. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Spring Offensive ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks in March–April and April–May 1918, by the [[Egyptian Expeditionary Force]] (EEF), which had been responsible for the Sinai and Palestine Campaign since March 1916, its commander General [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. He also ordered the front line be extended across the [[Judean Hills]] to the Mediterranean. Most of the British infantry and [[Yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of re-organisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. ||| Background ||| ||| +0 Capture of Tiberias (1918) ||| Third Transjordan attack ||| The Tiberias garrison formed part of a rearguard stretching to [[Samakh, Tiberias|Samakh]] and on to [[Deraa]] which was intended to cover the retreat of three Ottoman armies. They were set up to delay the advance of the [[Desert Mounted Corps]] of the [[Egyptian Expeditionary Force]] (EEF) after the [[British Empire]] infantry victories at the [[Battle of Tulkarm]], [[Battle of Tabsor]] during the Battle of Sharon. These and other battles fought during the [[Battle of Nablus (1918)|Battle of Nablus]] including the [[Third Transjordan attack]], also part of the Battle of Megiddo, forced the retreat of the Ottoman [[Fourth Army (Ottoman Empire)|Fourth]], [[Seventh Army (Ottoman Empire)|Seventh]] and [[Eighth Army (Ottoman Empire)|Eighth]] Armies north towards Damascus. ||| ||| ||| +0 Capture of Tiberias (1918) ||| Western Front (World War I) ||| Following the [[First Transjordan attack on Amman|First Transjordan]] and the [[Second Transjordan attack on Shunet Nimrin and Es Salt|Second Transjordan]] attacks in March–April and April–May 1918, by the [[Egyptian Expeditionary Force]] (EEF), which had been responsible for the Sinai and Palestine Campaign since March 1916, its commander General [[Edmund Allenby]] ordered the [[occupation of the Jordan Valley]]. He also ordered the front line be extended across the [[Judean Hills]] to the Mediterranean. Most of the British infantry and [[Yeomanry]] [[cavalry]] regiments were redeployed to the [[Western Front (World War I)|Western Front]] to counter [[Erich Ludendorff|Ludendorff's]] [[Spring Offensive]] and were replaced by [[British India Army]] infantry and cavalry. As part of re-organisation and training, these newly arrived soldiers carried out a series of attacks on sections of the Ottoman front line during the summer months. These attacks were aimed at pushing the front line to more advantageous positions in preparation for a major attack, and to acclimatise the newly arrived infantry. It was not until the middle of September that the consolidated force was ready for large-scale operations. ||| Background ||| ||| +0 Capture of Wadi el Hesi ||| Battle of Beersheba (1917) ||| After the EEF victory at the [[Battle of Beersheba (1917)|Battle of Beersheba]], the [[Beersheba]] to Gaza line was broken in consequence of a series of attacks, at [[Battle of Tel el Khuweilfe|Tel el Khuweilfe]], [[Battle of Hareira and Sheria|Hareira and Sheria]] and [[Third Battle of Gaza|Gaza]]. The Ottoman 7th Division, one of the retreating [[Ottoman Army]] units, established a defensive line on the northern side of the Wadi el Hesi which included Sausage Ridge. After the wadi was fairly quickly crossed late on 7 November, Sausage Ridge protecting the road and railway along which the retreating Ottoman columns were traveling, was attacked on 8 November by the EEF's [[52nd (Lowland) Division]]. However, supported by an Ottoman cavalry attack on the British infantry's northern flank, the Ottoman rearguard strongly defended the ridge all day and most of the night, until it was finally captured early on 9 November. By then the rearguard had successfully withdrawn along with the withdrawing Ottoman columns. ||| ||| ||| +0 Capture of Wadi el Hesi ||| Sinai and Palestine Campaign ||| The '''Capture of Wadi el Hesi''' and the associated Sausage Ridge, began during the evening of 7 November 1917, was fiercely fought for during 8 November and not cleared until the early hours of 9 November, at the beginning of the pursuit phase of the [[Southern Palestine Offensive]] in the [[Sinai and Palestine Campaign]] during World War I. The advancing [[British Empire]] units of the [[Egyptian Expeditionary Force]] (EEF) were held by rearguard units of the withdrawing [[Ottoman Empire]] units of the [[Yildirim Army Group]], holding a strategically strong position to the north of [[Gaza City|Gaza]]. ||| ||| ||| +0 Capture of Wadi el Hesi ||| Third Battle of Gaza ||| After the EEF victory at the [[Battle of Beersheba (1917)|Battle of Beersheba]], the [[Beersheba]] to Gaza line was broken in consequence of a series of attacks, at [[Battle of Tel el Khuweilfe|Tel el Khuweilfe]], [[Battle of Hareira and Sheria|Hareira and Sheria]] and [[Third Battle of Gaza|Gaza]]. The Ottoman 7th Division, one of the retreating [[Ottoman Army]] units, established a defensive line on the northern side of the Wadi el Hesi which included Sausage Ridge. After the wadi was fairly quickly crossed late on 7 November, Sausage Ridge protecting the road and railway along which the retreating Ottoman columns were traveling, was attacked on 8 November by the EEF's [[52nd (Lowland) Division]]. However, supported by an Ottoman cavalry attack on the British infantry's northern flank, the Ottoman rearguard strongly defended the ridge all day and most of the night, until it was finally captured early on 9 November. By then the rearguard had successfully withdrawn along with the withdrawing Ottoman columns. ||| ||| ||| +0 Capture of Wurst Farm ||| Battle of the Menin Road Ridge ||| The '''Capture of Wurst Farm''' was an attack by the British [[58th (2/1st London) Division]] (58th Division) against the German [[36th Division (German Empire)|36th Division]] on 20 September 1917, near [[Ypres]], Belgium, during the [[Battle of the Menin Road Ridge]], part of the [[Battle of Passchendaele|Third Battle of Ypres]] (Battle of Passchendaele). Wurst Farm was at the lower end of Gravenstafel Ridge and several British attacks in the area since 31 July had been repulsed by the Germans. The British began a desultory bombardment on 31 August and the shelling became intense from 13 September, to 'soften' the German defences, except in the area of the [[Fifth Army (United Kingdom)|Fifth Army]] (General [[Hubert Gough]]), where the slow bombardment continued until the last {{nowrap|24 hours,}} before a hurricane bombardment was fired, to gain surprise. ||| ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Battle of Fort Royal ||| In the West Indies, Rodney, having received news of the breach with the Netherlands early in the year, [[Capture of Sint Eustatius|took the island of Sint Eustatius]], which had been a great depot of contraband of war, on February 3, 1781. He also authorized [[Dutch West Indies campaign|privateering against other Dutch targets]], which resulted in the capture of three Dutch colonial outposts in [[South America]]. Rodney was accused of applying himself so entirely to seizing and selling the booty taken at Sint Eustatius that he would not allow his second in command, Sir [[Samuel Hood, 1st Viscount Hood|Samuel Hood]], who had recently joined him, to take proper measures to impede the arrival of French forces known to be on their way to Martinique. The French admiral, the [[François Joseph Paul de Grasse|comte de Grasse]], reached the island with reinforcements in April, [[Battle of Fort Royal|driving Hood away]] in the process. De Grasse then embarked on a diversionary attack on St. Lucia that masked the detachment of some of his fleet [[Invasion of Tobago|to capture Tobago]]. De Grasse and Rodney then engaged in a series of skilful but ultimately fruitless operations in which the former sought advantage to attack British holdings and otherwise avoid battle. ||| 1780-1781 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Battle of Saint Kitts ||| De Grasse returned to the West Indies in November 1781, where he was followed by Hood, and resumed attacks on the British islands. In January and February 1782, de Grasse [[Siege of Brimstone Hill|conquered]] [[Saint Kitts|St. Christopher]], while a smaller French fleet under [[Armand of Kersaint|Kersaint]] retook the Dutch South American colonies, and de Barras took Sint Eustatius from Britain. De Grasse's action at St. Christopher was [[Battle of Saint Kitts|vigorously opposed]] by Hood, who with a much inferior force first drove de Grasse from his anchorage at [[Basseterre]] and then repulsed his repeated attacks. Hood's action was insufficient, however, to prevent the French from successfully gaining control of the island. ||| 1782 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Battle of the Chesapeake ||| On the coast of North America, the war came to its climax. When Hood arrived off the [[Chesapeake Bay]] in late August, de Grasse had not yet arrived, since he had deliberately taken a longer route to avoid notice. Hood proceeded on to New York, bringing news of de Grasse's approach (although ignorant of his strength) to Arbuthnot's successor, Admiral [[Thomas Graves, 1st Baron Graves|Thomas Graves]]. Word that [[Jacques-Melchior Saint-Laurent, Comte de Barras|de Barras]] had sailed from Newport with the entire French fleet led Graves to lead the combined fleet south to the Chesapeake, where de Grasse had in the meantime arrived. In the pivotal [[Battle of the Chesapeake]] on September 5, de Grasse got the better of the British, who ended up retreating back to New York while de Barras slipped into the Chesapeake carrying the French siege train. The naval blockade completed the encirclement of the British army of [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]] at [[Yorktown, Virginia]], where he was [[Siege of Yorktown|compelled to surrender]] on October 19. Cornwallis' surrender spelled the end of significant military operations in North America, and led to the start of peace negotiations. While they went on, the war continued in other theaters. ||| 1780-1781 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Battle of the Saintes ||| The next objective of the French was to join with a Spanish fleet for an attack on [[Jamaica]]. Admiral Rodney, having returned to his command with reinforcements, countered this plan with a series of operations which culminated in the [[Battle of the Saintes]] on April 12, 1782. ||| 1782 ||| Battle of the Saintes ||| +0 Caribbean theater of the American Revolutionary War ||| Capture of Grenada (1779) ||| On January 6, 1779, Admiral [[Jack Byron]] reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another and building in strength. But in June, while Byron went to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first [[Capture of Saint Vincent|captured]] [[Saint Vincent (island)|St Vincent]], and then [[Capture of Grenada (1779)|Grenada]]. Admiral Byron sailed in hopes of saving first one and then the other, arrived off Grenada shortly after it fell. An [[Battle of Grenada|indecisive action]] was fought off Grenada on July 6, 1779 in which Byron's fleet was significantly damaged. The war died down in the West Indies, with Byron repairing his fleet, and d'Estaing failing to capitalize on French naval superiority. Byron returned home in August. D'Estaing was ordered back to France in August, but instead answered appeals from the Americans for assistance in retaking [[Savannah, Georgia]], which [[Capture of Savannah|had fallen]] to British forces in December 1778. After the unsuccessful [[Siege of Savannah]] d'Estaing sailed for France. ||| 1778-1779 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Invasion of Dominica ||| News of France's entry into the war reached the French governor at [[Martinique]], the [[François Claude Amour, marquis de Bouillé|marquis de Bouillé]], in August 1778. He immediately planned and executed the [[Invasion of Dominica]], successfully taking the island on September 7. ||| 1778-1779 ||| ||| +0 Caribbean theater of the American Revolutionary War ||| Siege of Savannah ||| On January 6, 1779, Admiral [[Jack Byron]] reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another and building in strength. But in June, while Byron went to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first [[Capture of Saint Vincent|captured]] [[Saint Vincent (island)|St Vincent]], and then [[Capture of Grenada (1779)|Grenada]]. Admiral Byron sailed in hopes of saving first one and then the other, arrived off Grenada shortly after it fell. An [[Battle of Grenada|indecisive action]] was fought off Grenada on July 6, 1779 in which Byron's fleet was significantly damaged. The war died down in the West Indies, with Byron repairing his fleet, and d'Estaing failing to capitalize on French naval superiority. Byron returned home in August. D'Estaing was ordered back to France in August, but instead answered appeals from the Americans for assistance in retaking [[Savannah, Georgia]], which [[Capture of Savannah|had fallen]] to British forces in December 1778. After the unsuccessful [[Siege of Savannah]] d'Estaing sailed for France. ||| 1778-1779 ||| ||| +0 Carleton's Raid ||| Royalton Raid ||| The British losses during the raid were 1 man killed by a falling tree, 1 bateaux lost with 17 men on the lake on the return voyage to Ile aux Noix and 1 wounded at the fight at Moore's Mill. This raid was followed up in 1780 by multiple raids called the Burning of the Valleys, with Major Carleton leading a force down Lake Champlain again while [[Sir John Johnson]] lead a force in the [[Mohawk Valley|Mohawk]] and [[Schoharie Creek|Schoharie Valley]], and Lieutenant Houghton leading a raid towards the [[Connecticut River]] in the [[Royalton Raid]]. ||| Attacks ||| ||| +0 Carnation Revolution ||| Angolan Civil War ||| [[Angola]] would later enter into a decades-long [[Angolan Civil War|civil war]] which involved nations like the [[Soviet Union]], [[Cuba]], [[South Africa]], and the [[United States]]. Millions of Angolans would die in the aftermath of colonialism, due either to the violence of the armed conflict or malnutrition and disease. ||| Aftermath ||| Decolonisation ||| +0 Carolinas Campaign ||| Siege of Petersburg ||| After Sherman captured Savannah, the culmination of his [[Sherman's March to the Sea|march to the sea]], he was ordered by Union Army general-in-chief [[Lieutenant General (United States)|Lt. Gen.]] [[Ulysses S. Grant]] to embark his army on ships to reinforce the [[Army of the Potomac]] and the [[Army of the James]] in Virginia, where Grant was bogged down in the [[Siege of Petersburg]] against Confederate General [[Robert E. Lee]]. Sherman had bigger things in mind. He predicted on January 5, 1865: 'I do think that in the several grand epochs of this war, my name will have a prominent part.' He persuaded Grant that he should march north through the Carolinas instead, destroying everything of military value along the way, similar to his march to the sea through [[Georgia (U.S. state)|Georgia]]. Sherman was particularly interested in targeting [[South Carolina]], the first state to [[secession|secede]] from the Union, for the effect it would have on Southern morale. ||| Background and opposing forces ||| ||| +0 Castle Hill convict rebellion ||| Battle of Vinegar Hill ||| The '''Castle Hill Rebellion''' of 1804 was a [[rebellion]] by [[Convictism in Australia|convicts]] against colonial authority in the [[Castle Hill, New South Wales|Castle Hill]] area of the [[British Empire|British colony]] of [[Colony of New South Wales|New South Wales]]. The rebellion culminated in a battle fought between convicts and the [[Colonial forces of Australia]] on 5 March 1804 at [[Rouse Hill, New South Wales|Rouse Hill]], dubbed the '''Second Battle of Vinegar Hill''' after the first one of 1798 [[Battle of Vinegar Hill]] in [[Ireland]]. It was the first and only major convict uprising in [[History of Australia|Australian history]] suppressed under [[martial law]]. ||| ||| ||| +0 Caucasus Campaign ||| Battle of Tannenberg ||| Before the war, Russia had [[Russian Caucasus Army (World War I)|Russian Caucasus Army]] with 100,000 men under the nominal command of the Governor General of the Caucasus [[Vorontsov|Illarion Vorontsov-Dashkov]]. The real commander was his chief of staff General [[Nikolai Nikolaevich Yudenich|Nikolai Yudenich]]. At the onset of the Caucasus Campaign, the Russians had to redeploy almost half of their forces to the Prussian front due to the defeats at the [[Battle of Tannenberg (1914)|Battle of Tannenberg]] and the [[First Battle of the Masurian Lakes|Masurian Lakes]], leaving behind just 60,000 troops. This Army had Armenian generals [[Tovmas Nazarbekian|Nazarbekov]], [[Movses Silikyan|Silikian]], and Pirumov who stayed in Caucasia. The Russian Caucasus Army dissipated in 1917 as the regular Russian regiments deserted the front line after the revolution. By 1917, when the Russian Caucasus Army disintegrated, there were 110,000–120,000 soldiers of Armenian ethnicity. ||| Forces ||| ||| +0 Caucasus Campaign ||| Eastern Front (World War I) ||| Russia viewed the Caucasus front as secondary to the [[Eastern Front (World War I)|Eastern Front]]. The Eastern Front had the most Russian manpower and resources. Russia had taken the fortress of [[Kars]] from the Turks during the [[Russo–Turkish War, 1877–1878|Russo-Turkish War]] in 1877 and feared a campaign into the Caucasus aimed at retaking Kars and the port of Batum. In March 1915, when the [[Russian Empire|Russian]] foreign minister [[Sergey Sazonov]] in a meeting with [[British Empire|British]] ambassador [[George Buchanan (diplomat)|George Buchanan]] and French Ambassador [[Maurice Paléologue]] stated that a lasting postwar settlement demanded full Russian possession of the capital city of the Ottoman Empire, the straits of [[Bosphorus]] and [[Dardanelles]], the [[Sea of Marmara]], southern [[Thrace]] up to the Enos-Midia line as well as parts of the [[Black Sea Region, Turkey|Black Sea coast]] of Anatolia between the Bosphorus, the [[Sakarya River]] and an undetermined point near the Bay of [[Izmit]]. ||| Background ||| ||| +0 Caucasus Campaign ||| Russian Revolution ||| On February 23, 1917, the Russian advance was halted following the [[Russian Revolution of 1917|Russian Revolution]], and later the disintegrated [[Russian Caucasus Army (World War I)|Russian Caucasus Army]] was replaced by the forces of the newly established Armenian state, comprised from the previous [[Armenian volunteer units]] and [[Armenian irregular units|irregular units]]. During 1918 the region also saw the establishment of the Central Caspian Dictatorship, the [[Republic of Mountainous Armenia]] and an Allied force named [[Dunsterforce]] which was composed of elite{{citation needed|reason=Elite? Really?|date=June 2014}} troops drawn from the Mesopotamian and Western Fronts. The Ottoman Empire and German Empire had a hot conflict at Batumi with the arrival of the [[German Caucasus Expedition]] whose prime aim was to secure oil supplies. ||| ||| ||| +0 Central Plains War ||| Mukden Incident ||| China was still in turmoil, though; cliques and factions within the Kuomintang were not cemented with the retaliation of Guangdong clique leader [[Hu Hanmin]] being placed under house arrest by Chang Kai-shek, and the opposition of southern KMT key leaders that forced Chiang Kai Shek's resignation for the second time, in addition to the Communist Uprising in China's hinterland, and lack of fortification towards Japanese invasion in southern China of [[January 28 Incident]] following the creation of [[Manchukuo]] in Northeast China and [[Mukden Incident]] in North China. ||| ||| ||| +0 Central Plains War ||| Northern Expedition ||| After Sun's death in 1925, cliques in the Kuomintang began to surface. A power struggle between Chiang and Wang Jingwei split the KMT. Chiang was able to use his influence as the commandant of [[Whampoa Academy]] to achieve eventual victory, and Wang was forced to leave the country for a few years. In 1926 Chiang was chosen{{clarify|reason=who chose him?|date=September 2012}} as the commander of the [[National Revolutionary Army]] and launched the [[Northern Expedition]]. The legitimacy of Chiang's government was thus seemingly decided. ||| Background ||| Rise of Chiang Kai-shek ||| +0 Centralia Massacre (Missouri) ||| Battle of Atlanta ||| At 9:00 a.m. on September 27, Anderson with about 80 guerrillas, some dressed in stolen Union Army uniforms, moved into Centralia to cut the North Missouri Railroad. The guerrillas looted the town and reportedly drank whiskey from stolen boots. Anderson blocked the rail line, and the engineer of an approaching train failed to realize it until too late, since the men he saw were wearing blue uniforms. The guerrillas swarmed over the train. The 125 passengers were divided between civilians and soldiers. A total of 23 Union soldiers were aboard, all on leave after the [[Battle of Atlanta]] and heading to their homes in northwest Missouri or southwest [[Iowa]]. ||| The Centralia Massacre ||| ||| +0 Centralia Massacre (Missouri) ||| United States presidential election, 1864 ||| In the fall of 1864, the Confederates, faced with a rapidly deteriorating position, launched an invasion of northern [[Missouri]]. It was led by General [[Sterling Price]] and his [[Missouri State Guard]]. The object was to influence the [[United States presidential election, 1864|1864 presidential election]] by capturing [[St. Louis, Missouri|St. Louis]] and the state capital at [[Jefferson City, Missouri|Jefferson City]]. As part of his strategy, Price encouraged [[guerrilla warfare]], especially the disruption of the railroads. [[William T. Anderson|'Bloody Bill' Anderson]] and his guerrilla company were among those who took part. ||| Background ||| ||| +0 Chambersburg Raid ||| Battle of Harpers Ferry ||| * [[Battle of Harpers Ferry|Harpers Ferry]] ||| ||| ||| +0 Chambersburg Raid ||| Peninsula Campaign ||| The '''Chambersburg Raid,''' often identified as '''J.E.B. Stuart's Chambersburg Raid''', was a [[Confederate States Army]] cavalry raid into Maryland and Pennsylvania on October 10-12, 1862 during the [[American Civil War]] (Civil War). It became known as Stuart's 'second ride around McClellan' because it duplicated Stuart's reconnaissance ride completely around the [[Union Army|Union]] [[Army of the Potomac]] under [[Major general (United States)|Major General]] [[George B. McClellan]] during the [[Peninsula Campaign]]. ||| ||| ||| +0 Charge of the Light Brigade ||| Battle of Waterloo ||| On 2 August 1890, trumpeter Landfrey, from the 17th Lancers, who sounded the bugle charge at Balaclava, made a recording on an [[Thomas Edison|Edison]] cylinder that can be heard [[iarchive:EDIS-SWDPC-01-04|here]], with a bugle which had been used at [[Battle of Waterloo|Waterloo]] in 1815. ||| Aftermath ||| ||| +0 Charles XII's invasion of Poland ||| Battle of Fraustadt ||| | [[Battle of Fraustadt|Fraustadt]] || 9,400 || 20,000 || 1,400 || 15,277 || Decisive Swedish victory ||| Battles ||| ||| +0 Charles XII's invasion of Poland ||| Battle of Grodno (1706) ||| | [[Battle of Grodno (1706)|Grodno]] || 20,000 || 23,000 || 100 || 17,000 || Swedish victory ||| Battles ||| ||| +0 Charles XII's invasion of Poland ||| Battle of Narva (1700) ||| After forcing a peace treaty with Denmark and annihilating the Russian army at [[Battle of Narva (1700)|Narva]], Karl XII's plan was to beat the Saxon army; a necessity for the Swedish army to march for [[Pskov]] and [[Moscow]] and bring Russia the final blow. The two forces collided on the ninth of July ([[Swedish calendar]]) of 1701 near the Swedish city of [[Riga]]. The Saxons had entrenched themselves with heavy artillery support south of the river Düna, but when the Swedes attacked their casualties were limited to 100 men dead, due to the poor accuracy of the enemy artillery and the water that negated explosive shells. The Saxon lines collapsed as soon as the Swedish army landed on the river bank, and up to 2,000 of Augustus' soldiers were killed. However, the Saxon army and their Russian reinforcements managed to retreat and maintain a sizeable force near the Swedish border. Karl XII was now forced to choose between marching into Poland and be attacked from behind by the Russians or the other way around. He chose the former, and thus the invasion of Poland had begun. ||| The Swedish Invasion ||| ||| +0 Charles XII's invasion of Poland ||| War of the Spanish Succession ||| After crushing his enemies once more in the [[battle of Klissow]], Karl XII considered a quick strike into Saxony and destroy the heart of Augustus' government (Poland-Lithuania and Saxony were in a personal union at this time, and the entire Polish government was located in Saxony). However, he rejected this idea, partly because the naval powers of Europe had claimed that such an operation into the [[Holy Roman Empire]] would benefit the French king [[Louis XIV]], who was at war with Leopold I in the [[War of the Spanish Succession]]. Another important factor to why the campaign was abandoned was Karl XII's will to create a public opposition against Augustus in Poland, which would be difficult if the people were victims to a Swedish invasion. Because of this, Karl XII's upcoming campaigns would be aimed at destroying the Polish military in the field while avoiding sieges or skirmishes. Only by crushing the Polish-Lithuanian army, Karl XII thought he would be able to turn the Polish people against Augustus. ||| The Swedish Invasion ||| ||| +0 Chernobyl disaster ||| Atomic bombings of Hiroshima and Nagasaki ||| Four hundred times more radioactive material was released from Chernobyl than by the [[Atomic bombings of Hiroshima and Nagasaki|atomic bombing]] of [[Hiroshima]]. The disaster released 1/100 to 1/1000 of the total amount of radioactivity released by [[nuclear weapons testing]] during the 1950s and 1960s. ||| Effects ||| National and international spread of radioactive substances ||| +0 Cherry Valley massacre ||| Battle of Cobleskill ||| Brant began his campaign in late May with a [[Battle of Cobleskill|raid on Cobleskill]], and raided other frontier communities throughout the summer. ||| Background ||| ||| +0 Cherry Valley massacre ||| Battle of Wyoming ||| The raiders were under the overall command of [[Walter Butler (Loyalist)|Walter Butler]], who exercised little authority over the Indians on the expedition. Historian Barbara Graymont describes Butler's command of the expedition as 'criminally incompetent'. The Seneca were angered by accusations that they had committed atrocities at the [[Battle of Wyoming]], and the colonists' [[Raid on Unadilla and Onaquaga|recent destruction]] of their forward bases of operation at [[Unadilla (village), New York|Unadilla]], [[Onaquaga]], and [[Tioga, New York|Tioga]]. Butler's authority with the Indians was undermined by his poor treatment of [[Joseph Brant]], the leader of the Mohawks. Butler repeatedly maintained, against accusations that he permitted the atrocities to take place, that he was powerless to restrain the Seneca. ||| ||| ||| +0 Cherry Valley massacre ||| Battles of Saratoga ||| With the failure of British General [[John Burgoyne]]'s [[Saratoga campaign|campaign to the Hudson]] after the [[Battles of Saratoga]] in October 1777, the [[American Revolutionary War]] in upstate [[New York]] became a frontier war. ||| Background ||| ||| +0 Chiapas conflict ||| Mexican War of Independence ||| Historically Mexico is characterized as a country founded upon a Spanish elite system which featured [[limpieza de sangre]] or cleanliness of blood, a legal system characterized by [[feudal land tenure]], and an economic system which featured an exploitative system which furthered social inequalities. The issue over [[Land rights#Indigenous land rights|land rights]] and [[social rights]] dates back to the [[Mexican War of Independence]] when the colonial Mexican-born people of Spanish origin known as the [[Criollo people|Criollos]] rebelled against the Spanish crown as a means of protecting and furthering their own land and social rights against foreign Spanish authorities. ||| History and socio-political background ||| Post-Colonial Mexico ||| +0 Chilean War of Independence ||| Crossing of the Andes ||| The liberating [[Army of the Andes]] was prepared by 1817. After a [[Crossing of the Andes|difficult crossing the Andes]], royalist forces led by [[Rafael Maroto]] were encountered on the plain of Chacabuco, to the north of Santiago. The resulting [[Battle of Chacabuco]], on February 12, 1817, was a decisive victory for the independence forces. As a result, the patriots re-entered Santiago. San Martín was proclaimed Supreme Director, but he declined the offer and put O'Higgins in the post, where he would remain until 1823. On the first anniversary of the Battle of Chacabuco, O'Higgins formally declared independence. ||| Reconquista ||| ||| +0 Chilean War of Independence ||| May Revolution ||| Inspired by the [[May Revolution]] in Argentina, the autonomy movement had also propagated through the criollo elite. They resented the illegal arrests and, together with the news that Cádiz was all that was left of a free Spain, finally solidified in their opposition to the Governor. Brigadier García Carrasco was suspended from office and forced to resign on July 16, 1810, to be in turn replaced by the next most senior soldier, [[Mateo de Toro Zambrano, 1st Count of la Conquista|Mateo de Toro Zambrano]] [[Count of la Conquista]], even though a legitimate Governor, [[Francisco Javier de Elío]], had already been appointed by the [[Viceroy of Peru]]. ||| Background ||| ||| +0 Chilean War of Independence ||| Peninsular War ||| At the start of 1808, the [[Captaincy General of Chile]]{{spaced ndash}}one of the smallest and poorest colonies in the [[Spanish Empire]]{{spaced ndash}}was under the administration of [[Luis Muñoz de Guzmán]], an able, respected and well-liked [[Royal Governor of Chile|Royal Governor]]. In May 1808 the overthrow of [[Charles IV of Spain|Charles IV]] and [[Ferdinand VII]], their replacement by [[Joseph Bonaparte]] and the start of the [[Peninsular War]] plunged the empire into a state of agitation. In the meantime, Chile was facing its own internal political problems. Governor Guzmán had suddenly died in February of that year and the crown had not been able to appoint a new governor before the invasion. After a brief interim regency by [[Juan Rodríguez Ballesteros]], and according to the succession law in place at the time, the position was laid claim to and assumed by the most senior military commander, who happened to be Brigadier [[Francisco Antonio García Carrasco|Francisco García Carrasco]]. ||| Background ||| ||| +0 Chincha Islands War ||| Chilean War of Independence ||| The recently named Spanish [[Prime Minister of Spain|Prime Minister]], [[Ramón María Narváez y Campos, Duke of Valencia|Ramón María Narváez]] disapproved of the unilateral actions taken by Admiral Pinzón and replaced him with Vice Admiral [[Juan Manuel Pareja]], formerly Minister of the Navy. Admiral Pareja had been born in Peru, and his father, Brigadier [[Antonio Pareja]], had died in Chile in 1813 while fighting for Spain during the [[Chilean War of Independence]]. Narváez's conciliatory opinion soon changed, and he dispatched another four warships to reinforce the Pacific fleet. ||| Chincha islands occupation ||| ||| +0 Chincha Islands War ||| Peruvian War of Independence ||| When news of the incident reached Admiral Pinzón, he returned with his fleet to Peru on November 13 and demanded that the government issue an apology and reparations be made to the affected Spanish nationals. In response, the Peruvians took the position that the episode was an internal police matter better handled by the Peruvian justice system and that no apology was due. At this juncture, the Spanish government in Madrid decided to also demand payment of Peruvian debts stemming from the [[Peruvian War of Independence|War of Independence]], and it sent deputy [[Eusebio de Salazar y Mazaredo]] to settle the issue directly with the Peruvian authorities. ||| Talambó incident ||| ||| +0 Chinese Civil War ||| Mukden Incident ||| In 1930 the [[Central Plains War]] broke out as an internal conflict of the KMT. It was launched by [[Feng Yuxiang]], [[Yan Xishan]] and [[Wang Jingwei]]. The attention was turned to root out remaining pockets of Communist activity in a series of [[Encirclement Campaigns|encirclement campaigns]]. There were a total of five campaigns. The [[first Encirclement Campaign against Hubei-Henan-Anhui Soviet|first]] and [[second Encirclement Campaign against Honghu Soviet|second]] campaigns failed and the [[third Encirclement Campaign against Honghu Soviet|third]] was aborted due to the [[Mukden Incident]]. The [[fourth Encirclement Campaign against Hubei-Henan-Anhui Soviet|fourth campaign]] (1932–1933) achieved some early successes, but Chiang's armies were badly mauled when they tried to penetrate into the heart of Mao's [[Soviet Chinese Republic]]. During these campaigns KMT columns struck swiftly into Communist areas, but were easily engulfed by the vast countryside and were not able to consolidate their foothold. ||| Communist insurgency (1927&ndash;1937) ||| ||| +0 Chinese Civil War ||| Second Sino-Japanese War ||| The war represented an [[Ideology|ideological]] split between the [[Communism|Communist]] CPC and the KMT's brand of [[Nationalism]]. It continued intermittently until late 1937, when the two parties came together to form the [[Second United Front]] to counter a [[Second Sino-Japanese War|Japanese invasion]] and prevent the country from adding to an earlier invasion into Manchuria in 1931. China's full-scale civil war resumed in 1946, a year after the end of hostilities with Japan. Four years later came the cessation of major military hostilities, with the newly founded People's Republic of China controlling mainland China (including [[Hainan]]) and the Republic of China's jurisdiction being restricted to Taiwan, [[Penghu]], [[Kinmen|Quemoy]], [[Matsu Islands|Matsu]] and [[list of islands of the Republic of China|several outlying islands]]. ||| ||| ||| +0 Christmas Battles ||| Battle of Verdun ||| After the failure of the 1916 campaigns on the [[Romania]]n territory the Russian commanders of the 12th Army received an order to attack on the Riga front. It was planned to attract the German reserve troops, thus helping [[Antanta|their allies]] to resist on the [[Battle of Verdun|Verdun]] battlefield. In mid-December 1916, frost started, making it possible to navigate through the frozen [[bog]] and to force the German fortifications. It was quickly decided to launch an attack at [[Christmas]]. The main objective was to take Jelgava (Mitau). ||| Battle ||| ||| +0 Christmas Uprising ||| Battle of Vittorio Veneto ||| During fall 1918 as [[World War I]] was drawing to a close, the Kingdom of Italy (led by King [[Victor Emmanuel III of Italy|Victor Emmanuel III]] and prime minister [[Vittorio Emanuele Orlando]]) was embittered by the 29 October 1918 proclamation of the [[State of Slovenes, Croats and Serbs]] provisional entity, established in obvious preparation for the impending merger with the Kingdom of Serbia into a joint [[South Slavs|South Slavic]] state. The proclamation came against the backdrop of the [[Battle of Vittorio Veneto]] in which the Entente led by the [[Royal Italian Army]] was in the process of soundly defeating the [[Austro-Hungarian Army]]. ||| Italian role ||| ||| +0 Chunnakam Police station massacre ||| Four Four Bravo ||| Many Tamil youth had been previously arrested since the [[Four Four Bravo|escalation of conflict]] between the Army and the Tamil groups in the [[Jaffna peninsula|peninsula]]. Almost all of them were arrested under the draconian Prevention of Terrorism Act (POTA) without evidence and were kept in various government buildings in the region. ||| Massacre ||| ||| +0 Combat Skyspot ||| Operation Barrel Roll ||| Commando Club was resumed by November 21 when F-105s attacked the Yên Bái airfield (also on December 1 & 23,{{r|Plunkett20060622}} January 5, & February 11.){{r|34tfsthuds}}{{rp|d}} LS-85 directing bombings of Laos' [[Ban Phougnong]] truck park on December 22, a target '25 miles west of [LS-85's TACAN] Channel 97' on December 28, and 'a target 20 miles east of San Neua' December 31; and 'Commando Club under Wager Control' bombed the Kim Lo Army Barracks northwest of Hanoi on February 7, 1968,{{r|34tfsthuds}}{{Rp|c}} a Route Pack V target on February 11, and the 'Phuc Yen (JCS 6) airfield' & 'the [[Ban Nakay]] truck park in Northern Laos' on February 19.{{r|34tfsthuds}}{{rp|d}} [[Operation Arc Light|Arc Light]] B-52s and other aircraft also flew missions of Commando Club, which were 20% (less than 1 per day) of all bombing missions on North Vietnam targets during November 1-March 10. Commando Club airstrikes against Laos targets included operations to interdict enemy advances on LS-85 such as the [[Battle of Route 602]]. 'On 21 February [[William H. Sullivan|the [Laos] Ambassador]] authorized the Local Area Defense Commander (alternately the senior CIA officer or the FAC) to use the TSQ radar to direct any and all strikes within 12 kilometers of the summit' and 'between the 20th and 29th, 342 sorties hit within 30 kilometers of Phou Phathi.'{{r|Vallentiny}} Commando Club operations during the [[Battle of Route 602]] were part of the approximately 400 Commando Club missions out of the '1,472 [[Operation Barrel Roll|BARREL ROLL Strike missions]]' flown 'around' LS-85 from November 1 - March 10.{{r|8tfw}} Despite the bombing campaign, the enemy reached LS-85 and it was captured during the [[Battle of Lima Site 85]] on March 10/11, 1968. ||| Operations ||| Commando Club ||| Wager Control missions +0 Combat of Barquilla (1810) ||| Siege of Ciudad Rodrigo (1810) ||| The '''Combat of Barquilla''' (11 July, 1810) was a minor skirmish between British and French forces two days after the [[Siege of Ciudad Rodrigo (1810)|Siege of Ciudad Rodrigo]], in which [[Robert Craufurd]] attacked French [[grenadiers]] covering a [[foraging]] party. The French grenadiers, formed in a single [[Infantry square|square]], made a fighting withdrawal, fending off British [[cavalry]] and escaping unscathed. ||| ||| ||| +0 Combat of Schöngrabern ||| Battle of Hollabrunn (1809) ||| Following [[Johann von Klenau]]'s successful Austrian rearguard action at [[Battle of Hollabrunn (1809)|Hollabrunn]] the day before, Austrian Prince Reuss, commander of V Korps, to which several additional units were attached for a total of 27,000 men and 32 cannons, took position near Schöngrabern. Reuss's orders were to form a rearguard and delay the enemy before him, preventing them from arriving at [[Znaim]], where the main Austrian force was massed and combat was set to begin. Opposite to Reuss lay the [[Vanguard (military formation)|vanguard]] of the [[Marshal of the Empire|Marshal]] [[André Masséna]]'s IV Corps, under the overall command of General Legrand. Legrand's command was 11,000 men and 24 cannons strong and included the 1st division of IV Corps and the Corps cavalry. Masséna's orders were to push on towards [[Haugsdorf]] and then head to Znaim where General [[Auguste de Marmont]]'s XI Corps had made contact with the enemy's main force. ||| Context and battle ||| ||| +0 Communist Insurgency War ||| Revolutions of 1989 ||| The Communist Insurgency War came to an end on 2 December 1989 when the MCP signed a [[Peace Agreement of Hat Yai 1989|peace accord]] with the Malaysian government at [[Hatyai]] in [[southern Thailand]]. This coincided with the [[Revolutions of 1989|collapse]] of the [[Eastern Bloc]] [[Communist]] regimes. ||| ||| ||| +0 Communist Insurgency War ||| Vietnam War ||| The '''Communist Insurgency War''', also known as the '''Second Malayan Emergency''', ''(Malay: '''Perang Insurgensi Melawan Pengganas Komunis''' or '''Perang Insurgensi Komunis''' and '''Darurat Kedua''')'' occurred in [[Malaysia]] from 1968 to 1989, involving the [[Malayan Communist Party]] (MCP) and Malaysian Government security forces. Following the end of the [[Malayan Emergency]] in 1960, the predominantly [[Malaysian Chinese|ethnic Chinese]] [[Malayan National Liberation Army]], the armed wing of the MCP, had retreated to the Malaysian-Thailand border where it had regrouped and retrained for future offensives against the Malaysian government. The Communist Insurgency War officially began when the MCP ambushed security forces in [[Kroh|Kroh–Betong]], in the northern part of [[Peninsular Malaysia]], on 17 June 1968. The conflict also coincided with renewed tensions between ethnic [[Malay people|Malays]] and Chinese in peninsular Malaysia and the [[Vietnam War]]. ||| ||| ||| +0 Conflict in Najran ||| Saudi Arabian-led intervention in Yemen ||| '''Conflict in Nadzhran''' is armed conflicts between troops of Saudi Arabia and Houthi insurgents in the [[Najran Region|province Nadzhran]] of [[Saudi Arabia]], and also rocket attacks of border territories of Nadzhran. The conflict began because happened [[Saudi Arabian-led intervention in Yemen|invasion into Yemen]] of the coalition led by Saudi Arabia. ||| ||| ||| +0 Conscription Crisis of 1917 ||| Battle of the Somme ||| After the [[Battle of the Somme]], Canada was in desperate need to replenish its supply of soldiers; however, there were very few volunteers to replace them. The recruiting effort in Quebec had failed, and Canada turned to its only unused option: [[conscription]]. ||| Conscription Crisis 1917 ||| ||| +0 Convoy Faith ||| Burma Campaign ||| In February 1943 the British Government decided to transfer the recently raised [[81st (West Africa) Division]] from West Africa to India to take part in the [[Burma Campaign]]. This unit required much more shipping space than other British divisions, as its fighting units were supported by thousands of [[Porter (carrier)|porters]]. To facilitate the division's movement, additional troopships were assigned to the regular WS convoys. ||| Prelude ||| ||| +0 Convoy HG 76 ||| Battle of the Atlantic ||| It was notable in seeing the destruction of four German [[U-boat]]s for the loss of four ships, which was regarded as the first major victory for the Allies in the [[Battle of the Atlantic (1939-1945)|Battle of the Atlantic]]. ||| ||| ||| +0 Convoys HX 229/SC 122 ||| Battle of the Atlantic ||| The battle around convoys '''HX 229''' and '''SC 122''' occurred during March 1943 in the [[Battle of the Atlantic (1939-1945)|Battle of the Atlantic]], and was the largest convoy battle of [[World War II]]. British merchant shipping was formed into [[convoy]]s for protection against German submarine attack. ''[[Kriegsmarine]]'' tactics against convoys employed multiple-submarine [[Wolfpack (naval tactic)|wolfpack]] tactics in nearly simultaneous surface attacks at night. Patrolling aircraft restricted the ability of submarines to converge on convoys during daylight. The North Atlantic winters offered the longest periods of darkness to conceal surfaced submarine operations. The winter of 1942–43 saw the largest number of submarines deployed to the mid-Atlantic before comprehensive anti-submarine aircraft patrols could be extended into that area. ||| ||| ||| +0 Counteroffensive of Eastern Front ||| October Revolution ||| In 1917, the Russian Bolshevik Party staged a [[October Revolution|revolution]] against [[Alexander Kerensky]]'s Provisional Government that led to a civil war. During the spring of 1919 the [[Kolchak army offensive]] created a strategic breakthrough in the center of The [[Red Army]]'s Eastern Font, while the Reds were preparing their own offensive on the southern flank. ||| Background ||| ||| +0 Coup of 18 Brumaire ||| Second Battle of Zurich ||| After [[Habsburg Monarchy|Austria]] declared war on 12 March 1799, France returned to a war footing. Emergency measures were adopted and the pro-war [[Jacobin club|Jacobin]] faction triumphed in the April election. With [[Napoleon in Egypt|Napoleon and the republic's best army in Egypt]], France suffered a series of reverses on the battlefield in the spring and summer of 1799. The [[Coup of 30 Prairial Year VII|coup of 30 Prairial]] (18 June) ousted the Jacobins and left [[Abbé Sieyès]], a member of the five-man ruling Directory, the dominant figure in the government. France's military situation improved following the [[Second Battle of Zurich]], fought on 25–26 September. As the prospect of invasion receded, the Jacobins feared a revival of the pro-peace [[Royalist]] faction. When Napoleon returned to France on 9 October, both factions hailed him as the country's savior. ||| Context ||| ||| +0 Coup of 18 Fructidor ||| French Directory election, 1795 ||| Three Directors, [[Paul François Jean Nicolas, vicomte de Barras|Paul Barras]], [[Jean-François Rewbell]] and [[Louis Marie de La Révellière-Lépeaux]], staged the ''coup d'état'' with support from the military. Royalist candidates had gained the great majority of seats in [[French Directory election, 1795|the recent elections]], where a third of the seats were at stake. They were poised to win the next round of elections and assume control of the Directory. ||| History ||| ||| +0 Creek War ||| American Revolutionary War ||| The Shawnee leader [[Tecumseh]] came to the Southeast to encourage the peoples to join his movement to throw the Americans out of Native American territories. He had united tribes in the Northwest (Ohio and related territories) to fight against US settlers after the [[American Revolutionary War]]. In 1811, Tecumseh and his brother [[Tenskwatawa]] attended the annual Creek council at [[Tukabatchee]]. Tecumseh delivered an hour-long speech to an audience of 5,000 Creeks as well as an American delegation including Benjamin Hawkins. Although the Americans dismissed Tecumseh as nonthreatening, his message of resistance to White encroachment was well received among Creek and Seminole, particularly among more conservative/traditional elders and young men. ||| Background ||| Cultural assimilation and religious revival ||| +0 Creek War ||| Battle of New Orleans ||| With the Red Sticks subdued, Jackson turned his focus on the Gulf Coast region in the War of 1812. On his own initiative, he invaded Spanish Florida and drove a British force out of Pensacola. <!-- Mahon 350 --> He defeated the British at the [[Battle of New Orleans]] on January 8, 1815. In 1818, Jackson again invaded Florida, where some of the Red Stick leaders had fled, an event known as the [[First Seminole War]]. ||| Results ||| ||| +0 Croatian War of Independence ||| Dalj massacre ||| Eastern Slavonia was gravely impacted throughout this period, starting with the [[Dalj massacre]] of August 1991; ||| Course of the war ||| 1991: Open hostilities begin ||| Escalation of the conflict +0 Croatian War of Independence ||| Ten-Day War ||| In June and July 1991, the [[Ten-Day War|short armed conflict in Slovenia]] came to a speedy end, partly because of the ethnic homogeneity of the population of Slovenia. It was later revealed that a military strike against Slovenia, followed by a planned withdrawal, was conceived by Slobodan Milošević and [[Borisav Jović]], then president of the SFR Yugoslavia presidency. Jović published his diary containing the information and repeated it in his testimony at the Milošević trial at the ICTY. ||| Course of the war ||| 1991: Open hostilities begin ||| Declaration of independence +0 Croatian War of Independence ||| Zagreb rocket attacks ||| A number of Croat civilians in hospitals and [[Bomb shelter|shelters]] marked with a [[Emblems of the International Red Cross and Red Crescent Movement|red cross]] were targeted by Serb forces. and the [[Zagreb rocket attacks]]. ||| Impact and aftermath ||| War crimes and the ICTY ||| +0 Croisière du Grand Hiver ||| Glorious First of June ||| The '''''Croisière du Grand Hiver''''' (French 'Campaign of the Great Winter') was a French attempt to organise a winter naval campaign in the wake of the [[Glorious First of June]]. ||| ||| ||| +0 Cromwellian conquest of Ireland ||| Battle of Knocknaclashy ||| The Parliamentarians crossed the [[River Shannon|Shannon]] into the western province of [[Connacht]] in October 1650. An Irish army under [[Ulick Burke, 1st Marquess of Clanricarde|Clanricarde]] had attempted to stop them but this was surprised and routed at the [[Battle of Meelick Island]]. Ormonde was discredited by the constant stream of defeats for the Irish and Royalist forces and no longer had the confidence of the men he commanded, particularly the Irish Confederates. He fled for France in December 1650 and was replaced by an Irish nobleman Ulick Burke of Clanricarde as commander. The Irish and Royalist forces were penned into the area west of the river Shannon and placed their last hope on defending the strongly walled cities of [[Limerick]] and [[Galway]] on Ireland's west coast. These cities had built extensive modern defences and could not be taken by a straightforward assault as at Drogheda or Wexford. [[Ireton]] besieged Limerick while Charles Coote surrounded Galway, but they were unable to take the strongly fortified cities and instead blockaded them until a combination of hunger and disease forced them to surrender. An Irish force from Kerry attempted to relieve Limerick from the south, but this was intercepted and routed at the [[Battle of Knocknaclashy]]. Limerick fell in 1651 and Galway the following year. Disease however killed indiscriminately and Ireton, along with thousands of Parliamentarian troops, died of [[pandemic|plague]] outside Limerick in 1651. ||| The Sieges of Limerick and Galway ||| ||| +0 Cromwellian conquest of Ireland ||| Battle of Scarrifholis ||| The most formidable force left to the Irish and Royalists was the 6,000 strong army of [[Ulster]], formerly commanded by [[Owen Roe O'Neill]], who died in 1649. However the army was now commanded by an inexperienced Catholic bishop named [[Heber MacMahon]]. The Ulster Army met a Parliamentarian army, composed mainly of British settlers and commanded by Charles Coote, at the [[Battle of Scarrifholis]] in [[County Donegal]] in June 1650. The Ulster army was routed and as many as 2,000 of its men were killed. In addition, MacMahon and most of the Ulster Army's officers were either killed at the battle or captured and executed after it. This eliminated the last strong field army opposing the Parliamentarians in Ireland and secured for them the northern province of Ulster. Coote's army, despite suffering heavy losses at the [[Siege of Charlemont]], the last Catholic stronghold in the north, was now free to march south and invade the west coast of Ireland. ||| Scarrifholis and the destruction of the Ulster Army ||| ||| +0 Cromwellian conquest of Ireland ||| English Civil War ||| Since the [[Irish Rebellion of 1641]], most of Ireland had been under the control of the [[Confederate Ireland|Irish Catholic Confederation]]. In early 1649 the Confederates allied with the English [[Cavalier|Royalists]], who had been defeated by the [[Roundhead|Parliamentarians]] in the [[English Civil War]]. By May 1652, Cromwell's Parliamentarian army had defeated the Confederate and Royalist coalition in Ireland and occupied the country—bringing to an end the [[Irish Confederate Wars]] (or Eleven Years' War). However, [[guerrilla warfare]] continued for a further year. Cromwell passed a series of [[Penal Laws (Ireland)|Penal Laws]] against [[Roman Catholics]] (the vast majority of the population) and [[Act for the Settlement of Ireland 1652|confiscated large amounts of their land]]. ||| ||| ||| +0 Cromwellian conquest of Ireland ||| Glorious Revolution ||| After the [[English Restoration|Stuart Restoration]] in 1660, [[Charles II of England]] restored about a third of the confiscated land to the former landlords in the [[Act of Settlement 1662]], but not all, as he needed political support from former parliamentarians in England. A generation later, during the [[Glorious Revolution]], many of the Irish Catholic landed class tried to reverse the remaining Cromwellian settlement in the [[Williamite War in Ireland]] (1689–91), where they fought en masse for the [[Jacobitism|Jacobites]]. They were defeated once again, and many lost land that had been regranted after 1662. As a result, Irish and English Catholics did not become full political citizens of the British state again until [[Catholic Relief Act 1829|1829]] and were legally barred from buying valuable interests in land until the [[Papists Act 1778]]. ||| Long-term results ||| ||| +0 Cromwellian conquest of Ireland ||| Irish Confederate Wars ||| Since the [[Irish Rebellion of 1641]], most of Ireland had been under the control of the [[Confederate Ireland|Irish Catholic Confederation]]. In early 1649 the Confederates allied with the English [[Cavalier|Royalists]], who had been defeated by the [[Roundhead|Parliamentarians]] in the [[English Civil War]]. By May 1652, Cromwell's Parliamentarian army had defeated the Confederate and Royalist coalition in Ireland and occupied the country—bringing to an end the [[Irish Confederate Wars]] (or Eleven Years' War). However, [[guerrilla warfare]] continued for a further year. Cromwell passed a series of [[Penal Laws (Ireland)|Penal Laws]] against [[Roman Catholics]] (the vast majority of the population) and [[Act for the Settlement of Ireland 1652|confiscated large amounts of their land]]. ||| ||| ||| +0 Cromwellian conquest of Ireland ||| Irish Rebellion of 1641 ||| Since the [[Irish Rebellion of 1641]], most of Ireland had been under the control of the [[Confederate Ireland|Irish Catholic Confederation]]. In early 1649 the Confederates allied with the English [[Cavalier|Royalists]], who had been defeated by the [[Roundhead|Parliamentarians]] in the [[English Civil War]]. By May 1652, Cromwell's Parliamentarian army had defeated the Confederate and Royalist coalition in Ireland and occupied the country—bringing to an end the [[Irish Confederate Wars]] (or Eleven Years' War). However, [[guerrilla warfare]] continued for a further year. Cromwell passed a series of [[Penal Laws (Ireland)|Penal Laws]] against [[Roman Catholics]] (the vast majority of the population) and [[Act for the Settlement of Ireland 1652|confiscated large amounts of their land]]. ||| ||| ||| +0 Cromwellian conquest of Ireland ||| Sack of Cashel ||| Atrocities were subsequently committed by all sides. When [[Murrough O'Brien, 1st Earl of Inchiquin|Murrough O'Brien]], the Earl of Inchiquin and Parliamentarian commander in [[Cork (city)|Cork]], [[Sack of Cashel|took Cashel]] in 1647, he slaughtered the garrison and Catholic clergy there (including [[Theobald Stapleton]]), earning the nickname 'Murrough of the Burnings'. Inchiquin switched allegiances in 1648, becoming a commander of the Royalist forces. After such battles as [[battle of Dungans Hill|Dungans Hill]] and [[battle of Scarrifholis|Scarrifholis]], English Parliamentarian forces executed thousands of their Irish Catholic prisoners. Similarly, when the Confederate Catholic general [[Thomas Preston, 1st Viscount Tara|Thomas Preston]] took [[Maynooth]] in 1647, he hanged its Catholic defenders as [[apostates]]. ||| Historical debate ||| ||| +0 Cromwellian conquest of Ireland ||| Sack of Wexford ||| The [[New Model Army]] then marched south to secure the ports of [[Wexford]], [[Waterford]] and [[Duncannon]]. Wexford was the scene of another [[Sack of Wexford|infamous atrocity]], when Parliamentarian troops broke into the town while negotiations for its surrender were ongoing, and sacked it, killing about 2,000 soldiers and 1,500 townspeople and burning much of the town.{{sfn|Kenyon|Ohlmeyer|1998|p=100}} Cromwell's responsibility for the sack of Wexford is disputed. He did not order the attack on the town, and had been in the process of negotiating its surrender when his troops broke into the town. On the other hand, his critics point out that he made little effort to restrain his troops or to punish them afterwards for their conduct. ||| Wexford, Waterford and Duncannon ||| ||| +0 Cruise missile strikes on Iraq (1996) ||| 1991 uprisings in Iraq ||| On 31 August 1996, the Iraqi military launched its biggest offensive since 1991 against the city of [[Irbil]] in [[Iraqi Kurdistan]]. This attack stoked American fears that the Iraqi leader [[Saddam Hussein]] intended to launch a genocidal campaign against the [[Kurdish people|Kurds]] similar to the campaigns of [[Al-Anfal Campaign|1988]] and [[1991 uprisings in Iraq|1991]]. It also placed Saddam in clear violation of [[United Nations Security Council Resolution 688]] forbidding repression of Iraq{{'}}s ethnic minorities. ||| Iraqi offensive ||| ||| +0 Cry of Tarlac ||| Battle of Aliaga ||| Were alarmed by the sudden uprisings in Tarlac and Pampanga and immediately appointed General Ricardo Monet as zone commander of Pampanga in order to quell the insurrections there. Eventually, the Central Luzon revolutionaries that the Spaniards had depleted and pursued had regrouped and defeated them in numerous [[Battle of Aliaga|battles]]. ||| Spanish reaction ||| ||| +0 Cry of Tarlac ||| Battle of Kakarong de Sili ||| the Spaniards, preoccupied with the earlier victories at [[Battle of Pateros|Pateros]] and [[Battle of Kakarong de Sili|Kakarong de Sili]] ||| Spanish reaction ||| ||| +0 Cry of Tarlac ||| Battle of Pateros ||| the Spaniards, preoccupied with the earlier victories at [[Battle of Pateros|Pateros]] and [[Battle of Kakarong de Sili|Kakarong de Sili]] ||| Spanish reaction ||| ||| +0 Cry of Tarlac ||| Cry of Nueva Ecija ||| The previous year, eight provinces were put under martial law by the Spanish government in [[Manila]]. The eight rays of the sun on the Philippine flag represent these eight provinces including the province of Tarlac, which had a revolutionary chapter of the Katipunan established by [[Ladislao Diwa]]. After the [[Cry of Pugad Lawin]] and the later [[Cry of Nueva Ecija]] in September, the Spanish government began sending troops to the revolted provinces and local militias from the Visayan islands helped quell the insurrection in central Luzon, however, the main revolutionaries from the area, [[Mariano Llanera]] and [[Manuel Tinio]] continued a guerilla war up until early January 1897. By that time, the Tarlaqueno revolutionaries were already preparing a major offensive to support the central Luzon revolutionaries. ||| Background ||| ||| +0 Cyclone Chapala ||| Yemeni Civil War (2015) ||| Chapala was slated to be the strongest tropical cyclone ever to affect the country, and this sparked fears of catastrophic flooding amid the [[Yemeni Civil War (2015)|ongoing civil war]]. ||| Preparations and impact ||| Yemen ||| +0 D-Day naval deceptions ||| Normandy landings ||| Operations '''Taxable''', '''Glimmer''' and '''Big Drum''' were tactical [[military deception]]s conducted on 6 June 1944 in support of the [[Normandy landings|Allied landings in Normandy]]. The operations formed the naval component of [[Operation Bodyguard]], a wider series of tactical and strategic deceptions surrounding the invasion. Small boats, along with aircraft from [[RAF Bomber Command]], simulated invasion fleets approaching [[La Poterie-Cap-d'Antifer|Cap d'Antifer]], [[Pas-de-Calais]] and [[Normandy]]. Glimmer and Taxable played on the German belief, amplified by Allied deception efforts over the preceding months, that the main invasion force would land in the Calais region. Big Drum was positioned on the western flank of the real invasion force to try to confuse German forces about the scale of the landings. These operations complemented [[Operation Titanic]], which was intended to confuse the Germans about the D-Day airborne forces. ||| ||| ||| +0 Dalj massacre ||| Battle of Borovo Selo ||| The '''Dalj massacre''' was the killing of 56 or 57 [[Croats]] in [[Dalj]], [[Croatia]] on 1 August 1991, during the [[Croatian War of Independence]]. In addition to civilian victims, the figure includes 20 [[Law enforcement in Croatia|Croatian policemen]], 15 [[Croatian National Guard]] (''Zbor narodne garde'' – ZNG) troops and four [[civil defence]]men who had been defending the police station and water supply building in the village. While some of the policemen and the ZNG troops died in combat, those who surrendered were killed after they became [[prisoners of war]]. They tried to fight off an attack by the [[Croatian Serb]] [[SAO Eastern Slavonia, Baranja and Western Syrmia]] (SAO SBWS) [[Territorial Defense Forces (Yugoslavia)|Territorial Defence Forces]], supported by the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) and the [[Serb Volunteer Guard]] paramilitaries. The SAO SBWS was declared an autonomous territory in eastern Croatia following the [[Battle of Borovo Selo]] just to the south of Dalj. ||| ||| ||| +0 Damour massacre ||| 1982 Lebanon War ||| According to [[Thomas L. Friedman]], the Phalangist [[Damouri Brigade]], which carried out the [[Sabra and Shatila massacre]] during the [[1982 Lebanon War]] sought revenge not only for the assassination of [[Bachir Gemayel|Bashir Gemayel]], but also for what he describes as past tribal killings of their own people by Palestinians, including those at Damour. ||| Events ||| ||| +0 Damour massacre ||| Sabra and Shatila massacre ||| According to [[Thomas L. Friedman]], the Phalangist [[Damouri Brigade]], which carried out the [[Sabra and Shatila massacre]] during the [[1982 Lebanon War]] sought revenge not only for the assassination of [[Bachir Gemayel|Bashir Gemayel]], but also for what he describes as past tribal killings of their own people by Palestinians, including those at Damour. ||| Events ||| ||| +0 Dano-Swedish War (1657–58) ||| Deluge (history) ||| The '''Dano-Swedish War of 1657–58''' was a conflict between [[Swedish Empire|Sweden]] and [[Denmark–Norway]] during the [[Second Northern War]]. In 1657, [[Charles X of Sweden]] and his Swedish army were [[Deluge (history)|bogged down]] in [[Polish–Lithuanian Commonwealth|Poland]]. [[Frederick III of Denmark|Frederick III]] saw this as an opportunity to recover [[Second Treaty of Brömsebro (1645)|the territories lost in 1645]] and attacked Sweden. The outbreak of war with Denmark provided Charles with an excuse to withdraw from the Polish campaign and move against Denmark. ||| ||| ||| +0 Dartmouth Conferences (peace) ||| Nagorno-Karabakh War ||| The Regional Conflicts Task Force first met in 1982. It was led by [[Yevgeny Primakov|Evgeny Primakov]] on the Soviet side and [[Harold Saunders]] on the American until Primakov left to take a senior position under [[Mikhail Gorbachev|Gorbachev]]. His place was taken by Gennadi Chufrin, a scholar from the [[Institute of Oriental Studies of the Russian Academy of Sciences]]. The Task Force met regularly until 2001, then worked directly on conflicts in [[Tajikistani Civil War|Tajikistan]] and over [[Nagorno-Karabakh War|Nagorno-Karabakh]]. ||| Task forces ||| The Regional Conflicts Task Force ||| +0 Death of Jeremiah Duggan ||| Iraq War ||| The LaRouche movement has said the controversy surrounding the death was stirred up by LaRouche's political opponents—including former British prime minister [[Tony Blair]] and former U.S. vice-president [[Dick Cheney]] — because of LaRouche's criticism of the 2003 [[Iraq War]] and the [[Attribution of recent climate change|man-made global warming hypothesis]], and that the affair is being used by [[Neoconservatism|Neoconservatives]] to discredit the movement. For LaRouche blaming Blair and Cheney, see Samuels, Tim. [http://news.bbc.co.uk/media/video/39848000/rm/_39848423_duggan18nocue_samuels_vi.ram 'Jeremiah Duggan's death and Lyndon LaRouche'], BBC News, 12 February 2004, 4:16 mins. ||| ||| ||| +0 Death of Muammar Gaddafi ||| Battle of Sirte (2011) ||| [[Muammar Gaddafi]], the deposed leader of [[Libya]], died on 20 October 2011 during the [[Battle of Sirte (2011)|Battle of Sirte]]. Gaddafi was found hiding in a [[culvert]] west of Sirte and captured by [[National Transitional Council]] forces. He was killed shortly afterwards. The NTC initially claimed he died from injuries sustained in a firefight when loyalist forces attempted to free him, although videos of his last moments show rebel fighters beating him before he was shot several times. ||| ||| ||| +0 December 2013 Kinshasa attacks ||| First Congo War ||| Mukungubila's men had forced two of the broadcaster's staff members to read a political statement critical of President [[Joseph Kabila]] on television. The statement said that 'Gideon Mukungubila has come to free you from the slavery of the Rwandan', an apparent reference to the installation of [[Laurent Kabila|Kabila's father]] as president by Rwandan-backed troops in a [[First Congo War|1996-1997 rebellion]]. The government was able to shut down the broadcasts. ||| Attacks ||| ||| +0 December 2013 Volgograd bombings ||| 2009 Nevsky Express bombing ||| * [[2009 Nevsky Express bombing]] ||| See also ||| ||| +0 December 2013 Volgograd bombings ||| October 2013 Volgograd bus bombing ||| <!-- Per MOS:BOLDTITLE and WP:SBE, neither the article's title nor related text appears in bold. -->In December 2013, two separate [[suicide attack|suicide bombings]] a day apart targeted mass transportation in the city of [[Volgograd]], in the [[Volgograd Oblast]] of [[Southern Federal District|Southern Russia]], killing 34 people overall, including both perpetrators. The attacks followed [[October 2013 Volgograd bus bombing|a bus bombing]] carried out in the same city two months earlier. ||| ||| ||| +0 Defence of the Reich ||| Battle of Britain ||| Although the ''Luftwaffe'' eventually allocated more resources to the coming campaign than the RAF did during the [[Battle of Britain]] in 1940, it failed to commit these resources at a time when the Allied air offensives might have been checked. The ''Luftwaffe''{{'}}s crucial mistakes in leadership, production and training decisions that eventually cost it the campaign were made in 1940–1942. The German leadership failed to develop a coherent strategy for a long war. Strategic and operational ineffectiveness coupled with a failure to assign air defence as a top priority undermined the ''Luftwaffe''{{'}}s efforts in 1943–1945. German strategy, termed the [[cult of the offensive]], worked in 1939–41, but when faced with an attrition war, the growing power of its enemies, its forces spread thin over four fronts, the failure to develop defensive doctrines, tactics and plans led to defeat. ||| German weaknesses ||| ||| +0 Defence of the Reich ||| Battle of France ||| The failure of the ''Luftwaffe'' to protect [[Berlin]] from a series of small-scale raids made by RAF Bomber Command during the [[Battle of Britain]] led to the construction of a solid air defence programmes. ''[[Luftflotte Reich]]'' was eventually produced, which protected all of Germany and [[Central Europe]]. ''[[Reichsmarschall]]'' [[Hermann Göring]] ordered ''[[General-Leutnant]]'' ([[Lieutenant General]]) [[Hubert Weise]], who had commanded the ''I.Flakkorps'' (1st Flak Corps) with distinction during the [[Battle of France]], to form ''Luftgaukommando III'' on 27 September 1940. However, the defence of southern Germany was given to [[Hugo Sperrle]]'s [[Luftflotte 3|''Luftflotte'' 3]]. This caused coordination problems as the two forces were competing. [[Erhard Milch]] urged Göring to unite the fighter force under one command as had been the case for [[RAF Fighter Command]] in the [[Battle of Britain]]. Göring refused. Until ''Luftflotte'' 3 was practically destroyed in the [[Operation Overlord|Normandy Campaign]] in August 1944, the home defences remained split between rival commanders. ||| Repelling RAF Bomber Command (1939–41) ||| Organisation of defence ||| +0 Defence of the Reich ||| Battle of the Bulge ||| Hitler attempted to improve Germany's continually worsening military position by launching operation ''Wacht am Rhein'' ([[Battle of the Bulge]]). The RLV handed over some ''Jagdgeschwader'' to support the offensive along with the ''Luftwaffe''{{'}}s frontline fighter units. The cost was high, some 400 pilots were killed or missing between 16–31 December 1944. ||| Defeat (1945) ||| Daylight defence ||| +0 Defence of the Reich ||| Battle of the Ruhr ||| Bomber Command had a few successes during this time. Introduction of new navigation aids such as [[Oboe (navigation)|Oboe]] allowed for accurate bombing. The [[Bombing of Cologne in World War II|bombing of Cologne]] in May 1942, the five-month-long [[Battle of the Ruhr]] and [[Bombing of Hamburg in World War II|bombing of Hamburg]] were very successful. ||| Limited British success (1942–43) ||| Area offensives ||| +0 Defence of the Reich ||| Eastern Front (World War II) ||| The attacks were having a devastating effect on German fighter units. More and more ''Staffeln'' and ''Gruppen'' were pulled off the front line on the [[Eastern Front (World War II)|Eastern Front]] to reinforce the ''Reich''. Göring ordered that more effort be made to train pilots more thoroughly and quickly whilst expanding the ''Jagdflieger'' force. He ordered bomber pilots to be converted to fighter pilots. ||| Oil campaign (May–November 1944) ||| Effect on Luftwaffe training ||| +0 Defence of the Reich ||| Operation Barbarossa ||| Most of the battles fought by the ''Luftwaffe'' on the Western Front would be against the RAF's [[Circus offensive|'Circus' raids]] and the occasional daylight raid into German air space. This was a fortunate position since the ''Luftwaffe's'' strategy of focusing its striking power on one front started to unravel with the failure of ''[[Operation Barbarossa]]'', the invasion of the [[Soviet Union]]. The 'peripheral' strategy of the ''Luftwaffe'', advocated by Jeschonnek, had been to deploy its fighter defences at the edges of Axis occupied territory, with little protecting the inner depths. ||| German defensive strategy ||| ||| +0 Defence of the Reich ||| Operation Overlord ||| Bad weather operations completely overtaxed fighter units and inflicted high losses which caused a drop in morale and confidence in the High Command. The OKL itself did not understand the need for economical employment of strength with respect to the RLV. All raids had to be met at full strength, rapidly wearing down the defenders. Contributing to the wearing down of fighter units was the insistence on using the [[Messerschmitt Bf 110|Bf 110]] and [[Messerschmitt Me 410|Me 410]], with the unwieldy and large 37 mm and 50 mm calibre ''Bordkanone'' cannon. Both types had to be withdrawn from daylight combat by the spring of 1944 due to losses, as the [[USAAF]]'s new commander of its [[Eighth Air Force]], Major General [[Jimmy Doolittle]], [[Combined Bomber Offensive#Pointblank operations|changed fighter tactics]] as 1944 began with the arrival of growing numbers of the top American fighter aircraft in Europe, the [[P-51]], devastating the Luftwaffe's day fighter defenses for the rest of the war over Germany and achieving near-complete [[air supremacy]] for the Allies by the time [[Operation Overlord]] was launched in early June 1944. ||| German weaknesses ||| Strategic and operational tactics ||| +0 Defence of the Reich ||| The Blitz ||| Despite the Germans having only a fledgling defence, most of Bomber Command's operations against Germany in 1940–1941 failed. In the second half of 1940 170 RAF bombers failed to return. Only 72 of these were due to growing German competence in night fighting; 42 were claimed by the ''Luftwaffe'' and 30 by AAA units. The rest simply ran out of fuel. Most of these cases were caused by poor navigation training in the pre-war era. RAF loss rates were twice those of the Luftwaffe during [[The Blitz]] in the period, July 1940 and June 1941. ||| Repelling RAF Bomber Command (1939–41) ||| Night operations ||| +0 Defence of the Reich ||| Western Allied invasion of Germany ||| During this period the [[Western Allied invasion of Germany]] had already begun. Airfields and bases that were located in Western Germany were quickly overrun. The ''Luftwaffe'' defended its airspace continually, but suffered heavy losses flying defensive and offensive sorties over the Allied bridgeheads that were established along the [[Rhine River]]. A few successes were scored, and some missions, including forces of up to 40-50 Me 262s were used, but the losses inflicted on the bombers were not decisive. The Allied Air Forces had total air superiority and attacked the Luftwaffe on the ground and in the air. In just two days, 13–15 April, 400 German fighters were lost to Allied ground attack fighters. ||| Defeat (1945) ||| Daylight defence ||| +0 Defense of Brest Fortress ||| Operation Barbarossa ||| The '''defence of Brest Fortress''' took place 22–29 June 1941. It was one of the first battles of [[Operation Barbarossa]]. The [[Brest Fortress]], defended by the [[Red Army]] against the [[Wehrmacht]], held out longer than expected {{Citation needed|date=April 2015}} and, after the [[Second World War]] had finished, became a symbol of Soviet resistance. In 1965 the fortress received the title of [[Hero Fortress]] for the 1941 defense. ||| ||| ||| +0 Defense of Harbin ||| January 28 Incident ||| On receiving orders to go to the rescue of General Xi Qia, the 2nd Division entrained on the same day that the [[January 28 Incident]] began. Some delays were experienced because of transportation difficulties in the cold winter weather. This gave General Ting Chao time to seize the Municipal Administration in Harbin and arrest pro-Japanese Governor of Heilungkiang General [[Chang Ching-hui]]. ||| The Harbin Incident ||| ||| +0 Defense of Harbin ||| Jiangqiao Campaign ||| After General [[Ma Zhanshan]] had been driven from [[Qiqihar|Tsitsihar]] by the Japanese in the [[Jiangqiao Campaign]], he retreated northeast with his depleted forces and set up his headquarters at [[Hailun]], from which he attempted to continue to govern [[Heilongjiang]] province. Colonel [[Kenji Doihara]] began negotiations with General Ma Zhanshan from his Special Service Office at [[Harbin]], hoping to get him to defect to the new state of [[Manchukuo]]. Ma remained in an ambiguous position, continuing negotiations with the Japanese, while he continued to support General [[Ting Chao]]. ||| Background ||| ||| +0 Defense of Harbin ||| Second Sino-Japanese War ||| The '''Defense of Harbin''' occurred during the early [[Second Sino-Japanese War]], as part of the campaign of the [[Japanese invasion of Manchuria|Invasion of Manchuria]] by forces of the [[Empire of Japan]] from 25 January to 4 February 1932. ||| ||| ||| +0 Defense of Harbin ||| Xinhai Revolution ||| Within days Henry [[Puyi]], Manchurian former [[Qing dynasty|emperor of China]], [[Xinhai Revolution|deposed in 1911]], was made provisional president of the independent state of [[Manchukuo]] by the resolution of an All-Manchuria convention at Mukden, whose members included General Ma Zhanshan flown in from the north. The next day on March 1 the Manchukuo Government established with Ma Zhanshan as its Minister of War, in addition to his post as provincial governor. ||| Aftermath ||| ||| +0 Defense of Sihang Warehouse ||| Chinese Civil War ||| When the [[Chinese Civil War]] broke out, many returned to civilian occupations. Later, most officers and some former soldiers, including Girl Guide Yang Huimin, left for [[Taiwan]] with the [[Kuomintang]] government, while some of those who remained were persecuted in the [[Cultural Revolution]] because they were Kuomintang soldiers. ||| Aftermath ||| ||| +0 Defense of Sihang Warehouse ||| Invasion of Poland ||| Faced with defeat in the Battle of Shanghai and the loss of a third of the National Revolutionary Army's best-trained troops, the failed but morale-boosting defense of Shanghai proved to the Chinese people and foreign powers alike that [[China]] was actively resisting the Japanese. The media capitalized on the defense of the warehouse and lauded the ''Eight Hundred Heroes'', embellished from the original 414, as national heroes, and a [[800 Heroes Song|patriotic song]] was also composed to encourage the people to resist Japanese aggression. However, the foreign aid that Chiang tried to canvass for did not arrive; none of the European powers delivered anything more than verbal condemnation of Japan. Only [[Germany]] and the [[Soviet Union]] provided substantial aid to China before the [[Invasion of Poland|outbreak of war in Europe]], and [[Sino-German cooperation (1911-1941)#End of Sino-German cooperation|Germany withdrew its advisors]] in 1938 because of Japanese pressure. ||| Aftermath ||| ||| +0 Defense of Van (1915) ||| Battle of Manzikert (1915) ||| On 16 July, the Ottoman Army, having concentrated more forces than the Russians, thwarted a planned Russian offensive and pushed the Russian Army back at the [[Battle of Manzikert (1915)|Battle of Manzikert]] (10–26 July 1915), capturing the city. There then followed the [[Battle of Kara Killisse (1915)|Battle of Kara Killisse]] which saw the Russians recapture Manzikert. However, as a result of these operations to the north of Lake Van, the Russians evacuated their remaining combat forces from the city of Van. [[Armen Garo]], and his assistant, [[Khetcho]] asked of [[General Abatzieff]] to permit the Armenian inhabitants in the Van area to move with the Russian army toward [[Igdir]]. This request was rejected on the grounds that the movement of vital Russian army transports could not done promptly if hampered by refugees. ||| The aftermath ||| The first evacuation, July 1915 ||| +0 Dekemvriana ||| Greek Resistance ||| The '''''Dekemvriana''''' ({{lang-el|Δεκεμβριανά}}, 'December events') refers to a series of clashes fought during [[World War II]] in [[Athens]] from 3 December 1944 to 11 January 1945 between the [[Greece|Greek]] [[left-wing]] [[Greek Resistance|Resistance]] forces ([[National Liberation Front (Greece)|EAM]]-[[Greek People's Liberation Army|ELAS]], [[Communist Party of Greece|KKE]]) and the [[British Army]] supported by the [[Greek Government]], the [[Cities Police]] and the [[far-right]] [[Organization X]] of [[Georgios Grivas]]. ||| ||| ||| +0 Dekemvriana ||| World War II ||| The '''''Dekemvriana''''' ({{lang-el|Δεκεμβριανά}}, 'December events') refers to a series of clashes fought during [[World War II]] in [[Athens]] from 3 December 1944 to 11 January 1945 between the [[Greece|Greek]] [[left-wing]] [[Greek Resistance|Resistance]] forces ([[National Liberation Front (Greece)|EAM]]-[[Greek People's Liberation Army|ELAS]], [[Communist Party of Greece|KKE]]) and the [[British Army]] supported by the [[Greek Government]], the [[Cities Police]] and the [[far-right]] [[Organization X]] of [[Georgios Grivas]]. ||| ||| ||| +0 Deluge (history) ||| Battle of Batih ||| Following the [[Thirty Years' War]], the [[Swedish Empire]] emerged as one of the strongest nations on the continent. It had a large army but little money to pay its soldiers. The Polish–Lithuanian Commonwealth, weakened by wars with the Cossacks and [[Tsardom of Russia]], seemed like easy prey, also because its best soldiers had been massacred in the 1652 [[Battle of Batih]]. Furthermore, Swedes remembered claims to their throne by Polish kings [[Sigismund III Vasa]] and his sons [[Władysław IV Vasa]] and [[John II Casimir Vasa|John II Casimir]], who themselves belonged to the [[House of Vasa]]. An earlier conflict, the [[Polish–Swedish War (1626–29)]] had ended with the [[Treaty of Stuhmsdorf]]. ||| Swedish invasion ||| ||| +0 Deluge (history) ||| Battle of Chojnice ||| In 1653, the Transylvanian Hungarian ruler [[George II Rákóczi]] signed an alliance with Poland, and the relations between the Commonwealth and Transylvania were friendly. George had even been offered the Polish crown, on condition that he convert to Catholicism. Stunning Swedish successes, however, made Rákóczi change his mind. On May 18, 1656, Charles X Gustav, in a letter sent from Malbork, offered the Hungarian prince Red Ruthenia, in exchange for military support against the Commonwealth. Meanwhile, Rákóczi had already been negotiating with Bohdan Khmelnytsky, and on September 7, 1656, Transylvania and the [[Zaporizhian Sich]] signed a peace treaty, which obliged both sides to help each other in war. On December 8, 1656, the [[Treaty of Radnot]] was signed, which divided Poland-Lithuania among Charles X Gustav, Bogusław Radziwiłł, Elector Frederick William, Bohdan Khmelnytsky, and George II Rákóczi. In late January 1657, the Transylvanian army of 25,000 crossed the [[Carpathians]], heading towards [[Medyka]], where 10,000 Cossack allies awaited them. To face the new invader, the army of hetman Stanisław Rewera Potocki rushed southwards. At the same time (January 2), in the [[Battle of Chojnice (1656)|Battle of Chojnice]], the Swedes defeated the Poles. On February 26, Stefan Czarniecki and King John Casimir met in [[Kalisz]], where they decided to prevent the Swedish and Transylvanian armies from meeting. ||| Swedish invasion ||| 1657 ||| +0 Deluge (history) ||| Battle of Chojnice (1656) ||| In 1653, the Transylvanian Hungarian ruler [[George II Rákóczi]] signed an alliance with Poland, and the relations between the Commonwealth and Transylvania were friendly. George had even been offered the Polish crown, on condition that he convert to Catholicism. Stunning Swedish successes, however, made Rákóczi change his mind. On May 18, 1656, Charles X Gustav, in a letter sent from Malbork, offered the Hungarian prince Red Ruthenia, in exchange for military support against the Commonwealth. Meanwhile, Rákóczi had already been negotiating with Bohdan Khmelnytsky, and on September 7, 1656, Transylvania and the [[Zaporizhian Sich]] signed a peace treaty, which obliged both sides to help each other in war. On December 8, 1656, the [[Treaty of Radnot]] was signed, which divided Poland-Lithuania among Charles X Gustav, Bogusław Radziwiłł, Elector Frederick William, Bohdan Khmelnytsky, and George II Rákóczi. In late January 1657, the Transylvanian army of 25,000 crossed the [[Carpathians]], heading towards [[Medyka]], where 10,000 Cossack allies awaited them. To face the new invader, the army of hetman Stanisław Rewera Potocki rushed southwards. At the same time (January 2), in the [[Battle of Chojnice (1656)|Battle of Chojnice]], the Swedes defeated the Poles. On February 26, Stefan Czarniecki and King John Casimir met in [[Kalisz]], where they decided to prevent the Swedish and Transylvanian armies from meeting. ||| Swedish invasion ||| 1657 ||| +0 Democratic Party presidential primaries, 2008 ||| Iraq War ||| * dissatisfaction with President [[George W. Bush]] and [[Iraq War]] policy ||| Voter turnout ||| ||| +0 Demyansk Pocket ||| Battle of Moscow ||| The '''Demyansk Pocket''' ({{lang-de|Festung Demjansk or Kessel von Demjansk|links=no}}; {{lang-ru|Демя́нский котёл|links=no}}) was the name given to the [[Salients, re-entrants and pockets#Pocket|pocket]] of [[Wehrmacht|German troops]] encircled by the [[Red Army]] around [[Demyansk]] (Demjansk), south of [[Leningrad]], during World War II on the Eastern Front. The pocket existed mainly from 8 February-21 April 1942. A much smaller pocket was simultaneously [[Kholm Pocket|surrounded]] in [[Kholm, Kholmsky District, Novgorod Oblast|Kholm]], about {{convert|100|km|mi|abbr=on}} to the southwest. These both resulted from the German retreat following their defeat during the [[Battle of Moscow]]. ||| ||| ||| +0 Demyansk Pocket ||| Battle of Stalingrad ||| The successful defence of Demyansk, achieved through the use of an [[Airbridge (logistics)|airbridge]], was a significant development in modern warfare. The pocket provoked an inordinate response on the part of the Soviets, absorbing resources that could have been utilised for offensive actions elsewhere. Its success was a major contributor to the decision to try the same tactic during the [[Battle of Stalingrad]]. ||| ||| ||| +0 Deportation of Armenian intellectuals on 24 April 1915 ||| Balkan Wars ||| | Physician, prominent poet and writer, formerly captain in the [[Ottoman Army]] during the [[Balkan Wars]] ||| Notable deportees ||| ||| +0 Deportation of Armenian intellectuals on 24 April 1915 ||| Gallipoli Campaign ||| The '''deportation of Armenian intellectuals''', sometimes known as '''Red Sunday''' ([[Western Armenian|Western]] {{lang-hy|Կարմիր կիրակի}} ''Garmir giragi''), was an event during the [[Armenian Genocide]] in which leaders of the Armenian community of the [[Ottoman Empire|Ottoman]] capital, [[Constantinople]] (today [[Istanbul]]), and later other locations were arrested and moved to two holding centers near [[Ankara]]. The [[s:Circular on April 24, 1915|order]] to do so was given by Minister of the Interior [[Talaat Pasha]] on 24 April 1915, the day before the [[Gallipoli Campaign|Allied landings at Gallipoli]]. On that night, the first wave of 235 to 270 Armenian intellectuals of Constantinople were arrested. Eventually, the total number of arrests and deportations amounted to 2,345. With the adoption of the [[Tehcir Law]] on 29 May 1915, these detainees were later relocated within the [[Ottoman Empire]]; most of them were ultimately killed. A few, such as [[Vrtanes Papazian]] and [[Komitas]], were saved through intervention. ||| ||| ||| +0 Deportation of Armenian intellectuals on 24 April 1915 ||| Occupation of Constantinople ||| After the [[Armistice of Mudros]] (30 October 1918), several surviving Armenian intellectuals came back to Constantinople, which was under an [[Occupation of Constantinople|allied occupation]]. They started a short, but intense, literary activity that was ended by the Turkish victory in 1923. Those who have written memoirs and books about their accounts during the deportation include [[Krikor Balakian]], [[Aram Andonian]], [[Yervant Odian]], [[Teotig]], and Mikayel Shamtanchyan. ||| Deportation ||| Survivors ||| +0 Diyala campaign ||| Operation Phantom Phoenix ||| In January 2008 the [[Multinational Force Iraq]] and [[New Iraqi Army]] launched a new offensive (codenamed [[Operation Phantom Phoenix]]) in the region to eradicate the remaining insurgents in Diyala and the neighboring [[Salah ad Din Governorate]]. ||| Further operations ||| ||| +0 Diyala campaign ||| Operation Together Forward ||| Shortly after the insurgent victory in Baghdad after [[Operation Together Forward]] insurgents began, little by little, moving their resources from Baghdad, now more than 80 percent under insurgent control, and Al Anbar province, which was also almost completely under insurgent control, to the province of Diyala northeast of Baghdad. The first signs of increased insurgent activity in Diyala came after U.S. forces found an insurgent bunker complex near the village of Turki and fought a [[Battle of Turki|bloody battle]]. Also a few weeks later fighting between police and insurgents after an attack on Baquba's police headquarters shuts down the city, closing the university, schools and most stores, and clearing the streets of everyone, except a few who scurry about to stock up on food. At least 55 militants are killed in clashes in the preceding days, according to anonymous police sources. During the fighting a mass grave with 28 bodies was discovered. After that U.S. and Iraqi forces begin raids in the city. The morgue in the city reports by the beginning of December 2006 that it had received 102 bodies in the previous two weeks. After the announcement of a new attempt by the U.S. and Iraqi security forces to take back the streets of Baghdad the insurgents started to speed up their move and it is believed that the reason behind the little resistance found by the security forces in Baghdad during [[Operation Law and Order]] is that most of the insurgents have moved to Diyala. ||| Prelude ||| ||| +0 Dnieper–Carpathian Offensive ||| Crimean Offensive ||| The operation, along with the [[Crimean Offensive (1944)|Crimean Offensive]] resulted in very heavy casualties for the Romanian troops stationed in Ukraine. ||| Aftermath ||| ||| +0 Donald Trump presidential campaign, 2016 ||| 2011 military intervention in Libya ||| Trump believes the [[2011 military intervention in Libya]] was a mistake, claiming that Libya was better off under the rule of [[Muammar Gaddafi]]. ||| Political positions ||| Foreign affairs and national defense ||| Libya +0 Donald Trump presidential campaign, 2016 ||| Iraq War ||| Trump strongly opposed the [[Iraq War]] (2003-2011) arguing that [[Iran]] '[would] take over and it would totally destabilize the Middle East.' ||| Political positions ||| Foreign affairs and national defense ||| Iraq +0 Draft:Offensive on Donetsk ||| Malaysia Airlines Flight 17 ||| After international outrage following the shoot-down of [[Malaysia Airlines Flight 17]] on 17 July, Ukrainian president [[Petro Poroshenko]] ordered the army to halt their operation within {{convert|40|km}} of the crash site, so that experts and members of the [[Organization for Security and Co-operation in Europe]] could investigate it. Donetsk city lies outside this perimeter, and the offensive on Donetsk city continued. ||| Background ||| ||| +0 Draft:Vajont dam (translation for checking and merging, taken from IT wiki) ||| Atomic bombings of Hiroshima and Nagasaki ||| About 25 million cubic meters of water that managed to climb over the work reached the rocky shore of the Piave Valley and carried off considerable debris that flooded the southern sector of [[Longarone]] resulting in the almost complete destruction of the town (he saved the town hall and houses at the north of this building) and other neighboring nuclei and death, all in all, about 2,000 people (official figures speak of 1,918 victims, but it is not possible to determine with certainty the number). It was estimated that the shock wave due to the movement of air is intensity equal, if not superior, to that generated by the [[Atomic bombings of Hiroshima and Nagasaki|atomic bomb dropped on Hiroshima]]. ||| From construction to disaster ||| The disaster ||| +0 Dublin Lock-out ||| Gallipoli Campaign ||| Another important figure, in the rise of an organised workers' movement in Ireland at this time, was [[James Connolly]], an Edinburgh-born [[Marxist]] of Irish parentage. Connolly was a talented orator and a fine writer. He became known for his speeches on the streets of Dublin in support of socialism and Irish nationalism. In 1896, Connolly established the [[Irish Socialist Republican Party]], and the newspaper ''The Workers' Republic''. In 1911, Connolly was appointed the ITGWU's Belfast organiser. In 1912, Connolly and Larkin formed the [[Labour Party (Ireland)|Irish Labour Party]] to represent workers in the imminent [[Home Rule Act 1914|Home Rule Bill]] debate in [[British Parliament|Parliament]]. Home Rule was never implemented, due to the start of [[World War I]] and the collapse of [[H.H. Asquith|HH Asquith's]] [[Liberal Party (UK)|Liberal]] government due to the disaster of Churchill's [[Gallipoli Campaign|invasion of Gallipoli]] in 1915. The Home Rule plan was suspended for one year, then indefinitely, after the rise of [[Irish Republicanism|militant nationalism]] following the [[1916 Rising]]. ||| Background ||| Connolly and the Irish Labour Party ||| +0 Dunkirk evacuation ||| Battle of Dunkirk ||| After [[Nazi Germany]] [[invasion of Poland|invaded Poland]] in September 1939, marking the beginning of the Second World War, the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) was sent to aid in the defence of France. Germany invaded [[Battle of Belgium|Belgium]] and [[Battle of the Netherlands|the Netherlands]] on 10 May 1940, and three of their [[Panzer]] [[corps]] attacked France through the [[Ardennes]] and rapidly drove to the [[English Channel]]. By 21 May, the German forces had trapped the BEF, the remains of the Belgian forces, and three French [[field army|armies]] in an area along the northern coast of France. Commander of the BEF General [[John Vereker, 6th Viscount Gort]], immediately saw that evacuation across the Channel was the best course of action and began planning a withdrawal to Dunkirk, the closest location with good port facilities. On 22 May 1940, a halt order was issued by the German High Command, with [[Adolf Hitler]]'s approval. This gave the trapped Allied forces time to construct defensive works and pull back large numbers of troops toward Dunkirk, to fight the [[Battle of Dunkirk]]. From 28–31 May 1940, in the [[Siege of Lille (1940)|Siege of Lille]], the remaining 40,000 men of the once-formidable French First Army fought a delaying action against seven German [[Division (military)|divisions]], including three [[Panzer division|armoured divisions]]. ||| ||| ||| +0 Dunkirk evacuation ||| Battle of the Netherlands ||| After [[Nazi Germany]] [[invasion of Poland|invaded Poland]] in September 1939, marking the beginning of the Second World War, the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) was sent to aid in the defence of France. Germany invaded [[Battle of Belgium|Belgium]] and [[Battle of the Netherlands|the Netherlands]] on 10 May 1940, and three of their [[Panzer]] [[corps]] attacked France through the [[Ardennes]] and rapidly drove to the [[English Channel]]. By 21 May, the German forces had trapped the BEF, the remains of the Belgian forces, and three French [[field army|armies]] in an area along the northern coast of France. Commander of the BEF General [[John Vereker, 6th Viscount Gort]], immediately saw that evacuation across the Channel was the best course of action and began planning a withdrawal to Dunkirk, the closest location with good port facilities. On 22 May 1940, a halt order was issued by the German High Command, with [[Adolf Hitler]]'s approval. This gave the trapped Allied forces time to construct defensive works and pull back large numbers of troops toward Dunkirk, to fight the [[Battle of Dunkirk]]. From 28–31 May 1940, in the [[Siege of Lille (1940)|Siege of Lille]], the remaining 40,000 men of the once-formidable French First Army fought a delaying action against seven German [[Division (military)|divisions]], including three [[Panzer division|armoured divisions]]. ||| ||| ||| +0 Dutch Revolt ||| English Civil War ||| Politically, a unique situation had emerged in the Netherlands where a republican body (the States General) ruled, but where a (increasingly hereditary) noble function of Stadtholder was occupied by the [[house of Orange-Nassau]]. This division of power prevented large scale fighting between nobility and civilians as happened in the [[English Civil War]].{{Citation needed|date=March 2009}} The frictions between the civil and noble fractions, that already started in the twelve years' truce, were numerous and would finally lead to an outburst with the French supported [[Batavian Republic]], where Dutch [[bourgeoisie]] hoped to get rid of the increasing self-esteem in the nobility once and for all.{{Citation needed|date=March 2009}} However, in a dramatic resurgence of nobility after the [[Napoleonic era]] the republic would be abandoned in favour of the foundation of the [[United Kingdom of the Netherlands]]. Thus, one of the oldest republics of Europe was turned into a monarchy, which it still is today. ||| Aftermath ||| Effect on the Low Countries ||| +0 EDSA III ||| People Power Revolution ||| Critics of EDSA Tres, styled after the [[People Power Revolution]] (EDSA Revolution) and [[EDSA Revolution of 2001]], argue that while this was a major protest, the spirit of it was unlike of the first and second protests. Supporters of Edsa Tres journalism allege that EDSA's I and II's participants were made up of the middle and upper classes and thus, not democratically-representative unlike those who participated in EDSA Tres. Other arguments also point to the success of the first two to remove the presidents targeted, versus this event's failure to do so. ||| May 1 ||| ||| +0 East African Campaign (World War II) ||| Operation Compass ||| After the conquest of British Somaliland the Italians adopted a more defensive posture. Throughout late 1940 Italian forces suffered a series of setbacks in the [[Battle of the Mediterranean|Mediterranean]], the [[Operation Compass|Western Desert]], the [[Corpo Aereo Italiano|skies over Britain]], and on the [[Greco-Italian War|Albanian border with Greece]]. This prompted the new Italian Chief of the General [[Staff (military)|Staff]] in Rome, General [[Ugo Cavallero]], to adopt a new course of action in the Horn of Africa. In December 1940, Cavallero argued to the Italian High Command (''Commando Supremo'') that Italian forces in the Horn of Africa should abandon offensive actions against the Sudan and the Suez Canal, and focus instead on defending the Italian East African Empire.{{sfn|Mackenzie|1951|p=42}} In response to Cavallero and the Duke of Aosta, who had requested permission to withdraw from the Sudanese frontier, the ''Commando Supremo'' issued orders for the Italian forces in East Africa to withdraw to better defensive positions. ||| Military operations, 1940 ||| Italian defensive strategy ||| +0 East Cape War ||| Second Taranaki War ||| The east coast hostilities came at the close of the [[Invasion of the Waikato|Waikato wars]] and before the outbreak of [[Te Kooti's War]], both fought nearby, but sprang from causes more closely related to the [[Second Taranaki War]]—namely, Māori resentment of punitive government [[New Zealand land confiscations|land confiscation]] coupled with the rise of the so-called Hauhau movement, an extremist part of the [[Pai Marire]] religion (also called the Hauhau), which was strongly opposed to the alienation of Māori land and eager to strengthen Māori identity. ||| ||| ||| +0 East Pakistan Air Operations, 1971 ||| Battle of Boyra ||| '''East Pakistan Air Operations''' incorporate the [[Air interdiction|interdiction]], [[air defense]], [[ground support]], and [[logistics]] missions flown by the [[Indian Air Force]] and the [[Bangladesh Air Force]] in support of the advancing [[Mukti Bahini]] (called '''Operation Cactus Lilly''') in the [[East Pakistan|eastern theater]] of the [[Indo-Pakistani conflict of 1971]]. Although the [[Battle of Boyra|first of the engagements]] between the opposing airpowers occurred before the [[Operation Chengiz Khan|formal declaration of hostilities]], the events described below include only those conducted after the declaration of war. The Indian Air force also helped the Mukti Bahini organize a formation of light aircraft (called ''Kilo flight'') which were manned and serviced by Bengali pilots and technicians who had defected from the Pakistani Air Force. This unit had launched attacks on targets in Bangladesh on 3 December 1971, prior to the start of formal combat between [[India]] and [[Pakistan]]. ||| ||| ||| +0 East Pakistan Air Operations, 1971 ||| Operation Jackpot ||| The Indian Army had been helping the Mukti Bahini, through [[Operation Jackpot]], since May 1971, while the Indian Navy had helped set up the Bengali Naval commando unit and had provided command staff for the Bengali gunboats, which were busy mining riverine craft and harassing merchant marine operations in East Pakistan. The IAF could not come to grips with the PAF until formal hostilities commenced, but the Bengali airmen joined in as 9 Bengali pilots and 50 technicians - formerly of the PAF and serving with the Mukti Bahini in various capacities - were gathered for a special mission on 28 September 1971 at [[Dimapur]] in [[Nagaland]]. A number of Bengali civilian pilots from the PIA later joined this group. Indian civilian authorities and the IAF donated 1 [[DC-3 Dakota]] (given by the Maharaja of [[Jodhpor]]), 1 [[de Havilland Canada DHC-3 Otter|DHC-3 Otter]] plane, and 1 [[Alouette III]] helicopter for the newborn Bangladesh Air Force, which was to take advantage of the lack of night-fighting capability of the PAF to launch hit-and-run attacks on sensitive targets inside Bangladesh from the air. The Bengali rank and file fixed up the World War II vintage runway at Dimapur, then began rigging the aircraft for combat duty. The Dakota was modified to carry 500 pound bombs, but for technical reasons it was only used to ferry Bangladesh government personnel. Captain Abdul Khalek, Captain Alamgir Satter, and Captain Abdul Mukit, all destined to earn the ''Bir Pratik'' award, piloted the Dakota. The helicopter was rigged to fire 14 rockets from pylons attached to its side and had .303 Browning machine guns installed, in addition to having {{convert|1|in|mm|adj=on}} steel plate welded to its floor for extra protection. Squadron Leader Sultan Mahmood, Flight Lieutenant Bodiul Alam, and Captain Shahabuddin, all of whom later won the ''Bir Uttam'' award, operated the helicopter. The Otter boasted 7 rockets under each of its wings and could deliver ten 25 pound bombs, which were rolled out of the aircraft by hand through a makeshift door. Flight Lt. Shamsul Alam, along with Captains Akram Ahmed and Sharfuddin Ahmad, flew the Otter - all three were later awarded ''Bir Uttam'' for their service in 1971. This tiny force was dubbed ''Kilo Flight'', the first fighting formation of the nascent Bangladesh Air force. ||| IAF Operations in 1971 ||| Eastern Air Command Order of Battle 1971 ||| Mukti Bahini airforce: Kilo Flight +0 East Pakistan Air Operations, 1971 ||| Sino-Indian War ||| East Pakistan saw no air combat when Pakistan and India came to blows over Kashmir in 1947, although both countries possessed functional air forces. All Pakistani air assets were deployed in West Pakistan at the time, and India concentrated on the Western front as well. India began upgrading its air capabilities on its eastern border only after the war. In 1958, the Eastern '''operational group''' was formed in [[Kolkata]], and was upgraded into a command the following year. Following the [[Sino-Indian War]] of 1962, the Eastern Air Command Headquarters shifted to [[Shillong]], and extensive efforts to increase its operational capabilities in terms of number of squadrons and modernization of its warplanes and operational infrastructure began, as added emphasis was given to countering any possible Chinese threat. In contrast, Pakistan High Command posted only 1 squadron of 12 F-86 [[Canadair]] Sabres in East Pakistan. The Sabres were deployed at Dhaka on October 1964, ||| The Eastern Theater: historical background ||| ||| +0 Eastern Front (World War I) ||| Battle of the Somme ||| Romania's entry into the war provoked major strategic changes for the Germans. In September 1916, German troops were mobilized to the Eastern Front. Additionally, the German Chief of the General Staff, General [[Erich Von Falkenhayn]] was forced to resign from office. [[Kaiser Wilhelm II]] immediately replaced Falkenhayn with [[Paul von Hindenburg]]. In an attempt to relieve some pressure, French and British forces launched a new offensive known as the [[Battle of the Somme]], while the [[Brusilov Offensive]] continued in the East. ||| 1916 ||| Romania Enters the War ||| +0 Eastern Front (World War I) ||| October Revolution ||| The newly formed [[Russian Republic]] continued to fight the war alongside Romania and the rest of the Entente until it was [[October Revolution|overthrown]] by the [[Bolsheviks]] in October 1917. Kerensky oversaw the [[Kerensky Offensive|July Offensive]], which was largely a failure and caused a collapse in the Russian army. The [[Russian Soviet Federative Socialist Republic|new government]] established by the Bolsheviks signed the [[Treaty of Brest-Litovsk]] with the Central Powers, taking it out of the war and making large territorial concessions. Romania was forced to surrender and signed a [[Treaty of Bucharest (1918)|similar treaty]], though both of the treaties were nullified with the surrender of the Central Powers in November 1918. ||| ||| ||| +0 Eastern Front (World War I) ||| Second Balkan War ||| In the immediate years preceding the [[First World War]], the kingdom of Romania was involved in the [[Second Balkan War]] on the side of Serbia, Montenegro, Greece and the Ottoman Empire against Bulgaria. The Treaty of Bucharest, signed on August 10, 1913, ended the Balkan conflict and added 6,960 square kilometers to Romania's territory. ||| Initial Situation in Belligerent Countries ||| Romania ||| +0 Eastern Front (World War II) ||| Battle of France ||| For nearly two years the border was quiet while Germany conquered [[Operation Weserübung|Denmark, Norway]], [[Battle of France|France, The Low Countries]], and the [[Balkans Campaign (World War II)|Balkans]]. Hitler had always intended to renege on his pact with the Soviet Union, eventually making the decision to invade in the spring of 1941. Hitler believed that the Soviets would quickly capitulate after an overwhelming German offensive and that the war could largely end before the onset of the fierce Russian winter. ||| Forces ||| ||| +0 Eastern Front (World War II) ||| Battle of Voronezh (1942) ||| Although plans were made to attack Moscow again, on 28 June 1942, the offensive re-opened in a different direction. Army Group South took the initiative, anchoring the front with the [[Battle of Voronezh (1942)|Battle of Voronezh]] and then following the [[Don River, Russia|Don river]] southeastwards. The grand plan was to secure the Don and [[Volga]] first and then drive into the Caucasus towards [[Petroleum industry in Azerbaijan|the oil fields]], but operational considerations and Hitler's vanity made him order both objectives to be attempted simultaneously. Rostov was recaptured on 24 July when the 1st Panzer Army joined in, and then that group drove south towards [[Maykop|Maikop]]. As part of this, Operation ''Shamil'' was executed, a plan whereby a group of [[Brandenburger commando]]s dressed up as Soviet [[NKVD]] troops to destabilise Maikop's defenses and allow the 1st Panzer Army to enter the oil town with little opposition. ||| Conduct of operations ||| Don, Volga, and Caucasus: Summer 1942 ||| +0 Eastern Front (World War II) ||| Sino-Soviet conflict (1929) ||| Germany had been assembling very large numbers of troops in eastern Poland and making repeated [[reconnaissance]] flights over the border; the Soviet Union responded by assembling its divisions on its western border, although the Soviet mobilization was slower than the Germans' due to the country's less dense road network. As in the [[Sino-Soviet conflict (1929)|Sino-Soviet conflict]] on the [[Chinese Eastern Railway]] or [[Soviet–Japanese Border Wars|Soviet–Japanese border conflicts]], Soviet troops on the western border received a directive, signed by [[Marshal]] [[Semyon Timoshenko]] and [[General of the Army]] [[Georgy Zhukov]], that ordered (as demanded by Stalin): 'do not answer to any provocations' and 'do not undertake any (offensive) actions without specific orders' – which meant that Soviet troops could open fire only on their soil and forbade counter-attack on German soil. The German invasion therefore caught the Soviet military and civilian leadership largely by surprise. ||| Forces ||| ||| +0 Eastern Front (World War II) ||| Spanish general election, 1936 ||| In February 1936 the [[Spanish general election, 1936|Spanish general election]] brought many communist leaders into the [[Popular Front (Spain)|Popular Front]] government in the [[Second Spanish Republic]], but in a matter of months a right-wing military [[Spanish coup of July 1936|coup]] initiated the [[Spanish Civil War]] of 1936–1939. This conflict soon took on the characteristics of a [[proxy war]] involving the Soviet Union and [[International Brigades|left wing volunteers]] from different countries on the side of the predominantly socialist and communist-led It served as a useful testing ground for both the Germans and the Soviets to experiment with equipment and tactics that they would later employ on a wider scale in the Second World War. ||| Ideologies ||| Soviet situation ||| +0 Eastern Front (World War II) ||| Strategic bombing during World War II ||| After the defeat at Stalingrad, Germany geared completely towards a war economy, as expounded in a speech given by [[Joseph Goebbels]], (the Nazi propaganda minister), in the Berlin [[Sportpalast speech|Sportpalast]], increasing production in subsequent years under [[Albert Speer]]'s (the ''Reich'' armaments minister) astute direction, despite the intensifying [[Strategic bombing during World War II|Allied bombing campaign]]. ||| Industrial output ||| ||| +0 Eastern Front (World War II) ||| Western Front (World War II) ||| After the failure of the attempt to capture Stalingrad, Hitler had delegated planning authority for the upcoming campaign season to the [[German Army High Command]] and reinstated [[Heinz Guderian]] to a prominent role, this time as Inspector of Panzer Troops. Debate among the General Staff was polarised, with even Hitler nervous about any attempt to pinch off the Kursk salient. He knew that in the intervening six months the Soviet position at Kursk had been reinforced heavily with [[anti-tank]] guns, [[tank trap]]s, [[land mine|landmines]], [[barbed wire]], [[trench warfare|trenches]], [[Bunker#Pillbox|pillboxes]], [[artillery]] and [[Mortar (weapon)|mortars]]. However, if one last great ''[[blitzkrieg]]'' offensive could be mounted, just maybe the Soviets would ease off and attention could then be turned to the Allied threat to the [[Western Front (World War II)|Western Front]]. The advance would be executed from the Orel salient to the north of Kursk and from [[Belgorod]] to the south. Both wings would converge on the area east of Kursk, and by that means restore the lines of [[Army Group South]] to the exact points that it held over the winter of 1941–1942. ||| Conduct of operations ||| Kursk: Summer 1943 ||| +0 Egyptian Revolution of 2011 ||| 2011 Alexandria bombing ||| [[Alexandria]], home of [[Death of Khaled Mohamed Saeed|Khaled Saeed]], experienced major protests and clashes with police. There were few confrontations between demonstrators, since there were few Mubarak supporters (except for a few police-escorted convoys). The breakdown of law and order, including the general absence of police from the streets, continued until the evening of 3 February. Alexandria's protests were notable for the joint presence of Christians and Muslims in the events following the [[2011 Alexandria bombing|church bombing]] on 1 January, which sparked protests against the Mubarak regime. ||| {{anchor|Protests in cities and regions}}Protests by city ||| Alexandria ||| +0 Egyptian Revolution of 2011 ||| 2011 Iraqi protests ||| The Egyptian and Tunisian revolutions sparked a [[Revolutionary wave|wave of uprisings]], with demonstrations spreading across the [[MENA|Middle East and North Africa]]. [[2010–2011 Algerian protests|Algeria]], [[2011 Bahraini protests|Bahrain]], [[2011 Iranian protests|Iran]], [[2011 Jordanian protests|Jordan]], [[2011 Libyan civil war|Libya]], [[2011 Morocco protests|Morocco]], [[2011 Yemeni uprising|Yemen]] and [[2011 Syrian uprising|Syria]] witnessed major protests, and minor demonstrations occurred in [[2011 Iraqi protests|Iraq]], Kuwait, [[Mauritania]], [[2011 Omani protests|Oman]], [[2011 Saudi Arabian protests|Saudi Arabia]], Somalia{{citation needed|date=June 2014}} and [[2011 Sudanese protests|Sudan]]. ||| Analysis ||| Regional instability ||| +0 Egyptian Revolution of 2011 ||| 2011 Omani protests ||| The Egyptian and Tunisian revolutions sparked a [[Revolutionary wave|wave of uprisings]], with demonstrations spreading across the [[MENA|Middle East and North Africa]]. [[2010–2011 Algerian protests|Algeria]], [[2011 Bahraini protests|Bahrain]], [[2011 Iranian protests|Iran]], [[2011 Jordanian protests|Jordan]], [[2011 Libyan civil war|Libya]], [[2011 Morocco protests|Morocco]], [[2011 Yemeni uprising|Yemen]] and [[2011 Syrian uprising|Syria]] witnessed major protests, and minor demonstrations occurred in [[2011 Iraqi protests|Iraq]], Kuwait, [[Mauritania]], [[2011 Omani protests|Oman]], [[2011 Saudi Arabian protests|Saudi Arabia]], Somalia{{citation needed|date=June 2014}} and [[2011 Sudanese protests|Sudan]]. ||| Analysis ||| Regional instability ||| +0 Egyptian Revolution of 2011 ||| Egyptian parliamentary election, 2010 ||| During the [[Egyptian parliamentary election, 2010|2010 elections]], opposition groups complained about government harassment and fraud. Opposition and citizen activists called for changes to [[National Association for Change#Platform|a number of legal]] and [[National Association for Change#Goals|constitutional provisions affecting elections]].{{citation needed|date=April 2011}} In 2010, [[Transparency International]]'s [[Corruption Perceptions Index]] (CPI) gave Egypt a score of 3.1 based on perceptions by business people and analysts of the degree of corruption (with 10 being clean, and 0 totally corrupt). ||| Background ||| {{anchor|Corruption among government officials}}Corruption ||| +0 Egyptian Revolution of 2011 ||| Revolutions of 1989 ||| [[Gamal Abdel Nasser]]'s defeat brought Anwar Sadat to power after Nasser's death in 1970. Sadat undid Nasser's social reforms and dependence on the Soviet Union, predicting its [[Revolutions of 1989|collapse]] nearly two decades before it occurred. ||| {{anchor|Timeline}}(Pre-)revolution timeline ||| {{anchor|From King Farouk to Mubarak}}Farouk to Mubarak ||| +0 Egyptian Revolution of 2011 ||| Six-Day War ||| [[Emergency law in Egypt|Emergency law]] (Law No. 162 of 1958) was enacted in the country after the 1967 [[Six-Day War]]. Although it was suspended for 18 months during the early 1980s, Human-rights organizations estimate that in 2010, between 5,000 and 10,000 people were in long-term detention without charge or trial. ||| Background ||| Emergency law ||| +0 Egyptian parliamentary election, 2010 ||| Egyptian Revolution of 2011 ||| Human rights groups said this was the 'most fraudulent poll ever' in Egypt's history. It is considered to have been a factor in the [[Egyptian Revolution of 2011|Egyptian Revolution]] that occurred shortly afterwards in early 2011. ||| ||| ||| +0 Eighth Battle of the Isonzo ||| Sixth Battle of the Isonzo ||| The Eighth Battle of the Isonzo, fought briefly from 10–12 October 1916, was essentially a continuation of attempts made during the Seventh Battle of the Isonzo (14–17 September 1916) to extend the bridgehead established at Gorizia during the [[Sixth Battle of the Isonzo]] in August 1916. ||| Battle ||| ||| +0 Encirclement Campaign against Northeastern Jiangxi Soviet ||| First Encirclement Campaign against Jiangxi Soviet ||| The Jiangxi Soviet was a communist base in the northeastern part of [[Jiangxi]] guarded by the 10th Army of the [[Chinese Red Army]], and it was the right flank of the Jiangxi Soviet. In comparison to the major communist base in southern [[Jiangxi]], the Jiangxi Soviet, this communist base was much closer to the nationalist strongholds and it was at the forefront of the nationalist controlled regions, and consequently, it had become a main target the nationalists marked for destruction. The [[Encirclement Campaigns|encirclement campaign]] against Jiangxi Soviet begun in December, 1930, shortly after the [[First Encirclement Campaign against Jiangxi Soviet]]. However, due to the allocation of available troops and other resources to the top priority target, the Jiangxi Soviet, the encirclement campaign against the Jiangxi Soviet was protracted, and was not over until July 1931 after the [[Third Encirclement Campaign against Jiangxi Soviet]] had already started. ||| The base area ||| ||| +0 English Civil War ||| Battle of Carbisdale ||| The execution of [[Charles I of England|Charles I]] altered the dynamics of [[Scotland in the Wars of the Three Kingdoms|the Civil War in Scotland]], which had raged between Royalists and [[Covenanter]]s since 1644. By 1649, the struggle had left the Royalists there in disarray and their erstwhile leader, the [[James Graham, 1st Marquess of Montrose|Marquess of Montrose]], had gone into exile. At first, [[Charles II of England|Charles II]] encouraged Montrose to raise a Highland army to fight on the Royalist side. had already landed and could not abandon the fight. He did not succeed in raising many Highland clans and the Covenanters defeated his army at the [[Battle of Carbisdale 1650|Battle of Carbisdale]] in [[Ross-shire]] on 27 April 1650. The victors captured Montrose shortly afterwards and took him to [[Edinburgh]]. On 20 May the Scottish Parliament sentenced him to death and had him hanged the next day. ||| Third English Civil War (1649–1651) ||| Scotland ||| +0 English Civil War ||| Glorious Revolution ||| The overall outcome of the war was threefold: the trial and [[execution of Charles I]]; the exile of his son, Charles II; and the replacement of [[English monarchy]] with, at first, the [[Commonwealth of England]] (1649–53) and then [[the Protectorate]] (1653–59) under [[Oliver Cromwell]]'s personal rule. The monopoly of the [[Church of England]] on Christian worship in England ended with the victors consolidating the established [[Protestant Ascendancy]] in Ireland. Constitutionally, the wars established the precedent that an English monarch cannot govern without Parliament's consent, although the idea of parliament as the ruling power of England was legally established as part of the [[Glorious Revolution]] in 1688. ||| ||| ||| +0 English Civil War ||| Irish Rebellion of 1641 ||| It was hoped by both Charles and Parliament that the execution of Strafford and the Protestation would end the drift towards war; in fact, they encouraged it. Charles and his supporters continued to resent Parliament's demands, while Parliamentarians continued to suspect Charles of wanting to impose episcopalianism and unfettered royal rule by military force. Within months, the Irish Catholics, fearing a resurgence of Protestant power, [[Irish Rebellion of 1641|struck first]], and all Ireland soon descended into chaos. ||| Background ||| The Long Parliament ||| +0 English Civil War ||| Scotland in the Wars of the Three Kingdoms ||| The execution of [[Charles I of England|Charles I]] altered the dynamics of [[Scotland in the Wars of the Three Kingdoms|the Civil War in Scotland]], which had raged between Royalists and [[Covenanter]]s since 1644. By 1649, the struggle had left the Royalists there in disarray and their erstwhile leader, the [[James Graham, 1st Marquess of Montrose|Marquess of Montrose]], had gone into exile. At first, [[Charles II of England|Charles II]] encouraged Montrose to raise a Highland army to fight on the Royalist side. had already landed and could not abandon the fight. He did not succeed in raising many Highland clans and the Covenanters defeated his army at the [[Battle of Carbisdale 1650|Battle of Carbisdale]] in [[Ross-shire]] on 27 April 1650. The victors captured Montrose shortly afterwards and took him to [[Edinburgh]]. On 20 May the Scottish Parliament sentenced him to death and had him hanged the next day. ||| Third English Civil War (1649–1651) ||| Scotland ||| +0 English Civil War ||| Siege of La Rochelle ||| Charles, meanwhile, decided to send an expeditionary force to relieve the French [[Huguenots]] whom French royal troops held [[Siege of La Rochelle|besieged in La Rochelle]]. Military support for Protestants on the Continent was, in itself, popular both in Parliament and with the Protestant majority in general,{{Citation needed|date=August 2011}} and it had the potential to alleviate concerns brought about by the King's marriage to a Catholic. However, Charles's insistence on having his unpopular royal favourite [[George Villiers, 1st Duke of Buckingham|George Villiers, the Duke of Buckingham]], assume command of the English force undermined that support. Unfortunately for Charles and Buckingham, the relief expedition proved a fiasco (1627), ||| Background ||| Parliamentary concerns and the Petition of Right ||| +0 English Wars (Scandinavia) ||| Battle of Copenhagen (1801) ||| The '''English Wars''' ({{lang-da|Englandskrigene}}) were a series of conflicts between [[England]] and [[Sweden]] with [[Denmark-Norway]] as part of the [[Napoleonic Wars]]. It is named after the most prominent [[England|region]] of its other main participant, the [[United Kingdom of Great Britain and Ireland|United Kingdom]], which declared war on Denmark-Norway due to disagreements over the neutrality of Danish trade and to prevent the Danish fleet falling into the hands of the [[First French Empire]]. It began with the first battle of [[Battle of Copenhagen (1801)|Copenhagen]] in 1801 and its latter stage from 1807 onwards was followed by the [[Gunboat War]], the [[Dano-Swedish War of 1808-1809]] and the Swedish invasion of [[Holstein]] in 1814. ||| ||| ||| +0 English Wars (Scandinavia) ||| Dos de Mayo Uprising ||| In August, the news about the [[Dos de Mayo Uprising|Madrid Uprising]] reached the Spanish troops stationed in Denmark. This led to a mutiny among the Spaniards, and the subsequent [[evacuation of the La Romana Division]], where the British evacuated the majority of the Spanish troops in Denmark. ||| Course ||| Alliance with France ||| +0 English Wars (Scandinavia) ||| Finnish War ||| Since Sweden had been an ally of Britain in the war against France since 1805, and since Russia after the peace treaty with France at [[Tilsit]] had formed an alliance with Napoleon, Tsar Alexander saw this as an opportunity to attack and take Finland from Sweden. So in February 1808 the Russians initiated the [[Finnish War]] by marching with 24,000 men into Finland and occupying [[Hämeenlinna]]. After the Russian attack on Sweden, Crown Prince Frederick also saw an opportunity to take advantage of Sweden's weak position and to take back the areas that Denmark-Norway had lost to Sweden after the [[Second Treaty of Brömsebro (1645)|Treaty of Brömsebro]] and the [[Treaty of Roskilde]]. Denmark had also through the agreement at Fontainebleau promised to help the French and the Russians in a possible attack against Sweden, so on March 14, 1808, one day after the death of King Christian VII, Denmark-Norway also declared war on Sweden. As a result of this declaration of war, Napoleon had chosen to send an auxiliary corps, consisting of troops from France, [[Kingdom of Spain (Napoleonic)|Spain]] and the [[Netherlands]], to Denmark. The troops were led by the French Marshal [[Jean-Baptiste Bernadotte]], and should along with the Danish-Norwegian troops have launched an invasion of [[Skåne]]. But Bernadotte's troops never got further than Zealand since the ice began to break up in the straits between [[Kattegat]] and the [[Baltic Sea]] as early as in mid-March, and the appearance of the British fleet made it difficult to cross over to Sweden. Bernadotte's troops then had to be accommodated in [[Kolding]], where they also started the fire at [[Koldinghus]]. With Bernadotte's troops stranded on the Danish peninsula, the war was instead directed towards the [[Norway-Sweden border|Swedish-Norwegian border]], where the Swedish troops in mid-April invaded Norway. The invasion was, however, halted and there were during the spring and summer only local skirmishes between the Norwegian and Swedish forces, before the Swedish troops in the late summer retreated back across the border. ||| Course ||| Alliance with France ||| +0 Erdut killings ||| Croatian War of Independence ||| The '''Erdut killings''' were a series of murders of 37 [[Hungarians|Hungarian]] and [[Croats|Croat]] civilians in the village of [[Erdut]], [[Croatia]] committed by [[Croatian Serb]] forces and [[Serb Volunteer Guard]] paramilitaries between November 1991 and June 1992, during the [[Croatian War of Independence]]. Twenty-two Hungarians and 15 Croats were killed. The first killings occurred on 10 November 1991, when twelve civilians died. Eight more were killed over the following several days. Five more civilians were killed on 10 December, and another seven on 16 December. Four others were killed on 21 February 1992 and the final one was killed on 3 June. The bodies of these victims were either buried in [[mass grave]]s or thrown into nearby wells. ||| ||| ||| +0 Eruption of Mount Vesuvius in 79 ||| Atomic bombings of Hiroshima and Nagasaki ||| Mount Vesuvius spewed a deadly cloud of [[volcanic gas]], [[stone]]s, and [[volcanic ash|ash]] to a height of {{convert|33|km}}, ejecting [[Lava|molten rock]] and pulverized [[pumice]] at the rate of 1.5 million tons per second, ultimately releasing a hundred thousand times the [[thermal energy]] of the [[Atomic bombings of Hiroshima and Nagasaki|Hiroshima bombing]]. ||| ||| ||| +0 Escape of the Provisional Revolutionary Government ||| Cambodian Campaign ||| A change in the Cambodian government allowed a window of opportunity for the destruction of the base areas in 1970 when Prince [[Norodom Sihanouk]] was deposed and replaced by pro-American General [[Lon Nol]]. The pro-American Lon Nol demanded the Vietcong forces to leave Cambodia, they refused and took control of much of the East and North of Cambodia. Lon Nol and the South Vietnamese responded by launching an invasion of the border region and forcing the anti government fighters to leave the area to safer Vietnamese controlled Kratie provinces to the north. Some elements of the anti government forces including the PRG left the area while under pressure from Cambodian and South Vietnamese forces. This operation was seen as a precursor to the much larger [[Cambodian Campaign]] a month later. ||| ||| ||| +0 European theatre of World War I ||| Caucasus Campaign ||| In the [[Black Sea]], the Russian fleet was dominant and it was led by two skilled commanders, [[Andrei Eberhardt|Admiral Eberhart]] and then [[Alexander Kolchak|Admiral Kolchak]] (who took over in 1916). By the end of 1915, the Russian fleet had nearly complete control of the sea. The Black Sea fleet was used mainly to support [[Nikolai Nikolaevich Yudenich|General Yudenich]] in his [[Caucasus Campaign]]. ||| Naval conflict ||| ||| +0 European theatre of World War II ||| Battle of Berlin ||| Hitler, learning of [[Death of Benito Mussolini|Mussolini's death]], realized that the end had finally come. He remained in Berlin, the crumbling Nazi capital, even as the city was encircled and trapped by the Soviets and the [[Battle of Berlin]] raged. On April 30, Adolf Hitler, with his wife of one day, Eva Braun, committed suicide in his [[Führerbunker|bunker]] to avoid capture by Soviet troops. In his [[last will and testament of Adolf Hitler|last will and testament]], Hitler appointed Grand Admiral [[Karl Dönitz]] as the new German leader. But Germany lasted only 7 days longer under the '[[Flensburg government]]' of Dönitz. He surrendered unconditionally to the Americans, British, and Soviets on May 8, 1945. ||| End of the war in Europe ||| ||| +0 European theatre of World War II ||| Battle of Britain ||| The British rejected several covert German attempts to negotiate a peace. Germany massed their air force in northern German-occupied France to prepare the way for a possible invasion, codenamed [[Operation Sea Lion|''Operation Seelöwe'']] (Sea Lion), deeming that [[air superiority]] was essential for the invasion. The operations of the Luftwaffe against the [[Royal Air Force]] became known as the [[Battle of Britain]]. Initially the Luftwaffe concentrated on destroying the R.A.F. on the ground and in the air. They later switched to bombing major and large industrial British cities in [[the Blitz]], in an attempt to draw R.A.F. fighters out and defeat them completely. Neither approach was successful in reducing the R.A.F. to the point where air superiority could be obtained, and plans for an invasion were suspended by September 1940. ||| War comes to the west ||| ||| +0 European theatre of World War II ||| Battle of Crete ||| Prior to the war Italy had invaded [[Albania]] and officially annexed it. Mussolini's regime declared war on Britain and France on June 10, 1940, and invaded Greece on October 28. However, Italian forces were unable to match the Nazi successes in northwest Europe. Italy declared war on Greece and invaded the country, but it was not until German intervention that the country was overrun. While the Greek campaign was underway, German forces, supported by the Italians, Hungarians and the Bulgarians simultaneously invaded Yugoslavia. After the mainland was conquered, Germany invaded Crete in what is known as the [[Battle of Crete]]. With the Balkans secure, Germany and her allies attacked the Soviet Union in the largest land operation in history. The Balkans campaign delayed the invasion{{Citation needed|date=September 2008}}, and subsequent resistance movements in [[Military history of Albania during World War II|Albania]], [[Resistance in Yugoslavia|Yugoslavia]] and [[Greek Resistance|Greece]] tied up valuable Axis forces{{Citation needed|date=September 2008}}. This provided much needed and possibly decisive relief for the Soviets. ||| Mediterranean and Balkans ||| ||| +0 European theatre of World War II ||| Battle of France ||| On May 10 the [[Phoney War]] ended with a sweeping German invasion of [[Belgium]], the [[Netherlands]], [[Luxembourg]], and [[French Third Republic]] that bypassed French fortifications along the [[Maginot Line]]. After overrunning The Netherlands, Belgium, and Luxembourg, Germany turned against France, entering the country through the [[Ardennes]] on May 13—the French had made the fatal mistake of leaving this area almost totally undefended, believing its terrain to be impassable for tanks and other vehicles. Most Allied forces were in [[Flanders]], anticipating a re-run of the [[World War I]] [[Schlieffen Plan]], and were cut off from the French mainland. As a result of this, and also the superior German communications and tactics, the [[Battle of France]] was shorter than virtually all pre-war Allied thought could have conceived. It lasted six weeks, including the [[Luftwaffe]] bombing of Paris June 3. On June 10 [[Kingdom of Italy|Italy]] declared war on both France and the [[United Kingdom]], but did not gain any significant success in this campaign. French government fled Paris, and soon, France surrendered on June 22. In order to further the humiliation of the French people and the country itself, Hitler arranged for the surrender document to be signed in the [[Forest of Compiègne]], in the same railway coach where the German surrender had been signed in 1918. The surrender divided France into two major parts; the Northern part under German control, and a southern part under French control, based at [[Vichy]] and referred to as [[Vichy France]], a rump state friendly to Germany. Many French soldiers, as well as those of other occupied countries, escaped to Britain. The General [[Charles de Gaulle|de Gaulle]] proclaimed himself the legitimate leader of [[Free France]] and vowed to continue to fight. Following the unexpected swift victory, Hitler promoted 12 [[general]]s to the rank of [[field marshal]] during the [[1940 Field Marshal Ceremony]]. ||| War comes to the west ||| ||| +0 European theatre of World War II ||| Battle of Kursk ||| After Stalingrad, the initiative had passed from Germany but had not yet been seized by the Soviets. A [[Third Battle of Kharkov|desperate counterattack]] in the spring of 1943 by forces of Field Marshal [[Erich von Manstein]] temporarily halted the Soviet advance. [[Battle of Kursk]] was the last major offensive by the German Army on the eastern front. The Soviets had intelligence of what was to come and prepared massive defences in huge depth in the Kursk salient. They stopped the German armoured thrusts after a maximum penetration of just over {{convert|30|mi|km}}. After Kursk the Red Army got the upper hand and generally was on the offensive for the rest of war, and the large scale of the Soviet Union allowed to overcome high losses in manpower and equipment. Soviet success prompted a more active Allied involvement on the opposite of Europe, because Nazi Germany was bogged into a costly defensive war on the East, fending its ever shrinking occupied territory. ||| Eastern Front ||| Battles after Stalingrad ||| +0 European theatre of World War II ||| Bombing of Dresden in World War II ||| From 1942 onwards, the efforts of Bomber Command were supplemented by the [[Eighth Air Force]] of the [[United States Army Air Forces]], U.S. Army Air Forces units being deployed to England to join the assault on mainland Europe on July 4, 1942. Bomber Command raided by night and the US forces by day. On February 14, 1945, a [[Bombing of Dresden in World War II|raid on Dresden]] produced one of the most devastating fires in history. A firestorm was created in the city, and between 18,000 to 25,000 people were killed. Only the [[Bombing of Hamburg in World War II|raids on Hamburg]] (July 24, 1943 – July 29, 1943), the March 9–10, 1945 [[Bombing of Tokyo in World War II|firebombing of Tokyo]] and the nuclear attacks on [[Hiroshima]] (August 6, 1945) and [[Nagasaki, Nagasaki|Nagasaki]] (August 9, 1945) killed more people through a single attack. ||| Air war ||| ||| +0 European theatre of World War II ||| Dunkirk evacuation ||| [[Vyacheslav Molotov]], the Foreign Policy Minister of the [[U.S.S.R.]], which was tied with [[Molotov–Ribbentrop pact|Soviet–German non-aggression treaty]], congratulated the Germans: '''We hand over the most cordial congratulations by the Soviet government on the occasion of splendid success of German Wehrmacht. [[Heinz Guderian|Guderian]]'s tanks broke through to the sea near [[Abbeville]], powered by Soviet fuel, the German bombs, that razed [[Rotterdam]] to the ground, were filled with Soviet [[pyroxylin]], and bullet cases, which hit the British soldiers retreating from [[Dunkirk evacuation|Dunkirk]], were cast of Soviet [[cupronickel]] alloy...''' ||| War comes to the west ||| ||| +0 European theatre of World War II ||| Greek Civil War ||| By April 1945, German forces were retreating on all fronts in northern Italy and occupied Yugoslavia, following continuous Allied attacks. The campaign, and the fighting in the Mediterranean and Middle East Theatre came to an end on 29 April. On May 2, in Italy, Field Marshal [[Heinrich von Vietinghoff]], the commander-in-chief of all German forces in the country surrendered to Field Marshal [[Harold Alexander]], the supreme commander of all Allied forces in the Mediterranean area. Fighting would, however, continue in Greece where a [[Greek Civil War|civil war]] had broke out and end on 1949 after Greek government troops aided by the US and Britain defeated the communist guerrillas supported by the Soviets. ||| Mediterranean and Balkans ||| ||| +0 European theatre of World War II ||| Invasion of Normandy ||| Simultaneously with the fall of Rome came the long-awaited [[Invasion of Normandy|invasion of France]]. [[Operation Overlord]] put over 180,000 troops ashore in [[Normandy landings|Normandy]] on June 6, 1944, creating a beachhead that would eventually result in over 3 million Allied soldiers on Germany's western front. A long grinding campaign six weeks long followed as [[United States Army|American]], [[British Army|British]], and [[Canadian Army|Canadian]] forces were slowly built up in the beachhead, and German forces slowly worn down. [[Operation Cobra|When the breakout finally did come]] it was spectacular, with Allied troops very quickly capturing almost all of Normandy within days. Many German forces that had been fighting in Normandy were trapped in the [[Falaise pocket]]. ||| Allied invasion of occupied France ||| ||| +0 European theatre of World War II ||| Normandy landings ||| Simultaneously with the fall of Rome came the long-awaited [[Invasion of Normandy|invasion of France]]. [[Operation Overlord]] put over 180,000 troops ashore in [[Normandy landings|Normandy]] on June 6, 1944, creating a beachhead that would eventually result in over 3 million Allied soldiers on Germany's western front. A long grinding campaign six weeks long followed as [[United States Army|American]], [[British Army|British]], and [[Canadian Army|Canadian]] forces were slowly built up in the beachhead, and German forces slowly worn down. [[Operation Cobra|When the breakout finally did come]] it was spectacular, with Allied troops very quickly capturing almost all of Normandy within days. Many German forces that had been fighting in Normandy were trapped in the [[Falaise pocket]]. ||| Allied invasion of occupied France ||| ||| +0 European theatre of World War II ||| Operation Barbarossa ||| On June 22, 1941, Germany launched the invasion of the Soviet Union, code-named [[Operation Barbarossa]]. This invasion, the biggest in recorded history, started the bloodiest conflict in world history; the Axis–Soviet War, also known as the Eastern Front. ||| Eastern Front ||| Initial Soviet retreat ||| +0 European theatre of World War II ||| Operation Cobra ||| Simultaneously with the fall of Rome came the long-awaited [[Invasion of Normandy|invasion of France]]. [[Operation Overlord]] put over 180,000 troops ashore in [[Normandy landings|Normandy]] on June 6, 1944, creating a beachhead that would eventually result in over 3 million Allied soldiers on Germany's western front. A long grinding campaign six weeks long followed as [[United States Army|American]], [[British Army|British]], and [[Canadian Army|Canadian]] forces were slowly built up in the beachhead, and German forces slowly worn down. [[Operation Cobra|When the breakout finally did come]] it was spectacular, with Allied troops very quickly capturing almost all of Normandy within days. Many German forces that had been fighting in Normandy were trapped in the [[Falaise pocket]]. ||| Allied invasion of occupied France ||| ||| +0 European theatre of World War II ||| Operation Market Garden ||| An attempt was made to force the situation with [[Operation Market Garden]] (September 17, 1944 – September 25, 1944). The Allies attempted to capture bridges with an airborne assault, to open the way into Germany and liberate the northern Netherlands. Since heavier German forces than intelligence had predicted were present, the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]] was almost completely destroyed, and the operation failed. ||| Allied invasion of occupied France ||| ||| +0 European theatre of World War II ||| Operation Overlord ||| Simultaneously with the fall of Rome came the long-awaited [[Invasion of Normandy|invasion of France]]. [[Operation Overlord]] put over 180,000 troops ashore in [[Normandy landings|Normandy]] on June 6, 1944, creating a beachhead that would eventually result in over 3 million Allied soldiers on Germany's western front. A long grinding campaign six weeks long followed as [[United States Army|American]], [[British Army|British]], and [[Canadian Army|Canadian]] forces were slowly built up in the beachhead, and German forces slowly worn down. [[Operation Cobra|When the breakout finally did come]] it was spectacular, with Allied troops very quickly capturing almost all of Normandy within days. Many German forces that had been fighting in Normandy were trapped in the [[Falaise pocket]]. ||| Allied invasion of occupied France ||| ||| +0 European theatre of World War II ||| Phoney War ||| Full-scale war in Europe began at dawn on September 1, 1939, when Germany used her newly formed [[Blitzkrieg]] tactics and military strength to [[Invasion of Poland (1939)|invade Poland]], to which both the United Kingdom and France had pledged protection and independence guarantees. On September 3, 1939, the [[UK]] and [[France]] declared war on Germany and British troops were sent to France, however neither French nor British troops [[Phoney War|gave any significant assistance to the Poles]] during the entire invasion, and the German–French border, excepting the [[Saar Offensive]], remained mostly calm. ||| Outbreak of war in Europe ||| ||| +0 European theatre of World War II ||| Schlieffen Plan ||| On May 10 the [[Phoney War]] ended with a sweeping German invasion of [[Belgium]], the [[Netherlands]], [[Luxembourg]], and [[French Third Republic]] that bypassed French fortifications along the [[Maginot Line]]. After overrunning The Netherlands, Belgium, and Luxembourg, Germany turned against France, entering the country through the [[Ardennes]] on May 13—the French had made the fatal mistake of leaving this area almost totally undefended, believing its terrain to be impassable for tanks and other vehicles. Most Allied forces were in [[Flanders]], anticipating a re-run of the [[World War I]] [[Schlieffen Plan]], and were cut off from the French mainland. As a result of this, and also the superior German communications and tactics, the [[Battle of France]] was shorter than virtually all pre-war Allied thought could have conceived. It lasted six weeks, including the [[Luftwaffe]] bombing of Paris June 3. On June 10 [[Kingdom of Italy|Italy]] declared war on both France and the [[United Kingdom]], but did not gain any significant success in this campaign. French government fled Paris, and soon, France surrendered on June 22. In order to further the humiliation of the French people and the country itself, Hitler arranged for the surrender document to be signed in the [[Forest of Compiègne]], in the same railway coach where the German surrender had been signed in 1918. The surrender divided France into two major parts; the Northern part under German control, and a southern part under French control, based at [[Vichy]] and referred to as [[Vichy France]], a rump state friendly to Germany. Many French soldiers, as well as those of other occupied countries, escaped to Britain. The General [[Charles de Gaulle|de Gaulle]] proclaimed himself the legitimate leader of [[Free France]] and vowed to continue to fight. Following the unexpected swift victory, Hitler promoted 12 [[general]]s to the rank of [[field marshal]] during the [[1940 Field Marshal Ceremony]]. ||| War comes to the west ||| ||| +0 European theatre of World War II ||| Siege of Leningrad ||| A few months after the invasion began, German troops came to southern approaches to [[Saint Petersburg|Leningrad]] and laid a [[siege]] to the city (known as the [[Siege of Leningrad]]), which was also blocked from the north by Finnish forces. Finland's C-in-C [[Carl Gustaf Emil Mannerheim|Mannerheim]] had halted at the [[River Svir]] and refrained from attacking the city. Hitler had ordered that the city of Leningrad must 'vanish from the surface of the earth', with its entire population exterminated. Rather than storming the city, the Wehrmacht was ordered to blockade Leningrad so as to starve the city to death, while attacking it with bombers and artillery. About one million civilians died in the Leningrad siege – 800,000 by starvation. The siege lasted for 872 days. The only overland way into the city was possibly during the winter, across the frozen [[Lake Ladoga]], between the German and Finnish lines. ||| Eastern Front ||| Initial Soviet retreat ||| +0 European theatre of World War II ||| Third Battle of Kharkov ||| After Stalingrad, the initiative had passed from Germany but had not yet been seized by the Soviets. A [[Third Battle of Kharkov|desperate counterattack]] in the spring of 1943 by forces of Field Marshal [[Erich von Manstein]] temporarily halted the Soviet advance. [[Battle of Kursk]] was the last major offensive by the German Army on the eastern front. The Soviets had intelligence of what was to come and prepared massive defences in huge depth in the Kursk salient. They stopped the German armoured thrusts after a maximum penetration of just over {{convert|30|mi|km}}. After Kursk the Red Army got the upper hand and generally was on the offensive for the rest of war, and the large scale of the Soviet Union allowed to overcome high losses in manpower and equipment. Soviet success prompted a more active Allied involvement on the opposite of Europe, because Nazi Germany was bogged into a costly defensive war on the East, fending its ever shrinking occupied territory. ||| Eastern Front ||| Battles after Stalingrad ||| +0 European theatre of World War II ||| Winter War ||| The Soviet Union wanted to annex [[Finland]] and offered a union agreement, but Finland rejected it, which caused the Soviet Union to attack Finland on November 30. This began the [[Winter War]]. After five months of hard fighting, Finns were only pushed from a strip of land bordering [[Russia]], in spite of Soviet numerical superiority, the Soviet Union gave up attempts to subdue the whole country. In the [[Moscow Peace Treaty (1940)|Moscow Peace Treaty]] of March 12, 1940, Finland ceded 10% of her territory. The Finns were embittered over having lost more land in the peace than on the battlefields, and over the perceived lack of world sympathy. ||| Germany assumes dominance in northern Europe ||| ||| +0 European theatre of World War II ||| World War II in Yugoslavia ||| Allied (and mostly pro-Soviet) [[National Liberation Army of Yugoslavia]], which got some supplies and assistance from Western Allies, [[World War II in Yugoslavia|battled Axis powers]] on the opposite side of the [[Adriatic Sea]]. In late 1944 it was joined with the advancing Soviet Army and proceeded to push remaining German forces out of the Balkans. ||| Mediterranean and Balkans ||| ||| +0 Exercise Tiger ||| Operation Overlord ||| '''Exercise Tiger''', or '''Operation Tiger''', was the code name for one in a series of large-scale rehearsals for the [[Operation Overlord|D-Day]] invasion of [[Normandy]], which took place on [[Slapton, Devon|Slapton Sands]] or Slapton Beach in [[Devon]]. Coordination and communication problems resulted in [[friendly fire]] deaths during the exercise, and an Allied convoy positioning itself for the landing was attacked by [[E-boat]]s of [[Germany]]'s ''[[Kriegsmarine]]'', resulting in the deaths of 946 [[United States|American]] servicemen. Because of the impending invasion, the incident was under the strictest secrecy at the time and was only nominally reported afterward. As a result, Exercise Tiger has been called 'forgotten.' ||| ||| ||| +0 Exercise Tiger ||| Utah Beach ||| In late 1943, as part of the build-up to D-day, the British Government set up a training ground at Slapton Sands, Devon, to be used by Force 'U', the American forces tasked with landing on [[Utah Beach]]. Slapton Beach was selected for its similarity to Utah Beach: a gravel beach, followed by a strip of land and then a lake. Approximately 3,000 local residents in the area of [[Slapton, Devon|Slapton]], ||| Exercise ||| Landing Operations ||| +0 Expédition d'Irlande ||| Irish Rebellion of 1798 ||| The British were largely unable to effectively interfere with the French fleet before, during or after the invasion. A few ships operating from [[Cork (city)|Cork]] captured isolated French warships and transports, but the only significant British response came from Captain [[Edward Pellew|Sir Edward Pellew]], who was able to drive the French ship of the line {{ship|French ship|Droits de l'Homme|1794|2}} ashore in the [[Action of 13 January 1797]] with the loss of over 1,000 lives. In total, the French lost 12 ships captured or wrecked and thousands of soldiers and sailors drowned, without a single man reaching Ireland except as [[prisoners of war]]. Both navies were criticised by their governments for their behaviour during the campaign, but the French were encouraged to launch a second attempt in 1798, successfully landing 2,000 men in August but failing to influence the [[Irish Rebellion of 1798|Irish Rebellion]] and again losing significant numbers of men and ships. ||| ||| ||| +0 February Uprising ||| Battle of Sardarabad ||| After the [[First Republic of Armenia|Republic of Armenia]] was Sovietized in December 1920 about 1,000 Armenian officers were arrested by the new Bolshevik authorities, including generals [[Tovmas Nazarbekian]] and [[Movses Silikyan]]. They were forced to walk from [[Yerevan]] to [[Alaverdi]] by foot (about 160 kilometers) and some of them were killed on the road. These officers were subsequently sent to jails in [[Baku]] and [[Russia]]. In February 1921, many heroes of the [[Battle of Sardarabad]] were shot, including [[Daniel Bek-Pirumyan]], while his brother [[Poghos Bek-Pirumyan]] committed suicide after being tortured. Pro-[[Armenian Revolutionary Federation|ARF]] intellectuals were also harassed. Wheat was taken away from villagers without any compensation. ||| Background ||| ||| +0 Federalist Riograndense Revolution ||| Paraguayan War ||| At the time the then President [[Floriano Peixoto|Marshal Floriano Peixoto]] summoned veteran of the [[Paraguayan War]] Colonel [[Gomes Carneiro]], he did not repent. The order was to halt the Federalist Revolution in Southern Brazil. In five days, he came to the area to become one of the protagonists of history. ||| The War ||| ||| +0 Festivali i Këngës ||| Kosovo War ||| In 1998, [[Albërie Hadërgjonaj]] became the first Kosovar-Albanian singer to win the contest with the ballad 'Mirësia dhe e vërteta' (''Goodness and truth''). The song had a humanitarian anti-war message and is often referred to as a song for [[Kosovo]], relating to the 1998–1999 [[Kosovo War|war]]. ||| History ||| Troubled times ||| +0 Fifth Battle of the Isonzo ||| Battle of Verdun ||| However, it was an offensive launched not after detailed strategic planning, but rather as a distraction to shift the [[Central Powers]] away from the [[Eastern Front (World War I)|Eastern Front]] and from [[Battle of Verdun|Verdun]], where the greatest bloodshed of the war was occurring. The attack was a result of the allied [[Chantilly, Oise#Chantilly in World War I|Chantilly Conference of December 1915]]. ||| Background ||| ||| +0 Fifth Battle of the Isonzo ||| Eastern Front (World War I) ||| However, it was an offensive launched not after detailed strategic planning, but rather as a distraction to shift the [[Central Powers]] away from the [[Eastern Front (World War I)|Eastern Front]] and from [[Battle of Verdun|Verdun]], where the greatest bloodshed of the war was occurring. The attack was a result of the allied [[Chantilly, Oise#Chantilly in World War I|Chantilly Conference of December 1915]]. ||| Background ||| ||| +0 Finnish Civil War ||| October Revolution ||| The main factor behind the Finnish Civil War was [[World War I]]; the [[Russian Empire]] collapsed under pressures of the war, leading to the [[February Revolution|February]] and [[October Revolution]]s in 1917. The breakdown caused a large power vacuum and subsequent power struggle in [[Eastern Europe]]. The autonomous [[Grand Duchy of Finland]], as a part of the [[Russian Empire]], became sucked into the vacuum and the struggle for power. The actual combat did not spread to [[geopolitically]] less marked Finland until early 1918, but the war between the [[German Empire]] and Russia had indirect impacts on the Finns. Since the end of 19th century, the Grand Duchy had become a vital source of [[raw materials]], industrial products, [[food]] and labor for the growing Imperial Russian capital [[Petrograd]] ([[Saint Petersburg]]), and WWI emphasized the role. Strategically the Finnish territory was the northern section of Estonian-Finnish gateway and buffer zone to and from Petrograd, via the [[Gulf of Finland]], the [[Narva]] area and the [[Karelian Isthmus]]. ||| Background ||| ||| +0 Finnish War ||| Battle of Copenhagen (1807) ||| In the meantime, the [[Royal Navy]] [[Battle of Copenhagen (1807)|attacked Copenhagen]] and the [[Anglo-Russian War]] was declared. Referring to the treaties of 1780 and 1800, the emperor demanded that Gustav Adolf close the [[Baltic Sea]] to all foreign warships. Although he reiterated his demand on November 16, 1807, it took two months before the king responded that it was impossible to honor the previous arrangements as long as the French were in control of the major Baltic ports. King Gustav Adolf did this after securing an alliance with England on 8 February 1808. Meanwhile, on 30 December 1807 Russia announced that should Sweden not give a clear reply Russia would be forced to act. ||| Background ||| ||| +0 First Anglo-Dutch War ||| Battle of Worcester ||| French support for the English royalists had led the Commonwealth to issue [[letters of marque]] against French ships and against French goods in neutral ships. These letters carried the right to search neutral ships and most neutral ships sailing the seas were Dutch. Infuriated by the treatment of the English delegation in The Hague and emboldened by their victory against Charles I and the royalist forces at the [[Battle of Worcester]] on September 3, 1651, the [[Rump Parliament|English Parliament]], as noted above, passed the first of the [[Navigation Acts]] in October 1651. It ordered that only English ships and ships from the originating country could import goods to England. This measure, as also noted above, was particularly aimed at hampering the shipping of the highly trade-dependent Dutch and often used as a pretext simply to take their ships; as [[George Monck, 1st Duke of Albemarle|General Monck]] put it: 'The Dutch have too much trade, and the English are resolved to take it from them.' Agitation among the Dutch merchants was further increased by [[George Ayscue]]'s capture in early 1652 of 27 Dutch ships trading with the royalist colony of [[Barbados]] in contravention of an embargo imposed by the Commonwealth. Over a hundred other Dutch ships were captured by English privateers between October 1651 and July 1652. Moreover, the death of Dutch stadtholder William II, who had favoured an expansion of the army at the expense of the navy, had led to a change in the defence policy of the United Provinces towards protecting the great trading concerns of Amsterdam and Rotterdam. Accordingly, the States General decided on 3 March 1652 to expand the fleet by hiring and equipping 150 merchant ships as ships of war to allow effective convoying against hostile English actions. ||| Outbreak of war ||| ||| +0 First Anglo-Dutch War ||| English Civil War ||| The third cause of the Dutch trading advantage was the [[English Civil War]] (1642-1651). In 1649, Parliament overthrew the monarchy and beheaded King [[Charles I of England|Charles I]]. Until 1651, the English Parliament remained at war with royalists both at home and in some of England's colonies. From 1649 to 1651, Parliament in London set about expanding and improving the English Navy to pursue the civil war at sea. Meanwhile, the war raised havoc with English trading and shipping. The English accused the Dutch of profiting from the turmoil of the English Civil War. ||| Background ||| ||| +0 First Anglo-Dutch War ||| Second Anglo-Dutch War ||| However, the [[commerce|commercial]] rivalry between the two nations was not resolved. Especially in their vast overseas empires, hostilities continued between Dutch and English trading companies, which had warships and troops of their own. The Dutch had started on a major shipbuilding programme to remedy the lack of [[ships of the line]] evident at the battles of the Kentish Knock, the Gabbard, and [[Battle of Scheveningen|Scheveningen]]. The admiralties were now forbidden by law to sell off these 60 new ships. The [[Second Anglo-Dutch War]] was distantly in the making. ||| Aftermath ||| ||| +0 First Anglo-Dutch War ||| Third Anglo-Dutch War ||| *[[Third Anglo-Dutch War]] ||| See also ||| ||| +0 First Anglo-Dutch War ||| Wars of the Three Kingdoms ||| On the other hand, the navy of the Commonwealth of England was in better condition initially and was constantly improving. The Commonwealth had won the English Civil War in 1652 with a strong and effective navy that had supported and supplied Cromwell's army in the [[Wars of the Three Kingdoms|wars in Scotland and Ireland]]; blockaded the royalist fleet of [[Prince Rupert of the Rhine|Prince Rupert]] in [[Lisbon]]; and organised a system of convoys to protect the commerce of the Commonwealth against the swarms of privateers set upon it from every European port. On 24 September 1650, General-at-Sea [[Robert Blake (admiral)|Robert Blake]] had defeated the Portuguese fleet in a violent gale, sinking the Portuguese Vice-Admiral and taking seven prizes, compelling Portugal to cease protecting Rupert. In 1651 the royalist strongholds in the [[Isles of Scilly]], the [[Isle of Man]] and the [[Channel Islands]] had been captured, and in 1652 General [[George Ayscue]] had recovered England's colonial possessions in the [[West Indies]] and North America. The English navy had been placed on a secure financial footing by an Act of 10 November 1650, which imposed a 15% tax on merchant shipping and provided that the money thus raised should be used to fund the naval forces protecting the convoys. Between 1649 and 1651 the English parliament considerably expanded and improved the British navy. Dutch Admiral Tromp's new flagship ''Brederode'' was the largest ship in the Dutch navy; Britain had 18 ships superior in firepower to the ''Brederode''. Furthermore, not only were the British ships larger, with more guns, but the British guns themselves, were bigger than the guns of the Dutch navy. The British could thus fire and hit enemy ships at a longer distance, causing comparatively more damage with their [[Round shot|shot]]. ||| Background ||| ||| +0 First Barbary War ||| Second Barbary War ||| However, the more immediate problem of Barbary piracy was not fully settled. By 1807, Algiers had gone back to taking American ships and seamen hostage. Distracted by the preludes to the [[War of 1812]], the U.S. was unable to respond to the provocation until 1815, with the [[Second Barbary War]], in which naval victories by Commodores William Bainbridge and Stephen Decatur led to treaties ending all tribute payments by the U.S. ||| Peace treaty and legacy ||| ||| +0 First Barbary War ||| War of 1812 ||| In agreeing to pay a ransom of $60,000 for the American prisoners, the Jefferson administration drew a distinction between paying ''tribute'' and paying ''ransom''. At the time, some argued that buying sailors out of slavery was a fair exchange to end the war. William Eaton, however, remained bitter for the rest of his life about the treaty, feeling that his efforts had been squandered by the state department diplomat [[Tobias Lear]]. Eaton and others felt that the capture of Derna should have been used as a bargaining chip to obtain the release of all American prisoners without having to pay ransom. Furthermore, Eaton believed the honor of the United States had been compromised when it abandoned Hamet Karamanli after promising to restore him as leader of Tripoli. Eaton's complaints generally went unheard, especially as attention turned to the strained international relations which would ultimately lead to the withdrawal of the U.S. Navy from the area in 1807 and to the [[War of 1812]]. ||| Peace treaty and legacy ||| ||| +0 First Battle of Adobe Walls ||| American Civil War ||| The battle of Adobe Walls occurred on November 25, 1864, in the vicinity of [[Adobe Walls, Texas|Adobe Walls]], the ruins of [[William Bent]]'s abandoned [[adobe]] trading post and saloon, located on the northern side of the [[Canadian River]] 17 miles (27 km) northeast of present day [[Stinnett, Texas|Stinnett]] in [[Hutchinson County, Texas|Hutchinson County]]. As the [[American Civil War]] drained available troops, attacks on the Great Plains worsened, leading in the later part of 1863 to cries from settlers for protection. ||| Background ||| ||| +0 First Battle of Artois ||| Battle of Arras (1914) ||| The '''First Battle of Artois''' (17 December 1914 – 13 January 1915) was a battle fought during [[World War I]]. The battle was the first offensive move on the [[Western Front (World War I)|Western Front]] by either side after the [[First Battle of Ypres]] ended in November 1914. The French assault failed to break the stalemate.{{sfn|Tucker|Roberts|2005|p=140}}{{sfn|Nolan|2002|p=1,863}}{{sfn|Sheffield|2007|p=55}}{{sfn|Sumner|2009|p=6}} During what became known as the [[Race to the Sea]] the [[Battle of Arras (1914)|Battle of Arras]] had been fought from {{nowrap|1–4 October}} after which local operations, particularly on the Lorette Spur, continued during the First Battle of Flanders to the north. In May 1915 the French Tenth Army conducted an offensive known as the [[Second Battle of Artois]]. The [[Third Battle of Artois]], sometimes called the Artois–Loos Offensive, took place from {{nowrap|25 September – 15 October 1915}}. ||| ||| ||| +0 First Battle of Artois ||| First Battle of Ypres ||| The '''First Battle of Artois''' (17 December 1914 – 13 January 1915) was a battle fought during [[World War I]]. The battle was the first offensive move on the [[Western Front (World War I)|Western Front]] by either side after the [[First Battle of Ypres]] ended in November 1914. The French assault failed to break the stalemate.{{sfn|Tucker|Roberts|2005|p=140}}{{sfn|Nolan|2002|p=1,863}}{{sfn|Sheffield|2007|p=55}}{{sfn|Sumner|2009|p=6}} During what became known as the [[Race to the Sea]] the [[Battle of Arras (1914)|Battle of Arras]] had been fought from {{nowrap|1–4 October}} after which local operations, particularly on the Lorette Spur, continued during the First Battle of Flanders to the north. In May 1915 the French Tenth Army conducted an offensive known as the [[Second Battle of Artois]]. The [[Third Battle of Artois]], sometimes called the Artois–Loos Offensive, took place from {{nowrap|25 September – 15 October 1915}}. ||| ||| ||| +0 First Battle of Artois ||| Race to the Sea ||| The '''First Battle of Artois''' (17 December 1914 – 13 January 1915) was a battle fought during [[World War I]]. The battle was the first offensive move on the [[Western Front (World War I)|Western Front]] by either side after the [[First Battle of Ypres]] ended in November 1914. The French assault failed to break the stalemate.{{sfn|Tucker|Roberts|2005|p=140}}{{sfn|Nolan|2002|p=1,863}}{{sfn|Sheffield|2007|p=55}}{{sfn|Sumner|2009|p=6}} During what became known as the [[Race to the Sea]] the [[Battle of Arras (1914)|Battle of Arras]] had been fought from {{nowrap|1–4 October}} after which local operations, particularly on the Lorette Spur, continued during the First Battle of Flanders to the north. In May 1915 the French Tenth Army conducted an offensive known as the [[Second Battle of Artois]]. The [[Third Battle of Artois]], sometimes called the Artois–Loos Offensive, took place from {{nowrap|25 September – 15 October 1915}}. ||| ||| ||| +0 First Battle of Artois ||| Second Battle of Artois ||| The '''First Battle of Artois''' (17 December 1914 – 13 January 1915) was a battle fought during [[World War I]]. The battle was the first offensive move on the [[Western Front (World War I)|Western Front]] by either side after the [[First Battle of Ypres]] ended in November 1914. The French assault failed to break the stalemate.{{sfn|Tucker|Roberts|2005|p=140}}{{sfn|Nolan|2002|p=1,863}}{{sfn|Sheffield|2007|p=55}}{{sfn|Sumner|2009|p=6}} During what became known as the [[Race to the Sea]] the [[Battle of Arras (1914)|Battle of Arras]] had been fought from {{nowrap|1–4 October}} after which local operations, particularly on the Lorette Spur, continued during the First Battle of Flanders to the north. In May 1915 the French Tenth Army conducted an offensive known as the [[Second Battle of Artois]]. The [[Third Battle of Artois]], sometimes called the Artois–Loos Offensive, took place from {{nowrap|25 September – 15 October 1915}}. ||| ||| ||| +0 First Battle of Artois ||| Third Battle of Artois ||| The '''First Battle of Artois''' (17 December 1914 – 13 January 1915) was a battle fought during [[World War I]]. The battle was the first offensive move on the [[Western Front (World War I)|Western Front]] by either side after the [[First Battle of Ypres]] ended in November 1914. The French assault failed to break the stalemate.{{sfn|Tucker|Roberts|2005|p=140}}{{sfn|Nolan|2002|p=1,863}}{{sfn|Sheffield|2007|p=55}}{{sfn|Sumner|2009|p=6}} During what became known as the [[Race to the Sea]] the [[Battle of Arras (1914)|Battle of Arras]] had been fought from {{nowrap|1–4 October}} after which local operations, particularly on the Lorette Spur, continued during the First Battle of Flanders to the north. In May 1915 the French Tenth Army conducted an offensive known as the [[Second Battle of Artois]]. The [[Third Battle of Artois]], sometimes called the Artois–Loos Offensive, took place from {{nowrap|25 September – 15 October 1915}}. ||| ||| ||| +0 First Battle of Bud Dajo ||| World War II ||| During this battle, 750 men and officers, under the command of Colonel J.W. Duncan, assaulted the volcanic crater of [[Bud Dajo]] ([[Tausug language|Tausūg]]: ''Būd Dahu''), which was populated by 800 to 1000 [[Moro people|Moro]] villagers, including women and children. According to Herman Hagedorn (who was writing prior to [[World War II]]), the position held by the Moros was 'the strongest which hostiles in the [[Philippines]] have ever defended against American assault.' (pg. 64) Although the battle was a victory for the American forces, it was also an unmitigated public relations disaster. It was the bloodiest of any engagement of the Moro Rebellion, with only six of the hundreds of Moro coming out of the battle alive. Estimates of American casualties range from fifteen killed [http://www.au.af.mil/au/awc/awcgate/milreview/byler.pdf Pacifying the Moros: American Military Government in the Southern Philippines, 1899–1913], ||| ||| ||| +0 First Battle of Bull Run ||| Second Battle of Bull Run ||| Irvin McDowell bore the brunt of the blame for the Union defeat and was soon replaced by Maj. Gen. [[George B. McClellan]], who was named general-in-chief of all the Union armies. McDowell was also present to bear significant blame for the defeat of Maj. Gen. [[John Pope (military officer)|John Pope's]] [[Army of Virginia]] by Gen. [[Robert E. Lee]]'s [[Army of Northern Virginia]] thirteen months later, at the [[Second Battle of Bull Run]]. Patterson was also removed from command. ||| Aftermath ||| ||| +0 First Battle of Champagne ||| Battle of the Yser ||| The '''First Battle of Champagne''' ({{lang-fr|1ère Bataille de Champagne}}) was fought from {{nowrap|20 December 1914 – 17 March}} 1915 in [[World War I]] in the [[Champagne-Ardenne|Champagne]] region of [[France]], between the French Fourth Army and the German 3rd Army. It was the first offensive by the [[Allies of World War I|Allies]] against the [[German Empire|Germans]] since the end of mobile warfare, after the [[Race to the Sea]] during the autumn of 1914 and the defensive battles in Flanders of the [[Battle of the Yser]] and the [[First Battle of Ypres]] in October and November. ||| ||| ||| +0 First Battle of Champagne ||| First Battle of Ypres ||| The '''First Battle of Champagne''' ({{lang-fr|1ère Bataille de Champagne}}) was fought from {{nowrap|20 December 1914 – 17 March}} 1915 in [[World War I]] in the [[Champagne-Ardenne|Champagne]] region of [[France]], between the French Fourth Army and the German 3rd Army. It was the first offensive by the [[Allies of World War I|Allies]] against the [[German Empire|Germans]] since the end of mobile warfare, after the [[Race to the Sea]] during the autumn of 1914 and the defensive battles in Flanders of the [[Battle of the Yser]] and the [[First Battle of Ypres]] in October and November. ||| ||| ||| +0 First Battle of Champagne ||| Race to the Sea ||| The '''First Battle of Champagne''' ({{lang-fr|1ère Bataille de Champagne}}) was fought from {{nowrap|20 December 1914 – 17 March}} 1915 in [[World War I]] in the [[Champagne-Ardenne|Champagne]] region of [[France]], between the French Fourth Army and the German 3rd Army. It was the first offensive by the [[Allies of World War I|Allies]] against the [[German Empire|Germans]] since the end of mobile warfare, after the [[Race to the Sea]] during the autumn of 1914 and the defensive battles in Flanders of the [[Battle of the Yser]] and the [[First Battle of Ypres]] in October and November. ||| ||| ||| +0 First Battle of Donetsk Airport ||| 2014 Ukrainian revolution ||| The '''First Battle of Donetsk Airport''' was a conflict between separatist insurgents associated with the [[Donetsk People's Republic]] and [[First Yatsenyuk Government|Ukrainian government]] forces that took place at [[Donetsk International Airport]] on 26–27 May 2014, as part of the [[War in Donbass]] that began after the [[2014 Ukrainian revolution]]. A [[Second Battle of Donetsk Airport|second battle]] broke out at the airport on 28 September 2014. ||| ||| ||| +0 First Battle of El Alamein ||| Battle of Gazala ||| Following its defeat at the [[Battle of Gazala]] in Eastern [[Libya]] in June 1942, the [[Eighth Army (United Kingdom)|British Eighth Army]] had retreated east from the Gazala line into northwestern [[Egypt]] as far as [[Mersa Matruh]], roughly {{convert|100|mi|km|abbr=on}} inside the border. [[Lieutenant-General (United Kingdom)|Lieutenant-General]] [[Neil Ritchie]] had decided not to hold the defences on the Egyptian border, because the defensive plan there relied on his infantry holding defended localities, while a strong armoured force was held back in reserve to foil any attempts to penetrate or outflank the fixed defences. Since Ritchie had virtually no armoured units left fit to fight, the infantry positions would be defeated in detail. The Mersa defence plan also included an armoured reserve but in its absence Ritchie believed he could organise his infantry to cover the minefields between the defended localities to prevent Axis engineers from having undisturbed access. ||| Background ||| Retreat from Gazala ||| +0 First Battle of El Alamein ||| Second Battle of El Alamein ||| Axis positions near [[El Alamein]], only {{convert|66|mi|km|abbr=on}} from [[Alexandria]], were dangerously close to the ports and cities of Egypt, the base facilities of the Commonwealth forces and the [[Suez Canal]] and the Axis forces were too far from their base at Tripoli in Libya, to remain at El Alamein indefinitely, which led both sides to accumulate supplies for more offensives, against the constraints of time and distance. At the [[Battle of Alam el Halfa]] {{nowrap|(30 August – 5 September)}} and the [[Second Battle of El Alamein]] {{nowrap|(23 October–11 November),}} the Axis army was defeated and driven out of Egypt for good. ||| ||| ||| +0 First Battle of Höchstädt ||| Battle of Blenheim ||| A year later, the [[Second Battle of Höchstädt]] was fought, usually known in English as the [[Battle of Blenheim]]. (This should not be confused with the 1800 [[Battle of Höchstädt (1800)|Battle of Höchstädt]] during the [[French Revolutionary Wars]], which is also known as the Second Battle of Höchstädt.) ||| The battle ||| ||| +0 First Battle of Höchstädt ||| French Revolutionary Wars ||| A year later, the [[Second Battle of Höchstädt]] was fought, usually known in English as the [[Battle of Blenheim]]. (This should not be confused with the 1800 [[Battle of Höchstädt (1800)|Battle of Höchstädt]] during the [[French Revolutionary Wars]], which is also known as the Second Battle of Höchstädt.) ||| The battle ||| ||| +0 First Battle of Kharkov ||| War crimes of the Wehrmacht ||| In the early hours of 14 November, multiple buildings in the city center were blown up by time-fuses left by the retreating Red Army. Casualties included the commander (''Generalleutnant'' [[Georg Braun (general)|Georg Braun]]) and staff of the [[68th Infantry Division (Wehrmacht)|''68th Infantry Division'']]. The Germans arrested some 200 civilians (mostly Jews) and hanged them from the balconies of large buildings. Another 1,000 were taken as hostages and interned in the Hotel International on [[Freedom Square, Kharkiv|Dzerzhinsky Square]]. All of these [[War crimes of the Wehrmacht|war crimes]] were committed by frontline [[German Army (Wehrmacht)|''Heer'']] commanders, and not by [[SS]] troops. ||| Occupation of Kharkov ||| ||| +0 First Battle of Lexington ||| Battle of Boonville ||| Following the battle at [[Battle of Boonville|Boonville]] in June of 1861, Brig. Gen. [[Nathaniel Lyon]] ordered the 5th Regiment of the United States Reserve Corps to occupy Lexington. The regiment was composed primarily of Germans from [[St. Louis, Missouri |St. Louis]] and it had participated in the [[Camp Jackson Affair]]. Arriving on the steamer ''White Cloud'' on July 9, they were commanded by [[Colonel (United States)|Colonel]] Charles G. Stifel. Stifel's second in command was Lt. Col. Robert White, who was often the primary point of contact with the local civilians. Stifel selected the defunct Masonic College as his headquarters and the soldiers began entrenching and fortifying the position. ||| Prelude ||| ||| +0 First Battle of Lexington ||| Second Battle of Kernstown ||| The surrendered Union soldiers were compelled to listen to a speech by deposed pro-Confederate Missouri governor [[Claiborne F. Jackson]], who upbraided them for entering his state without invitation and waging war upon its citizens. The Federals were then paroled by General Price, with the notable exception of Colonel Mulligan, who refused parole. Price was reportedly so impressed by the Federal commander's demeanor and conduct during and after the battle that he offered Mulligan his own horse and buggy, and ordered him safely escorted to Union lines. Mulligan was later mortally wounded at the [[Battle of Kernstown II|Second Battle of Kernstown]] near [[Winchester, Virginia]] on July 24, 1864. ||| Aftermath ||| ||| +0 First Battle of Mount Hermon ||| Six-Day War ||| At a height of about 6,600 feet, Mount Hermon has a commanding view of the [[Galilee]]. After Israel's capture of it in the [[Six-Day War]], it was used as a radar outpost, housing some of the IDF's most sensitive and secret electronic equipment. Israel also constructed an approach road and a ski lift. The troops manning the Hermon outpost could view the entire Syrian plain bordering on the [[Purple Line (ceasefire line)|Purple Line]], there were observation posts on the outpost itself and at the upper level of the ski lift. ||| Background ||| ||| +0 First Battle of Mount Hermon ||| Third Battle of Mount Hermon ||| The '''First Battle of Mount Hermon''' was fought at the outset of the [[Yom Kippur War]] between the [[Syrian Army]] and the [[Israel Defense Forces]] (IDF). On [[Yom Kippur]], October 6, 1973, [[Syria]]n commandos attacked and captured the IDF outpost on [[Mount Hermon]]. Two days later, the Syrians repelled an Israeli counterattack in the [[Second Battle of Mount Hermon]]. It was eventually recaptured by Israel on October 21 in the [[Third Battle of Mount Hermon|Third battle]]. {{Cite news ||| ||| ||| +0 First Battle of Newtonia ||| Battle of Pea Ridge ||| Following the [[Battle of Pea Ridge]] in March 1862, most [[Confederate States Army|Confederate]] and [[Union Army|Union]] troops had left northwestern [[Arkansas]] and southwestern [[Missouri]]. By late summer, the Confederates had returned to the area, which caused much apprehension in nearby Federally occupied [[Springfield, Missouri]], and [[Fort Scott, Kansas]]. Confederate Colonel [[Douglas H. Cooper]] reached the area on September 27 and assigned two of his units to [[Newtonia, Missouri|Newtonia]], where there was a mill for making breadstuffs. In mid-September, two brigades totalling 1,500 men of [[Brigadier general (United States)|Brig. Gen.]] [[James G. Blunt]]'s division of the Union [[Army of Kansas]] left Fort Scott for southwestern Missouri. ||| Background ||| ||| +0 First Battle of Picardy ||| Battle of the Yser ||| The '''First Battle of Picardy''' {{nowrap|(22–26 September 1914)}} took place during the mistakenly-named [[Race to the Sea]] {{nowrap|(17 September – 19 October)}} and the [[First Battle of the Aisne]] {{nowrap|(13 September – 28 September),}} a Franco-British counter-offensive, which followed the [[Battle of the Frontiers]] (7 August–13 September) and the [[German Empire|German]] advance into [[France]] during the [[Great Retreat]], which ended at the [[First Battle of the Marne]] {{nowrap|(5–12 September).}}{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} The term describes reciprocal attempts by the Franco-British and German armies, to envelop the northern flank of the opposing army, through [[Picardy]], [[Artois]] and [[Flanders]]. ||| ||| ||| +0 First Battle of Picardy ||| First Battle of the Aisne ||| The '''First Battle of Picardy''' {{nowrap|(22–26 September 1914)}} took place during the mistakenly-named [[Race to the Sea]] {{nowrap|(17 September – 19 October)}} and the [[First Battle of the Aisne]] {{nowrap|(13 September – 28 September),}} a Franco-British counter-offensive, which followed the [[Battle of the Frontiers]] (7 August–13 September) and the [[German Empire|German]] advance into [[France]] during the [[Great Retreat]], which ended at the [[First Battle of the Marne]] {{nowrap|(5–12 September).}}{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} The term describes reciprocal attempts by the Franco-British and German armies, to envelop the northern flank of the opposing army, through [[Picardy]], [[Artois]] and [[Flanders]]. ||| ||| ||| +0 First Battle of Picardy ||| Great Retreat ||| The '''First Battle of Picardy''' {{nowrap|(22–26 September 1914)}} took place during the mistakenly-named [[Race to the Sea]] {{nowrap|(17 September – 19 October)}} and the [[First Battle of the Aisne]] {{nowrap|(13 September – 28 September),}} a Franco-British counter-offensive, which followed the [[Battle of the Frontiers]] (7 August–13 September) and the [[German Empire|German]] advance into [[France]] during the [[Great Retreat]], which ended at the [[First Battle of the Marne]] {{nowrap|(5–12 September).}}{{#tag:ref|Writers and historians have criticised the term ''Race to the Sea'' and used several date ranges for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|J. E. Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929, the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001, Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In, 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period from {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010, Sheldon placed the beginning of the 'erroneously named' race, from the end of the Battle of the Marne, to the beginning of the [[Battle of the Yser]].{{sfn|Sheldon|2010|p=x}}|group='Note'}} The term describes reciprocal attempts by the Franco-British and German armies, to envelop the northern flank of the opposing army, through [[Picardy]], [[Artois]] and [[Flanders]]. ||| ||| ||| +0 First Battle of Porto ||| Battle of Braga (1809) ||| From Chaves, Soult moved west to [[Póvoa de Lanhoso]] where he was confronted by Baron Christian Adolph Friedrich von Eben's 25,000-man army composed mostly of Portuguese militia armed with muskets, pikes, and agricultural implements. After waiting several days for all his troops to arrive, Soult went over to the attack. On 20 March 1809 in the [[Battle of Braga (1809)|Battle of Braga]] the French veterans butchered their adversaries. The outmatched Portuguese lost 4,000 killed and 400 captured. The French, who lost 40 killed and 160 wounded, also seized 17 Portuguese cannons. ||| Soult's invasion of Portugal ||| ||| +0 First Battle of Porto ||| Battle of Corunna ||| After the [[Battle of Corunna]], [[Napoleon]] ordered Marshal [[Nicolas Soult]] to invade Portugal from the north. He was to seize [[Porto]] by 1 February and [[Lisbon]] by 10 February. Napoleon failed to take into account both the wretched condition and the roads or the fact that a full-scale [[guerrilla war]] had broken out in Northern [[Portugal]] and [[Spain]]. ||| Soult's invasion of Portugal ||| ||| +0 First Battle of Porto ||| Second Battle of Porto ||| Soult did not have very long to enjoy his success. Almost at once, the ''ordenanças'' cut his communications with Spain and a 1,800-man garrison was gobbled up by [[Francisco Silveira, Count of Amarante|Francisco Silveira's]] Portuguese force in the [[Siege of Chaves]]. The French marshal started planning a retreat. The next action was the [[Battle of Grijó]]. The city was retaken on 12 May by the British and Portuguese under [[Arthur Wellesley, 1st Duke of Wellington|Wellesley]] in the [[Second Battle of Porto]]. ||| The battle ||| ||| +0 First Battle of Sabine Pass ||| Second Battle of Sabine Pass ||| The '''First Battle of Sabine Pass''' or the '''Bombardment of Fort Sabine''', on September 24-25, 1862, was the first [[American Civil War | Civil War]] bombardment by the [[United States Navy]] of a [[Confederate States of America | Confederate]] fort below Sabine City (now [[Sabine Pass, Texas]].) It was the apex in a series of naval and land [[skirmish | skirmishes]] around the mouth of the [[Sabine River, Texas]], and preceded by four weeks the Union Navy's first armed entry into [[Galveston Bay]] called the [[Battle of Galveston Harbor]]. Besides strengthening the [[Union blockade|Union naval blockade]] of the Texas coastline, the shelling and capture of Sabine Pass was to deter Confederate ground forces from moving southwestward on the Texas coast to augment Galveston's defense. And, it was to open the way for the Union invasion of [[Texas in the Civil War|Texas]], which almost a year later was attempted by a combined force of Union naval and army forces at the [[Second Battle of Sabine Pass]]. ||| ||| ||| +0 First Battle of Sabine Pass ||| Union blockade ||| The '''First Battle of Sabine Pass''' or the '''Bombardment of Fort Sabine''', on September 24-25, 1862, was the first [[American Civil War | Civil War]] bombardment by the [[United States Navy]] of a [[Confederate States of America | Confederate]] fort below Sabine City (now [[Sabine Pass, Texas]].) It was the apex in a series of naval and land [[skirmish | skirmishes]] around the mouth of the [[Sabine River, Texas]], and preceded by four weeks the Union Navy's first armed entry into [[Galveston Bay]] called the [[Battle of Galveston Harbor]]. Besides strengthening the [[Union blockade|Union naval blockade]] of the Texas coastline, the shelling and capture of Sabine Pass was to deter Confederate ground forces from moving southwestward on the Texas coast to augment Galveston's defense. And, it was to open the way for the Union invasion of [[Texas in the Civil War|Texas]], which almost a year later was attempted by a combined force of Union naval and army forces at the [[Second Battle of Sabine Pass]]. ||| ||| ||| +0 First Battle of Sirte ||| Battle of Cape Matapan ||| Lacking [[radar]] and mindful of their defeat in the night action at [[Battle of Cape Matapan|Matapan]], the Italians wished to avoid night combat. Expecting an attack, Iachino fired for only 15 minutes before disengaging and returning westward to protect his convoy. Only two British destroyers suffered the effects of Italian gunfire. {{HMS|Kipling|F91|6}} suffered the loss of one seaman to a near-miss from a 8 in (203 mm) shell, presumably fired by the Italian cruiser {{Ship|Italian cruiser|Gorizia||2}}. According to Italian sources, the [[Royal Australian Navy|Australian]] destroyer {{HMAS|Nizam|G38|6}} was also damaged by near-misses from the Italian destroyer [[Maestrale class destroyer|''Maestrale'']]. ||| The battle of Sirte ||| ||| +0 First Battle of Sirte ||| Operation Crusader ||| The British [[Eighth Army (United Kingdom)|8th Army]] and the [[Axis powers|Axis]] armies were engaged in battles resulting from [[Operation Crusader]], which had been fought between 18 November and 4 December. Its aim was to defeat the ''[[Afrika Korps]]'' and relieve the siege of [[Tobruk]]. This had been achieved, the Axis forces were conducting a fighting retreat; by 13 December, they were holding a defensive line at [[Gazala]], east of [[Benghazi]]. ||| Background ||| ||| +0 First Battle of Villers-Bretonneux ||| Eastern Front (World War I) ||| In early 1918, following the capitulation of [[Tsarist Russia]], the end of the fighting on the [[Eastern Front (World War I)|Eastern Front]] allowed the Germans to transfer a significant amount of manpower and equipment to the [[Western Front (World War I)|Western Front]].{{sfn|Baldwin|1962|pp=126-140}} With the general position for the Germans looking weak, the German commander, [[Erich Ludendorff]], decided to go on the offensive. On 21 March 1918, '[[Operation Michael]]' was launched, and the attack was aimed at the weakest part of the [[British Expeditionary Force (World War I)|British]] lines, along the [[Somme River]].{{sfn|Baldwin|1962|pp=126-140}} By 5 April, the Germans had gained {{convert|60|km|mi}} of British held territory. Two other operations were launched, one near [[Armentières]], one near [[Reims]]. All three operations were eventually halted by the Allies. ||| Background ||| ||| +0 First Battle of Villers-Bretonneux ||| Operation Michael ||| The '''First Battle of Villers-Bretonneux''' (30 March – 5 April 1918), was part of the wider [[Operation Michael|First Battle of the Somme (1918)]], which took place amidst a strong German offensive on the [[Western Front (World War I)|Western Front]] in the final year of the war. Falling initially against the British troops in the Somme, throughout the month the German offensive had pushed the Allies back towards Paris. The capture of [[Villers-Bretonneux]], being close to the strategic centre of [[Amiens]], would have meant that the Germans could have used artillery there to shell the city. In late March, Australian troops were brought south from Belgium as reinforcements to help shore up the line and in early April the Germans launched an attack to capture the town. Heavy fighting followed which saw the Germans slowly gain the upper hand before a counter-attack by British and Australian troops late in the afternoon of 4 April broke up the attack. ||| ||| ||| +0 First Battle of Ypres ||| Battle of the Yser ||| The '''First Battle of Ypres''' {{nowrap|(19 October – 22 November)}} was a [[World War I|First World War]] battle fought around [[Ypres]], in western [[Belgium]] during October and November 1914. The battle took place as part of the First Battle of Flanders ({{lang-fr|Première Bataille des Flandres}} {{lang-de|Erste Flandernschlacht}}), in which German, French, Belgian and British armies fought from Arras in France to [[Nieuwpoort, Belgium|Nieuport]] on the Belgian coast, from 10 October to mid-November. The battles at Ypres began at the end of the [[Race to the Sea]] which involved attempts by the German and Franco-British armies to advance past the northern flank of their opponents. North of Ypres the fighting continued in the [[Battle of the Yser]] {{nowrap|(16–31 October),}} fought between the German 4th Army and a largely Belgian force. ||| ||| ||| +0 First Battle of Ypres ||| Race to the Sea ||| The '''First Battle of Ypres''' {{nowrap|(19 October – 22 November)}} was a [[World War I|First World War]] battle fought around [[Ypres]], in western [[Belgium]] during October and November 1914. The battle took place as part of the First Battle of Flanders ({{lang-fr|Première Bataille des Flandres}} {{lang-de|Erste Flandernschlacht}}), in which German, French, Belgian and British armies fought from Arras in France to [[Nieuwpoort, Belgium|Nieuport]] on the Belgian coast, from 10 October to mid-November. The battles at Ypres began at the end of the [[Race to the Sea]] which involved attempts by the German and Franco-British armies to advance past the northern flank of their opponents. North of Ypres the fighting continued in the [[Battle of the Yser]] {{nowrap|(16–31 October),}} fought between the German 4th Army and a largely Belgian force. ||| ||| ||| +0 First Battle of Zurich ||| Battle of Ostrach ||| The Austrians had arrayed their own army in a line from the [[State of Tyrol|Tyrol]] to the Danube. A force of 46,000 under command of [[Count Heinrich von Bellegarde]] formed the defence of the Tyrol. Another small Austrian force of 26,000 commanded by [[Friedrich Freiherr von Hotze]] guarded the [[Vorarlberg]]. The main Austrian Army—close to 80,000 troops under the command of [[Archduke Charles, Duke of Teschen|Archduke Charles]]—had wintered in the Bavarian, Austrian, and [[Archbishopric of Salzburg|Salzburg]] territories on the eastern side of the [[Lech (river)|Lech river]]. At the battles of [[Battle of Ostrach|Ostrach]] (21 March) and [[Battle of Stockach (1799)|Stockach]] (25 March), the main Austrian force pushed the Army of the Danube back into the Black Forest. Charles made plans to cross the upper Rhine at the Swiss town of [[Schaffhausen]]. Friedrich Freiherr von Hotze brought a portion (approximately 8,000) of his force west, leaving the rest to defend the Vorarlberg. At the same time, [[Friedrich Joseph, Count of Nauendorf]], brought the left wing of the main Austrian force across the Rhine by Eglisau. They planned to unite with the main Austrian army, controlling the northern access points of [[Zürich]] and forcing an engagement with Masséna. ||| Background ||| Outbreak of war in 1799 ||| +0 First Battle of Zurich ||| Second Battle of Zurich ||| During the summer, Russian troops under general [[Alexander Korsakov|Korsakov]] replaced the Austrian troops, and in the [[Second Battle of Zurich]], the French regained control of the city, along with the rest of [[Switzerland]]. ||| ||| ||| +0 First Battle of the Aisne ||| Battle of the Yser ||| At daybreak on 29 September, General [[Hans von Beseler]], called out of retirement at the age of sixty-five, arrayed six divisions in an arc facing the outer ring of forts. The heavy siege howitzers that had destroyed the defences of [[Namur (city)|Namur]] and [[Liège]] had been placed well beyond the range of Belgian artillery. Aided by aircraft spotting, German gunners quickly found their targets. Belgian guns belched dense, [[black powder|black smoke]], revealing their exact location and the fields cleared by the defenders deprived the forts of any concealment. Two of the forts were quickly reduced to rubble; the others fell in methodical succession. Without waiting for the outcome, the Belgian government and 65,000 troops departed from [[Ostend]] that night, leaving an army of 80,000 to hold off the enemy. Next day the entire outer ring collapsed, prompting a mass evacuation of civilians to the neutral [[Netherlands]]. A British [[Royal Marine]] Division joined the defending troops during the attack, but even this combined force was unable to stem the German drive. After six days of stubborn fighting, the remaining garrison retired across the [[Scheldt River]] to the southern border of the Netherlands, while the rest of the Belgian army retreated to the West, to defend the last piece of Belgian territory in the [[Battle of the Yser]] (16–31 October 1914). ||| Race to the Sea ||| ||| +0 First Battle of the Aisne ||| Race to the Sea ||| For a three-week period following the unexpected development of trench warfare, both sides gave up [[frontal assault]]s and began trying to envelop each other's northern flank. The period is called '[[Race to the Sea]]'. As the Germans aimed for the Allied left flank, the Allies sought the German right wing. ||| Race to the Sea ||| ||| +0 First Battle of the Aisne ||| Third Battle of the Aisne ||| There were two later battles on the [[Aisne]]; the [[Second Battle of the Aisne|second]] (April–May 1917) and the [[Third Battle of the Aisne|third]] (May–June 1918). ||| Race to the Sea ||| ||| +0 First Battle of the Corunna Road ||| Second Battle of the Corunna Road ||| The Nationalists only occupied [[Boadilla del Monte]] and [[Villanueva de la Cañada]] and failed to cut Madrid from the north. They then decided to concentrate a huge force in order to continue [[Second Battle of the Corunna Road|the offensive]] which was recommenced on 13 December and continued into mid-January the following year. ||| Aftermath ||| ||| +0 First Battle of the Corunna Road ||| Siege of Madrid ||| After the failure to take [[Siege of Madrid|Madrid]] on November 1936 and the failure to reduce the morale of the city's population through aerial bombing, [[Francisco Franco|Franco]] decided to encircle the city from the north-west in order to cut off water and electricity supplies from the [[Sierra de Guadarrama]]. Franco's [[Nationalist Spain|Nationalists]], led by Varela, concentrated a force of 3,000 men supported by heavy artillery including [[Junkers Ju 52|Ju-52]] bombers. The defending [[Second Spanish Republic|Republican]] army had one brigade. ||| Background ||| ||| +0 First Bombardment of Midway ||| Battle of Midway ||| In February 1942, a Japanese submarine bombarded the atoll. In June 1942, the [[Battle of Midway]] was won by American forces. The Marines by that time had received reinforcements, both personnel and some newer and bigger guns, all of which were used by the Marine garrison when they engaged attacking Japanese [[Mitsubishi A6M Zero|A6M2 Zero]]s in June 1942. The marines also fought a deadly dog fight ending with heavy casualties for American forces and a loss of seven Japanese aircraft. ||| Aftermath ||| ||| +0 First Carlist War ||| Mexican War of Independence ||| The 1805 [[Battle of Trafalgar]] had all but shattered the Spanish navy, with the [[Peninsular War]] leaving the Spanish society overwhelmed by continuous warfare and badly damaged by looting. While the Spanish Empire collapsed, the maritime trade trickled to the Americas and Philippines, and Spain's military struggled to keep their colonies, with [[Mexican War of Independence|Mexico getting its independence in 1821]]. The customary overseas revenue to the metropolis was at a historic low, the royal coffers were empty. Financing (solvency) and recruitment to the military became an overriding concern for the Spanish Crown, with the governments under King [[Ferdinand VII]] failing to provide new solutions and stability. ||| Historical background ||| ||| +0 First Congo War ||| Second Congo War ||| The new government renamed the country to the [[Democratic Republic of the Congo]], but it brought little true change. Kabila alienated his Rwandan and Ugandan allies. To avert a coup, Kabila expelled all Rwandan and Ugandan forces from the Congo. This event was a major cause of the [[Second Congo War]] the following year. Some experts prefer to view the two conflicts as one war. ||| ||| ||| +0 First Encirclement Campaign against Jiangxi Soviet ||| Central Plains War ||| The planning of the campaign was already in process in mid August 1930, as Chiang Kai-shek had directed [[He Yingqing]], the commander of [[Wuhan]] headquarters, to hold a conference at [[Hankou]] on how to suppress the communists in [[Hunan]], [[Hubei]] and Jiangxi provinces. A decision was made to concentrate on military rather than political strategies, and to launch multiple attacks on the main communist base in Jiangxi Soviet. The plan was temporarily interrupted by the [[Central Plains War]], but when Chiang's victory in this theatre was certain by October 1930, he immediately redeployed his troops in preparation for engaging the communists. ||| Prelude ||| ||| +0 First English Civil War ||| Cromwellian conquest of Ireland ||| During this time, the [[Irish Confederate Wars]] (another civil war), continued in Ireland, starting with the [[Irish Rebellion of 1641]] and ending with the [[Cromwellian conquest of Ireland]]. Its incidents had little or no direct connection with those of Civil War, but the wars were mixed with, and formed part of, a linked series of conflicts and civil wars between 1639 and 1652 in the kingdoms of England, [[Scotland]], and Ireland, which at that time shared a monarch, but were distinct states in political organisation. These linked conflicts are also known as the [[Wars of the Three Kingdoms]] by some recent historians, aiming to have a unified overview, rather than treating parts of the other conflicts as a background to the English Civil War. ||| Overview ||| ||| +0 First English Civil War ||| Irish Rebellion of 1641 ||| During this time, the [[Irish Confederate Wars]] (another civil war), continued in Ireland, starting with the [[Irish Rebellion of 1641]] and ending with the [[Cromwellian conquest of Ireland]]. Its incidents had little or no direct connection with those of Civil War, but the wars were mixed with, and formed part of, a linked series of conflicts and civil wars between 1639 and 1652 in the kingdoms of England, [[Scotland]], and Ireland, which at that time shared a monarch, but were distinct states in political organisation. These linked conflicts are also known as the [[Wars of the Three Kingdoms]] by some recent historians, aiming to have a unified overview, rather than treating parts of the other conflicts as a background to the English Civil War. ||| Overview ||| ||| +0 First English Civil War ||| Second English Civil War ||| The '''First English Civil War''' (1642–1646) began the series of three wars known as the [[English Civil War]] (or 'Wars'). 'The English Civil War' was a series of armed conflicts and political machinations that took place between [[Roundhead|Parliamentarians]] and [[Cavalier|Royalist]]s from 1642 until 1651, and includes the [[Second English Civil War]] (1648-1649) and the [[Third English Civil War]] (1649-1651). ||| ||| ||| +0 First German phosgene attack on British troops ||| Second Battle of Ypres ||| '''The First German phosgene attack on British troops''' took place on 19 December 1915, during [[World War I]], at [[Wieltje]] north-east of [[Ypres]] in Belgian Flanders. German gas attacks on allied troops had begun on 22 April 1915, during the [[Second Battle of Ypres]] using [[chlorine|chlorine gas]], against French and Canadian units. The surprise led to the capture of much of the [[Ypres Salient]], after which the effectiveness of gas as a weapon diminished, as the French and British produced anti-gas helmets. The German [[Walther Nernst|Nernst]]-[[Carl Duisberg|Duisberg]]-Commission investigated the feasibility of adding the much more lethal [[phosgene]] to chlorine gas. Mixed chlorine and phosgene gas was used at the end of May 1915, in attacks against French troops on the [[Western Front (World War I)|Western Front]] and on the [[Eastern Front (World War I)|Eastern Front]] against the Russian army. ||| ||| ||| +0 First Indochina War ||| Battle of Moscow ||| Famous Communist propagandist [[Roman Karmen]] was in charge of the media exploitation of the battle of Dien Bien Phu. In his documentary, ''Vietnam'' (Вьетнам, 1955), he staged the famous scene with the raising of the Viet Minh flag over de Castries' bunker which is similar to the one he staged over the [[Reichstag building|Berlin Reichstag]] roof during World War II (''Берлин'', 1945) and the 'S'-shaped POW column marching after the battle, where he used the same optical technique he experimented with before when he staged the German prisoners after the [[Siege of Leningrad]] (''Ленинград в борьбе'', 1942) and the [[Battle of Moscow]] (''Разгром немецких войск под Москвой'', 1942). ||| Popular culture ||| ||| +0 First Indochina War ||| Franco-Thai War ||| From October 1940 to May 1941, during the [[Franco-Thai War]], the Vichy French in Indochina were involved with defending their colony in a border conflict which saw the forces of [[Thailand]] invade, while the Japanese sat on the sidelines. Thai military successes were limited to the Cambodian border area, and in January 1941 Vichy France's modern naval forces soundly defeated the inferior Thai naval forces in the [[Battle of Ko Chang]]. The war ended in May, with the French agreeing to minor territorial revisions which restored formerly Thai areas to Thailand. ||| Background ||| ||| +0 First Indochina War ||| Japanese invasion of French Indochina ||| In September 1940, shortly after Phan Bội Châu's death, Japan launched its [[Japanese invasion of French Indochina|invasion of French Indochina]], mirroring its ally Germany's conquest of [[metropolitan France]]. Keeping the French colonial administration, the Japanese ruled from behind the scenes in a parallel of [[Vichy France]]. As far as Vietnamese nationalists were concerned, this was a double-puppet government. Emperor Bảo Đại collaborated with the Japanese, just as he had with the French, ensuring his lifestyle could continue. ||| Background ||| ||| +0 First Indochina War ||| Siege of Leningrad ||| Famous Communist propagandist [[Roman Karmen]] was in charge of the media exploitation of the battle of Dien Bien Phu. In his documentary, ''Vietnam'' (Вьетнам, 1955), he staged the famous scene with the raising of the Viet Minh flag over de Castries' bunker which is similar to the one he staged over the [[Reichstag building|Berlin Reichstag]] roof during World War II (''Берлин'', 1945) and the 'S'-shaped POW column marching after the battle, where he used the same optical technique he experimented with before when he staged the German prisoners after the [[Siege of Leningrad]] (''Ленинград в борьбе'', 1942) and the [[Battle of Moscow]] (''Разгром немецких войск под Москвой'', 1942). ||| Popular culture ||| ||| +0 First Siege of Missolonghi ||| Third Siege of Missolonghi ||| Missolonghi remained under Greek control, and resisted another Ottoman [[Second Siege of Missolonghi|attempt at its capture]] a year later. Its resistance achieved wider fame when [[Lord Byron]] arrived there, dying in the town of fever in April 1824. The city was besieged for a [[Third Siege of Missolonghi|third and final time]], resisting both Ottoman and Egyptian armies for almost a year, until its final fall on April 10, 1826. ||| Aftermath ||| ||| +0 First Transjordan attack on Amman ||| Battle of Megiddo (1918) ||| The '''First Transjordan attack on Amman''' (known to the British as the '''First Attack on Amman''') took place between 21 March and 2 April 1918, as a consequence of the successful [[Battle of Tell 'Asur]] which occurred after the [[Capture of Jericho]] in February and the [[Occupation of the Jordan Valley]] began, during the [[Sinai and Palestine Campaign]] of World War I. During the First Transjordan attack large incursions into Ottoman territory occurred. Firstly the Passage of the [[Jordan River]], was successfully captured between 21 to 23 March, followed by the first occupation of [[Salt, Jordan|Es Salt]] in the hills of [[Moab]] between 24 and 25 March. The [[First Battle of Amman]] took place between 27 and 31 March when the [[Anzac Mounted Division]] and the [[Imperial Camel Corps Brigade]] (fighting dismounted as infantry) were reinforced by two battalions of 181st Brigade followed by a second two battalions from the 180th Brigade ([[60th London Division]]) and artillery. The [[Fourth Army (Ottoman Empire)|Fourth Army]] headquarters located in Amman was strongly garrisoned and during the battle received reinforcements on the [[Hejaz railway]], the strength of which eventually forced the attacking force to retire back to the Jordan Valley between 31 March and 2 April. The [[Jordan Rift Valley|Jordan Valley]] would [[Occupation of the Jordan Valley|continue to be occupied]] by the [[Egyptian Expeditionary Force]] (EEF) through the summer until the middle of September 1918 when the [[Battle of Megiddo (1918)|Battle of Megiddo]] began. ||| ||| ||| +0 First Transjordan attack on Amman ||| Battle of Mughar Ridge ||| During the winter of 1917/1918, the considerable territorial gains by the EEF as a consequence of victories at the [[Battle of Mughar Ridge]] in November and the [[Battle of Jerusalem]] in December; from the [[Gaza City|Gaza]] – [[Beersheba]] line to the [[Jaffa]]–[[Jerusalem]] line, were consolidated. The front line was adjusted in February 1918 when the right flank of the Jaffa to Jerusalem line was secured by the capture of land to the east of Jerusalem and down into the [[Jordan Valley (Middle East)|Jordan Valley]] to Jericho and the [[Dead Sea]]. The [[Capture of Jericho (1918)|Capture of Jericho]] was also a necessary precursor, along with the [[Action of Tell 'Asur]], to advances by [[Edmund Allenby, 1st Viscount Allenby|Allenby]]'s force across the Jordan River and into the hills of Moab towards [[Salt, Jordan|Es Salt]] and [[Amman]]. ||| ||| ||| +0 First Transjordan attack on Amman ||| Imperial War Cabinet ||| The [[War Office]] promised General [[Edmund Allenby]], Commander in Chief of the [[Egyptian Expeditionary Force]] (EEF), substantial [[reinforcement]]s after his successful capture of Jerusalem. The [[Imperial War Cabinet]] was keen to know when Allenby would be ready to make further advances; they wished operations against the Ottomans to continue as forcefully as possible within the means at Allenby's disposal and they attached importance to the cutting the [[Hejaz Railway]]. ||| Background ||| ||| +0 First Transjordan attack on Amman ||| Sinai and Palestine Campaign ||| The '''First Transjordan attack on Amman''' (known to the British as the '''First Attack on Amman''') took place between 21 March and 2 April 1918, as a consequence of the successful [[Battle of Tell 'Asur]] which occurred after the [[Capture of Jericho]] in February and the [[Occupation of the Jordan Valley]] began, during the [[Sinai and Palestine Campaign]] of World War I. During the First Transjordan attack large incursions into Ottoman territory occurred. Firstly the Passage of the [[Jordan River]], was successfully captured between 21 to 23 March, followed by the first occupation of [[Salt, Jordan|Es Salt]] in the hills of [[Moab]] between 24 and 25 March. The [[First Battle of Amman]] took place between 27 and 31 March when the [[Anzac Mounted Division]] and the [[Imperial Camel Corps Brigade]] (fighting dismounted as infantry) were reinforced by two battalions of 181st Brigade followed by a second two battalions from the 180th Brigade ([[60th London Division]]) and artillery. The [[Fourth Army (Ottoman Empire)|Fourth Army]] headquarters located in Amman was strongly garrisoned and during the battle received reinforcements on the [[Hejaz railway]], the strength of which eventually forced the attacking force to retire back to the Jordan Valley between 31 March and 2 April. The [[Jordan Rift Valley|Jordan Valley]] would [[Occupation of the Jordan Valley|continue to be occupied]] by the [[Egyptian Expeditionary Force]] (EEF) through the summer until the middle of September 1918 when the [[Battle of Megiddo (1918)|Battle of Megiddo]] began. ||| ||| ||| +0 First Transjordan attack on Amman ||| Spring Offensive ||| At 15:00 hundreds of Ottoman infantry approached Ghoraniyeh while two squadrons of Ottoman cavalry approached Makhadet Hijla. At midnight on 21 March, the day the [[Spring Offensive]] was launched on the [[Western Front (World War I)|Western Front]], another attempt to cross the Jordan began. Two infantry battalions from the [[180th (2/5th London) Brigade|180th Brigade]], 60th (London) Division; the [[19th London Regiment (St Pancras)|2/19th Battalion London Regiment]] prepared to swim the river and 2/18th Battalion London Regiment was sent to reinforce them as nine swimmers and Australian engineers crossed with a line at 12:30 at Makhadet Hijla and pulled a raft with six men across without opposition. Meanwhile, the 2/17th Battalion, London Regiment attempted to launch several boats and small rafts at Ghoraniyeh under enemy fire. ||| Prelude ||| Passage of the Jordan 21–23 March ||| 21 March +0 First Transjordan attack on Amman ||| Western Front (World War I) ||| On 7 March 1918, the promised reinforcements were reduced to just one Indian division and four batteries of [[BL 6 inch 26 cwt howitzer|6-inch howitzers]] from Mesopotamia due to arrive by the end of May. Further, Indian infantry [[battalion]]s and [[cavalry]] regiments based in France were, during March and April, to be substituted for British [[infantry]] and mounted formations which had had long experience serving in Palestine; they would go to the [[Western Front (World War I)|Western Front]]. Four additional [[Squadron (aviation)|aircraft squadrons]] were, however, promised for the coming summer, in addition to squadrons then being formed and a Canadian construction battalion was to be sent from France as soon as its replacement, in the process of formation in Canada, arrived on the Western Front. Also promised were enough [[Track (rail transport)|railway track]] to complete the doubling of the railway to [[Rafah|Rafa]] and a single line beyond [[Haifa]]. By July it was hoped that 152 [[locomotive]]s and 3,245 wagons would be available, with a promise of more if required; railway personnel and labour to run this railway were to come from Mesopotamia. ||| Background ||| ||| +0 First and Second Battles of Wonju ||| Third Battle of Seoul ||| The '''First and Second Battles of Wonju''' ({{lang-fr|Bataille de Wonju}}), also known as the '''Wonju Campaign''' or the '''Third Phase Campaign Eastern Sector''' ({{zh|s=第三次战役东线|p=Dì Sān Cì Zhàn Yì Dōng Xiàn}}), was a series of engagements between [[North Korean]] and [[United Nations Command (Korea)|United Nations]] (UN) forces during the [[Korean War]]. The battle took place from December 31, 1950 to January 20, 1951 around the South Korean town of [[Wonju]]. In coordination with the Chinese [[Third Battle of Seoul|capture of Seoul]] on the western front, the [[North Korean People's Army]] attempted to capture Wonju in an effort to destabilize the UN defenses along the central and the eastern fronts. ||| ||| ||| +0 First day on the Somme ||| Battle of Albert (1916) ||| The '''first day on the Somme''', 1 July 1916, was the opening day of the [[Battle of Albert (1916)|Battle of Albert]] {{nowrap|(1–13 July),}} the name given by the British to the first two weeks of the [[Battle of the Somme]]. Nine corps of the French [[Sixth Army (France)|Sixth Army]], the British [[Fourth Army (United Kingdom)|Fourth]] and the [[Third Army (United Kingdom)|Third]] armies, attacked the German [[2nd Army (German Empire)|2nd Army]] of General [[Fritz von Below]], from Foucaucourt south of the Somme northwards to Serre, north of the Ancre and at Gommecourt, which was {{convert|2|mi|km}} beyond, in the Third Army area. The objective of the attack was to capture the German first and second positions from Serre south to the Albert–Bapaume road and the first position from the road south to Foucaucourt. ||| ||| ||| +0 First day on the Somme ||| Battle of Verdun ||| Several truces were observed to recover wounded from no man's land on the British front, where the Fourth Army had lost {{nowrap|57,470 casualties}}, of whom {{nowrap|19,240 men}} were killed. The French had {{nowrap|1,590 casualties}} and the German 2nd Army lost {{nowrap|10,000–12,000 men.}} Orders were issued to the Anglo-French armies to continue the offensive on 2 July and a German counter-attack on the north bank of the Somme by the 12th Division, intended for the night of {{nowrap|1/2 July,}} took until dawn on 2 July to begin and was destroyed. Since 1 July 1916, the cost of the battle and the 'meagre gains' have been a source of grief and controversy in Britain; in German and French writing, the first day of the Battle of the Somme has been little more than a footnote to the mass losses of 1914–1915 and the [[Battle of Verdun]]. ||| ||| ||| +0 First inauguration of Barack Obama ||| Iraq War ||| Obama spent an hour at [[Walter Reed Army Medical Center]] meeting privately with the families of troops who were recovering from wounds sustained in the [[Iraq War|Iraq War]] and the [[War in Afghanistan (2001–present)|War in Afghanistan]]. ||| Pre-inaugural events ||| King Day of Service ||| +0 Flanders Campaign ||| Battle of Avesnes-le-Sec ||| Further south Coburg meanwhile had captured [[Le Quesnoy]] on 11 September, enabling him to move forces north to assist York, and winning a signal victory over one of Houchard's Divisions at [[Battle of Avesnes-le-Sec|Avesnes-le-Sec]]. As if these disasters were not enough for the French, news reached Paris that in Alsace the Duke of Brunswick had defeated the French at [[Battle of Pirmasens|Pirmasens]]. The [[Jacobin]]s were stirred into a ferocity of panic.{{sfn|Fortescue|1918|p=251}} Laws were imposed that placed all lives and property at the disposal of the regime. For failing to follow up his victory at Hondschoote and the defeat at Menen, Houchard was accused of treason, arrested, and guillotined in Paris on 17 November. ||| 1793 campaign ||| Autumn Campaign ||| +0 Flanders Campaign ||| Battle of Hondschoote (1793) ||| York's forces began the [[Siege of Dunkirk (1793)|investment of Dunkirk]], though they were ill-prepared for a protracted siege and had still not received any heavy siege artillery. The Armée du Nord, now under command of [[Jean Nicolas Houchard]] defeated York's exposed left flank under the Hanoverian general [[Heinrich Wilhelm von Freytag|Freytag]] at the [[Battle of Hondschoote (1793)|Battle of Hondschoote]], forcing York to raise the siege and abandon his equipment. The Anglo-Hanoverians fell back in good order to [[Veurne]] (Furnes), where they were able to recover as there was no French pursuit. Houchard's plan had actually been to merely repulse the Duke of York so he could march south to relieve Le Quesnoy; on 13 September he defeated the Hereditary Prince at [[Battle of Menin (1793)|Menin]] ([[Menen]]), capturing 40 guns and driving the Dutch towards Bruges and Ghent, but three days later his forces were routed in turn by [[Johann Peter Beaulieu|Beaulieu]] at [[Battle of Courtrai (1793)|Courtrai]]. ||| 1793 campaign ||| Autumn Campaign ||| +0 Flanders Campaign ||| Battle of Jemappes ||| By the end of 1792, following his surprise victory over the Imperial command under the [[Duke of Saxe-Teschen]] and [[Clerfayt]] at the [[Battle of Jemappes]], French commander [[Charles François Dumouriez]] had marched largely unopposed across most of the [[Austrian Netherlands]], an area that roughly corresponds to present-day [[Belgium]]. As the Austrians retreated, Dumouriez saw an opportunity with the Patriot exiles to overthrow the weak Dutch Republic by making a bold move north. A second French Division under [[Francisco de Miranda]] manoeuvred against the Austrians and Hanoverians in eastern Belgium. ||| 1793 campaign ||| ||| +0 Flanders Campaign ||| Battle of Menin (1793) ||| York's forces began the [[Siege of Dunkirk (1793)|investment of Dunkirk]], though they were ill-prepared for a protracted siege and had still not received any heavy siege artillery. The Armée du Nord, now under command of [[Jean Nicolas Houchard]] defeated York's exposed left flank under the Hanoverian general [[Heinrich Wilhelm von Freytag|Freytag]] at the [[Battle of Hondschoote (1793)|Battle of Hondschoote]], forcing York to raise the siege and abandon his equipment. The Anglo-Hanoverians fell back in good order to [[Veurne]] (Furnes), where they were able to recover as there was no French pursuit. Houchard's plan had actually been to merely repulse the Duke of York so he could march south to relieve Le Quesnoy; on 13 September he defeated the Hereditary Prince at [[Battle of Menin (1793)|Menin]] ([[Menen]]), capturing 40 guns and driving the Dutch towards Bruges and Ghent, but three days later his forces were routed in turn by [[Johann Peter Beaulieu|Beaulieu]] at [[Battle of Courtrai (1793)|Courtrai]]. ||| 1793 campaign ||| Autumn Campaign ||| +0 Flanders Campaign ||| Battle of Sprimont ||| In August 1794 a pause in operations fell as the French focused their efforts against the Belgian [[Channel (geography)|Channel ports]], and York attempted in vain to encourage Austrian support. Under pressure from Britain, the Emperor dismissed Coburg, however his place was filled temporarily by the even more unpopular Clerfayt. After the fall of Le Quesnoy and Landrecies to the French, Pichegru renewed his offensive on the 28th, obliging York to pull back to the line of the [[Aa River (Meuse)|Aa River]] where he was attacked at [[Battle of Boxtel|Boxtel]] and persuaded to withdraw to the Meuse. On 18 September Clerfayt was defeated at the [[Battle of Sprimont]] on the banks of the [[Ourthe]], followed by a further defeat at the hands of Jourdan at the [[Battle of Aldenhoven (1794)|Battle of Aldenhoven]] on the [[Roer River]] on 2 October, causing the Austrians to retreat to the Rhine and finally ending Austrian presence in the [[Low Countries]]. ||| 1794 Campaign ||| Fall of the Dutch Republic ||| +0 Foreign Affairs Symposium ||| Battle of Mogadishu (1993) ||| *[[Battle of Mogadishu (1993)|Matthew Eversmann]] ||| Former Speakers ||| ||| +0 Fort Bowyer ||| Battle of New Orleans ||| '''Fort Bowyer''' was a short-lived earthen and [[stockade]] fortification that the [[United States Army]] erected in 1813 on [[Mobile Point]], near the mouth of [[Mobile Bay]] in [[Baldwin County, Alabama]]. The British twice attacked the fort during the [[War of 1812]]. The first, unsuccessful attack, took place in September 1814 and led to the British changing their strategy and attacking [[New Orleans]]. The second attack, following their defeat at the [[Battle of New Orleans]], was successful. However, it took place in February 1815, after the [[Treaty of Ghent]] had been signed but before the news had reached that part of America. ||| ||| ||| +0 Four Days' Battle ||| Battle of Lowestoft ||| In June 1665 the English had soundly defeated the Dutch in the [[Battle of Lowestoft]], but failed to take advantage of it. The Dutch Spice Fleet, loaded with fabulous riches, managed to return home safely after the [[Battle of Vågen]]. The Dutch navy was enormously expanded through the largest building programme in its history. In August 1665 already the English fleet was again challenged, though no large battles resulted. In 1666, the English became anxious to destroy the Dutch navy completely before it could grow too strong and were desperate to end the activity of Dutch raiders as a collapse of English trade threatened. ||| ||| ||| +0 Four Days' Battle ||| Second Anglo-Dutch War ||| The biggest sea battle of the [[Second Anglo-Dutch War]] and in the age of sail was a Dutch victory. However, the outcome is sometimes described as inconclusive, because both sides initially claimed victory. Immediately after the battle the English captains of Rupert's squadron, not having seen the final outcome, claimed De Ruyter had retreated first, then normally seen as an acknowledgement of the superiority of the enemy fleet. Though the Dutch fleet was eventually forced to end the pursuit, they had managed to cripple the English fleet, and lost but four smaller ships themselves, for the ''Spieghel'' refused to sink and was repaired. The contemporaneous Dutch view on this matter is expressed in a famous [[epigram]] by the poet [[Constantijn Huygens]]: ||| Results ||| ||| +0 Fourth Battle of the Isonzo ||| Battles of the Isonzo ||| In contrast to the other three [[Battles of the Isonzo]] (June, July and October), this offensive lasted a short amount of time, and is sometimes considered a continuation of the [[Third Battle of the Isonzo|previous offensive]]. ||| Overview ||| ||| +0 Fourth Battle of the Isonzo ||| Eleventh Battle of the Isonzo ||| The Austro-Hungarian High Command, worried by the huge losses, notwithstanding the 12 additional divisions sent to the front, for the first time requested help from the [[German Empire]], which was not formally in the war against Italy yet. This reason led the Germans to intervene on the Italian front but only starting from the [[Eleventh Battle of the Isonzo]]. ||| Overview ||| ||| +0 Franco-Thai War ||| Japanese invasion of French Indochina ||| * [[Japanese invasion of French Indochina]] ||| See also ||| ||| +0 French Revolution ||| Battle of Fleurus (1794) ||| The stalemate was broken in the summer of 1794 with dramatic French victories. They defeated the allied army at the [[Battle of Fleurus (1794)|Battle of Fleurus]], leading to a full Allied withdrawal from the Austrian Netherlands. They followed up by a campaign which swept the allies to the east bank of the Rhine and left the French, by the beginning of 1795, conquering the Dutch Republic itself. The House of Orange was expelled and replaced by the [[Batavian Republic]], a French satellite state. These victories led to the collapse of the coalition against France. Prussia, having effectively abandoned the coalition in the fall of 1794, made peace with revolutionary France at [[Peace of Basel|Basel]] in April 1795, and soon thereafter Spain, too, made peace with France. Of the major powers, only Britain and Austria remained at war with France. ||| French Revolutionary Wars ||| ||| +0 French Revolution ||| Battle of Jemappes ||| The new-born Republic followed up on this success with a series of victories in Belgium and the [[Rhineland]] in the fall of 1792. The French armies defeated the Austrians at the [[Battle of Jemappes]] on 6 November, and had soon taken over most of the Austrian Netherlands. This brought them into conflict with Britain and the [[Dutch Republic]], which wished to preserve the independence of the southern Netherlands from France. After the king's execution in January 1793, these powers, along with Spain and most other European states, joined the war against France. Almost immediately, French forces faced defeat on many fronts, and were driven out of their newly conquered territories in the spring of 1793. At the same time, the republican regime was forced to deal with rebellions against its authority in much of western and southern France. But the allies failed to take advantage of French disunity, and by the autumn of 1793 the republican regime had defeated most of the internal rebellions and halted the allied advance into France itself. ||| French Revolutionary Wars ||| ||| +0 French Revolutionary Wars ||| Battle of Ballinamuck ||| An expeditionary force was sent to [[County Mayo]], in Ireland, to assist in the [[Irish Rebellion of 1798|rebellion against Britain]] in the summer of 1798. It had some success against British forces, most [[Battle of Castlebar|notably at Castlebar]], but was [[Battle of Ballinamuck|ultimately routed]] while trying to reach [[Dublin]]. French ships sent to assist them [[Battle of Tory Island|were captured]] by the Royal Navy off [[County Donegal]]. ||| War of the First Coalition ||| 1798 ||| +0 French Revolutionary Wars ||| Battle of Castlebar ||| An expeditionary force was sent to [[County Mayo]], in Ireland, to assist in the [[Irish Rebellion of 1798|rebellion against Britain]] in the summer of 1798. It had some success against British forces, most [[Battle of Castlebar|notably at Castlebar]], but was [[Battle of Ballinamuck|ultimately routed]] while trying to reach [[Dublin]]. French ships sent to assist them [[Battle of Tory Island|were captured]] by the Royal Navy off [[County Donegal]]. ||| War of the First Coalition ||| 1798 ||| +0 French Revolutionary Wars ||| French campaign in Egypt and Syria ||| The War of the Second Coalition began with the [[French campaign in Egypt and Syria|French invasion of Egypt]], headed by Napoleon, in 1798. The Allies took the opportunity presented by the French strategic effort in the Middle East to regain territories lost from the First Coalition. The war began well for the Allies in Europe, where they gradually pushed the French out of Italy and invaded Switzerland—racking up victories at [[Battle of Magnano|Magnano]], [[Battle of Cassano (1799)|Cassano]], and [[Battle of Novi (1799)|Novi]] along the way. However, their efforts largely unraveled with the French victory at [[Second Battle of Zurich|Zurich]] in September 1799, which caused [[Russian Empire|Russia]] to drop out of the war. Meanwhile, Napoleon's forces annihilated a series of Egyptian and [[Ottoman Empire|Ottoman]] armies at the battles of the [[Battle of the Pyramids|Pyramids]], [[Battle of Mount Tabor|Mount Tabor]], and [[Battle of Abukir (1799)|Abukir]]. These victories and the conquest of Egypt further enhanced Napoleon's popularity back in France; he returned in the fall of 1799 to cheering throngs in the streets. However, the [[Royal Navy]] had managed to inflict a humiliating defeat on the French fleet at the [[Battle of the Nile]] in 1798, further strengthening British control of the [[Mediterranean Sea|Mediterranean]]. ||| ||| ||| +0 French and Indian War ||| Haitian Revolution ||| Britain gained control of [[Canada (New France)|French Canada]] and Acadia, colonies containing approximately 80,000 primarily French-speaking Roman Catholic residents. The [[Expulsion of the Acadians|deportation of Acadians]] beginning in 1755 resulted in land made available to migrants from Europe and the colonies further south. The British resettled many Acadians throughout its North American provinces, but many went to France, and some went to New Orleans, which they had expected to remain French. Some were sent to colonize places as diverse as [[French Guiana]] and the [[Falkland Islands]]; these latter efforts were unsuccessful. Others migrated to places like [[Saint-Domingue]], and fled to New Orleans after the [[Haitian Revolution]]. The Louisiana population contributed to the founding of the modern [[Cajun]] population. (The French word 'Acadien' evolved to 'Cadien', then to 'Cajun'.) ||| Consequences ||| ||| +0 French campaign in Egypt and Syria ||| Battle of Abukir (1799) ||| First Bonaparte advanced to Alexandria, from which he marched to Aboukir, whose fort was now strongly garrisoned by the Ottomans. Bonaparte deployed his army so that Mustapha would have to win or die with all his family. Mustapha's army was 18,000 strong and supported by several cannon, with trenches defending it on the landward side and free communication with the Ottoman fleet on the seaward side. Bonaparte ordered an attack on 25 July and the [[Battle of Abukir (1799)|Battle of Abukir]] ensued. In a few hours the trenches were taken, 10,000 Ottomans drowned in the ocean and the rest captured or killed. Most of the credit for the French victory that day goes to Murat, who captured Mustapha himself. Mustapha's son was in command of the fort and he and all his officers survived but were captured and sent back to Cairo as part of the French triumphal procession. Seeing Bonaparte return with these high-ranking prisoners, the population of Cairo superstitiously welcomed him as a prophet-warrior who had predicted his own triumph with such remarkable precision. ||| Abukir to withdrawal ||| Land battle at Abukir ||| +0 French campaign in Egypt and Syria ||| Battle of Alexandria ||| Under continual harassment from the new Anglo-Ottoman land offensive, defeated by the British in the [[Battle of Alexandria]] on March 21, [[Siege of Fort Julien|and at Fort Julien]] in April and then [[Siege of Alexandria (1801)|besieged]] in [[Alexandria]] from 17 August – 2 September 1801, Menou eventually [[Capitulation (surrender)|capitulated]] to the British. Under the [[Capitulation of Alexandria (1801)|terms of his capitulation]], the British general [[Ralph Abercromby]] allowed the French army to be repatriated in British ships. Menou also signed over to Britain the priceless hoard of Egyptian antiquities such as the [[Rosetta Stone]] which it had collected. After initial talks in Al Arish on 30 January 1800, the [[Treaty of Paris (1802)|Treaty of Paris]] on 25 June 1802 ended all hostilities between France and the Ottoman Empire, resecuring Egypt for the Ottomans. ||| Abukir to withdrawal ||| End of the campaign===<!--linked--& ||| +0 French campaign in Egypt and Syria ||| Battle of Heliopolis ||| ** 20 March (29 Ventôse year VIII) – [[Battle of Heliopolis (1800)|Battle of Heliopolis]], [[Jean-Baptiste Kléber|Kléber]] wins one last victory, against a force of 30,000 Ottomans ||| Timeline and battles ||| ||| +0 French campaign in Egypt and Syria ||| Battle of the Nile ||| Despite many decisive victories and an initially successful expedition into Syria, Napoleon and his ''[[Armée d'Orient (1798)|Armée d'Orient]]'' were eventually forced to withdraw by the British army, after sowing political disharmony in France, conflict in Europe, and suffering the defeat of the supporting French fleet at the [[Battle of the Nile]]. ||| ||| ||| +0 French campaign in Egypt and Syria ||| French Revolution ||| The [[French Revolution]] had significantly reduced the Knights' income and their ability to put up serious resistance. Half of the Knights were French, and most of these knights refused to fight. ||| Preparations and voyage ||| Capture of Malta ||| +0 French campaign in Egypt and Syria ||| French Revolutionary Wars ||| 22 September 1798 was the anniversary of the founding of the [[First French Republic]] and Bonaparte organised the most magnificent celebration possible. On his orders, an immense circus was built in the largest square in Cairo, with 105 columns (each with a flag bearing the name of a département) round the edge and a colossal inscribed obelisk at the centre. On seven classical altars were inscribed the names of heroes killed in the [[French Revolutionary Wars]], whilst the structure was entered through a triumphal arch, on which was shown the battle of the Pyramids. Here there was some awkwardness – the painting flattered the French but aggrieved the defeated Egyptians they were trying to win over as allies. ||| Alexandria to Syria ||| Bonaparte's administration of Egypt ||| +0 French campaign in Egypt and Syria ||| Siege of Jaffa ||| After marching {{convert|60|mi|km}} across the desert the army arrived in [[Gaza City|Gaza]], where it rested for two days, and then moved onto [[Jaffa]]. This city was surrounded by high walls flanked by towers. Jezzar had entrusted its defence to elite troops, with the artillery manned by 1200 Ottoman gunners. The city was one of the ways into Syria, its port could be used by his fleet and a large part of the expedition's success depended on its fall. This meant Bonaparte had to capture the city before advancing further, and so he laid [[Siege of Jaffa|siege]] to it from 3 to 7 March. ||| Syria ||| Jaffa ||| +0 French presidential election, 2007 ||| 2003 invasion of Iraq ||| * '''International politics''' – A majority in France approved of President [[Jacques Chirac]]'s opposition to the [[2003 invasion of Iraq]] by the United States. Sarkozy is considered as pro-Washington, while Royal, although seen as probably also in line with Washington, is thought to be more moderate.{{Citation needed|date=May 2007}} Left-wing intellectual [[Régis Debray]]'s metaphor was that Sarkozy was like a direct flight to Washington, D.C., while Royal was a flight to Washington with a stop-off in [[Oslo]], referring to her European inclinations. Chirac's public opposition to the [[Iraq War]] should however be relativised, as he toned down his criticisms after a while. Furthermore, he has involved French [[War in Afghanistan (2001–present)|troops in Afghanistan]] and agreed, immediately after the [[11 September 2001 attacks]], on increased cooperation between Western intelligence services, materialised by the creation of [[Alliance Base]] in the centre of Paris, a joint international [[Counterterrorist Intelligence Center|Counterterrorist Intelligence Centre]]. ||| Electoral issues ||| ||| +0 French presidential election, 2007 ||| Iraq War ||| * '''International politics''' – A majority in France approved of President [[Jacques Chirac]]'s opposition to the [[2003 invasion of Iraq]] by the United States. Sarkozy is considered as pro-Washington, while Royal, although seen as probably also in line with Washington, is thought to be more moderate.{{Citation needed|date=May 2007}} Left-wing intellectual [[Régis Debray]]'s metaphor was that Sarkozy was like a direct flight to Washington, D.C., while Royal was a flight to Washington with a stop-off in [[Oslo]], referring to her European inclinations. Chirac's public opposition to the [[Iraq War]] should however be relativised, as he toned down his criticisms after a while. Furthermore, he has involved French [[War in Afghanistan (2001–present)|troops in Afghanistan]] and agreed, immediately after the [[11 September 2001 attacks]], on increased cooperation between Western intelligence services, materialised by the creation of [[Alliance Base]] in the centre of Paris, a joint international [[Counterterrorist Intelligence Center|Counterterrorist Intelligence Centre]]. ||| Electoral issues ||| ||| +0 Frigate action of 29 May 1794 ||| Atlantic campaign of May 1794 ||| The '''frigate action of 29 May 1794'''—not to be confused with the much larger [[fleet action of 29 May 1794]] that took place in the same waters at the same time—was a minor naval engagement of the [[French Revolutionary Wars]] between a [[Royal Navy]] [[frigate]] and a [[French Navy]] frigate. The action formed a minor part of the [[Atlantic campaign of May 1794]], a campaign which culminated in the battle of the [[Glorious First of June]], and was unusual in that the French ship [[HMS Castor (1785)|''Castor'']] had only been in French hands for a few days at the time of the engagement. ''Castor'' had previously been a British ship, seized on 19 May by a French battle squadron in the [[Bay of Biscay]] and converted to French service while still at sea. While the main fleets manoeuvered around one another, ''Castor'' was detached in pursuit of a Dutch merchant ship and on 29 May encountered the smaller independently cruising British frigate [[HMS Carysfort (1766)|HMS ''Carysfort'']]. ||| ||| ||| +0 Frigate action of 29 May 1794 ||| Battle of Trafalgar ||| Captain [[Francis Laforey]] on ''Carysfort'' immediately attacked the larger ship and in an engagement lasting an hour and fifteen minutes successfully forced its captain to surrender, discovering a number of British prisoners of war below decks. ''Castor'' was subsequently taken back to Britain and an extended legal case ensued between the [[Admiralty]] and Captain Laforey over the amount of [[prize money]] that should be awarded for the victory. Ultimately Laforey was successful, in part due to testimony from the defeated French captain, proving his case and claiming the prize money. The lawsuit did not harm Laforey's career and he later served at the [[Battle of Trafalgar]] and became a prominent admiral. ||| ||| ||| +0 Frigate action of 29 May 1794 ||| Glorious First of June ||| The '''frigate action of 29 May 1794'''—not to be confused with the much larger [[fleet action of 29 May 1794]] that took place in the same waters at the same time—was a minor naval engagement of the [[French Revolutionary Wars]] between a [[Royal Navy]] [[frigate]] and a [[French Navy]] frigate. The action formed a minor part of the [[Atlantic campaign of May 1794]], a campaign which culminated in the battle of the [[Glorious First of June]], and was unusual in that the French ship [[HMS Castor (1785)|''Castor'']] had only been in French hands for a few days at the time of the engagement. ''Castor'' had previously been a British ship, seized on 19 May by a French battle squadron in the [[Bay of Biscay]] and converted to French service while still at sea. While the main fleets manoeuvered around one another, ''Castor'' was detached in pursuit of a Dutch merchant ship and on 29 May encountered the smaller independently cruising British frigate [[HMS Carysfort (1766)|HMS ''Carysfort'']]. ||| ||| ||| +0 Gas attacks at Wulverghem ||| First German phosgene attack on British troops ||| The gas used by the German troops at Wulverghem was a mixture of [[chlorine]] and [[phosgene]], which had been used against British troops on 19 December 1915 in the [[First German phosgene attack on British troops]] at Wieltje, north-east of Ypres. This and earlier gas attacks, beginning at the [[Second Battle of Ypres]] {{nowrap|(21 April – 25 May 1915),}} had given the British time to replace improvised gas masks, with effective mass-produced masks and other anti-gas equipment and to establish anti-gas procedures. Helmets impregnated with chemicals to neutralise [[chlorine]] had been issued in several variants, each more effective than the last. By April 1916, British troops had [[PH helmet]]s and some specialist troops like machine-gunners, were equipped with box respirators. ||| ||| ||| +0 Gas attacks at Wulverghem ||| Second Battle of Ypres ||| The gas used by the German troops at Wulverghem was a mixture of [[chlorine]] and [[phosgene]], which had been used against British troops on 19 December 1915 in the [[First German phosgene attack on British troops]] at Wieltje, north-east of Ypres. This and earlier gas attacks, beginning at the [[Second Battle of Ypres]] {{nowrap|(21 April – 25 May 1915),}} had given the British time to replace improvised gas masks, with effective mass-produced masks and other anti-gas equipment and to establish anti-gas procedures. Helmets impregnated with chemicals to neutralise [[chlorine]] had been issued in several variants, each more effective than the last. By April 1916, British troops had [[PH helmet]]s and some specialist troops like machine-gunners, were equipped with box respirators. ||| ||| ||| +0 Gaspee Affair ||| Battles of Lexington and Concord ||| In Boston, a little-known visiting minister, [[John Allen (minister)|John Allen]], preached a sermon at the Second Baptist Church that utilized the ''Gaspee'' affair to warn listeners about greedy monarchs, corrupt judges and conspiracies at high levels in the London government. This sermon was printed seven different times in four colonial cities, becoming one of the most popular pamphlets of Colonial British America. This pamphlet, along with the incendiary rhetoric of numerous colonial newspaper editors, awoke colonial Whigs from a lull of inactivity in 1772, thus inaugurating a series of conflicts that would culminate in the [[Battles of Lexington and Concord]]. ||| The incident ||| ||| +0 Gdeim Izik protest camp ||| First Sahrawi Intifada ||| The '''Gdeim Izik protest camp''' was a [[protest camp]] in [[Western Sahara]], established on 9 October 2010 and lasting into November that year, with related incidents occurring in the aftermath of its dismantlement on 8 November. While protests were initially peaceful, they were later marked by clashes between civilians and security forces. Some referred to the protests as the Third Sahrawi Intifada, following the [[First Sahrawi Intifada|First]] and the [[Second Sahrawi Intifada]]s. ||| ||| ||| +0 General Sherman incident ||| First Opium War ||| The first contact between the US and Korea was not hostile in any way. In 1853 the gunboat {{USS|South America|1861|2}} visited [[Busan]] for 10 days while en route to Japan; her officers dined with local officials. Several Americans who were shipwrecked in Korea in 1855, 1865 and 1866 were treated well and sent to China for [[repatriation]]. However, the [[Joseon Dynasty]] court which ruled Korea was well aware of the displacement of the traditional ruling classes of China as a result of the [[First Opium War|First]] and the [[Second Opium War]] and maintained a strict policy of [[isolationism]], forbidding any of those they ruled to trade with the outside world to avoid a similar fate. ||| Background ||| ||| +0 George W. Bush presidential campaign, 2004 ||| 2003 invasion of Iraq ||| Supported [[2003 invasion of Iraq|the continuation of American military presence in Iraq]]. Promoted the goal of democratic elections by January 2005 as integral to the nation's democratic reform. ||| Issue stances ||| National security and foreign policy ||| Iraq +0 George Washington's crossing of the Delaware River ||| Battle of Trenton ||| '''George Washington's crossing of the Delaware River''', which occurred on the night of December 25–26, 1776, during the [[American Revolutionary War]], was the first move in a surprise attack organized by [[George Washington]] against the [[Hessian (soldiers)|Hessian]] forces in [[Trenton, New Jersey]] on the morning of December 26. Planned in partial secrecy, Washington led a column of [[Continental Army]] troops across the icy [[Delaware River]] in a logistically challenging and dangerous operation. Other planned crossings in support of the operation were either called off or ineffective, but this did not prevent Washington from [[Battle of Trenton|surprising and defeating]] the troops of [[Johann Rall]] quartered in Trenton. The army crossed the river back to Pennsylvania, this time laden with prisoners and military stores taken as a result of the battle. ||| ||| ||| +0 German Revolution of 1918–19 ||| Hundred Days Offensive ||| After the victory in the east the Supreme Army Command ordered the so-called [[Spring Offensive]] in the west to turn the war decisively in Germany's favour. But by July 1918 their last reserves were used up, and military defeat of Germany was sealed. Allied forces scored numerous successive victories in the [[Hundred Days Offensive]], gaining a large swathe of territory. In mid-September, the [[Balkan Front]] collapsed. The [[Kingdom of Bulgaria]], an ally of the German Empire and [[Austria-Hungary]], capitulated on 27 September. The collapse of Austria-Hungary itself was now only a matter of days away. ||| Background ||| Request for cease fire and change of constitution ||| +0 German Revolution of 1918–19 ||| Spring Offensive ||| After the victory in the east the Supreme Army Command ordered the so-called [[Spring Offensive]] in the west to turn the war decisively in Germany's favour. But by July 1918 their last reserves were used up, and military defeat of Germany was sealed. Allied forces scored numerous successive victories in the [[Hundred Days Offensive]], gaining a large swathe of territory. In mid-September, the [[Balkan Front]] collapsed. The [[Kingdom of Bulgaria]], an ally of the German Empire and [[Austria-Hungary]], capitulated on 27 September. The collapse of Austria-Hungary itself was now only a matter of days away. ||| Background ||| Request for cease fire and change of constitution ||| +0 German federal election, 2002 ||| 2003 invasion of Iraq ||| Several issues dominated the campaign, with the opposition CDU/CSU attacking the government's performance on the economy which fell back into recession due to the [[Telecoms crash]] and the introduction of the euro. As well as campaigning on family values issues and against taxes (particularly on fuel). The government, on the other hand, was helped by broad support for its opposition to the [[2003 invasion of Iraq|Iraq War]], continued media attention on the CDU funding scandal and by [[Gerhard Schröder]]'s personal popularity relative to the opposition's candidate for [[Chancellor of Germany (Federal Republic)|Chancellor]], CSU leader [[Edmund Stoiber]]. ||| Issues and campaign ||| ||| +0 German federal election, 2002 ||| Iraq War ||| Several issues dominated the campaign, with the opposition CDU/CSU attacking the government's performance on the economy which fell back into recession due to the [[Telecoms crash]] and the introduction of the euro. As well as campaigning on family values issues and against taxes (particularly on fuel). The government, on the other hand, was helped by broad support for its opposition to the [[2003 invasion of Iraq|Iraq War]], continued media attention on the CDU funding scandal and by [[Gerhard Schröder]]'s personal popularity relative to the opposition's candidate for [[Chancellor of Germany (Federal Republic)|Chancellor]], CSU leader [[Edmund Stoiber]]. ||| Issues and campaign ||| ||| +0 German invasion of Belgium ||| First Battle of the Aisne ||| The Race to the Sea took place from about {{nowrap|17 September – 19 October}} 1914, after the [[Battle of the Frontiers]] (7 August–13 September) and the German advance into [[France]], which had been stopped at the [[First Battle of the Marne]] {{nowrap|(5–12 September)}} and was followed by the [[First Battle of the Aisne]] {{nowrap|(13 September – 28 September),}} a Franco-British counter-offensive.{{refn|Writers and historians have criticised the term Race to the Sea and used several date ranges, for the period of mutual attempts to outflank the opposing armies on their northern flanks. In 1925, [[James Edward Edmonds|Edmonds]] the British [[Official history|Official Historian]], used dates of {{nowrap|15 September – 15 October}} and in 1926 {{nowrap|17 September – 19 October.}}{{sfn|Edmonds|1925|pp=27–100}}{{sfn|Edmonds|1926|pp=400–408}} In 1929 the fifth volume of {{lang|de|''Der Weltkrieg''}} the German Official History, described the progress of German outflanking attempts, without labelling them.{{sfn|Reichsarchiv|1929|p=14}} In 2001 Strachan used {{nowrap|15 September – 17 October.}}{{sfn|Strachan|2001|pp=266–273}} In 2003 Clayton gave dates from {{nowrap|17 September – 7 October.}}{{sfn|Clayton|2003|p=59}} In 2005, Doughty used the period from {{nowrap|17 September – 17 October}} and Foley from 17 September to a period between {{nowrap|10–21 October.}}{{sfn|Doughty|2005|p=98}}{{sfn|Foley|2005|pp=101–102}} In 2010 Sheldon placed the beginning of the 'erroneously named' race from the end of the Battle of the Marne to the beginning of the Battle of the Yser.{{sfn|Sheldon|2010|p=x}}|group='Note'}} The term described reciprocal attempts by the Franco-British and German armies, to envelop the northern flank of the opposing army through [[Picardy]], [[Artois]] and [[Flanders]], rather than an attempt to advance northwards to the sea. Troops were moved from the French-German border by both sides, to the western flank to prevent opposing outflanking moves and then to counter-outflank the opponent. At the battles of Picardy and Albert in late September, the French Second and German 6th armies fought meeting engagements from the Oise north to the Somme but neither was able to envelop the northern flank of the opponent. ||| Battles ||| Race to the Sea, 17 September – 19 October ||| +0 German invasion of Belgium ||| Great Retreat ||| While the French armies and the BEF conducted the [[Great Retreat]] into France (August 24 – September 28), small detachments of the Belgian, French and British armies, fought in Belgium against German cavalry and {{lang|de|''[[Jäger (military)|Jäger]]''}} units. On August 27 a squadron of the [[Royal Naval Air Service]] (RNAS) flew to Ostend, for air reconnaissance sorties between Bruges, Ghent and Ypres. British marines landed in France on {{nowrap|19/20 September}} and began scouting unoccupied Belgium in motor cars; an RNAS Armoured Car Section was created by fitting vehicles with bullet-proof steel. On 2 October the Marine Brigade of the [[Royal Naval Division]] was moved to Antwerp, followed by the rest of the division on 6 October. From {{nowrap|6–7 October}} the 7th Division and the 3rd Cavalry Division landed at Zeebrugge and naval forces collected at Dover were formed into the [[Dover Patrol]], to operate in the Channel and off the French-Belgian coast. Despite minor British reinforcement, the [[Siege of Antwerp (1914)|siege of Antwerp]] ended when its defensive ring of forts was destroyed by German super-heavy artillery. The city was abandoned on 9 October and Allied forces withdrew to [[West Flanders]]. ||| ||| ||| +0 German invasion of Belgium ||| Race to the Sea ||| At the end of the '[[Race to the Sea]]' {{nowrap|(September 17 – October 19)}}, a period of reciprocal attempts by the Germans and Franco-British to outflank their opponents on the western flank, as it was extended northwards from the Aisne, through Picardy, Artois and Flanders, military operations in Belgium moved westwards, from Antwerp to the area close to the border with France. The Belgian army fought a defensive [[Battle of the Yser|battle on the Yser]] (16–31 October) from [[Nieuport]] south to [[Dixmude]], as the 4th Army attacked westwards and French, British and some Belgian troops fought the First Battle of Ypres (19 October – 22 November) against the 4th and 6th armies. By November 1914, most of Belgium was [[German occupation of Belgium during World War I|under German occupation]] and Allied blockade. A military administration {{lang|de|''Kaiserliches Deutsches Generalgouvernement Belgien''}} was established on 26 August 1914, to rule Belgium through the pre-war Belgian administrative system, overseen by a small group of German officers and officials. Belgium was divided into three administrative zones: the [[General Governorate of Belgium|General Governorate]], which included Brussels and the hinterland; a second zone, under the 4th Army, including [[Ghent]] and Antwerp; and a third zone under the German Navy along the coastline. The German occupation was maintained until late 1918. ||| ||| ||| +0 German invasion of Belgium ||| Siege of Antwerp (1914) ||| While the French armies and the BEF conducted the [[Great Retreat]] into France (August 24 – September 28), small detachments of the Belgian, French and British armies, fought in Belgium against German cavalry and {{lang|de|''[[Jäger (military)|Jäger]]''}} units. On August 27 a squadron of the [[Royal Naval Air Service]] (RNAS) flew to Ostend, for air reconnaissance sorties between Bruges, Ghent and Ypres. British marines landed in France on {{nowrap|19/20 September}} and began scouting unoccupied Belgium in motor cars; an RNAS Armoured Car Section was created by fitting vehicles with bullet-proof steel. On 2 October the Marine Brigade of the [[Royal Naval Division]] was moved to Antwerp, followed by the rest of the division on 6 October. From {{nowrap|6–7 October}} the 7th Division and the 3rd Cavalry Division landed at Zeebrugge and naval forces collected at Dover were formed into the [[Dover Patrol]], to operate in the Channel and off the French-Belgian coast. Despite minor British reinforcement, the [[Siege of Antwerp (1914)|siege of Antwerp]] ended when its defensive ring of forts was destroyed by German super-heavy artillery. The city was abandoned on 9 October and Allied forces withdrew to [[West Flanders]]. ||| ||| ||| +0 German invasion of Belgium ||| Siege of Namur (1914) ||| German military operations in Belgium were intended to bring the 1st, 2nd and 3rd armies into positions in Belgium, from which they could invade France, which led to sieges of Belgian fortresses along the [[Meuse river]] at [[Namur (city)|Namur]], after the fall of Liège on August 7 and the surrender of the last forts on {{nowrap|16–17 August.}} The government abandoned the capital, [[Brussels]], on August 17 and after fighting on the Gete river, the Belgian field army withdrew westwards, to the [[National redoubt of Belgium|National Redoubt]] at [[Antwerp]] on August 19. Brussels was occupied the next day and [[Siege of Namur (1914)|Namur was besieged]] on August 21. ||| ||| ||| +0 Gezi Park protests ||| Occupy movement ||| With the police abandoning attempts to clear the Gezi Park encampment on 1 June, the area began to take on some of the characteristics associated with the [[Occupy movement]]. ||| Types of protest ||| Gezi Park camp ||| +0 Glencairn's rising ||| Battle of Worcester ||| Although it gained recruits, the rising began to suffer from internal divisions, particularly between the Highlanders who made up the bulk of the forces and the Lowland nobles and officers who were their commanders. In early 1654, nine months into the revolt, [[John Middleton, 1st Earl of Middleton|John Middleton]] (1608–74), a Lowland officer and a veteran of the [[Battle of Worcester]], arrived with a commission to command from Charles II. ||| Divisions ||| ||| +0 Glorious Revolution ||| Battle of the Boyne ||| James had cultivated support on the fringes of his Three Kingdoms – in Catholic Ireland and the Highlands of Scotland. Supporters of James, known as ''Jacobites'', were prepared to resist what they saw as an illegal coup by force of arms. The first [[Jacobite rebellion]], an uprising in support of James in Scotland, took place in 1689. It was led by [[John Graham, 1st Viscount of Dundee]], also known as Graham of Claverhouse or Bonnie Dundee, who raised an army from Highland [[clans]]. In Ireland, [[Richard Talbot, 1st Earl of Tyrconnell]] led local Catholics, who had been discriminated against by previous English monarchs, in the conquest of all the fortified places in the kingdom except [[Derry]], and so held the Kingdom for James. James himself landed in Ireland with 6,000 French troops to try to regain the throne in the [[Williamite war in Ireland]]. The war raged from 1689 to 1691. James fled Ireland following his defeat at the [[Battle of the Boyne]] in 1690, but Jacobite resistance was not ended until after the [[battle of Aughrim]] in 1691, when over half of their army was killed or taken prisoner. The Irish Jacobites surrendered under the conditions of the [[Treaty of Limerick]] on 3 October 1691. England stayed relatively calm throughout, although some English Jacobites fought on James's side in Ireland. Despite the [[Jacobitism|Jacobite]] victory at the [[Battle of Killiecrankie]], the uprising in the [[Scottish Highlands]] was quelled due to death of its leader, Dundee, and Williamite victories at [[Battle of Dunkeld|Dunkeld]] and [[Battle of Cromdale|Cromdale]], as well as the [[Massacre of Glencoe|Glencoe massacre]] in early 1692. Many, particularly in Ireland and Scotland, continued to see the [[Stuarts]] as the legitimate monarchs of the Three Kingdoms, and there were further [[Jacobite rebellion]]s in Scotland during the years 1715, 1719 and 1745. ||| Jacobite uprisings ||| ||| +0 Glorious Revolution ||| English Civil War ||| The expression 'Glorious Revolution' was first used by [[John Hampden (1653-1696)|John Hampden]] in late 1689, The Glorious Revolution is also occasionally termed the '''Bloodless Revolution''', albeit inaccurately. The [[English Civil War]] (also known as the Great Rebellion) was still within living memory for most of the major English participants in the events of 1688, and for them, in comparison to that war (or even the [[Monmouth Rebellion]] of 1685) the deaths in the conflict of 1688 were mercifully few. ||| ||| ||| +0 Gold Beach ||| Juno Beach ||| The objectives at Gold were to secure a [[beachhead]], move west to capture [[Arromanches]] and establish contact with the American forces at [[Omaha Beach|Omaha]], capture [[Bayeux]] and the small port at Port-en-Bessin, and to link up with the Canadian forces at [[Juno Beach|Juno]] to the east. Forces attacking Gold faced elements of the German [[352nd Infantry Division (Wehrmacht)|352nd Infantry Division]] and [[716th Static Infantry Division (Wehrmacht)|716th Infantry Division]]. About 2,000 men were stationed in the immediate area. Improvements to fortifications along the Normandy coast had been undertaken under the leadership of Field Marshal [[Erwin Rommel]] beginning in October 1943. ||| ||| ||| +0 Gora Prai airstrike ||| 2011 NATO attack in Pakistan ||| | battles = Gora Prai airstrike {{·}} [[Lowara Madi incident]] {{·}} [[Tanai incident]] {{·}} [[Kurram incident]] {{·}} [[Datta Khel incident]] {{·}} [[2011 NATO attack in Pakistan]] ||| ||| ||| +0 Gorlice–Tarnów Offensive ||| Great Retreat (Russian) ||| Trying to save Russian forces from suffering heavy casualties and gain time needed for the massive buildup of war industries at home, the Russian ''[[Stavka]]'' decided to gradually evacuate Galicia and the Polish salient to straighten out the frontline. A strategic retreat was initiated, which is known as the [[Great Retreat (Russian)|Great Retreat of 1915]]. ||| Outcome ||| ||| +0 Gothic Line ||| Battle of Gemmano ||| The [[Battle of Gemmano]] has been nicknamed by some historians as the '[[Battle of Monte Cassino|Cassino]] of the Adriatic'. After 11 assaults between 4 and 13 September (first by British 56th Division and then British 46th Division), it was the turn of Indian 4th Division who after a heavy bombardment made the 12th attack at 03:00 on 15 September and finally carried and secured the German defensive positions. In the meantime, to the north, on the other side of the Conca valley a similarly bloody engagement was being ground out at Croce. The German 98th Division held their positions with great tenacity, and it took five days of constant fighting, often door to door and hand to hand before 56th Division captured Croce. ||| Adriatic front (British 8th Army) ||| Battles for Gemmano and Croce ||| +0 Gothic Line ||| Battle of Monte Cassino ||| After the nearly concurrent breakthroughs at [[Battle of Monte Cassino|Cassino]] and [[Battle of Anzio|Anzio]] in spring 1944, the 11 nations representing the [[Allies of World War II|Allies]] in Italy finally had a chance to trap the Germans in a [[pincer movement]] and to realize some of the [[Prime Minister of the United Kingdom|British Prime Minister]] [[Winston Churchill]]'s strategic goals for the long, costly campaign against the [[Axis powers|Axis]] 'underbelly'. This would have required the [[United States Army North|U.S. Fifth Army]] under [[Lieutenant general (United States)|Lieutenant General]] [[Mark W. Clark|Mark Clark]] to commit most of his Anzio forces to the drive east from [[Cisterna, Italy|Cisterna]], and to execute the envelopment envisioned in the original planning for the Anzio landing (i.e., flank the [[10th Army (Wehrmacht)|German 10th Army]], and sever its northbound line of retreat from [[Cassino, Italy|Cassino]]). Instead, fearing that the [[Eighth Army (United Kingdom)|British Eighth Army]], under [[Lieutenant-general (United Kingdom)|Lieutenant-General]] [[Sir]] [[Oliver Leese]], might beat him to [[Rome]], Clark diverted a large part of his Anzio force in that direction in an attempt to ensure that he and the Fifth Army would have the honour of liberating the Eternal City. ||| Background ||| ||| +0 Gothic Line ||| Battle of Monte Castello ||| During November and December, 5th Army concentrated on dislodging the Germans from their well-placed artillery positions which had been key in preventing the Allied advance towards Bologna and [[Po Valley]]. Using small and medium Brazilian and American forces, U.S. 5th Army attacked these points one by one but with no positive outcome. By the end of the year, the defence compound formed by the Germans around [[Battle of Monte Castello|Monte Castello]], (''Lizano in'') Belvedere, Della Toraccia, Castelnuovo (di [[Vergato]]), Torre di Nerone, La Serra, Soprassasso and Castel D'Aiano had proved extremely resiliant. ||| Aftermath ||| ||| +0 Gothic Line ||| Battle of Rimini (1944) ||| On the right the Canadian Corps on 20 September broke the German positions on the Ausa river and into the Lombardy Plain and 3rd Greek Mountain Brigade [[Battle of Rimini (1944)|entered Rimini]] on the morning of 21 September as the Germans withdrew from their positions on the Rimini Line behind the Ausa to new positions on the Marecchia. Once again, the conditions prevented 8th Army's armour from exploiting the breakthrough, and the infantry of British V Corps and I Canadian Corps (joined by the [[2nd New Zealand Division]]) had to grind their way forward while von Vietinghoff withdrew his forces behind the next river beyond the Marecchia, the Uso, a few miles beyond Rimini. The positions on the Uso were forced on 26 September, and 8th Army reached the next river, the Fiumicino, on 29 September. Four days of heavy rain forced a halt, and by this time V Corps was fought out and required major reorganization. ||| Adriatic front (British 8th Army) ||| Coriano taken and the advance to Rimini and San Marino ||| +0 Gothic Line ||| Operation Overlord ||| Nevertheless, Winston Churchill and the British Chiefs of Staff were keen to break through the German defences to open up the route to the northeast through the 'Ljubljana Gap' into [[Austria]] and [[Hungary]]. Whilst this would threaten Germany from the rear, Churchill was more concerned to forestall the Russians advancing into central Europe. The U.S. Chiefs of Staff had strongly opposed this strategy as diluting the Allied focus in France. However, following the Allied [[Operation Overlord|successes in France]] during the summer, the U.S. Chiefs relented, and there was complete agreement amongst the [[Combined Chiefs of Staff]] at the [[Second Quebec Conference]] on 12 September. ||| Background ||| Allied strategy ||| +0 Great Siege of Gibraltar ||| Armada of 1779 ||| The Spanish were forced to commit increasing number of troops and ships to the siege, postponing the planned Invasion of England, due to this and the cancellation of the [[Armada of 1779]]. ||| Siege begins ||| ||| +0 Great Siege of Gibraltar ||| Battle of Cape Spartel ||| In Britain the [[Admiralty]] considered plans for a major relief of Gibraltar, opting to send a larger, but slower fleet, rather than a smaller faster one.{{Sfn | Syrett | 2006 | p = 103}} In September 1782 a large fleet left [[Spithead]] under [[Richard Howe]], arriving off [[Cape St Vincent]] on 9 October. The following evening a gale blew up, scattering the Spanish and French fleet. This allowed Howe to sail unopposed into Gibraltar. A total of 34 ships of the line escorted 31 transport ships which delivered supplies, food, and ammunition. The fleet also brought the [[King's Own Scottish Borderers|25th]], [[59th (2nd Nottinghamshire) Regiment of Foot|59th]], and [[97th Regiment of Foot (1780)|97th]] regiments of foot bringing the total number of the garrison to over 7,000.{{Sfn | Syrett | 2006 | pp = 104-5}}{{Sfn | Chartrand | Courcelle | 2006 | p = 23}} Howe then sailed out and fought [[Battle of Cape Spartel|an indecisive battle]] with the combined allied fleet before withdrawing to Britain in line with his orders. ||| Final relief ||| ||| +0 Great Train Robbery (1963) ||| Battle of Arnhem ||| '''Jimmy White''' - With the other robbers on the run and having fled the country, only White was at large in the United Kingdom. White was a renowned locksmith/thief and had already been on the run for ten years before the robbery. He was said to have 'a remarkable ability to be invisible, to merge with his surroundings and become the ultimate Mr Nobody.' He was a wartime paratrooper and a veteran of [[Battle of Arnhem|Arnhem]]. According to [[Piers Paul Read]] in his 1978 book ''The Train Robbers'', he was 'a solitary thief, not known to work with either firm, he should have had a good chance of remaining undetected altogether, yet was known to be one of the Train Robbers almost at once—first by other criminals and then by the police'. He was unfortunate in that Brian Field's relatives had dumped luggage containing £100,000 only a mile from a site where White had bought a caravan and hidden £30,000 in the panelling. In addition, a group of men purporting to be from the Flying Squad broke into his flat and took a briefcase containing £8,500. Throughout his three years on the run with wife Sheree and baby son Stephen, he was taken advantage of or let down by friends and associates. On 10 April 1966 a new friend recognised him from photos in a newspaper and informed police. They arrested him at Littlestone while he was at home. He only had £8,000 to hand back to them. The rest was long gone. He was tried in June 1966 at [[Leicester]] [[Assizes]] and Mr Justice Nield sentenced him to 18 years' jail, considerably less than the 30 years given to other principal offenders. ||| Pursuit of fugitives ||| ||| +0 Greater Poland Uprising (1806) ||| Sejny Uprising ||| It was one of the three most successful uprisings in the [[history of Poland]], in addition to the [[Greater Poland Uprising (1918–1919)|Greater Poland Uprising]] of 1918–1919 and [[Sejny Uprising]] in 1919. ||| ||| ||| +0 Greater Poland Uprising (1848) ||| Greater Poland Uprising (1806) ||| The Poles were freed from Prussians with the arrival of Napoleon, and started a [[Greater Poland Uprising (1806)|successful uprising]] against the Prussian forces in 1806. ||| Background ||| 1772–1807 ||| +0 Greco-Turkish War (1919–22) ||| Battle of Sakarya ||| The Greek campaign was launched primarily as the western [[Allies of World War I|Allies]], particularly [[Prime Minister of the United Kingdom|British Prime Minister]] [[David Lloyd George]], had promised Greece territorial gains at the expense of the [[Ottoman Empire]]. The armed conflict started with the Greek occupation of Smyrna, which is contemporary Izmir, on 15 May 1919, and Greek forces occupied several other cities in Anatolia during the war, including [[Manisa]], [[Balıkesir]], [[Aydin]], [[Kütahya]], [[Bursa]], and [[Eskişehir]], but their advance was checked at the [[Battle of Sakarya]] in 1921. The Greek front collapsed with the Turkish counter-attack on August 1922 and the war effectively ended with the [[Liberation of Smyrna|re-capture of Smyrna]] by the Turkish forces. ||| ||| ||| +0 Greco-Turkish War (1919–22) ||| Franco-Turkish War ||| Failure of the Greek military campaign and the [[Franco-Turkish War|expulsion of the French military]] from [[Cilicia]] in Anatolia forced the Allies to abandon the [[Treaty of Sèvres]] to negotiate a new treaty at Lausanne with the Turkish National Movement. The [[Treaty of Lausanne]] recognized the independence of the Republic of Turkey and its sovereignty over Asia Minor, Constantinople, and Eastern Thrace. ||| ||| ||| +0 Greco-Turkish War (1919–22) ||| Middle Eastern theatre of World War I ||| The geopolitical context of this conflict is linked to the partitioning of the [[Ottoman Empire]] which was a direct consequence of [[World War I]] and involvement of the Ottomans in the [[Middle Eastern theatre of World War I|Middle Eastern theatre]]. The Greeks received an order to land in [[Izmir|Smyrna]] by the [[Triple Entente]] as part of the partition. During this war, the Ottoman government collapsed completely and the Ottoman Empire was divided amongst the victorious Entente powers with the signing of the [[Treaty of Sèvres]] on August 10, 1920. ||| Background ||| Geopolitical context ||| +0 Greco-Turkish War (1919–22) ||| Occupation of Constantinople ||| As a result, the Greek government accepted the demands of the Turkish national movement and returned to its pre-war borders, thus leaving [[East Thrace]] and Western [[Anatolia]] to Turkey. The Turkish victory also brought an end to the [[Occupation of Constantinople]] by the British forces. Greek and Turkish governments agreed to engage in a [[Population exchange between Greece and Turkey|population exchange]]. ||| ||| ||| +0 Greek Resistance ||| Battle of Crete ||| Although there is an unconfirmed incident connected with [[Evzone]] [[Konstantinos Koukidis]] the day the Germans occupied Athens, the first confirmed resistance act in Greece had taken place on the night of 30 May 1941, even before the end of the [[Battle of Crete]]. Two young students, [[Apostolos Santas]], a [[law school|law student]], and [[Manolis Glezos]], a student at the [[Athens University of Economics and Business]], secretly climbed the northwest face of the [[Acropolis of Athens|Acropolis]] and tore down the [[Reichskriegsflagge|swastika banner]] which had been placed there by the occupation authorities. ||| First resistance acts ||| ||| +0 Greek Resistance ||| Massacre of the Acqui Division ||| By this time (July 1943), the overall strength of the ''andartes'' was around 20 The [[Armistice with Italy|Italian capitulation]] in September 1943 provided a windfall for the Resistance, as the Italian Army in many places simply disintegrated. Most Italian troops were swiftly disarmed and interned by the Germans, but on [[Cephalonia]] the ''Acqui'' Division resisted for about a week (ELAS fighters joining them) before being forced to surrender and subsequently [[Massacre of the Acqui Division|massacred]]. In many places significant amounts of weaponry and equipment, as well as men, fell into the hands of the Resistance. The most spectacular case was that of the [[Italian 24 Infantry Division Pinerolo|''Pinerolo'' division]] and the ''Aosta'' Cavalry Regiment, which went completely over to the EAMite ''andartes''. ||| {{anchor|Andartes|Andartiko|Andarte}} Resistance in the mountains – ''Andartiko'' ||| Italian collapse and German takeover ||| +0 Grey's raid ||| Battle of Rhode Island ||| Originally intended as a relief force for the British garrison that was [[Battle of Rhode Island|briefly besieged]] at [[Newport, Rhode Island]], Grey's force of 4,000 arrived after the Americans had already retreated, and was diverted for raiding by General Sir [[Henry Clinton (American War of Independence)|Henry Clinton]]. On September 5 and 6 Grey raided New Bedford and Fairhaven, only encountering significant resistance in Fairhaven. His troops destroyed storehouses, shipping, and supplies in New Bedford, where they met with light resistance from the local militia, and did less damage at Fairhaven, where militia resistance had time to organize. He then sailed for Martha's Vineyard, which was undefended. Between September 10 and 15 its residents surrendered 10,000 head of sheep and 300 oxen, as well as most of the island's weapons. ||| ||| ||| +0 Guadalcanal Campaign ||| Attack on Pearl Harbor ||| On 7 December 1941, [[Attack on Pearl Harbor|Japanese forces attacked]] the [[United States Pacific Fleet]] at [[Pearl Harbor]], Hawaii. The attack crippled much of the U.S. [[battleship]] fleet and precipitated an open and formal state of war between the two nations. The initial goals of Japanese leaders were to neutralize the US Navy, seize possessions rich in natural resources, and establish strategic military bases to defend Japan's empire in the Pacific Ocean and Asia. To further those goals, Japanese forces captured the Philippines, Thailand, [[British Malaya|Malaya]], Singapore, Burma, the [[Dutch East Indies]], [[Wake Island]], [[Gilbert Islands]], [[New Britain]] and [[Guam]]. Joining the U.S. in the war against Japan were the rest of the [[Allies of World War II|Allied powers]], several of whom, including the United Kingdom, Australia and the Netherlands had also been attacked by Japan. ||| Background ||| Strategic considerations ||| +0 Guadalcanal Campaign ||| Battle of Midway ||| Two attempts by the Japanese to continue their strategic initiative and offensively extend their outer defensive perimeter in the south and central Pacific to where they could threaten Australia and Hawaii or the US West Coast were thwarted at the naval battles of [[Battle of the Coral Sea|Coral Sea]] and [[Battle of Midway|Midway]] respectively. Coral Sea was a tactical stalemate, but a strategic Allied victory which became clear only much later. Midway was not only the Allies' first clear major victory against the Japanese, it significantly reduced the offensive capability of Japan's carrier forces, but did not change their offensive mindset for several crucial months in which they compounded mistakes by moving ahead with brash, even brazen decisions, such as the attempt to assault Port Moresby over the [[Kokoda Track campaign|Kokoda trail]]. Up to this point, the Allies had been on the defensive in the Pacific but these strategic victories provided them an opportunity to seize the initiative from Japan. ||| Background ||| Strategic considerations ||| +0 Guadalcanal Campaign ||| Battle of Savo Island ||| That night, as the transports unloaded, two groups of screening Allied [[cruiser]]s and [[destroyer]]s, under the command of British Rear Admiral [[Victor Crutchley]] VC, were surprised and defeated by a Japanese force of seven [[cruiser]]s and one destroyer from the [[IJN 8th Fleet|8th Fleet]] based at Rabaul and [[Kavieng]] and commanded by Japanese Vice Admiral [[Gunichi Mikawa]]. In the [[Battle of Savo Island]] one Australian and three American cruisers were sunk and one American cruiser and two destroyers were damaged. The Japanese suffered moderate damage to one cruiser. ||| Events ||| Battle of Savo Island ||| +0 Guadalcanal Campaign ||| Battle of the Coral Sea ||| Two attempts by the Japanese to continue their strategic initiative and offensively extend their outer defensive perimeter in the south and central Pacific to where they could threaten Australia and Hawaii or the US West Coast were thwarted at the naval battles of [[Battle of the Coral Sea|Coral Sea]] and [[Battle of Midway|Midway]] respectively. Coral Sea was a tactical stalemate, but a strategic Allied victory which became clear only much later. Midway was not only the Allies' first clear major victory against the Japanese, it significantly reduced the offensive capability of Japan's carrier forces, but did not change their offensive mindset for several crucial months in which they compounded mistakes by moving ahead with brash, even brazen decisions, such as the attempt to assault Port Moresby over the [[Kokoda Track campaign|Kokoda trail]]. Up to this point, the Allies had been on the defensive in the Pacific but these strategic victories provided them an opportunity to seize the initiative from Japan. ||| Background ||| Strategic considerations ||| +0 Guadalcanal Campaign ||| Invasion of Tulagi (May 1942) ||| The [[Japanese Imperial Navy|Imperial Japanese Navy]] (IJN) had [[Invasion of Tulagi (May 1942)|occupied Tulagi]] in May 1942 and had constructed a seaplane base nearby. Allied concern grew large when, in early July 1942, the IJN began constructing a large airfield at [[Lunga Point]] on nearby Guadalcanal—from such a base Japanese long-range bombers would threaten the sea lines of communication from the West Coast of the Americas to the populous East Coast of Australia. By August 1942, the Japanese had about 900 naval troops on Tulagi and nearby islands and 2,800 personnel (2,200 being [[Korean people|Korean]] forced laborers & trustees as well as Japanese construction specialists) on Guadalcanal. These bases would protect Japan's major base at [[Rabaul]], threaten Allied supply and communication lines and establish a staging area for a planned offensive against Fiji, [[New Caledonia]] and Samoa (''[[Operation FS]]''). The Japanese planned to deploy 45 [[fighter aircraft|fighters]] and 60 [[bomber]]s to Guadalcanal. In the overall strategy for 1942 these aircraft could provide air cover for Japanese naval forces advancing farther into the South Pacific. ||| Background ||| Strategic considerations ||| +0 Guadalcanal Campaign ||| Kokoda Track campaign ||| Two attempts by the Japanese to continue their strategic initiative and offensively extend their outer defensive perimeter in the south and central Pacific to where they could threaten Australia and Hawaii or the US West Coast were thwarted at the naval battles of [[Battle of the Coral Sea|Coral Sea]] and [[Battle of Midway|Midway]] respectively. Coral Sea was a tactical stalemate, but a strategic Allied victory which became clear only much later. Midway was not only the Allies' first clear major victory against the Japanese, it significantly reduced the offensive capability of Japan's carrier forces, but did not change their offensive mindset for several crucial months in which they compounded mistakes by moving ahead with brash, even brazen decisions, such as the attempt to assault Port Moresby over the [[Kokoda Track campaign|Kokoda trail]]. Up to this point, the Allies had been on the defensive in the Pacific but these strategic victories provided them an opportunity to seize the initiative from Japan. ||| Background ||| Strategic considerations ||| +0 Guadalcanal Campaign ||| Operation Ke ||| Surprised by the Allied offensive, the Japanese made several attempts between August and November to retake Henderson Field. Three major land battles, seven large naval battles (five nighttime surface actions and two carrier battles), and continual, almost daily aerial battles culminated in the decisive [[Naval Battle of Guadalcanal]] in early November, in which the last Japanese attempt to bombard Henderson Field from the sea and land with enough troops to retake it was defeated. In December, the Japanese abandoned their efforts to retake Guadalcanal and [[Operation Ke|evacuated their remaining forces]] by 7 February 1943 in the face of an offensive by the US Army's [[XIV Corps (United States)|XIV Corps]]. ||| ||| ||| +0 Guangzhou Uprising ||| Paris Commune ||| In the resulting purges, many young Communists were killed, and the [[Guangzhou]] Soviet became known as the '''Guangzhou Commune''' or '''[[Paris Commune]] of the East'''; it lasted only a short time at the cost of more than 5,000 Communists dead and an equal number missing. [[Ye Ting]], the military commander, was scapegoated, purged and blamed for the failure, despite the fact that the obvious disadvantage of the Communist force was the main cause of the defeat, as Ye Ting and other military commanders had correctly pointed out. Enraged by his unjustified treatment, Ye Ting left [[China]] and went into exile in [[Europe]], not returning until nearly a decade later. ||| ||| ||| +0 Gukurahundi ||| 1981 Entumbane Uprising ||| In February 1981 there was a [[1981 Entumbane Uprising|second uprising]], which spread to Glenville and also to Connemara in the Midlands. ZIPRA troops in other parts of [[Matabeleland]] headed for [[Bulawayo]] to join the battle, and the Zimbabwean National army units had to come in to stop the fighting. ||| Entumbane uprisings ||| ||| +0 Gulf War ||| 2003 invasion of Iraq ||| **''First Gulf War'': to distinguish it from the [[2003 invasion of Iraq]] and the subsequent [[Iraq War|war]]. ||| Etymology ||| ||| +0 Gumbinnen Operation ||| Eastern Front (World War II) ||| The '''Gumbinnen Operation''', also known as the '''Goldap Operation''' (or '''Goldap-Gumbinnen Operation''', {{lang-ru|Гумбиннен-Гольдапская наступательная операция}}), was a [[Soviet Union|Soviet]] offensive on the [[Eastern Front (World War II)|Eastern Front]] late in 1944, in which forces of the [[3rd Belorussian Front]] attempted to penetrate the borders of [[East Prussia]]. ||| ||| ||| +0 Gunboat War ||| Battle of Copenhagen (1801) ||| The '''Gunboat War''' (1807–1814) was the naval conflict between [[Denmark–Norway]] and the [[Royal Navy|British Navy]] during the [[Napoleonic Wars]]. The war's name is derived from the Danish tactic of employing small [[gunboat]]s against the conventional Royal Navy. In Scandinavia it is seen as the later stage of the [[English Wars (Scandinavia)|English Wars]], whose commencement is accounted as the [[Battle of Copenhagen (1801)|First Battle of Copenhagen]] in 1801. ||| ||| ||| +0 Gunboat War ||| War of the Sixth Coalition ||| As a result of the Swedish invasion of [[Holstein]] in December 1813 during the [[War of the Sixth Coalition]], Denmark-Norway was forced to seek peace, and the [[Treaty of Kiel]] ended the war on 15 January 1814. Denmark-Norway had to [[annexation|cede]] [[Heligoland]] to [[United Kingdom of Great Britain and Ireland|Britain]] and all of [[Norway in 1814|Norway]] to the [[King of Sweden]], while Denmark did get back the island of Anholt. ||| War ||| 1811-14 ||| +0 Hadži Prodan's Revolt ||| Second Serbian Uprising ||| '''Hadži-Prodan's Revolt''' ({{lang-sr|Хаџи-Проданова буна/Hadži-Prodanova buna}}) was an interphase between the [[First Serbian Uprising]] and Second Serbian Uprising of the [[Serbian Revolution]] against the [[Ottoman Empire]]. Despite the collapse of the First Uprising in 1813, the tensions in the [[Pashaluk of Belgrade]] nevertheless persisted. In mid–September 1814 a revolt was launched by veteran '''[[Hadži-Prodan]]''' (1760–1825) in the [[Požega, Serbia|Požega]] ''[[nahija]]''. He knew the Ottomans would arrest him, so he thought it would be the best to resist them; [[Miloš Obrenović]], another veteran, felt the time was not right for an uprising and did not provide assistance. The revolt soon failed and he fled to [[Austrian Empire|Austria]]. After the failure of the revolt, the Ottomans inflicted more persecution against the Serbs, such as high taxation and forced labour. In March 1815, Serbs had several meetings and decided upon a new revolt, the [[Second Serbian Uprising]]. ||| ||| ||| +0 Hama Rashid revolt ||| Anglo-Soviet invasion of Iran ||| '''Hama Rashid revolt''' refers to a tribal uprising in [[Pahlavi Iran]], during the [[Second World War]], following the [[Anglo-Soviet invasion of Iran]]. The tribal revolt erupted in the general atmosphere of anarchy throughout Iran and its main faction was led by Muhammed Rashid, lasting from late 1941 until April 1942 and then re-erupted in 1944, resulting in Rashid's defeat. ||| ||| ||| +0 Hawthorn Ridge Redoubt ||| Battle of Albert (1914) ||| '''Hawthorn Ridge Redoubt''' was a [[Germany|German]] front-line fortification, west of the village of [[Beaumont Hamel]] on the [[Somme River|Somme]]. Since the end of the [[Battle of Albert (1914)|Battle of Albert]] in 1914 the Germans had begun building fortifications along the Western Front, which were elaborated several times before the [[Battle of the Somme]] as French and British attacks became more formidable. During the [[Second Battle of Artois]] in early 1915, a supporting attack was conducted by the French [[11th Army Corps (France)|XI Corps]] from Hébuterne to Serre, which advanced the front line on a {{convert|1|mi|km|adj=on}} front and left a German salient the {{lang|de|''Heidenkopf''}} (the Quadrilateral), north of the Hawthorn Ridge Redoubt. Mine warfare had begun on the Somme front soon after September 1914 and was continued by the British when they took over the area in mid-1915. ||| ||| ||| +0 Hawthorn Ridge Redoubt ||| Battle of the Ancre ||| A second attack on 13 November, by the [[51st (Highland) Division]] during the [[Battle of the Ancre]] {{nowrap|(13–18 November)}} succeeded, after British engineers reopened the gallery dug before 1 July and reloaded the mine. ||| ||| ||| +0 Herman Cain presidential campaign, 2012 ||| Occupy Wall Street ||| In October 2011, Herman Cain described the [[Occupy Wall Street]] movement as 'un-American'. He further stated, 'I don't have facts to back this up, but I happen to believe that these demonstrations are planned and orchestrated to distract from the failed policies of the Obama administration. Don't blame Wall Street, don't blame the big banks, if you don't have a job and you're not rich, blame yourself.' ||| Political positions ||| Occupy Wall Street ||| +0 Highway of Death ||| 2003 invasion of Iraq ||| The '''Highway of Death''' ({{Lang-ar|طريق الموت}} ''ṭarīq al-mawt'') refers to a six-lane [[highway]] between Kuwait and Iraq, officially known as '''Highway 80'''. It runs from [[Kuwait City]] to the border town of [[Safwan]] in Iraq and then on to the Iraqi city of [[Basra]]. The road had been used by Iraqi armored divisions for the 1990 [[Invasion of Kuwait]]. The road was repaired after the [[Gulf War|Persian Gulf War]] and used by U.S. and British forces in the initial stages of the [[2003 invasion of Iraq]]. ||| ||| ||| +0 Highway of Death ||| Invasion of Kuwait ||| The '''Highway of Death''' ({{Lang-ar|طريق الموت}} ''ṭarīq al-mawt'') refers to a six-lane [[highway]] between Kuwait and Iraq, officially known as '''Highway 80'''. It runs from [[Kuwait City]] to the border town of [[Safwan]] in Iraq and then on to the Iraqi city of [[Basra]]. The road had been used by Iraqi armored divisions for the 1990 [[Invasion of Kuwait]]. The road was repaired after the [[Gulf War|Persian Gulf War]] and used by U.S. and British forces in the initial stages of the [[2003 invasion of Iraq]]. ||| ||| ||| +0 Hindenburg Line ||| Battle of Verdun ||| The '''Hindenburg Line''' ('''{{lang|de|''Siegfriedstellung''}}''') was a German defensive position of [[World War I]], built during the winter of 1916–1917 on the [[Western Front (World War I)|Western Front]], from Arras to Laffaux, near Soissons on the Aisne. In 1916, the [[Brusilov Offensive]] had inflicted huge losses on the Austro-Hungarian armies in Russia and forced the German eastern armies to take over more of the [[Eastern Front (World War I)|Eastern Front]]. The declaration of war by [[Romania during World War I|Romania]] had placed additional strain on the German war economy and army. The German offensive at the [[Battle of Verdun]] had been a costly failure and Anglo-French attacks on the Western Front had inflicted serious losses on the German army, during the French counter-offensive at Verdun and the joint offensive on the [[Battle of the Somme|Somme]]. Construction of the Hindenburg Line had begun in September 1916 and was intended to counter an anticipated increase in the power of Anglo-French attacks in 1917. ||| ||| ||| +0 Hindenburg Line ||| Battle of the Somme ||| The '''Hindenburg Line''' ('''{{lang|de|''Siegfriedstellung''}}''') was a German defensive position of [[World War I]], built during the winter of 1916–1917 on the [[Western Front (World War I)|Western Front]], from Arras to Laffaux, near Soissons on the Aisne. In 1916, the [[Brusilov Offensive]] had inflicted huge losses on the Austro-Hungarian armies in Russia and forced the German eastern armies to take over more of the [[Eastern Front (World War I)|Eastern Front]]. The declaration of war by [[Romania during World War I|Romania]] had placed additional strain on the German war economy and army. The German offensive at the [[Battle of Verdun]] had been a costly failure and Anglo-French attacks on the Western Front had inflicted serious losses on the German army, during the French counter-offensive at Verdun and the joint offensive on the [[Battle of the Somme|Somme]]. Construction of the Hindenburg Line had begun in September 1916 and was intended to counter an anticipated increase in the power of Anglo-French attacks in 1917. ||| ||| ||| +0 Hindenburg Line ||| Brusilov Offensive ||| The '''Hindenburg Line''' ('''{{lang|de|''Siegfriedstellung''}}''') was a German defensive position of [[World War I]], built during the winter of 1916–1917 on the [[Western Front (World War I)|Western Front]], from Arras to Laffaux, near Soissons on the Aisne. In 1916, the [[Brusilov Offensive]] had inflicted huge losses on the Austro-Hungarian armies in Russia and forced the German eastern armies to take over more of the [[Eastern Front (World War I)|Eastern Front]]. The declaration of war by [[Romania during World War I|Romania]] had placed additional strain on the German war economy and army. The German offensive at the [[Battle of Verdun]] had been a costly failure and Anglo-French attacks on the Western Front had inflicted serious losses on the German army, during the French counter-offensive at Verdun and the joint offensive on the [[Battle of the Somme|Somme]]. Construction of the Hindenburg Line had begun in September 1916 and was intended to counter an anticipated increase in the power of Anglo-French attacks in 1917. ||| ||| ||| +0 Hitachi Maru Incident ||| Battle of Port Arthur ||| At the start of the Russo-Japanese War, the bulk of the [[Russian Pacific Fleet]] was [[Battle of Port Arthur|blockaded]] within the confines of [[Lüshunkou District|Port Arthur]] by the [[Imperial Japanese Navy]]. However, the Russian subsidiary naval base at Vladivostok, although shelled by a Japanese squadron under the command of Vice Admiral [[Dewa Shigeto]] in March 1904, remained largely undamaged and unblockaded. Located at Vladivostok was a garrison force consisting of the light cruiser {{ship|Russian cruiser|Bogatyr||2}} and auxiliary cruiser {{ship|Russian cruiser|Lena||2}} and a stronger Vladivostok Independent Cruiser Squadron consisting of the [[armored cruiser]]s {{ship|Russian cruiser|Rossia|1896|2}}, {{ship|Russian cruiser|Rurik|1892|2}}, and {{ship|Russian cruiser|Gromoboi|1899|2}}, under the command of Rear Admiral [[Karl Jessen]]. ||| Background ||| ||| +0 Hohenzollern Redoubt (1916) ||| Battle of the Somme ||| The '''Hohenzollern Redoubt''' was a German defensive position on the Loos front, which was fought over by the British and German armies from the [[Battle of Loos]] {{nowrap|(25 September – 14 October 1915)}} to the beginning of the [[Battle of the Somme]] {{nowrap|(1 July – 18 November 1916)}}. Over the winter months, the 170th [[Tunnelling companies of the Royal Engineers|Tunnelling Company]] dug several galleries under the German lines, in the {{lang|de|''Hohenzollern''}} Redoubt area, which had changed hands several times since September 1915. In March 1916, the west side was held by the British and the east side was still occupied by the Germans, with the front near a new German trench known as the Chord. The Germans had an unobstructed view of the British positions, from a [[slag]] heap named {{lang|fr|''Fosse 8''}} and in previous mining operations, no man's land had become a crater field. The British front line was held by outposts, to reduce the number of troops vulnerable to mine explosions and the strain of knowing that the ground could erupt at any moment. ||| ||| ||| +0 Howard Dean presidential campaign, 2004 ||| Iraq War ||| With the guidance of his chief foreign policy advisor, [[Danny Sebright]], Dean made the [[Iraq War|war in Iraq]] a pillar of his campaign. Dean proposed to transfer sovereignty to 'credible and legitimate' [[Iraq]]i leaders and 'encourage the [[United Nations]] to take responsibility for this political transition.' Dean also expressed strong support for the [[War in Afghanistan (2001-present)|War in Afghanistan]], saying 'One priority should be strengthening our bonds with other countries, especially our historical allies in a world growing ever more [[interdependent]].' ||| Positions ||| Foreign policy ||| +0 Huaiyin–Huai'an Campaign ||| Second Sino-Japanese War ||| For the former [[Kuomintang|nationalist]] turned Japanese puppet regime forces, these [[Warlord era|warlords]] and their troops had no problem of following [[Chiang Kai-shek]]'s orders, and they were eager to prove themselves. These [[Warlord era|warlords]] and their troops were well aware that due to the collaboration with the Japanese invaders during the [[Second Sino-Japanese War]], they were well hated by the general population in [[China]], including those [[Kuomintang|nationalists]] who refused to surrender to the enemy and fought the enemy until the eventual victory. Therefore, in the impending demilitarization after [[World War II]], they were certainly be disarmed and discharged, which would probably be the best outcome and the power of these warlord would be reduced or even completely eliminated as a result. [[Chiang Kai-shek]]'s ordering them not surrendering to the communists and fighting off the communists was a savior for them because by carrying out such orders, these [[Warlord era|warlords]] and their troops could legitimize themselves and thus retain their power by fighting the communists who were targeted as rebels by [[Chiang Kai-shek]] and his [[Kuomintang|nationalist]] regime. ||| Nationalist Strategy ||| ||| +0 Huaiyin–Huai'an Campaign ||| World War II ||| The [[Huaiyin District, Huai'an|Huaiyin]]-[[Huai'an]] Campaign (两淮战役) was a campaign consisted of several battles fought between the [[Kuomintang|nationalists]] and the [[communist]]s during the [[Chinese Civil War]] in the immediate post-[[World War II]] era, and resulted in communists taking the city of [[Huaiyin District, Huai'an|Huaiyin]] and the city of [[Huai'an]]. Sometimes this campaign is separated into two by the communists as '''[[Huaiyin District, Huai'an|Huaiyin]] Campaign''' (淮阴战役) and '''[[Huai'an]] Campaign''' (淮安战役) respectively. ||| ||| ||| +0 Hudson Bay expedition ||| Battle of the Saintes ||| La Pérouse's duties during the 1781 campaign season did not provide him with any chances to exercise his secret orders, but the aftermath of the disastrous French loss in the April 1782 [[Battle of the Saintes]] presented him with the opportunity. ||| Background ||| ||| +0 Hudson Bay expedition ||| Naval operations in the American Revolutionary War ||| The '''Hudson Bay expedition''' of [[Jean-François de Galaup, comte de La Pérouse]] was a series of military raids on the lucrative [[fur trading]] posts and [[fortifications]] of the [[Hudson's Bay Company]] on the shores of [[Hudson Bay]] by a squadron of the [[French Navy|French Royal Navy]]. Setting sail from [[Cap-Français]] in 1782, the expedition was part of a [[Naval operations in the American Revolutionary War|global naval war]] between France and [[Kingdom of Great Britain|Great Britain]] during the [[American Revolutionary War]]. ||| ||| ||| +0 Huesca Offensive ||| Biscay Campaign ||| In April 1937, the Nationalists started an offensive against the Republican-held, [[Biscay Campaign|Biscay Province]], and, by the end of May, the Navarrese troops had reached the eastern side of Bilbao's defenses. The Republican government then decided to launch two diversionary offensives on the Aragon and [[Segovia Offensive|Madrid]] fronts in order to divert Nationalist troops. ||| Background. ||| ||| +0 Hundred Days ||| Battle of Laon ||| Following its victory at Leipzig, the Coalition vowed to press on to Paris and depose Napoleon. In the last week of February 1814, Prussian [[Field Marshal]] [[Gebhard Leberecht von Blücher|Blücher]] advanced on Paris. After multiple attacks, maneuvering, and reinforcements on both sides,{{sfn|Uffindell|2003|pp=198, 200}} Blücher won the [[Battle of Laon]] in early March 1814; this victory prevented the Allied army from being pushed north out of France. The [[Battle of Reims (1814)|Battle of Reims]] went to Napoleon, but this victory was followed by successive defeats from [[1814 campaign in France|increasingly overwhelming odds]]. Coalition forces entered Paris after the [[Battle of Montmartre]] on 30 March 1814. ||| Background ||| Napoleon's rise and fall ||| +0 Hundred Days ||| Battle of Reims (1814) ||| Following its victory at Leipzig, the Coalition vowed to press on to Paris and depose Napoleon. In the last week of February 1814, Prussian [[Field Marshal]] [[Gebhard Leberecht von Blücher|Blücher]] advanced on Paris. After multiple attacks, maneuvering, and reinforcements on both sides,{{sfn|Uffindell|2003|pp=198, 200}} Blücher won the [[Battle of Laon]] in early March 1814; this victory prevented the Allied army from being pushed north out of France. The [[Battle of Reims (1814)|Battle of Reims]] went to Napoleon, but this victory was followed by successive defeats from [[1814 campaign in France|increasingly overwhelming odds]]. Coalition forces entered Paris after the [[Battle of Montmartre]] on 30 March 1814. ||| Background ||| Napoleon's rise and fall ||| +0 Hundred Days Offensive ||| Battle of the Sambre (1918) ||| There were many casualties in the Allied and German armies. Rearguard actions were fought during the [[Pursuit to the Selle]] (9 October), [[Battle of Courtrai (1918)|Battle of Courtrai]] (14 October), Battle of [[Mont-d'Origny]] (15 October), [[Battle of the Selle]] (17 October), '''Battle of Lys and Escaut''' ({{lang-fr|Bataille de la Lys et de l'Escaut|links=no}}) (20 October) (including the subsidiary '''Battle of the Lys''' and '''Battle of the Escaut'''), '''Battle of the Serre''' (20 October), '''Battle of Valenciennes''' (1 November) and the [[Battle of the Sambre (1918)|Battle of the Sambre]] (including the '''Second Battle of Guise''' (4 November) and the '''Battle of Thiérache''' (4 November), with fighting continuing until the last minutes before the [[Armistice with Germany (Compiègne)|Armistice]] took effect at 11:00 on 11 November 1918. One of the last soldiers to die was Canadian Private [[George Lawrence Price]], two minutes before the armistice took effect. ||| Beyond the Hindenburg Line ||| ||| +0 Hundred Days Offensive ||| Battle of the Somme ||| A number of proposals were considered and finally Foch agreed on a proposal by Field Marshal [[Douglas Haig, 1st Earl Haig|Douglas Haig]], the commander of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF), to strike on the [[River Somme]], east of [[Amiens]] and south-west of the 1916 battlefield of the [[Battle of the Somme]], with the intention of forcing the Germans away from the vital Amiens–Paris railway. {{rp |472}} The Somme was chosen as a suitable site for the offensive for several reasons. As in 1916, it marked the boundary between the BEF and the French armies, in this case defined by the Amiens–Roye road, allowing the two armies to cooperate. Also the [[Picardy]] countryside provided a good surface for [[tank]]s, which was not the case in [[Flanders]]. Finally, the German defences, manned by the German [[2nd Army (German Empire)|2nd Army]] (General [[Georg von der Marwitz]]), were relatively weak, having been subjected to continual raiding by the Australians in a process termed [[peaceful penetration]]. ||| Background ||| ||| +0 Hundred Days Offensive ||| Fifth Battle of Ypres ||| The first attack of the Grand Offensive was launched on 26 September by Frbench and the AEF in the [[Meuse-Argonne Offensive]] (this offensive includes the '''Battle of Somme-Py''' (26 September), the Battle of '''Saint-Thierry''' (30 September), the '''Battle of Montfaucon''' (14–17 October) and '''the Battle of Chesne''' of 1 November). The offensive involved attacking over difficult terrain, resulting in the Hindenburg Line not being broken until 17 October. Two days later, the Army Group under [[Albert I of Belgium]] (the Belgian Army, the British [[Second Army (United Kingdom)|Second Army]] (General [[Herbert Plumer]]) and the [[Sixth Army (France)|French Sixth Army]] (General Degoutte), attacked near [[Ypres]] in Flanders (the [[Fifth Battle of Ypres]]). Both attacks made good progress initially but were then slowed by supply difficulties. ||| Battles ||| Battles of the Hindenburg Line ||| +0 Hundred Days Offensive ||| Second Battle of the Marne ||| The German [[Spring Offensive]]s on the [[Western Front (World War I)|Western Front]], which began on 21 March 1918 with Operation Michael, had petered out by July. The Germans had advanced to the [[Marne (river)|Marne]] river but failed to achieve a decisive breakthrough. When [[Operation Marne-Rheims]] ended in July, the Allied supreme commander, the French [[Ferdinand Foch]], ordered a counter-offensive which became the [[Second Battle of the Marne]]. The Germans, recognising their untenable position, withdrew from the Marne towards the north. For this victory, Foch was granted the title [[Marshal of France]]. ||| Background ||| ||| +0 Hundred Days' War ||| Ehden massacre ||| However, the LF attack on the pro-Syrian [[Marada Brigade]] militia of the [[Frangieh]] Clan that summer, which culminated in the infamous [[Ehden massacre]], provoked another round of fighting in June–July. President Sarkis threatened to resign in protest over the Syrian bombardment of East Beirut, but later withdrew his resignation when the shelling stopped. ||| Consequences ||| ||| +0 Hundred Years' War ||| Battle of Patay ||| Through his mother, [[Isabella of France]], [[Edward III of England]] was the grandson of [[Philip IV of France]] and nephew of [[Charles IV of France]], the last king of the senior line of the [[House of Capet]]. In 1316, [[Salic law|a principle]] was established denying women succession to the French throne. When Charles IV died in 1328, Isabella, unable to claim the French throne for herself, claimed it for her son. The French rejected the claim, maintaining that Isabella could not transmit a right that she did not possess. For about nine years (1328–1337), the English had accepted the Valois succession to the French throne. But the interference of the French king, Philip VI, in Edward III's war against Scotland led Edward III to reassert his claim to the French throne. Several overwhelming English victories in the war—especially at [[Battle of Crécy|Crecy]], [[Battle of Poitiers|Poitiers]], and [[Battle of Agincourt|Agincourt]]—raised the prospects of an ultimate English triumph. However, the greater resources of the French monarchy precluded a complete conquest. Starting in 1429, decisive French victories at [[Battle of Patay|Patay]], [[Battle of Formigny|Formigny]], and [[Battle of Castillon|Castillon]] concluded the war in favor of France, with England permanently losing most of its major possessions on the continent. ||| ||| ||| +0 Hundred Years' War (1415–53) ||| Battle of Patay ||| Inspired by Joan, the French took several English strong points on the Loire and then broke through English archers at [[Battle of Patay|Patay]] commanded by [[John Fastolf]] and [[John Talbot, 1st Earl of Shrewsbury]]. This victory helped Joan to convince the Dauphin to march to [[Reims]] for his coronation as Charles VII. Although a number of other cities were opened to Charles in the march to Reims and after, Joan never managed to capture Paris, equally well defended as Orleans. She was captured during the siege of Compiègne by English allies, the Burgundian faction. Joan was transferred to the English, tried by an ecclesiastic court headed by the pro-English Pierre Cauchon, and executed. ||| Joan of Arc's appearance, coronation of Charles VII ||| ||| +0 Huon Peninsula campaign ||| Battle of Driniumor River ||| The final stage of the campaign saw the Japanese resistance finally break. A swift advance by the Australians along the northern coast of the peninsula followed and in January 1944 they [[Battle of Sio|captured Sio]]. At the same time, the Americans [[Landing at Saidor|landed at Saidor]]. After this, mopping up operations were undertaken by Allied forces around Sio until March. A lull period then followed in northern New Guinea until July when US forces clashed with the Japanese around the [[Battle of Driniumor River|Driniumor River]]. This was followed by further fighting in November 1944 when the Australians opened a fresh campaign in [[Aitape–Wewak campaign|Aitape–Wewak]]. ||| ||| ||| +0 Huon Peninsula campaign ||| Battle of Finschhafen ||| Following the [[Battle of Scarlet Beach|landing at Scarlet Beach]], the Allies set about moving south to secure [[Battle of Finschhafen|Finschhafen]], which saw fighting around [[Battle of Jivevaneng|Jivevaneng]] also. In mid-October, the Japanese launched a counterattack against the Australian beachhead around Scarlet Beach, which lasted for about a week and resulted in a small contraction of the Australian lines and a splitting of their force before it was defeated. After this, the Australians regained the initiative and began to pursue the Japanese who withdrew inland towards the high ground around [[Battle of Sattelberg|Sattelberg]]. Amidst heavy fighting and a second failed Japanese counterattack, Sattelberg was secured in late November and the Australians began an area advance to the north to secure a line between [[Battle of Wareo|Wareo and Gusika]]. This was completed by early December, and was followed by an advance by Australian forces along the coast through Lakona to [[Battle of Fortification Point|Fortification Point]], overcoming strong Japanese forces fighting delaying actions. ||| ||| ||| +0 Huon Peninsula campaign ||| Battle of Wau ||| By 1943, Japanese expansionary moves in the [[South West Pacific Area]] (SWPA) had ceased. Their advance in Papua New Guinea had been halted the previous year by the blocking action that Australian forces had fought along the [[Kokoda Track Campaign|Kokoda Track]]. Subsequent defeats at [[Battle of Milne Bay|Milne Bay]], [[Battle of Buna–Gona|Buna–Gona]], [[Battle of Wau|Wau]] and on [[Guadalcanal Campaign|Guadalcanal]] had forced the Japanese on to the back foot. As a result of these victories, the Allies were able to seize the initiative in the region in mid-1943 and began making plans to continue to push the Japanese back in New Guinea. ||| Background ||| Military situation ||| +0 Huon Peninsula campaign ||| Gallipoli Campaign ||| After a short period of preparation, the 20th Brigade's landing took place on 22 September 1943. It was the first opposed amphibious landing that Australian forces had made since [[Gallipoli Campaign|Gallipoli]]. ||| Campaign ||| Finschhafen ||| +0 Huon Peninsula campaign ||| Guadalcanal Campaign ||| By 1943, Japanese expansionary moves in the [[South West Pacific Area]] (SWPA) had ceased. Their advance in Papua New Guinea had been halted the previous year by the blocking action that Australian forces had fought along the [[Kokoda Track Campaign|Kokoda Track]]. Subsequent defeats at [[Battle of Milne Bay|Milne Bay]], [[Battle of Buna–Gona|Buna–Gona]], [[Battle of Wau|Wau]] and on [[Guadalcanal Campaign|Guadalcanal]] had forced the Japanese on to the back foot. As a result of these victories, the Allies were able to seize the initiative in the region in mid-1943 and began making plans to continue to push the Japanese back in New Guinea. ||| Background ||| Military situation ||| +0 Huon Peninsula campaign ||| Landing at Nadzab ||| Following MacArthur's directive to secure the airfields at Lae and Finschhafen, the Commander-in-Chief Allied Forces, South West Pacific Area, General [[Thomas Blamey]], an Australian, ordered the capture of the Huon Peninsula. The 9th Division under Major General [[George Wootten]] was tasked with the job. The initial focus was upon securing Lae. The Allies formulated a plan to achieve this that would see the 9th Division conduct an amphibious landing east of Lae, while the [[7th Division (Australia)|7th Division]] would move by [[Landing at Nadzab|air to Nadzab]] in the Markham Valley, which had been secured by parachute troops from the [[503rd Infantry Regiment (United States)|US 503rd Parachute Infantry Regiment]] and the [[2/4th Field Regiment (Australia)|2/4th Field Regiment]]. From Nadzab, the 7th Division would advance on Lae from the south to support the 9th Division's drive towards Lae. ||| Prelude ||| ||| +0 Huon Peninsula campaign ||| New Britain campaign ||| At the start of the campaign, the Australian Army had been the only ground force engaging in combat with the Japanese in the region. By the end, though, the involvement of US forces in the region had increased as the US Army took over responsibility for the main Allied effort from the Australians. and it was not be until late 1944 and early 1945, when several campaigns were launched in [[Bougainville campaign|Bougainville]], [[New Britain campaign|New Britain]], [[Aitape–Wewak campaign|Aitape–Wewak]] and Borneo, that it undertook major campaigns against the Japanese again. ||| Aftermath ||| ||| +0 Impact of the Arab Spring ||| Egyptian Revolution of 2011 ||| Mass demonstrations have occurred against Mexican President [[Felipe Calderón]], calling for an end to the [[Mexican Drug War]], citing inspiration from the [[Egyptian Revolution of 2011]]. ||| The Americas ||| Mexico ||| +0 In Amenas hostage crisis ||| Operation Serval ||| The militants demanded an end to [[Operation Serval|French military operations]] against Islamists in [[Northern Mali conflict (2012–present)|northern Mali]], in return for the safety of the hostages. A spokesman claiming to represent the 'Masked Brigade' (or al-Mulathameen Brigade) said the hostage seizure was a response to Algeria's opening of its airspace to French warplanes that attacked Mali's militants five days prior. They also demanded safe passage to Northern Mali and ransom for their expat hostages. ||| Demands ||| ||| +0 Incident at Petrich ||| Second Balkan War ||| The relations between Greece and [[Kingdom of Bulgaria|Bulgaria]] had been strained since the start of the 20th century, with their mutual rivalry over possession of [[Macedonia (region)|Macedonia]] and later [[Western Thrace]]. This had led to years of guerrilla warfare between rival armed groups in 1904–08 (cf. [[Macedonian Struggle]]), and a few years later in the open conflict between the two states in the [[Second Balkan War]] (1913) and again in the First World War ([[Macedonian Front]], 1916–18). The outcome of these conflicts was that half of the wider region of Macedonia came under Greek control after the [[Balkan Wars]], followed by Western Thrace after the First World War, through the [[Treaty of Neuilly]]. ||| Background ||| ||| +0 Indian Ocean raid ||| Battle of the Java Sea ||| Following the destruction of the [[American-British-Dutch-Australian Command]] forces in [[Battle of the Java Sea|the battles]] around [[Java (island)|Java]] in February and March, the Japanese sortied into the Indian Ocean to destroy British seapower there and support the [[Japanese conquest of Burma|invasion of Burma]]. The Japanese force, commanded by Admiral [[Chūichi Nagumo]], had six carriers: {{Ship|Japanese aircraft carrier|Akagi||2}}, {{Ship|Japanese aircraft carrier|Ryūjō||2}}, {{Ship|Japanese aircraft carrier|Hiryū||2}}, {{Ship|Japanese aircraft carrier|Sōryū||2}}, {{Ship|Japanese aircraft carrier|Shōkaku||2}}, and {{Ship|Japanese aircraft carrier|Zuikaku||2}}.{{Citation needed|date=June 2011}} This powerful force left [[Staring Bay]], [[Sulawesi|Celebes]] on 26 March 1942. ||| Raid ||| First moves ||| +0 Indian Ocean raid ||| Burma Campaign ||| The [[fall of Singapore]] on 15 February 1942 broke the United Kingdom's eastern defensive perimeter of the [[Bay of Bengal]]; and [[Japanese occupation of the Andaman Islands]] on 23 March 1942 gave Japan control of the [[Andaman Sea]] enabling ships to resupply Japanese troops in the [[Burma Campaign]] for control of [[India]]. Both German and British authorities anticipated Japanese capture of Ceylon to solidify control of the Bay of Bengal and disrupt British resupply for defence of India, [[Australia]], and perhaps the [[Middle East]]. Ceylon was hastily garrisoned by Australian troops returning from North Africa; and {{HMS|Indomitable|R92|6}} was relieved of naval duties to serve as a high-speed aircraft ferry shuttling available planes to Ceylon. ||| Prelude ||| ||| +0 Indian Rebellion of 1857 ||| Battle of Chillianwala ||| Sikh support for the British resulted from grievances surrounding Sepoys' perceived conduct during and after the [[Anglo-Sikh Wars]]. Firstly, many Sikhs resented that Hindustanis in service of the Sikh state had been foremost in urging the wars, which lost them their independence. Sikh soldiers also recalled that the bloodiest battles of the war, [[Battle of Chillianwala|Chillianwala]] and [[Battle of Ferozeshah|Ferozeshah]], were won by British troops, and they believed that the Hindustani sepoys had refused to meet them in battle. These feelings were compounded when Hindustani Sepoys were assigned a very visible role as garrison troops in Punjab and awarded profit-making civil posts in Punjab. ||| Support and opposition ||| ||| +0 Indian integration of Hyderabad ||| Burma Campaign ||| The Assault force from the East was meanwhile slowed down by an anti-tank ditch and later came under heavy fire from hillside positions of the [[1st Duke of York's Own Lancers (Skinner's Horse)|1st Lancers]] and [[5th Mahratta Light Infantry|5th Infantry]] 6 km from Suryapet. The positions were assaulted by the 2/5 Gurkha – veterans of the [[Burma Campaign]] – and was neutralised with the Hyderabadis taking severe casualties. ||| Commencement of hostilities ||| Day 2, 14 September ||| +0 Indo-Pakistani War of 1965 ||| Indo-Pakistani War of 1971 ||| The ceasefire remained in effect until the start of the [[Indo-Pakistani War of 1971]]. ||| Ceasefire ||| ||| +0 Indo-Pakistani War of 1971 ||| East Pakistan Air Operations, 1971 ||| This marked the official start of the Indo-Pakistani War of 1971. Prime Minister Indira Gandhi ordered the immediate mobilisation of troops and launched a full-scale invasion. This involved Indian forces in a massive [[East Pakistan Air Operations, 1971|coordinated air]], sea, and land assault. The main Indian objective on the Eastern front was to capture Dacca and on the western front was to prevent Pakistan from entering Indian soil. There was no Indian intention of conducting any major offensive into West Pakistan. ||| India's official engagement with Pakistan ||| Objective ||| +0 Indo-Pakistani War of 1971 ||| Sino-Indian War ||| As a long-standing ally of Pakistan, the People's Republic of China reacted with alarm to the evolving situation in East Pakistan and the prospect of India invading West Pakistan and Pakistani-controlled [[Kashmir]]. Believing that just such an Indian attack was imminent, Nixon encouraged China to mobilise its armed forces along its border with India to discourage it. The Chinese did not, however, respond to this encouragement, because unlike the 1962 [[Sino-Indian War]] when India was caught entirely unaware, this time the Indian Army was prepared and had deployed eight mountain divisions to the Sino-Indian border to guard against such an eventuality. China instead threw its weight behind demands for an immediate ceasefire. ||| Foreign reaction and involvement ||| China ||| +0 Indonesian occupation of East Timor ||| International Force for East Timor ||| The Australian led [[International Force for East Timor]] restored order and following the departure of Indonesian forces from East Timor, the [[United Nations Transitional Administration in East Timor]] administered the territory for two years, establishing a [[Serious Crimes Unit]] to investigate and prosecute crimes committed during 1999. ||| ||| ||| +0 Indonesian occupation of East Timor ||| Operation Frequent Wind ||| In 1975, the United States was completing a [[Operation Frequent Wind|retreat]] from [[Vietnam]]. A staunchly anti-communist Indonesia was considered by the United States to be an essential counterweight, and friendly relations with the Indonesian government were considered more important than a decolonisation process in East Timor. ||| International response ||| United States ||| +0 Insurgency in Jammu and Kashmir ||| Indo-Pakistani War of 1947 ||| After independence from colonial rule India and Pakistan [[Indo-Pakistani War of 1947|fought a war]] over the princely state of [[Kashmir]]. At the end of the war India controlled the most valuable parts of Kashmir. ||| History of the insurgency ||| 1947–1987 ||| +0 Insurgency in Northeast India ||| Insurgency in Jammu and Kashmir ||| *[[Insurgency in Jammu and Kashmir]] ||| See also ||| ||| +0 Insurgency in the Maghreb (2002–present) ||| 11 April 2007 Algiers bombings ||| *April 11: a [[11 April 2007 Algiers bombings|suicide attack at the entrance of the Ministry of Interior]] killed more than 24 people and wounded 300. ||| Timeline and order of events ||| 2007 ||| +0 Insurgency in the Maghreb (2002–present) ||| 2003 Casablanca bombings ||| *May 16, 2003, [[2003 Casablanca bombings]] killed 45 including 12 suicide-bombers. ||| Timeline and order of events ||| 2003 ||| +0 Insurgency in the Maghreb (2002–present) ||| 2007 Casablanca bombings ||| *Between March 11 and April 14: the [[2007 Casablanca bombings]] killed 8. ||| Timeline and order of events ||| 2007 ||| +0 Insurgency in the Maghreb (2002–present) ||| 2008 Issers bombing ||| *August 19: a suicide car-bomber [[2008 Issers bombing|attacked a police academy]] in Les Issers as recruits lined up in front of the building, 43 people were killed, only one of them a policeman. This attack was officially condemned by the [[United Nations Security Council]]. ||| Timeline and order of events ||| 2008 ||| +0 Insurgency in the Maghreb (2002–present) ||| Algerian Civil War ||| '''Insurgency in the [[Maghreb]]''' refers to military activity in [[Algeria]], [[Mauritania]] and [[Morocco]], waged since 2002 by the [[Islamist]] militia, [[Salafist Group for Preaching and Combat]] (GSPC). The GSPC allied itself with [[al-Qaeda in the Islamic Maghreb]] against the [[Algeria|Algerian government]]. The conflict is an aftermath of the [[Algerian Civil War]] (ended in 2002), and has since spread to other neighboring countries. ||| ||| ||| +0 Insurgency in the Maghreb (2002–present) ||| Northern Mali conflict ||| *January 16: The start of the [[Northern Mali conflict]]. ||| Timeline and order of events ||| 2012 ||| +0 Insurgency in the North Caucasus ||| 2005 Nalchik raid ||| In October 2005, several score of the militants launched [[2005 Nalchik raid|a raid on the capital of the republic]], [[Nalchik]], which left 142 people dead. The guerrillas have also carried out numerous assassinations of government officials and law enforcement officers. ||| Background ||| Kabardino-Balkaria ||| +0 Inter-Services Intelligence activities in India ||| 2006 Mumbai train bombings ||| ISI was alleged of planning the [[2006 Mumbai train bombings]] and the Indian government said that the ISI, LeT and [[Students Islamic Movement of India|SIMI]] planned the attacks. ||| Alleged involvement in terrorist attacks ||| Mumbai train blasts ||| +0 Inter-Services Intelligence activities in India ||| 2008 Mumbai attacks ||| [[Zabiuddin Ansari]], a Lashkar-e-Taiba militant accused for his involvement in the [[2008 Mumbai attacks]], said that ISI and [[Pakistani army]] officials were involved in planning the attacks and had attended the meetings. ||| Alleged involvement in terrorist attacks ||| 26/11 attacks ||| +0 Inter-Services Intelligence activities in India ||| Indo-Pakistani War of 1947 ||| The ISI was created after the [[Indo-Pakistani War of 1947]], due to the [[Military Intelligence of Pakistan]]'s (MI) weak performance. ||| History ||| ||| +0 Internal conflict in Azawad ||| Battle of Khalil ||| At the start of 2013, the MNLA retook its key town of Kidal after it was abandoned by French air-strikes. The Azawad flag was raised in every town they took each one without a fight. Islamists guerrillas operating the [[Adrar des Ifoghas]] mountains launched an offensive of their own terrorizing MNLA dominated towns with suicide bombings. The first hit the town of [[Battle of Khalil|Khalil]] on 22 February, after an explosion ripped at an MNLA checkpoint killing three members. The second in that week killed seven members at another checkpoint in [[Kidal]]. Fighting resumed the next month leading to the [[Battle of In Arab]]. Five members were killed in a day long battle with an elite terrorist brigade led by Mokhtar belMokhtar, the Signatories of Blood. In June 2013, the MNLA agreed on a cease-fire with the Malian army allowing them to have authority over MNLA occupied towns, granting autonomy for Tuareg civilians, and dis-arming the MNLA with an exception for self-defense purposes into a political organization. The MNLA also agreed upon taking back its claim for Independence instead for greater autonomy. The peace-deal lasted over three months before both sides claimed it was breached. In November, the Islamists suspected murder of members of a Tuareg Malian army general's family led to an ethnic conflict between MNLA [[Tuareg]] and Islamists dominated [[Fulani]]. The situation escalated in February 2014, when 30-35 Tuareg merchants were massacred at the hands of Fulani Islamists. Reprisal attacks targeting Fulani Islamists resumed into an armed confrontation that killed a MNLA member. ||| Prelude - Conflict ||| ||| +0 Internment of Japanese Americans ||| Attack on Pearl Harbor ||| On September 27, 1992, the [[Civil Liberties Act Amendments of 1992]], appropriating an additional $400 million to ensure all remaining internees received their $20,000 redress payments, was signed into law by President [[George H. W. Bush]]. He issued another formal apology from the U.S. government on December 7, 1991, on the 50th-Anniversary of the [[Attack on Pearl Harbor|Pearl Harbor Attack]], saying: ||| Reparations and redress ||| ||| +0 Invasion of Algiers in 1830 ||| Second Barbary War ||| During the [[Napoleonic Wars]], the [[Regency of Algiers]] had greatly benefited from trade in the Mediterranean, and of the massive imports of food by France, largely bought on credit. The [[Bourbon Restoration]] limited trading, while the Mediterranean was completely controlled by the [[Royal Navy|British Royal Navy]], and the rebuilding [[French Navy]]. The [[dey]] attempted to remedy the decrease of his revenues by increasing taxes, which was resisted by peasants, increasing instability in the country and leading to widespread [[piracy]] against shipping from Europe and the young [[United States of America]]. This in turn led to the [[First Barbary War]] and the [[Second Barbary War]], which culminated in August 1816 when [[Lord Exmouth]] executed a naval [[Bombardment of Algiers (1816)|bombardment of Algiers]]. ||| Background ||| ||| +0 Invasion of Canada (1775) ||| Battle of Quebec (1775) ||| The '''Invasion of Canada''' in 1775 was the first major military initiative by the newly formed [[Continental Army]] during the [[American Revolutionary War]]. The objective of the campaign was to gain military control of the British [[Province of Quebec (1763-1791)|Province of Quebec]] (modern day Canada), and convince the French-speaking [[Canadien]]s to join the revolution on the side of the [[Thirteen Colonies]]. One expedition left [[Fort Ticonderoga]] under [[Richard Montgomery]], besieged and captured [[Fort Saint-Jean (Quebec)|Fort St. Johns]], and very nearly captured British General [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]] when taking [[Montreal]]. The other expedition left [[Cambridge, Massachusetts]] under [[Benedict Arnold]], and traveled with great difficulty through the wilderness of [[Maine]] to [[Quebec City]]. The two forces joined there, but were defeated at the [[Battle of Quebec (1775)|Battle of Quebec]] in December 1775. ||| ||| ||| +0 Invasion of Canada (1775) ||| War of 1812 ||| In the [[War of 1812]] the Americans launched another invasion of British North America, and again expected the local populace to support them. That failed invasion is now regarded as a significant event in Canadian history; it has even been claimed as the birth of modern [[Canadian identity]]. ||| Aftermath ||| ||| +0 Invasion of Dominica ||| Battles of Saratoga ||| Following the pivotal [[Battles of Saratoga]] in October 1777 and the ensuing surrender of [[Kingdom of Great Britain|British]] General [[John Burgoyne]]'s army, [[France]] decided to openly enter the [[American War of Independence]] as an ally of the young [[United States of America]]. France's objectives in entering the war included the recovery of territories that had been lost to Britain in the [[Seven Years' War]]. One key territory that was of particular interest was the [[West Indies]] island of [[Dominica]], which lay between French-held [[Martinique]] and [[Guadeloupe]], and [[Invasion of Dominica (1761)|had been captured]] by Britain in 1761. Recapture of the island would improve communication among the islands, and deny the use of Dominican ports to [[privateers]] who preyed on French shipping. ||| Background ||| ||| +0 Invasion of Guadeloupe (1815) ||| Peninsular War ||| Guadeloupe had been captured by the British twice before, most recently in 1810, but had been returned to the French following Napoleon's first abdication in April 1814. [[Louis XVIII of France|Louis XVIII]] had appointed Admiral [[Charles-Alexandre Léon Durand Linois]] as Governor, but when news of Napoleon's return from exile in [[Elba]] in February 1815 eventually reached the island, Linois vacillated, but finally declared his support for Napoleon on 18 June 1815. This also happened to be the same day that he was defeated at Waterloo. The commander of British forces in the West Indies, Lieutenant-General [[James Leith (British Army officer)|Sir James Leith]], a veteran of the [[Peninsular War]], promptly set out with an expeditionary force, with naval support under the command of Rear-Admiral Sir [[Philip Charles Durham]]. The British forces landed on 8 August, and within 48 hours secured a complete [[Capitulation (surrender)|capitulation]], and eventually handed the island back to the representative of the French King. ||| The battle ||| ||| +0 Invasion of Iceland ||| Battle of Jutland ||| Colonel [[Robert Sturges]] was assigned to command the force. Aged 49, he was a highly regarded veteran of [[World War I]], having fought in the [[Battle of Gallipoli]] and the [[Battle of Jutland]]. Excluding those, the invasion force consisted of 746 troops. ||| Operation Fork ||| Force Sturges ||| +0 Invasion of Kuwait ||| 2003 invasion of Iraq ||| In December 2002, Saddam Hussein apologized for the invasion shortly before being deposed in the [[2003 invasion of Iraq]]. A longtime ally of Saddam Hussein, in 1990 Yemen's president, [[Ali Abdullah Saleh]] backed Saddam Hussein's invasion of Kuwait. After Iraq lost the Gulf War, Yemenis were deported en masse from Kuwait by the restored government. ||| Aftermath ||| Post-Gulf War ||| +0 Invasion of Kuwait ||| Iranian Revolution ||| When the [[Iran–Iraq War]] broke out, [[Kuwait]] initially stayed neutral and also tried mediating between Iran and Iraq. In 1982, [[Khomeini]] openly attempted exporting the [[Iranian Revolution]] to Kuwait.{{citation needed|date=October 2015}} As a result, Kuwait supported Iraq in order to prevent Iranian hegemony in Kuwait. In 1982–1983, Kuwait began sending significant financial aid to Iraq. Kuwait's large-scale economic assistance to Iraq often triggered hostile Iranian actions against Kuwait. Iran repeatedly targeted Kuwaiti oil tankers in 1984 and fired weapons at Kuwaiti security personnel stationed on [[Bubiyan]] island in 1988. However, after the war ended, the friendly relations between the two neighbouring [[Arab]] countries turned sour for several economic and diplomatic reasons that culminated in an Iraqi invasion of Kuwait. ||| Dispute over the financial debt ||| ||| +0 Invasion of Martinique (1809) ||| Haitian Revolution ||| With the bulk of the French Navy confined to port, the British were able to strike directly at French colonies, although their reach was limited by the significant resources required in blockading the French coast and so the size and quality of operations varied widely. In 1804, [[Haiti]] fell to an [[Haitian Revolution|nationalist uprising]] supported by the Royal Navy, and in 1806 British forces secured most of the northern coast of South America from its Dutch owners. In 1807 the [[Danish West Indies]] were invaded and in 1808 Spain changed sides and allied with Britain, while [[Cayenne]] fell to an improvised force under Captain [[James Lucas Yeo]] in January 1809. ||| Background ||| ||| +0 Invasion of Minorca (1781) ||| Great Siege of Gibraltar ||| Following his success, the Duc de Crillon was awarded the title 'duque de Mahón' and put in charge of the attempt to recapture Gibraltar, where he embarked upon a bold plan to storm the citadel – for the result, see [[Great Siege of Gibraltar]]. Lieutenant General James Murray was court-martialled in November 1782, on charges brought by Sir William Draper. Murray was found guilty of only two offences (the more serious of which was the issuing of an order derogatory to his deputy – the spark which had led to Draper's suspension in January). In January 1783 he was sentenced to a reprimand, and shortly afterwards, by the direct intervention of [[King George III]], he received an apology from Draper for certain words spoken out of court, which might otherwise have led to a duel. ||| Aftermath ||| ||| +0 Invasion of Normandy ||| Battle of Tinchebray ||| The [[Normandy landings]] were the first successful opposed landings across the English Channel in [[Battle of Tinchebray|over eight centuries]]. They were costly in terms of men, but the defeat inflicted on the Germans was one of the largest of the war. Strategically, the campaign led to the loss of the German position in most of France and the secure establishment of a new major front. In larger context the Normandy landings helped the [[Soviet Union|Soviets]] on the [[Eastern Front (World War II)|Eastern Front]], who were facing the bulk of the German forces and, to a certain extent, contributed to the shortening of the conflict there. ||| Assessment of the battle ||| ||| +0 Invasion of Normandy ||| Eastern Front (World War II) ||| The [[Normandy landings]] were the first successful opposed landings across the English Channel in [[Battle of Tinchebray|over eight centuries]]. They were costly in terms of men, but the defeat inflicted on the Germans was one of the largest of the war. Strategically, the campaign led to the loss of the German position in most of France and the secure establishment of a new major front. In larger context the Normandy landings helped the [[Soviet Union|Soviets]] on the [[Eastern Front (World War II)|Eastern Front]], who were facing the bulk of the German forces and, to a certain extent, contributed to the shortening of the conflict there. ||| Assessment of the battle ||| ||| +0 Invasion of Normandy ||| Exercise Tiger ||| Allied forces rehearsed their D-Day roles for months before the invasion. On 28 April 1944, in south [[Devon]] on the English coast, 638 U.S. soldiers and sailors were killed when [[E-boat|German torpedo boats]] surprised one of these landing exercises, [[Exercise Tiger]]. ||| Planning of the invasion ||| ||| +0 Invasion of Poland ||| Battle of Britain ||| The [[Polish Air Force]] (''Lotnictwo Wojskowe'') was at a severe disadvantage against the German ''Luftwaffe'', although it was not destroyed on the ground early on as is commonly believed. The Polish Air Force lacked modern fighters, but its pilots were among the world's best trained, as proven a year later in the [[Battle of Britain]], in which the Poles played a major part. ||| Opposing forces ||| Poland ||| +0 Invasion of Poland ||| Case White ||| With tensions mounting, Germany turned to aggressive diplomacy as well. On 28 April 1939, it unilaterally withdrew from both the German-Polish Non-Aggression Pact of 1934 and the [[London Naval Agreement]] of 1935. Talks over Danzig and the Corridor broke down and months passed without diplomatic interaction between Germany and Poland. During this interim, the Germans learned that France and Britain had failed to secure an alliance with the Soviet Union against Germany, and that the Soviet Union was interested in an alliance with Germany against Poland. Hitler had already issued orders to prepare for a possible 'solution of the Polish problem by military means'—a [[Fall Weiss (1939)|Case White]] scenario. ||| Prelude ||| ||| +0 Invasion of Poland ||| Operation Tannenberg ||| The Polish September Campaign was an instance of [[total war]]. Consequently, civilian casualties were high during and after combat. From the start, the ''Luftwaffe'' attacked civilian targets and columns of refugees along the roads to wreak havoc, disrupt communications, and target Polish morale. Apart from the victims of battles, the German forces (both [[SS]] and the regular ''Wehrmacht'') murdered tens of thousand Polish civilians. During [[Operation Tannenberg]], nearly 20,000 Poles were shot at 760 mass execution sites by the ''[[Einsatzgruppen]]''. ||| Details of the campaign ||| Civilian losses ||| +0 Invasion of Poland ||| Pacific War ||| None of the parties to the conflict—Germany, the Western Allies or the Soviet Union—expected that the German invasion of Poland would lead to a war that would surpass World War I in its scale and cost. It would be months before Hitler would see the futility of his peace negotiation attempts with the United Kingdom and France, but the culmination of combined European and Pacific conflicts would result in what was truly a 'world war'. Thus, what was not seen by most politicians and generals in 1939 is clear from the historical perspective: The Polish September Campaign marked the beginning of the Second World War in Europe, which combined with the [[Second Sino-Japanese War|Japanese invasion of China]] in 1937 and the [[Pacific War]] in 1941, formed the cataclysm known as World War II. ||| Aftermath ||| ||| +0 Invasion of Poland ||| Second Sino-Japanese War ||| None of the parties to the conflict—Germany, the Western Allies or the Soviet Union—expected that the German invasion of Poland would lead to a war that would surpass World War I in its scale and cost. It would be months before Hitler would see the futility of his peace negotiation attempts with the United Kingdom and France, but the culmination of combined European and Pacific conflicts would result in what was truly a 'world war'. Thus, what was not seen by most politicians and generals in 1939 is clear from the historical perspective: The Polish September Campaign marked the beginning of the Second World War in Europe, which combined with the [[Second Sino-Japanese War|Japanese invasion of China]] in 1937 and the [[Pacific War]] in 1941, formed the cataclysm known as World War II. ||| Aftermath ||| ||| +0 Invasion of Salamaua–Lae ||| Battle of the Coral Sea ||| The raid sank or damaged two thirds of the invasion transports employed. Higher casualties among the Japanese Army personnel were only prevented by the fact that most of the transports had been close to shore and could beach themselves. The psychologic impact was greater, putting the Japanese on notice that the Americans were willing to place their carriers at risk to oppose their moves in the region. The fear of interdiction by US carrier forces against future operations contributed to the decision by the Japanese to include fleet carriers in their later plan to [[Operation Mo|invade Port Moresby]], resulting in the [[Battle of the Coral Sea]]. ||| Salamaua-Lae Raid ||| ||| +0 Invasion of Salamaua–Lae ||| Kokoda Track campaign ||| In spite of the damage sustained during the air raid, Japanese forces successfully occupied Lae and Salamaua and began the construction of a base and airfield. Air units based at the airfield later supported an air superiority campaign against Allied forces at Port Moresby. In July 1942 after the Japanese abandoned [[Operation MO|plans]] to invade Port Moresby from the sea, the base at Lae-Salamaua supported the ultimately unsuccessful Japanese land offensive towards Port Moresby along the [[Kokoda Track campaign|Kokoda Track]]. ||| ||| ||| +0 Invasion of Tulagi (May 1942) ||| Attack on Pearl Harbor ||| On 7 December 1941, [[Attack on Pearl Harbor|the Japanese attacked]] the U.S. Pacific fleet at [[Pearl Harbor]], [[Hawaii]]. The attack crippled most of the U.S. Pacific Fleet's battleships and started a formal [[Declaration of war|state of war]] between the two nations. In launching this war, Japanese leaders sought to neutralize the American fleet, seize possessions rich in natural resources, and obtain strategic military bases to defend their far-flung empire. Soon after, other nations—including the [[United Kingdom]], Australia, and New Zealand—joined the U.S. as [[Allies of World War II|Allies]] in the war against Japan. In the words of the Japanese Navy's [[Combined Fleet]] 'Secret Order Number One', dated 1 November 1941, the goals of the initial Japanese campaigns in the impending war were to, '(eject) British and American strength from the Netherlands Indies and the Philippines, (and) to establish a policy of autonomous self-sufficiency and economic independence.' ||| Background ||| ||| +0 Invasion of Tulagi (May 1942) ||| Battle of the Coral Sea ||| Without the means to effectively resist the Japanese offensive in the Solomons, the British [[Resident Commissioner]] of the Solomon Islands protectorate and the few Australian troops assigned to defend Tulagi evacuated the island just before the Japanese forces arrived on 3 May. The next day, however, a U.S. [[aircraft carrier]] [[task force]] en route to resist the Japanese forces advancing on Port Moresby (later taking part in the [[Battle of the Coral Sea]]) struck the Japanese Tulagi landing force in an air attack, destroying or damaging several of the Japanese ships and aircraft involved in the landing operation. Nevertheless, the Japanese troops successfully occupied Tulagi and began the construction of a small naval base. ||| ||| ||| +0 Invasion of Tulagi (May 1942) ||| Kokoda Track campaign ||| After striking Tulagi, ''Yorktown'' rejoined with ''Lexington'', and the two carriers engaged the rest of the Japanese forces involved in the ''Mo'' operation from 6–8 May in the [[Battle of the Coral Sea]]. In the battle, ''Lexington'' was sunk and ''Yorktown'' was damaged. The Japanese suffered ''Shōhō'' sunk, a fleet carrier heavily damaged, and heavy losses to their carrier aircraft and aircrews. Fearing more damaging attacks from Allied land-based aircraft or warships and unable because of their aircraft losses to provide adequate air cover for their naval surface forces, the Japanese turned back from their planned assault on Port Moresby with the intention of trying again later. The next Japanese seaborne attempt to take Port Moresby, however, never happened, mainly because of their navy's defeat in June at the [[Battle of Midway]]. Instead, the Japanese decided to try to take Port Moresby in an [[Kokoda Track campaign|ultimately unsuccessful overland attack]] along the [[Kokoda Track]]. The failure to take Port Moresby in May 1942 would have significant and far-reaching strategic implications, many of which involved the small Japanese naval base at Tulagi. ||| Aftermath ||| ||| +0 Invasion of Yugoslavia ||| Operation Trio ||| Beginning with the forming of the [[Sisak People's Liberation Partisan Detachment|first partisan battalion]] near [[Sisak]], [[Croatia]] on June 22nd and [[Uprising in Serbia (1941)|uprising in Serbia in July 1941]], there was continuous resistance to the occupying armies in Yugoslavia until the end of the war. While in the beginning both [[Yugoslav Partisans|Partisans]] and the [[Chetniks]] engaged in resistance, the Partisans became the main resistance force after Chetniks started to collaborate with the Axis forces in 1942, esp. in [[Operation Trio]]. ||| Aftermath ||| ||| +0 Invasion of the Cape Colony (1795) ||| Battle of Blaauwberg ||| The British expedition was led by Vice-Admiral [[Sir George Keith Elphinstone]] and sailed in April 1795, arriving off [[Simon's Town]] at the Cape in June. Attempts were made to negotiate a settlement with the colony, but talks achieved nothing and an amphibious landing was made on 7 August. A short battle was fought at [[Muizenberg]], and skirmishing between British and Dutch forces continued until September when a larger military force landed. With [[Cape Town]] under threat, Dutch Governor [[Abraham Josias Sluysken]] surrendered the colony. Elphinstone subsequently strengthened the garrison against counterattack and stationed a [[Royal Navy]] squadron off the port. Almost a year later a Dutch reinforcement convoy reached the colony only to find that it was badly outnumbered, and surrendered without a fight. The [[British Cape Colony]] continued until the [[Peace of Amiens]] in 1802 when it was returned to the Dutch. In 1806 during the [[Napoleonic Wars]] a second British invasion recaptured the colony after the [[Battle of Blaauwberg]] and it remained a British colony until the establishment of the [[Union of South Africa]] in 1910. ||| ||| ||| +0 Invasion of the Kuril Islands ||| Dissolution of the Soviet Union ||| The islands remained part of [[Russia]] after the [[Dissolution of the Soviet Union]]. ||| Battle ||| ||| +0 Invasion of the Waikato ||| Crimean War ||| Cameron, a [[Crimean War]] veteran who had replaced Major-General [[Thomas Simson Pratt|Thomas Pratt]] as commander-in-chief of the British troops, ) ||| First engagements ||| ||| +0 Invasion of the Waikato ||| Second Taranaki War ||| Imperial troops were moved back to Taranaki as [[Second Taranaki War|hostilities resumed]] and on 4 June the new British commander, Lieutenant-General [[Duncan Cameron (British Army officer)|Duncan Cameron]], led 870 troops to attack a party of about 50 Māori on the Tataraimaka block, killing 24. Concerned by the renewed aggression, an extremist minority of Kingites began resurrecting their plan to raid Auckland and its frontier settlements. ||| Background and origins of the invasion ||| ||| +0 Iranian Embassy siege ||| Iran hostage crisis ||| The hostage-takers and their cause were largely forgotten after the [[Iran–Iraq War]] broke out later that year and the [[Iran hostage crisis|hostage crisis in Tehran]] continued until January 1981. However, the operation brought the SAS to the public eye for the first time and bolstered the reputation of [[Margaret Thatcher]], the [[Prime Minister of the United Kingdom|Prime Minister]]. The SAS was quickly overwhelmed by the number of applications it received from people inspired by the operation and, at the same time, experienced greater demand for its expertise from foreign governments. It was not until 1993 that 16 Princes Gate, having suffered major damage from a fire that broke out during the assault, was reopened as the Iranian embassy. ||| ||| ||| +0 Iranian Embassy siege ||| Munich massacre ||| Western governments were prompted to form specialist anti-terrorist units following the '[[Munich massacre]]'. During the 1972 Olympic Games, a firefight between a group of hostage-takers and West German police left a police officer and all the hostages dead. The British government, worried that the country was unprepared for a similar crisis in the United Kingdom, ordered the formation of the Counter Revolutionary Warfare (CRW) Wing of the SAS, which became the UK's primary anti-terrorist and anti-hijacking unit. The SAS had taken part in counter-insurgency operations abroad since 1945, and had trained the bodyguards of influential people whose deaths would be contrary to British interests. Thus, it was believed to be better prepared for the role than any unit in the police or elsewhere in the armed forces. The CRW Wing's first operational experience was the storming of [[Lufthansa Flight 181]] in 1977, when a small detachment of soldiers were sent to assist [[GSG 9]]—the elite West German police unit set up after the events of 1972. ||| Background ||| Special Air Service ||| +0 Iranian Revolution ||| 1979 Kurdish rebellion in Iran ||| Following the events of the revolution, Marxist guerrillas and federalist parties revolted in some regions comprising [[1979 Khuzestan uprising|Khuzistan]], [[1979 Kurdish rebellion in Iran|Kurdistan]] and [[Gonbad-e Qabus (city)|Gonbad-e Qabus]], which resulted in fighting between them and revolutionary forces. These revolts began in April 1979 and lasted between several months to over a year, depending on the region. ||| Aftermath ||| Consolidation of power by Khomeini ||| 1979 uprisings +0 Iran–Iraq War ||| 2003 invasion of Iraq ||| Throughout the 1990s and early 2000s, Iran and Iraq relations remained at a limbo between a [[Cold war (general term)|cold war]] and a [[cold peace]]. Despite renewed and somewhat thawed relations, both sides continued to have low level conflicts. Iraq continued to host and support the Mujahedeen-e-Khalq, which carried out multiple attacks throughout Iran up until the [[2003 invasion of Iraq]] (including the [[assassination]] of Iranian general [[Ali Sayyad Shirazi]] in 1998, cross border raids, and mortar attacks). Iran carried out several [[airstrike]]s and missile attacks against Mujahedeen targets inside of Iraq (the largest taking place in 2001, when Iran fired 56 Scud missiles at Mujahedeen targets). ||| Aftermath ||| Peace talks and postwar situation ||| +0 Iran–Iraq War ||| Iraq War ||| The Iran–Iraq War was originally referred to as the ''Gulf War'' until the [[Gulf War|Persian Gulf War]] of 1990 and 1991, after which it was referred to as the ''First Persian Gulf War''. The Iraq–Kuwait conflict, which was originally known as the ''Second Persian Gulf War'' eventually became known simply as the ''Gulf War''. The [[Iraq War]] from 2003 to 2011 has since been called the ''Second Persian Gulf War''. It is now most commonly called the ''Iran–Iraq War''. ||| Terminology ||| ||| +0 Iran–Iraq War ||| Operation Eagle Claw ||| The only qualms the Iraqis had were over the [[Islamic Republic of Iran Air Force]] (formerly the [[Imperial Iranian Air Force]]). Despite the purge of several key pilots and commanders, as well as the lack of spare parts, the air force showed its power during local uprisings and rebellions. They were also active after the failed U.S. attempt to rescue [[Iran hostage crisis|its hostages]], [[Operation Eagle Claw]]. As such, Iraq's leaders decided to carry out a surprise [[airstrike]] against the Iranian air force's infrastructure prior to the main invasion. ||| Origins ||| Iraqi preparations ||| +0 Iran–Iraq War ||| Operation Kheibar ||| [[Operation Kheibar]] began on 24 February with Iranian infantrymen crossing the [[Hawizeh Marshes]] using motorboats and transport helicopters in an [[amphibious assault]]. ||| Course of the war ||| 1983–84: Strategic stalemate and war of attrition ||| Battle of the Marshes +0 Iran–Iraq War ||| Operation Nimble Archer ||| On 24 September, US [[Navy SEALS]] captured the Iranian mine-laying ship ''[[Iran Ajr]]'', a diplomatic disaster for the already isolated Iranians. On 8 October, the US Navy destroyed four Iranian speedboats, and in response to Iranian Silkworm missile attacks on Kuwaiti oil tankers, launched [[Operation Nimble Archer]], destroying two Iranian oil rigs in the Persian Gulf. ||| Course of the war ||| 1987–88: Towards a ceasefire ||| Iran's increasing war-weariness +0 Iran–Israel proxy conflict ||| 1982 Lebanon War ||| The 1982 Israeli [[1982 Lebanon War|invasion]] of Lebanon resulted in the [[Palestine Liberation Organization]]'s (PLO) departure from Lebanon. The following creation of [[South Lebanon security belt|Security Zone in South Lebanon]] has benefited Israeli allies in Lebanon and civilian Israeli population, as Galilee suffered less violent attacks by Hezbollah, than previously by PLO in the 1970s (hundreds of Israeli civilian casualties). Despite this Israeli success in eradicating PLO bases and partial withdraw in 1985, the Israeli invasion had actually increased the severity of [[South Lebanon conflict (1982–2000)|conflict]] with local Lebanese militias and resulted in the consolidation of several local Shia Muslim movements in Lebanon, including [[Hezbollah]] and [[Amal Movement|Amal]], from a previously unorganized guerrilla movement in the south. Over the years, military casualties of both sides grew higher, as both parties used more modern weaponry, and Hezbollah progressed in its tactics. ||| Background ||| ||| +0 Iraq Inquiry ||| 2003 invasion of Iraq ||| In 2012, the government vetoed the release of the documents to the Inquiry detailing minutes of Cabinet meetings in the days leading up to the [[2003 invasion of Iraq|invasion of Iraq in 2003]]. Concurrently, the British Foreign Office successfully appealed against a judge's ruling and blocked the disclosure of extracts of a conversation between [[George W. Bush]] and [[Tony Blair]] moments before the invasion. The government stated that revealing a phone call conversation between Bush and Blair moments before the invasion would later present a 'significant danger' to [[United Kingdom–United States relations|British-American relations]]. ||| ||| ||| +0 Iraq War ||| 25 August 2010 Iraq bombings ||| In late August 2010, insurgents conducted [[25 August 2010 Iraq bombings|a major attack]] with at least 12 car bombs simultaneously detonating from Mosul to Basra and killing at least 51. These attacks coincided with the U.S. plans for a withdrawal of combat troops. ||| Post-invasion phase ||| 2010: U.S. drawdown and Operation New Dawn {{anchor|2010:_US_Drawdown_and_Operation_New_Dawn}} ||| +0 Iraq War ||| Gulf War ||| The issue of [[Iraq disarmament crisis|Iraq's disarmament]] reached a turning point in 2002–03, when [[George W. Bush|President Bush]] demanded a complete end to alleged [[Iraqi production of weapons of mass destruction]] and full compliance with [[United Nations Security Council Resolution|U.N. Security Council Resolutions]] requiring U.N. weapons inspectors unfettered access to suspected weapons production facilities. The [[United Nations Resolutions concerning Iraq|U.N. had prohibited]] Iraq from developing or possessing such weapons after the [[Gulf War|Persian Gulf War]] and required [[Ba'athist Iraq|Iraq]] to permit inspections confirming compliance. During inspections in 1999, U.S. intelligence agents supplied the United States with a direct feed of conversations between Iraqi security agencies as well as other information. This was confirmed by ''[[The New York Times]]'' and ''[[The Wall Street Journal]]''. ||| Background ||| Iraq disarmament and pre-war intelligence ||| U.N. weapons inspections resume +0 Iraq War ||| Ramadan Offensive ||| Meanwhile, coalition military forces launched several operations around the [[Tigris]] River peninsula and in the Sunni Triangle. A series of similar operations were launched throughout the summer in the Sunni Triangle. Toward the end of 2003, the intensity and pace of insurgent attacks began to increase. A sharp surge in guerrilla attacks ushered in an insurgent effort that was termed the '[[Ramadan Offensive]]', as it coincided with the beginning of the Muslim holy month of [[Ramadan]]. ||| Post-invasion phase ||| 2003: Beginnings of insurgency ||| +0 Iraq War ||| Vietnam War ||| The Bush Administration's [[rationale for the Iraq War]] has faced heavy criticism from an array of popular and official sources both inside and outside the United States, with many U.S. citizens finding many parallels with the [[Vietnam War]]. ||| Criticism and cost ||| ||| +0 Iraq War in Anbar Province ||| 2003 invasion of Iraq ||| Al Anbar, the only [[Sunni Islam|Sunni]]-dominated province in Iraq, saw little fighting in the initial [[2003 invasion of Iraq|invasion]]. Following the fall of [[Baghdad]] it was occupied by the [[United States Army|U.S. Army]]'s [[82nd Airborne Division]]. Violence began on 28 April 2003 when 17 Iraqis [[Fallujah killings of April 2003|were killed in Fallujah]] by U.S. soldiers during an anti-American demonstration. In early 2004 the U.S. Army relinquished command of the province to the Marines. By April 2004 the province was in full-scale revolt. Savage fighting occurred in both Fallujah and Ramadi by the end of 2004, including the [[Second Battle of Fallujah]]. Violence escalated throughout 2005 and 2006 as the two sides struggled to secure the Western [[Euphrates|Euphrates River]] Valley. During this time, [[Al-Qaeda in Iraq|Al Qaeda in Iraq]] (AQI) became the province's main Sunni insurgent group and turned the provincial capital of Ramadi into its stronghold. The Marine Corps issued [[Battle of Ramadi (2006)#The Devlin report|an intelligence report]] in late 2006 declaring that the province would be lost without a significant additional commitment of troops. ||| ||| ||| +0 Iraq War in Anbar Province ||| Battle of Baghdad (2003) ||| Shortly after the [[Battle of Baghdad (2003)|Fall of Baghdad]], the [[United States Army|US Army]] turned Anbar Province over to a single regiment, the [[3d Armored Cavalry Regiment (United States)#First Tour (OIF)|3rd Armored Cavalry Regiment]] (ACR). With only several thousand soldiers, that force had little hope of effectively controlling Anbar. ||| 2003 ||| Insurgency begins ||| +0 Iraq War in Anbar Province ||| Gulf War ||| In late 2008, US forces began accelerating their move out of cities across Iraq, turning over the task of maintaining security to Iraqi forces. In early August, a unit of Marines operating in Anbar located and recovered the body of Navy Captain [[Scott Speicher]], who had been missing in action since the 1991 [[Gulf War]]. ||| 2008–2011 ||| Drawdown ||| +0 Iraq War in Anbar Province ||| Operation Alljah ||| In June the Marine Corps launched [[Operation Alljah]] to secure Fallujah, Karma, [[Zaidon]], and the [[Lake Tharthar|Tharthar]] regions of eastern Anbar. These regions fell under the umbrella of [[Operation Phantom Thunder]], an overall offensive throughout Iraq using US and Iraqi divisions on multiple fronts in an attempt to clear the areas surrounding Baghdad. ||| 2007 ||| Operation Alljah ||| +0 Iraq War in Anbar Province ||| Operation Sayeed ||| MEF then began a series of operations in July, under the aegis of [[Operation Sayeed]]; in addition to clearing AQI from the WERV, Sayeed was also an attempt to set the conditions for the Anbaris to participate in the December constitutional referendum. ||| 2005 ||| Western Euphrates River Valley ||| +0 Iraq War in Anbar Province ||| Operation Steel Curtain ||| On 5 November, the 2nd Marine Regiment launched [[Operation Steel Curtain]] against the border town of [[Husaybah]]. ||| 2005 ||| October–December 2005 ||| +0 Iraq War in Anbar Province ||| Ramadan Offensive ||| During the insurgency's [[Ramadan Offensive]], a military [[Boeing CH-47 Chinook|Chinook transport helicopter]] carrying 32 soldiers was shot down with an [[Strela 2|SA-7 missile]] near Fallujah on 2 November. Thirteen were killed and the rest wounded. ||| 2003 ||| November–December 2003 ||| +0 Iraq War in Anbar Province ||| Second Battle of Fallujah ||| Al Anbar, the only [[Sunni Islam|Sunni]]-dominated province in Iraq, saw little fighting in the initial [[2003 invasion of Iraq|invasion]]. Following the fall of [[Baghdad]] it was occupied by the [[United States Army|U.S. Army]]'s [[82nd Airborne Division]]. Violence began on 28 April 2003 when 17 Iraqis [[Fallujah killings of April 2003|were killed in Fallujah]] by U.S. soldiers during an anti-American demonstration. In early 2004 the U.S. Army relinquished command of the province to the Marines. By April 2004 the province was in full-scale revolt. Savage fighting occurred in both Fallujah and Ramadi by the end of 2004, including the [[Second Battle of Fallujah]]. Violence escalated throughout 2005 and 2006 as the two sides struggled to secure the Western [[Euphrates|Euphrates River]] Valley. During this time, [[Al-Qaeda in Iraq|Al Qaeda in Iraq]] (AQI) became the province's main Sunni insurgent group and turned the provincial capital of Ramadi into its stronghold. The Marine Corps issued [[Battle of Ramadi (2006)#The Devlin report|an intelligence report]] in late 2006 declaring that the province would be lost without a significant additional commitment of troops. ||| ||| ||| +0 Iraq spring fighting of 2004 ||| Battle of Najaf (2004) ||| In total, the United States estimated that around 1,342 [[Sunni]] and [[Shi'a]] fighters were killed, and approximately 430 insurgents were captured. The USA, Iraq, and other allied forces suffered 383 killed. Approximately 2,500 American soldiers were wounded during this period. The results were indecisive. Most of [[Al-Anbar]] province (including [[Ramadi]] and Fallujah) as well as some [[Sunni]] territory north and south of Baghdad, including [[Samarra]], were effectively left under insurgent control. The United States forces managed to maintain control of Baghdad and other major cities in the Shi'a south as well as some in the north. Another uprising of the Mahdi Army occurred a month and a half later, and a bloodier [[Battle of Najaf (2004)|battle for the city of Najaf]] unfolded. Also in November the [[Operation Phantom Fury|Second Battle of Fallujah]] occurred, [[Operation Phantom Fury]], which left ninety-five percent of the city in ruins. Four days after the end of the Spring Fighting on June 28, 2004, the Coalition Provisional Authority transferred control to a new [[Iraqi government]]. With this, the occupation was officially over, but coalition forces remained in large numbers in the country. On the day that the transfer of authority occurred, three American Marines were killed in Baghdad and one British soldier was killed in Basra. ||| Aftermath ||| ||| +0 Iraq spring fighting of 2004 ||| Battle of Ramadi (2004) ||| Immediately following the [[Battle of Ramadi (2004)|Battle of Ramadi]] there was another insurgent attack on the town of Husaybah on the [[Syria]]n border on April 17, 2004. Like in [[Ramadi]], insurgents attacked the Marine [[garrison]] and were repulsed; 5 Marines and 150 insurgents were killed. ||| April fighting ||| Al Anbar operations ||| Battle of Husaybah +0 Iraq spring fighting of 2004 ||| Second Battle of Fallujah ||| In total, the United States estimated that around 1,342 [[Sunni]] and [[Shi'a]] fighters were killed, and approximately 430 insurgents were captured. The USA, Iraq, and other allied forces suffered 383 killed. Approximately 2,500 American soldiers were wounded during this period. The results were indecisive. Most of [[Al-Anbar]] province (including [[Ramadi]] and Fallujah) as well as some [[Sunni]] territory north and south of Baghdad, including [[Samarra]], were effectively left under insurgent control. The United States forces managed to maintain control of Baghdad and other major cities in the Shi'a south as well as some in the north. Another uprising of the Mahdi Army occurred a month and a half later, and a bloodier [[Battle of Najaf (2004)|battle for the city of Najaf]] unfolded. Also in November the [[Operation Phantom Fury|Second Battle of Fallujah]] occurred, [[Operation Phantom Fury]], which left ninety-five percent of the city in ruins. Four days after the end of the Spring Fighting on June 28, 2004, the Coalition Provisional Authority transferred control to a new [[Iraqi government]]. With this, the occupation was officially over, but coalition forces remained in large numbers in the country. On the day that the transfer of authority occurred, three American Marines were killed in Baghdad and one British soldier was killed in Basra. ||| Aftermath ||| ||| +0 Iraqi insurgency (2003–11) ||| 2003 invasion of Iraq ||| <!-- Bolding not necessary per [[WP:SBE]] !-->An insurgency began in Iraq after the [[2003 invasion of Iraq|2003 invasion]], and lasted throughout the ensuing [[Iraq War]] (2003–2011). ||| ||| ||| +0 Iraqi insurgency (2003–11) ||| Battle of Nasiriyah ||| The invasion was preceded by an [[air strike]] on the Presidential Palace in Baghdad on 19 March 2003. The following day coalition forces launched an incursion into [[Basra Province]] from their massing point close to the Iraqi-Kuwaiti border. While the special forces launched an amphibious assault from the [[Persian Gulf]] to secure [[Basra]] and the surrounding petroleum fields, the main invasion army moved into southern Iraq, occupying the region and engaging in the [[Battle of Nasiriyah]] on 23 March. Massive air strikes across the country and against Iraqi command and control threw the defending army into chaos and prevented an effective resistance. On 26 March the [[173rd Airborne Brigade]] was [[Operation Northern Delay|airdropped]] near the northern city of [[Kirkuk]] where they joined forces with [[Kurdish people|Kurdish]] rebels and fought several actions against the [[Iraqi army]] to secure the northern part of the country. ||| Background ||| ||| +0 Iraqi insurgency (2003–11) ||| Battle of Tal Afar ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Bayonet Lightning ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Ivy Blizzard ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation New Market ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Northern Delay ||| The invasion was preceded by an [[air strike]] on the Presidential Palace in Baghdad on 19 March 2003. The following day coalition forces launched an incursion into [[Basra Province]] from their massing point close to the Iraqi-Kuwaiti border. While the special forces launched an amphibious assault from the [[Persian Gulf]] to secure [[Basra]] and the surrounding petroleum fields, the main invasion army moved into southern Iraq, occupying the region and engaging in the [[Battle of Nasiriyah]] on 23 March. Massive air strikes across the country and against Iraqi command and control threw the defending army into chaos and prevented an effective resistance. On 26 March the [[173rd Airborne Brigade]] was [[Operation Northern Delay|airdropped]] near the northern city of [[Kirkuk]] where they joined forces with [[Kurdish people|Kurdish]] rebels and fought several actions against the [[Iraqi army]] to secure the northern part of the country. ||| Background ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Phantom Strike ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Red Dawn ||| When [[Operation Red Dawn|Saddam Hussein was captured]] in December 2003, several documents were found in his possession. One particular document, which was apparently written after he lost power, appeared to be a directive to his Ba'athist loyalists warning them to be wary of [[Islamist]] [[mujahideen]] and other foreign Arabs entering the country to join the insurgency. The directive supposedly shows Saddam having concerns that foreign fighters would not share the same objectives as Ba'ath loyalists (i.e. the eventual return of Saddam to power and the restoration of his regime). A U.S. official commenting on the document stressed that while Saddam urged his followers to be cautious in their dealings with other Arab fighters, he did not order them to avoid contact or rule out co-operation. [[Bruce Hoffman]], a Washington counter-terrorism expert stated that the existence of the document underscores the fact that 'this is an insurgency cut of many different cloths...[and] everybody's jockeying for their position of power in the future Iraq.' Many experts believe that fighters from other countries who have flocked to Iraq to join the insurgents are motivated by animosity toward the United States and the desire to install an Islamic state in place of the [[Arab Socialist Ba'ath Party – Iraq Region|Ba'ath Party]]'s [[secular]] [[regime]]. ||| Conflict parties ||| Foreign participants ||| +0 Iraqi insurgency (2003–11) ||| Operation Spear ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Squeeze Play ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Iraqi insurgency (2003–11) ||| Operation Swarmer ||| Over 500 [[counter-insurgency]] operations have been undertaken by the U.S.-led Coalition or the Iraqi government. These include Operation Option North and [[Operation Bayonet Lightning]] in [[Kirkuk]], [[Operation Desert Thrust]], [[Operation Abilene (2003)|Operation Abilene]] and Operation All American Tiger throughout Iraq, [[Operation Iron Hammer (Iraq 2003)|Operation Iron Hammer]] in [[Baghdad]] and [[Operation Ivy Blizzard]] in [[Samarra]] - all in 2003; [[Operation Market Sweep]], [[Operation Vigilant Resolve]] and [[Operation Phantom Fury]] in [[Fallujah]] in 2004; [[Battle of Al Qaim|Operation Matador]] in [[Al Anbar Governorate|Anbar]], [[Operation Squeeze Play]] and [[List of coalition military operations of the Iraq War|Operation Lightning]] in Baghdad, [[Operation New Market]] near [[Haditha]], [[Operation Spear]] in [[Karabillah]] and the [[Battle of Tal Afar]] - all in 2005; [[Operation Swarmer]] in Samarra and [[Operation Together Forward]] in Baghdad in 2006; and [[Operation Law and Order]] in Baghdad, [[Operation Arrowhead Ripper]] in [[Baqouba]] and [[Operation Phantom Strike]] throughout Iraq - all in 2007. ||| Iraqi Coalition counter-insurgency operations ||| ||| +0 Irish Confederate Wars ||| Cromwellian conquest of Ireland ||| The wars ended in the defeat of the Confederates. They and their English Royalist allies were defeated during the [[Cromwellian conquest of Ireland]] by the [[New Model Army]] under [[Oliver Cromwell]] in 1649–53. The wars following the 1641 revolt caused massive loss of life in Ireland, comparable in the country's history only with the [[Great Famine (Ireland)|Great Famine]] of the 1840s. The ultimate winner, the English parliament, arranged for the mass confiscation of land owned by Irish Catholics as punishment for the rebellion and to pay for the war. Although some of this land was returned after 1660 on the [[Restoration (England)|Restoration of the monarchy in England]], the period marked the effective end of the old Catholic landed class. ||| Overview ||| ||| +0 Irish Confederate Wars ||| English Civil War ||| The Confederates ruled much of [[Ireland]] as a ''de facto'' sovereign state until 1649, and proclaimed their loyalty to [[Charles I of England|Charles I]]. From 1641 to 1649, the Confederates fought against Scottish [[Covenanter]] and English Parliamentarian armies in Ireland. The Confederates, in the context of the [[English Civil War]], were loosely allied with the English Royalists, but were divided over whether to send military help to them in the war there. Ultimately, they never sent troops to [[England]], but did send an expedition to help the Scottish Royalists, sparking the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]]. ||| Overview ||| ||| +0 Irish Confederate Wars ||| Scotland in the Wars of the Three Kingdoms ||| The Confederates ruled much of [[Ireland]] as a ''de facto'' sovereign state until 1649, and proclaimed their loyalty to [[Charles I of England|Charles I]]. From 1641 to 1649, the Confederates fought against Scottish [[Covenanter]] and English Parliamentarian armies in Ireland. The Confederates, in the context of the [[English Civil War]], were loosely allied with the English Royalists, but were divided over whether to send military help to them in the war there. Ultimately, they never sent troops to [[England]], but did send an expedition to help the Scottish Royalists, sparking the [[Scotland in the Wars of the Three Kingdoms|Scottish Civil War]]. ||| Overview ||| ||| +0 Irish Rebellion of 1641 ||| Battle of Edgehill ||| Because of the Civil War in England, English troops were withdrawn from Ireland in late 1642 and a military stalemate ensued. After the inconclusive [[Battle of Edgehill]] in October 1642, royalists considered that the army sent to Ireland earlier in 1642 would have ended the conflict within days or months, had it been available in England when needed. ||| Rebellion ||| English and Scottish intervention ||| +0 Irish Rebellion of 1641 ||| Cromwellian conquest of Ireland ||| The Irish rebellion broke out in October 1641 and was followed by several months of violent chaos before the Irish Catholic upper classes and clergy formed the [[Confederate Ireland|Catholic Confederation]] in the summer of 1642. The Confederation became a de facto government of most of Ireland, free from the control of the English administration and loosely aligned with the [[Cavalier|Royalist]] side in the [[Wars of the Three Kingdoms]]. The subsequent [[Irish Confederate Wars]] continued in Ireland until the 1650s, when [[Oliver Cromwell]]'s [[New Model Army]] decisively defeated the Irish Catholics and Royalists, and [[Cromwellian conquest of Ireland|re-conquered the country]]. ||| ||| ||| +0 Irish Rebellion of 1641 ||| Irish Confederate Wars ||| The '''Irish Rebellion of 1641''' ({{lang-ga|Éirí Amach 1641}}) began as an attempted ''coup d'état'' by [[Irish Catholic]] gentry, who tried to seize control of the [[Kingdom of England|English]] [[Kingdom of Ireland|administration in Ireland]] to force concessions for the Catholics living under English rule. The coup failed and the rebellion developed into an [[ethnic conflict]] between native [[Irish people|Irish]] Catholics on one side, and English and Scottish [[Protestantism in Ireland|Protestant]] settlers on the other. This began a conflict known as the [[Irish Confederate Wars]]. ||| ||| ||| +0 Irish general election, 1918 ||| Battle of the Somme ||| *Unionist opinion from fear of Home Rule, or worse separation, solidified after the Rising and its vote was enhanced, aided in Ulster by the increased electorate. This was the first election since the [[Ulster Covenant]], the formation of the [[Ulster Volunteers]] (UVF) and the [[Battle of the Somme]]. ||| Background ||| Political factors ||| +0 Italian invasion of France ||| Operation Torch ||| The [[Franco-Italian Armistice]] established a modest [[demilitarized zone]] {{convert|50|km|mi|abbr=on}} deep on the French side of the border, thus eliminating the Alpine Line. The actual [[Italian-occupied France|Italian occupation zone]] was no more than what had been occupied up to the armistice. It contained 832 km² and 28,500 inhabitants, which included the city of Menton and its 21,700 inhabitants.{{sfn|Rochat|2008|loc=para. 27}} Italy retained the right to interfere in French territory as far as the Rhône, but it did not occupy this area until after the [[Operation Torch|Allied invasion of French North Africa]] in November 1942.{{sfn|Rochat|2008|loc=para. 29}} In addition, demilitarized zones were established in the French colonies in Africa. Italy was granted the right to use the port of Djibouti in Somaliland with all its equipment, along with the French section of the Addis Ababa–Djibouti railway. More importantly, the naval bases of Toulon, Bizerte, Ajaccio and Oran were also to be demilitarized. ||| Aftermath ||| Armistice ||| +0 Italian unification ||| Battle of Custoza (1866) ||| Victor Emmanuel hastened to lead an army across the [[Mincio]] to the invasion of Venetia, while Garibaldi was to invade the [[German Tyrol|Tyrol]] with his [[Hunters of the Alps]]. The enterprise ended in disaster. The Italian army encountered the Austrians at [[Battle of Custoza (1866)|Custoza]] on 24 June and suffered a defeat. On 20 July the [[Regia Marina]] was defeated in the [[battle of Lissa (1866)|battle of Lissa]]. Italy's fortunes were not all so dismal, though. The following day, Garibaldi's volunteers defeated an Austrian force in the [[battle of Bezzecca]], and moved toward [[Trento]]. ||| Third War of Independence (1866) ||| ||| +0 Jabidah massacre ||| Brunei Civil War ||| The north-eastern part of [[Sabah]] had been under the rule of the [[Sulu Sultanate]] since been given by the [[Bruneian Empire|Sultanate of Brunei]] in 1658 for the latter's help in settling a [[Brunei Civil War|civil war in Brunei]] During the process of [[Crown Colony of North Borneo|decolonization by the British]] after World War II from 1946, Sabah was integrated as part of the Malaysian Federation in 1963 under the [[Malaysia Agreement]]. ||| Background ||| ||| +0 Jackson Expedition ||| Siege of Vicksburg ||| The '''Jackson Expedition''' occurred in the aftermath of the [[Siege of Vicksburg|surrender of Vicksburg, Mississippi]] in July 1863. [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[William T. Sherman]] led the expedition to clear General [[Joseph E. Johnston]]'s relief effort from the Vicksburg area. ||| ||| ||| +0 January 28 Incident ||| Second Sino-Japanese War ||| The '''January 28 Incident''' or '''Shanghai Incident''' (January 28 – March 3, 1932) was a conflict between the [[Republic of China (1912–49)|Republic of China]] and the [[Empire of Japan]], before official hostilities of the [[Second Sino-Japanese War]] commenced in 1937. ||| ||| ||| +0 Japanese coup d'état in French Indochina ||| First Indochina War ||| French Indochina was left in chaos by the Japanese occupation. Admiral [[Jean Decoux]], who had supported the Vichy regime instead of [[Free France]], was sent to France to face trial. In Laos, Phetsarath Rattanavongsa's [[Lao Issara]] deposed the King in October and declared the country's independence, but its government had to flee in April 1946, as the French troops advanced towards [[Vientiane]]. In Cambodia, Son Ngoc Thanh was arrested by the French. Ho Chi Minh found himself in partial control of north Vietnam, setting the stage for the [[First Indochina War]]. ||| Aftermath ||| ||| +0 Japanese general election, 1932 ||| Mukden Incident ||| In 1931, the ruling [[Rikken Minseito|Minsei Party]] opposed the [[Mukden Incident]] which was engineered by the military. The anti-war Foreign Minister [[Kijuro Shidehara]] and Prime Minister [[Wakatsuki Reijirō]] was criticized for their intervention in military and was accused of 'serious corruption'. After the resignation of the Reijirō Cabinet, some right-wing members of the ruling party formed a coalition with the opposition [[Seiyukai Party]] and elected [[Inukai Tsuyoshi]] as prime minister. ||| Overview ||| ||| +0 Japanese general election, 2005 ||| Iraq War ||| Outside Japan, there was much speculation about how the election could change foreign relations, since foreign policy is one of the major differences between the LDP and the DPJ. The LDP's Koizumi has been notable for his foreign policies supportive of U.S. President [[George W. Bush]]. In particular, the administration has faithfully supported the [[Iraq War]], sending [[JSDF]] troops to [[Iraq]] in spite of public opposition and the country's [[Constitution of Japan|pacifist constitution]]. Moreover, the relationship between Japan and [[People's Republic of China|China]] deteriorated in early 2005, when Koizumi and other conservative Japanese politicians angered China through their visits to the [[Yasukuni Shrine]], amongst other actions. In contrast, Okada, the leader of the main opposition DPJ, said he would pull the troops out of Iraq by December 2005 if he won the government. He also pledged that he would not visit [[Yasukuni Shrine]]; this could noticeably improve foreign relations with [[South Korea]] and [[People's Republic of China|China]]. However, in Japan, foreign policy issues had drawn almost no attention during the campaign. ||| Issues ||| ||| +0 Japanese invasion of Batan Island ||| Second Sino-Japanese War ||| Following [[Japanese invasion of Manchuria|Japan's 1931 invasion of Manchuria]], leading to [[Second Sino-Japanese War]], Japan spent considerable effort trying to isolate China and achieve sufficient resource independence to attain victory on the mainland. In 1940, Japan [[Invasion of French Indochina|invaded French Indochina]] in an effort to control supplies reaching China. The United States halted shipments of airplanes, parts, [[machine tool]]s, and [[Avgas|aviation gasoline]] to Japan. ||| Background ||| ||| +0 Japanese invasion of Malaya ||| Attack on Pearl Harbor ||| The invasion began with a bombardment at around 00:30 local time on 8 December. (The Japanese carrier planes flying toward [[Attack on Pearl Harbor|Pearl Harbor]] were about 50 minutes away; the attack on Pearl started at 01:18 local time, although it is usually referred to as the 7 December attack as it occurred in the morning of 7 December US time). The loading of landing craft began almost as soon as the transports dropped anchor. Rough seas and strong winds hampered the operation and a number of smaller craft capsized. ||| Landings at Kota Bharu ||| ||| +0 Japanese invasion of Malaya ||| Battle of Ambon ||| The British plan for defending against an attack from Thailand into northwestern Malaya was a pre-emptive strike into southern Thailand, known as [[Operation Krohcol]], to take strategically vital positions and delay the enemy attack. The British plan for the defence of the east coast of Malaya consisted of fixed beach defences hwls by the [[Indian 9th Infantry Division]] along the northern stretch of coastline and two thirds of the [[Australian 8th Division]] defending the southern stretch of coastline. (The other third was on [[Battle of Ambon|Ambon]], ) ||| Preparations ||| ||| +0 Japanese invasion of Malaya ||| Operation Krohcol ||| The British plan for defending against an attack from Thailand into northwestern Malaya was a pre-emptive strike into southern Thailand, known as [[Operation Krohcol]], to take strategically vital positions and delay the enemy attack. The British plan for the defence of the east coast of Malaya consisted of fixed beach defences hwls by the [[Indian 9th Infantry Division]] along the northern stretch of coastline and two thirds of the [[Australian 8th Division]] defending the southern stretch of coastline. (The other third was on [[Battle of Ambon|Ambon]], ) ||| Preparations ||| ||| +0 Japanese invasion of Malaya ||| Pacific War ||| The '''Japanese Invasion of [[British Malaya|Malaya]]''' began just after midnight on 8 December 1941 (local time) before the [[attack on Pearl Harbor]]. It was the first major battle of the [[Pacific War]], and was fought between ground forces of the [[British Indian Army]] and the [[Empire of Japan]]. ||| ||| ||| +0 Japanese invasion of Manchuria ||| Invasion of Poland ||| The Manchurian Crisis had a significant negative impact on the moral strength and influence of the [[League of Nations]]. As critics had predicted, the League was powerless if a strong nation decided to pursue an aggressive policy against other countries, allowing a country such as Japan to commit blatant aggression without serious consequences. [[Adolf Hitler]] and [[Benito Mussolini]] were also aware of this, and within three years would both follow Japan's example in aggrandisation against their neighbors, in the case of Italy, against [[Second Italo-Abyssinian War|Abyssinia]], and Hitler, against [[Munich Agreement|Czechoslovakia]] and [[Invasion of Poland|Poland]]. ||| External impact ||| ||| +0 Japanese invasion of Manchuria ||| Pacification of Manchukuo ||| On February 27, 1932, Ting offered to cease hostilities, ending official Chinese resistance in Manchuria, although combat by [[guerrilla warfare|guerilla]] and irregular forces continued as Japan spent many years in their [[Pacification of Manchukuo|campaign to pacify Manchukuo]]. ||| Occupation of northern Manchuria ||| ||| +0 Japanese occupation of Attu ||| Battle of Midway ||| In May 1942, the Japanese began a campaign against [[Midway Atoll|Midway]], their objective being to occupy the islands and destroy the remaining [[United States Navy]] forces in the [[Pacific Ocean|Pacific]]. In order to deceive the American [[United States Pacific Fleet|Pacific Fleet]], a diversionary attack was ordered to take place in the Aleutians, thus beginning the [[Aleutian Islands Campaign]]. During the [[Battle of Midway]], Japanese forces were repulsed in a decisive action, meanwhile on 6 June, Japanese naval forces under [[Boshirō Hosogaya]] landed troops unopposed at Kiska and Attu islands. A force consisting of 1,140 [[infantry]] under [[Major]] [[Matsutoshi Hosumi]] took control of the island and captured forty-five [[Aleut people|Aleut]] civilians and a school teacher. The school teacher's husband was killed during the invasion; the Japanese Army was suspected of executing him. All of the prisoners were eventually removed to Japan. ||| Occupation ||| ||| +0 Japanese occupation of Attu ||| Japanese occupation of Kiska ||| The '''Japanese occupation of Attu''' was the result of an invasion of the [[Aleutian Islands]] during [[World War II]]. [[Imperial Japan]]ese [[Imperial Japanese Army|Army]] troops landed on 6 June 1942 at the same time as the [[Japanese occupation of Kiska|invasion]] of [[Kiska]]. The occupation ended with the [[Allies of World War II|Allied]] victory in the [[Battle of Attu]] on 30 May 1943. ||| ||| ||| +0 Japanese occupation of Guam ||| Pacific War ||| The [[Battle of Guam (1941)|Battle of Guam in 1941]] was an engagement during the [[Pacific War]] in World War II which took place on 8 December 1941 on Guam in the [[Mariana Islands]] between the [[Empire of Japan|Japanese]] and [[Allies of World War II|Allied]] forces. ||| Events leading to the occupation ||| ||| +0 Japanese occupation of Kiska ||| Action of 5 July 1942 ||| On 19 June 1942, American aircraft attacked and sank the Japanese oiler ''Nissan Maru'' in [[Kiska Harbor]] and on 30 June American naval forces bombarded the island. The American [[submarine]] {{USS|Growler|SS-215|6}} [[Action of 5 July 1942|attacked]] and sank one Japanese destroyer {{convert|7|mi|nmi km|lk=on|abbr=on}} east of Kiska Harbor on 5 July, two other destroyers were also heavily damaged. Over 200 Japanese sailors were killed or wounded while the Americans sustained no losses, it became the single bloodiest engagement during the operations on and around Kiska. {{USS|Grunion|SS-216|6}} was attacked by three Japanese submarine chasers while patrolling Kiska Harbor on 15 July. In response, she fired on and sank two of the Japanese ships and damaged the third. ''Grunion'' was lost a few weeks later off Kiska on 30 July with all hands, she is suspected of being sunk after one of her own torpedoes circled back when she attacked the ''Kano Maru''. ||| Naval operations ||| ||| +0 Japanese occupation of Kiska ||| Battle of Attu ||| In 1943, U.S. forces landed on and [[Battle of Attu|destroyed]] the Japanese garrison on Attu. In response, the [[Imperial Japanese Navy]] successfully evacuated the Kiska garrison on 28 July, ending the Japanese presence in the Aleutian Islands. Not completely sure that the Japanese were gone, the Americans and Canadians executed an [[Operation Cottage|unopposed landing]] on Kiska on 15 August, securing the island and ending the Aleutian Islands campaign. ||| Occupation ||| ||| +0 Japanese occupation of Kiska ||| Operation Cottage ||| In 1943, U.S. forces landed on and [[Battle of Attu|destroyed]] the Japanese garrison on Attu. In response, the [[Imperial Japanese Navy]] successfully evacuated the Kiska garrison on 28 July, ending the Japanese presence in the Aleutian Islands. Not completely sure that the Japanese were gone, the Americans and Canadians executed an [[Operation Cottage|unopposed landing]] on Kiska on 15 August, securing the island and ending the Aleutian Islands campaign. ||| Occupation ||| ||| +0 Japanese occupation of Nauru ||| Battle of Midway ||| [[Operation RY]] was the name given by the Japanese to their plan to invade and occupy Nauru and Ocean Island. The operation was originally set to be executed in May 1942, immediately following [[Operation MO]] (the invasion of New Guinea and the Solomon Islands), and before Operation MI (the attack on [[Battle of Midway|Midway]]). ||| Occupation ||| 1942: Beginning of the occupation ||| Japanese Invasion +0 Japanese occupation of Nauru ||| Battle of the Coral Sea ||| By the time the Japanese occupied Nauru in the summer of 1942, their rampage in the Pacific was coming to an end; checked at the [[Battle of the Coral Sea]] and defeated at [[Battle of Milne Bay|Milne Bay]] and [[Battle of Midway|Midway]], the Japanese were being forced onto the defensive. ||| Occupation ||| 1943-1944: American offensive, murders, deportations, and isolation ||| American offensive +0 Japanese occupation of Nauru ||| Pacific War ||| The '''Japanese occupation of Nauru''' was the period of three years (26 August 1942 – 13 September 1945) during which [[Nauru]], a Pacific island under Australian administration, was occupied by the Japanese military as part of its operations in the [[Pacific War]] during [[World War II]]. With the onset of the war, the islands that flanked Japan's South Seas possessions became of vital concern to Japanese [[Imperial General Headquarters]], and in particular to the Imperial Navy, which was tasked with protecting Japan's outlying Pacific territories. ||| ||| ||| +0 Jiangqiao Campaign ||| Japanese invasion of Manchuria ||| The '''Jiangqiao Campaign''' was a series of battles and skirmishes occurring after the [[Mukden Incident]], during the [[Japanese invasion of Manchuria|invasion of Manchuria]] by the [[Imperial Japanese Army]], prior to the [[Second Sino-Japanese War]]. ||| ||| ||| +0 Jiangqiao Campaign ||| Mukden Incident ||| The '''Jiangqiao Campaign''' was a series of battles and skirmishes occurring after the [[Mukden Incident]], during the [[Japanese invasion of Manchuria|invasion of Manchuria]] by the [[Imperial Japanese Army]], prior to the [[Second Sino-Japanese War]]. ||| ||| ||| +0 Jicarilla War ||| American Civil War ||| In the subsequent [[Battle of Cieneguilla]], sixty American [[cavalry]]men fought an estimated 250 Apaches and Ute [[warrior]]s under the [[tribal chief|war chief]] [[Flechas Rayada]]. Fighting began at around 8:00 am and lasted for over three hours, by the end of which, twenty-two soldiers were killed and another thirty-six were wounded. Davidson's command was forced to retreat having inflicted about twenty deaths on the native force. A week later, on April 8, a large force of about 200 American cavalrymen, 100 men of the [[3rd Infantry Division (United States)|3rd Infantry]], and thirty-two [[United States Army Indian Scouts|scouts]], found the Jicarillas of Chief [[Chacon (Apache)|Chacon]] in [[Ojo Caliente, New Mexico|Ojo Caliente Canyon]]. During the [[Battle of Ojo Caliente Canyon|battle]] that followed, commander [[Philip St. George Cooke]] defeated about 150 warriors, killing five of them and wounding six others without sustaining any casualties to his own command. The Jicarillas where dispersed at that point and without a camp many of them died in the extreme cold weather. The battle was also notable for having involved [[Kit Carson]], who guided the American army during the expedition, and [[First Lieutenant]] [[George Sykes]], who later commanded the [[Army of the Potomac]] in the [[American Civil War]]. After the Ojo Caliente battle the war was mostly over with the exception of a few smaller raids and skirmishes over the next several months. ||| War ||| ||| +0 Jifjafa raid ||| Gallipoli Campaign ||| The Jifkafa well (Bir el Jifjafa) is located in the Sinai Desert {{convert|52|mi|spell=in}} to the east of [[Ismalia]] on the [[Suez Canal]]. The raid was carried out by men from the [[3rd Light Horse Brigade]], supported by small detachments of other corps and a larger group from the [[Egyptian Camel Transport Corps]]. Although some of the Australians had seen action in the [[Gallipoli Campaign]], this was the first offensive operation, conducted by any Australian force, during the Sinai and Palestine Campaign. ||| ||| ||| +0 Jinzhou Operation ||| Japanese invasion of Manchuria ||| The '''Jinzhou (Chinchow) Operation''' was an operation in 1931 during the [[Japanese invasion of Manchuria]], which was a preliminary, contributing factor to the outbreak of the [[Second Sino-Japanese War]] in 1937. ||| ||| ||| +0 Jinzhou Operation ||| Mukden Incident ||| Following the defeat of General [[Ma Zhanshan]] in [[Heilongjiang]] province, and in anticipation of reinforcements, a new Japanese offensive was launched in Manchuria on December 21. General Honjo insisted that his troops were moving out 'to clear the country of bandits,' and added that the Chinese evacuation of Chinchow was 'absolutely imperative'. Most of the 'bandits' were actually the organizing [[Anti-Japanese Volunteer Armies]] but some real bandits were also exploiting the chaos following the collapse of the Chinese government and its [[Northeastern Army]] following the [[Mukden Incident]] and the Japanese invasion of Manchuria. ||| Background ||| ||| +0 Joe Biden presidential campaign, 2008 ||| Bosnian War ||| Biden spoke of the fact that he had spent 34 years in the Senate and had been active in many congressional committees including being the chairman of the [[U.S. Senate Committee on Foreign Relations]] and formerly holding the post as chairman of the Judiciary Committee. On the campaign trail he touted his years of foreign policy experience particularly in regard to the [[Bosnian War|conflict in Bosnia]], which he feels he played a role in ending. Biden stated earlier in his campaign that '[he] truly believe[s] the American public is waiting for leaders to come along who have the experience to say what they will do to restore America's leadership in the world.' {{cite news ||| Public perceptions ||| Experience vs. change ||| +0 Joe Biden presidential campaign, 2008 ||| Iraq War ||| During the campaign, Biden focused on his plan to achieve political success in the [[Iraq War]] through a system of federalization. He touted his record in the Senate as the head of several congressional committees and experience in foreign policy. Despite a few notable endorsements, Biden failed to garner significant support in opinion polls, and was marred by controversial comments made while campaigning. He ultimately dropped out of the [[United States presidential election, 2008|race]] on January 3, 2008, after capturing less than 1% of the vote in the [[Iowa caucus]]. {{cite news ||| ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Battle of Bong Son ||| *Gradual intensification, and North Vietnamese exploration of a changed ground environment. Significant events include the [[Battle of the Ia Drang]] and the [[Battle of Bong Son]], as well as joint 'search and destroy' operations against Communists. During this period, the U.S. concept of the joint war developed. ||| Military strategy ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Battle of Ia Drang ||| The resulting campaign is called the [[Battle of Ia Drang]], with a followup at the [[Battle of Bong Son]], but Ia Drang actually had three major phases: ||| Military strategy ||| North Vietnamese strategic buildup ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Battle of Khe Sanh ||| *The 1967–68 campaign, which appears to have had a broader concept, not executed, than the most obvious aspects of the [[Battle of Khe Sanh]] and the [[Tet Offensive]]. ||| Military strategy ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Attleboro ||| To act before the 1966–67 Communist offensive, [[Operation Attleboro]], starting in November 1965, was the first of many 'search and destroy' missions launched by the U.S., such as [[Operation Junction City]] and [[Operation Cedar Falls]] ||| The 'other war' ||| Winter–spring 1967 ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Commando Hunt ||| North Vietnam received foreign military aid shipments through its ports and rail system. This materiel (and PAVN manpower) was then shuttled south down the logistical corridor called by the Americans the Ho Chi Minh Trail (the [[Annamite Range|Truong Son]] Strategic Supply Route to the North Vietnamese). At the end of an arduous journey the men and supplies entered South Vietnam's border areas. Beginning in December 1964, however, the U.S. began a covert aerial interdiction [[Laotian Civil War|campaign in Laos]] that would continue until the end of the conflict in 1973 (see [[Operation Barrell Roll]], [[Operation Steel Tiger]], [[Operation Tiger Hound]], and [[Operation Commando Hunt]]). ||| Flow of communist supplies ||| ||| +0 Joint warfare in South Vietnam, 1963–69 ||| Operation Junction City ||| To act before the 1966–67 Communist offensive, [[Operation Attleboro]], starting in November 1965, was the first of many 'search and destroy' missions launched by the U.S., such as [[Operation Junction City]] and [[Operation Cedar Falls]] ||| The 'other war' ||| Winter–spring 1967 ||| +0 Jugurthine War ||| Siege of Numantia ||| [[Numidia]] was a Berber kingdom located in [[North Africa]] (roughly corresponding to northern modern day [[Algeria]]) not far from [[Roman Republic|Rome]]'s arch enemy, [[Carthage]]. King Micipsa died in 118 BC. He was survived by two natural sons, [[Adherbal (king of Numidia)|Adherbal]] and [[Hiempsal I|Hiempsal]], and his adopted nephew, Jugurtha. It was Micipsa's wish that all three would share his kingdom after his death. After King Micipsa's death, Jugurtha proved to be a ruthless and unscrupulous man who would do anything to achieve what he wanted, including murder, bribery, treachery, and assassination. Jugurtha learned Roman ways and military tactics while commanding the Numidian army under [[Scipio Aemilianus]] at the [[Siege of Numantia]]. ||| Jugurtha and Numidia ||| ||| +0 July 1936 military uprising in Barcelona ||| May Days ||| After the defeat of the coup in Barcelona, the CNT was the real power in the city until the [[May Days]] in 1937, although the Generalitat's government remained. After the coup, the CNT had 30,000 armed men in Barcelona, while the government had only 5000. ||| Aftermath ||| ||| +0 July Days ||| October Revolution ||| The Bolsheviks intended to hold peaceful demonstrations, however armed clashes broke out. [[Lenin]] went into hiding, while other leaders were arrested. The outcome of the July Days represented a temporary decline in the growth of Bolshevik power and influence in the period before the [[October Revolution]]. ||| ||| ||| +0 June 1941 uprising in eastern Herzegovina ||| Operation Barbarossa ||| The [[Nazi Germany|German]] [[Operation Barbarossa|invasion of the Soviet Union]] began on 22 June. Over the next two days, the sporadic revolts by Serbs against the NDH in eastern Herzegovina erupted into mass rebellion, triggered by Ustaše persecution, Serb solidarity with the Russian people, hate and fear of the NDH authorities, and other factors. Serb rebels, under the leadership of both local Serbs and [[Montenegrins of Bosnia and Herzegovina|Montenegrins]], attacked police, [[gendarmerie]], Ustaše and [[Croatian Home Guard (World War II)|Croatian Home Guard]] forces in the region. In the first few days, the rebels captured gendarmerie posts in several villages, set up roadblocks on the major roads and ambushed several military vehicles. On the night of 26 June, the rebels mounted a sustained attack on the town of [[Nevesinje]] in an attempt to capture it, but the garrison held out until the morning of 28 June when NDH troops broke through the rebel roadblocks. ||| ||| ||| +0 Juno Beach ||| Gold Beach ||| '''Juno''' or '''Juno Beach''' was one of five beaches of the [[Allies (World War II)|Allied]] invasion of [[German occupation of France during World War II|German occupied France]] in the [[Normandy landings]] on 6 June 1944, during the [[Second World War]]. The beach spanned from [[Courseulles-sur-Mer|Courseulles]], a village just east of the British beach [[Gold Beach|Gold]], to [[Saint-Aubin-sur-Mer, Calvados|Saint-Aubin-sur-Mer]], just west of the British beach [[Sword Beach|Sword]]. Taking Juno was the responsibility of the [[3rd Canadian Infantry Division]], and [[British Commandos|commandos]] of the [[Royal Marines]], all under the command of British [[I Corps (United Kingdom)|I Corps]], with support from Naval Force J, the Juno contingent of the invasion fleet, including the [[Royal Canadian Navy]] (RCN). The objectives of the 3rd Division on D-Day were to cut the Caen-Bayeux road, seize the Carpiquet airport west of Caen, and form a link between the two British beaches of Gold and Sword on either side of Juno Beach. ||| ||| ||| +0 Juno Beach ||| Liberation of Paris ||| After delays due to both logistical difficulties and poor weather, the D-Day of Overlord, the largest amphibious operation ever, was postponed 24 hours to 6 June 1944. Eisenhower and [[Bernard Montgomery|Montgomery]], commander of [[21st Army Group]], aimed to capture Caen within the first day, and [[Liberation of Paris|liberate Paris]] within 90 days. ||| Background ||| Invasion of Normandy ||| +0 Juno Beach ||| Omaha Beach ||| After gaining valuable experience in amphibious assaults and inland fighting, Allied planners returned to the plans to invade [[Northern France]], now postponed to 1944. There were originally seventeen sectors along the Normandy coastline with codenames taken from one of the [[spelling alphabets]] of the time, from Able, west of [[Omaha Beach|Omaha]], to Rodger on the east flank of the invasion area. Eight further sectors were added when the planned invasion was extended to include [[Utah Beach|Utah]] on the Cotentin Peninsula. Sectors were further subdivided into beaches identified by the colours Green, Red and White. ||| Background ||| Invasion of Normandy ||| +0 Juno Beach ||| Utah Beach ||| After gaining valuable experience in amphibious assaults and inland fighting, Allied planners returned to the plans to invade [[Northern France]], now postponed to 1944. There were originally seventeen sectors along the Normandy coastline with codenames taken from one of the [[spelling alphabets]] of the time, from Able, west of [[Omaha Beach|Omaha]], to Rodger on the east flank of the invasion area. Eight further sectors were added when the planned invasion was extended to include [[Utah Beach|Utah]] on the Cotentin Peninsula. Sectors were further subdivided into beaches identified by the colours Green, Red and White. ||| Background ||| Invasion of Normandy ||| +0 Kanalkampf ||| Battle of France ||| The attacks against the Channel convoys are considered to be the start of the Battle of Britain. There is some dispute in the historiography among historians concerning the dates for the beginning and end of the Battle of Britain. The British histories of the battle generally hold 10 July as the official start date. However, writers and historians in Germany and Britain acknowledge that large-scale air battles were fought over the Channel in between the [[Battle of France]] and Britain. Deliberate attacks against British coastal targets and convoys began on 4 July. Throughout the ''Kanalkampf'' operations, the ''Luftwaffe'' was supported, albeit minimally, by the [[E-Boats]] of the ''[[Kriegsmarine]]'' (German navy). ||| ||| ||| +0 Kanalkampf ||| Phoney War ||| German air attacks on Britain naval targets had commenced during the '[[Phoney War]]' period. On 16 October 1939 Luftwaffe air raids on British naval bases began with a bomber attack on warships at [[Rosyth]] on the [[Firth of Forth]], three of the raiders were shot down by [[Supermarine Spitfire|Spitfires]]. ||| Preliminary battles ||| ||| +0 Kargil War ||| Indo-Pakistani War of 1971 ||| After the [[Indo-Pakistani War of 1971]], there had been a long period with relatively few direct armed conflicts involving the military forces of the two neighbors – notwithstanding the efforts of both nations to control the [[Siachen Glacier]] by establishing military outposts on the surrounding mountains ridges and the resulting military skirmishes in the 1980s. as well as the conducting of [[Nuclear testing|nuclear tests]] by both countries in 1998, led to an increasingly belligerent atmosphere. In an attempt to defuse the situation, both countries signed the [[Lahore Declaration]] in February 1999, promising to provide a peaceful and bilateral solution to the [[Kashmir conflict]]. ||| Background ||| ||| +0 Kashmir conflict ||| Indo-Pakistani War of 1971 ||| In 1965 and 1971, heavy fighting again broke out between India and Pakistan. The [[Indo-Pakistani War of 1971]] resulted in the defeat of Pakistan and the Pakistani military's surrender in [[East Pakistan]], leading to the creation of [[Bangladesh]]. The [[Simla Agreement]], signed in 1972 between India and Pakistan, allowed both countries to settle all issues by peaceful means through mutual discussion within the framework of the UN Charter. ||| Timeline ||| 1965 and 1971 wars ||| +0 Katyn Commission ||| Operation Barbarossa ||| The '''Katyn Commission''' or the '''International Katyn Commission''' was the [[International Red Cross]] committee formed in April 1943 under request by [[Nazi Germany|Germany]] to investigate the [[Katyn massacre]] of some 22,000 Polish nationals during the [[Territories of Poland annexed by the Soviet Union#Soviet occupation of Poland, 1939–1941|Soviet occupation of Eastern Poland]], mostly [[prisoners of war]] from the [[September Campaign]] including [[Polish Army]] officers, [[intelligentsia]], civil servants, priests, police officers and numerous other professionals. Their bodies were discovered in a series of large mass graves in the forest near [[Smolensk]] in Russia following [[Operation Barbarossa]]. ||| ||| ||| +0 Kaunas Offensive ||| Operation Doppelkopf ||| During August, Raus' Third Panzer Army was reinforced and mounted a counter-offensive on the Front's northern flank in [[Operation Doppelkopf]]. German troops also delivered a series of strong counter-attacks south-west and west of Kaunas. Having countered these, the 3rd Belorussian Front's troops moved a further 30–50 km and advanced towards deliberately prepared German fortified positions on the line east of [[Raseiniai]] and [[Kybartai]] - [[Suwałki]]. From 29 August on the orders of ''Stavka'', the Front went over to the defensive. As a result of the Kaunas operation the forces of the 3rd Belorussian Front reached the eastern borders of [[East Prussia]]. ||| The offensive ||| ||| +0 Kent State shootings ||| Cambodian Campaign ||| Some of the students who were shot had been protesting the [[Cambodian Campaign]], which President [[Richard Nixon]] announced during a television address on April 30. Other students who were shot had been walking nearby or observing the protest from a distance. ||| ||| ||| +0 Kerensky Offensive ||| February Revolution ||| The offensive was ordered by [[Alexander Kerensky]], Minister of War in the Russian provisional government, and led by General [[Aleksei Brusilov|Brusilov]]. Such a decision was ill-timed, because, following the [[February Revolution]], there were strong popular demands for peace, especially within the army, whose fighting capabilities were quickly deteriorating. ||| Background ||| ||| +0 Kerensky Offensive ||| July Days ||| This offensive helped the start of the [[July Days]], and also affected the situation in [[Romania during World War I|Romania]]. Russo-Romanian forces, which first broke the Austro-Hungarian front at [[Battle of Mărăşti|Mărăşti]] in support of the Kerensky Offensive, were stopped. ||| Aftermath ||| ||| +0 Kerensky–Krasnov uprising ||| Junker mutiny ||| Following the [[October Revolution]], Kerensky fled Petrograd and went to [[Pskov]], where he rallied troops loyal to his cause in an attempt to retake the capital. He appointed [[Pyotr Krasnov]] to lead this army. Also cadets from military schools, the so-called [[Junker mutiny]] supported Kerensky in his bid to retake control of the government. His troops successfully captured [[Tsarskoe Selo]], but the next day were defeated at [[Pulkovo Heights|Pulkovo]]. The failure of the uprising led to Kerensky being forced to go into exile, eventually finding refuge in [[France]] and later the [[United States]]. ||| ||| ||| +0 Kerensky–Krasnov uprising ||| October Revolution ||| Following the [[October Revolution]], Kerensky fled Petrograd and went to [[Pskov]], where he rallied troops loyal to his cause in an attempt to retake the capital. He appointed [[Pyotr Krasnov]] to lead this army. Also cadets from military schools, the so-called [[Junker mutiny]] supported Kerensky in his bid to retake control of the government. His troops successfully captured [[Tsarskoe Selo]], but the next day were defeated at [[Pulkovo Heights|Pulkovo]]. The failure of the uprising led to Kerensky being forced to go into exile, eventually finding refuge in [[France]] and later the [[United States]]. ||| ||| ||| +0 Khobar Towers bombing ||| 1983 Beirut barracks bombing ||| The main security concern at the Khobar Towers compound before the bombing was to prevent a vehicle from entering the compound itself as in the [[1983 Beirut barracks bombing]]. The Pentagon's report from that incident suggested, like the Khobar report, that even a Beirut-sized bomb would have still caused significant damage from as far as 300 feet away. Officials concluded that bomb size was less important than effective proximity for producing catastrophic results. ||| Aftermath ||| Investigation ||| Intelligence and security failures +0 Khojaly Massacre ||| Armenian Genocide ||| According to the Azerbaijani mass media, the Armenian side regularly presents images of victims of the Khojaly massacre as 'Armenian victims of [[Pogrom of Armenians in Baku|Baku Pogrom]], [[Sumgait pogrom]], [[Armenian Genocide]]', etc. ||| Victims ||| ||| +0 Khojaly Massacre ||| Kosovo War ||| Armenian news agencies claim that the Azerbaijani side regularly presents pictures of victims of other wars, such as the [[Kosovo War]] from 1998/1999, Afghanistan, earthquake victims or refugees from other regions as 'Azerbaijani victims of the Khojaly massacre'. ||| Victims ||| ||| +0 King George's War ||| Siege of Louisbourg (1745) ||| '''King George's War''' (1744–1748) is the name given to the military operations in [[North America]] that formed part of the [[War of the Austrian Succession]] (1740–1748). It was the third of the four [[French and Indian Wars]]. It took place primarily in the British provinces of [[Province of New York|New York]], [[Province of Massachusetts Bay|Massachusetts Bay]], [[Province of New Hampshire|New Hampshire]], and [[Nova Scotia]]. Its most significant action was an expedition organized by Massachusetts Governor [[William Shirley]] that [[Siege of Louisbourg (1745)|besieged]] and ultimately captured the French [[fortress of Louisbourg]], on [[Cape Breton Island]] in Nova Scotia, in 1745. In [[French language|French]], it is known as the '''Third Intercolonial War'''. ||| ||| ||| +0 King Philip's War ||| Battles of Lexington and Concord ||| Except in Rhode Island, nearly all layers of government and church life remained 'Puritan', and only a few of the wealthiest and socially most distinguished joined the British government-sponsored [[Anglicanism|Anglican]] church. Most New Englanders continued to live in self-governing and mostly self-sufficient towns, where they attended the Puritan [[Congregational]] or dissident churches that they had already established by 1690. As the population increased, new towns, complete with their own churches, militias, etc. were nearly all established by the sons and daughters of the original settlers, and in nearly all cases they were modeled after the original settlements. Few people lived outside of an established town. The many conflicts between the [[British crown]] and [[British Parliament]] during the next hundred years made self-government not only desirable but relatively easy to continue in New England. The squabbles that the New Englanders had with the British government would eventually lead to [[Battles of Lexington and Concord|Lexington, Concord]], and [[Battle of Bunker Hill|Bunker Hill]] by 1775. When the British were forced to evacuate Boston in 1776, only [[Loyalist (American Revolution)|a few thousand]] of the more than 700,000 New Englanders of the time went with them. ||| Aftermath ||| Southern New England ||| +0 Kokoda Track campaign ||| Battle of Singapore ||| After the [[Battle of Singapore|fall of Singapore]], the Australian government and many Australians feared that Japan would invade the Australian mainland. Australia was ill-prepared to counter such an attack as the [[Royal Australian Air Force]] (RAAF) lacked modern aircraft and the [[Royal Australian Navy]] (RAN) was too small and unbalanced to counter the [[Imperial Japanese Navy]]. Additionally, the Army, although large, contained many inexperienced units and lacked mobility. ||| Background ||| Strategic context ||| +0 Kokoda Track campaign ||| Gallipoli Campaign ||| While the [[Gallipoli Campaign]] of [[World War I]] was Australia's first military test as a new nation, the fighting during the Kokoda campaign represents the first time in [[History of Australia|the nation's history]] that its security was directly threatened. Although it has since become accepted that an invasion of Australia was not possible, or even planned by the Japanese, at the time there was a very real belief within Australia that this was possible and as such the Kokoda campaign has come to be viewed by some as the battle that 'saved Australia'. ||| Aftermath ||| Significance of the Kokoda Track campaign ||| +0 Kokoda Track campaign ||| Guadalcanal Campaign ||| On 10 September, Potts handed over command to Porter, who was subsequently forced to withdraw to Ioribaiwa. The Japanese unsuccessfully mounted a further attack the following day, as they began to run out of momentum against the Australians who began to receive further reinforcements, including [[brigade (military)|brigades]] from the experienced Australian [[7th Division (Australia)|7th Division]] under the command of Major General [[Arthur Samuel Allen|Arthur Allen]]. The [[25th Brigade (Australia)|25th Brigade]] under Brigadier [[Kenneth Eather]] took over the forward area on 14 September. Heavy fighting continued around Ioribaiwa for the next week, however; and the Australians were again forced to withdraw on 17 September, this time to Imita Ridge, in sight of Port Moresby itself. Having outrun his supply lines and following the reverses suffered by the Japanese at [[Guadalcanal Campaign|Guadalcanal]], Horii was now ordered on to the defensive, marking the limit of the Japanese advance southwards. The Japanese subsequently began to withdraw on 24 September to establish a defensive position on the north coast; but they were followed by the Australians under Eather, who recaptured Kokoda on 2 November. Further fighting continued into November and December as the Australian and [[U.S. Army|United States]] forces assaulted the Japanese beachheads, in what later became known as the [[Battle of Buna–Gona]]. ||| ||| ||| +0 Kosovo Operation (1944) ||| Albanian resistance during World War II ||| The '''Kosovo Operation''' (October 15-November 20, 1944) was a series of military operations leading up to one final push during [[World War II]], launched by the Bulgarian army (commanded by [[Major general|Major General]] [[Kiril Stanchev]]) with the assistance of [[Yugoslav Partisans|Yugoslav]] and [[Albanian resistance during World War II|Albanian]] Partisans to expel [[Nazi Germany|German]] forces from [[Kosovo]] and prevent the retreat of German forces from Greece. The operation resulted in the capture of Kosovo by the Communists. ||| ||| ||| +0 Kosovo War ||| 2003 invasion of Iraq ||| The campaign exposed significant weaknesses in the U.S. arsenal, which were later addressed for the [[War in Afghanistan (2001–present)|Afghanistan]] and [[2003 invasion of Iraq|Iraq]] campaigns. [[AH-64 Apache|Apache attack helicopters]] and [[AC-130 Spectre]] gunships were brought up to the front lines but were never used after two Apaches crashed during training in the Albanian mountains. Stocks of many precision missiles were reduced to critically low levels. For combat aircraft, continuous operations resulted in skipped maintenance schedules, and many aircraft were withdrawn from service awaiting spare parts and service. Also, many of the precision-guided weapons proved unable to cope with Balkan weather, as the clouds blocked the laser guidance beams. This was resolved by retrofitting bombs with [[Global Positioning System]] satellite guidance devices that are immune to bad weather. Although [[Unmanned aerial vehicle|pilotless surveillance aircraft]] were extensively used, often attack aircraft could not be brought to the scene quickly enough to hit targets of opportunity. This led missiles being fitted to Predator drones in Afghanistan, reducing the 'sensor to shooter' time to virtually zero. ||| Military and political consequences ||| ||| +0 Kosovo War ||| World War II ||| Tensions between the Serbian and Albanian communities in Kosovo simmered throughout the 20th century and occasionally erupted into major violence, particularly during the [[First Balkan War]] (1912–13), [[World War I]] (1914–18), and [[World War II]] (1939–45). After 1945 the [[League of Communists of Yugoslavia|socialist]] government under [[Josip Broz Tito]] systematically repressed all manifestations of [[nationalism]] throughout Yugoslavia, seeking to ensure that no republic or nationality gained dominance over the others. In particular, Tito diluted the power of [[Socialist Republic of Serbia|Serbia]]—the largest and most populous republic—by establishing autonomous governments in the Serbian province of [[Vojvodina]] in the north and in [[Autonomous Province of Kosovo and Metohija (1946–1974)|Kosovo]] in the south. Kosovo's borders did not precisely match the areas of ethnic Albanian settlement in Yugoslavia (significant numbers of Albanians remained in the [[Albanians in the Republic of Macedonia|Republic of Macedonia]], [[Albanians in Montenegro|Montenegro]] and [[Albanians in Serbia|Serbia]]). Kosovo's formal autonomy, established under the 1945 Yugoslav constitution, initially meant relatively little in practice. The [[UDBA|secret police]] (the UDBA) cracked down hard on nationalists. In 1956 a number of [[Albanians]] went on trial in Kosovo on charges of espionage and subversion. The threat of separatism was in fact minimal, as the few underground groups aiming for union with [[Albania]] had little political significance. Their long-term impact became substantial, though, as some—particularly the Revolutionary Movement for Albanian Unity, founded{{when|date=October 2014}} by [[Adem Demaçi]]—would eventually form the political core of the [[Kosovo Liberation Army]] (founded in 1990). Demaci himself was imprisoned in 1964 along with many of his followers. Yugoslavia underwent a period of economic and political crisis in 1969, as a massive government program of economic reform widened the gap between the rich north and poor south of the country. ||| Background ||| Kosovo in Tito's Yugoslavia (1945–1980) ||| +0 Kronstadt rebellion ||| Paris Commune ||| On March 17, [[Bolshevik]] forces entered the city of Kronstadt after having suffered over 10,000 fatalities. On March 19, the Bolshevik forces took full control of the city of Kronstadt after having suffered fatalities ranging from 527 to 1,412 (or higher if the toll from the first assault is included). The day after the surrender of Kronstadt, the Bolsheviks celebrated the fiftieth anniversary of the [[Paris Commune]]. ||| Suppression of the revolt ||| ||| +0 Kursha-2 ||| October Revolution ||| '''Kursha-2''' ({{lang-ru|Ку́рша-2}}) was an industrial community in the [[Meshchera Lowlands|Central Meshchyora]], [[Ryazan Oblast]]. It was built soon after the [[October Revolution]] for the exploitation of the local forests, and was annihilated by a [[firestorm]] on 3 August 1936. The disaster caused 1200 human deaths. ||| ||| ||| +0 Lahore Front ||| Battle of Phillora ||| In the north India won another decisive battle at [[Battle of Phillora|Phillora]] supported by its 1 Armoured Division on 11th destroying the Pakistani counterattack. Indians continued to advance towards Chawinda in the north from Phillora and reached Chawinda by 17 September. {{cite book ||| The battle ||| ||| +0 Landing Operation on Hainan Island ||| Battle of Dengbu Island ||| The communists achieved victory in Hainan despite having little experience in amphibious warfare and the PLA was able to restore the morale after similar unsuccessful attacks at [[Battle of Kuningtou|Jinmen]] and [[Battle of Dengbu Island|Dengbu]] in fall of 1949. Communist casualties totaled 4,500 while nationalist losses are estimated around 33,000. The remainder of the nationalist troops retreated to Taiwan. ||| Conclusion ||| ||| +0 Landing at Nadzab ||| Guadalcanal Campaign ||| However, the impact was far greater than anyone on the Allied side realised, and the ramifications went far beyond New Guinea. Imperial General Headquarters had regarded the defeats in the [[Guadalcanal Campaign]] and [[Battle of Buna–Gona]] as setbacks only, and had continued to plan offensives in the South West Pacific. Now it concluded that the Japanese position was over-extended. A new defensive line was drawn running through [[Western New Guinea]], the [[Caroline Islands]] and the [[Mariana Islands]]. Henceforth, positions beyond that line would be held as an outpost line. General Imamura was now charged not with winning a decisive victory, but only with holding on as long as possible so as to delay the Allied advance. ||| Aftermath ||| Outcome ||| +0 Landing at Nadzab ||| New Guinea campaign ||| The '''Landing at Nadzab''' was an [[airborne forces|airborne landing]] on 5 September 1943 during the [[New Guinea campaign]] of [[World War II]] in conjunction with the [[landing at Lae]]. The Nadzab action began with a parachute drop at [[Lae Nadzab Airport]], combined with an overland force. ||| ||| ||| +0 Landing at Nassau Bay ||| New Guinea campaign ||| The '''Landing at Nassau Bay''' was an [[amphibious landing]] by Allied forces at [[Nassau Bay, Papua New Guniea|Nassau Bay]] during the [[New Guinea campaign]] of World War II that took place between 30 June and 6 July 1943. The landing was undertaken so that Allies could secure a [[beachhead]] to establish a supply point to shorten their supply lines for the proposed attack on [[Salamaua]] as part of the [[Salamaua-Lae campaign]]. ||| ||| ||| +0 Landing on Emirau ||| Battle of Eniwetok ||| MacArthur's Chief of Staff, [[Lieutenant General (United States)|Lieutenant General]] [[Richard K. Sutherland]], representing his commander before the Joint Chiefs, strenuously objected to the omission of Kavieng, which he believed could be captured on 1 April without delaying other operations. There was debate over how much of a threat the Japanese base at Kavieng was. Nimitz felt that as a result of the [[Battle of Eniwetok]], Truk itself would soon be under constant attack and the flow of aircraft to Rabaul would be cut off. On 12 March, orders went out to MacArthur and Nimitz canceling Operation [Kavieng] and ordering them to 'complete the isolation of the Rabaul-Kavieng area with the minimum commitment of forces'. ||| Background ||| Strategy ||| +0 Landing on Humlebæk ||| Second Northern War ||| The Swedish king [[Charles XI]] had died in 1697. Sweden's competitors, [[Russia]], [[Denmark-Norway]] and [[Saxony]]-[[Polish-Lithuanian Commonwealth|Poland-Lithuania]], tried to exploit this by forming a [[coalition]] in order to regain their earlier losses. Denmark wanted to reclaim territory lost in the [[Second Northern War]], Russia to get a port to the [[Baltic Sea]], and Saxony-Poland-Lithuania to take back [[Livonia]]. This, they supposed, could be easily achieved against the new and inexperienced Swedish king, [[Charles XII]]. ||| Background ||| ||| +0 Laotian Civil War ||| Bay of Pigs Invasion ||| The [[Operation Millpond]] B-26s had been scheduled to strike at Kong Le, but the strike was stayed by an event on the far side of the world. The [[Bay of Pigs Invasion]] failed, and that failure gave pause to U.S. actions in Laos. A ceasefire was sought. Simultaneously, the Programs Evaluation Office shed its civilian guise and went above ground to become a [[Military Advisory Assistance Group]]. Emblematic of the change, the Hotfoot teams donned their U.S. uniforms and became White Star Mobile Training Teams. ||| Chronology of the Laotian Civil War ||| 1961: Superpowers' involvement deepens ||| +0 Laotian Civil War ||| Operation Barrel Roll ||| The Plain of Jars activities expanded by December 1964, were named [[Operation Barrel Roll]], and were under the control of the U.S. ambassador to Laos, who approved all targets before they were attacked. ||| Chronology of the Laotian Civil War ||| 1964–65: Escalation and US Air Force involvement ||| +0 Laotian Civil War ||| Operation Commando Hunt ||| Throughout 1968, the communists slowly advanced across the northern part of Laos, defeating Laotian forces time and time again. An important U.S. navigation aids site fell in the [[Battle of Lima Site 85]] on 10 March 1968. This success was achieved despite U.S. military advice and assistance. In November, the U.S. launched an air campaign against the Ho Chi Minh Trail because North Vietnam was sending more troops and supplies than ever along this route to South Vietnam. This new operation, named [[Operation Commando Hunt]], continued until 1972, with little success. ||| Chronology of the Laotian Civil War ||| 1968: Royal Lao Army neutralized ||| +0 Laotian Civil War ||| World War II ||| The end of [[World War II]] left Laos in political chaos. The French, who had been displaced from their protectorate by the Japanese, wanted to resume control of Laos, and sponsored guerrilla forces to regain control. The Japanese had proclaimed Laos independent even as they lost the war. Though King [[Sisavang Vong]] thought Laos was too small for independence he had proclaimed the end of the French protectorate status though he favored the French return. He let it be known he would accept independence if it should occur. Thus there was a nascent movement for independence amid the turmoil. ||| Chronology of the Laotian Civil War ||| 1945: Prelude to war ||| +0 Le Paradis massacre ||| Battle of Arras (1940) ||| By the time the operation had finished in Cambrai, the first German units had reached the English Channel, but the British counter-attacked just west of [[Arras]] on 21 May, following on from the counter-attack of the day before ([[Battle of Arras (1940)|Battle of Arras]]). The ''Totenkopf'' division suffered casualties of just under 100 men in repelling the assault. ||| Background ||| ||| +0 Le Paradis massacre ||| Battle of Dunkirk ||| The '''Le Paradis massacre''' was a [[war crime]] committed by members of the 14th Company, [[3rd SS Panzer Division Totenkopf|SS Division Totenkopf]], under the command of [[Hauptsturmführer]] [[Fritz Knöchlein]]. It took place on 27 May 1940, during the [[Battle of France]], at a time when the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) was attempting to retreat through the [[Pas-de-Calais]] region during the [[Battle of Dunkirk]]. ||| ||| ||| +0 Le Paradis massacre ||| Battle of France ||| The '''Le Paradis massacre''' was a [[war crime]] committed by members of the 14th Company, [[3rd SS Panzer Division Totenkopf|SS Division Totenkopf]], under the command of [[Hauptsturmführer]] [[Fritz Knöchlein]]. It took place on 27 May 1940, during the [[Battle of France]], at a time when the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) was attempting to retreat through the [[Pas-de-Calais]] region during the [[Battle of Dunkirk]]. ||| ||| ||| +0 Left-wing uprisings against the Bolsheviks ||| October Revolution ||| The '''left-wing uprisings against the Bolsheviks''' were a series of [[rebellion]]s and uprisings against the [[Bolsheviks]] by rival [[left-wing politics|left-wing parties]] that started soon after the [[October Revolution]], continued through the [[Russian Civil War]], and lasted into the first few years of [[Soviet Union|Soviet]] rule. They were led or supported by left-wing groups such as some factions of the [[Socialist Revolutionary Party]], [[Left Socialist Revolutionaries]], [[Mensheviks]], and [[anarchists]]. The uprisings started in 1918 and continued during and after the Civil War until around 1924. The Bolsheviks increasingly abandoned attempts to invite these groups to join the government and instead suppressed them with force. ||| ||| ||| +0 Leipzig salient ||| First day on the Somme ||| On the [[First day on the Somme]] (1 July 1916), the {{lang|de|''Leipzig''}} Salient was attacked by the 1/17th [[Highland Light Infantry]] (17th HLI) of the [[32nd Division (United Kingdom)|32nd Division]]. the battalion crept forward at {{nowrap|7.23 a.m.,}} ready to rush the German defences as soon as the British barrage lifted at {{nowrap|7:30 a.m.}} The Scots advanced to a line {{convert|30|–|40|yd|m}} short of the German front line, ready to rush the trench as soon as the British barrage lifted. The Scots rushed forward to the redoubt and caught the German garrison while they were still sheltering in their dugouts in the quarry at the centre of the redoubt. The 17th HLI then pressed on to the next objective but were forced back to the {{lang|de|''Leipzig''}} Redoubt, where they consolidated with help from troops of the 2nd [[King's Own Yorkshire Light Infantry]]. ||| ||| ||| +0 Leningrad Strategic Defensive ||| Baltic Operation ||| Operations immediately preceding the campaign in time and space was the [[Baltic Operation|Baltic Strategic Defensive Operation]]. Operations continued on the outskirts of Leningrad include the [[1st Sinyavino operation|1st]] and [[2nd Sinyavino operation]]s from 10 September - 28 October 1941. The [[Tikhvin Defensive]] from 16 October - 18 November 1941. To the south only the [[Demyansk Pocket|Demyansk Offensive]] from 7 January - 25 May 1942 took place. ||| Area and Period Covered During the Operation ||| Period ||| +0 Leningrad Strategic Defensive ||| Battle of Hanko (1941) ||| The campaign was conducted in the area to the northwest of the [[Kalinin Oblast|Kalinin Region]] to the [[Baltic Sea]]. In the north the land line of operations was limited to the shores of the [[Gulf of Finland]], north of the Gulf Soviet troops were engaged in the [[Arctic-Karelia Strategic Defensive]] and the [[Battle of Hanko (1941)|defense of the Hanko Peninsula]]. In the east the German troops reached the southern shore of [[Lake Ladoga]], south along the [[Kirisha River]] to [[Kirishi]], then south along the [[Volkhov River]] to [[Veliky Novgorod]], including the city, then along the western side of [[Lake Ilmen]] to [[Staraya Russa]], from there to the north end of [[Lake Vella]] and from the western boundary of the lake to the north shore of [[Lake Seliger]] to the region west of [[Peno, Russia|Peno]]. South of the border demarcation operated the forces of German [[Army Group Center]]. The width of the fighting front was roughly 450 kilometers and advanced a total of 270-300 kilometers due to Soviet withdrawals. ||| Area and Period Covered During the Operation ||| Territory ||| +0 Leningrad Strategic Defensive ||| Demyansk Pocket ||| Operations immediately preceding the campaign in time and space was the [[Baltic Operation|Baltic Strategic Defensive Operation]]. Operations continued on the outskirts of Leningrad include the [[1st Sinyavino operation|1st]] and [[2nd Sinyavino operation]]s from 10 September - 28 October 1941. The [[Tikhvin Defensive]] from 16 October - 18 November 1941. To the south only the [[Demyansk Pocket|Demyansk Offensive]] from 7 January - 25 May 1942 took place. ||| Area and Period Covered During the Operation ||| Period ||| +0 Leningrad Strategic Defensive ||| Siege of Leningrad ||| The end of the Leningrad Strategic Defensive is followed by the [[Siege of Leningrad]] which would last from 8 September 1941 - 27 January 1944. ||| Area and Period Covered During the Operation ||| Period ||| +0 Liberal Democrats leadership election, 2006 ||| Iraq War ||| In the wake of the [[United Kingdom general election, 2005|2005 general election]], Kennedy's leadership came under increased criticism from those who felt that the Liberal Democrats could have done even better at a time when, arguably, the [[Official Opposition]], the [[Conservative Party (UK)|Conservative Party]], were in a relatively weak position and the [[Labour Party (UK)|Labour]] Government remained unpopular in the aftermath of the [[Iraq War|invasion of Iraq]] in 2003. Leadership speculation was renewed in later 2005. After the election of [[David Cameron]] as Leader of the Conservative Party in December 2005, it was widely reported that senior members of the Liberal Democrats had told Kennedy that he must either 'raise his game' or resign. ||| The downfall of Charles Kennedy ||| ||| +0 Liberation of Paris ||| Algerian War ||| In his speech, de Gaulle emphasized the role that the French had in the liberation, and the necessity for the French people to do their 'duty of war' by advancing into the [[Benelux]] countries and Germany. De Gaulle wanted France to be among 'the victors', in order to evade the AMGOT threat. Two days later, on 28 August, the FFI, called 'the combatants without uniform', were incorporated into the New French Army (''nouvelle armée française''). The New French Army was fully equipped with U.S. equipment, such as uniforms, helmets, weapons and vehicles, and they continued to be used until after the [[Algerian War]] in the 1960s. ||| Aftermath ||| National unity ||| +0 Liberation of Paris ||| Colmar Pocket ||| Although Paris was liberated, there was still heavy fighting in the rest of France. Large portions of the country were still occupied after the successful [[Operation Dragoon]] in southern France, which extended into the south-western region of the [[Vosges Mountains]] from 15 August to 14 September 1944. Fighting went on in [[Colmar Pocket|Alsace]] and [[Lorraine Campaign|Lorraine]] in eastern France during the last months of 1944 until the early months of 1945. ||| Aftermath ||| War situation ||| +0 Liberation of Paris ||| European theatre of World War II ||| General [[Dwight D. Eisenhower]], the Supreme Commander of the [[Supreme Headquarters Allied Expeditionary Force]] of the [[European theatre of World War II]], did not consider the liberation of Paris to be a primary objective. The goal of the U.S. and [[British Armed Forces|British]] Army was to reach Berlin before the [[Soviet Army]], and therefore end World War II in Europe, which would allow the Allies to concentrate all their efforts on the Pacific front. ||| Background ||| ||| +0 Liberation of Paris ||| Operation Dragoon ||| Although Paris was liberated, there was still heavy fighting in the rest of France. Large portions of the country were still occupied after the successful [[Operation Dragoon]] in southern France, which extended into the south-western region of the [[Vosges Mountains]] from 15 August to 14 September 1944. Fighting went on in [[Colmar Pocket|Alsace]] and [[Lorraine Campaign|Lorraine]] in eastern France during the last months of 1944 until the early months of 1945. ||| Aftermath ||| War situation ||| +0 Libyan Civil War (2011) ||| Battle of Tripoli (2011) ||| In August, rebel forces [[2011 Libyan rebel coastal offensive|launched an offensive on the government-held coast of Libya]], taking back territory lost months before and ultimately [[Battle of Tripoli (2011)|capturing the capital city of Tripoli]], On 16 September 2011, the National Transitional Council was recognised by the [[United Nations]] as the legal representative of Libya, replacing the Gaddafi government. Muammar Gaddafi remained at large until 20 October 2011, when he was [[Death of Muammar Gaddafi|captured and killed]] attempting to escape from [[Sirte]]. ||| ||| ||| +0 Linyi Campaign ||| Second Sino-Japanese War ||| For the former [[Kuomintang|nationalist]] turned Japanese puppet regime forces, these [[Warlord era|warlords]] and their troops had no problem of following [[Chiang Kai-shek]]'s orders, and they were eager to prove themselves. These [[Warlord era|warlords]] and their troops were well aware that due to the collaboration with the Japanese invaders during the [[Second Sino-Japanese War]], they were well hated by the general population in [[China]], including those [[Kuomintang|nationalists]] who refused to surrender to the enemy and fought the enemy until the eventual victory. Therefore, in the impending demilitarization after [[World War II]], they were certainly be disarmed and discharged, which would probably be the best outcome and the power of these [[Warlord era|warlord]] would be reduced or even completely eliminated as a result. [[Chiang Kai-shek]]'s ordering them not surrendering to the [[communist]]s and fighting off the [[communist]]s was a savior for them because by carrying out such orders, these [[Warlord era|warlords]] and their troops could legitimize themselves and thus retain their power by fighting the [[communist]]s who were targeted as rebels by [[Chiang Kai-shek]] and his [[Kuomintang|nationalist]] regime. ||| Nationalist Strategy ||| ||| +0 List of journalists killed during the Mahdist War ||| Battle of Majuba Hill ||| * John Alexander Cameron, ''[[Evening Standard|Standard]]'', killed 19 January 1885 along with St. Leger Herbert. Cameron was also an experienced war correspondent who had reported on the [[Battle of Majuba Hill]] during the [[First Boer War]] (1880–1881). ||| 1885 ||| ||| +0 List of journalists killed during the Mahdist War ||| Battle of Tel el-Kebir ||| * St. Leger Herbert (or St. Leger Algernon Herbert) (born 16 August 1850{{spaced ndash}}19 January 1885), ''[[The Morning Post]]'', the Canadian-born journalist was killed in a battle at Metammeh while covering the military actions of [[Major General]] [[Herbert Stewart]], who himself was wounded on the same day. Two days earlier had reported on the deadly Battle of Abu Klea. Herbert was a military veteran and had been previously decorated for his service at the [[Battle of Tel el-Kebir]], [[Egypt]], in 1882. ||| 1885 ||| ||| +0 Lithuanian partisans ||| Operation Barbarossa ||| Lithuania had [[Act of Independence of Lithuania|regained its independence]] in 1918 after the collapse of the [[Russian Empire]]. As pre-war tensions rose in Europe, Nazi Germany and Soviet Union signed the [[Molotov–Ribbentrop Pact]] and divided Eastern Europe into [[spheres of influence]]. Subsequently, Lithuania was [[Soviet occupation of the Baltic states (1940)|occupied by the Soviet Union in June 1940]]. The Soviets instituted [[Sovietization of the Baltic states|Sovietization policies]] and repressions. In June 1941, the Soviets [[June deportation|deported over 17,000 Lithuanians]] for forced labor to remote areas in [[Siberia]]. When a few days later [[Operation Barbarossa|Germany launched an invasion of Russia]], Lithuanians organized a [[June Uprising in Lithuania|popular anti-Soviet uprising]]. Initially, the Lithuanians greeted the Germans as liberators from the repressive Soviet rule and made plans to [[Provisional Government of Lithuania|reestablish independent Lithuania]]. However, the attitudes soon changed as the [[occupation of Lithuania by Nazi Germany]] continued. ||| Background ||| ||| +0 Liège Revolution ||| Battle of Fleurus (1794) ||| *1794 : In the [[Battle of Fleurus (1794)|battles of Fleurus]] and [[battle of Sprimont|Sprimont]], the French recapture the principality. ||| Timeline ||| ||| +0 Lochnagar mine ||| First day on the Somme ||| The '''Lochnagar mine''' was a [[Mining (military)|mine]] dug by the [[Royal Engineer tunnelling companies|Tunnelling Companies of the Royal Engineers]] under a German field fortification known as {{lang|de|''Schwabenhöhe''}}, in the front line, south of the village of [[Ovillers-la-Boisselle|La Boisselle]] in the [[Somme (department)|Somme]] ''[[département]]'' of [[France]]. The mine was named after ''Lochnagar Street'', the British trench from which the gallery was driven. It was one of eight large and eleven small [[Mines on the first day of the Somme|mines]] that were placed beneath the German lines on the British section of the Somme front. The ''Lochnagar'' mine was sprung at {{nowrap|7:28 a.m.}} on 1 July 1916, the [[First day on the Somme]]. The crater was captured and held by British troops but the attack on either flank was defeated by German small-arms and artillery fire, except on the extreme right flank and just south of La Boisselle, north of the new crater. The crater has been preserved as a memorial, where a service is held on 1 July each year. ||| ||| ||| +0 Long March ||| Battle of the Alamo ||| The battle for [[Luding Bridge]] has been portrayed as a glorious and heroic moment in Chinese Communist history, analogous to the U.S. [[Battle of the Alamo]]. The official account of the battle depicts exhausted and depleted Communist forces in a desperate situation, where they must fight across a bridge that is guarded by the numerically superior forces of Chiang Kai-shek and his warlord allies. The Communists send a small volunteer force that braves a hail of gunfire to climb across the bridge on underlying chains and assault the enemy positions on the other side, hence securing the bridgehead for the rest of the army to cross. ||| Myths ||| Luding Bridge ||| +0 Long March ||| Second Sino-Japanese War ||| The divisions of the 'Chinese Workers' and Peasants' Red Army' (紅軍) were named according to historical circumstances, sometimes in a nonconsecutive way. Early Communist units often formed by defection from existing Kuomintang forces, keeping their original designations. By the time of the Long March, numerous small units had been organized into three unified groups, the First Red Army (紅一方面軍/红一方面军/Hóng Yī Fāngmiàn Jūn), the Second Red Army (紅二方面軍/红二方面军/Hóng Èr Fāngmiàn Jūn) and the Fourth Red Army (紅四方面軍/红四方面军/Hóng Sì Fāngmiàn Jūn). Some translations refer to these same units as the “First Front Red Army', “Second Front Red Army” and “Fourth Front Red Army' to distinguish them from the earlier organizational divisions. The First Red Army formed from the First, Third and Fifth Army Groups in southern Jiangxi under command of [[Bo Gu]] and [[Li De|Otto Braun]]. When the Fourth Red Army under [[Zhang Guotao]] was formed in the [[Sichuan]]-[[Shaanxi]] border area from several smaller units, no standard nomenclature of the armies of the Communist Party existed; moreover, during the Chinese Civil War central control of separate Communist-controlled enclaves within China was limited. After the organization of these first two main forces, the Second Red Army formed in eastern [[Guizhou]] by unifying the Second and Sixth Army Groups under [[He Long]] and [[Xiao Ke]]. A “Third Red Army' was led by [[He Long]] who established his base area in the Hunan-Hubei border; by 1932 his forces were soundly defeated and in October 1934 merged with the 6th Army Corps led by Xiao Ke to form the Second Red Army. The three armies would maintain their historical designation as the First, Second and Fourth Red Armies until Communist military forces were nominally integrated into the [[National Revolutionary Army]], forming the [[Eighth Route Army]] and the [[New Fourth Army]], during the [[Second Sino-Japanese War]] from 1937 to 1945. ||| Background ||| The Red Army in 1934 ||| +0 Lord's Resistance Army insurgency ||| Second Congo War ||| In March 2002, the [[Uganda People's Defence Force]] (UPDF) launched a massive military offensive, named 'Operation Iron Fist', against the LRA bases in southern Sudan, with agreement from the [[National Islamic Front]]. This agreement, coupled with the return of Ugandan forces that were deployed in the [[Democratic Republic of Congo]] upon the official end of the [[Second Congo War]], created what the Ugandan government felt was an ideal situation in which to end a conflict that had become both an embarrassment and political liability. ||| Timeline ||| The insurgency flares (2002 to 2005) ||| +0 Lovas killings ||| Croatian War of Independence ||| The '''Lovas killings''' ({{lang-hr|masakr u Lovasu}},{{sfn|Nacional|17 April 2008}} {{lang-sr|''zločini u Lovasu''}}, {{Cyrl|злочини у Ловасу|sr}}){{sfn|B92|9 January 2014}} involved the killing of 70 [[Croat]] civilian residents of the village of [[Lovas, Croatia|Lovas]] between 10–18 October 1991, during the [[Croatian War of Independence]]. The killings took place during and in the immediate aftermath of the occupation of the village by the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) supported by [[Croatian Serb]] forces and [[List of Serbian paramilitary formations|''Dušan Silni'' paramilitaries]] on 10 October, two days after [[Independence of Croatia|Croatia declared independence from Yugoslavia]]. The occupation occurred during the [[Battle of Vukovar]], as the JNA sought to consolidate its control over the area surrounding the city of [[Vukovar]]. The killings and abuse of the civilian population continued until 18 October, when troops guarding a group of civilians forced them to walk into a [[minefield]] at gunpoint and then opened fire upon them. ||| ||| ||| +0 Lower Canada Rebellion ||| American Revolutionary War ||| The rebellion of the ''Patriotes Canadiens'' of Lower Canada, taken along with the Upper Canadian Rebellion, is often seen as the example of what might have occurred in the United States if the [[American Revolutionary War]] had failed. In Quebec, the rebellion (as well as the parliamentary and popular struggle) is now commemorated as the [[Journée nationale des Patriotes]] (National Patriotes Day) on the [[Canadian Statutory Holiday]], [[Victoria Day]]. Since the late 20th century, it has become a symbol for the [[Quebec sovereignty movement|contemporary Quebec independence movement]] (and to a lesser extent a symbol of Canada's small [[Republicanism in Canada|republican movement]]). ||| Aftermath ||| ||| +0 Lower Canada Rebellion ||| Battle of Windsor ||| When news of the arrest of the Patriote leaders reached Upper Canada, [[William Lyon Mackenzie]] launched an armed rebellion in December 1837. In the meantime, [[filibuster (military)|filibusters]] from the United States, the [[Frères chasseurs|Hunter Patriots]], formed a small militia and [[Battle of Windsor|attacked Windsor, Upper Canada]], to support the Canadian Patriots. This resulted in the declaration of [[martial law]] by the Lower Canadian government. ||| Organizing for armed conflict ||| ||| +0 Lower Canada Rebellion ||| Upper Canada Rebellion ||| The '''Lower Canada Rebellion''' ([[French language|French]]: ''La rébellion du Bas-Canada''), commonly referred to as the '''Patriots' War''' (French: ''la Guerre des patriotes'') by Quebecers, is the name given to the armed conflict in 1837-38 between the rebels of [[Lower Canada]] (now [[Quebec]]) and the [[United Kingdom|British]] colonial power of that province. Together with the simultaneous [[Upper Canada Rebellion]] in the neighbouring colony of [[Upper Canada]] (now [[Ontario]]), it formed the [[Rebellions of 1837]]. The rebellion of Lower Canada continued in 1838 and in Quebec is often called ''Les rébellions de 1837–38.'' ||| ||| ||| +0 Lower Silesian Offensive ||| Eastern Front (World War II) ||| The '''Lower Silesian Offensive''' ({{lang-ru|Нижне-Силезская наступательная операция}}) was a [[Soviet Union|Soviet]] offensive on the [[Eastern Front (World War II)|Eastern Front]] of World War II in 1945, involving forces of the [[1st Ukrainian Front]] under Marshal [[Ivan Konev]]. It cleared German troops from much of [[Lower Silesia]] and besieged a large German force in the provincial capital, [[Siege of Breslau|Breslau]]. ||| ||| ||| +0 Lower Silesian Offensive ||| Siege of Breslau ||| The '''Lower Silesian Offensive''' ({{lang-ru|Нижне-Силезская наступательная операция}}) was a [[Soviet Union|Soviet]] offensive on the [[Eastern Front (World War II)|Eastern Front]] of World War II in 1945, involving forces of the [[1st Ukrainian Front]] under Marshal [[Ivan Konev]]. It cleared German troops from much of [[Lower Silesia]] and besieged a large German force in the provincial capital, [[Siege of Breslau|Breslau]]. ||| ||| ||| +0 Lublin–Brest Offensive ||| Battle of Radzymin (1944) ||| Only days before the uprising begun in Warsaw (on 1 August), the [[Stavka]] (Soviet General Headquarters) commanded Rokossovsky to dispatch his 2nd Tank Army in direction of Warsaw's eastern suburbs ([[Praga]]). The 2nd Tank Army was to be protected on the right flank by a cavalry corps (the 2nd Guards) and the [[47th Army]], however it reached the region east of Warsaw on 29 July, before the slower 47th Army could provide support; the 47th Army and the 2nd Guards were engaged in the battle around [[Siedlce]], 50 kilometres to the east. Germans counterattacked, in what became known as the [[Battle of Radzymin (1944)|Battle of Radzymin]], with two panzer corps ([[XXXIX Panzer Corps (Germany)|XXXIX]] and [[IV SS Panzer Corps|IV SS]]). On 29 July, Radzievsky ordered his [[8th Guards Tank Corps]] (under Lieutenant General [[A. F. Popov's]]) and [[3rd Tank Corps]] (under Major General [[N. D. Vedeneev]]) to advance northward (northeast of Warsaw) aiming to turn the German defenders' left flank, as the [[16th Tank Corps (Soviet Union)|16th Tank Corps]] engaged the Germans southeast of Warsaw. 8th Guards Tank Corps was able to fight its way 20 kilometres east of the city, the 3rd Tank Corps however was stopped by a series of successive counterattacks by German armored units under [[Walter Model]]. ||| The controversy: bridgeheads instead of Warsaw ||| ||| +0 Macau Incident (1799) ||| Bali Strait Incident ||| The '''Macau Incident''' was an inconclusive encounter between a powerful squadron of [[First French Republic|French]] and [[Enlightenment in Spain|Spanish]] warships and a British [[Royal Navy]] escort squadron in the [[Wanshan Archipelago]] (or Ladrones Archipelago) off [[Portuguese Macau|Macau]] on 27 January 1799. The incident took place in the context of the East Indies campaign of the [[French Revolutionary Wars]], the allied squadron attempting to disrupt a valuable British merchant convoy due to sail from [[Qing Dynasty]] [[China]]. This was the second such attempt in three years; at the [[Bali Strait Incident]] of 1797 a French frigate squadron had been driven off during an attack on that year's China convoy. By early 1799 the French squadron had dispersed, with two remaining ships deployed to the [[Spanish Philippines]]. There the frigates had united with the Spanish [[Manila]] squadron and sailed to attack the British China convoy gathering at Macau. ||| ||| ||| +0 Makin Island raid ||| Guadalcanal Campaign ||| The '''Makin Island Raid''' (occurred on 17–18 August 1942) was an attack by the [[United States Marine Corps]] [[Marine Raiders|Raiders]] on Japanese military forces on Makin Island (now known as [[Butaritari]] Island) in the Pacific Ocean. The aim was to destroy Japanese installations, take prisoners, gain intelligence on the [[Gilbert Islands]] area, and divert Japanese attention and reinforcements from the [[Allies of World War II|Allied]] landings on [[Guadalcanal Campaign|Guadalcanal]] and [[Battle of Tulagi and Gavutu–Tanambogo|Tulagi]]. ||| ||| ||| +0 Malibeyli and Gushchular massacre ||| Nagorno-Karabakh War ||| |accessdate= March 5, 2012 }} ethnic Azerbaijani civilians, by Armenian irregular armed units in simultaneous attacks on the villages of [[Malıbəyli|Malibeyli]], [[Aşağı Quşçular|Ashaghi Gushchular]], and [[Yuxarı Quşçular|Yukhari Gushchular]] of [[Shusha Rayon|Shusha district]] of [[Azerbaijan]], on February 10–12, 1992 during the [[Nagorno-Karabakh War]]. ||| ||| ||| +0 Manchester International Festival ||| Iraq War ||| The third was an art installation, in conjunction with the [[Imperial War Museum]], by [[Turner Prize]]-winning artist [[Steve McQueen (artist)|Steve McQueen]], as a response to the [[Iraq War|2003 Iraq war]] and as a tribute to British service personnel killed in that conflict. It was exhibited in the Great Hall of [[Manchester Central Library]] from 28 February to 15 July 2007. ||| Pre-festival commissions ||| ||| +0 Maquis du Vercors ||| Operation Overlord ||| On 5 June 1944, the [[Free French]] government in London called upon the Vercors people to take up arms and tie down the German army prior to the [[Operation Overlord|Allied invasion of Normandy]] as part of a wider series of resistance uprisings. In his [[BBC]] speech, de Gaulle pronounced the famous line 'the [[chamois]] of the Alps leaps forth' (''le chamois des Alpes bondit'') which signalled the 4,000 maquisards to begin the uprising. ||| Events of 1944 ||| ||| +0 March 1966 Mizo National Front uprising ||| Sino-Indian War ||| The Indian armed forces, fresh from the [[Sino-Indian War]] of 1962 and the [[Indo-Pakistani War of 1965]], were focused on the Indo-Pak and Indo-China borders. The extremist MNF leaders wanted to take advantage of this situation by starting an armed rebellion to establish an independent Mizo nation. The rehabiliation of the pro-Government [[Chakma people|Chakma]] refugees from East Pakistan in the Mizo district further instigated them. {{cite book ||| MNF's plan for armed uprising ||| ||| +0 March 2012 Gaza–Israel clashes ||| 2011 southern Israel cross-border attacks ||| In the afternoon, a strike on a car in [[Gaza City]] killed [[Zohair al-Qaisi]], the secretary-general of the Popular Resistance Committees, and his collaborator, Mahmoud Hanani. According to Israel, al-Qaisi was killed because he was in the process of organizing a large terrorist attack to be carried out on Israel's border with Gaza. Al-Qaisi was one of the masterminds of the [[2011 southern Israel cross-border attacks]], which killed eight Israelis. Hanani was one of the Palestinians freed from Israel as part of the deal to [[Gilad Shalit prisoner exchange|free Gilad Shalit]] in 2011. ||| Chronology of events ||| March 9 ||| +0 Mariana and Palau Islands campaign ||| Atomic bombings of Hiroshima and Nagasaki ||| Thereafter, U.S. forces executed landings on [[Battle of Guam (1944)|Guam]] and [[Battle of Tinian|Tinian]] in July, 1944. After heavy fighting, Saipan was secured in July and Guam and Tinian in August, 1944. The U.S. then constructed airfields on Saipan and Tinian where [[B-29]]s were based to conduct strategic bombing missions against the Japanese mainland until the end of World War II, including the [[Atomic bombings of Hiroshima and Nagasaki|nuclear attacks]] on [[Hiroshima]] and [[Nagasaki, Nagasaki|Nagasaki]]. ||| ||| ||| +0 Mariana and Palau Islands campaign ||| Battle of Angaur ||| In the meantime, in order to secure the flank for U.S. forces preparing to attack Japanese forces in the Philippines, in September, 1944, U.S. Marine and Army forces landed on the islands of [[Battle of Peleliu|Peleliu]] and [[Battle of Angaur|Angaur]] in [[Palau]]. After heavy and intense combat on Peleliu, the island was finally secured by U.S. forces in November, 1944. ||| ||| ||| +0 Mariana and Palau Islands campaign ||| Battle of Guam (1944) ||| Thereafter, U.S. forces executed landings on [[Battle of Guam (1944)|Guam]] and [[Battle of Tinian|Tinian]] in July, 1944. After heavy fighting, Saipan was secured in July and Guam and Tinian in August, 1944. The U.S. then constructed airfields on Saipan and Tinian where [[B-29]]s were based to conduct strategic bombing missions against the Japanese mainland until the end of World War II, including the [[Atomic bombings of Hiroshima and Nagasaki|nuclear attacks]] on [[Hiroshima]] and [[Nagasaki, Nagasaki|Nagasaki]]. ||| ||| ||| +0 Mariana and Palau Islands campaign ||| Battle of Saipan ||| Beginning the offensive, [[United States Marine Corps]] and [[United States Army]] forces, with support from the [[United States Navy]], executed landings on [[Battle of Saipan|Saipan]] in June, 1944. In response, the [[Imperial Japanese Navy]]'s combined fleet sortied to attack the U.S. Navy fleet supporting the landings. In the resulting [[aircraft carrier]] [[Battle of the Philippine Sea]] (the so-called “Great Marianas Turkey Shoot”) on 19–20 June, the Japanese naval forces were decisively defeated with heavy and irreplaceable losses to their carrier-borne and land-based aircraft. ||| ||| ||| +0 Mariana and Palau Islands campaign ||| Battle of Tinian ||| Thereafter, U.S. forces executed landings on [[Battle of Guam (1944)|Guam]] and [[Battle of Tinian|Tinian]] in July, 1944. After heavy fighting, Saipan was secured in July and Guam and Tinian in August, 1944. The U.S. then constructed airfields on Saipan and Tinian where [[B-29]]s were based to conduct strategic bombing missions against the Japanese mainland until the end of World War II, including the [[Atomic bombings of Hiroshima and Nagasaki|nuclear attacks]] on [[Hiroshima]] and [[Nagasaki, Nagasaki|Nagasaki]]. ||| ||| ||| +0 Mariana and Palau Islands campaign ||| Volcano and Ryukyu Islands campaign ||| Following their landings in the Mariana and Palau Islands, Allied forces continued their ultimately successful campaign against Japan by landing in the [[Philippines campaign (1944–45)|Philippines]] in October, 1944 and the [[Volcano and Ryukyu Islands campaign|Volcano and Ryukyu Islands]] beginning in January, 1945. ||| ||| ||| +0 Marshalls–Gilberts raids ||| Attack on Pearl Harbor ||| The raids had little long-term strategic impact. The IJN briefly sent two aircraft carriers to chase TFs 16 and 17, but quickly abandoned the pursuit and continued their support for the ongoing, successful conquests of the [[Philippines]] and [[Netherlands East Indies]]. The raids, however, did help lift the morale of the U.S. Navy and American public, still reeling from the [[Attack on Pearl Harbor|Pearl Harbor attack]] and loss of [[Battle of Wake Island|Wake Island]]. The raids also provided valuable experience in carrier air operations, which hardened the U.S. carrier groups for future combat against Japanese forces. For their part, the Japanese apparently did not realize that their concept of a [[perimeter defense]] using dispersed island garrisons had serious flaws in that the garrisons were too far apart to be sufficiently mutually supporting to prevent penetration by enemy carrier forces. The raids, along with the [[Doolittle Raid]] in April 1942, helped convince the IJN's [[Combined Fleet]] commander, [[Isoroku Yamamoto]], that he needed to draw the American carriers into battle as soon as possible in order to destroy them. Yamamoto's plan to do so resulted in the [[Battle of Midway]]. ||| Aftermath and significance ||| ||| +0 Massacre of the Acqui Division ||| Battle of Kos ||| All 280 Italian officers on the island were executed during the next two days on the orders of General Lanz, in accordance with Hitler's directives. The bodies were loaded onto a ship and disposed of in the sea. Similar executions of officers also occurred in the aftermath of the [[Battle of Kos]], when the Italian commander and 90 of his officers were shot. ||| History ||| Aftermath ||| +0 Massacre of the Acqui Division ||| Battle of the Dukla Pass ||| Major [[Harald von Hirschfeld]] was never tried for his role in the massacre: in December 1944, he became the Wehrmacht's youngest [[general officer]], and was killed while [[Battle of the Dukla Pass|fighting]] at the [[Dukla Pass]] in [[Poland]] in 1945. ||| Prosecution ||| ||| +0 Matanikau Offensive ||| Actions along the Matanikau ||| General Vandegrift and his staff were aware that Kawaguchi's troops had retreated to the area west of the Matanikau and that numerous groups of Japanese stragglers were scattered throughout the area between the Lunga Perimeter and the Matanikau River. Vandegrift, therefore, decided to conduct a [[Actions along the Matanikau|series of small unit operations]] around the Matanikau Valley. ||| Background ||| Guadalcanal Campaign ||| +0 Matanikau Offensive ||| Naval Battle of Guadalcanal ||| Vandegrift ordered the withdrawal because of the receipt of intelligence from [[coastwatchers]], aerial reconnaissance, and radio intercepts that a major Japanese reinforcement effort was imminent. Indeed, the Japanese were in the process of attempting to deliver the 10,000 remaining troops from the 38th Division to Guadalcanal in order to reattempt to capture Henderson Field. The resulting efforts by the Americans to stop this reinforcement attempt resulted in the [[Naval Battle of Guadalcanal]], the decisive naval battle of the Guadalcanal campaign, in which the Japanese reinforcement effort was turned back. ||| Aftermath ||| ||| +0 Matanikau Offensive ||| New Guinea campaign ||| On 7 August 1942, Allied forces (primarily U.S.) landed on Guadalcanal, [[Tulagi]], and [[Florida Islands]] in the [[Solomon Islands]]. The landings on the islands were meant to deny their use by the Japanese as [[Military base|bases]] for threatening the [[materiel|supply]] routes between the U.S. and Australia, and to secure the islands as starting points for a [[Military campaign|campaign]] with the eventual goal of isolating the major Japanese base at [[Rabaul]] while also supporting the Allied [[New Guinea campaign]]. The landings initiated the six-month-long [[Guadalcanal campaign]]. ||| Background ||| Guadalcanal Campaign ||| +0 May Revolution ||| Battle of Trafalgar ||| The Supreme Central Junta replaced Liniers with the naval officer [[Baltasar Hidalgo de Cisneros]], a veteran of the [[Battle of Trafalgar]], to end the political turmoil in the Río de la Plata. but Liniers handed over the government to Cisneros without resistance. ||| Prelude ||| Cisneros government ||| +0 May Revolution ||| Crossing of the Andes ||| The [[Captaincy General of Chile]] followed a process analogous to that of the May Revolution, and elected a [[Government Junta of Chile (1810)|Government Junta]] that inaugurated the brief period known as ''[[Patria Vieja]]''. The Junta was defeated in 1814 at the [[Battle of Rancagua]], and the subsequent [[Reconquista (Chile)|Reconquista]] of Chile would make it a royalist stronghold once more. The Andes provided an effective natural barrier between the Argentine revolutionaries and Chile, so there was no military confrontation between them until the [[Crossing of the Andes]], led by [[José de San Martín]] in 1817, a campaign that resulted in the defeat of the Chilean royalists. ||| Aftermath ||| ||| +0 McMahon killings ||| Arnon Street killings ||| The killings were part of a series of reprisals on Catholics for IRA attacks in Belfast and elsewhere. The following week saw an incident known as the '[[Arnon Street killings]]', in which five Catholics were killed by uniformed police in revenge for the killing of a policeman on the Old Lodge Road. In total, 452 people would be killed in Belfast in the conflict between June 1920 and July 1922 – 267 Catholics and 185 Protestants. ||| Aftermath ||| ||| +0 Mediterranean U-boat Campaign (World War I) ||| Gallipoli Campaign ||| In April 1915, the Imperial German Navy sent their first submarines to the Mediterranean in response to the Anglo-French [[Gallipoli Campaign|Dardanelles campaign]], after it became obvious that their Austro-Hungarian allies could do little against it with their small submarine force, which nevertheless was successful in defending the [[Adriatic]]. ||| History ||| 1915 ||| Operations at the Dardanelles +0 Mediterranean campaign of 1798 ||| Battle of the Nile ||| Unable to find Bonaparte, Nelson turned back across the Mediterranean, eventually reaching [[Sicily]] on 19 July. While Nelson was returning westwards, Bonaparte reached Alexandria and stormed the city, capturing the coast and marching his army inland. His fleet, entrusted to Vice-Admiral [[François-Paul Brueys D'Aigalliers]], was anchored in a [[line of battle]] in [[Aboukir Bay]]. On 1 August, Nelson, who had returned to the Egyptian coast after reports gathered at [[Koroni|Coron]] revealed the French invasion, arrived off Aboukir Bay. Although it was late afternoon and the British fleet had no accurate charts of the bay, Nelson ordered an immediate attack on the French [[:wikt:vanguard|van]]. Brueys was unprepared, and his ships were unable to manoeuvre as the British split into two divisions and sailed down either side of the French line, capturing all five ships of the vanguard and engaging his 120-gun flagship [[French ship Orient|''Orient'']] in the centre. At 21:00, ''Orient'' caught fire and exploded, killing most of the crew and ending the main combat. Sporadic fighting continued for the next two days, until all of the French ships had been captured, destroyed or fled. At the [[Battle of the Nile]], eleven French ships of the line and two frigates were eliminated, trapping Bonaparte in Egypt and changing the balance of power in the Mediterranean. ||| ||| ||| +0 Meigs Raid ||| Battle of Trenton ||| The American Revolutionary War was a qualified success for the British in 1776. After being [[Fortification of Dorchester Heights|forced to abandon Boston]], they [[New York and New Jersey campaign|captured New York City]], but were unable to hold [[New Jersey]] when General [[George Washington]] surprised them at [[Battle of Trenton|Trenton]] and [[Battle of Princeton|Princeton]]. The British consolidated their hold on [[New York City]] and [[Long Island]] during the winter months of early 1777, while the [[Continental Army]] established a land blockade around the city in New Jersey, southern [[New York]], and southwestern [[Connecticut]]. ||| Background ||| ||| +0 Metrojet Flight 9268 ||| Russian military intervention in the Syrian Civil War ||| Initially representatives of the Russian government claimed that 'there is not the slightest evidence' for a terrorist attack and especially denied any links between the crash and [[Russian military intervention in the Syrian Civil War|Russian intervention in Syria]]. ||| International reactions ||| Russia ||| +0 Mexican War of Independence ||| Peninsular War ||| The '''Mexican War of Independence''' ({{lang-es|Guerra de Independencia de México}}) was an armed conflict, and the culmination of a political and social process which ended the rule of [[Spain]] in 1821 in the territory of [[New Spain]]. The war had its antecedent in the [[Peninsular War|French invasion of Spain]] in 1808; it extended from the [[Grito de Dolores]] by Father [[Miguel Hidalgo y Costilla]] on September 16, 1810, to the entrance of the [[Army of the Three Guarantees]] led by [[Augustín de Iturbide]] to [[Mexico City]] on September 27, 1821. September 16 is celebrated as [[Mexican Independence Day]]. ||| ||| ||| +0 Mexican War of Independence ||| Spanish conquest of the Aztec Empire ||| In some respects, the struggle for Mexican independence can be seen as having roots that extend to the first decades after the [[Spanish conquest of the Aztec Empire]] when Spanish conquerors had considerable autonomy from crown control. Don [[Martín Cortés, 2nd Marquis of the Valley of Oaxaca|Martín Cortés]] (son of [[Hernán Cortés]]), the second [[marquis of the Valley of Oaxaca]], led a conspiracy of holders of [[encomienda]]s against the Spanish crown after it sought to eliminate privileges for the [[conquistadors]], particularly putting limitations on [[encomienda]]s. After the suppression of that mid-16th-century conspiracy, elites raised no substantial challenge to royal rule until the Hidalgo revolt of 1810. ||| Background ||| ||| +0 Michele Bachmann presidential campaign, 2012 ||| Battles of Lexington and Concord ||| In a speech in [[New Hampshire]], Bachmann stated that New Hampshire was 'the state where the [[shot heard 'round the world|shot heard round the world]] in Lexington and Concord.' [[Battles of Lexington and Concord|Lexington and Concord]] are located in [[Massachusetts]]. ||| Campaign progress ||| Public reception ||| +0 Middle Eastern theatre of World War I ||| Brusilov Offensive ||| The relocation of troops to the Eastern European Front was initiated by Enver. It was originally rejected by the German Chief of Staff, [[Erich von Falkenhayn]], but his successor, [[Paul von Hindenburg]], agreed to it, albeit with reservations. The decision was reached after the [[Brusilov Offensive]], as the Central Powers were running short of men on the Eastern Front. ||| Ottomans on the Eastern European Front ||| ||| +0 Middle Eastern theatre of World War I ||| Spring Offensive ||| The war weary Ottoman Empire could be quickly defeated with campaigns in Palestine and Mesopotamia, but the German [[Spring Offensive]] in France delayed the expected Allied attack. General Allenby was given brand new divisions recruited from India. The British achieved complete control of the air. ||| Chronology ||| 1918 ||| +0 Midwest Invasion of 1967 ||| First Invasion of Onitsha ||| The Nigerian 2nd Division continued to pursue the Biafrans but were stopped after retreating Biafran soldiers detonated and collapsed the River Niger Bridge at Onitsha. On October 5, 1967, citizens of Asaba were forced to leave their homes and attend a public dance in Asaba. When the civilians arrived in downtown Asaba they were massacred by the 2nd Division, under the supervision of General Murtala Mohammed, in retaliation for the assassination of [[Ahmadu Bello]] at the hands of [[Kaduna Nzeogwu]] one year earlier, this massacre became known as the [[Asaba massacre]]. The 2nd Division then [[First Invasion of Onitsha|invaded Onitsha]] and managed to capture and hold onto control of the city for less than a day before they were surrounded and massacred by Biafran soldiers. ||| Aftermath ||| ||| +0 Mier Expedition ||| Battle of San Jacinto ||| Although [[Antonio López de Santa Anna]], the ruler of Mexico, was defeated at the [[Battle of San Jacinto]] and signed the [[Treaties of Velasco]] in 1836, ceding [[Texas]] territory from Mexican control, his forces continued to invade the [[Republic of Texas]] hoping to regain control. ||| Background ||| ||| +0 Military history of Canada during World War II ||| Allied invasion of Italy ||| While Canadians served at sea, in the air, and in small numbers attached to Allied formations and independently, the [[Allied invasion of Sicily|invasion of Sicily]] was the first full scale combat engagement by full Canadian divisions since World War I. Canadian soldiers went ashore in 1943 in the Allied invasions of Sicily and [[Allied invasion of Italy|mainland Italy]], then fought through the long [[Italian Campaign (World War II)|Italian Campaign]]. During the course of the Italian Campaign, over 25,000 Canadian soldiers became casualties of war. ||| Italy ||| ||| +0 Military history of Canada during World War II ||| Omaha Beach ||| On 6 June 1944, the 3rd Canadian Division landed on [[Juno Beach]] in the [[operation Overlord|Battle of Normandy]] and sustained heavy casualties in their first hour of attack. By the end of D-Day, the Canadians had penetrated deeper into France than either the British or the American troops at their landing sites, overcoming stronger resistance than any of the other beachheads except [[Omaha Beach]]. In the first month of the Normandy campaign, Canadian, British and Polish troops were opposed by some of the strongest and best trained German troops in the theatre, including the [[1st SS Panzer Division Leibstandarte SS Adolf Hitler]], the [[12th SS Panzer Division Hitlerjugend]] and the [[Panzer-Lehr-Division]]. ||| D-Day and Normandy ||| ||| +0 Military intervention against ISIL ||| Al Asad Airbase ||| During the early morning hours of 14 December 2014, U.S. ground forces allegedly clashed with [[Islamic State of Iraq and the Levant|ISIL]] alongside the [[Iraqi Army]] and Tribal Forces near the [[Al Asad Airbase|Ain al-Assad Airbase]], west of Anbar, in an attempt to repel them from the base of which includes about 100 U.S. advisers in it, when ISIL attempted to overrun the base. According to a field commander of the [[Iraqi Army]] in [[Anbar province]], said that 'the U.S. force equipped with light and medium weapons, supported by [[F-18]], was able to inflict casualties against fighters of [[ISIL]] organization, and forced them to retreat from the al-Dolab area, which lies 10 kilometers from Ain al-Assad base.' Sheikh Mahmud Nimrawi, a prominent tribal leader in the region, added that 'U.S. forces intervened because of [[ISIL]] started to come near the base, which they are stationed in so out of self-defense,' he responded, welcoming the U.S. intervention, and saying 'which I hope will not be the last.' ||| American-led intervention in Iraq ||| American military actions ||| American ground forces +0 Military intervention against ISIL ||| November 2015 Paris attacks ||| In retaliation for the [[November 2015 Paris attacks]], the [[French Air Force]] significantly intensified airstrikes against ISIL targets in Syria, hitting among other the Syrian city of [[Raqqa]], the de facto capital of ISIL. ||| International coalitions against ISIL ||| France-led coalition ||| +0 Military intervention against ISIL ||| Operation Tidal Wave ||| In October and November 2015, the U.S. intensified its airstrikes on ISIL-held oil facilities in an operation named '[[Operation Tidal Wave II|Tidal Wave II]]', after the [[World War II]] [[Operation Tidal Wave|campaign]] against [[Axis powers|Axis]] [[Oil Campaign of World War II|oil targets]] in [[Romania]]. The U.S. strategy aimed 'to knock out specific installations for six months to a year' by focusing on facilities near [[Deir el-Zour]]. The Omar oil field, which produced 30,000 barrels of oil per day and $1.7 million to $5.1 million in revenue per month at full capacity, was hit on October 21, reducing it to roughly a third of its capacity. French aircraft also participated in the strikes. ||| American-led military intervention in Syria ||| Multi-national airstrikes ||| +0 Military intervention against ISIL ||| World War II ||| In October and November 2015, the U.S. intensified its airstrikes on ISIL-held oil facilities in an operation named '[[Operation Tidal Wave II|Tidal Wave II]]', after the [[World War II]] [[Operation Tidal Wave|campaign]] against [[Axis powers|Axis]] [[Oil Campaign of World War II|oil targets]] in [[Romania]]. The U.S. strategy aimed 'to knock out specific installations for six months to a year' by focusing on facilities near [[Deir el-Zour]]. The Omar oil field, which produced 30,000 barrels of oil per day and $1.7 million to $5.1 million in revenue per month at full capacity, was hit on October 21, reducing it to roughly a third of its capacity. French aircraft also participated in the strikes. ||| American-led military intervention in Syria ||| Multi-national airstrikes ||| +0 Monmouth Rebellion ||| English Civil War ||| The [[English Civil War]] had left resentment among some of the population about the monarchy and the penalties which had been imposed on the supporters of the [[Commonwealth of England|Commonwealth]]. The South West of England contained several towns where opposition remained strong. ||| Context ||| ||| +0 Monmouth Rebellion ||| Third Anglo-Dutch War ||| Monmouth had been appointed Commander-in-Chief of the English Army by his father in 1672 and [[Captain general]] in 1678, enjoying some successes in the Netherlands in the [[Third Anglo-Dutch War]]. ||| Duke of Monmouth ||| ||| +0 Morgan's Raid ||| Battle of Chickamauga ||| To Morgan's men, the long raid had accomplished much, despite their military defeat and high casualties. Col. Basil Duke later wrote, 'The objects of the raid were accomplished. General Bragg's retreat was unmolested by any flanking forces of the enemy, and I think that military men, who will review all the facts, will pronounce that this expedition delayed for weeks the fall of East Tennessee, and prevented the timely reinforcement of Rosecrans by troops that would otherwise have participated in the [[Battle of Chickamauga]].' ||| Impact ||| ||| +0 Moro Conflict ||| 2004 SuperFerry 14 bombing ||| These rebel groups, especially the [[Abu Sayyaf]] conducted several terror attacks, namely the [[2002 Zamboanga City bombings|bombings at Zamboanga]] in October 2002; the [[2004 SuperFerry 14 bombing|bombing of SuperFerry 14]] on February 2004; the [[2006 Central Mindanao bombings|simultaneous bombings in Central Mindanao]] on October 2006; the [[2007 Basilan beheading incident|beheadings of several Philippine Marines]] on July 2007; the [[Batasang Pambansa bombing]] on November 2007; and the 2009 [[July 2009 Mindanao bombings|bombings in Mindanao]]. ||| History ||| Estrada and Arroyo (1998–2010) ||| +0 Moro Conflict ||| Dos Palmas kidnappings ||| On 27 May 2001, the [[Abu Sayyaf]] [[Dos Palmas kidnappings|seized twenty hostages]] from an upscale resort in [[Palawan]]. Four of the hostages managed to escape. ||| History ||| Estrada and Arroyo (1998–2010) ||| +0 Moro Conflict ||| Manili massacre ||| The Philippine government encouraged Filipino Christian settlers in Mindanao to form militias called [[Ilaga]] to fight the Moros. The Ilaga engaged in massacres and atrocities and were responsible for [[Manili massacre]] of 65 Moro Muslim civilians in a Mosque on June 1971, including women and children. The Ilaga also engaged in cannibalism, cutting off the body parts of their victims to eat in rituals. The Ilaga settlers were given the sarcastic nickname as an acronym, the 'Ilonggo Land Grabbers' Association'. ||| History ||| Marcos (1969–1986) ||| +0 Moro Conflict ||| Moro Rebellion ||| The '''Moro Conflict''' The Moro Insurgency was triggered by the [[Jabidah massacre]], which saw the killing of 60 Filipino Muslim commandos on a planned operation to [[North Borneo dispute|reclaim]] the eastern part of the Malaysian state of [[Sabah]]. In response, the [[University of the Philippines]] professor Nur Misuari established the [[Moro National Liberation Front]] (MNLF), an armed insurgent group that was committed to establishing an independent [[Mindanao]]. Over the successive years, the MNLF splintered into several different groups including the [[Moro Islamic Liberation Front]] (MILF), which wanted to establish an Islamic state within the Philippines. The Moro Insurgency is rooted in a [[Moro Rebellion|long history of resistance]] by the Bangsamoro people against foreign rule, dating back to the American annexation of the Philippines in 1899. Since then, Moro resistance has persisted against the Philippines central government in [[Manila]]. ||| ||| ||| +0 Moro Conflict ||| Operation Enduring Freedom ||| Since 2001, the [[Philippines]] and the [[United States]] have been on a campaign to battle this insurgency, known as [[War on Terror]]. To combat the insurgency, the [[United States]] and the [[Philippines]] conducted the [[Operation Enduring Freedom – Philippines]], a part of the worldwide campaign against terrorism known as [[Operation Enduring Freedom]]. ||| History ||| Estrada and Arroyo (1998–2010) ||| +0 Moro Conflict ||| Zamboanga City crisis ||| The [[Zamboanga City crisis]] erupted on 9 September 2013, when a MNLF faction known by other groups as the Rogue MNLF Elements (RME), under the Sulu State Revolutionary Command (SSRC), led by Ustadz Habier Malik and Khaid Ajibon attempted to raise the flag of the self-proclaimed [[Bangsamoro Republik]] at [[Zamboanga City]] Hall (which had earlier declared its independence on 12 August 2013 in Talipao, Sulu), and took civilians hostage. This armed incursion was met by the Armed Forces of the Philippines (AFP) and the Philippine National Police (PNP), which sought to free the hostages and expel the MNLF from the city. The standoff degenerated into urban warfare, and had brought parts of the city under a standstill for days. On 28 September, the government declared the end of military operations in Zamboanga City after successfully defeating the MNLF and rescuing all the hostages. ||| History ||| B. Aquino (2010–present) ||| +0 Moro River Campaign ||| Battle of Monte Cassino ||| In spite of this, three attempts during the winter of 1943/44 by 5th Army to break through into the Liri valley at [[Cassino]] failed. As spring approached in 1944, Alexander concentrated his forces in great secrecy by thinning out the Adriatic front and bringing the bulk of 8th Army's striking power to the Cassino front. The combined attack of his two armies during the fourth and final [[Battle of Monte Cassino]] in early May took Kesselring by surprise and led to the Allied capture of Rome in early June. ||| Aftermath ||| ||| +0 Moro River Campaign ||| Battle of Stalingrad ||| Throughout the remainder of the week, the Battle of Ortona degenerated into a small-scale version of the [[Battle of Stalingrad]], with vicious house-to-house fighting through the narrow streets and debris of Ortona. In danger of being outflanked by Allied advances west of Ortona, the 1st Parachute Regiment abandoned the town the following day, leaving Ortona to Canadian forces. Canadian casualties in the fighting for the town approached 650 killed or wounded. ||| Ortona ||| ||| +0 Mountain War (Lebanon) ||| 1982 Lebanon War ||| In the wake of the June 1982 [[1982 Lebanon War|Israeli invasion of Lebanon]], the main Christian [[Maronite]] ally of [[Israel]], the [[Lebanese Forces (militia)|Lebanese Forces]] (LF) militia of the [[Kataeb Party|Kataeb]] Party commanded by [[Bashir Gemayel]] sought to expand its area of influence in Lebanon. The LF tried to take advantage of [[Israel Defense Forces]] (IDF) advances to begin deploying troops in areas where they had not been present before. Such territorial expansion was focused on regions known to harbor a large Christian rural population, such as the mountainous [[Chouf District]], located south-east of [[Beirut]]. Following the assassination of their leader—and President-elect of Lebanon on August 23—Bashir Gemayel in September 1982, the LF command council decided late that month to enter the Chouf. The head of LF intelligence, [[Elie Hobeika]], voiced its opposition to the entry, but was overruled by its fellow senior commanders of the council. With the tacit backing of the IDF, [[Lebanese Forces (militia)|Lebanese Forces]]' units under the command of [[Samir Geagea]] (appointed Commander of LF forces in the [[Chouf]]-[[Aley]] sector of [[Mount Lebanon]] in January 1983) moved into the Christian-populated areas of the western Chouf. By early 1983, the Lebanese Forces' managed to establish garrisons at a number of key towns in the Chouf, namely [[Aley]], [[Deir el-Qamar]], [[Souk El Gharb]], [[Kfar Matta]], [[Bhamdoun]], and [[Kabr Chmoun]] among others. However, this brought them into confrontation with the local [[Druze]] community, who viewed the LF as intruders on their territory. ||| Background ||| ||| +0 Mozambican Civil War ||| Angolan Civil War ||| The '''Mozambican Civil War''' began in 1977, two years after the end of the [[Mozambican War of Independence|war of independence]]. It resembled the [[Angolan Civil War]] in that both were proxy wars of the [[Cold War]] that started soon after the countries gained independence from [[Portugal]]. The ruling party, [[FRELIMO|Front for Liberation of Mozambique]] (FRELIMO), and the national armed forces [http://www.c-r.org/sites/c-r.org/files/Accord%20Mozambique_Key%20actors.pdf Armed Forces of Mozambique] (FAM), were violently opposed from 1977 by the [[Mozambican National Resistance|Mozambique Resistance Movement]] (RENAMO) which received funding from white-ruled [[Rhodesia]] and (later) apartheid [[South Africa]]. About one million people died in fighting and from starvation; five million civilians were displaced, and many were made amputees by landmines, a legacy from the war that plagued [[Mozambique]] for more than two decades afterward. Fighting ended in 1992 and the country's first multi-party elections were held in 1994. ||| ||| ||| +0 Mozambican Civil War ||| Mozambican War of Independence ||| The '''Mozambican Civil War''' began in 1977, two years after the end of the [[Mozambican War of Independence|war of independence]]. It resembled the [[Angolan Civil War]] in that both were proxy wars of the [[Cold War]] that started soon after the countries gained independence from [[Portugal]]. The ruling party, [[FRELIMO|Front for Liberation of Mozambique]] (FRELIMO), and the national armed forces [http://www.c-r.org/sites/c-r.org/files/Accord%20Mozambique_Key%20actors.pdf Armed Forces of Mozambique] (FAM), were violently opposed from 1977 by the [[Mozambican National Resistance|Mozambique Resistance Movement]] (RENAMO) which received funding from white-ruled [[Rhodesia]] and (later) apartheid [[South Africa]]. About one million people died in fighting and from starvation; five million civilians were displaced, and many were made amputees by landmines, a legacy from the war that plagued [[Mozambique]] for more than two decades afterward. Fighting ended in 1992 and the country's first multi-party elections were held in 1994. ||| ||| ||| +0 Mozambican Civil War ||| Operation Gordian Knot ||| On 25 September 1964, FRELIMO soldiers, with logistical assistance from the surrounding population, attacked the administrative post at Chai in the province of [[Cabo Delgado Province|Cabo Delgado]]. This raid marked the beginning of the armed struggle against the Portuguese colonial government. FRELIMO militants were able to evade pursuit and surveillance by employing guerrilla tactics: ambushing patrols, sabotaging communication and railroad lines, and making hit-and-run attacks against colonial outposts before rapidly fading into accessible backwater areas. At the war's outset, FRELIMO had little hope for a military victory; its hope lay in a war of attrition to compel a negotiated independence from [[Lisbon]]. Portugal fought its own version of protracted warfare. Had the military succeeded with a minimum of expenditure and casualties, the war could have remained undecided for much longer. In the early 1970s, [[Operation Gordian Knot]] and the following Portuguese campaigns were militarily successful in destroying guerrilla forces and support bases in the territory. But the expense in blood and national wealth was more costly for Lisbon than military defeat; the Portuguese army was never destroyed on the battlefield, although amid plummeting morale some of its officers were converted to FRELIMO's [[communist]] ideology and hoped to bring it home to Portugal. ||| Outset ||| Independence ||| +0 Mozambican War of Independence ||| Carnation Revolution ||| From a military standpoint, the Portuguese regular army held the upper hand during the conflict against the independentist guerrilla forces. Nonetheless, Mozambique succeeded in achieving independence on June 25, 1975, after the coup d'état in Portugal known as the [[Carnation Revolution]], thus ending 470 years of Portuguese colonial rule in the East African region. According to historians of the Revolution, the military coup in Portugal was in part fuelled by protests concerning the conduct of Portuguese troops in their treatment of some local Mozambican populace. ||| ||| ||| +0 Mozambican War of Independence ||| Mozambican Civil War ||| Costa Gomes argued that African soldiers were cheaper and were better able to create a relationship with the local populace, a tactic similar to the '[[Hearts and Minds (Vietnam)|hearts and minds]]' strategy being used by [[Military of the United States|United States forces]] in [[Vietnam War|Vietnam]] at the time. These Flechas units saw action in the territory at the very end stages of the conflict, following the dismissal of [[Kaúlza de Arriaga]] on the eve of the [[Carnation Revolution|Portuguese coup]] in 1974 – the Carnation Revolution. The units were to continue to cause problems for the FRELIMO even after the Revolution and Portuguese withdrawal, when the country splintered into [[Mozambican Civil War|civil war]]. ||| Conflict ||| Continuing war (1969–74) ||| +0 Mukden Incident ||| Pacific War ||| In August 2006, the ''[[Yomiuri Shimbun]]'', Japan's top-selling newspaper, published the results of a year-long research project into the general question of who is responsible for the '[[Pacific War|Showa war]]'. With respect to the Manchurian Incident, the newspaper blamed ambitious [[Japanese militarists]], as well as politicians who were impotent to rein them in or prevent their insubordination. {{cite news ||| Controversy ||| ||| +0 Mukden Incident ||| Russo-Japanese War ||| Japanese economic presence and political interest in Manchuria had been growing ever since the end of the [[Russo-Japanese War]] (1904–1905). The [[Treaty of Portsmouth]] that ended the war had granted Japan the lease of the South Manchuria Railway branch (from [[Changchun]] to [[Lüshun]]) of the [[China Far East Railway]]. The Japanese government, however, claimed that this control included all the rights and privileges that China granted to Russia in the 1896 [[Li-Lobanov Treaty]], as enlarged by the Kwantung Lease Agreement of 1898. This included absolute and exclusive administration within the [[South Manchuria Railway Zone]]. Japanese railway guards were stationed within the zone to provide security for the trains and tracks; however, these were [[Kwantung Army|regular Japanese soldiers]], and they frequently carried out maneuvers outside the railway areas. There were many reports of raids on local Chinese villages by bored Japanese soldiers, and all complaints from the Chinese government were ignored. ||| Background ||| ||| +0 Muslim conquest of Sicily ||| Muslim conquest of the Maghreb ||| Consequently, the island was early on targeted by the Muslims, the first raid occurring in 652, only a few years after the establishment of the first Muslim navy. Following the onset of [[Muslim conquest of the Maghreb|Muslim attacks against North Africa]], it became a crucial strategic base, and for a while, in 661–668, it was the residence of the imperial court under [[Constans II]]. ||| Background ||| ||| +0 Muslim conquest of Transoxiana ||| Battle of Talas ||| The last major victory of Arabs in Central Asia occurred at the [[Battle of Talas]] (751). The [[Tibetan Empire]] was allied to the Arabs during the battle. ||| Aftermath ||| Writings about China ||| +0 Muslim conquest of the Levant ||| Battle of Bosra ||| [[Sawa, Syria|Sawa]], [[Arak, Syria|Arak]], and the historical city of [[Tadmur]] were first to fall to Khalid. [[Sukhnah]], [[al-Qaryatayn]] and [[Hawarin]] were captured after the [[Battle of Qarteen]] and the [[Battle of Hawareen]]. After dealing with all these cities, Khalid moved towards [[Damascus]], passing though a mountain pass which is now known as '''Sanita-al-Uqab''' (Uqab pass) after the name of Khalid's army standard. From here he moved away from Damascus, towards [[Bosra]], the capital of Ghassanid Arab kingdom, a vassal of the Eastern Roman empire. He ordered other Muslim commanders to concentrate their armies, still near the Syrian-Arabian border at Bosra. At Maraj-al-Rahab, Khalid defeated a [[Ghassanids|Ghassanid]] army of Christian Arabs in a quick battle, called the [[Battle of Marj Rahit (634)|Battle of Marj-al-Rahit]]. Meanwhile, Abu Ubaida ibn al-Jarrah, the supreme commander of the Muslim armies in Syria, had ordered Shurhabil ibn Hasana to attack Bosra. The latter laid siege of Bosra with his small army of 4000 men. The Roman and Ghassanid Arab garrison, noticing that this might be the advance guard of the larger Muslim army to come, decided to attack and destroy Shurhabil's army. They came out of the fortified city and attacked Shurhabil, surrounding him from all sides; Khalid reached the arena with his advance guard cavalry and saved the day for Shurhabil. The combined forces of Khalid, Shurhabil and Abu Ubaidah then laid [[Battle of Bosra|siege to the city of Bosra]], which surrendered some time in mid July 634. This effectively ended the Ghassanid Dynasty. ||| Conquest of Syria under Caliph Abu Bakr ||| Conquest of Southern Syria ||| +0 Muslim conquest of the Levant ||| Battle of Maraj-al-Debaj ||| The defeat of the Byzantines at the [[Battle of Ajnadayn]] left Syria vulnerable to the Muslim invaders. Khalid decided to capture Damascus, the Byzantine stronghold. At Damascus Thomas, son in law of Emperor Heraclius, was in charge. Having received intelligence of Khalid's march towards Damascus he prepared for the defence of Damascus. He wrote to Emperor Heraclius, who was at Emesa that time, for reinforcements. Moreover, Thomas, in order to get more time for preparation of a siege, sent armies to delay or if possible halt Khalid's march to Damascus. One of these armies was defeated at the [[Battle of Yaqusa]] in mid-August 634 near [[Lake Tiberias]] 90 miles from Damascus. Another army that tried to halt the Muslim advance to Damascus was defeated in [[battle of Maraj-al-Safar|the Battle of Maraj as Saffer]] on 19 August 634. These engagements delayed Khalid's advance and gave Thomas enough time to prepare for a siege. Meanwhile, a reinforcement reached the city, which Heraclius had dispatched after hearing the bad news of Ajnadyn. But before another regiment of Heraclius could reach Damascus, Khalid had already laid siege to Damascus. Khalid reached Damascus 20 August and besieged the city. To isolate the city from the rest of the region Khalid placed detachments south on the road to Palestine and in the north at the Damascus-Emesa route, and several other smaller detachments on routes towards Damascus. Heraclius reinforcement was intercepted and routed at the [[Battle of Sanita-al-Uqab]] 20 miles from Damascus. Khalid's forces withstood three Roman sallies that tried to break the siege. Khalid finally attacked and [[Conquest of Damascus|conquered Damascus]] on 18 September 634 after a 30 days siege, although according to some sources the siege lasted for four or six months. Heraclius, having received the news of the fall of Damascus, left for [[Antioch]] from [[Emesa]]. A peace agreement was made: the citizens were given peace on the terms of annual tribute and the [[Byzantine army]] was given a three-day peace period to go as far as they could. After the deadline of three days was over, the Muslim cavalry under Khalid's command, attacked the Roman army, catching up on them using an unknown shortcut, at the [[Battle of Maraj-al-Debaj]], 190 miles north of Damascus. Abu Bakr died during the [[Conquest of Damascus|siege of Damascus]] and Umar became the new Caliph. He dismissed his cousin Khalid ibn al-Walid from command and appointed [[Abu Ubaidah ibn al-Jarrah]] as the new commander in chief of the Islamic army in Syria. Abu Ubaidah got the letter of his appointment and Khalid's disposal during the siege, but he delayed the announcement until the city was conquered. ||| Conquest of Syria under Caliph Abu Bakr ||| Conquest of Southern Syria ||| +0 Muslim conquest of the Levant ||| Battle of Yarmouk ||| After successful campaigns against the Sassanids and the ensuing conquest of [[Iraq]] Khalid established his stronghold in Iraq. While engaged with Sassanid forces, confrontation also ensued with the Byzantine Arab clients, the Ghassanids. Tribal contingents were soon recruited to the call from Medinah from all over the [[Arabian peninsula]]. Only those who had rebelled during the Ridda wars were excluded from the summons and remained excluded from Rashidun armies until in 636 when Caliph [[Umar]] fell short of manpower for the [[Battle of Yarmouk]] and the [[Battle of al-Qādisiyyah]]. The tradition of raising armies from tribal contingents remained in use until 636, when Caliph Umar organised the army as a state department. ||| Expedition to Syria ||| ||| +0 Muslim conquest of the Levant ||| Siege of Aleppo (637) ||| Abu Ubaidah soon joined Khalid at the virtually impregnable fort of Chalcis. The fort surrendered some time in June 637. With this strategic victory the territory north of Chalcis lay open to the Muslims. Khalid and Abu Ubaidah continued their march northward and laid [[Siege of Aleppo (637)|siege to Aleppo]], which was captured after fierce resistance from desperate Byzantine troops in October 637 AD. The next objective was the splendid city of [[Antioch]], the capital of the Asian zone of the Eastern Roman empire. Before marching towards Antioch, Khalid and Abu Ubaidah decided to isolate the city from Anatolia. They accordingly sent detachments north to eliminate all possible Byzantine forces and captured a garrison town of [[Azaz]] 30 miles from Aleppo; from there Muslims attacked Antioch from the eastern side. In order to save the empire from annihilation, a desperate battle was fought between the Muslim army and that of the defenders of Antioch, popularly known as the [[Battle of Iron bridge]]. The Byzantine army was composed of the survivors of Yarmouk and other Syrian campaigns. After being defeated, the Byzantines retreated to Antioch and the Muslims besieged the city. Having little hope of help from the Emperor, Antioch surrendered on 30 October 637 AD under the condition that all Byzantine troops would be given safe passage to Constantinople. Abu Ubaidah sent Khalid towards the north and he himself marched to the south and captured Lazkia, Jabla and [[Tartus]] and the coastal areas west of anti-lebonan hills. Khalid moved north and raided territory up to as far as [[Kızılırmak River|Kızılırmak]] River in Anatolia. Emperor Heraclius had already left Antioch for [[Edessa, Mesopotamia|Edessa]] before the arrival of the Muslims. He arranged for the necessary defenses in [[Al Jazira, Mesopotamia|Jazirah]] and [[Armenia]] and left for his capital [[Constantinople]]. On his way to Constantinople he had a narrow escape when Khalid after [[Siege of Marash|capturing Marash]] was heading south towards [[Munbij]]. Heraclius hastily took the mountainous path and passing through the [[Cilician gate]]s is reported to have said: {{quote|Farewell, a long farewell to Syria, my fair province. Thou art an infidel's (enemy's) now. ||| Conquest Under Caliph Umar ||| Conquest of Northern Syria ||| +0 Muslim conquest of the Levant ||| Siege of Jerusalem (637) ||| With the Byzantine army shattered and routed, the Muslims quickly recaptured the territory that they had conquered prior to Yarmouk. Abu Ubaida held a meeting with his high command officers, including Khalid, to decide on future conquests. They decided to conquer [[Jerusalem]]. The Siege of Jerusalem lasted four months after which the city agreed to surrender, but only to caliph Umar Ibn Al Khattab in person. Amr-bin al-Aas suggested that Khalid should be sent as [[caliph]], because of his very strong resemblance with Caliph [[Umar]]. But Khalid was recognized and Caliph Umar Ibn Al Khattab had to come himself to accept the [[Siege of Jerusalem (637)|surrender of Jerusalem]] on April 637 AD. ||| Conquest Under Caliph Umar ||| Capturing Jerusalem ||| +0 My Lai Massacre ||| Battle of Verdun ||| In May 1970, a sergeant who participated in [[Operation Speedy Express]] wrote a confidential letter to then Army Chief of Staff Westmoreland describing civilian killings he said were on the scale of the massacre occurring as 'a My Lai each month for over a year' during 1968–1969. Two other letters to this effect from enlisted soldiers to military leaders in 1971, all signed 'Concerned Sergeant', were uncovered within declassified National Archive documents. The letters describe common occurrences of civilian killings during population pacification operations. Army policy also stressed very high body counts and this resulted in dead civilians being marked down as combatants. Alluding to indiscriminate killings described as unavoidable, the commander of the 9th Division, then Major General [[Julian Ewell]], in September 1969, submitted a [[Classified information in the United States#Levels of classification used by the U.S. government|confidential]] report to Westmoreland and other generals describing the countryside in some areas of Vietnam as resembling the [[Battle of Verdun|battlefields of Verdun]]. ||| Aftermath ||| Reporting, cover-up and investigation ||| +0 NATO bombing of Yugoslavia ||| NATO bombing of the Radio Television of Serbia headquarters ||| [[Amnesty International]] released a report which stated that NATO forces had deliberately targeted a civilian object ([[NATO bombing of the Radio Television of Serbia headquarters]]), and had bombed targets at which civilians were certain to be killed. ||| Attitudes towards the campaign ||| Criticism of the campaign ||| +0 NATO bombing of Yugoslavia ||| Operation Deliberate Force ||| The NATO bombing marked the second major combat operation in its history, following the [[Operation Deliberate Force|1995 NATO bombing campaign in Bosnia and Herzegovina]]. The 1999 bombings led to the withdrawal of Yugoslav forces from Kosovo and the establishment of [[United Nations Interim Administration Mission in Kosovo|UNMIK]], a U.N. mission in Kosovo. ||| ||| ||| +0 NATO bombing of Yugoslavia ||| World War II ||| NATO's bombing campaign involved 1,000 aircraft operating from air bases in Italy and Germany, and the aircraft carrier {{USS|Theodore Roosevelt|CVN-71|6}} stationed in the [[Adriatic Sea]]. At dusk,{{when|date=June 2015}} [[F/A-18 Hornet]]s of the [[Spanish Air Force]] were the first NATO planes to bomb Belgrade and perform [[SEAD]] operations. [[BGM-109 Tomahawk]] [[cruise missile]]s were fired from ships and [[submarine]]s. The U.S. was the dominant member of the coalition against [[Yugoslavia]], although other NATO members were involved. During the ten weeks of the conflict, NATO aircraft flew over 38,000 combat missions. For the [[German Air Force]], this mission was its first conflict participation since [[World War II]]. In addition to air power, one battalion of [[Apache helicopter]]s from the [[United States Army|U.S. Army]]'s [[11th Aviation Regiment]] was deployed to help combat missions. The regiment was augmented by pilots from [[Fort Bragg (North Carolina)|Fort Bragg]]'s [[82nd Airborne]] Attack Helicopter Battalion. The battalion secured AH-64 Apache attack helicopter refueling sites, and a small team forward deployed to the Albania – Kosovo border to identify targets for NATO air strikes. ||| Operation ||| NATO operations ||| +0 NATO bombing of the Radio Television of Serbia headquarters ||| Kosovo War ||| The '''NATO bombing of the Radio Television of Serbia headquarters''' occurred on 23 April 1999, during the [[Kosovo War]]. ||| ||| ||| +0 Nagorno-Karabakh War ||| Armenian Genocide ||| |first = Samvel (ed.)|title = The Sumgait Tragedy: Pogroms Against Armenians in Soviet Azerbaijan|publisher=Zoryan Institute|year = 1990|location = New York|isbn = 0-89241-490-1}} The manner in which they were killed reverberated among Armenians, recalling memories of the [[Armenian Genocide]]. ||| Revival of the Karabakh issue ||| Askeran and Sumgait ||| +0 Nagorno-Karabakh parliamentary election, 2010 ||| Nagorno-Karabakh War ||| Nagorno-Karabakh declared its independence from [[Azerbaijan]] in 1991. A [[Nagorno-Karabakh War|conflict]] took place between 1988 and 1994 which resulted in Nagorno-Karabakh, with [[Armenia]]n support, becoming de facto independent from Azerbaijan. However it has not been internationally recognised and Azerbaijan still claims the area as part of its state. ||| Background ||| ||| +0 Nagorno-Karabakh parliamentary election, 2015 ||| Nagorno-Karabakh War ||| Nagorno-Karabakh declared its independence from [[Azerbaijan]] in 1991. A [[Nagorno-Karabakh War|conflict]] took place between 1988 and 1994 which resulted in Nagorno-Karabakh, with [[Armenia]]n support, becoming ''de facto'' independent from Azerbaijan. However it has not been internationally recognised and Azerbaijan still claims the area as part of its state. ||| Background ||| ||| +0 Namsos Campaign ||| Winter War ||| When World War II broke out in September 1939 Norway followed a [[policy of neutrality]], as it had successfully done in World War I, hoping to stay out of the war once again engulfing Europe. So Norway was at peace in April 1940 when it was suddenly attacked by naval, air and military forces from [[Nazi Germany]]. Unlike the case during the First World War, the [[Norwegian military]] was only partially mobilised, with the [[Royal Norwegian Navy]] and the [[coastal artillery]] being set up with skeleton crews. The [[Norwegian Army]] activated only a few [[battalion]]s in [[North Norway]] (amongst others the [[Alta Battalion]]) as a precaution in connection with the [[Soviet Union|Soviet]] [[Winter War]] invasion of [[Finland]]. Although the Norwegian government had carried out a hurried modernisation of the military in the second half of the 1930s the armed forces were still in a shambles. Effects of the wide ranging budget reductions carried out during the [[Pacifism|pacifist]] policies of the late 1920s and early 1930s were still apparent. In 1940 the Norwegian armed forces were among the weakest in Europe. ||| Background ||| ||| +0 Narva Offensive (15–28 February 1944) ||| Siege of Leningrad ||| On 9 February, Army General Leonid Govorov of the Leningrad Front ordered the 2nd Shock Army to break through the German defence line north and south of the town of Narva by 17 February, move the front fifty kilometres westwards and continue towards the town of [[Rakvere]]. Soviet units with experience from the [[Siege of Leningrad]] had a significant number of women within their ranks. Retreat was forbidden under the penalty of death. ||| Preparations ||| Soviet ||| +0 Narva Offensive (July 1944) ||| Battle of Tannenberg Line ||| The Soviet [[Operation Bagration|breakthrough in Belorussia]] made the German [[Army Group North]] withdraw a large portion of their troops from Narva to the central part of the [[Eastern Front (World War II)|Eastern Front]] and to [[Fourth Strategic Offensive|Finland]]. As there were no more sufficient forces for the defence of the former front line at Narva in July, the army group began preparations for the withdrawal of their forces to the [[Battle of Tannenberg Line|Tannenberg defence line]] at the [[Sinimäed Hills]] 16 kilometres from Narva. While the command of the Soviet Leningrad Front was unaware of the preparations, they designed the Narva Offensive. Shock troops from the Finnish front were concentrated near Narva, giving the Leningrad Front a 4:1 superiority both in manpower and equipment. Before the German forces had implemented the plan, the Soviet [[8th Army (Soviet Union)|8th Army]] launched the offensive with an [[Battle of Auvere|assault at Auvere]] Railway Station. The Waffen Grenadier Regiment der SS 45 ''Estland'' ([[20th Waffen Grenadier Division of the SS (1st Estonian)|1st Estonian]]) and the 44th Infantry Regiment (which consisted in personnel from [[East Prussia]]) repulsed the attack, inflicting heavy losses to the 8th Army. The [[11th SS Volunteer Panzergrenadier Division Nordland]] and [[23rd SS Volunteer Panzer Grenadier Division Nederland|4th SS Volunteer Panzergrenadier Brigade Nederland]] stationed in [[Ivangorod]] left their positions quietly on the night before 25 July. The evacuation was carried out according to [[Obergruppenführer]] [[Felix Steiner]]'s plans until the [[2nd Shock Army]] resumed the offensive in the morning of 25 July. Supported by 280,000 shells and grenades from 1,360 assault guns, the army crossed the river north of the town. The II.Battalion, Waffen Grenadier Regiment der SS 46 (2nd Estonian) and II.Battalion, Waffen-Grenadier Regiment der SS 47 (3rd Estonian) kept the 2nd Shock Army from capturing the highway behind the retreating ''Nordland'' and ''Nederland'' detachments. The defensive cost the loss of the SS Volunteer Panzergrenadier Regiment 48 due to their tactical errors. The Soviet forces captured Narva on 26 July. ||| ||| ||| +0 Narva Offensive (July 1944) ||| Operation Bagration ||| The Soviet [[Operation Bagration|breakthrough in Belorussia]] made the German [[Army Group North]] withdraw a large portion of their troops from Narva to the central part of the [[Eastern Front (World War II)|Eastern Front]] and to [[Fourth Strategic Offensive|Finland]]. As there were no more sufficient forces for the defence of the former front line at Narva in July, the army group began preparations for the withdrawal of their forces to the [[Battle of Tannenberg Line|Tannenberg defence line]] at the [[Sinimäed Hills]] 16 kilometres from Narva. While the command of the Soviet Leningrad Front was unaware of the preparations, they designed the Narva Offensive. Shock troops from the Finnish front were concentrated near Narva, giving the Leningrad Front a 4:1 superiority both in manpower and equipment. Before the German forces had implemented the plan, the Soviet [[8th Army (Soviet Union)|8th Army]] launched the offensive with an [[Battle of Auvere|assault at Auvere]] Railway Station. The Waffen Grenadier Regiment der SS 45 ''Estland'' ([[20th Waffen Grenadier Division of the SS (1st Estonian)|1st Estonian]]) and the 44th Infantry Regiment (which consisted in personnel from [[East Prussia]]) repulsed the attack, inflicting heavy losses to the 8th Army. The [[11th SS Volunteer Panzergrenadier Division Nordland]] and [[23rd SS Volunteer Panzer Grenadier Division Nederland|4th SS Volunteer Panzergrenadier Brigade Nederland]] stationed in [[Ivangorod]] left their positions quietly on the night before 25 July. The evacuation was carried out according to [[Obergruppenführer]] [[Felix Steiner]]'s plans until the [[2nd Shock Army]] resumed the offensive in the morning of 25 July. Supported by 280,000 shells and grenades from 1,360 assault guns, the army crossed the river north of the town. The II.Battalion, Waffen Grenadier Regiment der SS 46 (2nd Estonian) and II.Battalion, Waffen-Grenadier Regiment der SS 47 (3rd Estonian) kept the 2nd Shock Army from capturing the highway behind the retreating ''Nordland'' and ''Nederland'' detachments. The defensive cost the loss of the SS Volunteer Panzergrenadier Regiment 48 due to their tactical errors. The Soviet forces captured Narva on 26 July. ||| ||| ||| +0 Naval Battle of Guadalcanal ||| Battle of Leyte Gulf ||| ''Ayanami'' was [[scuttling|scuttled]] by ''Uranami'' at 2:00, while ''Kirishima'' capsized and sank by 03:25 on 15 November. The engagement was one of only two battleship-against-battleship surface battles in the entire Pacific campaign of World War II, the other being at the [[Battle of Surigao Strait|Surigao Strait]] during the [[Battle of Leyte Gulf]]. ||| Second Naval Battle of Guadalcanal, 14–15 November ||| Aftermath ||| +0 Naval Battle of Guadalcanal ||| New Guinea campaign ||| The six-month [[Guadalcanal campaign]] began on 7 August 1942, when Allied (primarily U.S.) forces landed on Guadalcanal, Tulagi, and the [[Florida Islands]] in the [[Solomon Islands]], a pre-war colonial possession of Great Britain. The landings were meant to prevent the Japanese using the islands as bases from which to threaten the [[materiel|supply]] routes between the U.S. and Australia, and to secure them as starting points for a campaign to neutralize the major [[Empire of Japan|Imperial Japanese]] military base at [[Rabaul]] and support of the Allied [[New Guinea campaign]]. The Japanese had [[Invasion of Tulagi (May 1942)|occupied Tulagi]] in May 1942 and began constructing an airfield on Guadalcanal in June 1942. ||| Background ||| ||| +0 Naval Battle of Guadalcanal ||| Operation Ke ||| The failure to deliver to Guadalcanal most of the troops and supplies in the convoy prevented the Japanese from launching another offensive to retake Henderson Field. Thereafter, the Imperial Navy was only able to deliver subsistence supplies and a few replacement troops to Japanese Army forces on Guadalcanal. Because of the continuing threat from Allied aircraft based at Henderson Field, plus nearby U.S. [[aircraft carrier]]s, the Japanese had to continue to rely on Tokyo Express warship deliveries to their forces on Guadalcanal. However, these supplies and replacements were not enough to sustain Japanese troops on the island, who – by 7 December 1942 – were losing about 50 men each day from malnutrition, disease, and Allied ground or air attacks. On 12 December, the Japanese Navy proposed that Guadalcanal be abandoned. Despite initial opposition from Japanese Army leaders, who still hoped that Guadalcanal could eventually be retaken from the Allies, Japan's [[Imperial General Headquarters]]—with approval from the [[Emperor of Japan|Emperor]]—agreed on 31 December to the [[Operation Ke|evacuation]] of all Japanese forces from the island and establishment of a new line of defense for the Solomons on [[New Georgia]]. ||| Significance ||| ||| +0 Naval Battle of Vella Lavella ||| Battle of Vella Gulf ||| After their defeats on [[Battle of New Georgia|New Georgia]] and in the [[Battle of Vella Gulf]], the Japanese had evacuated their garrisons in the central Solomons. A staging post had been established at Horaniu on the north tip of Vella Lavella for the evacuation barges. In October 1943, 600 soldiers remained, and a force of nine destroyers—{{ship|Japanese destroyer|Fumizuki|1925|2}}, {{ship|Japanese destroyer|Matsukaze|1923|2}}, {{ship|Japanese destroyer|Yūnagi|1924|2}}, {{ship|Japanese destroyer|Akigumo||2}}, {{ship|Japanese destroyer|Isokaze|1939|2}}, {{ship|Japanese destroyer|Kazagumo||2}}, {{ship|Japanese destroyer|Yūgumo|1941|2}}, {{ship|Japanese destroyer|Shigure|1935|2}}, {{ship|Japanese destroyer|Samidare||2}}—was dispatched under Rear Admiral Matsuji Ijuin to rescue them. ||| Background ||| ||| +0 Naval operations in the American Revolutionary War ||| Armada of 1779 ||| In European waters, the English Channel had [[Armada of 1779|been invaded]] by a combined French and Spanish fleet of 66 sail of the line, Spain having now joined the coalition against Britain. Only 35 sail of the line could be collected against them under the command of Sir [[Charles Hardy]]. But they sailed late, had difficulties with disease and contrary winds, and ultimately withdrew. The allies retired early in September and were not even able to do significant harm to the British trade convoys. In the meantime, the Spaniards had also begun to [[Great Siege of Gibraltar|besiege Gibraltar]]. ||| Spain enters the war, 1779–1780 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Cape Henry ||| On the coast of North America, the war came to its climax. In the earlier part of the year the British at New York and the French at Newport continued to watch one another, but the British fleet suffered damage during a storm in February. Despite this, British Admiral Arbuthnot did indeed succeed in stopping an attempt by French Admiral [[Charles René Dominique Sochet, Chevalier Destouches|Destouches]] to carry reinforcements to the American cause in [[Virginia]], where [[Benedict Arnold]] was engaged in raids against poorly-defended military and economic targets. The [[Battle of Cape Henry|action]] he fought off the capes of Virginia on March 16 was poorly fought, but the French were unable to land any troops. ||| Final New World operations, 1781–1782 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Fort Royal ||| In the West Indies, Rodney, having received news of the breach with the Netherlands early in the year, [[Capture of Sint Eustatius|took the island of Sint Eustatius]], which had been a great depot of contraband of war, on February 3, 1781. He also authorized privateering against other Dutch targets, which resulted in the capture of three Dutch colonial outposts in [[South America]]. Rodney was accused of applying himself so entirely to seizing and selling the booty taken at Sint Eustatius that he would not allow his second in command, Sir [[Samuel Hood, 1st Viscount Hood|Samuel Hood]], who had recently joined him, to take proper measures to impede the arrival of French forces known to be on their way to Martinique. The French admiral, the [[François Joseph Paul de Grasse|count de Grasse]], reached the island with reinforcements in April, [[Battle of Fort Royal|driving Hood away]] in the process. De Grasse then embarked on a diversionary attack on St. Lucia that masked the detachment of some of his fleet [[Invasion of Tobago|to capture Tobago]]. De Grasse and Rodney then engaged in a series of skilful but ultimately fruitless operations in which the former sought advantage to attack British holdings and otherwise avoid battle. ||| Final New World operations, 1781–1782 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Grenada ||| On January 6, 1779, Admiral Byron reached the West Indies. During the early part of this year the naval forces in the West Indies were mainly employed in watching one another. But in June, while Byron had gone to [[Antigua]] to guard the trade convoy on its way home, d'Estaing first captured [[Saint Vincent (island)|St Vincent]], and then [[Grenada]]. Admiral Byron, who had returned, sailed in hopes of saving the island but arrived too late. An indecisive [[Battle of Grenada|action]] was fought off Grenada on July 6, 1779. The war died down in the West Indies. Byron returned home in August. D'Estaing, after co-operating unsuccessfully with the Americans in [[Siege of Savannah|an attack]] on [[Savannah, Georgia]] in September, also returned to Europe. ||| West Indies, 1778–1779 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Machias ||| When the war began, the [[Kingdom of Great Britain|British]] had 131 [[ship of the line|ships of the line]], but the Royal Navy was in neglect The naval force at the disposal of the American admirals commanding on the North American station was insufficient to patrol mid atlantic. During the first three years of the war, therefore, the Royal Navy was primarily used in support of operations on land, aiding General [[Thomas Gage]] and General [[William Howe, 5th Viscount Howe|Sir William Howe]] during the [[siege of Boston]] by seeking stores for the army and in supplying naval brigades. In one of these operations, the first naval engagement of the war, colonists in [[Machias, Maine|Machias]], then part of Massachusetts (now in eastern [[Maine]]), seized a British schooner in the [[Battle of Machias]] on June 12, 1775. ||| American war, 1775–1778 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Martinique (1780) ||| On March 27, he joined Sir Hyde Parker at Santa Lucia, and Guichen retired to Fort Royal in Martinique. Until July, the fleets of Rodney and Guichen, of equal strength, were engaged in operations around the island of Martinique. The British admiral endeavoured to force on a close engagement. But in [[Battle of Martinique (1780)|the first encounter on April 17]] to leeward of the island, Rodney's orders were not executed by his captains, and the action was indecisive. He wished to concentrate on the rear of the enemy's line, but his captains scattered themselves along the French formation. In two subsequent actions, on May 15 and May 19, to windward of Martinique, the French admiral could not be brought to close action. ||| Spain enters the war, 1779–1780 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Nassau ||| In contrast to the British, the American colonists had no navy whatsoever. The lack of armed vessels to dispute British naval activities in coastal waters and to facilitate the seizure of commercial and military [[prize (law)|prize]]s prompted individual colonies to [[List of United States state navies in the American Revolutionary War|commission armed vessels]], and eventually led the [[Continental Congress]] to authorize the creation of a small [[Continental Navy]] on October 13, 1775. The Continental Navy never launched any ships of the line, so the small vessels were primarily used for [[commerce raiding]]. On December 22, 1775, [[Esek Hopkins]] was appointed the naval [[commander-in-chief]]. With his small fleet, Hopkins led the [[Battle of Nassau|first major naval action]] of the Continental Navy, in early March 1776, against [[Nassau, Bahamas|Nassau]], [[Bahamas]], where stores of much-needed gunpowder were seized for the use of the Continental Army. On April 6, 1776, the squadron [[Action of 6 April 1776|unsuccessfully encountered]] the 20-gun [[HMS Glasgow (1757)|HMS ''Glasgow'']] in the first major sea battle of the Continental Navy. ||| American war, 1775–1778 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Rhode Island ||| On the coast of America, the news of the approach of d'Estaing compelled the British commanders to evacuate [[Philadelphia, Pennsylvania|Philadelphia]] on June 18, 1778. Howe then concentrated his force of nine small line-of-battle ships at [[Sandy Hook (New Jersey)|Sandy Hook]] on June 29, and on July 11, he learned that d'Estaing was approaching. The French admiral did not venture to make an attack, and on July 22, he sailed to cooperate with the Americans in an [[Battle of Rhode Island|effort to expel]] the British garrison from [[Rhode Island]]. Howe, who had received a small reinforcement, followed. The French admiral, who had anchored above [[Newport, Rhode Island|Newport]], came to sea to meet him, but both fleets were scattered by storms, suffering some damage. D'Estaing sailed to Boston on August 21 to effect repairs. ||| France enters the war, 1778 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of Ushant (1778) ||| Keppel, after a preliminary cruise in June, brought d'Orvilliers to action off Brest on July 27, 1778, in the [[Battle of Ushant (1778)|Battle of Ushant]]. The fleets were equal but the action was indecisive, as the two forces merely passed one another, cannonading. A violent quarrel, made worse by political differences, broke out among the British commanders, which led to two courts-martial and the resignation of Keppel, and which did great injury to naval discipline. No further event of note occurred in European waters. ||| France enters the war, 1778 ||| ||| +0 Naval operations in the American Revolutionary War ||| Battle of the Saintes ||| De Grasse returned to the West Indies in November 1781, where he was followed by Hood, and resumed attacks on the British islands. In January and February 1782, he [[Battle of St. Kitts|conquered]] [[Saint Kitts|St. Christopher]], while a smaller French fleet under [[Armand of Kersaint|Kersaint]] retook the Dutch South American colonies, and de Barras took Sint Eustatius from Britain. De Grasse's action at St. Christopher was vigorously opposed by Hood, who with a much inferior force first drove de Grasse from his anchorage at [[Basseterre]] and then repulsed his repeated attacks. The next objective of the French was to join with a Spanish fleet for an attack on [[Jamaica]]. Admiral Rodney, having returned to his command with reinforcements, baffled this plan with a series of operations which culminated in the [[Battle of the Saintes]] on April 12, 1782, in which de Grasse's flagship was captured. No further operations of note occurred in the West Indies. In August, [[Jean-François de Galaup, comte de La Pérouse|La Pérouse's]] squadron [[Hudson Bay Expedition|raided the Hudson Bay]], capturing and sacking a number of British posts. At home, Howe relieved Gibraltar for the last time in September and October 1782. ||| Final New World operations, 1781–1782 ||| ||| +0 Naval operations in the American Revolutionary War ||| Great Siege of Gibraltar ||| In European waters, the English Channel had [[Armada of 1779|been invaded]] by a combined French and Spanish fleet of 66 sail of the line, Spain having now joined the coalition against Britain. Only 35 sail of the line could be collected against them under the command of Sir [[Charles Hardy]]. But they sailed late, had difficulties with disease and contrary winds, and ultimately withdrew. The allies retired early in September and were not even able to do significant harm to the British trade convoys. In the meantime, the Spaniards had also begun to [[Great Siege of Gibraltar|besiege Gibraltar]]. ||| Spain enters the war, 1779–1780 ||| ||| +0 Naval operations in the American Revolutionary War ||| Siege of Cuddalore ||| Suffren sailed from Île de France for India early in 1782, where he and British Admiral Sir [[Edward Hughes (admiral)|Edward Hughes]] fought a series of five actions between February 17, 1782 and June 20, 1783. These battles were noted for the balance in the opposing forces and the largely inconclusive outcomes, and Suffren's ability to maintain his fleet without any reliably safe port facilities. Though he had no port in which to refit and no ally save Hyder Ali, Suffren kept to the sea and did not even return to Île de France during the north-easterly monsoon, instead going to the Dutch port of [[Aceh]] to refit. Suffren [[Battle of Trincomalee|captured Trincomalee from the British]] in July 1782, in spite of Hughes, and in what was apparently the last military engagement of the entire war, [[Battle of Cuddalore (1783)|battled Hughes]] off [[Cuddalore]], where the British were [[Siege of Cuddalore|besieging the French and Mysoreans]]. While Hughes had a superior fleet, Suffren was able to prevent him from landing reinforcements. News of a preliminary peace agreement ended the siege and the ongoing battles between Hughes and Suffren. ||| East Indies campaign, 1778–1783 ||| ||| +0 Naval operations in the American Revolutionary War ||| Siege of Pensacola ||| During the rest of the year and part of the next, the British and French naval forces in North American waters remained at their respective headquarters of New York and Newport, watching one another. The West Indies was again the scene of the most important operations of the year. In February and March, a Spanish force from [[New Orleans]], under [[Bernardo de Gálvez]], invaded [[West Florida]] with success, and eventually [[Siege of Pensacola|captured Pensacola]] in a combined Franco-Spanish siege effort. In 1782, de Galvez's forces captured the British naval base at New Providence in the Bahamas. ||| Spain enters the war, 1779–1780 ||| ||| +0 Naval operations in the American Revolutionary War ||| Siege of Pondicherry (1778) ||| The war in the [[East Indies]] formed a separate series of episodes. In 1778, the British used combined land and naval forces to [[Siege of Pondicherry (1778)|capture the French port of Pondicherry]] after two months of siege, and to later capture French holdings on the west coast of India, including the key port of [[Mahé, India|Mahé]]. A naval engagement of a very feeble kind took place on August 10 of that year in the [[Bay of Bengal]], between Admirals [[Edward Vernon (d. 1794)|Edward Vernon]] and M. de Tronjoly. But the French were too weak in these seas for offensive movements and remained quiescent at [[Réunion|Bourbon]] and [[Mauritius|Île de France]] until the beginning of 1782. The port of Mahé had been the principal port through which [[Hyder Ali]] the ruler of the [[Kingdom of Mysore]] did significant trade, and the British capture sparked him to [[Second Anglo-Mysore War|begin a war]] with the [[British East India Company]]. ||| East Indies campaign, 1778–1783 ||| ||| +0 Naval operations in the American Revolutionary War ||| Siege of Yorktown ||| When Hood arrived off [[Chesapeake Bay]] in late August, de Grasse had not yet arrived, since he had deliberately taken a longer route to avoid notice. Hood proceeded on to New York, bringing news of de Grasse's approach (although ignorant of his strength) to Arbuthnot's successor, Admiral [[Thomas Graves, 1st Baron Graves|Thomas Graves]]. Word that [[Jacques-Melchior Saint-Laurent, Comte de Barras|de Barras]] had sailed from Newport with the entire French fleet led Graves to lead the combined fleet south to the Chesapeake, where de Grasse had in the meantime arrived. In the pivotal [[Battle of the Chesapeake]] on September 5, de Grasse got the better of the British, who ended up retreating back to New York while de Barras slipped into the Chesapeake carrying the French siege train. The naval blockade completed the encirclement of the British army of [[Charles Cornwallis, 1st Marquess Cornwallis|Charles Cornwallis]] at [[Yorktown, Virginia]], where he was [[Siege of Yorktown|compelled to surrender]] on October 19. Cornwallis' surrender spelled the end of significant military operations in North America, and led to the start of peace negotiations. While they went on, the war continued in other theaters. ||| Final New World operations, 1781–1782 ||| ||| +0 Naval operations in the Dardanelles Campaign ||| Battle of Trafalgar ||| De Robeck was reported to be distraught from the losses. He had been in charge of a fleet that had suffered the most serious loss to the Royal Navy since [[Battle of Trafalgar|Trafalgar]] and felt that losing further ships was the worst thing a sailor could do. On 23 March, he telegraphed the admiralty that it would be necessary to have the support of land forces before proceeding. He later told the [[Dardanelles Commission]] investigating the campaign that his main reason for changing his mind was concern for what might happen in the event of success: that the fleet might find itself at Constantinople or on the Marmara sea fighting an enemy which did not simply surrender as the plan presupposed, without any troops available to secure captured territory. ||| Battle of March 18 ||| Aftermath ||| +0 Neapolitan War ||| Battle of Leipzig ||| Murat originally ruled Naples following the same legal and social system used in France, whilst still participating in Napoleon's campaigns. But following the disastrous [[Battle of Leipzig]], Murat abandoned [[La Grande Armée]] to try to save his throne. As defeat in the [[War of the Sixth Coalition]] loomed, Murat increasingly moved away from Napoleon, eventually signing a treaty with [[Austrian Empire|Austria]] in January 1814 and joined the Allied side. ||| Background ||| ||| +0 Neapolitan War ||| Battle of Waterloo ||| The '''Neapolitan War''' was a conflict between the Napoleonic [[Kingdom of Naples]] and the [[Austrian Empire]]. It started on 15 March 1815 when [[Joachim Murat]] declared war on Austria and ended on 20 May 1815 with the signing of the [[Treaty of Casalanza]]. The war occurred during the [[Hundred Days]] between [[Napoleon I of France|Napoleon's]] return from exile and before he left Paris to be decisively defeated at the [[Battle of Waterloo]]. The war was triggered by a pro-Napoleon uprising in Naples, and ended after a decisive Austrian victory at the [[Battle of Tolentino]] and [[Ferdinand I of the Two Sicilies|Ferdinand IV]] was reinstated as King of Naples and Sicily. However, the intervention by Austria caused resentment in Italy, which further spurred on the drive towards [[Italian unification]]. ||| ||| ||| +0 Neapolitan War ||| French Revolutionary Wars ||| Before the [[French Revolutionary Wars]], Naples was ruled by the [[House of Bourbon|Bourbon]] [[Ferdinand I of the Two Sicilies|King Ferdinand IV]]. Ferdinand was a natural opponent of [[Napoleon I of France|Napoleon]] and was allied with the [[Third Coalition]] against him. However, after defeat at the [[Battle of Austerlitz]] and the [[Treaty of Pressburg (1805)|Treaty of Pressburg]], Ferdinand was forced to cede Naples to the French in early 1806. ||| Background ||| ||| +0 Neapolitan War ||| Italian unification ||| The '''Neapolitan War''' was a conflict between the Napoleonic [[Kingdom of Naples]] and the [[Austrian Empire]]. It started on 15 March 1815 when [[Joachim Murat]] declared war on Austria and ended on 20 May 1815 with the signing of the [[Treaty of Casalanza]]. The war occurred during the [[Hundred Days]] between [[Napoleon I of France|Napoleon's]] return from exile and before he left Paris to be decisively defeated at the [[Battle of Waterloo]]. The war was triggered by a pro-Napoleon uprising in Naples, and ended after a decisive Austrian victory at the [[Battle of Tolentino]] and [[Ferdinand I of the Two Sicilies|Ferdinand IV]] was reinstated as King of Naples and Sicily. However, the intervention by Austria caused resentment in Italy, which further spurred on the drive towards [[Italian unification]]. ||| ||| ||| +0 Neapolitan War ||| War of the Sixth Coalition ||| Murat originally ruled Naples following the same legal and social system used in France, whilst still participating in Napoleon's campaigns. But following the disastrous [[Battle of Leipzig]], Murat abandoned [[La Grande Armée]] to try to save his throne. As defeat in the [[War of the Sixth Coalition]] loomed, Murat increasingly moved away from Napoleon, eventually signing a treaty with [[Austrian Empire|Austria]] in January 1814 and joined the Allied side. ||| Background ||| ||| +0 Netanya Market bombing ||| Passover massacre ||| Netanya has been a frequent target of Palestinian suicide bombers. A [[Passover massacre|prior attack on March 27, 2002 at the Park hotel]] in Netanya killed 29 people during the Jewish [[Passover Seder]] and triggered [[Operation Defensive Shield]], a large Israeli military offensive in the [[West Bank]]. ||| Background ||| ||| +0 New Britain campaign ||| New Guinea campaign ||| The '''New Britain Campaign''' was a [[World War II]] campaign by the [[Allies of World War II|Allies]], between December 1943 and the end of the war in August 1945, to contain [[Empire of Japan|Japanese]] forces concentrated in [[Rabaul]], the capital of [[New Britain]], the major Japanese base for the [[New Guinea campaign|New Guinea]] and [[Solomon Islands campaign|Solomons campaigns]]. ||| ||| ||| +0 New Communist movement ||| Angolan Civil War ||| In its early years, NCM organisations formed a loose-knit tendency in United States [[leftist]] politics, but never coalesced into a single organization. As time went on, the organizations became extremely competitive and increasingly denounced one another. Points of distinction were frequently founded on the attitude taken toward the [[Gang of Four (China)|successors of Mao]] and international disputes between the Soviet Union and China regarding such developments as the [[Angolan Civil War]]. The [[Revolutionary Union]] organized the founding congress of the [[Revolutionary Communist Party USA]] in 1975. ||| Developments in the 1970s and 1980s ||| ||| +0 New Fourth Army incident ||| Second Sino-Japanese War ||| The '''New Fourth Army Incident''' (新四軍事件), also known as the '''[[Anhui|Wannan]] Incident''' (皖南事变), occurred in China in January 1941 during the [[Second Sino-Japanese War]], during which the [[Chinese Civil War]] was in theory suspended, uniting the [[Chinese Communist Party|Communist]]s and [[Kuomintang|Nationalist]]s against the [[Japan]]ese. It is significant as the end of real cooperation between the Nationalists and Communists. ||| ||| ||| +0 New Georgia Campaign ||| Battle of Kolombangara ||| The American ground troops on New Georgia were thus halted in both the north and the south. The Japanese brought reinforcements over by barge from Vila to Bairoko, and 1,200 more troops were loaded onto four destroyer-transports at Rabaul and sent down to be landed at Vila on the night of 12–13 July. These ships were escorted by a light cruiser and five destroyers. Admiral Ainsworth was sent to intercept this flotilla with three light cruisers and ten destroyers. He encountered the Japanese force in The Slot in the waters north of Kolombangara Island. The ensuing [[Battle of Kolombangara]] resulted in the sinking of the American destroyer ''Gwin'', the Japanese light cruiser ''Jintsu'', and the death of Rear Admiral Shunji Izaki. ||| Conquest of New Georgia Island ||| Debacle at Munda ||| +0 New Georgia Campaign ||| Battle of Kula Gulf ||| The night (5–6 July) after the Kula Gulf landings, the opposing naval forces engaged in a full-scale battle in the waters northeast of Kolombangara Island, an action that came to be called the [[Battle of Kula Gulf]]. The Americans lost light cruiser ''Helena'' and the Japanese lost destroyers ''Niizuki'' and ''Nagatsuki'', as well as Rear Admiral [[Teruo Akiyama]]. ||| Conquest of New Georgia Island ||| Landings in Kula Gulf ||| +0 New Georgia Campaign ||| Naval Battle of Vella Lavella ||| On the night of 6–7 October, Rear Admiral [[Matsuji Ijuin]] led a force consisting of three destroyer-transports and twelve small craft to take the 600 remaining ground troops off Vella Lavella. Ijuin personally commanded a group of six destroyers sent to cover the operation from American naval interference. Admiral Wilkinson hurriedly rerouted two groups of three destroyers each to attempt to disrupt the evacuation. Only the first group, under the command of Captain Frank R. Walker, arrived in time to engage in combat. In the resulting [[Naval Battle of Vella Lavella|Battle of Vella Lavella]], the US destroyer ''Chevalier'' and the Japanese destroyer ''Yugumo'' were lost. Ijuin succeeded in keeping the American ships from interfering in the evacuation. ||| Outlying Islands ||| Vella Lavella ||| +0 New Georgia counterattack ||| Battle of Munda Point ||| The Americans landed on New Georgia on 2 July 1943 and made limited gains in their drive toward Munda Point. The objective of the Japanese counterattack was to destroy the American forces on New Georgia by attacking their exposed flank and rear areas. The Japanese succeeded in infiltrating and attacking several isolated outposts in the American rear areas, but failed to inflict significant casualties on the American forces. After the Japanese counterattack was defeated, the Americans and their allies captured the airfield in the [[Battle of Munda Point]]. ||| ||| ||| +0 New Georgia counterattack ||| New Georgia Campaign ||| The '''New Georgia counterattack''' was a [[counterattack]] on 17–18 July 1943 by mainly [[Imperial Japanese Army]] troops against [[United States Army]] forces during the [[Battle of New Georgia|New Georgia Campaign]] in the [[Solomon Islands]]. The U.S. and its allies were [[Drive on Munda Point|attempting]] to capture an airfield constructed by the Japanese at Munda Point on New Georgia. ||| ||| ||| +0 New Guinea campaign ||| Battle of Biak ||| ** [[Battle of Biak]] ||| 1944–45 ||| ||| +0 New Guinea campaign ||| Battle of Finschhafen ||| ** [[Battle of Finschhafen]] ||| 1943 ||| ||| +0 New Guinea campaign ||| Battle of Morotai ||| ** [[Battle of Morotai]] ||| 1944–45 ||| ||| +0 New Guinea campaign ||| Battle of Sansapor ||| ** [[Battle of Sansapor]] ||| 1944–45 ||| ||| +0 New Guinea campaign ||| Battle of Wakde ||| ** [[Battle of Wakde]] ||| 1944–45 ||| ||| +0 New Guinea campaign ||| Battle of Wau ||| * [[Battle of Wau]] (29–31 Jan 1943) ||| 1943 ||| ||| +0 New Guinea campaign ||| Bombing of Wewak ||| * [[Bombing of Wewak]] (17–21 Aug 1943) ||| 1943 ||| ||| +0 New Guinea campaign ||| Huon Peninsula campaign ||| * [[Huon Peninsula campaign]] (22 Sep 1943 – 1 Mar 1944) ||| 1943 ||| ||| +0 New Guinea campaign ||| Landing at Nadzab ||| *** [[Landing at Nadzab]] ||| 1943 ||| ||| +0 New Guinea campaign ||| Landing at Nassau Bay ||| ** [[Landing at Nassau Bay]] ||| 1943 ||| ||| +0 New Guinea campaign ||| New Britain campaign ||| * [[New Britain campaign]] (15 Dec 1943 – 21 Aug 1945) ||| 1943 ||| ||| +0 New Guinea campaign ||| Western New Guinea campaign ||| * [[Western New Guinea campaign]] (1944–1945) ||| 1944–45 ||| ||| +0 New South Wales state election campaign, 2007 ||| Iraq War ||| The final week saw national politics dominate the headlines as the [[Iraq War]] entered its fourth year, Senator [[Santo Santoro]] resigned and federal Labor leader [[Kevin Rudd]], enjoying record approval ratings, announced plans to draw on the [[Future Fund]] to finance a nationwide fibre to the node [[broadband internet|broadband]] network. On the New South Wales campaign trail, much of the debate in the final week centred on costings. ||| Campaign Trail ||| 'The Labor Party is going to win the election' ||| +0 New Zealand Wars ||| Battle of Waterloo ||| Campaigners on both sides of the New Zealand wars had developed distinctive war strategies and tactics. The British set out to fight a European-style war, based on engaging with the opposing forces, besieging and then capturing fortified positions. The British Army were professional soldiers who had experience fighting in various parts of the Empire, many from [[India]] and [[Afghanistan]], and were led by officers who were themselves trained by men who fought at [[Battle of Waterloo|Waterloo]]. ||| Strategy and tactics ||| ||| +0 Newfoundland expedition ||| Battle of Trafalgar ||| The combined fleets of France and Spain had destroyed upwards of 100 merchant vessels, and taken a great number of prisoners. Some were sent in a [[Cartel (ship)|cartel]] to [[Halifax Regional Municipality|Halifax]], and the remainder, about 300 in number, were carried into France and Spain. The British bank fisheries in Newfoundland recovered following the signing of the [[Treaty of Amiens]] in March 1802, and in that year, 71 Newfoundland and 58 British 'banker' vessels prosecuted the fisheries on the Grand Banks. They declined again with the outbreak of war in 1803 and recovered somewhat after the [[Battle of Trafalgar]] in October 1805, but declined again during the [[War of 1812|Anglo-American war of 1812–14]]. ||| Aftermath ||| ||| +0 Nine Years' War ||| Siege of Limerick (1691) ||| On 30 June 1690 (O.S.) the French navy secured victory off [[Battle of Beachy Head (1690)|Beachy Head]] in the [[English Channel]] where Admiral [[Anne Hilarion de Tourville|Tourville]] defeated Admiral [[Arthur Herbert, 1st Earl of Torrington|Torrington]]'s inferior Anglo-Dutch fleet. – thereby confining French and Jacobite troops to the west of the country – William III now felt confident enough to return to the Continent at the beginning of 1691 to command the coalition army in the Low Countries, leaving [[Godert de Ginkell, 1st Earl of Athlone|Baron van Ginkell]] to lead his troops in Ireland. After Ginkell's victory over the [[Marquis de St Ruth|Marquis of Saint-Ruth]] at the [[Battle of Aughrim]] on 12 July (O.S.), the remaining Jacobite strongholds fell in rapid succession. Without prospect of further French assistance the [[Siege of Limerick (1691)|capitulation at Limerick]] finally sealed victory for William III and his supporters in Ireland with the signing of the [[Treaty of Limerick]] on 3 October (O.S.). English troops could now return to the Low Countries in strength. ||| Nine years of war: 1689–97 ||| Britain and Ireland ||| +0 Ninth Battle of the Isonzo ||| Sixth Battle of the Isonzo ||| As always along the [[Soča]] (Isonzo), the [[Austro-Hungarian Army]]'s command of the mountainous terrain provided a formidable natural barrier to the Italians' attempts to achieve a breakthrough. Cadorna had intended to ensure such a breakthrough in the wake of the capture of Gorizia during the [[Sixth Battle of the Isonzo]], but instead the war of attrition gathered pace. ||| ||| ||| +0 Ninth Battle of the Isonzo ||| Tenth Battle of the Isonzo ||| Operations renewed afresh with the [[Tenth Battle of the Isonzo]] on 12 May 1917. ||| ||| ||| +0 Nivelle Offensive ||| Battle of Arras (1917) ||| The Franco-British attacks were tactically successful; The French Third Army in {{lang|fr|''Groupe d'armées du Nord''}} captured the German defences west of the [[Hindenburg Line]] {{lang|de|''(Siegfriedstellung)''}} near St. Quentin in attacks from {{nowrap|1–4 April,}} before further attacks were repulsed. The British Third and First armies achieved the deepest advance since trench warfare began, in an offensive along the Scarpe river in the [[Battle of Arras (1917)|Battle of Arras]], which inflicted many losses on the Germans, attracted reserves and captured [[Battle of Vimy Ridge|Vimy Ridge]] to the north. The main French offensive on the Aisne began on 16 April and also achieved considerable tactical success. The attempt to force a strategically decisive battle on the Germans was a failure and by 25 April the main offensive was suspended. ||| ||| ||| +0 Nivelle Offensive ||| Battle of Vimy Ridge ||| The Franco-British attacks were tactically successful; The French Third Army in {{lang|fr|''Groupe d'armées du Nord''}} captured the German defences west of the [[Hindenburg Line]] {{lang|de|''(Siegfriedstellung)''}} near St. Quentin in attacks from {{nowrap|1–4 April,}} before further attacks were repulsed. The British Third and First armies achieved the deepest advance since trench warfare began, in an offensive along the Scarpe river in the [[Battle of Arras (1917)|Battle of Arras]], which inflicted many losses on the Germans, attracted reserves and captured [[Battle of Vimy Ridge|Vimy Ridge]] to the north. The main French offensive on the Aisne began on 16 April and also achieved considerable tactical success. The attempt to force a strategically decisive battle on the Germans was a failure and by 25 April the main offensive was suspended. ||| ||| ||| +0 Nivelle Offensive ||| Battle of the Hills ||| The '''Nivelle Offensive''' in 1917, was a Franco-British offensive on the [[Western Front (World War I)|Western Front]] in the [[First World War]]. The French part of the offensive was intended to be strategically decisive, by breaking through the German defences on the Aisne within {{nowrap|48 hours,}} with casualties expected to be around {{nowrap|10,000 men.}} A preliminary attack was to be made by the French [[Third Army (France)|Third Army]] at St. Quentin and the British [[First Army (United Kingdom)|First]], [[Third Army (United Kingdom)|Third]] and [[Fifth Army (United Kingdom)|Fifth]] armies at Arras, to capture high ground and divert German reserves from the French fronts on the Aisne and in Champagne. The main offensive was to be delivered by the French on the [[Chemin des Dames]] ridge (the [[Second Battle of the Aisne]] {{lang|fr|''La bataille du Chemin des Dames''}} or {{lang|fr|''Seconde bataille de l'Aisne''}}), with a subsidiary attack by the Fourth Army (the Third Battle of Champagne, the [[Battle of the Hills]] or 'Battle of the Hills of Champagne'). The final stage of the offensive was to follow the meeting of the British and French armies, having broken through the German lines, with a pursuit of the defeated German armies towards the German frontier. ||| ||| ||| +0 Nivelle Offensive ||| Second Battle of the Aisne ||| The '''Nivelle Offensive''' in 1917, was a Franco-British offensive on the [[Western Front (World War I)|Western Front]] in the [[First World War]]. The French part of the offensive was intended to be strategically decisive, by breaking through the German defences on the Aisne within {{nowrap|48 hours,}} with casualties expected to be around {{nowrap|10,000 men.}} A preliminary attack was to be made by the French [[Third Army (France)|Third Army]] at St. Quentin and the British [[First Army (United Kingdom)|First]], [[Third Army (United Kingdom)|Third]] and [[Fifth Army (United Kingdom)|Fifth]] armies at Arras, to capture high ground and divert German reserves from the French fronts on the Aisne and in Champagne. The main offensive was to be delivered by the French on the [[Chemin des Dames]] ridge (the [[Second Battle of the Aisne]] {{lang|fr|''La bataille du Chemin des Dames''}} or {{lang|fr|''Seconde bataille de l'Aisne''}}), with a subsidiary attack by the Fourth Army (the Third Battle of Champagne, the [[Battle of the Hills]] or 'Battle of the Hills of Champagne'). The final stage of the offensive was to follow the meeting of the British and French armies, having broken through the German lines, with a pursuit of the defeated German armies towards the German frontier. ||| ||| ||| +0 Noemvriana ||| Gallipoli Campaign ||| In early 1915, Britain offered Greece 'territorial concessions in [[Asia Minor]]' if it would participate in the upcoming [[Gallipoli Campaign]]. Venizelos supported this idea, while the king and his military advisers opposed it. Dismayed at the king's opposition, the prime minister resigned on 21 February 1915. A few months later, Venizelos' [[Liberal Party (Greece)|Liberal Party]] won the [[Greek legislative election, May 1915|May elections]], and formed a new government. When Bulgaria mobilized against Serbia in September 1915, Venizelos ordered a Greek counter-mobilization and asked the Anglo-French army to defend [[Thessaloniki]] and aid Serbia. The Allies, led by General [[Maurice Sarrail]], began landing on 22 September 1915 and entrenched around the city. The Greek parliament gave Venizelos a vote of confidence to help Serbia, yet the king unconstitutionally dismissed the prime minister along with the parliament. This unlawful order escalated the animosity between the king and Venizelos as well as their loyal followers. The Liberals boycotted the [[Greek legislative election, December 1915|December elections]]. ||| Background: Greece 1914-1916 ||| ||| +0 Noemvriana ||| Second Balkan War ||| Greece emerged victorious after the 1912-1913 [[Balkan Wars]], with her territory almost doubled.{{cref|i}} The unstable international political climate of the early 20th century placed Greece in a difficult position. The ownership of the Greek occupied eastern Aegean islands was contested by the [[Ottoman Empire]] which claimed them as their own. In the north, [[Kingdom of Bulgaria|Bulgaria]], defeated in the [[Second Balkan War]], was engineering [[revanchist]] strategies against Greece and Serbia. The assassination of [[Archduke Franz Ferdinand of Austria]] in Serbia precipitated Austria-Hungary's declaration of war against Serbia. This caused Germany and Austria-Hungary, and countries allied with Serbia (the Triple Entente Powers) to declare war on each other, starting World War I. ||| Background: Greece 1914-1916 ||| ||| +0 North African Campaign ||| Allied invasion of Sicily ||| After victory by the Allies in the North African Campaign, the stage was set for the [[Italian Campaign (World War II)|Italian Campaign]] to begin. The [[Allied invasion of Sicily|invasion of Sicily]] followed two months later. Nearly 400,000 Axis and Allied troops were either lost, injured, or died of disease by the end of the North African campaign. ||| Aftermath ||| ||| +0 North African Campaign ||| Scuttling of the French fleet in Toulon ||| The Allied landings prompted the Axis occupation of Vichy France ([[Case Anton]]). In addition, the French fleet was captured at Toulon by the Italians, something which did them little good as the [[Scuttling of the French fleet in Toulon|main portion of the fleet had been scuttled]] to prevent their use by the Axis. The Vichy army in North Africa joined the Allies (see [[Free French Forces]]). ||| Operation Torch ||| ||| +0 North Korea–United States relations ||| Russo-Japanese War ||| Korea and the U.S. ultimately established trade relations in 1882. Relations soured again when the U.S. negotiated peace in the [[Russo-Japanese War]]. Japan persuaded the U.S. to accept Korea as part of Japan's [[sphere of influence]], and the United States did not protest when Japan annexed Korea five years later. Korean nationalists unsuccessfully petitioned the United States to support their cause at the [[Versailles Treaty]] conference under [[Woodrow Wilson]]'s principle of national self-determination. ||| History ||| ||| +0 North Korea–United States relations ||| United States expedition to Korea ||| Although hostility between the two countries remains largely a product of [[Cold War]] politics, there were earlier conflicts and animosity between the U.S. and Korea. In the mid-19th century Korea closed its border to Western trade. In the [[General Sherman incident|''General Sherman'' incident]], Korean forces attacked a U.S. gunboat sent to negotiate a trade treaty and killed its crew, after fire from both sides because it defied instructions from Korean officials. A U.S. retribution attack, the [[United States expedition to Korea|Shinmiyangyo]], followed. ||| History ||| ||| +0 Northeast Coast Campaign (1746) ||| Siege of Louisbourg (1745) ||| In response to the New England [[Siege of Louisbourg (1745)|expedition against Louisbourg]] which finished in June 1745, the Wabanaki retaliated by attacking the New England border. [[Fort William Henry (Pemaquid Beach, Maine)#Fort Frederick|Fort Frederick]] was established at Pemaquid (Bristol, Maine). ||| Background ||| ||| +0 Northern Expedition ||| Shanghai massacre of 1927 ||| Following the defeat of the [[Zhili clique]], Chiang decided to purge all Communists from the Kuomintang. In the [[Shanghai massacre of 1927|Shanghai massacre of April 12]], thousands of Communists were executed or went missing, while others were arrested and imprisoned. The purge caused a split between the KMT's left and right wings. The leftists, led by [[Wang Jingwei]] in the KMT capital at [[Wuhan]], condemned Chiang's purge. Chiang, however, subsequently established his own capital in Nanjing. As a result, the Nationalist party and its military forces were in a state of disarray during the summer of 1927. ||| The Purge ||| ||| +0 Northern Expedition ||| World War II ||| The wars between these new warlords claimed more lives than ever in the 1930s. This would prove to be a major problem for the KMT all the way through [[World War II]] and the following [[Chinese Civil War|civil war]]. Chiang gained the greatest benefit from the expedition, however, for the victory achieved his personal goal of becoming paramount leader. Furthermore, he made the military command superior to KMT party leadership, which resulted in his dictatorship later. ||| Outcome ||| ||| +0 Northern Iraq offensive (June 2014) ||| Sinjar massacre ||| In early August 2014, ISIL launched a new offensive against Kurdish-held territory in northern Iraq and within days [[Sinjar massacre|captured the town of Sinjar]], displacing its [[Yazidi]] population. ISIL had also advanced to within 40 kilometers from the Kurdish capital of [[Erbil]]. This prompted the United States to start launching [[2014 American intervention in Iraq|air-strikes on advancing ISIL forces]]. ||| Aftermath ||| August ISIL offensive ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Cobleskill ||| In 1778, Brant recruited [[Brant's Volunteers|a mixed force]] of Loyalists and Iroquois, and started his frontier raids with an [[Battle of Cobleskill|attack]] on [[Cobleskill (village), New York|Cobleskill, New York]] in May 1778, and the Senecas operated in the Susquehanna River valley, driving settlers out of present-day [[Lycoming County, Pennsylvania]] in a series of actions that became known as the [[Big Runaway]]. The Butlers and Senecas joined forces in early July to [[Battle of Wyoming|attack the Wyoming Valley]]. Although Brant was not present, atrocities claimed to have been committed there contributed to his reputation as a 'monster', and the Seneca were outraged at false accusations that they had committed atrocities. ||| Frontier war ||| Raiding in the valleys, 1778 ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Rhode Island ||| The only other notable actions occurred in [[New England]]. A combined American-French attempt was made to drive the British out of [[Newport, Rhode Island]]. The [[Battle of Rhode Island]] ended badly when the French fleet abandoned the effort; the failure did some damage to American–French relations. In 1779 the British established a base on the [[Penobscot River]] in the [[District of Maine]] with the intent of establishing a Loyalist presence there. The state of [[Massachusetts]] responded with the amphibious [[Penobscot Expedition]], which ended in complete disaster. ||| ||| ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Stony Point ||| In May 1779 Clinton captured the outpost at [[Stony Point, New York]], which guarded one side of a major crossing point on the Hudson River. When he weakened this force to provide troops for [[William Tryon]]'s coastal raids, Washington devised an attack to regain the position. In the [[Battle of Stony Point]] on July 16, 1779, the fort was stormed by [[Anthony Wayne]]'s light infantry. Clinton later withdrew his forces back to New York as part of the planning for the invasion of the southern states. Later in 1779, [[Light Horse Harry Lee]] led American troops in a surprise raid on [[Battle of Paulus Hook|Paulus Hook]] in present-day [[Jersey City, New Jersey]] that weakened British control of northern New Jersey. ||| Skirmishes around New York ||| ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Battle of Wyoming ||| In 1778, Brant recruited [[Brant's Volunteers|a mixed force]] of Loyalists and Iroquois, and started his frontier raids with an [[Battle of Cobleskill|attack]] on [[Cobleskill (village), New York|Cobleskill, New York]] in May 1778, and the Senecas operated in the Susquehanna River valley, driving settlers out of present-day [[Lycoming County, Pennsylvania]] in a series of actions that became known as the [[Big Runaway]]. The Butlers and Senecas joined forces in early July to [[Battle of Wyoming|attack the Wyoming Valley]]. Although Brant was not present, atrocities claimed to have been committed there contributed to his reputation as a 'monster', and the Seneca were outraged at false accusations that they had committed atrocities. ||| Frontier war ||| Raiding in the valleys, 1778 ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Cherry Valley massacre ||| Brant joined forces with some of [[Butler's Rangers]] to [[Attack on German Flatts (1778)|attack German Flatts]] in early September. New York authorities responded to Brant's activities by [[Raid on Unadilla and Onaquaga|destroying]] the Indian towns of [[Unadilla (village), New York|Unadilla]] and [[Onaquaga]] in October; those towns had been used by Brant and the Butlers as bases of operation. Brant, the Butlers and some Senecas joined forces to take revenge by participating in [[Cherry Valley massacre|a major attack]] on [[Cherry Valley (village), New York|Cherry Valley]] in early November in which as many as 30 non-combatants were slaughtered in the aftermath. British forces from the [[Montreal]] area led by Major [[Christopher Carleton]] [[Carleton's Raid (1778)|raided]] communities in the upper Hudson River valley in October. ||| Frontier war ||| Raiding in the valleys, 1778 ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Mount Hope Bay raids ||| The arrival off New York of a French fleet in July 1778 caused a flurry of activity. Major General [[John Sullivan (general)|John Sullivan]] had earlier been sent to [[Rhode Island]] to organize an attack on British-occupied [[Newport, Rhode Island|Newport]]. The British [[Mount Hope Bay raids|raided his supply caches]], as well as destroying military defenses and significantly damaging several communities on [[Mount Hope Bay]]. Sullivan's efforts became part of the first major attempt at Franco-American cooperation after the idea of an attack on New York was rejected. Marred by bad weather and poor communication, French troops arrived but were not used, and the Americans, while in retreat after a brief failed siege effort at Newport, fought an inconclusive battle with British forces in the [[Battle of Rhode Island]]. General Clinton marshalled troops from New York intending to support the New York garrison, but he arrived off Newport after the Americans had been driven off. Clinton instead ordered these troops on [[Grey's raid|a raid]] (also led by General Grey) against [[New Bedford, Massachusetts]] and [[Martha's Vineyard]] in September 1778. He also ordered [[Tryon's raid|a series of raids]] on the Connecticut coast led by William Tryon in 1779. The most devastating raid was [[Battle of Groton Heights|against New London]] in 1781, led by turncoat British General [[Benedict Arnold]]. ||| Coastal actions ||| ||| +0 Northern theater of the American Revolutionary War after Saratoga ||| Western theater of the American Revolutionary War ||| The Butlers continued to attack New York frontier areas while Brant became more active on the [[Western theater of the American Revolutionary War|western front]]. In early April 1782, [[Anne Hupp]] defended the fort of Miller's Blockhouse against a [[Shawnee]] Indian attack, ||| Frontier war ||| Raiding continues ||| +0 Northwest Indian War ||| American Revolutionary War ||| Under the [[Treaty of Paris (1783)]], which ended the [[American Revolutionary War]], Great Britain ceded to the U.S. 'control' of the Northwest Territory, which was occupied by numerous Native American peoples. Despite the treaty, the [[United Kingdom|British]] kept forts and policies there that supported the natives in the Northwest Territories. President [[George Washington]] directed the [[United States Army]] to halt the hostilities between the Indians and settlers and enforce U.S. sovereignty over the territory. The U.S. Army, consisting of mostly untrained recruits supported by equally untrained militiamen, suffered a series of major defeats, including the [[Harmar Campaign]] (1790) and [[St. Clair's Defeat]] (1791), which were resounding Native American victories. About 1,000 soldiers and militiamen were killed and the United States forces suffered many more casualties than their opponents. ||| ||| ||| +0 Northwest Indian War ||| Battle of Blue Licks ||| As the war with the British came to a close, the young United States looked to secure their borders, exact revenge for Native American raids, and expand westward. In March 1782, a band of Pennsylvania militia entered [[Ohio Country]] and [[Gnadenhutten massacre|massacred]] a Christian [[Lenape]] village of [[Gnadenhutten, Ohio|Gnadenhütten]]. Two months later, Colonel [[William Crawford (soldier)|William Crawford]] led 500 volunteers deep into Ohio Country and [[Crawford expedition|attacked Native American villages]] near the [[Sandusky River]]. Crawford's force was defeated with a loss of about 70 Americans killed, and several prisoners were executed in retaliation for the Gnadenhutten massacre.{{sfnp|Dowd|1992|p=87-88}} In August of 1782, the last battle of the American Revolutionary War, the [[Battle of Blue Licks]], was fought in [[Kentucky]]. On a hill next to the Licking River in what is now [[Robertson County, Kentucky]], a force of about 50 British rangers and 300 Natives ambushed and routed 182 pursuing Kentucky militiamen. ||| Background ||| American Revolution ||| +0 Northwest Indian War ||| Battle of Wyoming ||| During the [[American Revolution]], four of the Six Nations of the [[Iroquois League]] sided with the British. The Mohawk, Onondaga, Cayuga and Tuscarora fought against colonists in the [[Battle of Oriskany]], aided the British in the [[Battle of Wyoming]] in [[Pennsylvania]], and at [[Battle of Saratoga|Saratoga]], [[Cherry Valley Massacre|Cherry Valley]], and other raids throughout the [[Mohawk Valley]] in New York, as well as in numerous other actions on the frontiers of New York and Pennsylvania. As the British concentrated on the [[southern United States]] in 1779, General [[George Washington]] took action against the Six Nations. ||| Background ||| American Revolution ||| +0 Northwest Indian War ||| French and Indian War ||| Throughout the 17th and 18th centuries, both Britain and France claimed ownership of the Ohio Country, in competition with the Five Nations (who became the 'Six Nations' after the admission of the [[Tuscarora people|Tuscarora]] in 1723), and by the mid-18th century had sent merchants and fur traders into the area to trade with local Natives. Violence quickly erupted. During the [[French and Indian War]], an extension in North America of the [[Seven Years' War]] in Europe. Indian tribes allied with either the French or British, often depending on trading priorities, and warred with each other and the colonists. When it was defeated, France relinquished all its territorial claims to Britain in the [[Treaty of Paris (1763)|Treaty of Paris]] in 1763. ||| Background ||| French and British occupation ||| +0 Northwest Indian War ||| War of 1812 ||| The Ohio Territory was subject to overlapping and conflicting claims by the states of [[Massachusetts]], [[Connecticut]], New York, and [[Virginia]], and to those by the Shawnee, Mingo, Lenape and other actual inhabitants, who were no longer considered tributary to the Six Nations. While the British had suffered a major defeat at the [[Battle of Yorktown (1781)]], there had been no decisive defeat for their Native allies in the Northwest Territories. The Native tribes in the [[Old Northwest]] were not party to the treaty. Many leaders, especially [[Little Turtle]] and [[Blue Jacket]], refused to recognize United States claims to the area northwest of the Ohio River. The British remained in possession of their Great Lakes forts, through which they continued to supply Native American allies with trade items and weapons in exchange for furs. Some in the British government wished to maintain a neutral Native territory between Canada and the United States, but most agreed that immediate withdrawal was not possible without sparking a new war with Natives.{{sfnp|Skaggs|1977|p=318}} The lingering British presence was not formally ended until their withdrawal from the Great Lakes forts pursuant to the [[Jay Treaty]] negotiated in 1794, and it would continue informally afterward until the [[War of 1812]]. ||| Postwar tensions ||| ||| +0 November 2012 Jordanian protests ||| Egyptian Revolution of 2011 ||| [[Food inflation]] and salaries have been causes for resentment in the country, having led to [[2011-2012 Jordanian protests|protests]] the year before. The [[Tunisian Revolution]] and the [[Egyptian Revolution of 2011|Egyptian Revolution]] also raised hopes for political change in the region. Together with unrest elsewhere in the Middle East and North Africa, including the disturbances in Syria and Yemen, they were part of the [[Arab Spring]]. ||| Background ||| ||| +0 November 2015 Kidal attack ||| March 2015 Kidal attack ||| The UN base in Kidal was [[March 2015 Kidal attack|targeted]] in March as well, resulting in the deaths of two children and a [[Chad]]ian peacekeeper. ||| Background ||| ||| +0 November 2015 Kidal attack ||| Operation Serval ||| Following the [[Libyan Civil War]], [[Tuareg]]s fighting in the [[Libyan Arab Republic]]'s [[Armed Forces of the Libyan Arab Jamahiriya|Libyan army]] fled to northern Mali with weapons. The ensuing insurgency quickly led to the [[Azawadi declaration of independence|self-declared independence]] and consequent armed [[Islamist]] insurgency by [[MOJWA]] and [[Ansar Dine]] against the secular [[National Movement for the Liberation of Azawad|MNLA]]. This led to [[Operation Serval]] by France. ||| Background ||| ||| +0 November 2015 Sinjar offensive ||| Sinjar massacre ||| In what is known as the [[Sinjar massacre]], 2,000–5,000 [[Yazidis]] were killed in and around Sinjar, while 200,000 civilians fled. Amongst these, some 50,000 [[Yazidis]] fled to the [[Sinjar Mountains]], located to the city's north, where they were facing starvation and dehydration. By the end of August, the majority of these 50,000 Yazidis were able to leave the mountains through a corridor opened by Kurdish forces, although several thousands stayed there. ||| Background ||| ||| +0 Occupation of Araucanía ||| Battle of San Juan and Chorrillos ||| Having decisively defeated Peru in the [[Battle of San Juan and Chorrillos|battles of Chorrillos]] and [[Battle of Miraflores|Miraflores]] in January 1881 Chilean authorities turned their attention to Araucanía seeking to defend the previous advances that had been so difficult to establish. ||| Occupation ||| Chilean advance to Cautín (1881) ||| +0 Occupation of Araucanía ||| Chilean War of Independence ||| The Chilean agriculture sector was badly affected by the [[Chilean War of Independence]]. In the 1850s, with the [[German colonization of Valdivia, Osorno and Llanquihue]] and the [[Patagonian sheep farming boom|onset of sheep farming]] in the Chilean territory at the [[Strait of Magellan]], Araucanía remained the sole place for agriculture to expand. ||| Background ||| Expansion of Chilean agriculture ||| +0 Occupation of Constantinople ||| Fall of Constantinople ||| 1918 saw the first time Constantinople had changed hands since the Ottoman Turks [[Fall of Constantinople|conquered the Byzantine capital]] in 1453. ||| ||| ||| +0 Occupy Baltimore ||| Occupy Wall Street ||| '''Occupy Baltimore''' was a collaboration that included [[peaceful protest]]s and [[Demonstration (people)|demonstration]]s. Occupy Baltimore began on October 4, 2011 in [[Baltimore]], [[Maryland]], in [[McKeldin Square]] near the [[Inner Harbor]] area of [[Downtown Baltimore]]. It is one of the many [[Occupy movement]]s around the United States and worldwide, inspired by [[Occupy Wall Street]]. ||| ||| ||| +0 Occupy Canada ||| Kristallnacht ||| On October 25, Mayor of Halifax [[Peter J. Kelly|Peter Kelly]] asked the Occupiers to move from the Grand Parade to the [[Halifax Common]] so the area can be prepared for the [[Kristallnacht|Dignity Day]] and [[Remembrance Day]] ceremonies usually held in the square. Occupy protesters said they would seek a compromise. ||| Canadian participation in the Global Day of Action ||| Occupy Nova Scotia ||| +0 Occupy Canada ||| Occupy Wall Street ||| '''Occupy Canada''' was a collective of [[Nonviolent resistance|peaceful protests]] and [[Demonstration (people)|demonstrations]] that were part of the larger [['Occupy' protests|Occupy Together movement]] which first manifested in the financial district of New York City with [[Occupy Wall Street]], and subsequently spread to [[List of Occupy movement protest locations|over 900 cities around the world]]. ||| ||| ||| +0 Occupy Charlotte ||| Occupy Wall Street ||| '''Occupy Charlotte''' was a collective of protesters that settled on September 30, 2011 in [[Charlotte, North Carolina]], in front of the old city hall. It is related to the [[Occupy Wall Street]] movement that began in New York City on September 17, 2011 also protesting against [[Equity (economics)|economic inequity]], [[corporate greed]], and the influence of corporations and [[lobbying|lobbyists]] on government. The movement also seeks to show that non-hierarchical [[consensus decision-making]], [[direct action]] and [[Mutual aid (organization theory)|mutual aid]] are preferable alternatives to current systems of power and control. ||| ||| ||| +0 Occupy Las Vegas ||| Occupy Wall Street ||| '''Occupy Las Vegas''' (abbreviated '''OLV''') was an [[Occupation (protest)|occupation]] and [[Nonviolent resistance|peaceful protest]] that began on October 6, 2011. It is affiliated with the [[Occupy Wall Street]] movement that began in [[New York City]], and also with the [[Occupy movement|'Occupy' movement]] in the United States and around the world. A series of meetings that were titled 'The General Assembly' or 'GA' were held to plan the beginning of the event on October 6, 2011, and were held to create a consensus on policies and planning for the occupation. ||| ||| ||| +0 Occupy Melbourne ||| Occupy Wall Street ||| In response to a call out of the United States from Occupy Together for global protest encampments in solidarity with [[Occupy Wall Street]], and a call from the Spanish los indignados for a global day of action on October 15, an Occupy Melbourne Facebook group was started at the end of September by a young non-activist woman living in the suburbs. From this, two organising meetings were held, the first at a venue on Sydney Road in Brunswick, the second at Ross House in Melbourne city. At the second, several working groups were formed, a website launched and plans made to begin a protest encampment at City Square commencing October 15. ||| History ||| City Square encampment ||| +0 Occupy Reykjavík ||| Occupy Wall Street ||| The general protest on 1 October 2011 was linked to the [[Occupy Wall Street]] protests in New York, United States. ||| Protests ||| ||| +0 Occupy St. Louis ||| Occupy Wall Street ||| '''Occupy St. Louis''' (OccupySTL) was a [[postpartisan]] people's [[Social movement|movement]] that began on October 1, 2011 as a [[Nonviolent resistance|peaceful protest]] against corporate greed, its influence over the economy, its corruption of government, and ensuing inequality. Although people possess differing viewpoints and diversity of views is a central tenet, commonly held themes seek an equal playing field in the economy with more equal opportunities for all people as well as accountability for corporate and financial malfeasance. Many of those in the movement argue that structural, systemic change is necessary and that incremental reform is insufficient and in any case not possible without popular [[countervailing power]] to the power of moneyed interests. Occupy St. Louis is in solidarity with the [[Occupy Wall Street]] [[Occupy movement|movement]]. It is located at Kiener Plaza in downtown [[St. Louis, Missouri|St. Louis]] near an area which includes many financial institutions such as commercial banks and the [[Federal Reserve Bank of St. Louis]]. ||| ||| ||| +0 Occupy Sydney ||| Occupy movement ||| '''Occupy Sydney''' was a [[social movement]] and protest as part of the global [[Occupy movement]]s, in [[Sydney, Australia]]. The occupation began on 15 October 2011 outside the [[Reserve Bank of Australia]] in [[Martin Place]]. The Martin Place occupation was first evicted by [[NSW Police]] on 23 October 2011. This eviction and later police action was named Operation Goulding. Another eviction attempt occurred on 2 February 2012. The protest site was removed five times in early July 2013, only to re-establish itself each time within hours. ||| ||| ||| +0 Occupy Toronto ||| 15 October 2011 global protests ||| Demonstrators gathered at the intersection of King St. and Bay St. at around 10 am on the [[15 October 2011 global protests|15 October 2011 Global Day of Action]] and then moved to [[St. James Park, Toronto|St. James Park]] while stressing the importance of a peaceful demonstration and the need to be heard as a single voice. After the first few hours, as the sunset progressed the numbers dropped into the hundreds. ||| Chronology of events ||| Global Day of Action ||| +0 Occupy Wall Street ||| Arab Spring ||| More recent prototypes for OWS include the [[2010 UK student protests|British student protests of 2010]], [[2009-2010 Iranian election protests]], the [[Arab Spring|Arab Spring protests]], Sociologist Dana Williams has likewise argued that 'the most immediate inspiration for Occupy is anarchism,' and the ''[[LA Times]]'' has identified the 'controversial, anarchist-inspired organizational style' as one of the hallmarks of OWS. ||| Origins ||| ||| +0 Occupy movement ||| 15 October 2011 global protests ||| On [[15 October 2011 global protests]] were staged around the world, with thousands of protesters staging demonstrations in 900 cities including Auckland, Sydney, Hong Kong, Taipei, Tokyo, São Paulo, Paris, Madrid, Berlin, Hamburg, Leipzig, and many other cities. In Frankfurt, 5,000 people protested at the European Central Bank and in Zurich, Switzerland's financial hub, protesters carried banners reading 'We won't bail you out yet again' and 'We are the 99 percent.' Protests were largely peaceful; however, a protest in Rome that drew thousands turned violent. ||| Chronology of events ||| 15 October to 4 November ||| +0 Occupy movement ||| 2009 California college tuition hike protests ||| In 2009 and 2010, students across the University of California [[2009 California college tuition hike protests|occupied campus buildings in protest]] against budget cuts, tuition hikes, and staff cutbacks that had resulted from the Great Recession of 2008. According to [[Dissent (American magazine)|Dissent Magazine]], 'It was in the context of the California student movement that the slogan 'Occupy Everything, Demand Nothing' first emerged.' ||| Background ||| ||| +0 Occupy movement ||| 2011 G-20 Cannes summit ||| Also in November 2011, [[Paul Mason (journalist)|Paul Mason]] said that the Occupy movement had started to dynamically shape the global policy response to the [[Late-2000s financial crisis]], being mentioned so often at [[2011 G-20 Cannes summit|the 2011 G20 summit]] that if Occupy had been a brand 'it would have a profile to die for among the super-elite'. ||| Impact ||| Political impact ||| +0 Occupy movement ||| Hurricane Sandy ||| The Occupy movement has become a global collection of groups working toward similar goals under the Occupy name than an effort to occupy physical spaces. These groups include [[Occupy Sandy]] which has provided needed relief to the New York area since [[Hurricane Sandy]] hit, There are numerous non-listed groups and actions. ||| Chronology of events ||| 1 January 2012 to present ||| +0 Occupy movement ||| Occupy Nigeria ||| On 2 January 2012, [[Occupy Nigeria]] began, sparked by Nigeria's [[Goodluck Jonathan|President Jonathan]] announcing the ending of fuel subsidies in the country. There was support from the global movement, but most of the activity took place in Nigeria itself, with a report from [[The Christian Science Monitor|CSM]] saying strikes were effectively shutting down whole cities. On 16 January President Jonathan responded by announcing he would bring prices back down by partially restoring the fuel subsidy. ||| Chronology of events ||| 1 January 2012 to present ||| +0 October 13 massacre ||| Gulf War ||| An international green light was given to [[Hafez al-Assad]] to invade Lebanon, since he promised to assist in the [[Coalition of the Gulf War|Gulf War]] with about 10,000 soldiers and 200 tanks. ||| The Syrian air force intervention ||| ||| +0 October 2013 Myanmar bombings ||| 2013 Southeast Asian Games ||| Small bomb blasts occurred frequently under previous [[State Peace and Development Council|military regime]], and were normally blamed on armed ethnic groups, although many believed the authorities were behind the explosions. These incidents had become rarer in recent years, and security had been heightened in anticipation of [[2013 Southeast Asian Games]]. ||| Reactions and investigations ||| ||| +0 October Revolution ||| Battle of Stalingrad ||| The term 'Red October' (Красный Октябрь, Krasnyy Oktyabr) has also been used to describe the events of the month. This name has in turn been lent to a steel factory made notable by the [[Battle of Stalingrad]],{{Citation needed|date=June 2008}} a [[Krasny Oktyabr Open Joint-Stock Company|Moscow sweets factory]] that is well known in Russia, and a [[Red October (submarine)|fictional Soviet submarine]]. ||| Legacy ||| ||| +0 October Revolution ||| Finnish Civil War ||| * 28 January 1918: Helsinki (the [[Red Guards (Finland)|Reds]] overthrow the [[Senate of Finland|White Senate]], the [[Finnish Civil War]] begins) ||| Timeline of the spread of Soviet power ([[Gregorian calendar]] dates) ||| ||| +0 October Revolution ||| July Days ||| On 16 July spontaneous demonstrations of workers and soldiers began in Petrograd, demanding that power be turned over to the soviets. The Central Committee of the [[Russian Social Democratic Labour Party]] provided leadership to the spontaneous movements. On 17 July, over 500,000 people participated in a peaceful demonstration in Petrograd, the so-called [[July Days]]. The Provisional Government, with the support of the [[Socialist-Revolutionary Party]]-[[Menshevik]] leaders of the All-Russian Executive Committee of the Soviets, ordered an armed attack against the peaceful demonstrators, murdering hundreds. ||| Background ||| ||| +0 October Revolution ||| Kerensky Offensive ||| In a diplomatic note of 1 May, the minister of foreign affairs, [[Pavel Milyukov]], expressed the Provisional Government's desire to carry the war against the [[Central Powers]] through 'to a victorious conclusion', arousing broad indignation. On 1–4 May about 100,000 workers and soldiers of Petrograd, and after them the workers and soldiers of other cities, led by the Bolsheviks, demonstrated under banners reading 'Down with the war!' and 'all power to the soviets!' The mass demonstrations resulted in a crisis for the Provisional Government. 1 July saw more demonstrations, as about 500,000 workers and soldiers in Petrograd demonstrated, again demanding 'all power to the soviets', 'down with the war', and 'down with the ten capitalist ministers'. The Provisional Government opened an [[Kerensky Offensive|offensive]] against the Central Powers on 1 July but it soon collapsed. The news of the offensive and its collapse intensified the struggle of the workers and the soldiers. A new crisis in the Provisional Government began on 15 July. ||| Background ||| ||| +0 October Revolution ||| Kiev Arsenal January Uprising ||| * 29 January 1918: ([[Kiev Arsenal January Uprising|failed]] again in Kiev) ||| Timeline of the spread of Soviet power ([[Gregorian calendar]] dates) ||| ||| +0 Ofira Air Battle ||| Libyan Arab Airlines Flight 114 ||| In the summer of 1973, [[Libyan Arab Airlines Flight 114]] accidentally flew over the Sinai. It was intercepted by the IAF and ordered to land but refused and was subsequently shot down. IAF high command feared this might lead to a reprisal against [[El-Al]] aircraft en route to [[South Africa]] and back and therefore maintained fighter aircraft on quick reaction alert (QRA) at Ofir. These aircraft were also meant to counter the threat posed to the small [[Israeli Navy]] Red Sea flotilla and the [[Hawk missile]] batteries guarding the Red Sea straits from Egyptian MiGs at [[Hurghada]]. Base commander at the time was Ya'acov 'Yak' Nevo. {{Cite news ||| Prelude ||| ||| +0 Oklahoma City bombing ||| Battles of Lexington and Concord ||| The nine-story building, built in 1977, was named for a [[Alfred P. Murrah|federal judge]] and housed fourteen federal agencies including the DEA, ATF, Social Security Administration, and recruiting offices for the Army and Marine Corps. The attack was planned to take place on April 19, 1995, to coincide with the anniversary of the Waco Siege and the 220th anniversary of the [[Battles of Lexington and Concord]]. ||| Planning ||| Target selection ||| +0 Omaha Beach ||| Battle of Kwajalein ||| The primary objective at Omaha was to secure a [[beachhead]] of some eight kilometres (5 miles) depth, between [[Port-en-Bessin]] and the [[Vire River]], linking with the British landings at Gold to the east, and reaching the area of [[Isigny-sur-Mer|Isigny]] to the west to link up with VII Corps landing at Utah. Opposing the landings was the German [[352nd Infantry Division (Wehrmacht)|352nd Infantry Division]], a large portion of whom were teenagers, though they were supplemented by veterans who had fought on the [[Eastern Front (World War II)|Eastern Front]]. The 352nd had never had any battalion or regimental training. Of the 12,020 men of the division, only 6,800 were experienced combat troops, detailed to defend a {{Convert|53|km}} front. The Germans were largely deployed in strongpoints along the coast—the German strategy was based on defeating any seaborne assault at the water line. Nevertheless, Allied calculations indicated that Omaha's defenses were three times as strong as those they had encountered during the [[Battle of Kwajalein]], and its defenders were four times as many. ||| ||| ||| +0 Omaha Beach ||| Eastern Front (World War II) ||| The primary objective at Omaha was to secure a [[beachhead]] of some eight kilometres (5 miles) depth, between [[Port-en-Bessin]] and the [[Vire River]], linking with the British landings at Gold to the east, and reaching the area of [[Isigny-sur-Mer|Isigny]] to the west to link up with VII Corps landing at Utah. Opposing the landings was the German [[352nd Infantry Division (Wehrmacht)|352nd Infantry Division]], a large portion of whom were teenagers, though they were supplemented by veterans who had fought on the [[Eastern Front (World War II)|Eastern Front]]. The 352nd had never had any battalion or regimental training. Of the 12,020 men of the division, only 6,800 were experienced combat troops, detailed to defend a {{Convert|53|km}} front. The Germans were largely deployed in strongpoints along the coast—the German strategy was based on defeating any seaborne assault at the water line. Nevertheless, Allied calculations indicated that Omaha's defenses were three times as strong as those they had encountered during the [[Battle of Kwajalein]], and its defenders were four times as many. ||| ||| ||| +0 Omaha Beach ||| Gold Beach ||| '''Omaha Beach''' was the [[code name]] for one of the five sectors of the [[Allies of World War II|Allied]] invasion of [[German occupation of France during World War II|German-occupied France]] in the [[Normandy landings]] on 6 June 1944, during [[World War II]]. Omaha is located on the coast of Normandy, France, facing the [[English Channel]], and is {{convert|5|mi|km|0|disp=flip}} long, from east of [[Sainte-Honorine-des-Pertes]] to west of [[Vierville-sur-Mer]] on the right bank of the [[Douve River]] [[estuary]]. Landings here were necessary in order to link up the British landings to the east at [[Gold Beach|Gold]] with the American landing to the west at [[Utah Beach|Utah]], thus providing a continuous [[lodgement]] on the Normandy coast of the [[Bay of the Seine]]. Taking Omaha was to be the responsibility of [[United States Army]] troops, with sea transport and naval artillery support provided by the [[U.S. Navy]] and elements of the British [[Royal Navy]]. ||| ||| ||| +0 Omaha Beach ||| Utah Beach ||| '''Omaha Beach''' was the [[code name]] for one of the five sectors of the [[Allies of World War II|Allied]] invasion of [[German occupation of France during World War II|German-occupied France]] in the [[Normandy landings]] on 6 June 1944, during [[World War II]]. Omaha is located on the coast of Normandy, France, facing the [[English Channel]], and is {{convert|5|mi|km|0|disp=flip}} long, from east of [[Sainte-Honorine-des-Pertes]] to west of [[Vierville-sur-Mer]] on the right bank of the [[Douve River]] [[estuary]]. Landings here were necessary in order to link up the British landings to the east at [[Gold Beach|Gold]] with the American landing to the west at [[Utah Beach|Utah]], thus providing a continuous [[lodgement]] on the Normandy coast of the [[Bay of the Seine]]. Taking Omaha was to be the responsibility of [[United States Army]] troops, with sea transport and naval artillery support provided by the [[U.S. Navy]] and elements of the British [[Royal Navy]]. ||| ||| ||| +0 Operation Alberich ||| Nivelle Offensive ||| The first intimation that the British received that a withdrawal had begun, was when British patrols probing German outposts found them unoccupied. They then began a slow follow-up but unreadiness, the destruction of all transport routes and the Germans advantage of falling back on prepared lines, behind machine-gun nests, meant that the Germans completed an orderly withdrawal. The British eventually found themselves facing a far more formidable German defensive position than they had after the Somme battles, as the Germans once again occupied all the higher and more strategically important positions, while they overlooked the lower ground facing, when it came to the next [[Nivelle Offensive]] in April. ||| Aftermath ||| Analysis ||| +0 Operation Albion ||| Battle of Moon Sound ||| After two failed attempts, the Germans managed to land on Hiiumaa on the 19th and captured the island on the following day. The Russian [[Baltic Fleet]] had to withdraw from the Suur Strait after major losses (see [[Battle of Moon Sound]]). The Germans claimed 20,000 prisoners and 100 guns captured during the Operation ''Albion'' from 12 October. ||| ||| ||| +0 Operation Augurs of Prosperity ||| Operation Phantom Phoenix ||| In January 2008, U.S. forces throughout Iraq launched [[Operation Phantom Phoenix]], a corps-level operation with a significant focus on Diyala. Despite a decrease in violence, partly attributable to [[Awakening movements in Iraq|Awakening Councils]], groups formed by Sunni sheiks and supported by American forces, attacks remained at high levels. Many of these attacks were directed at the leaders of these groups. {{cite news ||| Background ||| ||| +0 Operation Badr (1973) ||| Battle of Fort Lahtzanit ||| Fort Lahtzanit, {{convert|19|km|mi|sp=us}} south of Port Fouad, was isolated by Egyptian infantry prior to the attack, preventing Israeli reinforcements from reaching it. At 15:00, the Egyptians breached the minefield and barbed wire surrounding the fort, at which point approximately a company-sized force of Egyptian troops assaulted the defenses. By 15:30, the fort was declared under Egyptian control. The Egyptians proceeded to clear a few bunkers still occupied by Israeli soldiers, some of whom surrendered when they began facing [[flamethrower]]s. By 18:00, the Egyptians had cleared the fort completely. (see [[Battle of Fort Lahtzanit]]) ||| Course of the Operation ||| October 6 – The Crossing ||| Port Said Sector +0 Operation Badr (1973) ||| Battles of Fort Budapest ||| Located on a narrow strip of land southeast of Port Fouad, Fort Budapest was surrounded by water on two sides. The fort came under air and artillery strikes at 14:00. A Sa'iqa company cut off the only route to the fort for reinforcements, while a battalion attacked from Port Fouad, advancing along a narrow strip of land bereft of natural cover. The battalion's attack bogged down at the minefield, which was {{convert|600|m|ft|sp=us}} deep. It soon came under air attacks, as the fort was outside of the SAM 'umbrella', and faced stiff resistance from the fort's garrison. The battalion eventually broke off its attack and retreated, while the Sa'iqa unit east of the fort prevented reinforcements from reaching the fort for four days before it too withdrew. Another attack on October 15 came close to succeeding but ultimately failed, and hence Fort Budapest became the only position of the Bar Lev Line to be remain in Israeli hands. (see [[Battles of Fort Budapest]]) ||| Course of the Operation ||| October 6 – The Crossing ||| Port Said Sector +0 Operation Badr (1973) ||| War of Attrition ||| The 1967 war severely depleted Egypt's military strength, as most of their air force and a large quantity of equipment was destroyed. Soviet assistance helped the Egyptian military to start the rebuilding of their armed forces shortly after the war, and by September 1968 Egyptian ground forces sufficiently recovered to challenge the Israeli presence east of the Suez canal. The [[War of Attrition]] began with Egyptian artillery barrages and commando raids into the Sinai, which were countered by deep-striking Israeli airstrikes and [[Air assault|heli-borne]] raids into Egypt. Egypt's inability to challenge Israeli air superiority led to the deployment of Soviet-operated air-defense assets to protect parts of Egypt's interior, deterring the Israelis from launching their deep penetration raids and allowing the Egyptians to rebuild their air defenses. The defensive upgrades incurred increasing Israeli air losses, leading to an August 1970 ceasefire that lasted until 1973. Nasser died in September 1970 and was succeeded by [[Anwar Sadat]]. ||| Prelude: 1967–1970 ||| ||| +0 Operation Badr (1985) ||| Operation Kheibar ||| After its failure to capture [[Basra]] in 1982, Iran launched [[Operation Kheibar]] in 1984 to capture the [[Highway 8 (Iraq)|Baghdad-Basra highway]]. This resulted in the [[Battle of the Marshes]], and the operation failed, but Iran planned for Operation Badr in a further attempt to capture it. Without coincidence, the operation was named after the Prophet [[Mohammed]]'s first military victory in Mecca centuries before. ||| Prelude ||| ||| +0 Operation Bagration ||| Battle of Borodino ||| The operation was named after 18th–19th century [[Georgians|Georgian]] Prince [[Pyotr Bagration]], general of the [[Imperial Russian Army]] who was mortally wounded at the [[Battle of Borodino]]. ||| ||| ||| +0 Operation Bagration ||| Battle of Kiev (1943) ||| [[Army Group Centre]] had previously proved tough to counter as the Soviet defeat in [[Operation Mars|Operation ''Mars'']] had shown. But by June 1944, despite shortening its front line, it had been exposed following the withdrawals of [[Army Group South]] in the battles that followed the [[Battle of Kursk]], the [[Battle of Kiev (1943)|Second Battle of Kiev]] and the [[Crimean Offensive]] in the late summer, autumn and winter of 1943–44. [[Battle of Smolensk (1943)|Operation ''Suvorov'']] had seen Army Group Centre itself forced to retreat westwards from [[Smolensk]] during the autumn of 1943. ||| Background ||| ||| +0 Operation Bagration ||| Battle of Stalingrad ||| The German army never recovered from the [[materiel]] and manpower losses sustained during this time, having lost about a quarter of its Eastern Front manpower, similar to the percentage of [[Battle of Stalingrad|loss at Stalingrad]] (about 17 full divisions). Of the German generals lost, nine were killed, including two corps commanders; 22 captured, including four corps commanders; [[Hans Hahne (General)|Major-General Hahne]], commander of 197th Infantry Division disappeared on 24 June, while Lieutenant-Generals Zutavern and Philipp of the [[18th Panzergrenadier Division (Wehrmacht)|18th Panzergrenadier]] and [[134th Infantry Division (Wehrmacht)|134th Infantry]] Divisions committed suicide. ||| Aftermath ||| ||| +0 Operation Bagration ||| Crimean Offensive ||| [[Army Group Centre]] had previously proved tough to counter as the Soviet defeat in [[Operation Mars|Operation ''Mars'']] had shown. But by June 1944, despite shortening its front line, it had been exposed following the withdrawals of [[Army Group South]] in the battles that followed the [[Battle of Kursk]], the [[Battle of Kiev (1943)|Second Battle of Kiev]] and the [[Crimean Offensive]] in the late summer, autumn and winter of 1943–44. [[Battle of Smolensk (1943)|Operation ''Suvorov'']] had seen Army Group Centre itself forced to retreat westwards from [[Smolensk]] during the autumn of 1943. ||| Background ||| ||| +0 Operation Bagration ||| Operation Overlord ||| The end of Operation Bagration coincided with the destruction of many of the strongest units of the German Army on the western front in the [[Falaise pocket]] in [[Normandy]], during [[Operation Overlord]]. Some scholars think that the number of troops involved and especially personnel and material losses inflicted on the ''Wehrmacht'' was much bigger in Overlord than in Bagration, although some say the reverse is true. After these stunning victories, on both eastern and western fronts, supply problems rather than German resistance slowed the subsequent rapid Allied advance, and it eventually ground to a temporary halt. However, the Germans were able to transfer armoured units from the Italian front, where they could afford to give ground, to resist the Soviet advance near [[Warsaw]]. ||| Aftermath ||| ||| +0 Operation Barrel Roll ||| Korean War ||| The aircraft utilized to support the covert war were an odd assortment of vintage propeller-driven [[Ground-attack aircraft|attack aircraft]], high performance jet [[fighter-bomber]]s, and [[World War II]]-era [[Cargo aircraft|cargo]] [[airplane]]s. This hodgepodge of an air force with its peculiar mix of aircraft and [[aircrew]]s flew for eight years in the crowded skies over Laos. The majority of the close air support missions flown in the northeast were conducted by [[Douglas A-1 Skyraider]]s and [[North American T-28 Trojan|AT-28 Trojan]]s. These propeller-driven [[Korean War]]-era aircraft came into their own in Southeast Asia, where their heavy ordnance loads, long loiter times, and high maneuverability at low altitudes made them more effective than the 'fast movers' of the more modern jet Air Force. ||| On the offensive (1964–1970) ||| ''Barrel Roll'' begins ||| +0 Operation Barrel Roll ||| Operation Commando Hunt ||| For 100 months, the U.S. Air Force, the CIA, and the Thai government had assisted the Royal Lao government in staving off defeat at the hands of its enemies. If one measures the success of ''Barrel Roll'' by the priorities assigned to it by the U.S. government and military, it was a success. It had allowed the continuous prosecution of the ''Steel Tiger'' (and, post-1968, [[Operation Commando Hunt]]) interdiction campaigns against the Ho Chi Minh trail by keeping the neutralists in power. At the time of the cease-fire, communist forces controlled two-thirds of the land area and one-third of the population of Laos, approximately the same amounts that they had under their control in 1961. ||| Conclusion ||| ||| +0 Operation Barrel Roll ||| World War II ||| The aircraft utilized to support the covert war were an odd assortment of vintage propeller-driven [[Ground-attack aircraft|attack aircraft]], high performance jet [[fighter-bomber]]s, and [[World War II]]-era [[Cargo aircraft|cargo]] [[airplane]]s. This hodgepodge of an air force with its peculiar mix of aircraft and [[aircrew]]s flew for eight years in the crowded skies over Laos. The majority of the close air support missions flown in the northeast were conducted by [[Douglas A-1 Skyraider]]s and [[North American T-28 Trojan|AT-28 Trojan]]s. These propeller-driven [[Korean War]]-era aircraft came into their own in Southeast Asia, where their heavy ordnance loads, long loiter times, and high maneuverability at low altitudes made them more effective than the 'fast movers' of the more modern jet Air Force. ||| On the offensive (1964–1970) ||| ''Barrel Roll'' begins ||| +0 Operation Basalt ||| Operation Hardtack (commando raid) ||| More than a year later, in December 1943, there was a follow-up raid on Sark by a team of British and French commandos known as [[Operation Hardtack (commando raid)|Operation Hardtack 7]] . It was a complete failure as two of the four men were killed by German mines as they attempted to cross the Hog's Back, following the same route as the commandos had done in 1942—a route which was now mined. ||| ||| ||| +0 Operation Bayonet Lightning ||| Operation Bulldog Mammoth ||| Operation Bayonet Lightning followed [[Operation Rifles Blitz]] and was followed by [[Operation Bulldog Mammoth]]. ||| Overview ||| ||| +0 Operation Biting ||| Battle of France ||| After the end of the [[Battle of France]] and the evacuation of British troops from [[Dunkirk]] during [[Operation Dynamo]], much of Britain's war production and effort was channeled into [[RAF Bomber Command]] and the [[Strategic bombing during World War II|strategic bombing offensive against Germany]]. However, bomber losses on each raid began to increase during 1941, which British intelligence concluded was due to German use of advanced radar equipment. ||| Background ||| ||| +0 Operation Biting ||| Strategic bombing during World War II ||| After the end of the [[Battle of France]] and the evacuation of British troops from [[Dunkirk]] during [[Operation Dynamo]], much of Britain's war production and effort was channeled into [[RAF Bomber Command]] and the [[Strategic bombing during World War II|strategic bombing offensive against Germany]]. However, bomber losses on each raid began to increase during 1941, which British intelligence concluded was due to German use of advanced radar equipment. ||| Background ||| ||| +0 Operation Blackcock ||| Battle of the Bulge ||| By the end of 1944, the frontline in [[Limburg (Netherlands)|Dutch Limburg]] had stabilized along several natural barriers. By far the most difficult barrier to cross was the [[River Maas]] running along the Dutch - Belgian border. The next barrier was the River [[Rur]], running from the German Eifel area through Heinsberg towards Roermond, where it joins the Maas. From Heinsberg, southwards the famous [[Siegfried Line]] or 'West Wall' was formed along the banks of the Rur. Dutch South-Limburg was already liberated in September by the [[Ninth United States Army]], but the area above the Sittard - [[Geilenkirchen]] line was still in German hands. Here the front had settled along the 'Saefeller Beek', a small creek forming another seemingly immense obstacle. These obstacles formed a triangular area, indeed; it was referred to as the Roermond Triangle, which protruded like a small bulge into the frontline. As a result of the German offensive - Operation ''Herbstnebel'' - in the Ardennes (also known as the [[Battle of the Bulge]]), the Allies had to withdraw resources to stop the German advance in the [[US First Army|American First Army]]'s sector. Therefore, the British Second Army's XII Corps, had taken over the task of guarding the frontline north of Sittard for the US Army. The Maas front was guarded by the [[VIII Corps (United Kingdom)|British VIII Corps]]. ||| Dispositions along the Roer Front ||| ||| +0 Operation Bluecoat ||| Operation Cobra ||| '''Operation Bluecoat''' was an attack by the [[British Army]] during the [[Operation Overlord|Battle of Normandy]], lasting from 30 July until 7 August 1944, during the [[World War II|Second World War]]. The geographical objectives of the attack, launched by [[VIII Corps (United Kingdom)|VIII Corps]] and [[XXX Corps (United Kingdom)|XXX Corps]] of the [[Second Army (United Kingdom)|British Second Army]], were to secure the road junction of [[Vire]] and the high ground of [[Mont Pinçon]]. Operationally, the attack was made to support the success of [[Operation Cobra]] by the [[First United States Army|first US Army]] as it broke out on the western flank of the Normandy beachhead and tactically to exploit the withdrawal of the [[2nd Panzer Division (Wehrmacht)|2nd Panzer Division]] from a quiet area for [[Operation Lüttich]] a counter-offensive against the Americans. ||| ||| ||| +0 Operation Bulldog Mammoth ||| 2003 invasion of Iraq ||| '''Operation Bulldog Mammoth''' was a [[brigade]]-sized cordon and search of an [[Abu Ghurayb]] apartment complex, northwest of [[Baghdad]] on 4 December 2003 during the American-led [[2003 invasion of Iraq]]. The operation lasted about five-and-a-half hours and involved approximately 1,450 soldiers. ||| ||| ||| +0 Operation Bulldog Mammoth ||| Operation Bayonet Lightning ||| Preceded by [[Operation Bayonet Lightning]], followed by [[Operation Clear Area]]. ||| ||| ||| +0 Operation Camargue ||| Vietnam War ||| With the French forces withdrawn from the operation by the late summer of 1953, Viet Minh Regiment 95 re-infiltrated Route One and resumed ambushes of French convoys, retrieving weapons caches missed by the French forces. Regiment 95 occupied the area for the remainder of the First Indochina War and were still operating there as late as 1962 against the [[Army of the Republic of Vietnam|South Vietnamese Army]] during the Second Indochina, or [[Vietnam War]]. ||| ||| ||| +0 Operation Charnwood ||| Normandy landings ||| The Norman city of [[Caen]] was one of the [[Normandy landings|D-Day]] objectives for the [[3rd Division (United Kingdom)|British 3rd Infantry Division]] which landed on [[Sword Beach]] on 6 June 1944. The capture of Caen, while 'ambitious', was the most important D-Day objective assigned to [[I Corps (United Kingdom)|British I Corps]] under [[Lieutenant-general (United Kingdom)|Lieutenant-General]] [[Sir]] [[John Crocker]], ||| Background ||| ||| +0 Operation Charnwood ||| Operation Bluecoat ||| Analysis by [[Operations research#Second World War|Operational Research Section Number 2]] (ORS2) concluded that the bombing of the first aiming point north-west of Caen was accurate, finding that the centre of the 90 percent zone (the area where 90 percent of the bombs fell) was {{convert|200|–|300|yd|m}} east of the aiming point, with some spillage to the south and west. Examination of the area after its capture, indicated some destruction of German equipment, including the wreckage of ten of the forty trucks believed to be in the area at the time of the raid. The 48 hours that elapsed between the bombing and the Allied occupation of the area, allowed the Germans time to recover from any shock and disorientation and to salvage some damaged equipment. Examination of the second aiming point, 'Northern Caen', failed to reveal a 90 percent zone but it was noted that the obstructive effect of bombing a suburb was significant and had caused substantial delays to vehicles of both sides, by cratering and blocking roads. ORS2 concluded that the success of Charnwood owed little to the bombing and made recommendations including changing to instantly fused bombs, dropping larger numbers of smaller anti-personnel bombs and rapidly following-up a bombardment with ground forces to take advantage of its main effect, which was the temporary suppression of German will to resist. In [[Operation Goodwood]], [[Operation Bluecoat]], [[Operation Cobra]], [[Operation Totalize]] and [[Operation Tractable]] the 21st Army Group exploited better the effect of preparatory attacks by strategic bombers by following-up the attacks immediately. ||| Aftermath ||| Bombing ||| +0 Operation Charnwood ||| Operation Goodwood ||| With the capture of northern Caen and the many casualties inflicted on the German defenders, Operation Charnwood was a mutually costly tactical success for the Allies. Operationally, the Germans retired from north of the Orne River but did not stop sending formations to the American front. The Germans established another defensive line along two ridges to the south of the city. The Allies maintained the initiative and began [[Operation Goodwood]] and [[Operation Atlantic]] a week later, in which the rest of Caen was secured. ||| ||| ||| +0 Operation Charnwood ||| Operation Perch ||| The British 3rd Infantry Division came ashore as planned but was hampered by congestion in its beachhead, diversions en route and the late arrival of much of its armoured support. The division was unable to assault Caen in force and its lead elements were brought to a halt short of the outskirts. On 7 June the British began [[Operation Perch]], a [[pincer attack]] by I Corps and [[XXX Corps (United Kingdom)|XXX Corps]], to encircle Caen from the east and west flanks. ||| Background ||| ||| +0 Operation Clear Area ||| Operation Bulldog Mammoth ||| Followed [[Operation Bulldog Mammoth]], preceded [[Operation Abilene (2003)|Operation Abilene]]. ||| ||| ||| +0 Operation Clipper ||| Operation Queen ||| During the [[World War II|Second World War]], '''Operation Clipper''' was an Allied offensive by [[XXX Corps (United Kingdom)|British XXX Corps]] (which included the [[84th Division (United States)|U.S. 84th Infantry Division]]) to reduce the [[Geilenkirchen]] [[Salients, re-entrants and pockets|salient]] in mid-November 1944. ''Clipper'' was a part of a wider Allied operation, named [[Operation Queen]] to gain control of the [[Roer]] valley and the [[Battle of Hürtgen Forest|Hürtgen Forest]]. ||| ||| ||| +0 Operation Cobra ||| Invasion of Normandy ||| '''Operation Cobra''' was the codename for an offensive launched by the [[First United States Army]] seven weeks after the [[D-Day]] landings, during the [[Invasion of Normandy|Normandy Campaign]] of [[World War II]]. American Lieutenant General [[Omar Bradley]]'s intention was to take advantage of the German preoccupation with British and Canadian activity around the town of [[Caen]], in [[Operation Goodwood]], and immediately punch through the German defenses that were penning in his troops while the Germans were distracted and unbalanced. Once a corridor had been created, the First Army would then be able to advance into [[Brittany]], rolling up the German flanks and releasing itself of the constraints imposed by operating in the Norman [[bocage]] countryside. After a slow start the offensive gathered momentum, and German resistance collapsed as scattered remnants of broken units fought to escape to the [[Seine]]. Lacking the resources to cope with the situation, the German response was ineffectual, and the entire Normandy front soon collapsed. Operation Cobra, together with concurrent offensives by the [[Second Army (United Kingdom)|Second British]] and [[First Canadian Army|First Canadian]] Armies, was decisive in securing an Allied victory in the Normandy Campaign. ||| ||| ||| +0 Operation Cobra ||| Operation Perch ||| The initial attempt by I Corps to reach the city on D-Day was blocked by elements of the [[21st Panzer Division (Wehrmacht)|21st Panzer Division]] and with the Germans committing most of the reinforcements sent to meet the invasion to the defense of Caen, the Anglo-Canadian front rapidly congealed short of Second Army's objectives. |group=nb}} [[Operation Perch]] in the week following D-Day and [[Operation Epsom]] (26–30 June) brought some territorial gains and depleted its defenders but Caen remained in German hands until [[Operation Charnwood]] (7–9 July), when the Second Army managed to take the northern part of the city up to the [[River Orne]] in a frontal assault. ||| Background ||| ||| +0 Operation Colossus ||| Battle of Fort Eben-Emael ||| The German military was one of the pioneers of the use of airborne formations, conducting several successful airborne operations during the [[Battle of France]] in 1940, including the [[Battle of Fort Eben-Emael]]. Despite the Prime Minister's desire to have 5,000 airborne troops within a short period, a number of problems were rapidly encountered by the War Office. Very few [[military glider|gliders]] existed in Britain in 1940, and these were too light for military purposes, and there was also a shortage of suitable transport aircraft to tow gliders and carry paratroopers. On 10 August, Churchill was informed that although 3,500 volunteers had been selected to train as airborne troops, only 500 could currently begin training due to limitations in equipment and aircraft. ||| Background ||| ||| +0 Operation Colossus ||| Operation Biting ||| Lessons taken from the operation provided the British military with valuable operational and technical experience that helped shape future airborne operations, such as [[Operation Biting]]. It demonstrated the range and flexibility of airborne troops and proved that they could pose a threat to the Axis powers, and also provided a morale boost for the British military and the fledgling airborne establishment. When the airborne establishment was expanded, No. 11 Special Air Service Battalion was renamed 1st Parachute Battalion, and eventually formed the nucleus of [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]] when it was created in September 1941. ||| Aftermath ||| ||| +0 Operation Commando Hunt ||| Operation Barrel Roll ||| Systematic U.S. aerial operations against the Ho Chi Minh Trail had begun on 14 December 1964 with [[Operation Barrel Roll]]. ||| Interdiction (1964–1968) ||| ||| +0 Operation Commando Hunt ||| Operation Linebacker II ||| ''Commando Hunt VII'' came to a close with the launching of the PAVN offensive mentioned above. This conventional attack, backed by armor, heavy artillery, and anti-aircraft units (including SAMs) rolled over the two northernmost provinces of South Vietnam while two smaller offensives were launched in central and southern parts of the country. All U.S. and South Vietnamese air assets were diverted to first slowing, and then halting the onslaught. They were then utilized in the first sustained bombing of North Vietnam since late 1968 (see [[Operation Linebacker]]). Interdiction missions were then diverted to carry out an even heavier aerial offensive against the north (see [[Operation Linebacker II]]). The end was nigh for ''Commando Hunt''. With the signing of the [[Paris Peace Accord]] in March 1973, the Vietnam War finally came to an end for the U.S. ||| 1972 ||| ||| +0 Operation Cooney ||| Operation Samwest ||| Some raiders then joined the base established by the [[Operation Dingson|Dingson]] team in [[Saint-Marcel, Morbihan]] or the base established by the [[Operation Samwest|Samwest]] team in [[Duault]], [[Côtes d'Armor]]. ||| ||| ||| +0 Operation Cottage ||| Battle of Attu ||| Due to the heavy casualties suffered at [[Battle of Attu|Attu Island]], planners were expecting another costly operation. The Japanese tactical planners had, however, realized the isolated island was no longer defensible and planned for an evacuation. ||| Invasion plan and execution ||| ||| +0 Operation Crossbow ||| Operation Overlord ||| At the request of the [[Churchill War Ministry|British War Cabinet]], on April 19, 1944, {{Rp|46}} 'for the time being', which he confirmed after the V-1 assault began on the night of June 12/13, 1944: 'with respect to ''Crossbow'' targets, these targets are to take first priority over everything except the urgent requirements of the [[Operation Overlord|Overlord]] battle; this priority to obtain until we can be certain that we have definitely gotten the upper hand of this particular business' (Eisenhower to [[Arthur Tedder]], June 16). ||| Strategic bombing ||| Bombing priority ||| +0 Operation Crusader ||| East African Campaign (World War II) ||| Following the costly failure of [[Operation Battleaxe]], General [[Archibald Percival Wavell, 1st Earl Wavell|Archibald Wavell]] was relieved as [[Commander-in-Chief]] [[Middle East Command]] and replaced by General [[Claude Auchinleck]]. The [[Western Desert Force]] was reorganized and renamed the [[British Eighth Army|Eighth Army]] under the command of [[Lieutenant-General]] [[Alan Gordon Cunningham|Alan Cunningham]]. The Eighth Army comprised two Corps: [[XXX Corps (United Kingdom)|XXX Corps]] under Lieutenant-General [[Charles Norrie, 1st Baron Norrie|Willoughby Norrie]] and [[XIII Corps (United Kingdom)|XIII Corps]] under Lieutenant-General [[Alfred Reade Godwin-Austen|Reade Godwin-Austen]]. XXX Corps was made up of [[7th Armoured Division (United Kingdom)|7th Armoured Division]] (commanded by Major-General [[William Gott]]), the understrength [[South African 1st Infantry Division]] with two brigades of the [[Sudan Defence Force]] (newly arrived from the [[East African Campaign (World War II)|East African Campaign]] and commanded by Major-General [[George Brink]]) and the independent [[22nd Guards Brigade]]. ||| Background ||| Eighth Army ||| +0 Operation Crusader ||| Siege of Tobruk ||| '''Operation Crusader''' was a military operation by the [[British Eighth Army]] between 18 November–30 December 1941 during the [[Second World War]]. The operation relieved the 1941 [[Siege of Tobruk]]. The Eighth Army's initial plan to destroy the Axis armoured force before advancing its infantry came apart when, after a number of inconclusive engagements, the [[British 7th Armoured Division]] were heavily defeated by the ''[[Afrika Korps]]'' at Sidi Rezegh. Lieutenant General [[Erwin Rommel]]'s subsequent advance of his armoured divisions to the Axis fortress positions on the Egyptian border, failed to find the main body of the Allied infantry, which had bypassed the fortresses and headed for Tobruk, so Rommel had to withdraw his armoured units to support the fighting at Tobruk. Despite achieving some tactical successes at Tobruk, the need to preserve his remaining forces prompted Rommel to withdraw his army to the defensive line at [[Gazala]], west of Tobruk and then all the way back to [[El Agheila]]. It was the first victory over the German ground forces by British-led forces in the Second World War. ||| ||| ||| +0 Operation Deadstick ||| Operation Market Garden ||| The glider pilots were the first group to leave 'D' Company, their expertise being required for other planned operations. In particular Operation Comet, which included another ''coup-de-main'' operation where eighteen gliders would be used to capture three bridges in the Netherlands. The mission would be carried out by the [[1st Airborne Division]] with a brigade allocated to defend each bridge. Comet was scheduled for the 8 September 1944, but was delayed and then cancelled. The plans were adapted and became [[Operation Market Garden]], involving three airborne divisions, however the ''coup-de-main'' assault plans were not carried out. ||| Aftermath ||| ||| +0 Operation Deadstick ||| Operation Tonga ||| The mission was vital to the success of the [[Operation Tonga]], the British airborne landings. Failure to capture the bridges intact or to prevent their demolition by the Germans, would leave the [[6th Airborne Division]] cut off from the rest of the Allied armies with their backs to the two waterways. If the Germans retained control over the bridges, they could be used by their armoured divisions to attack the landing beaches of Normandy. ||| ||| ||| +0 Operation Deliberate Force ||| Bosnian War ||| '''Operation ''Deliberate Force''''' was a sustained [[military campaign|air campaign]] conducted by the [[North Atlantic Treaty Organisation]] (NATO), in concert with the [[United Nations Protection Force]] (UNPROFOR) ground operations, to undermine the military capability of the [[Army of the Republika Srpska|Bosnian Serb Army]] (VRS), which had threatened and attacked UN-designated '[[United Nations Safe Areas|safe areas]]' in [[Bosnia and Herzegovina]] during the [[Bosnian War]] with the [[Srebrenica massacre|Srebrenica]] and [[Markale massacres]], precipitating the intervention. The operation was carried out between 30 August and 20 September 1995, involving 400 aircraft and 5,000 personnel from 15 nations. Commanded by [[Admiral (United States)|Admiral]] [[Leighton W. Smith]], the campaign struck 338 [[Bosnian Serb]] targets, many of which were destroyed. Overall, 1,026 bombs were dropped during the operation, 708 of which were precision-guided. ||| ||| ||| +0 Operation Deny Flight ||| Bosnian War ||| The operation played an important role in shaping both the [[Bosnian War]] and NATO. The operation included the first combat engagement in NATO's history, a 28 February 1994 [[Banja Luka incident|air battle over Banja Luka]], and in April 1994, NATO aircraft first bombed ground targets in an operation near [[Goražde]]. These engagements helped show that NATO had adapted to the post-[[Cold War]] era and could operate in environments other than a major force on force engagement on the plains of Central Europe. Cooperation between the UN and NATO during the operation also helped pave the way for future joint operations. Although it helped establish UN-NATO relations, Deny Flight led to conflict between the two organizations. Most notably, significant tension arose between the two after UN peacekeepers were taken as hostages in response to NATO bombing. ||| ||| ||| +0 Operation Desert Scorpion (Iraq 2003) ||| Operation Peninsula Strike ||| The operation followed [[Operation Peninsula Strike]], which had ended three days earlier, and was part of a U.S response to a major spike in attacks by anti-coalition forces that began in late May 2003. Operation Peninsula Strike was a 4th Infantry Division operation and was directly influenced by earlier warning orders of Operation Desert Scorpion.This operation was supported from Camp Spearhead Kuwait, by the 149th Transportation Company (POCC), [[10th Transportation Battalion (United States)|10th Transportation BN (TML)]], 7th Transportation GRP (COMP). ||| Background ||| ||| +0 Operation Diadem ||| Gothic Line ||| The Germans fought a series of delaying actions, retired to the [[Trasimene Line]], and then to the [[Gothic Line]] (identified on German maps as the 'Green' Line), north of the [[Arno River]]. ||| ||| ||| +0 Operation Donnerkeil ||| Battle of the Atlantic ||| In 1941 ''Kriegsmarine'' surface vessels had carried out [[commerce raiding]] sorties in support of the German [[U-Boat]]s in the [[Battle of the Atlantic (1939-1945)|Battle of the Atlantic]]. In January 1941 [[Operation Berlin (Atlantic)|Operation Berlin]] was launched followed by [[Operation Rheinübung]] in May 1941. The dominance of the [[Royal Navy]]'s surface fleet prevented the German units returning to ports in the [[Baltic sea]] or Germany. The surviving ships, the battleships ''[[German battleship Scharnhorst|Scharnhorst]]'' and ''[[German battleship Gneisenau|Gneisenau]]'' and the cruiser ''[[German cruiser Prinz Eugen|Prinz Eugen]]'', docked in the port of [[Brest, France]]. Throughout 1941 [[RAF Bomber Command]] attacked the ships in dock. The close proximity of the ports to [[Royal Air Force]] (RAF) airfields allowed a large number of sorties to be flown against the targets in quick succession. The ''[[Oberkommando der Marine]]'' (Naval High Command), and [[Adolf Hitler]] himself desired to move the ships out of range from potential air raids. ||| ||| ||| +0 Operation Donnerkeil ||| Defence of the Reich ||| ''Donnerkeil'' also proved to be a watershed in electronic warfare, for by using jamming techniques, Wolfgang Martini removed British inhibitions concerning the use of [[Electronic countermeasures|ECM]] against the German defensive system ([[Kammhuber line]]) and paved the way for the debut of [[Chaff (countermeasure)|Window Chaff]] in June 1943, which had a devastating effect on the ability of German night-fighter radar defences to locate and intercept RAF bombers during the [[Defence of the Reich]]. The first step in this campaign was a [[British Army]] operation, [[Operation Biting]], to steal a [[Würzburg radar]] set on 27/28 February 1942. The British removed components and developed counter-measures. The Germans responded by fortifying all radar sets, which only made them more visible for RAF aerial reconnaissance. The British also began the occasional jamming of [[Freya radar]] sets. The Germans did not realise this was happening until September 1942. German forces also used offensive jamming of British radar, to enable fighter-bomber operations over England. The British described them as a 'real menace'. Radar-jamming, counter-measures and other innovations escalated from that point onward. ||| Aftermath ||| British failures ||| +0 Operation Donnerkeil ||| Operation Biting ||| ''Donnerkeil'' also proved to be a watershed in electronic warfare, for by using jamming techniques, Wolfgang Martini removed British inhibitions concerning the use of [[Electronic countermeasures|ECM]] against the German defensive system ([[Kammhuber line]]) and paved the way for the debut of [[Chaff (countermeasure)|Window Chaff]] in June 1943, which had a devastating effect on the ability of German night-fighter radar defences to locate and intercept RAF bombers during the [[Defence of the Reich]]. The first step in this campaign was a [[British Army]] operation, [[Operation Biting]], to steal a [[Würzburg radar]] set on 27/28 February 1942. The British removed components and developed counter-measures. The Germans responded by fortifying all radar sets, which only made them more visible for RAF aerial reconnaissance. The British also began the occasional jamming of [[Freya radar]] sets. The Germans did not realise this was happening until September 1942. German forces also used offensive jamming of British radar, to enable fighter-bomber operations over England. The British described them as a 'real menace'. Radar-jamming, counter-measures and other innovations escalated from that point onward. ||| Aftermath ||| British failures ||| +0 Operation Doomsday ||| Battle of Arnhem ||| By early May, 1st Airborne Division had been brought up to strength, albeit mainly with inexperienced replacements. [[4th Parachute Brigade (United Kingdom)|4th Parachute Brigade]] had been disbanded and its battalions merged with those of [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]] in the aftermath of the [[Battle of Arnhem]]. ||| Prelude ||| Allied preparations ||| +0 Operation Doomsday ||| Operation Market Garden ||| Either of the two 'Rankin' scenarios would be difficult for Thorne to accomplish however, as the troops allocated to Force 134 were meagre; from late 1943 onwards the majority of military resources were dedicated to the campaign in north-west Europe. In September 1944 Thorne was even deprived of 52nd Lowland Division, which was attached to the [[1st Allied Airborne Army]] by the [[War Office]] and earmarked for [[Operation Market Garden]]. As a result, by the end of the war Milorg had been preparing for the arrival of an Allied force for some time; its 40,000 members were well-armed and trained, and led by more than 100 [[Special Operations Executive]] agents parachuted into Norway, and it was prepared to prevent any sabotage of key communication centres and other important facilities by German troops if they resisted the Allied forces. ||| Background ||| ||| +0 Operation Doppelkopf ||| Eastern Front (World War II) ||| '''Operation Doppelkopf''' ({{lang-de|Unternehmen Doppelkopf}}) and the following '''Operation Cäsar''' were [[Nazi Germany|German]] counter-offensives on the [[Eastern Front (World War II)|Eastern Front]] late in 1944 in the aftermath of the major Soviet advance in [[Operation Bagration]] with the aim of restoring a coherent front between Army Group North and Army Group Centre. ||| ||| ||| +0 Operation Doppelkopf ||| Operation Bagration ||| '''Operation Doppelkopf''' ({{lang-de|Unternehmen Doppelkopf}}) and the following '''Operation Cäsar''' were [[Nazi Germany|German]] counter-offensives on the [[Eastern Front (World War II)|Eastern Front]] late in 1944 in the aftermath of the major Soviet advance in [[Operation Bagration]] with the aim of restoring a coherent front between Army Group North and Army Group Centre. ||| ||| ||| +0 Operation Downfall ||| Atomic bombings of Hiroshima and Nagasaki ||| '''Operation Downfall''' was the codename for the [[Allies of World War II|Allied]] plan for the invasion of [[Empire of Japan|Japan]] near the end of [[World War II]]. The planned operation was abandoned when [[Surrender of Japan|Japan surrendered]] following the [[Atomic bombings of Hiroshima and Nagasaki|atomic bombings]] of [[Hiroshima]] and [[Nagasaki]] and the [[Soviet invasion of Manchuria|Soviet declaration of war]]. ||| ||| ||| +0 Operation Downfall ||| Battle of Luzon ||| *In a conference with President [[Harry Truman|Truman]] on June 18, Marshall, taking the [[Battle of Luzon]] as the best model for Olympic, thought the Americans would suffer 31,000 casualties in the first 30 days (and ultimately 20% of Japanese casualties, which implied a total of 70,000 casualties).{{sfn|Frank|pp=140–141}} Admiral Leahy, more impressed by the Battle of Okinawa, thought the American forces would suffer a 35% casualty rate (implying an ultimate toll of 268,000).{{sfn|Frank|p=142}} Admiral King thought that casualties in the first 30 days would fall between Luzon and Okinawa, i.e., between 31,000 and 41,000.{{sfn|Frank|p=142}} Of these estimates, only Nimitz's included losses of the forces at sea, though kamikazes had inflicted 1.78 fatalities per kamikaze pilot in the Battle of Okinawa,{{sfn|Frank|p=182}} and troop transports off Kyūshū would have been much more exposed. ||| Estimated casualties ||| ||| +0 Operation Downfall ||| Battle of Shumshu ||| For Operation Downfall, the US military envisaged requiring more than 30 divisions for a successful invasion of the Japanese home islands. In comparison, the Soviet Union had about 11 divisions available, comparable to the 14 divisions the US estimated it would require to invade southern Kyushu. The Soviet [[invasion of the Kuril Islands]] (18 August - 1 September 1945) took place after Japan's capitulation on 15 August; despite this, the Japanese forces in these islands resisted quite fiercely (although some of them proved unwilling to fight due to Japan's surrender on 15 August). In the [[Battle of Shumshu]] (18–23 August 1945), the Soviets had 8,821 troops unsupported by tanks and without larger warships. The well-established Japanese garrison had 8,500 troops and fielded around 77 tanks. The battle lasted five days, during which the Soviets lost over 516 troops and five of the 16 [[LCI(L)|landing ships]] (most of these ships ex-U.S. Navy) to Japanese [[coastal artillery]], while the Japanese lost over 256 troops. Soviet casualties during the Battle of Shumshu totalled up to 1,567, while the Japanese suffered 1,018 casualties, making Shumshu the only battle in the [[Soviet–Japanese War (1945)|1945 Soviet-Japanese War]] where Russian losses exceeded those of the Japanese, in stark contrast to overall Soviet-Japanese casualty rates in land-based fighting in Manchuria.<!-- Is the detailed casualty information really relevant? Also, Soviet losses typically exceeded German casualties in most battles (including Soviet victories) --> ||| Allied re-evaluation of Olympic ||| Soviet intentions ||| +0 Operation Downfall ||| Operation Barbarossa ||| In the early years of World War II, the Soviets had planned on building a huge navy in order to catch up with the [[Western World]]. However, the [[Operation Barbarossa|German invasion of the Soviet Union]] in June 1941 forced the suspension of this plan: the Soviets had to divert most of their resources to fighting the Germans - primarily on land - throughout most of the war, leaving their navy relatively poorly equipped. As a result, in [[Project Hula]] (1945), the United States transferred about 100 naval vessels (out of 180 planned) to the Soviet Union in preparation for the planned Soviet entry into the war against Japan. The transferred vessels included amphibious assault ships. ||| Allied re-evaluation of Olympic ||| Soviet intentions ||| +0 Operation Dragoon ||| 20 July plot ||| Given the size of the Allied forces in northern France, the Germans deemed a realistic defense in the south impossible. [[Blaskowitz|Blaskowitz's]] Army Group G headquarters discussed a general withdrawal from southern France in July with the [[OKW|German High Command]] but the [[20 July plot]] led to an atmosphere in which any withdrawal was out of the question. Blaskowitz was quite aware that with his scattered forces, any serious Allied landing attempt would be impossible to ward off. He planned the withdrawal in secret, to include demolition of the ports and conduct an ordered withdrawal, covered by the 11th Panzer Division. He intended to establish a new defense line centered on [[Dijon]] in central France. German intelligence was aware of the impending Allied landing, and on 13 August Blaskowitz ordered the 11th Panzer Division to move east of the [[Rhone]] River, where the landing was expected. ||| Background ||| Opposing forces ||| +0 Operation Dragoon ||| Battle of Authion ||| The Italian border was reached by the 1st Airborne Task Force on 7 September 1944, at [[Menton]], where they stopped. Further north however, the German ''34. Infanterie Division'', which relieved ''148. Reserve-Division'' in early September, posed serious resistance at both Col de Braus and Turini and Allied troops were unable to reach the Italian border, or completely liberate the ''[[Alpes-Maritimes]]'' ''département''. The 1st Airborne Task Force was rotated out of the front in November 1944. Liberation of Alpes-Maritimes was completed only in the [[VE Day|last days of the war in Europe]], by the [[1st Free French Division]] in the [[Battle of Authion]] and the [[commune of Tende]] was liberated only on 5 May 1945. This demonstrates that it was not possible for Dragoon to assist the struggling armies in Italy. ||| The Operation ||| Advance towards the Italian border ||| +0 Operation Eagle ||| Six-Day War ||| Sinai was an integral part of Egypt since the inception of the Muhammad Ali dynasty in the early 19th century. Israel briefly captured the Sinai Peninsula from Egypt in the 1967 [[Six-Day War]]. As part of the 1979 [[Egypt–Israel Peace Treaty]], in 1982 Israel withdrew from the peninsula. Among the treaty's other provisions was an agreement that the peninsula would be left effectively [[Demilitarization|demilitarized]]. ||| Background ||| Historic perspective ||| +0 Operation Enduring Freedom ||| Action of 18 March 2006 ||| Anti-piracy operations were undertaken by the coalition throughout 2006 with a [[Action of 18 March 2006|battle fought in March]] when US vessels were attacked by pirates. In January 2007, during the [[War in Somalia (2006–present)|war in Somalia]], an [[AC-130]] airstrike was conducted against [[al-Qaeda]] members embedded with forces of the [[Islamic Courts Union]] (ICU) operating in southern Somalia near [[Battle of Ras Kamboni|Ras Kamboni]]. US naval forces, including the [[aircraft carrier]] [[USS Dwight D. Eisenhower|USS ''Dwight D. Eisenhower'']], were positioned off the coast of Somalia to provide support and to prevent any al-Qaeda forces escaping by sea. Actions against pirates also occurred in June and October 2007 with varying amounts of success. ||| Operation Enduring Freedom – Horn of Africa (OEF-HOA) ||| US action ||| +0 Operation Enduring Freedom ||| Battle of Tora Bora ||| The [[Battle of Tora Bora]], involving U.S., British and Northern Alliance forces took place in December 2001 to further destroy the Taliban and suspected al-Qaeda in Afghanistan. In early March 2002 the United States military, along with allied Afghan military forces, conducted a large operation to destroy al-Qaeda in an operation code-named [[Operation Anaconda]]. ||| Operation Enduring Freedom – Afghanistan (OEF-A) ||| Combat operations start ||| +0 Operation Enduring Freedom ||| Taliban insurgency ||| The war continued in the south of the country, where the Taliban retreated to [[Kandahar]]. After Kandahar fell in December, remnants of the Taliban and al-Qaeda continued to [[Taliban insurgency|mount resistance]]. Meanwhile, in November 2001 the U.S. military and its allied forces established their first ground base in Afghanistan to the south west of [[Kandahar]], known as [[Camp Rhino|FOB Rhino]]. ||| Operation Enduring Freedom – Afghanistan (OEF-A) ||| Combat operations start ||| +0 Operation Flaming Dart ||| Operation Rolling Thunder ||| The Operation Flaming Dart raids were later followed by [[Operation Rolling Thunder]], which began a 44-month campaign on 2 March 1965. ||| Aftermath ||| ||| +0 Operation Frantic ||| Tehran Conference ||| At the [[Tehran Conference]] in late November 1943, President [[Franklin D. Roosevelt]] personally proposed the use of Soviet bases by American aircraft to Marshal [[Joseph Stalin]]. In this he was assisted by a personal appeal from his son, Colonel [[Elliott Roosevelt]], also in attendance, who requested the bases for use of his reconnaissance aircraft then operating from Italy. ||| Overview ||| ||| +0 Operation Frantic ||| Warsaw Uprising ||| :: Eighth Air Force in England dispatches 110 B-17s to drop supplies to the [[Warsaw Uprising]] [[Polish Home Army]] and then proceed to bases in the USSR. However, a weather front is encountered over the North Sea and the bombers are recalled to England. Escort is provided by 149 P-51 Mustangs; two P-51s (42-106783, 43-24842, 363d FS) collide in a cloud and are lost. ||| Operations ||| ||| +0 Operation Freedom Deal ||| Operation Menu ||| Operation Freedom Deal followed and expanded the bombing of Cambodia conducted under '''[[Operation Menu]]''' in 1969 and 1970. Most of the bombing was carried out by [[United States Air Force|U.S. Air Force]] [[Boeing B-52 Stratofortress|B-52]] [[heavy bomber]]s. The effectiveness of the bombing and the number of civilians killed by U.S. bombing is in dispute. ||| ||| ||| +0 Operation Friction ||| Korean War ||| During the Gulf War, Canada's CF-18 squadrons were integrated with Coalition air resources and provided [[combat air patrol]]s as well as being involved in attacks of ground and water targets. This was the first time since the [[Korean War]] that the Canadian military had participated in offensive combat operations. ||| The Gulf War ||| ||| +0 Operation Friction ||| Liberation of Kuwait campaign ||| | objective = [[Liberation of Kuwait campaign|Liberation of Kuwait]] ||| ||| ||| +0 Operation Gauntlet ||| Operation Barbarossa ||| German forces had completed their [[Norwegian Campaign|occupation of Norway]] in June 1940 and in June 1941, the [[Soviet Union]] (USSR) had been invaded in [[Operation Barbarossa]]. Immediately, the British Prime Minister, [[Winston Churchill]], declared common cause with the USSR. The Soviets requested a British naval presence off northern [[Russia]] and [[Rear Admiral]] [[Philip Vian]] visited [[Murmansk]] to assess the local situation. Due to logistical and other circumstances the British presence was limited to submarines. ||| Background ||| ||| +0 Operation Gisela ||| Battle of the Bulge ||| Unfortunately for the Germans security was breached within weeks. On 1 January 1945, after participating in [[Operation Bodenplatte]] to support the [[Battle of the Bulge|German Ardennes Offensive]], a Ju 88 (code D5+PT) flown by ''[[Unteroffizier]]'' (Corporal) Lattoch belonging to 9./NJG 3 landed in [[Luxembourg]] in error. Lattoch had been present at the briefing on 1 December 1944 and was taken [[prisoner of war]]. He was soon handed over to the intelligence branch of the US [[Ninth Air Force]]. He divulged the details of the meeting and this information was passed to the [[Air Ministry]]. ||| German plan ||| Intelligence breach ||| +0 Operation Gisela ||| The Blitz ||| While the number of losses incurred against German night fighters was not significantly large the [[psychological]] damage was substantial. A high number of crashes owed much to nervous British bomber pilots who did not feel safe over their own airfields and consequently landed too hard and fast or refused to go around a second time for fear of enemy intruders. Just as it appeared night intruder sorties were showing promise [[Adolf Hitler]] ordered a cessation of operations. For propaganda purposes, he thought that the morale of the German people would be better served by seeing British bombers destroyed and wrecked over German territory. Hitler was also reticent owing the fact there had been no noticeable reduction in British air raids and the RAF had not adopted these methods during [[The Blitz]]. This order came into effect on 12 October 1941. which was inundated with requests for reinforcements in other theatres. ||| Background ||| Intruder history ||| +0 Operation Gisela ||| Western Front (World War II) ||| Allied armies had also reached the pre-war German territorial borders and now occupied some German towns and cities. [[Western Front (World War II)|In the West]] the defeat [[Normandy Campaign|in Normandy]] and the Allied advance across Western Europe had significant consequences for the ''Luftwaffe's'' ability to defend Germany from British night attacks. The [[Kammhuber Line]]—German air defence system—which had extended through occupied France, [[Belgium]] and the [[Netherlands]] was now broken and much of its early warning network had been lost. Along with the battlefield reverses was the inability of the ''Luftwaffe'' to produce enough experienced [[night fighter]] crews which was exacerbated by the crippling shortage of fuel at this stage in the war which contributed to the collapse of training programs and grounded combat units. Equally serious was the threat posed by RAF [[de Havilland Mosquito]] night fighter intruders operating over Germany. ||| ||| ||| +0 Operation Goodwood ||| Invasion of Normandy ||| The historic Normandy town of Caen was a [[Invasion of Normandy|D-Day]] objective for the British [[3rd Division (United Kingdom)|3rd Infantry Division]], which landed on [[Sword Beach]] on 6 June 1944. ||| Background ||| ||| +0 Operation Goodwood (naval) ||| Pacific War ||| During the final days of Operation Goodwood Royal Navy planners decided not to order further Fleet Air Arm operations against Kaafjord. The planners accepted that the Germans were now able to cover ''Tirpitz'' in smoke before Barracudas could reach the battleship, and these aircraft could not carry bombs large enough to inflict heavy damage. Further consideration was given to attacking Kaafjord using Mosquitos launched from aircraft carriers, but the light bombers continued to be in short supply and it was judged that they were not well suited to the task. Moreover, there was a growing need to transfer the carriers to the Pacific to strengthen Britain's contribution to the [[Pacific War|war against Japan]]. ||| Aftermath ||| ||| +0 Operation Gordian Knot ||| Angolan Civil War ||| Frelimo announced the opening of a new front in [[Zambezia Province|Zambezia]] and poured guerrillas into the middle regions of the country. The Spinola government countered by ordering northern outposts abandoned and the concentration of troops in the southern regions, by handing out arms to rural settlers, and by ordering an increase in bombing attacks on guerrilla controlled territories. These measures were intended to support the Portuguese position at the negotiating table. The Portuguese troops fighting in Mozambique realized that the coup in Lisbon, the change of regime and the opening of negotiations with Frelimo were a prelude to withdrawal. Instead of engaging the guerrillas, many refused to continue risking their lives. By mid-summer an undeclared truce prevailed since the bulk of the Portuguese army would not leave their barracks; and on September 8, 1974, an accord was signed formalizing the cease-fire. The agreement called for a transitional government with full independence for Mozambique to be granted on June 25, 1975 - the thirteenth anniversary of Frelimo. The [[Portuguese Colonial War]] had ended, but the newly independent territories of [[Angola]] and [[Mozambique]] would enter a period of chaos and devastating [[civil war]]s ([[Angolan Civil War]] and [[Mozambican Civil War]]) which lasted several decades and claimed millions of lives and refugees. ||| Aftermath ||| ||| +0 Operation Gordian Knot ||| Mozambican Civil War ||| Frelimo announced the opening of a new front in [[Zambezia Province|Zambezia]] and poured guerrillas into the middle regions of the country. The Spinola government countered by ordering northern outposts abandoned and the concentration of troops in the southern regions, by handing out arms to rural settlers, and by ordering an increase in bombing attacks on guerrilla controlled territories. These measures were intended to support the Portuguese position at the negotiating table. The Portuguese troops fighting in Mozambique realized that the coup in Lisbon, the change of regime and the opening of negotiations with Frelimo were a prelude to withdrawal. Instead of engaging the guerrillas, many refused to continue risking their lives. By mid-summer an undeclared truce prevailed since the bulk of the Portuguese army would not leave their barracks; and on September 8, 1974, an accord was signed formalizing the cease-fire. The agreement called for a transitional government with full independence for Mozambique to be granted on June 25, 1975 - the thirteenth anniversary of Frelimo. The [[Portuguese Colonial War]] had ended, but the newly independent territories of [[Angola]] and [[Mozambique]] would enter a period of chaos and devastating [[civil war]]s ([[Angolan Civil War]] and [[Mozambican Civil War]]) which lasted several decades and claimed millions of lives and refugees. ||| Aftermath ||| ||| +0 Operation Gothic Serpent ||| Unified Task Force ||| In December 1992, U.S. President [[George H. W. Bush]] ordered the [[United States Armed Forces|U.S. military]] to join the U.N. in a joint operation known as [[Unified Task Force|Operation Restore Hope]], with the primary mission of restoring order in Somalia. The country was wracked by civil war and a severe [[famine]] as it was ruled by a number of [[Rebellion|faction leader]]s. Over the next several months, the situation deteriorated. ||| Background ||| ||| +0 Operation Gothic Serpent ||| Vietnam War ||| The battle turned out to be the most intensive [[close combat]] that U.S. troops had engaged in since the [[Vietnam War]]. In the end, two [[Sikorsky UH-60 Black Hawk|MH-60 Black Hawk]]s were shot down, another was seriously damaged, and 18 U.S. troops and a Malaysian soldier on the rescue convoy were killed, and 85 were wounded. Estimates of Somali fatalities are around 1,000 militiamen killed during the battle, with over 3,000 wounded. The Delta snipers, [[Gary Gordon]] and [[Randall Shughart]], were posthumously awarded the [[Medal of Honor]] for their sacrifice. The mission's objective of capturing Aidid's associates was accomplished. ||| Battle of Mogadishu ||| ||| +0 Operation Grenade ||| Operation Veritable ||| On 9 February, the U.S. Ninth Army—operating under [[Bernard Law Montgomery, 1st Viscount Montgomery of Alamein|Sir Bernard Montgomery]]'s [[British 21st Army Group]] since the [[Battle of the Bulge]]—was to cross the Roer and link up with the [[Canadian First Army|Canadian 1st Army]] coming from the [[Nijmegen]] area of the [[Netherlands]] in [[Operation Veritable]], which had started at 05:00 on 8 February. However, once the Canadians had advanced, the Germans destroyed the dams upstream. This stopped the Americans from crossing as planned. It had been anticipated that the Germans would try to do this, and that General Bradley′s [[Twelfth United States Army Group|U.S. 12th Army Group]] could capture them in time to stop the flooding. ||| ||| ||| +0 Operation Hailstone ||| Bombing of Rabaul (November 1943) ||| The cruiser [[Japanese cruiser Agano|''Agano'']], a veteran of the [[Bombing of Rabaul (November 1943)|Raid on Rabaul]] and which was already en route to Japan when the attack began, was sunk by a U.S. submarine, the {{USS|Skate|SS-305}}. ''Oite'' rescued 523 survivors from the ''Agano'' and returned to Truk lagoon to assist in its defense with her anti-aircraft guns. She was sunk soon after by air attack with the ''Agano'' survivors still on board, killing all of them and all but 20 of the ''Oite''{{'}}s crew. ||| Attack ||| ||| +0 Operation Halyard ||| Allied invasion of Sicily ||| After the successful [[Allied invasion of Sicily]], [[Armistice between Italy and Allied armed forces|Italy capitulated]] in the autumn of 1943, the Allies occupied the whole of southern Italy. In late 1943, the [[15th Expeditionary Mobility Task Force|15th Air Force]] of the [[United States Army Air Forces]], under the command of General [[Nathan Twining]], was transferred from [[Tunisia]] to an airfield near [[Foggia]]. This airfield became the largest American air base in southern Italy, and was used for attacking targets in southern and [[Eastern Europe]]. The 15th Army Air Force also used the nearby airfields of [[Bari]], [[Brindisi]], [[Lecce Airfield|Lecce]] and [[Manduria]]. The 15th Air Force bombed targets in [[Nazi Germany|Germany]], [[Hungary during World War II|Hungary]], [[Slovak Republic (1939–1945)|Slovakia]], the [[Independent State of Croatia]], the [[Territory of the Military Commander in Serbia]], [[Bulgaria]] and [[Romania during World War II|Romania]]. Some of the most important targets were sources of petroleum and petroleum refineries in Romania. . These installations were the driving force of Hitler's war machine and the main targets in the [[Oil Campaign of World War II]]. The Ostro Romano refinery in Ploiești, provided one quarter of the Third Reich's fuel needs and was one of the priority targets. All flights targeting the oil-fields and refineries in Romania, near the town of [[Ploiești]] north of [[Bucharest]], passed over the Territory of the Military Commander in Serbia. [[File:B-24D's fly over Polesti during World War II.jpg|thumb|300px|B-24D's fly over Ploiești during World War II.]] ||| Background ||| Targets for United States Bombing ||| +0 Operation Halyard ||| Operation Overlord ||| The OSS planned an elaborate rescue involving C-47 cargo planes landing in enemy territory. It was an extremely risky operation, involving the planes not only entering enemy territory without being shot down themselves, but also landing, retrieving the downed airmen, then taking off and flying out of that same territory, again without being shot down themselves. The rescue was a complete success, but received little to no publicity. This was partly due to the timing, the world's attention being focused on the [[Operation Overlord|conflict in northern France]]. ||| Mission ||| ||| +0 Operation Harpoon (1942) ||| Operation Pedestal ||| A series of naval air-sea battles led to sustained attrition of British naval strength allowing the ''Regia Marina'' to gain [[naval supremacy]] in the east-central Mediterranean. The Italian Fleet and Axis air forces took advantage of the situation and moved onto the offensive, blocking or decimating at least three large British convoys bound for Malta. This led to a number of air-sea and naval engagements, such as the [[Second Battle of Sirte]], the Battle of Mid-June or Operation ''Harpoon'' (plus [[Operation Vigorous]]) and finally to [[Operation Pedestal]], all of them at least tactically favourable to the Axis, but ultimately leading to Allied strategic success with Malta's survival. ||| Background ||| ||| +0 Operation Harpoon (1942) ||| Operation Vigorous ||| '''Operation Harpoon''' was one of two simultaneous Allied [[Malta Convoys|convoy]]s sent to supply [[Malta]] in the Axis-dominated [[Mediterranean Sea]] in mid-June 1942, during the [[World War II|Second World War]]. One convoy, [[Operation Vigorous]], left [[Alexandria]]. The other, Operation Harpoon, travelled in the opposite direction from [[Gibraltar]]. Both convoys met with fierce Axis opposition and only two of ''Harpoon''′s six merchant ships completed the journey, at the cost of several Allied warships. ||| ||| ||| +0 Operation Harpoon (1942) ||| Second Battle of Sirte ||| A series of naval air-sea battles led to sustained attrition of British naval strength allowing the ''Regia Marina'' to gain [[naval supremacy]] in the east-central Mediterranean. The Italian Fleet and Axis air forces took advantage of the situation and moved onto the offensive, blocking or decimating at least three large British convoys bound for Malta. This led to a number of air-sea and naval engagements, such as the [[Second Battle of Sirte]], the Battle of Mid-June or Operation ''Harpoon'' (plus [[Operation Vigorous]]) and finally to [[Operation Pedestal]], all of them at least tactically favourable to the Axis, but ultimately leading to Allied strategic success with Malta's survival. ||| Background ||| ||| +0 Operation Herring ||| Gothic Line ||| The [[Allies of World War II|Allied]] [[Spring 1945 offensive in Italy|April 1945 offensive]] on the [[Italy|Italian]] front, which was to end the [[Italian Campaign (World War II)|Italian campaign]] and the war in Italy, was to decisively break through the [[Germany|German]] [[Gothic Line]], the defensive line along the [[Apennine Mountains|Apennines]] and the [[River Po]] plain to the [[Adriatic Sea]] and swiftly drive north to occupy [[Northern Italy]] and get to the [[Austria]]n and [[Socialist Federal Republic of Yugoslavia|Yugoslav]] borders as quickly as possible. However, German strongpoints, as well as bridge, road, levee and dike blasting, and any occasional determined resistance in the Po Valley plain might slow the planned sweep down. Allied planners felt that dropping [[paratroops]] onto some key areas and locales south of the River Po could help wreak havoc in the German rear area, attack German communications and vehicle columns, further disrupting the German retreat, and prevent German engineers from blowing up key structures before Allied spearheads could exploit them. Lieutenant General Sir [[Richard McCreery]], commander of the [[Commonwealth of Nations|Commonwealth]] [[Eighth Army (United Kingdom)|8th Army]], had a number of Italian paratroopers at hand for the task. ||| Background ||| ||| +0 Operation Hurricane-91 ||| 1991 Yugoslav campaign in Croatia ||| Within the [[1991 Yugoslav campaign in Croatia]], the 5th ([[Banja Luka]]) Corps of the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) was tasked with advancing north through the Western [[Slavonia]] region, from [[Okučani]] to [[Daruvar]] and [[Virovitica]], and with a secondary drive from Okučani towards [[Kutina]]. ||| Background ||| ||| +0 Operation Hurricane-91 ||| Operation Swath-10 ||| '''Operation Hurricane-91''' ({{lang-hr|Operacija Orkan-91}}) was a military offensive undertaken by the [[Croatian Army]] (''Hrvatska vojska'' – HV) against the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) and [[SAO Western Slavonia]] [[Territorial Defense Forces (Yugoslavia)|Territorial Defense Forces]] in the [[Sava]] River valley, in the region of Western [[Slavonia]] during the [[Croatian War of Independence]]. The operation began on 29 October 1991 and ended on 3 January 1992 when a nationwide ceasefire was signed to implement the [[Vance plan]]. The offensive was aimed at recapturing the region, in conjunction with [[Operation Swath-10|two other HV offensives]] launched against SAO Western Slavonia in the north of the region within days. ||| ||| ||| +0 Operation Hush ||| Battle of Passchendaele ||| The Germans used mustard gas for the first time, supported by a mass of heavy artillery, which captured part of the bridgehead over the Yser and annihilated two British battalions. After several postponements, Operation Hush was cancelled on 14 October 1917, as the advance during the [[Battle of Passchendaele|Third Battle of Ypres]] did not meet the objectives required to begin the attack. In April 1918, the [[Dover Patrol]] raided Zeebrugge, to sink block ships in the canal entrance to trap U-Boats, which closed the canal for a short time. From September–October 1918, the Belgian coast was occupied by the Allies, in the [[Fifth Battle of Ypres]]. ||| ||| ||| +0 Operation Hush ||| Fifth Battle of Ypres ||| The Germans used mustard gas for the first time, supported by a mass of heavy artillery, which captured part of the bridgehead over the Yser and annihilated two British battalions. After several postponements, Operation Hush was cancelled on 14 October 1917, as the advance during the [[Battle of Passchendaele|Third Battle of Ypres]] did not meet the objectives required to begin the attack. In April 1918, the [[Dover Patrol]] raided Zeebrugge, to sink block ships in the canal entrance to trap U-Boats, which closed the canal for a short time. From September–October 1918, the Belgian coast was occupied by the Allies, in the [[Fifth Battle of Ypres]]. ||| ||| ||| +0 Operation Igloo White ||| Battle of Khe Sanh ||| ''Igloo White'' was rushed into service during the [[Battle of Khe Sanh]] and successfully passed its first operational test. Combined with [[Operation Commando Hunt]] in 1969, the system served as the keystone of the U.S. aerial interdiction effort of the Vietnam War. ||| Effective Implementation ||| ||| +0 Operation Igloo White ||| Operation Commando Hunt ||| ''Igloo White'' was rushed into service during the [[Battle of Khe Sanh]] and successfully passed its first operational test. Combined with [[Operation Commando Hunt]] in 1969, the system served as the keystone of the U.S. aerial interdiction effort of the Vietnam War. ||| Effective Implementation ||| ||| +0 Operation Imposing Law ||| 18 April 2007 Baghdad bombings ||| On 18 April, [[18 April 2007 Baghdad bombings|five massive car bombs]], including two suicide bombers, exploded in mostly Shiite neighborhoods of Baghdad killing 198 people and wounding 251 others. The deadliest was in the mainly Shiite Sadriyah neighborhood in an attack on a market, which had already been hit by car bombs in previous attacks, where 140 people were killed and 148 were wounded. Prime Minister Nouri al-Maliki ordered the arrest of the Iraqi army colonel who was in charge of security in the area around the [[Sadriyah market]]. On the national level the [[Associated Press]] reported nearly 240 confirmed civilian fatalities making it the deadliest day since The Associated Press began recording daily nationwide deaths in May 2005. ||| The Operation ||| April developments ||| +0 Operation Imposing Law ||| 18 February 2007 Baghdad bombings ||| On 18 February, [[18 February 2007 Baghdad bombings|car bombings in a crowded market]] killed 63, which was the first major bombing since the security plan went in place. ||| The Operation ||| February developments ||| +0 Operation Imposing Law ||| Battle of Baqubah ||| U.S. and Iraqi forces launched attacks on Baghdad's northern and southern flanks mid-June to clear out Sunni insurgents, al-Qaida fighters and Shiite militiamen who had fled the capital and Anbar during the four-month-old security operation. The U.S. wanted to take advantage of the arrival of the final brigade of 30,000 additional U.S. troops to open the concerted attacks. In the north an [[Battle of Baqubah|offensive]] was mounted against Al-Qaeda positions in Baquba in Diyala province where [[Diyala province campaign|fighting had already been going on for months]]. In the south the push targeted insurgent forces in the Arab Jabour and Salman Pak area. Arab Jabour being only 20 kilometers southeast from Baghdad which is a major transit point for insurgent forces in and out of Baghdad. By the end of the first day of this [[Operation Marne Torch|new operation]] two U.S. soldiers and 30 militants were killed along with 12 civilians and more than 200 people were detained by coalition forces. Operation Phantom Thunder ended on 14 August with large swathes of insurgent held territory in the south, west, and east of Baghdad coming under coalition control. But despite that heavy fighting continued in Baghdad itself. ||| The Operation ||| Operation Phantom Thunder ||| +0 Operation Imposing Law ||| Operation Marne Torch ||| U.S. and Iraqi forces launched attacks on Baghdad's northern and southern flanks mid-June to clear out Sunni insurgents, al-Qaida fighters and Shiite militiamen who had fled the capital and Anbar during the four-month-old security operation. The U.S. wanted to take advantage of the arrival of the final brigade of 30,000 additional U.S. troops to open the concerted attacks. In the north an [[Battle of Baqubah|offensive]] was mounted against Al-Qaeda positions in Baquba in Diyala province where [[Diyala province campaign|fighting had already been going on for months]]. In the south the push targeted insurgent forces in the Arab Jabour and Salman Pak area. Arab Jabour being only 20 kilometers southeast from Baghdad which is a major transit point for insurgent forces in and out of Baghdad. By the end of the first day of this [[Operation Marne Torch|new operation]] two U.S. soldiers and 30 militants were killed along with 12 civilians and more than 200 people were detained by coalition forces. Operation Phantom Thunder ended on 14 August with large swathes of insurgent held territory in the south, west, and east of Baghdad coming under coalition control. But despite that heavy fighting continued in Baghdad itself. ||| The Operation ||| Operation Phantom Thunder ||| +0 Operation Iskra ||| Battle of Stalingrad ||| '''Operation Iskra''' ({{lang-ru|операция «Искра»}}, ''operatsiya Iskra''; {{lang-en|Operation Spark}}) was a [[Soviet Union|Soviet]] military operation during [[World War II]], designed to break the [[Nazi Germany|German]] [[Wehrmacht]]'s [[Siege of Leningrad]]. Planning for the operation began shortly after the failure of the [[Sinyavino Offensive (1942)|Sinyavino Offensive]]. The German defeat in the [[Battle of Stalingrad]] in late 1942 had weakened the German front. By January 1943, Soviet forces were planning or conducting offensive operations across the entire German-Soviet front, especially in southern Russia, Iskra being the northern part of the wider Soviet 1942–1943 winter counter offensive. ||| ||| ||| +0 Operation Iskra ||| Demyansk Pocket ||| For the German side, the battle left the 18th Army very stretched and exhausted. Lacking sufficient reinforcements, the command of Army Group North made the decision to shorten the front line by evacuating the Demyansk salient. The salient had been held throughout 1942, despite [[Demyansk Pocket|being encircled]] for a few months, as it was an important strategic bridgehead. Together with the Rzhev salient (which was also evacuated in spring 1943), it could potentially be used to encircle a large number of Soviet forces. However, in the situation that had developed, retaining it was no longer possible. ||| Aftermath ||| ||| +0 Operation Iskra ||| Operation Polyarnaya Zvezda ||| The success led to a much more ambitious offensive operation named [[Operation Polyarnaya Zvezda|Polyarnaya Zvezda]] (Polar Star) less than two weeks later. That operation had the aim of decisively defeating Army Group North, lifting the siege altogether, but it achieved only minimal progress. ||| ||| ||| +0 Operation Iskra ||| Siege of Leningrad ||| '''Operation Iskra''' ({{lang-ru|операция «Искра»}}, ''operatsiya Iskra''; {{lang-en|Operation Spark}}) was a [[Soviet Union|Soviet]] military operation during [[World War II]], designed to break the [[Nazi Germany|German]] [[Wehrmacht]]'s [[Siege of Leningrad]]. Planning for the operation began shortly after the failure of the [[Sinyavino Offensive (1942)|Sinyavino Offensive]]. The German defeat in the [[Battle of Stalingrad]] in late 1942 had weakened the German front. By January 1943, Soviet forces were planning or conducting offensive operations across the entire German-Soviet front, especially in southern Russia, Iskra being the northern part of the wider Soviet 1942–1943 winter counter offensive. ||| ||| ||| +0 Operation Ivy Blizzard ||| 2003 invasion of Iraq ||| '''Operation Ivy Blizzard''', occurred on 17 December 2003, during the [[2003 invasion of Iraq]] was a [[counterinsurgent]] sweep of the [[Iraq]]i town of [[Samarra]] (part of the [[Sunni Triangle]]). The operation involved elements of the [[U.S. 4th Infantry Division]] (the 'Ivy' Division) and began before [[dawn]], lasting to about mid-morning. The raids during the operation resulted in many arrests of believed [[guerrilla warfare|guerrilla]] fighters and suspected [[terrorists]]. ||| ||| ||| +0 Operation Ivy Blizzard ||| Operation Red Dawn ||| Ivy Blizzard was launched just days after [[Operation Red Dawn]], which resulted in the capture of [[Saddam Hussein]], which has led some to believe that information that led to Operation Ivy Blizzard may have been obtained from Saddam. ||| Operation details ||| ||| +0 Operation Jackal ||| Battle of Kupres (1992) ||| '''Operation Jackal''' ({{lang-hr|Operacija Čagalj}}), also known as '''Operation June Dawns''' (Croatian: ''Operacija Lipanjske Zore''), was an offensive of the [[Bosnian War]] fought between a combined [[Croatian Army]] (HV) and [[Croatian Defence Council]] (HVO) army against the [[Army of Republika Srpska]] (VRS) from 7-26 June 1992. The offensive was a [[Croatia]]n pre-emptive strike against the VRS, a [[Bosnian Serb]] military formed in May 1992 from JNA units that were stationed in [[Bosnia and Herzegovina]]. The HV concluded that the [[Yugoslav People's Army]] (JNA) offensive operations of April and May 1992, resulting in the [[Battle of Kupres (1992)|capture of Kupres]] and much of the [[Neretva]] River valley south of [[Mostar]], were aimed at capturing or threatening the Croatian [[Port of Ploče]] and possibly [[Split, Croatia|Split]]. To counter this threat, the Croatian leadership deployed the HV, under the command of [[General]] [[Janko Bobetko]], to the 'Southern Front' including the area in which Operation Jackal was to be conducted. ||| ||| ||| +0 Operation Janbaz ||| 2009 Lahore police academy attacks ||| Police also arrested another mastermind the attacks, Qari Ishtiaq, who is said to the commander of Punjabi Tehrik-i-Taliban. He was arrested from Bahawalpur on the information provided by the [[Hijratullah]] who has been jailed for 10 years due to his role in [[2009 Lahore police academy attacks|Lahore police academy attacks]]. ||| Investigations ||| ||| +0 Operation Jaywick ||| Operation Frankton ||| *[[Operation Frankton]] ||| See also ||| ||| +0 Operation Jericho ||| Invasion of Normandy ||| Embry was originally intended to command the attack but was later forbidden from flying on the mission, as he was involved in the planning of the [[Invasion of Normandy|invasion of Europe]]. Pickard took his place, despite his limited experience of low-level attack. The mission was delayed by very poor weather, which worsened after 10 February, with low cloud and snow across Europe. By 18 February, it was not possible to wait any longer and the 18 Mosquitos, plus a PR (photo-reconnaissance) Mosquito ('O' for Orange), were prepared. The crews were briefed at 08:00 under high security, the first time they had been made aware of the target. Pickard, in 'F' for Freddie, was to bring up the rear of the second wave of aircraft, to assess the damage and to call in 21 Squadron if necessary. In the event of anything happening to Pickard's aircraft, the crew of the PR Mosquito would broadcast the signal instead. ||| Attack ||| ||| +0 Operation Junction City ||| Operation Market Garden ||| American forces of II Field Force, Vietnam started the operation on 22 February 1967 (while [[Operation Cedar Falls]] was winding down), the initial operation was carried out by two infantry divisions, the 1st (commanded by Major General [[William E. DePuy]] ) and the 25th (Major General [[Frederick C. Weyand]]), who led their forces to the north of the operational area to build the 'anvil' on which, according to the American plans, the forces of the Viet Cong 9th Division would be crushed. At the same time the movement of infantry (eight battalions with 249 helicopters), took place on the same day including the launch of the paratroopers (the only launch carried out during the entire Vietnam War and the largest since the days of [[Operation Market Garden]] in World War II), an airborne regiment of the 173 Airborne Brigade, which went into action west of the deployment of the 1st and the 25th Infantry Divisions. ||| Hammer and Anvil ||| ||| +0 Operation Juno ||| Battle off Samar ||| The action is cometimes compared to the [[Battle off Samar]] (1944), in which a [[US Navy]] force of six small [[escort carrier]]s, three destroyers and four [[destroyer escort]]s encountered an ostensibly more powerful group of four battleships and eight cruisers belonging to the [[Imperial Japanese Navy]], including the largest battleship ever built, [[Japanese battleship Yamato|''Yamato'']]. An US antisubmarine patrol spotted the Japanese force and the carriers had hundreds of aircraft aircraft ready to launch. Aggressive attacks by US aircraft and destroyer escorts sank three Japanese heavy cruisers and persuaded the remainder to retreat, for the loss of two US escort carriers, two destroyers and a destroyer escort. ||| Sinking of HMS ''Glorious'' ||| ||| +0 Operation Jupiter (1944) ||| Operation Bluecoat ||| The British advance went well at first but fighting for Hill 112 took all day and Maltot changed hands several times. On 11 July, counter-attacks by the {{lang|de|''[[10th SS Panzer Division Frundsberg|10th SS-Panzer Division]]''}} and the [[102nd SS Heavy Panzer Battalion]] in the afternoon, forced the British off the top of Hill 112, to positions on the north-facing slope. The operation was a tactical failure for VIII Corps but a strategic success for the [[Allies of World War II|Allies]], attrition having reduced the [[II SS Panzer Corps]] to a condition from which it never recovered. Several other British operations were [[Second Battle of the Odon|conducted in the Odon valley]] during July and the [[53rd (Welsh) Infantry Division]] occupied Hill 112 almost unopposed on 4 August, after the Germans withdrew during [[Operation Cobra]] and [[Operation Bluecoat]] further west. A stone memorial to the 43rd Division was built on the hill in the late 1940s. ||| ||| ||| +0 Operation K ||| Battle of Midway ||| A followup to Operation K was scheduled for 30 May, to gain intelligence on the whereabouts of U.S. carriers prior to the [[Battle of Midway]]. However, the Americans had become aware French Frigate Shoals were a possible IJN rendezvous point, and naval patrols were increased, per Admiral [[Chester Nimitz]]'s orders. A Japanese submarine spotted two American warships at anchor there, prompting a cancellation of the plan. ||| Aftermath ||| ||| +0 Operation Ke ||| Battle of Rennell Island ||| The operation began on 14 January with the delivery of a battalion of infantry troops to Guadalcanal to act as [[rearguard]] for the evacuation. Around the same time, Japanese army and navy air forces began an [[air superiority]] campaign around the Solomon Islands and New Guinea. During the air campaign, a US [[cruiser]] was sunk in the [[Battle of Rennell Island]]. Two days later, Japanese aircraft sank a US [[destroyer]] near Guadalcanal. The actual withdrawal was carried out on the nights of 1, 4, and 7 February by destroyers. Apart from some air and [[PT boat]] attacks on the evacuating destroyers, Allied forces did not actively attempt to impede the withdrawal because Allied commanders believed the operation was actually a reinforcement operation, not an evacuation. ||| ||| ||| +0 Operation Ke ||| New Guinea campaign ||| On 7 August 1942, [[Allies of World War II|Allied]] forces (primarily United States) landed on Guadalcanal, [[Tulagi]], and [[Florida Islands]] in the [[Solomon Islands]]. The landings on the islands were meant to deny their use by the Japanese as [[Military base|bases]] for threatening the [[materiel|supply]] routes between the US and Australia, and to secure the islands as starting points for a campaign with the eventual goal of capturing or neutralizing the major Japanese base at [[Rabaul]] while also supporting the Allied [[New Guinea campaign]]. The landings initiated the six-month-long Guadalcanal campaign. ||| Background ||| Guadalcanal Campaign ||| +0 Operation Kheibar ||| Operation Badr (1985) ||| In the end Iran suffered 20,000 casualties in the battle of the Marshes and only inflicted 10,000 casualties on Iraq. But for Iraq even 10,000 was an unacceptable number. After the battle, Iran tried unsuccessfully to take the Baghdad-Basra highway with [[Operation Badr (1985)|Operation Badr]]. At the end of the War, Iraq expelled the Iranians from Majnoon island by using professional combined-arms tactics coupled with chemical weapon attacks. Some of the Iranian commanders like [[Hamid Bakeri]] and Abdul Rasul Zarrin were killed in this battle. ||| Aftermath ||| ||| +0 Operation Kita ||| Bombing of Kure (July 1945) ||| After reaching Japan, ''Ise'' and ''Hyūga'' were assigned to bolster the anti-aircraft defenses of the city of Kure and its naval base. Due to shortages of fuel and aircraft, the ships did not put to sea again, and both were sunk during the U.S. Navy's [[Bombing of Kure (July 1945)|attacks on Kure]] between 24 and 28 July 1945. The three destroyers also failed to survive the war; ''Asashimo'' and ''Kasumi'' fell victim to American carrier aircraft while escorting the battleship {{Ship|Japanese battleship|Yamato||2}} during [[Operation Ten-Go|Operation ''Ten-Go'']] on 6 April, and ''Hatsushimo'' sank after striking a mine near [[Maizuru, Kyoto|Maizuru]] on 30 July. ||| Aftermath ||| ||| +0 Operation Ladbroke ||| North African Campaign ||| By December 1942, with [[Allies of World War II|Allied forces]] [[Tunisia Campaign|advancing through Tunisia]], the [[North African Campaign]] was coming to a close; with victory there imminent, discussions began among the Allies regarding the nature of their next objective. ||| Background ||| ||| +0 Operation Linebacker II ||| Operation Linebacker ||| Also prompting the President toward some form of rapid offensive action was the cost of the force mobilization that had accompanied ''[[Operation Linebacker]]''. The additional aircraft and personnel assigned to Southeast Asia for the operation was straining [[the Pentagon]]'s budget. The cost of maintaining this 'augmentation force' totaled over $4 billion by mid-autumn and [[Secretary of Defense]] [[Melvin Laird]] insisted that the President request a supplementary defense appropriation from Congress to pay for it. ||| Prelude ||| Decisions ||| +0 Operation Linebacker II ||| World War II ||| '''Operation ''Linebacker II''''' was a US [[Seventh Air Force]] and [[US Navy]] [[Task Force 77 (U.S. Navy)|Task Force 77]] [[strategic bombing|aerial bombing]] campaign, conducted against targets in the [[Democratic Republic of Vietnam]] (North Vietnam) during the final period of [[US involvement in the Vietnam War]]. The operation was conducted from 18–29 December 1972, leading to several of informal names such as ''''The December Raids'''' and ''''The Christmas Bombings''''. It saw the largest heavy bomber strikes launched by the [[US Air Force]] since the end of [[World War II]]. ''Linebacker II'' was a modified extension of the Operation Linebacker bombings conducted from May to October, with the emphasis of the new campaign shifted to attacks by [[B-52 Stratofortress]] heavy bombers rather than smaller tactical fighter aircraft. ||| ||| ||| +0 Operation Little Saturn ||| Battle of Kursk ||| The success of [[Operation Uranus]], launched on 19 November 1942, had trapped 250,000 - 300,000 troops of General [[Friedrich Paulus]]' [[6th Army (Wehrmacht)|German 6th Army]] and [[German 4th Panzer Army|4th Panzer Army]] in [[Stalingrad]]. To exploit this victory, the Soviet general staff planned a winter campaign of continuous and highly ambitious offensive operations, codenamed 'Saturn'. Later [[Joseph Stalin]] reduced his ambitious plans to a relatively small campaign codenamed 'Operation Little Saturn'. The offensive succeeded at applying pressure to over stretched German forces in Eastern Ukraine and driving back the occupying forces. Even so, the Soviets themselves became over extended, setting up the stages for the German offensives of the [[Third Battle of Kharkov]] and the [[Battle of Kursk]]. ||| ||| ||| +0 Operation Little Saturn ||| Operation Winter Storm ||| The first stage &mdash; an attempt to cut off the German [[Army Group A]] in the Caucasus &mdash; had to be rapidly revised when General [[Erich von Manstein]] launched [[Operation Wintergewitter|Operation Winter Storm]] on 12 December in an attempt to relieve the trapped armies at Stalingrad. While General [[Rodion Malinovsky]]'s [[Soviet Second Guards Army|Soviet 2nd Guards Army]] blocked the German advance on Stalingrad, the modified plan ''Operation Little Saturn'' was launched on 16 December. ||| Soviet counter-offensive: Operation Little Saturn ||| First stage: December 1942 ||| +0 Operation Little Saturn ||| Third Battle of Kharkov ||| The success of [[Operation Uranus]], launched on 19 November 1942, had trapped 250,000 - 300,000 troops of General [[Friedrich Paulus]]' [[6th Army (Wehrmacht)|German 6th Army]] and [[German 4th Panzer Army|4th Panzer Army]] in [[Stalingrad]]. To exploit this victory, the Soviet general staff planned a winter campaign of continuous and highly ambitious offensive operations, codenamed 'Saturn'. Later [[Joseph Stalin]] reduced his ambitious plans to a relatively small campaign codenamed 'Operation Little Saturn'. The offensive succeeded at applying pressure to over stretched German forces in Eastern Ukraine and driving back the occupying forces. Even so, the Soviets themselves became over extended, setting up the stages for the German offensives of the [[Third Battle of Kharkov]] and the [[Battle of Kursk]]. ||| ||| ||| +0 Operation Mallard ||| Operation Deadstick ||| The mission's objective was to airlift [[glider infantry]] of the [[6th Airlanding Brigade]] and divisional troops to reinforce the [[6th Airborne Division]] on the left flank of the British invasion beaches. Using two landing zones, one to the west of the [[Caen canal]] and the other to the east of the [[River Orne]], Mallard was the third airborne operation involving units of the division on D-Day. The first, [[Operation Deadstick]], had captured what are now known as the [[Pegasus Bridge|Pegasus]] and [[Horsa Bridge|Horsa]] bridges intact. [[Operation Tonga]] followed, dropping the division's two parachute brigades near [[Caen]] to the east. ||| ||| ||| +0 Operation Mallard ||| Operation Tonga ||| The mission's objective was to airlift [[glider infantry]] of the [[6th Airlanding Brigade]] and divisional troops to reinforce the [[6th Airborne Division]] on the left flank of the British invasion beaches. Using two landing zones, one to the west of the [[Caen canal]] and the other to the east of the [[River Orne]], Mallard was the third airborne operation involving units of the division on D-Day. The first, [[Operation Deadstick]], had captured what are now known as the [[Pegasus Bridge|Pegasus]] and [[Horsa Bridge|Horsa]] bridges intact. [[Operation Tonga]] followed, dropping the division's two parachute brigades near [[Caen]] to the east. ||| ||| ||| +0 Operation Market Garden ||| Battle of the Scheldt ||| Several weeks prior to the plan taking shape, the British had captured Antwerp and its all-important port facilities. This action had the potential to greatly shorten the Allies' supply lines and trap [[Gustav-Adolf von Zangen]]'s 15th Army of 80,000 men on the south side of the Scheldt Estuary. Instead, Von Zangen's men, with most of their heavy equipment including their artillery, escaped by boat to the South Beveland peninsula. In September, the peninsula could have been sealed by a short advance of only {{convert|24|km|mi|abbr=on}} past Antwerp. Instead, because priority on supplies went to Market Garden, the [[First Canadian Army]] paused at Antwerp and then fought the costly [[Battle of the Scheldt]] in October. In the aftermath of Market Garden, Antwerp was not made operational until 28 November. By 1 October, over 240 Allied supply ships were waiting, unable to unload their cargo because of the limited port facilities on the continent. ||| Aftermath ||| Debate on Allied strategy and tactics ||| Priority of operation +0 Operation Market Garden ||| Omaha Beach ||| Boats ordered by the [[82nd Airborne]] the day before, failed to arrive until afternoon and a hasty daylight assault crossing was ordered. At about 15:00, the 3rd Battalion, 504th PIR, commanded by Major [[Julian Cook]], began their assault across the Waal. The American paratroopers were rowed across the Waal by members of C/307th EN BN in 26 canvas assault boats provided by the British. {{Page needed|date=October 2012}} The surviving paratroopers then assaulted across {{convert|200|m|yd|abbr=off}} of open ground on the far bank and seized the north end of the bridge. The costly attack was nicknamed 'Little Omaha' in reference to [[Omaha Beach]]. 200 paratroopers were killed, while German losses exceeded 267. {{sfn|Atkinson|2013|p=280-181}} German forces withdrew from both ends of the bridge which was then rushed by Guards tanks and the 2nd Battalion, 505th PIR, securing the bridge at 18:30, D+4. ||| Battle ||| Day 4: Wednesday, 20 September ||| Nijmegen +0 Operation Market Garden ||| Operation Plunder ||| Several bridges between [[Eindhoven]] and [[Nijmegen]] were captured at the beginning of the operation but Lieutenant-General [[Brian Horrocks]]' [[XXX Corps (United Kingdom)|XXX Corps]] ground force advance was delayed by the demolition of a bridge over the Wilhelmina Canal, an extremely overstretched supply line at [[Son en Breugel|Son]], and failure to capture the main road bridge over the river Waal before 20 September. At [[Arnhem]], the [[British 1st Airborne Division]] encountered far stronger resistance than anticipated. In the [[Battle of Arnhem|ensuing battle]], only a small force managed to hold one end of the [[Arnhem road bridge]] and after the ground forces failed to relieve them, they were overrun on 21 September. The rest of the division, trapped in a small pocket west of the bridge, had to be evacuated on 25 September. The Allies had failed to cross the Rhine in sufficient force and the river remained a barrier to their advance until offensives at [[Remagen]], [[Oppenheim]], [[Operation Plunder|Rees and Wesel]] in March 1945. The failure of Market Garden ended Allied expectations of finishing the war by Christmas 1944. ||| ||| ||| +0 Operation Market Garden ||| Operation Veritable ||| To the south the newly arrived [[50th (Northumbrian) Infantry Division]] attacked the Germans holding the highway and secured it by the next day. Allied positions in the Nijmegen Salient as it came to be known, were manned throughout the rest of September and October by airborne units, then handed over to the [[First Canadian Army]] in November 1944 and remained unchanged until February 1945 when [[Operation Veritable]] was launched on the Rhineland, advancing east instead of north towards Arnhem. ||| Battle ||| Day 9: Monday, 25 September ||| +0 Operation Market Time ||| Action of 1 March 1968 ||| A significant [[Action of 1 March 1968|action]] of Market Time occurred on 1 March 1968, when the North Vietnamese attempted a coordinated infiltration of four gun-running trawlers. Two of the four trawlers were destroyed by allied ships in gun battles, one trawler crew detonated charges on board their vessel to avoid capture, and the fourth trawler turned tail and retreated at high speed into the South China Sea. LT Norm Cook, the patrol plane commander of a VP-17 P-2H Neptune patrol aircraft operating from Cam Ranh Bay, was awarded a [[Distinguished Flying Cross (United States)|Distinguished Flying Cross]] for discovering and following two of the four trawlers in the action. ||| Operation ||| ||| +0 Operation Marne Avalanche ||| Operation Marne Torch ||| Marne Avalanche built on the successes of Task Force Marne's offensive operation, [[Operation Marne Torch|Marne Torch]], which began 16 June 2007. Operation Marne Torch resulted in more than 1,152 structures cleared, 83 suspected insurgents killed, 278 suspected insurgents detained, 51 weapons caches found, 51 boats destroyed and 872 Iraqi citizens entered in a biometric identification system. ||| Operation details ||| ||| +0 Operation Marne Torch ||| Operation Phantom Phoenix ||| Coalition forces also established new patrol bases in Arab Jabour, which allowed them to push further south into insurgent sanctuaries in [[Operation Phantom Phoenix|future operations]] as well as allow Iraqis to feel secure enough to come forward and volunteer for the awakening movements. ||| Marne Torch II ||| ||| +0 Operation Mars ||| Battle of Stalingrad ||| An area of controversy is whether the operation was intended as a major offensive, or was it really intended to simply divert German attention and resources from the Stalingrad pocket to prevent the relief of their Sixth Army at [[Battle of Stalingrad|Stalingrad]]? The forces concentrated for Operation Mars were much larger than the ones used in [[Operation Uranus]]. Military historian [[David M. Glantz]] believes that Operation Mars was the main Soviet offensive, and that the narrative that it was intended as a 'diversion attack' was a propaganda effort on the part of the Soviet government. He termed Operation Mars as the 'greatest defeat of Marshal Zhukov.' ||| Assessment ||| ||| +0 Operation Martyr's Right ||| Military intervention against ISIL ||| A part of the larger background of an [[Military intervention against ISIL|international campaign against]] the [[Islamic State of Iraq and the Levant]], over two hundred militants tied to the [[Terrorism|terrorist group]] have been reported dead. ||| ||| ||| +0 Operation Mascot ||| Normandy landings ||| Three raids against ''Tirpitz'' were cancelled after launch due to unfavourable weather during April and May 1944. The first of these attacks, Operation Planet, began when the Home Fleet sailed from its base at [[Scapa Flow]] in the Orkney Islands on 21 April. This operation involved the same aircraft carriers as had taken part in Operation Tungsten, aside from the substitution of the escort carrier {{HMS|Fencer|D64|6}} with sister ship {{HMS|Striker|D12|2}}. The fleet reached the position where its aircraft were to be flown off three days later, but the raid was cancelled when Allied agents near Kaafjord reported bad weather over the target area. No further attacks were attempted during June as the ships of the Home Fleet were needed to support the [[Normandy landings]] that month. ||| Background ||| ||| +0 Operation Mascot ||| Operation Goodwood ||| The next attack on Kaafjord took place in late August. During [[Operation Goodwood (naval)|Operation Goodwood]], aircraft flying from three [[fleet carrier]]s and two [[escort carrier]]s conducted four raids between 22 and 29 August. The attackers found ''Tirpitz'' covered in smoke on each occasion, and only managed to inflict light damage on the battleship. These unsuccessful attacks cost the British 17 aircraft and 40 airmen killed. ||| Aftermath ||| ||| +0 Operation Mascot ||| Operation Goodwood (naval) ||| Despite the failure of Operation Mascot, the [[Royal Navy]] attempted [[Operation Goodwood (naval)|four further carrier raids]] against ''Tirpitz'' during August 1944. These attacks were also unsuccessful, and the task of sinking the battleship was transferred to the [[Royal Air Force]]. ||| ||| ||| +0 Operation Mascot ||| Operation Tungsten ||| '''Operation Mascot''' was an unsuccessful British carrier air raid conducted against the [[German battleship Tirpitz|German battleship ''Tirpitz'']] at her anchorage in [[Kåfjorden (Alta)|Kaafjord]], Norway, on 17 July 1944. The attack was one of a [[List of Allied attacks on the German battleship Tirpitz|series of strikes]] against the battleship launched from aircraft carriers between April and August 1944, and was initiated after Allied intelligence determined that the damage inflicted during the [[Operation Tungsten]] raid on 3 April had been repaired. ||| ||| ||| +0 Operation Medak Pocket ||| Korean War ||| According to some Canadian sources, [[UNPROFOR]] personnel and Croatian troops exchanged heavy fire. In Canada, at the time, the battle was considered to be one of the most severe battles fought by the [[Canadian Forces]] since the [[Korean War]]. ||| ||| ||| +0 Operation Menu ||| Cambodian Campaign ||| The consequences of U.S. bombing of Cambodia, positive and negative, are still widely debated by participants and scholars. As for preventing further North Vietnamese offensives, they failed. In May 1969, PAVN/NLF launched an offensive similar in size to that of the mini-Tet offensive of the previous year. It certainly cost North Vietnam the effort and manpower to disperse and camouflage their Cambodian sanctuaries to prevent losses to further air attack. President Nixon claimed the raids were a success, since air power alone had to provide a shield for withdrawal and [[Vietnamization]]. They certainly emboldened Nixon to launch the [[Cambodian Campaign]] of 1970. ||| Aftermath ||| ||| +0 Operation Menu ||| Operation Freedom Deal ||| [[Operation Freedom Deal]] followed Operation Menu. B-52 bombing was expanded to a much larger [[Area bombardment|area]] of Cambodia and continued until August 1973. ||| ||| ||| +0 Operation Menu ||| Operation Rolling Thunder ||| On 22 February, during the period just following the [[Tết]] holidays, PAVN/NLF forces launched an offensive. Nixon became even more angered when the communists launched rocket and artillery attacks against Saigon, which he considered a violation of the 'agreement' he believed had been made when the US halted the [[Operation Rolling Thunder|bombing of North Vietnam]] in November 1968. ||| Background ||| ||| +0 Operation Michael ||| Hindenburg Line ||| '''Operation ''Michael''''' was a [[World War I|First World War]] [[German Army (German Empire)|German]] military operation that began the [[Spring Offensive]] on 21 March 1918. It was launched from the [[Hindenburg Line]], in the vicinity of [[Saint-Quentin, Aisne|Saint-Quentin]], [[France]]. Its goal was to break through the Allied lines and advance in a north-westerly direction to seize the Channel ports, which supplied the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF) and to drive the BEF into the sea. Two days later Ludendorff changed his plan and pushed for an offensive due west, along the whole of the British front north of the [[River Somme]]. This was designed to separate the French and British Armies and crush the British forces by pushing them into the sea. The offensive ended at [[Villers-Bretonneux]], to the east of the Allied communications centre at [[Amiens]], where the [[Allies of World War I|Entente]] managed to halt the German advance; the German armies had suffered many casualties and were unable to maintain supplies to the advancing troops. ||| ||| ||| +0 Operation Michael ||| Spring Offensive ||| '''Operation ''Michael''''' was a [[World War I|First World War]] [[German Army (German Empire)|German]] military operation that began the [[Spring Offensive]] on 21 March 1918. It was launched from the [[Hindenburg Line]], in the vicinity of [[Saint-Quentin, Aisne|Saint-Quentin]], [[France]]. Its goal was to break through the Allied lines and advance in a north-westerly direction to seize the Channel ports, which supplied the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF) and to drive the BEF into the sea. Two days later Ludendorff changed his plan and pushed for an offensive due west, along the whole of the British front north of the [[River Somme]]. This was designed to separate the French and British Armies and crush the British forces by pushing them into the sea. The offensive ended at [[Villers-Bretonneux]], to the east of the Allied communications centre at [[Amiens]], where the [[Allies of World War I|Entente]] managed to halt the German advance; the German armies had suffered many casualties and were unable to maintain supplies to the advancing troops. ||| ||| ||| +0 Operation Mincemeat ||| Eastern Front (World War II) ||| German defensive efforts were substantially redirected: reinforcements were sent to Greece, [[Sardinia]] and [[Corsica]] instead of Sicily. British commando activities had also been carried out in Greece. The renowned general [[Erwin Rommel]] was sent to Greece to assume overall command. A group of '[[R boat]]s' (German minesweepers and minelayers) was transferred from Sicily, and three additional minefields were laid off the Greek coast. Three [[panzer]] divisions were moved to Greece – one from France, and two from the [[Eastern Front (World War II)|Eastern Front]]. The latter was perhaps the most critical move – reducing German combat strength in the [[Battle of Kursk|Kursk salient]] (influencing events on the Eastern Front was apparently neither intended nor foreseen by the British originators of the plan, who were preoccupied with their own part of the war). The Italian navy was also positioned in the general regional area of and around Greek waters, in preparatory advance to the defense of the anticipated upcoming Allied invasion of Greece. ||| 'Mincemeat swallowed rod, line and sinker' ||| ||| +0 Operation Mincemeat ||| Operation Torch ||| In late 1942, [[Operation Torch]], the invasion of French North Africa, was imminent; victory in [[North African Campaign|that campaign]] was expected. Following the [[Casablanca Conference]] in January 1943, Allied planners decided to continue the offensive in the [[Mediterranean, Middle East and African theatres of World War II|Mediterranean, Middle East and African theatres]]. ||| Background ||| ||| +0 Operation Mistral 2 ||| Operation Deliberate Force ||| The operation commenced during a [[North Atlantic Treaty Organisation]] (NATO) air campaign against the VRS codenamed [[Operation Deliberate Force]], targeting VRS air defences, artillery positions and storage facilities largely in the area of [[Sarajevo]], but also elsewhere in the country. Days after commencement of the offensive, the VRS positions to the right and to the left of the HV and the HVO advance were also attacked by the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH) in [[Operation Sana]]. The offensive achieved its objectives and set the stage for further advances of the HV, HVO and ARBiH towards Banja Luka, contributing to the resolution of the war. ||| ||| ||| +0 Operation Mountain Storm (Republic of Macedonia) ||| Kosovo War ||| '''Operation 'Mountain Storm'''' ({{lang-mk|Операција Планинска бура}}) was a military operation carried out on 7 November 2007 by special [[Law enforcement in the Republic of Macedonia|police forces of the Republic of Macedonia]] against an armed ethnic Albanian group in the [[Tetovo]] region with ties to Albanian paramilitary of the conflicts in [[Kosovo War|Kosovo]] (1998–1999), [[Insurgency in the Preševo Valley|Preševo Valley]] (2000–2001) and [[Insurgency in the Republic of Macedonia|Macedonia]] (2001). ||| ||| ||| +0 Operation Murfreesboro ||| Battle of Ramadi (2006) ||| This operation was one of the closing engagements of the [[Battle of Ramadi (2006)|Battle of Ramadi]] in 2006. In the beginning months of 2007, Task Force 1-9, composed of [[1st Battalion, 9th Infantry Regiment]] (1-9 IN, part of [[2nd Infantry Division (United States)|2ID]]), with support from Abrams main battle tanks of the [[3rd Battalion, 69th Armor Regiment]] (3-69 AR), [[Navy SEALS]], Bradley IFVs and dismounted infantry from [[1st Infantry Division (United States)|1st Battalion, 26th Infantry Regiment]] (1-26 IN), Charlie Company of the 321st Engineer Battalion, Lima Company of [[3rd Battalion 6th Marines|3rd Battalion, 6th Marine Regiment]] (3/6 Marines), Fox Company of [[2nd Battalion 4th Marines|2nd Battalion, 4th Marine Regiment]] (2/4 Marines) and infantrymen from the veteran 1/1/1 [[Iraqi Army]], launched an offensive in East Ramadi named Operation Murfreesboro. ||| Operation Murfreesboro ||| ||| +0 Operation München ||| Lufthansa Flight 615 ||| :''To be distinguished from the German documentary film [[:de:LH 615 – Operation München|LH 615 – Operation München]] about the 1972 [[Lufthansa Flight 615|hijacking of a Lufthansa airliner]].'' ||| ||| ||| +0 Operation München ||| Operation Barbarossa ||| '''Operation München''' (''Operaţiunea München'') was the Romanian codename of a joint [[Nazi Germany|German]]-[[Romania]]n offensive during the [[Operation Barbarossa|German invasion of the Soviet Union]] in [[World War II]], with the primary objective of recapturing [[Bessarabia]] and [[Northern Bukovina]], ceded by Romania to the [[Soviet Union]] a year before ([[Soviet occupation of Bessarabia and Northern Bukovina]]). ||| ||| ||| +0 Operation Nasr ||| 2003 invasion of Iraq ||| For the Iranian military, this major defeat had serious implications. Iran had lost between 88 and 214 tanks (depending upon the source), at least 100 other armored vehicles, some heavy artillery and a large portion of the 16th armored division. Many armored vehicles had been captured intact as they had been abandoned or stuck in the mud, and were put on display in Iraq (some were later even sold to [[Jordan]], while others remained in storage until the [[2003 invasion of Iraq|2003 invasion]]). The losses would have been much worse had not the Iranians managed to reassemble their pontoon bridge. Prior to the revolution, Iran had had 1,700 tanks (which dwindled to 1,000 usable ones after the revolution). With their defeat at Dezful, at least 10-20% of that entire force was destroyed, a major weakening of Iranian military power. To make matters worse, with US-led sanctions on Iran, those tanks could not be replaced while the Iraqi ones could easily be (since they weren't under an embargo and had the support of the west). ||| Aftermath ||| ||| +0 Operation New Market ||| Battle of New Market ||| After the [[Politics of Iraq|handover of sovereignty]], '''Operation New Market''' was a sweep of an area near [[Haditha]] in western [[Iraq]] conducted by one thousand coalition and Iraqi Security Forces to rid the Euphrates river bank of anti-coalition forces. It was launched on 24 May 2005 and followed [[Operation Squeeze Play]]. New Market was followed by [[List of coalition military operations of the Iraq War|Operation Lightning]]. The operation was named after the famous [[American Civil War|US Civil War]] [[Battle of New Market|battle at New Market, VA]] where cadets from the Virginia Military Institute [http://www.vmi.edu] fought and some perished. ||| ||| ||| +0 Operation Niagara ||| Operation Igloo White ||| In January 1968, the recently installed electronic sensors of Operation ''Muscle Shoals'' (later renamed [[Operation Igloo White]]), which were undergoing their test and evaluation phase in southeastern [[Laos]], were alerted to a flurry of PAVN activity along the Ho Chi Minh Trail in Laos opposite the northwestern corner of South Vietnam. ||| ''Niagara I'' ||| ||| +0 Operation Niagara ||| Operation Rolling Thunder ||| During the campaign, the Air Force had flown 9,691 sorties and dropped 14,223 tons of bombs. The Marine Corps's aviation wing flew 7,098 sorties and carried 17,015 tons of mixed munitions. Naval aviation (even though concurrently conducting the bulk of [[Operation Rolling Thunder]] missions over the DRV) contributed 5,337 sorties and 7,941 tons of bombs. ||| Riddle of Khe Sanh ||| ||| +0 Operation Nimble Archer ||| Operation Praying Mantis ||| On 2 November 1992 Iran filed suit with the International Court of Justice, the legal salvo that began a decade of claims and counter-claims by the United States and Iran. On 6 November 2003 the [[International Court of Justice]] ruled in favor of neither party, saying that 'the actions of the United States of America against Iranian oil platforms on 19 October 1987 (Operation Nimble Archer) and 18 April 1988 ([[Operation Praying Mantis]]) cannot be justified as measures necessary to protect the essential security interests of the United States of America.' The Court also ruled that it, '...cannot however uphold the submission of the Islamic Republic of Iran that those actions constitute a breach of the obligations of the United States of America under Article X, paragraph 1, of [the Treaty of Amity, Economic Relations, and Consular Rights Between the United States of America and Iran],'{{Which|date=November 2010}} regarding freedom of commerce between the territories of the parties, and that, accordingly, the claim of the Islamic Republic of Iran for reparation also cannot be upheld;' ||| International Court of Justice case ||| ||| +0 Operation Noble Eagle ||| Operation Enduring Freedom ||| * [[Operation Enduring Freedom]] ||| See also ||| ||| +0 Operation Noble Eagle ||| Super Bowl XL ||| The Canadian NORAD Region (CANR) flew Operation Noble Eagle (ONE) air defense protection missions in the Windsor, Ontario/Detroit, Michigan area on 5 February 2006, in support of [[Super Bowl XL]] at Ford Field. These types of missions had become more common at organized entertainment such as the Super Bowl. ||| Canadian NORAD Region ||| ||| +0 Operation Nordwind ||| Battle of the Bulge ||| On 31 December 1944, German [[Army Group G]] (''Heeresgruppe'' G)—commanded by [[Colonel General|''Generaloberst'']] (Colonel General) [[Johannes Blaskowitz]]—and [[Army Group Oberrhein (Germany)|Army Group Upper Rhine]] (''Heeresgruppe Oberrhein'')—commanded by ''[[Reichsführer-SS]]'' [[Heinrich Himmler]]—launched a major offensive against the thinly stretched, {{convert|110|km|mi}}-long front line held by the U.S. 7th Army. Operation ''Nordwind'' soon had the understrength U.S. 7th Army in dire straits. The 7th Army —at the orders of U.S. General [[Dwight D. Eisenhower]]— had sent troops, equipment, and supplies north to reinforce the American armies in the [[Ardennes]] involved in the [[Battle of the Bulge]]. ||| Offensive ||| ||| +0 Operation Nordwind ||| Colmar Pocket ||| The initial attack was conducted by three Corps of the [[1st Army (Wehrmacht)|German 1st Army]] of Army Group G, and by 9 January, the XXXIX ''Panzer'' Corps was heavily engaged as well. By 15 January at least seventeen German divisions (including units in the [[Colmar Pocket]]) from Army Group G and Army Group Upper Rhine, including the [[6th SS Mountain Division Nord|6th SS Mountain]], [[17th SS Panzergrenadier Division Götz von Berlichingen|17th SS Panzergrenadier]], [[21st Panzer Division (Wehrmacht)|21st Panzer]], and [[25th Panzergrenadier Division (Germany)|25th Panzergrenadier]] Divisions were engaged in the fighting. Another, smaller, attack was made against the French positions south of [[Strasbourg]], but it was finally stopped. ||| Offensive ||| ||| +0 Operation Northern Watch ||| 2003 invasion of Iraq ||| Low level conflict continued up until the [[2003 invasion of Iraq|invasion of Iraq]] in 2003, although the number of response incidents declined dramatically after 1999. The final [[combat air patrol]] occurred on 17 March 2003 (from the [[Incirlik Air Base]]). Six weeks later the operation concluded with an official stand down on 1 May 2003. ||| ||| ||| +0 Operation Ostra Brama ||| Tehran Conference ||| None of what happened in Wilno was disclosed to the general public in the West. Indeed, British media censored stories about these Soviet actions by decree of Minister of Information [[Brendan Bracken]]. The wartime allies of the Soviet Union, Great Britain and the United States, were not interested in revealing any news that would contradict with the general impression that the Soviet Union was a liberator of Europe from Nazi evil. Poland had already lost its eastern territories to Stalin at the [[Tehran Conference]], but none of the Polish soldiers fighting in the Battle of Wilno knew about it. ||| Combat operations ||| Epilogue ||| +0 Operation Pamphlet ||| North African Campaign ||| The operation was initiated after the British and United States governments agreed to the Australian Government's request that the 9th Division be transferred to Australia, thereby ending the [[Second Australian Imperial Force|Second Australian Imperial Force's]] role in the [[North African Campaign]]. The division had seen extensive combat in North Africa, but was needed to bolster the forces available for planned offensive operations in the Pacific. After its return to Australia, the 9th Division was retrained for [[jungle warfare]] and made an important contribution to operations conducted in New Guinea during late 1943. ||| ||| ||| +0 Operation Peninsula Strike ||| 2003 invasion of Iraq ||| '''Operation Peninsula Strike''' was a series of raids conducted by American troops from 9 to 13 June 2003 as part of [[2003 invasion of Iraq|Operation Iraqi Freedom]]. It took place on a peninsula alongside the [[Tigris River]] near [[Balad, Iraq]]. Conducted by members of [[Task Force Ironhorse]], US forces sought to eliminate [[Ba'ath]] Party members, paramilitary, and other subversive units. Specifically, US Forces were to hit five objectives simultaneously, detain the targets and screen them for intelligence. ||| ||| ||| +0 Operation Perch ||| Invasion of Normandy ||| '''Operation Perch''' was a British offensive of the [[World War II|Second World War]] which took place from {{nowrap|7–14 June 1944,}} during the [[Invasion of Normandy|Battle of Normandy]]. The operation was intended to encircle and seize the [[Nazi Germany|German]] occupied city of [[Caen]], which was an Allied D-Day objective in the early stages of the [[Operation Overlord]]. Operation Perch was to begin immediately after the British beach landings with an advance to the south-east of Caen by [[XXX Corps (United Kingdom)|XXX Corps]]. Three days after the invasion the city was still in German hands and the operation was amended. The operation was expanded to include [[I Corps (United Kingdom)|I Corps]] for a [[Pincer movement|pincer attack]] on Caen. ||| ||| ||| +0 Operation Phantom Phoenix ||| Operation Phantom Strike ||| '''Operation ''Phantom Phoenix''''' was a major nationwide offensive launched by the [[Multinational Force Iraq]] (MNF-I) on 8 January 2008 in an attempt to build on the success of the two previous corps-level operations, [[Operation Phantom Thunder]] and [[Operation Phantom Strike]] and further reduce violence and secure Iraq's population, particularly in the capital [[Baghdad]]. The offensive consisted of a number of joint Coalition and Iraqi Army operations throughout northern Iraq as well as in the southern [[Baghdad Belts]]. ||| ||| ||| +0 Operation Phantom Strike ||| Operation Phantom Phoenix ||| '''Operation ''Phantom Strike''''' was a major offensive launched by the Multi-National Corps - [[Iraq]] on 15 August 2007 in a crackdown to disrupt Al-Qaeda in Iraq (AQI) and [[Shia]] extremist operations in Iraq. It consisted of a number of simultaneous operations throughout Iraq focused on pursuing remaining AQI terrorists and [[Iran|Iranian-supported]] extremist groups. It was concluded in January 2008 and followed up with [[Operation Phantom Phoenix]]. ||| ||| ||| +0 Operation Phantom Strike ||| Operation Phantom Thunder ||| Two major combined Coalition-Iraqi Security Force offensive operations launched in early-to-mid-2007, [[Operation Law and Order]] in Baghdad and [[Operation Phantom Thunder]] in the [[Baghdad Belts|belts surrounding the capital]], reduced the effectiveness of extremist groups throughout Iraq, denied insurgents safe havens, support zones and supply lines. A number of significant AQI and Shia extremist leaders were captured or killed, and large segments of the Iraqi population liberated from AQI intimidation. ||| Background ||| ||| +0 Operation Phantom Thunder ||| Operation Phantom Strike ||| On 14 August, it was announced that the operation ended. Coalition and Iraqi security forces pushed into areas previously not under their control, and they also ejected insurgent groups from their strongholds in Northern Babil, eastern Anbar and Diyala provinces and on the southern outskirts of Baghdad. During the operation, Iraqi and Coalition forces conducted intelligence raids against al Qaeda in Iraq and the Iranian-backed cells nationwide, with a heavy emphasis on cells in Baghdad, Diyala, and central and northern Iraq. Operation Arrowhead Ripper continued for another five days until 19 August with more intense street fighting in Baquba. The operations continued into operation [[Operation Phantom Strike|Phantom Strike]]. ||| The Operation ends ||| ||| +0 Operation Planet X ||| 2003 invasion of Iraq ||| During [[2003 invasion of Iraq|Operation Iraqi Freedom]], '''Operation Planet X''' was a [[United States Army|US Army]] mechanized raid conducted on a village near [[Ad Dawr]] and [[Al Dur]], {{convert|11|mi|km}} north of [[Tikrit]] on the night of 15 May 2003 by elements of the [[U.S. 4th Infantry Division#Current structure|1st Brigade Combat Team, U.S. 4th Infantry Division]] and [[Task Force Ironhorse]] in search of [[Ba'ath]] party members and militants. ||| ||| ||| +0 Operation Plunder ||| Battle of Remagen ||| On 7 March, U.S. troops unexpectedly captured the [[Ludendorff Bridge]] across the [[Rhine]] during the [[Battle of Remagen]]. Within the next 10 days six divisions and 25,000 troops established a bridgehead on the eastern side of the Rhine. ||| Aftermath ||| Military rivalries ||| +0 Operation Plunder ||| Operation Market Garden ||| ''[[Operation Varsity]]'' started at 10:00 on 24 March, to disrupt enemy communications. Despite heavy resistance to the airdrops and afterward, the airborne troops made progress and repelled counterattacks. The hard lessons of [[Operation Market Garden]] were applied. In the afternoon, 15th (Scottish) Division linked up with both airborne divisions. ||| Battle ||| ||| +0 Operation Polyarnaya Zvezda ||| Battle of Kursk ||| The operation succeeded in recapturing the Demyansk salient but failed to encircle the German forces. The northern part of the operation failed, without gaining much ground. With the battles in the south near [[Third Battle of Kharkov|Kharkov]] and, later, [[Battle of Kursk|Kursk]] using reinforcements for both sides, the frontline near Leningrad stabilised until July 1943. ||| ||| ||| +0 Operation Polyarnaya Zvezda ||| Battle of Stalingrad ||| The relative failure of the operation compared to successes at the [[Battle of Stalingrad]] or [[Operation Bagration]] resulted in silence on the topic after the war. Neither Zhukov's or [[Meretskov]]'s memoirs make any mention of the operation or even of any specific fighting in the area after 18 January, the day the blockade of Leningrad finally ended. Zhukov's memoirs include only a short mention of the recapture of the Demyansk salient without any word on his role on the operation and then quickly focuses upon the [[Battle of Kursk]]. ||| Battle ||| ||| +0 Operation Polyarnaya Zvezda ||| Operation Iskra ||| '''Operation Polyarnaya Zvezda''' ([[Russian language|Russian]]: Операция Полярная звезда, ''Operatsia Polyarnaya Zvezda''; English translation: Operation Polar Star) was an operation conducted by the Soviet [[Leningrad Front|Leningrad]], [[Volkhov Front|Volkhov]] and [[Northwestern Front]]s in February and March 1943. The operation was planned by [[Georgy Zhukov]] in the wake of the successful [[Operation Iskra]] and envisaged two separate encirclements. One was to be carried out in the north by the Leningrad and Volkhov Fronts near Mga and one was planned to be carried out further to the south, by the Northwestern Front, near Demyansk. ||| ||| ||| +0 Operation Polyarnaya Zvezda ||| Third Battle of Kharkov ||| The operation succeeded in recapturing the Demyansk salient but failed to encircle the German forces. The northern part of the operation failed, without gaining much ground. With the battles in the south near [[Third Battle of Kharkov|Kharkov]] and, later, [[Battle of Kursk|Kursk]] using reinforcements for both sides, the frontline near Leningrad stabilised until July 1943. ||| ||| ||| +0 Operation Praying Mantis ||| Battle of Chumonchin Chan ||| This battle was the largest of the five major U.S. surface engagements since the [[Second World War]], which also include the [[Battle of Chumonchin Chan]] during the [[Korean War]], the [[Gulf of Tonkin incident]] and the [[Battle of Dong Hoi]] during the [[Vietnam War]], and the [[Action in the Gulf of Sidra (1986)|Action in the Gulf of Sidra]] in 1986. It also marked the [[History of the United States Navy|U.S. Navy]]'s first exchange of [[anti-ship missile]]s by opposing ships. ||| ||| ||| +0 Operation Python ||| Operation Trident (1971) ||| '''Operation Python''', a follow-up to [[Operation Trident (Indo-Pakistani War)|Operation Trident]], was a code name of a naval attack launched on West Pakistan's port city of [[Karachi]] by the [[Indian Navy]] during the [[Indo-Pakistani War of 1971]]. After the first attack during [[Operation Trident (1971)|Operation Trident]] on Karachi port, Pakistan stepped up aerial surveillance of its coast and the presence of large Indian Navy ships gave the impression that another attack was being planned. ||| ||| ||| +0 Operation Queen ||| Battle of Aachen ||| In the north in Belgium, the Allies were still involved in the [[Battle of the Scheldt]], while in the south in France the [[Lorraine Campaign]] was still ongoing. In the center, the [[Battle of Aachen]] was fought from 2–21 October at the German border. The heavy German resistance upset Allied plans for a fast resumption of the rapid advance. As preparation for Operation ''Queen'', a preliminary offensive into the [[Battle of Hürtgen Forest|Hürtgen Forest]] had to be carried out, to secure the flanks against a possible German counterattack out of the forest. The goal was to clear a pathway to the important road junction at [[Düren]], to gain a respectable starting position for Queen. The 9th Infantry Division was already engaged in the forest since September, so only moderate German resistance was expected. On 2 November, three days before the anticipated start of Operation ''Queen'', the offensive against the town of Schmidt was launched by the 28th Division against the German [[275th Infantry Division (Wehrmacht)|275th Division]]. The town was captured, but the Germans reacted swiftly by reallocating forces of the [[89th Infantry Division (Wehrmacht)|89th Infantry Division]] and mobile reserves from the [[116th Panzer Division]], which drove the Allies out of the town, transforming the battle into a bloody stalemate. ||| Background ||| First thrust into the Hürtgen Forest ||| +0 Operation Queen ||| Battle of the Bulge ||| The offensive commenced on 16 November 1944 with one of the heaviest Allied tactical bombings of the war. However, Allied advance was unexpectedly slow, against heavy German resistance, especially in the [[Hürtgen Forest]] through which the main thrust of the offensive was carried out. By mid-December the Allies finally reached the Rur and tried to capture its important dams, when the Germans launched their own offensive dubbed ''Wacht am Rhein''. The ensuing [[Battle of the Bulge]] led to the immediate cessation of the Allied offensive efforts into Germany until February 1945. ||| ||| ||| +0 Operation Queen ||| Battle of the Scheldt ||| In the north in Belgium, the Allies were still involved in the [[Battle of the Scheldt]], while in the south in France the [[Lorraine Campaign]] was still ongoing. In the center, the [[Battle of Aachen]] was fought from 2–21 October at the German border. The heavy German resistance upset Allied plans for a fast resumption of the rapid advance. As preparation for Operation ''Queen'', a preliminary offensive into the [[Battle of Hürtgen Forest|Hürtgen Forest]] had to be carried out, to secure the flanks against a possible German counterattack out of the forest. The goal was to clear a pathway to the important road junction at [[Düren]], to gain a respectable starting position for Queen. The 9th Infantry Division was already engaged in the forest since September, so only moderate German resistance was expected. On 2 November, three days before the anticipated start of Operation ''Queen'', the offensive against the town of Schmidt was launched by the 28th Division against the German [[275th Infantry Division (Wehrmacht)|275th Division]]. The town was captured, but the Germans reacted swiftly by reallocating forces of the [[89th Infantry Division (Wehrmacht)|89th Infantry Division]] and mobile reserves from the [[116th Panzer Division]], which drove the Allies out of the town, transforming the battle into a bloody stalemate. ||| Background ||| First thrust into the Hürtgen Forest ||| +0 Operation Queen ||| Western Front (World War II) ||| '''Operation ''Queen''''' was an American operation during [[World War II]] at the [[Western Front (World War II)|Western Front]] at the German [[Siegfried Line]]. ||| ||| ||| +0 Operation Red Wings ||| Operation Enduring Freedom ||| The [[3rd Battalion 3rd Marines|3rd Battalion of the 3rd Marine Regiment]] (3/3), which deployed to [[Train Advise Assist Command - East|Regional Command East]] (RC East) (which included the Kunar Province) in late 2004 to conduct stability and counterinsurgency operations in support of [[Operation Enduring Freedom]], identified a number of operational barriers due to Special Operations Command doctrine for the battalion's counterinsurgency work in the area. ||| Background and development ||| Preceding operations and model ||| +0 Operation Renntier ||| Operation Barbarossa ||| The operation was eventually carried out as part of [[Operation Barbarossa]], the German attack on the Soviet Union. The operation commenced on 22 June 1941, and proceeded without any incidents. The [[2nd Mountain Division (Wehrmacht)|German 2nd Mountain Division]] occupied the area around [[Liinakhamari]] and the [[3rd Mountain Division (Wehrmacht)|German 3rd Mountain Division]] occupied [[Luostari]]. ||| ||| ||| +0 Operation Rimau ||| Operation Jaywick ||| '''Operation Rimau''' was an attack on [[Empire of Japan|Japanese]] shipping in Singapore Harbour, carried out by an [[Allies of World War II|Allied]] [[commando]] unit [[Z Special Unit]], during [[World War II]] using Australian built MKIII [[folboat]]s. It was a follow-up to the successful ''[[Operation Jaywick]]'', which had taken place in 1943, and ''Rimau'', a shortened version of the word Harimau (which is [[Malay language|Malay]] for tiger). It was again led by Lieutenant Colonel [[Ivan Lyon]] of the Gordon Highlanders. ||| ||| ||| +0 Operation River Falcon ||| Iraq War ||| '''Operation River Falcon''' was a military operation in the [[Iraq War]]. From 25–27 July 2006, elements of the [[United States Army]] 2nd Brigade Combat Team, 4th Infantry Division (including elements of the 2nd Battalion, 8th Infantry Regiment, and the 1st Battalion, 10th Cavalry Regiment) conducted Operation River Falcon in and around the town of [[Sayifiyeh]] in [[Iraq]]. The operation was aimed at denying terrorists the use of the town as a safe haven, disrupting insurgent attacks on Coalition and [[Iraqi Security Forces]], and on collecting and destroying insurgent munitions. {{cite news |url=http://www.globalsecurity.org/military/ops/oif-river-falcon.htm |title=Operation River Falcon |publisher=GlobalSecurity.org ||| ||| ||| +0 Operation Rolling Thunder ||| Operation Flaming Dart ||| For a time, no overt action was taken, and the plans continued to evolve. A further refinement of the plan was developed by [[William Bundy|William]] and [[McGeorge Bundy]] on 29 November 1964, with a more moderate target list, which the Joint Chiefs opposed. No action was taken while these, and other, plans were considered. But matters came to a head with the [[attack on Camp Holloway]] on 7 February 1965, which demanded immediate action, and resulted in a reprisal raid known as [[Operation Flaming Dart]]. A sapper raid against an American enlisted men's billet at Qui Nhon on the 10th ||| Gradually escalating action ||| Implementation ||| +0 Operation Rolling Thunder ||| Operation Pierce Arrow ||| In August 1964, as a result of the [[Gulf of Tonkin Incident]], in which U.S. naval vessels claimed to have been attacked by North Vietnamese patrol boats, President Johnson ordered retaliatory air strikes ([[Operation Pierce Arrow]]) launched against the north.{{efn|See Edwin E. Moise, ''Tonkin Gulf''.}} This did not, however, satisfy the military chiefs, who demanded a wider and more aggressive campaign. ||| Gradually escalating action ||| Background ||| +0 Operation Rolling Thunder ||| World War II ||| The operation became the most intense air/ground battle waged during the Cold War period; indeed, it was the most difficult such campaign fought by the U.S. Air Force since the aerial bombardment of Germany during [[World War II]]. Supported by communist allies, [[North Vietnam]] fielded a potent mixture of sophisticated air-to-air and ground-to-air weapons that created one of the most effective air defenses ever faced by American military aviators. ||| ||| ||| +0 Operation Samwest ||| Operation Cooney ||| * [[Operation Cooney]] ||| See also ||| ||| +0 Operation Sana ||| Operation Deliberate Force ||| The operation commenced during a [[NATO]] bombing campaign against the VRS, codenamed [[Operation Deliberate Force]], which targeted Bosnian Serb air defences, artillery and storage facilities initially in the area of [[Sarajevo]], but also elsewhere in the country. Operation Sana, alongside concurrent HV and HVO offensives, sparked debate among military analysts as to whether the ground assaults or NATO's airstrikes were more responsible for ending the Bosnian War. Also in question was to what extent the advances of the ARBiH, HVO and HV were assisted by the airstrikes, and conversely, to what extent they hampered the VRS. ||| ||| ||| +0 Operation Sana ||| Operation Southern Move ||| The HV and HVO launched [[Operation Southern Move]] in response, removing the VRS pressure from Ključ and allowing the 5th Corps, reinforced by the [[7th Corps of the Army of the Republic of Bosnia and Herzegovina|7th Corps]], to resume its advance and capture Sanski Most on 12 October, by which time a comprehensive ceasefire was to come into effect throughout the country. Combat continued for another eight days without significant changes to the frontlines. Fighting did not resume, and the war ended the following month following negotiation and acceptance of the [[Dayton Agreement]]. ||| ||| ||| +0 Operation Sayeed ||| Operation Steel Curtain ||| '''Operation Sayeed''' was a series of operations conducted in western [[Anbar Province]] by the [[United States Marine Corps]] in 2005. It was an umbrella operation, consisting of at least 11 named operations between July 2005 to December 2005. The purpose was to drive [[Al Qaeda in Iraq]] forces from the Western Euphrates River Valley. Some parts of Operation Sayeed were [[Operation Steel Curtain]] and [[Operation Iron Fist (Iraq)|Operation Iron Fist]]. ||| ||| ||| +0 Operation Serval ||| Tuareg rebellion (2012) ||| In January 2012, following an influx of weapons that occurred after the [[2011 Libyan Civil War|Libyan Civil War]], [[Tuareg people|Tuareg]] tribesmen of the [[National Movement for the Liberation of Azawad]] (MNLA) began a [[Tuareg rebellion (2012)|rebellion]] against Mali's central government. ||| Background ||| ||| +0 Operation Shed Light ||| Korean War ||| The United States Air Force had largely redirected its efforts to the matter of strategic deterrence in the period between the [[Korean War]] and deployment to southeast Asia. As a result, it had few serious capabilities for the plethora of conventional missions that became readily apparent with the expanding US commitment to southeast Asia. ||| Origins ||| ||| +0 Operation Shed Light ||| Operation Commando Hunt ||| In the end the Tropic Moon III proved to be a capable system, both with conventional ordnance and laser guided weapons, day and night. However, the advent of the side-firing gunship threatened the system. The B-57G conducted its first combat missions in October 1970 during [[Operation Commando Hunt|Operation Commando Hunt V]]. ||| Tropic Moon III ||| ||| +0 Operation Shed Light ||| World War II ||| The [[United States Air Force]], focused toward [[nuclear weapon]]s and delivery of such munitions against static strategic targets had spent little effort in expanding its tactical capabilities since the end of the [[World War II]]. Operation Shed Light sought to rectify this by bringing together improved tactics and technology. The programs were subsequently centered on improved communication and navigation aids for all-weather and night flying, sensor equipment for seeing through clouds, foliage, and darkness, improved equipment and methods for target marking and battlefield illumination, and aircraft and tactics to utilize these developments. In the end, few of the programs would yield applicable results and most of the aircraft developed under its umbrella would largely fall into obscurity. The most applicable developments were those that could be mainstreamed such as the work done on navigation and communication and sensor equipment. ||| ||| ||| +0 Operation Sinai (2012) ||| Yom Kippur War ||| On 20 August, Defense Minister General Abdel Fattah al-Sisi made his first visit to the Sinai since the 5 August attack, and finalized plans to intensify the crackdown. These plans included using aircraft and tanks in the Sinai for the first time since the 1973 [[Yom Kippur War]]. ||| August 2012 ||| ||| +0 Operation Slapstick ||| Allied invasion of Sicily ||| In May 1943, the [[Axis powers]] of [[Nazi Germany]] and [[Kingdom of Italy (1861–1946)|Fascist Italy]] were defeated in the [[North African Campaign]]. Two months later, the [[Allies of World War II|Allied powers]] of [[Great Britain]] and the [[United States]], successfully launched their [[Allied invasion of Sicily|invasion of Sicily]], code-named Operation Husky. The island being completely occupied by the end of August, the Allies next turned their attention to the [[Allied invasion of Italy|invasion of Italy]]. ||| Background ||| ||| +0 Operation Slapstick ||| British airborne operations in North Africa ||| Although it had been formed in October 1941, the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]], commanded by [[Major-general (United Kingdom)|Major-General]] [[George F. Hopkinson|George Frederick Hopkinson]], had never before fought as a complete [[division (military)|division]]. The only units with any combat experience were the [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]], which had fought with distinction as an independent [[brigade]] in [[British airborne operations in North Africa|North Africa]] and in [[Operation Fustian]] during the [[Allied invasion of Sicily]], ||| Prelude ||| British forces ||| +0 Operation Slapstick ||| North African Campaign ||| In May 1943, the [[Axis powers]] of [[Nazi Germany]] and [[Kingdom of Italy (1861–1946)|Fascist Italy]] were defeated in the [[North African Campaign]]. Two months later, the [[Allies of World War II|Allied powers]] of [[Great Britain]] and the [[United States]], successfully launched their [[Allied invasion of Sicily|invasion of Sicily]], code-named Operation Husky. The island being completely occupied by the end of August, the Allies next turned their attention to the [[Allied invasion of Italy|invasion of Italy]]. ||| Background ||| ||| +0 Operation Slapstick ||| Operation Baytown ||| Planned at short notice, the mission followed an offer by the Italian government to open the ports of Taranto and [[port of Brindisi|Brindisi]] on the [[Apulia|heel of Italy]] to the [[Allies of World War II|Allies]]. The airborne division was selected to undertake the mission, but at the time they were located in North Africa. A shortage of transport aircraft meant the division could not land in their traditional way by parachute and glider, and all the [[landing craft]] in the area were already allocated to the other landings: [[Allied invasion of Italy#Salerno landings|Operation Avalanche]] at [[Salerno]] on the western coast, and [[Operation Baytown]] at [[Calabria]]. Instead, the division had to be transported across the [[Mediterranean Sea|Mediterranean]] by ships of the [[Royal Navy]]. The landing was unopposed and the airborne division successfully captured the ports of Taranto, and later Brindisi on the [[Adriatic sea|Adriatic]] coast in working order. ||| ||| ||| +0 Operation Slapstick ||| Operation Doomsday ||| The British 1st Airborne Division only fought in one other battle during the war. Almost a year to the day, on 17 September 1944, they took part in [[Operation Market Garden]], the airborne assault crossing of the [[River Rhine]] in the Netherlands. The 1st Airborne Division was also flown into Norway in May 1945 to accept the surrender of German forces and occupy formerly German held positions in [[Operation Doomsday]]. ||| Aftermath ||| ||| +0 Operation Slapstick ||| Operation Fustian ||| Although it had been formed in October 1941, the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]], commanded by [[Major-general (United Kingdom)|Major-General]] [[George F. Hopkinson|George Frederick Hopkinson]], had never before fought as a complete [[division (military)|division]]. The only units with any combat experience were the [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]], which had fought with distinction as an independent [[brigade]] in [[British airborne operations in North Africa|North Africa]] and in [[Operation Fustian]] during the [[Allied invasion of Sicily]], ||| Prelude ||| British forces ||| +0 Operation Sonnenblume ||| Operation Compass ||| '''Operation ''Sonnenblume''''' (''Unternehmen Sonnenblume''/Operation Sunflower) was the name given to the dispatch of German troops to [[North African Campaign|North Africa]] in February 1941, during the [[World War II|Second World War]]. German troops reinforced the remaining Italian forces in [[Libya]], after the Italian [[Tenth Army (Italy)|10th Army]] was destroyed by British attacks during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941).}} The first units departed Naples for Africa and arrived on 11 February. On 14 February, the first units of the [[21st Panzer Division (Wehrmacht)|5th Light ''Afrika'' Division]] (later renamed the 21st Panzer Division), {{lang|de|''Aufklärungsbataillon''}} 3 (Reconnaissance Battalion 3) and {{lang|de|''Panzerjägerabteilung''}} 39 (Tankhunter Detachment 39) arrived in [[Tripoli]], Libya and were sent immediately to the front line at [[Sirte]]. ||| ||| ||| +0 Operation Southeast Croatia ||| Operation Trio ||| The failure of the Axis forces to decisively engage the Partisans during these operations necessitated a further major offensive, [[Operation Trio]], in the area immediately south of where Operations Southeast Croatia and Ozren had taken place. ||| ||| ||| +0 Operation Southeast Croatia ||| Operation Uzice ||| The insurgents in the area of operations included some groups led by [[League of Communists of Yugoslavia|communist]] Partisans and some led by [[Serb]]–[[Chauvinism|chauvinist]] [[Chetniks]]. Although the Partisans and Chetniks had already irrevocably split in the [[Territory of the Military Commander in Serbia]] following [[Operation Uzice]], this had not yet happened in eastern Bosnia and in some areas they were still cooperating. As a result, differentiating between the [[wikt:rank and file|rank and file]] of the two groups was difficult, as even the communist-led insurgent groups consisted mainly of Serb peasants who had little understanding of the political aims of their leaders. While there were 20,000 Chetnik-led insurgents located within the area of operations, they offered no resistance to the German–NDH forces and many withdrew east across the [[Drina]] river to avoid being engaged. This contributed to the complete unravelling of Chetnik–Partisan cooperation in eastern Bosnia. The Partisan main force was able to evade the Germans, infiltrate through the Italian cordon to the south and establish itself around [[Foča]]. ||| ||| ||| +0 Operation Southern Move ||| Operation Sana ||| '''Operation Southern Move''' ({{lang-hr|Operacija južni potez}}) was the final [[Croatian Army]] (''Hrvatska vojska'' – HV) and [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) offensive of the [[Bosnian War]]. It took place in western [[Bosnia and Herzegovina]] on 8–11 October 1995. Its goal was to help the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH) whose positions around the town of [[Ključ, Una-Sana Canton|Ključ]], captured by them during [[Operation Sana]], were endangered by a counteroffensive by the [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS). The objectives of Operation Southern Move included the capture of the town of [[Mrkonjić Grad]] and positions on the [[Manjača]] Mountain which would allow the HV and the HVO to directly threaten [[Banja Luka]], the largest [[Bosnian Serb]] city. Finally, the offensive was also aimed at capturing the [[Bočac Hydroelectric Power Station]], the last significant source of electricity under VRS control in western Bosnia and Herzegovina. The combined HV and HVO forces were under the overall command of HV [[Major General]] [[Ante Gotovina]]. ||| ||| ||| +0 Operation Southern Watch ||| Iraq War ||| On 27 February 2003, it was announced that the US would be allowed to launch warplanes from its bases inside Saudi Arabia, to support the [[Iraq War]] – and would in turn begin a phased withdrawal from the country. ||| Withdrawal ||| ||| +0 Operation Spring ||| Invasion of Normandy ||| '''Operation Spring''' was an offensive operation conducted by [[II Canadian Corps]] during the [[Invasion of Normandy|Normandy campaign]]. The plan was intended to create pressure on the German forces operating on the British and Canadian front simultaneously to American offensive operations in their sector known as [[Operation Cobra]], an attempt to break out from the Normandy lodgement. Specifically, Operation Spring was intended to capture Verrières Ridge and the towns on the south slope of the ridge.{{sfn|Jarymowycz|2001|pp=75–87}} However, strong German defenses on the ridge, as well as strict adherence to a defensive doctrine of counter-attacks, stalled the offensive on the first day, inflicting heavy casualties on the attacking forces, while preventing a breakout in the Anglo-Canadian sector. ||| ||| ||| +0 Operation Spring ||| Operation Totalize ||| [[Operation Cobra]] began on the same day by coincidence and the German high command was unsure which was the main operation. Operation Spring was taken to be the main effort for about two days, because of the importance they gave to holding ground south of Caen, before realising that Cobra was the principal effort and transferred troops westwards.{{sfn|Buckley|2014|pp=149–150}} [[Operation Totalize]] and [[Operation Tractable]] were launched in August and captured more ground against less opposition.{{sfn|Zuehlke|2001|p=}} The Official History of the Canadian Army, refers to Spring as a 'holding attack' in that it was launched with offensive objectives but also firmly with the intent to delay the redeployment of forces westward. ||| Aftermath ||| Analysis ||| +0 Operation Spring Awakening ||| Western Front (World War II) ||| Operation Spring Awakening involved many German units withdrawn from the failed [[Battle of the Bulge|Ardennes Offensive]] on the [[Western Front (World War II)|Western Front]] including the [[Sixth SS Panzer Army]]. ||| ||| ||| +0 Operation Stampede 3 ||| Operation Marne Torch ||| Operation Stampede 3 was a sub-operation of [[Operation Marne Torch]] and [[Operation Phantom Thunder]]. ||| Background ||| ||| +0 Operation Stampede 3 ||| Operation Phantom Thunder ||| Operation Stampede 3 was a sub-operation of [[Operation Marne Torch]] and [[Operation Phantom Thunder]]. ||| Background ||| ||| +0 Operation Steel Curtain ||| Operation Sayeed ||| '''Operation ''Steel Curtain''''' (Arabic: الحجاب الفولاذي Al Hejab Elfulathi) was a [[military]] endeavor executed by [[Multinational Force - Iraq|coalition]] forces in early November 2005 to reduce the flow of foreign [[Insurgency|insurgent]]s crossing the [[border]] and joining the [[Iraqi insurgency (Iraq War)|Iraqi insurgency]]. The operation was important in that it was the first large scale deployment of the [[New Iraqi Army]]. This offensive was part of the larger [[Operation Sayeed]] (Hunter), designed to prevent [[al Qaeda]] in Iraq from operating in the [[Euphrates River]] Valley and throughout [[Al Anbar]] and to establish a permanent Iraqi Army presence in the [[Al-Qa'im (town)|Al Qa'im]] region. ||| ||| ||| +0 Operation Steel Tiger ||| Operation Barrel Roll ||| Bombing of the trail system had begun on 14 December 1964 with the advent of [[Operation Barrel Roll]]. Due to increasing U.S. intelligence of the build-up of regimental-size PAVN units operating in South Vietnam, the increased American military presence in that country, and the initiation of [[Operation Rolling Thunder]], the systematic bombing of the DRV, American planners in Washington and [[Saigon]] decided that the bombing in southeastern Laos should be stepped up. ||| ||| ||| +0 Operation Steel Tiger ||| Operation Commando Hunt ||| The operation was initiated by the 2nd Air Division on 3 April 1965, continued under the direction of the Seventh Air Force when that headquarters was created on 1 April 1966, and was concluded on 11 November 1968 with the initiation of [[Operation Commando Hunt]]. The purpose of ''Steel Tiger'' was to impede the flow of men and materiel on the enemy logistical routes collectively known as the [[Ho Chi Minh Trail]] (the Truong Son Strategic Supply Route to the North Vietnamese). ||| ||| ||| +0 Operation Steel Tiger ||| Operation Rolling Thunder ||| Bombing of the trail system had begun on 14 December 1964 with the advent of [[Operation Barrel Roll]]. Due to increasing U.S. intelligence of the build-up of regimental-size PAVN units operating in South Vietnam, the increased American military presence in that country, and the initiation of [[Operation Rolling Thunder]], the systematic bombing of the DRV, American planners in Washington and [[Saigon]] decided that the bombing in southeastern Laos should be stepped up. ||| ||| ||| +0 Operation Stone Age ||| Operation Pedestal ||| British possession of Malta had been sustained through 1942, despite heavy naval losses and in November 1942 the rewards were realised. The ''[[Operation Pedestal|Pedestal]]'' convoy survivors, including the tanker {{SS|Ohio||6}}, delivered sufficient stores and military [[materiel]] to reinvigorate British submarine and aircraft activity from the island's bases. In the month following, [[Erwin Rommel]]'s armies were denied {{convert|300000|ST|t|lk=on}} of supplies, contributing to the dire lack of fuel that so limited their movement at [[Battle of Alam Halfa|Alam Halfa]] and [[Second Battle of El Alamein|El Alamein]]. ||| Background ||| ||| +0 Operation Storm ||| Operation Mistral 2 ||| Operation Storm was a strategic victory in the Bosnian War, effectively ending the [[siege of Bihać]] and placing the HV, [[Croatian Defence Council]] (HVO) and the ARBiH in a position to change the military balance of power in [[Bosnia and Herzegovina]] through the subsequent [[Operation Mistral 2]]. The operation built on HV and HVO advances made during [[Operation Summer '95]], when strategic positions allowing the rapid capture of the RSK capital [[Knin]] were gained, and on the continued arming and training of the HV since the beginning of the Croatian War of Independence, when the RSK was created during the Serb [[Log revolution]] and [[Yugoslav People's Army]] (JNA) intervention. The operation itself followed an unsuccessful [[United Nations]] (UN) peacekeeping mission and diplomatic efforts to settle the conflict. ||| ||| ||| +0 Operation Storm ||| Operation Spider ||| On 17 July, the ARSK and the VRS started a fresh effort to capture Bihać by expanding on gains made during [[Operation Spider]]. The move provided the HV with a chance to extend their territorial gains from Operation Winter '94 by advancing from the Livno valley. On 22 July, Tuđman and Bosnian President [[Alija Izetbegović]] signed the [[Split Agreement]] for [[Mutual Defense Treaty|mutual defence]], permitting the large-scale deployment of the HV in Bosnia and Herzegovina. The HV and HVO responded quickly through [[Operation Summer '95]] ({{lang-hr|Ljeto '95}}), capturing [[Bosansko Grahovo]] and [[Glamoč]] on 28-29 July. ||| Prelude ||| ||| +0 Operation Storm ||| World War II ||| '''Operation Storm''' ({{lang-hr|Operacija Oluja}}) was the last major battle of the [[Croatian War of Independence]] and a major decisive factor in the outcome of the [[Bosnian War]]. It was a [[decisive victory]] for the [[Croatian Army]] (HV), which attacked across a {{convert|630|km|adj=on}} front against the [[Republic of Serbian Krajina]] (RSK), and a [[strategic victory]] for the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH). The HV was supported by the [[Croatian special police order of battle in 1991–95|Croatian special police]] advancing from the [[Velebit]] Mountain, and the ARBiH located in the [[Bihać pocket]], in the [[Army of the Republic of Serb Krajina]]'s (ARSK) rear. The battle, launched to restore [[Croatia]]n control of {{convert|10400|km2|abbr=off}} of territory, representing 18.4% of the territory it claimed, and Bosnian control of [[Autonomous Province of Western Bosnia|Western Bosnia]], was the largest European land battle since the [[World War II|Second World War]]. Operation Storm commenced at dawn on 4 August 1995 and was declared complete on the evening of 7 August, despite significant mopping-up operations against pockets of resistance lasting until 14 August. ||| ||| ||| +0 Operation Strike of the Sword ||| Second Battle of Fallujah ||| '''Operation ''Strike of the Sword''''' or '''Operation ''Khanjar''''' was a US-led offensive in [[Helmand]] province in southern [[Afghanistan]]. About 4,000 [[U.S. Marines|Marines]] from the [[2nd Marine Expeditionary Brigade]] as well as 650 [[Afghan National Army|Afghan troops]] were involved, supported by [[International Security Assistance Force|NATO]] planes. The operation began when units moved into the [[Helmand River]] valley in the early hours of July 2, 2009. This operation was the largest Marine offensive since the [[Second Battle of Fallujah|Battle of Fallujah]] in 2004. ||| ||| ||| +0 Operation Summer '95 ||| Operation Spider ||| On 17 July, the RSK and the VRS militaries started Operation Sword-95, a push to capture Bihać by expanding on gains made during [[Operation Spider]]. The move provided the HV with a chance to extend their territorial gains from Operation Winter '94 by advancing from the Livno Valley. On 22 July, President of Croatia [[Franjo Tuđman]] and President of Bosnia and Herzegovina [[Alija Izetbegović]] signed the [[Split Agreement]] on mutual defence, permitting the large-scale deployment of the HV in Bosnia and Herzegovina. ||| Prelude ||| ||| +0 Operation Summer '95 ||| Operation Storm ||| '''Operation Summer '95''' ([[Bosnian language|Bosnian]], {{lang-hr|Operacija Ljeto '95}}) was a joint military offensive of the [[Croatian Army]] (HV) and the [[Croatian Defence Council]] (HVO) that took place north-west of the [[Livanjsko field]], and around [[Bosansko Grahovo]] and [[Glamoč]] in western [[Bosnia and Herzegovina]]. The operation was carried out between 25 and 29 July 1995, during the [[Croatian War of Independence]] and the [[Bosnian War]]. The attacking force of 8,500 troops commanded by HV's Lieutenant General [[Ante Gotovina]] initially encountered strong resistance from the 5,500-strong [[Army of Republika Srpska]] (VRS) 2nd Krajina Corps. The HV/HVO pushed the VRS back, capturing about {{convert|1600|km2|abbr=off}} of territory and consequently intercepting the [[Knin]]{{mdash}}[[Drvar]] road{{mdash}}a critical supply route of the self-declared [[Republic of Serbian Krajina]] (RSK). The operation failed to achieve its declared primary goal of drawing VRS units away from the [[Siege of Bihać|besieged city of Bihać]], but it placed the HV in position to capture the RSK's capital Knin in [[Operation Storm]] days later. ||| ||| ||| +0 Operation Swath-10 ||| 1991 Yugoslav campaign in Croatia ||| During the [[1991 Yugoslav campaign in Croatia]], the 5th ([[Banja Luka]]) Corps of the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'', or JNA) was tasked with advancing north through western [[Slavonia]] from [[Okučani]] to [[Daruvar]] and [[Virovitica]] and with a secondary drive from Okučani towards [[Kutina]]. ||| Background ||| ||| +0 Operation Tail-Wind ||| Capture of Owerri ||| On May 30, 1967, Odumegwu Ojukwu declared the Republic of Biafra independent from Nigeria. For a month Nigeria claimed that Biafra was a part of Nigeria and it would stay so. It was not until July 6, 1967, when Nigeria invaded Biafra at the [[Battle of Nsukka]]. Biafra invaded Nigeria in August 1967 but were intercepted by Yakubu Gowon on August 21, 1967, and were repelled back at the [[Battle of Ore]]. Biafra kept a stiff resistance until their capital was taken in October 1967 at the [[Fall of Enugu]]. The Biafran capital was moved to [[Umuahia]] where it stayed for another 2 years. Nigeria captured the Biafran stronghold of [[Port Harcourt]] on May 19, 1968, at the [[Capture of Port Harcourt]] by Nigerian general [[Benjamin Adekunle]]. Adekunle tried to take the Biafran capital of Umuahia and the 2 other Biafran strongholds of [[Owerri]] and [[Aba, Abia|Aba]] during [[Operation OAU]]. During Operation OAU Adekunle gained control of Owerri and Aba but lost 21,500 men during the battles of OAU. In late 1968 Biafra was given $1,044,000 in donations by a British radio station. The Biafran government was able to deduct money from the donation to buy military supplies for their army. In early 1968 the Biafran army captured the city of Owerri at the [[Capture of Owerri]]. The Capture of Owerri gave the Biafrans hope for their cause. For months Nigeria and Biafra were in a stalemate. It was not until December 23, 1969, when Nigeria invaded the Biafran capital of Umuahia. On Christmas Eve 1969 Umuahia fell to Nigerian troops. The Biafran capital was then moved to Owerri. ||| Background ||| ||| +0 Operation Tannenberg ||| Invasion of Poland ||| '''Operation Tannenberg''' ({{lang-de|Unternehmen Tannenberg}}) was a codename for one of the extermination actions by [[Nazi Germany]] that was directed at the [[Poland|Polish]] nationals during the opening stages of [[World War II]] in Europe; part of the ''[[Generalplan Ost]]'' for the German colonization of the East. The shootings were conducted with the use of a proscription lists (''[[Special Prosecution Book-Poland|Sonderfahndungsbuch Polen]]''), compiled by the [[Gestapo]] in the span of two years [[Invasion of Poland|before the 1939 attack]]. ||| ||| ||| +0 Operation Thunderbolt (1951) ||| First and Second Battles of Wonju ||| }} At this time the Chinese forces in the central sector were still in possession of [[First and Second Battles of Wonju|Wonju]] and a full assault could not be made until this sector was under US control. ''Thunderbolt'' itself began on the 25 January, when troops of [[I Corps (United States)|I]] and [[IX Corps (United States)|IX Corps]] advanced from the western sector of the front northwards towards [[Seoul]]. ||| Operation ||| ||| +0 Operation Thunderbolt (1951) ||| Operation Killer ||| ''Thunderbolt'' was followed almost immediately by the second UN counter-offensive, ''[[Operation Killer]]''. ||| Impact and aftermath ||| ||| +0 Operation Thunderbolt (1951) ||| Third Battle of Seoul ||| It represented the first offensive under the new commanding officer of the [[8th US Army]], [[Matthew Ridgway|General Matthew Ridgway]]. It started less than three weeks after the Chinese [[Third Battle of Seoul|Third Phase Campaign]] had forced UN forces south of Seoul. ||| ||| ||| +0 Operation Thunderbolt (1951) ||| Vietnam War ||| Chinese forces were later held off at the [[Battle of Chipyong-ni]] and the [[Third Battle of Wonju]]. The concentration of firepower and reliance on [[close air support]] in the face of large numbers of [[light infantry]] employed here would later become an influence on US doctrine during [[Vietnam War|Vietnam]]. ||| Impact and aftermath ||| ||| +0 Operation Tidal Wave ||| Strategic bombing during World War II ||| '''Operation Tidal Wave''' was an air attack by bombers of the [[United States Army Air Forces]] (USAAF) based in Libya and Southern Italy on nine [[Oil refinery|oil refineries]] around [[Ploiești]], [[Romania]] on 1 August 1943, during [[World War II]]. It was a [[Strategic bombing during World War II|strategic bombing mission]] and part of the '[[Oil Campaign of World War II|oil campaign]]' to deny [[petroleum]]-based fuel to the [[Axis powers|Axis]]. ||| ||| ||| +0 Operation Tiderace ||| Atomic bombings of Hiroshima and Nagasaki ||| Operation Tiderace was planned soon after the [[Atomic bombings of Hiroshima and Nagasaki]]. Emergency planning was put in preparation for the rapid occupation of Singapore at an early date should Japan agree to accept the terms of the [[Potsdam Declaration]] of 26 July. ||| Background ||| ||| +0 Operation Tiderace ||| Communist Insurgency War ||| Nonetheless, some stayed hidden in the jungles with the communists, and when [[Chin Peng]] and remnants of the [[Malayan Communist Party]] [[Communist Insurgency War|ended their struggle in 1989]], two [[Japanese holdout|former Japanese soldiers]] emerged from the jungle with the communists and surrendered. ||| Japanese reaction to the surrender ||| ||| +0 Operation Tiderace ||| Operation Downfall ||| With the [[Soviet invasion of Manchuria]] and an American planned [[Operation Downfall|invasion of Japan]], South East Asia Command were also drawing up plans to invade Malaya, codenamed Operation Zipper. With over 100,000 Allied infantry, ||| Background ||| ||| +0 Operation Tiderace ||| Operation Zipper ||| '''Operation Tiderace''' was the codename of the British plan to retake [[Singapore]] in 1945. The liberation force was led by [[Lord Louis Mountbatten]], [[Supreme Allied Commander]] of [[South East Asia Command]]. Tiderace was initiated in coordination with [[Operation Zipper]], which involved the liberation of Malaya. ||| ||| ||| +0 Operation Tiger (1992) ||| Battle of Kupres (1992) ||| In April 1992, the JNA renewed its offensive operations against the HV and the HVO near [[Kupres]] and [[Stolac]] in western and southern Herzegovina. The JNA's 2nd Military District, commanded by Colonel General [[Milutin Kukanjac]], deployed elements of the 5th [[Banja Luka]] Corps and the 9th Knin Corps to the Kupres area, capturing the town from the HV and the HVO jointly defending the area in the [[Battle of Kupres (1992)|Battle of Kupres]] on 7 April 1992 and threatening [[Livno]] and [[Tomislavgrad]] to the south-west. The 4th Military District of the JNA, commanded by General [[Pavle Strugar]], employed the 13th [[Bileća]] Corps and the 2nd [[Titograd]] Corps to capture Stolac and most of the eastern bank of the [[Neretva]] River south of [[Mostar]]. On 12 May, JNA forces based in Bosnia and Herzegovina became part of the VRS. ||| Prelude ||| ||| +0 Operation Tiger (1992) ||| Operation Jackal ||| '''Operation Tiger''' ({{lang-hr|Operacija Tigar}}) was a [[Croatian Army]] (HV) offensive conducted in areas of [[Croatia]] and [[Bosnia and Herzegovina]] near [[Dubrovnik]] between 1 and 13 July 1992. It was designed to push the [[Army of Republika Srpska]] (VRS) away from the city towards [[Popovo field]] and secure a supply route via [[Rijeka Dubrovačka]], which was gained in early June as the [[Siege of Dubrovnik]] by the [[Yugoslav People's Army]] (JNA) was lifted. The operation's success was facilitated by the establishment of the HV's Southern Front command and the successful conclusion of the May{{ndash}}June 1992 operations against the VRS in the [[Neretva]] River valley, which concluded with [[Operation Jackal]]. ||| ||| ||| +0 Operation Tiger (1992) ||| Operation Storm ||| Operation Tiger captured only {{convert|40|km2|abbr=off}} of territory around Dubrovnik, but it created a buffer zone around the city which increased its security. It also improved the security of the [[Ploče]]-Dubrovnik section of the Adriatic Highway{{mdash}}especially at Golubov Kamen and Rijeka Dubrovačka{{mdash}}allowing the safer resupply of Dubrovnik. However, that part of Croatia continued to suffer intermittent VRS artillery attacks until after [[Operation Storm]] in August 1995. ||| Aftermath ||| ||| +0 Operation Tiger (1992) ||| Siege of Dubrovnik ||| '''Operation Tiger''' ({{lang-hr|Operacija Tigar}}) was a [[Croatian Army]] (HV) offensive conducted in areas of [[Croatia]] and [[Bosnia and Herzegovina]] near [[Dubrovnik]] between 1 and 13 July 1992. It was designed to push the [[Army of Republika Srpska]] (VRS) away from the city towards [[Popovo field]] and secure a supply route via [[Rijeka Dubrovačka]], which was gained in early June as the [[Siege of Dubrovnik]] by the [[Yugoslav People's Army]] (JNA) was lifted. The operation's success was facilitated by the establishment of the HV's Southern Front command and the successful conclusion of the May{{ndash}}June 1992 operations against the VRS in the [[Neretva]] River valley, which concluded with [[Operation Jackal]]. ||| ||| ||| +0 Operation Tiger Claw ||| Midwest Invasion of 1967 ||| On May 30, 1967, the [[Republic of Biafra]] declared independence from [[Nigeria]]. Biafra was created under the rule of [[Odumegwu Ojukwu]]. This was caused by the [[Anti-Igbo sentiment]] of 1966 which caused the deaths of thousands of [[Igbo people]]. One month after secession on July 6, 1967, Nigerian troops invaded Biafra at the [[Battle of Nsukka]]. The Biafrans soon capitalized and invaded the Midwestern Region of Nigeria which started the [[Midwest Invasion of 1967]]. The Biafrans kept control of Nigeria's midwest region and even created the [[Republic of Benin (1967)|Republic of Benin]] which fell to Nigerian troops on September 20, 1967. Before the end of the Midwest Invasion the Nigerians invaded the Biafran capital of [[Enugu]]. The [[Fall of Enugu]] ended on October 4, 1967, with a Nigerian victory. The Biafran capital was then moved to [[Umuahia]] where it remained for 2 years. On October 7, 1967, Nigerian troops took control of [[Bonny, Nigeria|Bonny]] and made their way to Calabar. ||| Background ||| ||| +0 Operation Tiger Claw ||| Operation Tail-Wind ||| The day after the surrender all captured Biafran troops were forced to give up all of their weapons. After Operation Tiger Claw the two sides were met at a stalemate until the [[Capture of Port Harcourt]]. One day after the Capture of Port Harcourt Benjamin Adekunle with Col [[Murtala Mohammed]] invaded the Biafran cities of [[Owerri]], [[Aba, Abia|Aba]], and [[Umuahia]] which started [[Operation OAU]]. Col. Adekunle claimed that he could capture all three cities in two weeks but in reality it took six months and the Nigerians were unable to capture the Biafran capital of Umuahia. The Biafrans then took back the city of [[Owerri]] in January 1969. There were only minor scuffles until Nigerians captured Umuahia on December 24, 1969. The war finally ended on January 15, 1970, after the ending of [[Operation Tail-Wind]]. ||| Aftermath ||| ||| +0 Operation Tiger Hammer ||| Iraq War ||| '''Operation Tiger Hammer''' was part of the [[Iraq War]] that began in 2003. Iraqi Army soldiers conducted a battalion-sized cordon and search operation in the Adhamiyah District of the Iraqi capital 7 June. ||| ||| ||| +0 Operation Tiger Hound ||| Operation Barrel Roll ||| The geographic boundary of the operation was carved from the area of Laos already under bombardment under [[Operation Steel Tiger]]. This was done at the behest of the American commander in South Vietnam, General [[William C. Westmoreland]], who saw the area of Laos that bordered the five northernmost provinces of South Vietnam as an extension of his area of operations. The U.S. [[Joint Chiefs of Staff]] agreed. Unlike [[Operation Barrel Roll]] and ''Steel Tiger,'' however, the bombing in the new area would be conducted by aircraft of the South Vietnamese Air Force and by U.S. Air Force units based in South Vietnam (aircraft participating in ''Barrel Roll'' and ''Steel Tiger'' were generally based in [[Thailand]]). ||| ||| ||| +0 Operation Tiger Hound ||| Operation Commando Hunt ||| By the end of 1968 and the absorption of ''Tiger Hound'' operations by [[Operation Commando Hunt]], 103,148 tactical air sorties had been flown over Laos. These missions were supplemented by 1,718 [[Boeing B-52 Stratofortress|B-52 Stratofortress]] sorties under [[Operation Arc Light]]. During the same time period, 132 U.S. aircraft or helicopters were shot down over Laos. ||| ||| ||| +0 Operation Tonga ||| Battle of Merville Gun Battery ||| The [[paratrooper]]s and [[Glider infantry|glider-borne]] airborne troops of the division landed on the eastern flank of the invasion area, near to the city of [[Caen]], tasked with a number of objectives. The division was to capture two strategically important bridges over the [[Caen Canal]] and [[Orne River]] which were to be used by Allied ground forces to advance once the seaborne landings had taken place, destroy several other bridges to deny their use to the Germans and secure several important villages. The division was also assigned the task of assaulting and destroying the [[Battle of Merville Gun Battery|Merville Gun Battery]], an artillery battery that Allied intelligence believed housed a number of heavy artillery pieces, which could bombard [[Sword Beach]] and possibly inflict heavy casualties on the Allied troops landing on it. Having achieved these objectives, the division was then to create and secure a bridgehead focused around the captured bridges until they linked up with advancing Allied ground forces. ||| ||| ||| +0 Operation Tonga ||| Operation Deadstick ||| The first unit of the 6th Airborne Division to land in Normandy, as part of [[Operation Deadstick]], was a [[coup-de-main]] force from the 2nd Battalion, Oxfordshire and Buckinghamshire Light Infantry, under the command of [[Major (United Kingdom)|Major]] [[John Howard (British Army officer)|John Howard]]; although separated from the rest of the Brigade geographically, the small unit did form a part of [[5th Parachute Brigade (United Kingdom)|5th Parachute Brigade]], commanded by [[Brigadier (United Kingdom)|Brigadier]] [[Nigel Poett]]. One platoon opened fire on the sentry and threw grenades into a concrete bunker believed to hold the triggering equipment for the bridge demolition charges, a second platoon began to assault a number of trenches and gun-pits on the eastern bank of the canal, and a third began moving towards the bridge. One sentry fired a flare-gun, whilst a second was killed when he opened fire at the airborne troops and a third retreated. ||| Battle ||| 5th Parachute Brigade ||| +0 Operation Tonga ||| Operation Mallard ||| The Headquarters of the 6th Airborne Division landed by glider in the landing-zone cleared by the sappers and the company from 13th Parachute Battalion at 03:35 hours, with only a few gliders missing the landing-zone due to the poor weather and errors in navigation. At 21:00 [[Operation Mallard]] the gliders transporting [[6th Airlanding Brigade (United Kingdom)|6th Airlanding Brigade]] arrived at their landing-zone, coming under heavy small-arms and mortar fire from nearby German positions as they landed. However, casualties were light and within ninety minutes the glider-borne troops had gathered at their rendezvous points. ||| Battle ||| 6th Airlanding Brigade & 6th Airborne Division Headquarters ||| +0 Operation Torch ||| Allied invasion of Sicily ||| The setbacks at [[Battle of the Kasserine Pass|Kasserine]] forced the Allies to consolidate their forces and develop their lines of communication and administration so that they could support a major attack. The 1st and 8th Armies then attacked the Axis in April. Hard fighting followed, but the Allies cut off the Germans and Italians from support by naval and air forces between Tunisia and [[Sicily]]. On 6 May, as the culmination of [[Operation Vulcan]], the British took Tunis, and American forces reached [[Bizerte]]. By 13 May, the Axis forces in Tunisia had surrendered. This opened the way for the [[Allied invasion of Sicily]]. ||| Aftermath ||| Military consequences ||| Tunisia +0 Operation Torch ||| Battle of Kasserine Pass ||| The [[British 8th Army]] in the east—commanded by General [[Bernard Montgomery]]—stopped around [[Tripoli]] to allow reinforcements to arrive and build up the Allied advantage. In the west, the forces of 1st Army came under attack at the end of January, being forced back from the Faïd Pass and then suffering a reversal at [[Battle of Sidi Bou Zid|Sidi Bou Zid]] on 14–15 February. Axis forces pushed on to Sbeitla and then to the [[Battle of Kasserine Pass|Kasserine Pass]] on 19 February, where the US II Corps retreated in disarray until heavy Allied reinforcements halted the Axis advance on 22 February. ||| Aftermath ||| Military consequences ||| Tunisia +0 Operation Torch ||| Operation Overlord ||| The Center Task Force was split between three beaches, two west of Oran and one east. Landings at the westernmost beach were delayed because of a French convoy which appeared while the minesweepers were clearing a path. Some delay and confusion, and damage to landing ships, was caused by the unexpected shallowness of water and sandbars; although periscope observations had been carried out, no reconnaissance parties had landed on the beaches to determine the local maritime conditions. This was in contrast to later amphibious assaults—such as [[Operation Overlord]]—in which considerable weight was given to pre-invasion reconnaissance. ||| Battle ||| Oran ||| +0 Operation Torch ||| Scuttling of the French fleet in Toulon ||| One of the terms the [[Second Armistice at Compiègne]] agreed to by the Germans was that southern France would remain [[zone libre|free of German occupation]] and self-governed from Vichy. As a country out of the war and officially neutral, it was expected that all French forces, particularly overseas, would resist attacks by the Allies, per the principle of [[armed neutrality]]. This included use of the French fleet against Germany{{clarify|date=September 2014}}<!-- the sense seems to demand 'against the Allies' here-->. The lack of determined resistance and the new de Gaulle policies in North Africa convinced the Germans that Vichy could not be trusted to continue this policy. Southern France was [[case Anton|immediately occupied]] and troops moved to seize the French fleet in the port of Toulon. The naval strength of the Axis in the Mediterranean would have been greatly increased by this seizure, but every ship was [[Scuttling of the French fleet in Toulon|scuttled at dock]] by the French navy before they could be taken. ||| Aftermath ||| Military consequences ||| Toulon +0 Operation Totalize ||| Normandy landings ||| Caen had been an objective of the British forces assaulting [[Sword Beach]] on [[Normandy landings|D-Day]]. ||| Background ||| ||| +0 Operation Totalize ||| Operation Cobra ||| Also on 25 July the Americans launched their breakout offensive, [[Operation Cobra]], which gained immediate success. ||| Background ||| ||| +0 Operation Trident (1971) ||| Operation Python ||| '''Operation Trident''' and its follow-up [[Operation Python]] were naval offensive operations launched on [[Pakistan]]'s port city of [[Karachi]] by the [[Indian Navy]] during the [[Indo-Pakistani War of 1971]]. Operation Trident resulted in the first use of [[anti-ship missile]]s in combat in the region, India celebrates its [[Navy Day]] annually on 4 December to mark this operation. ||| ||| ||| +0 Operation Turkey Buzzard ||| Allied invasion of Sicily ||| '''Operation Turkey Buzzard''', also known as '''Operation Beggar''', was a British supply mission to North Africa that took place between March and August 1943, during the [[Second World War]]. The mission was undertaken by [[No. 2 Wing, Glider Pilot Regiment]] and [[No. 295 Squadron Royal Air Force]], prior to the [[Allied invasion of Sicily]]. Unusually, the mission was known by different names in different branches of the [[British Armed Forces]]: the [[British Army]] called the operation 'Turkey Buzzard', while in the [[Royal Air Force]] it was known as 'Beggar'. ||| ||| ||| +0 Operation Turkey Buzzard ||| Operation Ladbroke ||| For their part, the 1st Airborne Division was to conduct three brigade-size airborne operations; the Ponte Grande road bridge south of Syracuse was to be captured by [[1st Airlanding Brigade (United Kingdom)|1st Airlanding Brigade]] ([[Operation Ladbroke]]), the port of [[Augusta, Sicily|Augusta]] was to be seized by [[2nd Parachute Brigade (United Kingdom)|2nd Parachute Brigade]] (Operation Glutton), and finally the Primasole Bridge over the River Simeto was to be taken by [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]] ([[Operation Fustian]]). ||| Background ||| ||| +0 Operation UNICORD ||| Midwest Invasion of 1967 ||| 16 days after the Biafrans retreated Nzeogwu attempted to regain control of Nsukka on July 30 but was killed by Nigerian soldiers while driving down a road. The Nigerian Army were successful in their conquest of Nsukka, and then continued their onslaught towards [[Enugu]] though at a slower pace because of the invasion of the mid-western region. After the Biafran officers led by [[Victor Banjo]] invaded Nigeria's [[Mid-Western Region, Nigeria|Mid-Western Region]]. Murtala Mohammed was put in charge of fending off all Biafran soldiers within Nigeria's boundaries. Victor Banjo got within 135 miles of the Nigerian Capital Lagos before he was intercepted by Mohammed's men. After over a month of bloody fighting the Biafrans retreated to [[Onitsha]] and released their hold over the Mid-Western Region. With the [[Midwest Invasion of 1967|Midwest Invasion]] over the Nigerians returned to Nsukka and began planning an invasion of the Biafran Capital [[Enugu]]. Due to Nsukka's proximity to Enugu it was a strategic stronghold. Nigerian forces invaded the area around Enugu in mid September 1967 with the knowledge that Enugu would not fall easily if he attacked it head on so he decided to surround the city and begin a siege. On September 30 Nigerian forces were able to break through the Biafran defensive lines around Enugu and entered the city. After 6 days of bloody fighting the Biafrans forces retreated to the outskirts, and relocated their capital south to Umuahia. ||| Aftermath ||| ||| +0 Operation Undergo ||| Operation Overlord ||| '''Operation Undergo''' was the [[3rd Canadian Infantry Division]]'s operation to take the fortified French port of [[Calais]] in September 1944. A subsidiary operation was executed to silence and capture the heavy batteries at [[Cap Gris Nez]], which threatened the sea approaches to [[Boulogne-sur-Mer|Boulogne]]. The operation was part of the Allied effort to [[Clearing the Channel Coast|capture the Channel ports]], following the [[Operation Overlord|breakout from Normandy]]. ||| ||| ||| +0 Operation Valiant Guardian ||| Iraq War ||| '''Operation Valiant Guardian''' began in 2007 and was part of the [[Iraq War]]. ||| ||| ||| +0 Operation Vengeance ||| Operation I-Go ||| Admiral [[Isoroku Yamamoto]], commander of the [[Imperial Japanese Navy]], scheduled an inspection tour of the [[Solomon Islands]] and [[New Guinea]]. He planned to inspect Japanese air units participating in the [[Operation I-Go|I-Go]] operation that had begun April 7, 1943, and to boost Japanese morale following the disastrous [[Guadalcanal campaign|evacuation of Guadalcanal]]. On April 14, the U.S. naval intelligence effort code-named '[[Magic (cryptography)|Magic]]' intercepted and decrypted orders alerting affected Japanese units of the tour. ||| Background ||| ||| +0 Operation Veritable ||| Operation Grenade ||| At this stage, 21st Army Group consisted of the [[Second Army (United Kingdom)|British Second Army]] (Lieutenant-General [[Miles Dempsey]]), [[First Canadian Army]] (General [[Harry Crerar]]) and the [[Ninth United States Army|US Ninth Army]] (Lieutenant General [[William Hood Simpson|William Simpson]]). In ‘'Veritable'', the reinforced British XXX Corps (one of two corps in the First Canadian Army), under Horrocks, would advance through the Reichswald Forest and its adjacent flood plains to the Kleves – Goch road. The US Ninth Army was to execute [[Operation Grenade]], the southern part of the pincer. ||| Order of battle ||| Allied ||| +0 Operation Veritable ||| Operation Market Garden ||| General Dwight D. Eisenhower, the Allied Commander, had decided that the best route into Germany would be across the relatively flat lands of northern Europe, taking the industrial heartland of the [[Ruhr]]. This first required that Allied forces should close up to the Rhine along its whole length. Montgomery's 21st Army Group had established a front along the [[River Maas]] in late 1944 and had also considered several offensive operations to enlarge and defend the [[Nijmegen]] bridgehead and its important bridges (captured during the [[Operation Market Garden|operation to capture Arnhem]]). One such proposal, ''Valediction'' (a development of an earlier plan; ''Wyvern'') - an assault south-eastwards from Nijmegen between the Rhine and Maas rivers, initially had been shelved by Montgomery. A conference was convened at [[Maastricht]] on 7 December 1944 between Allied generals, to consider ways of maintaining pressure on the Germans throughout the winter. Consequently, ''Valediction'' was brought forward and allocated to the 1st Canadian Army. British XXX Corps were attached to the Canadians for the opereration and the date was provisionally set as 1 January 1945. At this point, the name ''Veritable'' was attached to the operation in place of ''Valediction''. ||| Context ||| ||| +0 Operation Vigorous ||| Operation Pedestal ||| The British [[Supermarine Spitfire|Spitfire]] fighters based at Malta needed fuel to fly, just as Malta itself needed supplies. Operation ''Vigorous'' had failed. Only two of [[Operation Harpoon (1942)|Operation ''Harpoon''{{'}}s]] six ships had reached Malta and [[Air Vice Marshal]] [[Keith Park]], the air commander in Malta, told London he had only seven weeks' fuel left. In August, therefore, almost all the available strength of the Royal Navy was put into the next major convoy operation of the war, [[Operation Pedestal]]. ||| Operation abandoned ||| ||| +0 Operation Vulcan ||| Operation Flax ||| In April, a major Allied air force effort ([[Operation Flax]]) had cut off Axis supplies to [[North Africa]]. The United States Army forces surrounded the last defenders at [[Enfidha|Enfidaville]], ending the Axis effort in North Africa. [[Operation Retribution (1943)|Operation Retribution]] and the control of the air and of the sea prevented any large-scale evacuation of Axis troops to Italy. ||| ||| ||| +0 Operation Weserübung ||| Battle of Midtskogen ||| * German ships sailed up the [[fjord]] leading to Oslo, reaching the [[Drøbak]] Narrows (Drøbaksundet). In the early morning of 9 April, the gunners at [[Oscarsborg Fortress]] fired on the leading ship, ''Blücher'', which had been illuminated by spotlights at about 04:15. Two of the guns used were the 48-year-old German [[Krupp]] guns (named ''Moses'' and ''Aron'') of {{convert|280|mm|in|0|abbr=on}} calibre. Within two hours, the badly damaged ship, unable to manoeuvre in the narrow fjord from multiple artillery and torpedo hits, sank with very heavy loss of life totalling 600–1,000 men. The now obvious threat from the fortress (and the mistaken belief that mines had contributed to the sinking) delayed the rest of the naval invasion group long enough for the [[Norwegian monarchy|Royal family]], the [[Cabinet Nygaardsvold]] and the [[Storting|Parliament]] to be evacuated, along with the [[Flight of the Norwegian National Treasury|national treasury]]. On their flight northward by special train, the court encountered the [[Battle of Midtskogen|Clash at Midtskogen]] and bombs at [[Elverum]] and [[Nybergsund]]. As the legitimate government and royal family were not captured, Norway never surrendered to the Germans, leaving the [[Quisling regime|Quisling government]] illegitimate and having Norway participating as an [[Allies of World War II|Ally]] in the war, rather than as a conquered nation. ||| Invasion of Norway ||| Concise timeline ||| +0 Operation Weserübung ||| Battles of Narvik ||| * [[Battles of Narvik]] ||| See also ||| ||| +0 Operation Weserübung ||| Operation Barbarossa ||| On 19 August 1940, Finland agreed to grant access to its territory for the ''Wehrmacht'', with the agreement signed on 22 September. Initially for [[Transit of German troops through Scandinavia (WWII)|transit of troops and military equipment to and from northernmost Norway]], but soon also for minor bases along the transit road that eventually would grow in the preparation for [[Operation Barbarossa]]. ||| The encircling of Sweden and Finland ||| ||| +0 Operation Weserübung ||| Winter War ||| Churchill assumed that Wilfred would provoke a German response in Norway. When that occurred, the [[Allies of World War II|Allies]] would implement [[Plan R 4]] and occupy Norway. Though later implemented, Operation Wilfred was initially rejected by [[Neville Chamberlain]] and [[Edward Wood, 1st Earl of Halifax|Lord Halifax]], due to fear of an adverse reaction among neutral nations such as the United States. After the start of the [[Winter War]] between the [[Soviet Union]] and [[Finland]] in November had changed the diplomatic situation, Churchill again proposed his mining scheme, but once more was denied. ||| Political and military background ||| ||| +0 Operation Whirlwind ||| 1991 Yugoslav campaign in Croatia ||| In May, the Croatian government responded by forming the [[Croatian National Guard]] (''Zbor narodne garde'' - ZNG), Late 1991 saw the fiercest fighting of the war, as the [[1991 Yugoslav campaign in Croatia]] culminated in the [[Siege of Dubrovnik]], ||| Background ||| ||| +0 Operation Whirlwind ||| Siege of Dubrovnik ||| In May, the Croatian government responded by forming the [[Croatian National Guard]] (''Zbor narodne garde'' - ZNG), Late 1991 saw the fiercest fighting of the war, as the [[1991 Yugoslav campaign in Croatia]] culminated in the [[Siege of Dubrovnik]], ||| Background ||| ||| +0 Operation Winter Storm ||| Operation Little Saturn ||| The German offensive caught the Red Army by surprise and made large gains on the first day. The spearhead forces enjoyed air support and were able to defeat counterattacks by Soviet troops. By 13 December, Soviet resistance slowed the German advance considerably. Although German forces took the area surrounding Verkhne-Kumskiy, the Red Army launched [[Operation Little Saturn]] on 16 December. Operation Little Saturn defeated the Italian [[Italian participation in the Eastern Front#The Italian 8th Army or Italian Army in Russia|8th Army]] on Army Group Don's left flank, threatening the survival of Manstein's entire group of forces. As resistance and casualties increased, Manstein appealed to Hitler and to the commander of the German 6th Army, General [[Friedrich Paulus]], to allow the 6th Army to break out of Stalingrad; both refused. The 4th Panzer Army continued its attempt to open a corridor to the 6th Army on 18–19 December, but was unable to do so without the aid of forces inside the Stalingrad pocket. Manstein was forced to call off the assault on 23 December and by Christmas Eve the 4th Panzer Army began to withdraw to its starting position. Due to the failure of the 6th Army to breakout and the attempt to break the Soviet encirclement, the Red Army was able to continue the destruction of German forces in Stalingrad. ||| ||| ||| +0 Operation Zarb-e-Azb ||| 2014 Jinnah International Airport attack ||| '''Operation Zarb-e-Azb''' ({{lang-ur|{{nq|آپریشن ضربِ عضب}}}} [[ALA-LC]]: {{transl|Urdu|ALA-LC|''Āpres̱ẖan Ẓarb-i ʿAẓb''}} {{IPA-ur|ɑːpreːʃən zərb-e əzb|pron}}) is a [[Joint Chiefs of Staff Committee|joint military]] [[Offensive (military)|offensive]] being conducted by the [[Pakistan Armed Forces]] against various [[Militant (word)|militant]] groups, including the [[Tehrik-i-Taliban Pakistan]] (TTP), the [[Islamic Movement of Uzbekistan]], the [[East Turkestan Islamic Movement]], [[Lashkar-e-Jhangvi]], [[al-Qaeda]], [[Jundallah (Pakistan)|Jundallah]] and the [[Haqqani network]]. The operation was launched on 15 June 2014 in [[North Waziristan]] along the [[Durand Line|Pakistan-Afghanistan border]] as a renewed effort against militancy in the wake of the [[2014 Jinnah International Airport attack|8 June attack on Jinnah International Airport]] in Karachi, for which the TTP and the IMU claimed responsibility. ||| ||| ||| +0 Operation Zipper ||| Operation Tiderace ||| [[Operation Tiderace]] was instead put into action following the [[surrender of Japan]]. The Allied fleet departed [[Rangoon]] on 27 August 1945, as part of [[Vice Admiral]] [[Harold Walker (Royal Navy officer)|Harold Walker]]'s force. The fleet sailing for Penang was designated 'Task Force 11', and consisted of the battleship {{HMS|Nelson|28|6}}, escort carriers [[HMS Attacker (D02)|HMS ''Attacker'']] They arrived in Penang on 28 August. HMS ''Nelson'' was the flagship of the fleet, and the articles of surrender were signed aboard the battleship on 2 September. ||| ||| ||| +0 Operation Zitronella ||| Operation Gauntlet ||| During the [[Second World War]], the [[Svalbard]] archipelago was the scene of a number of military operations. In August 1941, British, Canadian, and [[Free Norwegian Forces]] landed on Spitzbergen during [[Operation Gauntlet]]. This was aimed to destroy the rich coal mines there together with associated equipment and stores, which (it was correctly assumed) the Germans intended to make use of. No attempt was made to establish a garrison at this time and the civilian population was evacuated. ||| Background ||| ||| +0 Opération Chammal ||| November 2015 Paris attacks ||| On 14 November 2015, ISIL claimed that [[November 2015 Paris attacks|the attacks that took place in Paris the previous day]] were retaliation for Opération Chammal. In retaliation, the French forces are stepping up their attacks. ||| ||| ||| +0 Order of battle for the Battle of the Somme ||| Attacks on High Wood ||| =====Subsidiary [[Attacks on High Wood]]: 20–25 July 1916===== ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Bazentin Ridge]]: 14–17 July 1916 +0 Order of battle for the Battle of the Somme ||| Attacks on the Butte de Warlencourt ||| * [[Attacks on the Butte de Warlencourt]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Le Transloy|Battle of le Transloy]]: 1–18 October 1916 +0 Order of battle for the Battle of the Somme ||| Battle of Fromelles ||| =====Subsidiary attack at [[Battle of Fromelles|Fromelles]]: 19 July 1916===== ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Bazentin Ridge]]: 14–17 July 1916 +0 Order of battle for the Battle of the Somme ||| Battle of Mouquet Farm ||| * [[Battle of Mouquet Farm|Fighting for Mouquet Farm]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Pozières]]: 23 July – 3 September 1916 +0 Order of battle for the Battle of the Somme ||| Battle of Verdun ||| During the [[Battle of Verdun]], General [[Philippe Pétain|Pétain]] had rotated the French Divisions through the battle – resulting in a large number of divisions entering the battle with experience. ||| French forces ||| ||| +0 Order of battle for the Battle of the Somme ||| Capture of Combles ||| * [[Capture of Combles]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Morval]]: 25–28 September 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Fricourt ||| * [[Capture of Fricourt]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Albert (1916)|Battle of Albert]]: 1–13 July 1916 +0 Order of battle for the Battle of the Somme ||| Capture of La Boisselle ||| * [[Capture of La Boisselle]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Albert (1916)|Battle of Albert]]: 1–13 July 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Le Sars ||| * [[Capture of Le Sars]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Le Transloy|Battle of le Transloy]]: 1–18 October 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Lesboeufs ||| * [[Capture of Lesboeufs]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Morval]]: 25–28 September 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Mametz ||| * [[Capture of Mametz]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Albert (1916)|Battle of Albert]]: 1–13 July 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Martinpuich ||| * [[Capture of Martinpuich]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Flers-Courcelette]]: 15–22 September 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Montauban ||| * [[Capture of Montauban]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Albert (1916)|Battle of Albert]]: 1–13 July 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Regina Trench ||| * [[Capture of Regina Trench]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Ancre Heights]]: 1–18 October 1916 +0 Order of battle for the Battle of the Somme ||| Capture of Schwaben Redoubt ||| * [[Capture of Schwaben Redoubt]] ||| British and Dominion forces ||| Formations per Battle ||| [[Battle of Ancre Heights]]: 1–18 October 1916 +0 Order of battle for the Spring Offensive ||| Operation Michael ||| This is the [[order of battle]] for [[Operation Michael]], part of the German Spring Offensive fought from 21 March to 5 April 1918 as one of the main engagements of the [[World War I|First World War]]. It was fought between mixed [[Allies of World War I|French]], [[Allies of World War I|British]] and [[Allies of World War I|Dominion]] forces and the ||| ||| ||| +0 Oregon legislative elections, 2014 ||| Gold Beach ||| | incumbent = [[Wayne Krieger]] of [[Gold Beach, Oregon|Gold Beach]] ||| Oregon House of Representatives ||| Results ||| +0 Pacific War ||| Attack on Sydney Harbour ||| President [[Franklin Roosevelt]] ordered General [[Douglas MacArthur]] in the Philippines to formulate a Pacific defence plan with Australia in March 1942. Curtin agreed to place Australian forces under the command of MacArthur who became Supreme Commander, South West Pacific. MacArthur moved his headquarters to Melbourne in March 1942 and American troops began massing in Australia. [[Axis naval activity in Australian waters|Enemy naval activity]] reached Sydney in late May 1942, when Japanese [[midget submarine]]s launched a daring [[Attack on Sydney Harbour|raid on Sydney Harbour]]. On 8 June 1942, two Japanese submarines briefly shelled Sydney's eastern suburbs and the city of Newcastle. ||| Japanese offensives, 1941–42 ||| Threat to Australia ||| +0 Pacific War ||| Battle of Iwo Jima ||| Hard-fought battles on the [[Japanese archipelago|Japanese home islands]] of [[Battle of Iwo Jima|Iwo Jima]], [[Battle of Okinawa|Okinawa]], and others resulted in horrific casualties on both sides but finally produced a Japanese defeat. Of the 117,000 Japanese troops defending Okinawa, 94 percent died. ||| Final stages==<!-- This heading is used as a redirect anchor --&g ||| Landings in the Japanese home islands ||| +0 Pacific War ||| Battles of Khalkhin Gol ||| In 1939, Japanese forces tried to push into the [[Russian Far East|Soviet Far East]] from Manchuria. They were soundly defeated in the [[Battles of Khalkhin Gol|Battle of Khalkhin Gol]] by a mixed Soviet and Mongolian force led by [[Georgy Zhukov]]. This stopped Japanese expansion to the north, and Soviet aid to China ended as a result of the signing of the [[Soviet–Japanese Neutrality Pact]] at the beginning of [[Eastern Front (World War II)|its war against Nazi Germany]]. ||| Historical-background ||| Conflict between China and Japan ||| +0 Pacific War ||| Eastern Front (World War II) ||| In 1939, Japanese forces tried to push into the [[Russian Far East|Soviet Far East]] from Manchuria. They were soundly defeated in the [[Battles of Khalkhin Gol|Battle of Khalkhin Gol]] by a mixed Soviet and Mongolian force led by [[Georgy Zhukov]]. This stopped Japanese expansion to the north, and Soviet aid to China ended as a result of the signing of the [[Soviet–Japanese Neutrality Pact]] at the beginning of [[Eastern Front (World War II)|its war against Nazi Germany]]. ||| Historical-background ||| Conflict between China and Japan ||| +0 Pacific War ||| Mukden Incident ||| During the [[Occupation of Japan|American military occupation of Japan]] (1945–52), these Japanese terms were prohibited in official documents, although their informal usage continued, and the war became officially known as {{Nihongo|Pacific War|太平洋戦争|Taiheiyō Sensō}}. In Japan, the {{Nihongo|''Fifteen Years' War''|十五年戦争|Jūgonen Sensō}} is also used, referring to the period from the [[Mukden Incident]] of 1931 through 1945. ||| Overview ||| Names for the war ||| +0 Pacific War ||| Strategic bombing during World War II ||| Japanese [[Strategic bombing during World War II|strategic bombing]] efforts mostly targeted large Chinese cities such as [[Shanghai]], [[Wuhan]], and [[Bombing of Chongqing|Chongqing]], with around 5,000 raids from February 1938 to August 1943 in the later case. Japan's strategic bombing campaigns devastated Chinese cities extensively, killing 260,000–350,934 [[non-combatant]]s. ||| Historical-background ||| Conflict between China and Japan ||| +0 Pacification of Manchukuo ||| Boxer Rebellion ||| There was also a tradition of nationalistic banditry, dating back to the Russian invasion in July 1900 when Tsarist forces were sent to Manchuria, ostensibly to protect the Russian-owned [[Chinese Eastern Railway]] after the [[Boxer Rebellion]]. [[Wang Delin]] who opposed both the Russians and the [[Qing]] dynasty led a major bandit force against the Russians. His career as an outlaw continued until 1917, when he agreed to join the Jilin provincial forces. For former bandits to join the regular army quite common in the Warlord Era, as the bandits formed a convenient source of new soldiers. The converse was true as well–as the Fengtien Army retreated from the Japanese onslaught, thousands of soldiers deserted into the countryside to resume their former careers as bandits. During the [[Russo-Japanese War]], many bandit groups actively cooperated with the Japanese Army, providing valuable [[military intelligence]] on Russian troop movements and deployment, and assisting in the securing of supplies. ||| Early resistance: militias, brotherhoods and bandits ||| Bandits ||| +0 Pacification of Manchukuo ||| Defense of Harbin ||| Hostilities did not commence in the Harbin area until the end of January 1932, at about the same time as the [[January 28 Incident]]. General [[Ting Chao]] decided to defend the city, a key hub of rail and river communications in the north, against the approach of first General Xi Qia's 'New Kirin' Army and then Japanese troops. He appealed to Harbin's Chinese residents to join his railway garrison regulars and hundreds of volunteers, joined the [[Jilin Self-Defence Army]]. The [[Defense of Harbin]] at the start of February, that rallied Harbin in the way that had already formed militias in Fengtien, convinced local authorities and leading citizens in the hinterlands of Kirin that they should resist Japan's occupation of the province and form their own bands and militia units. ||| Formation of the Anti-Japanese Volunteer Armies ||| Resistance in Harbin ||| +0 Pacification of Manchukuo ||| January 28 Incident ||| Hostilities did not commence in the Harbin area until the end of January 1932, at about the same time as the [[January 28 Incident]]. General [[Ting Chao]] decided to defend the city, a key hub of rail and river communications in the north, against the approach of first General Xi Qia's 'New Kirin' Army and then Japanese troops. He appealed to Harbin's Chinese residents to join his railway garrison regulars and hundreds of volunteers, joined the [[Jilin Self-Defence Army]]. The [[Defense of Harbin]] at the start of February, that rallied Harbin in the way that had already formed militias in Fengtien, convinced local authorities and leading citizens in the hinterlands of Kirin that they should resist Japan's occupation of the province and form their own bands and militia units. ||| Formation of the Anti-Japanese Volunteer Armies ||| Resistance in Harbin ||| +0 Pacification of Manchukuo ||| Japanese invasion of Manchuria ||| The earliest formation of large Anti-Japanese partisan groups occurred in [[Liaoning]] and [[Jilin|Kirin]] provinces due to the poor performance of the Fengtien Army in the first month of the [[Japanese invasion of Manchuria]] and to Japan's rapid success in removing and replacing the provincial authority in Fengtien and Kirin. ||| Japan seizes control ||| ||| +0 Pacification of Manchukuo ||| Jiangqiao Campaign ||| Meanwhile, in Mukden, the “North Eastern Administrative Committee” or [[Self-Government Guiding Board]] was set up on November 10, under the leadership of [[Yu Chung-han]], a prominent elder statesman of [[Zhang Xueliang]]'s Government, who favored the [[autonomy]] of Manchuria. After the Japanese [[Jiangqiao Campaign|defeated]] General [[Ma Zhanshan]] and occupied [[Qiqihar|Tsitsihar]] on 19 November 1931, a local Self-Government Association was established in [[Heilungkiang]] Province; and General Chang Ching-hui was inaugurated as Governor of the Province on 1 January 1932. ||| Japan seizes control ||| ||| +0 Pacification of Manchukuo ||| Russo-Japanese War ||| There was also a tradition of nationalistic banditry, dating back to the Russian invasion in July 1900 when Tsarist forces were sent to Manchuria, ostensibly to protect the Russian-owned [[Chinese Eastern Railway]] after the [[Boxer Rebellion]]. [[Wang Delin]] who opposed both the Russians and the [[Qing]] dynasty led a major bandit force against the Russians. His career as an outlaw continued until 1917, when he agreed to join the Jilin provincial forces. For former bandits to join the regular army quite common in the Warlord Era, as the bandits formed a convenient source of new soldiers. The converse was true as well–as the Fengtien Army retreated from the Japanese onslaught, thousands of soldiers deserted into the countryside to resume their former careers as bandits. During the [[Russo-Japanese War]], many bandit groups actively cooperated with the Japanese Army, providing valuable [[military intelligence]] on Russian troop movements and deployment, and assisting in the securing of supplies. ||| Early resistance: militias, brotherhoods and bandits ||| Bandits ||| +0 Pacification of Manchukuo ||| Xinhai Revolution ||| Within days Henry [[Puyi]], Manchurian former [[Qing dynasty|emperor of China]], [[Xinhai Revolution|deposed in 1911]], was made provisional president of the independent state of [[Manchukuo]] by the resolution of an All-Manchuria convention at Mukden, whose members included General Ma Zhanshan flown in from the north. The next day on March 1 the provisional Manchukuo Government was established with Ma Zhanshan as its Minister of War, in addition to his post as provincial governor. On March 9, the State of Manchukuo was inaugurated. The Chinese Government announced that not only did it not recognize the new state, but that asserted that Puyi been kidnapped by the Japanese. ||| Formation of the Anti-Japanese Volunteer Armies ||| Foundation of Manchukuo ||| +0 Package Q Strike ||| Operation Opera ||| The main target of the strike was the Tawaitha nuclear research facility near Baghdad, which was the site of the [[Osirak Nuclear Reactor]] that was [[Operation Scorch Sword|attacked by the Iranian Air Force]] in 1980 and [[Operation Opera|again by the Israeli Air Force]] in 1981, along with many other military sites across the city. Two aircraft were shot down, with two pilots becoming [[POW]]s. This mission goal was not met, with the reactors of the research facility only slightly damaged, although many of the secondary targets were hit. F-117 aircraft re-attacked the facility later causing significant damage. ||| ||| ||| +0 Package Q Strike ||| Operation Scorch Sword ||| The main target of the strike was the Tawaitha nuclear research facility near Baghdad, which was the site of the [[Osirak Nuclear Reactor]] that was [[Operation Scorch Sword|attacked by the Iranian Air Force]] in 1980 and [[Operation Opera|again by the Israeli Air Force]] in 1981, along with many other military sites across the city. Two aircraft were shot down, with two pilots becoming [[POW]]s. This mission goal was not met, with the reactors of the research facility only slightly damaged, although many of the secondary targets were hit. F-117 aircraft re-attacked the facility later causing significant damage. ||| ||| ||| +0 Paris Air Show ||| Iraq War ||| The 2005 show, held 13–19 June, was the 46th show, and witnessed the return of American companies in large numbers following the downscaling of their presence in 2003 in relation to the [[Iraq War]]. Another strain in relations in 2005 was the recently launched [[World Trade Organisation]] litigation, which involved action filed by the United States against the EU member states alleging WTO-inconsistent subsidies to Airbus. ||| History ||| 2005 ||| +0 Paris massacre of 1961 ||| First Indochina War ||| After the [[May 1958 crisis]] and the installation of the new [[French Fifth Republic|Fifth Republic]] under 'Free France' leader Charles de Gaulle's leadership, Maurice Papon was kept on. Papon created the 'compagnies de district' (district companies), police forces that specialized in repression, where new police recruits were trained. These district companies were formed mainly from veterans of the [[First Indochina War|Indochina War]] (1947–54) and young people coming back from Algeria. ||| Background ||| Papon appointed head of Police Prefecture (March 1958) ||| +0 Paris massacre of 1961 ||| Liberation of Paris ||| The vast majority of police officers suspended after the [[Liberation of Paris]] in 1944 for extreme forms of collaborationism (including assistance to the ''[[Parti Populaire Français]]'' and similar groups) were later reintegrated into the police forces. In contrast, some of the policemen who had been part of the [[French Resistance|Resistance movement]] had their career advancement blocked because of [[Cold War]] [[anti-communism]], since the Resistance was partially [[French Communist Party|communist]] and communist ministers had been expelled from the government in May 1947. Moreover, police officers who had been members of the Resistance might well have taken part in the various raids against Jews and other persecuted groups during the Vichy regime, as otherwise they would have been dismissed, according to J.-L. Einaudi and Maurice Rajsfus. ||| Background ||| The French National Police ||| +0 Patriot War ||| Whiskey Rebellion ||| The Patriot movement inducted between 40,000 and 160,000 men into a predominantly American secret association, the “[[Hunters' Lodges|Hunter's Lodge”]], across the north-eastern states in support of the 1837 Rebellions in Upper and Lower Canada. The organization arose in Vermont among Lower Canadian refugees (the eastern division or [[Frères chasseurs]]) and spread westward under the influence of Dr [[Charles Duncombe (Upper Canada Rebellion)|Charles Duncombe]] and Donald McLeod, leaders of the short lived Canadian Refugee Relief Association, and Scotland native William Lyon Mackenzie, drawing in support from several different locations in North America and Europe. The [[Republic of Canada]] was also short-lived. After heavy bombardment by the British on Navy Island, where the republic had been established, Mackenzie and his force of Canadian militia retreated to Buffalo, New York, where they were captured by the U.S. army and sentenced to 18 months imprisonment for violating neutrality between the United States and the British Empire, bringing to an end what the British viewed as an inconsequential and unsupported colonial rebellion. The organizations were made up of grass-roots armed militants whose goal was to overthrow British rule in Canada. Their dispersal involved the largest deployment of U.S. troops against their own citizens since the [[Whiskey Rebellion]] of 1794. ||| ||| ||| +0 Peasants' revolt in Palestine ||| French campaign in Egypt and Syria ||| The combat that peasant men had engaged in prior to the revolt was restricted to the vicinity in which they lived. During armed conflicts, they would often fight for a short amount of days before returning to cultivate their lands, which remained their main preoccupation. When their service was needed, they were commanded by a local chief who in turn was subordinate to a regional leader. Most armed conflict revolved around the chiefs' bids for local influence and control or protection of villages from Bedouin plundering. There were also instances where peasant fighters would be assembled to back Ottoman authority in the face of local or external challengers, such as during the [[French campaign in Egypt and Syria|1799 Napoleonic invasion]], or against Ottoman authority when it interfered in the unofficial local autonomy that was enjoyed in the mountain regions. In most of the conflicts in which the peasant fighters participated, they fought alongside their kinsmen or neighbors. ||| Combatants and arms ||| Rebels ||| +0 Persian Campaign ||| Assyrian genocide ||| * [[Assyrian genocide]] ||| See also ||| ||| +0 Persian Campaign ||| Battle of Manzikert (1915) ||| During July 1915, Russian forces at the [[Caucasus Campaign]] had a general retreat which one Russian column retreated up to Persian frontier. This retreat was the consequence of events at June 1915. Yudenich planned an attack to limit the Ottomans at [[Moush]] and [[Manzikert]]. He planned to outflank from [[Doğubeyazıt|Beyazit]] and [[Persian Azerbaijan]] towards Van. However, the Russian advance toward the Caucuses campaign did not last long. The Russian forces suffered reverses. The command of Khalil Bey Eleven divisions of regular troops attacked the very center of the Russian Caucasian advance. In a few days they with [[Battle of Manzikert (1915)|Battle of Manzikert]] July 16, and later [[Battle of Kara Killisse (1915)|Battle of Kara Killisse]] the Russian army retreated. ||| Operations ||| 1915 ||| +0 Persian Campaign ||| Defense of Van (1915) ||| On May 8, 1915, one of the twelve Armenian messengers from the [[Defense of Van (1915)|Siege of Van]] had got through to Persia ||| Operations ||| 1915 ||| +0 Persian Campaign ||| Russian Revolution ||| The '''Persian Campaign''' or '''Invasion of Persia''' also known as '''Invasion of Iran''' ({{lang-fa|اشغال ایران در جنگ جهانی اول}}) was a series of engagements at northern [[Persian Azerbaijan]] and western [[Qajar dynasty|Persia]] between the [[British Empire]], [[Russian Empire]] and [[Armenia]]n and [[Assyrian people|Assyrian]] forces against the [[Ottoman Empire]], beginning in December 1914 and ending with the [[Armistice of Mudros]] on October 30, 1918 as part of [[Middle Eastern theatre of World War I]]. The Russian operations were halted by the [[Russian Revolution of 1917|Russian Revolution]] on February 23, 1917 when the [[Russian Caucasus Army (World War I)|Russian Caucasus Army]] was replaced with Armenian units and an Allied force named [[Dunsterforce]]. ||| ||| ||| +0 Peruvian War of Independence ||| Battle of Chacabuco ||| After the squashing of the after mentioned rebellion, Viceroy of Peru organised two expeditions; conformed by the royalist regiments of Lima and Arequipa, and expeditionary elements from Europe; against the Chilean Patriots. In 1814, the first expedition was successful in reconquering Chile after winning the [[Battle of Rancagua]]. In 1817 following the royalist defeat in the [[Battle of Chacabuco]], the second expedition against the Chilean Patriots in 1818 was an attempt to restore the monarchy. Initially it was successful in the [[Second Battle of Cancha Rayada]], the expedition was finally defeated by José de San Martín in the [[Battle of Maipú]]. ||| Founding of the Peruvian Republic ||| José de San Martín and the Liberation Army of the South ||| +0 Peruvian War of Independence ||| Battle of Rancagua ||| After the squashing of the after mentioned rebellion, Viceroy of Peru organised two expeditions; conformed by the royalist regiments of Lima and Arequipa, and expeditionary elements from Europe; against the Chilean Patriots. In 1814, the first expedition was successful in reconquering Chile after winning the [[Battle of Rancagua]]. In 1817 following the royalist defeat in the [[Battle of Chacabuco]], the second expedition against the Chilean Patriots in 1818 was an attempt to restore the monarchy. Initially it was successful in the [[Second Battle of Cancha Rayada]], the expedition was finally defeated by José de San Martín in the [[Battle of Maipú]]. ||| Founding of the Peruvian Republic ||| José de San Martín and the Liberation Army of the South ||| +0 Peruvian War of Independence ||| Peninsular War ||| During the [[Peninsular War]] (1807–1814) central authority in the [[Spanish Empire]] was lost and many regions established autonomous [[junta (Peninsular War)|junta]]s. The viceroy of Peru, [[José Fernando de Abascal y Sousa]] was instrumental in organizing armies to suppress uprisings in Upper Peru and to defend the region from armies sent by the juntas of the Río de la Plata. After success of the royalist armies, Absacal annexed Upper Peru to the viceroyalty, which benefited the Lima merchants as trade from the silver-rich region was now directed to the Pacific. Because of this, Peru remained strongly royalist and participated in the political reforms implemented by the [[Cádiz Cortes]] (1810–1814), despite Abascal's resistance. Peru was represented at the first session of the Cortes by seven [[deputy (legislator)|deputies]] and local [[cabildo (council)|cabildo]]s became elected, representative bodies. Therefore, Peru became the second to last redoubt of the Spanish Monarchy in [[South America]], after Upper Peru. Peru eventually succumbed to patriot armies after the decisive continental campaigns of [[José de San Martín]] (1820–1823) and [[Simón Bolívar]] (1823–1825). ||| History ||| ||| +0 Philippine resistance against Japan ||| Battle of Bataan ||| Afterwards came the [[Bataan Death March]], which was the forcible transfer, by the [[Imperial Japanese Army]], of 60,000 Filipino and 15,000 American [[prisoners of war]] after the three-month [[Battle of Bataan]] in the Philippines during [[World War II]]. ||| Background ||| ||| +0 Philippines Campaign (1941–42) ||| Battle of Bataan ||| Longest resistance against the Japanese Imperial Army in the initial stages of World War II. After the [[Battle of Bataan|Battle of Abucay]] the Japanese started to withdraw from Bataan, and resumed their attack in April, thus allowing MacArthur forty precious days for the preparation of Australia as an operational base. Webb, W. E. (1950). The Operations of the 41st Infantry Regiment (Philippine Army) of the 41st Infantry Division ||| Aftermath ||| Importance ||| +0 Philippines Campaign (1941–42) ||| Battle of Leyte ||| The Allied and the Philippine Commonwealth forces began the [[Philippines campaign, 1944-45|campaign to recapture the Philippines]] in 1944, with [[Battle of Leyte|landings on the island of Leyte]]. ||| Aftermath ||| ||| +0 Philippines Campaign (1944–45) ||| Battle of Guam (1944) ||| With victories in the [[Marianas campaign]] (on [[Battle of Saipan|Saipan]], on [[Battle of Guam (1944)|Guam]], and on [[Battle of Tinian|Tinian]], during June and July 1944), American forces were getting close to Japan itself. From the Marianas, the very long-range [[B-29 Superfortress]] [[heavy bomber]]s of the [[U.S. Army Air Forces]] (USAAF) could bomb the Japanese home islands from well-supplied [[air base]]s – ones with direct access to supplies via cargo ships and tankers. (The earlier B-29 bombing campaign against Japan had been from the end of a very long and tortuous [[military logistics|supply line]] via [[British Raj|British India]] and [[British Burma]] – one that proved to be woefully inadequate. All B-29s were transferred to the Marianas during the fall of 1944.) ||| Planning ||| ||| +0 Philippines Campaign (1944–45) ||| Battle of Leyte Gulf ||| On October 20, 1944, the [[U.S. Sixth Army]], supported by naval and air bombardment, landed on the favorable eastern shore of [[Leyte (island)|Leyte]], one of the islands of the [[Visayas]] island group, northeast of Mindanao. The Japanese miscalculated the relative strength of the naval and air forces, and they attempted to destroy the landing. This brought about the massive sequence of battles called the [[Battle of Leyte Gulf]], fought on October 23 through October 26. This decisive victory by the U.S. Navy, its Fast Carrier Task Force, its [[surface ship|surface fleet]], and its submarines effectively destroyed the remainder of the [[Imperial Japanese Navy]] (IJN), which had already lost all of its effective aircraft carrier forces. The IJN had four of its carriers sunk (ships with depleted air squadrons – which were used only as decoys), numerous [[battleship]]s and [[heavy cruisers]], and a large number of [[light cruiser]]s and [[destroyer]]s. The IJN was never able to fight a major battle after this. ||| Leyte ||| ||| +0 Philippines Campaign (1944–45) ||| Battle of Saipan ||| With victories in the [[Marianas campaign]] (on [[Battle of Saipan|Saipan]], on [[Battle of Guam (1944)|Guam]], and on [[Battle of Tinian|Tinian]], during June and July 1944), American forces were getting close to Japan itself. From the Marianas, the very long-range [[B-29 Superfortress]] [[heavy bomber]]s of the [[U.S. Army Air Forces]] (USAAF) could bomb the Japanese home islands from well-supplied [[air base]]s – ones with direct access to supplies via cargo ships and tankers. (The earlier B-29 bombing campaign against Japan had been from the end of a very long and tortuous [[military logistics|supply line]] via [[British Raj|British India]] and [[British Burma]] – one that proved to be woefully inadequate. All B-29s were transferred to the Marianas during the fall of 1944.) ||| Planning ||| ||| +0 Phoney War ||| Altmark Incident ||| The open discussions on an [[Allies of World War II|Allied]] expedition to northern Scandinavia, also without the consent of the neutral Scandinavian countries, and the [[Altmark Incident]] on 16 February, alarmed the ''[[Kriegsmarine]]'' and Germany by threatening [[iron ore]] supplies and gave strong arguments for Germany securing the Norwegian coast. Codenamed Operation [[Operation Weserübung|''Weserübung'']], the German invasion of [[German invasion of Denmark (1940)|Denmark]] and [[Norwegian Campaign|Norway]] commenced on 9 April. From the 14th, Allied troops were landed in Norway, but by the end of the month, southern parts of Norway were in German hands. The fighting continued in [[Northern Norway|the north]] until the Allies evacuated in early June in response to the [[Battle of France|German invasion of France]]; the Norwegian forces in mainland Norway laid down their arms at midnight on 9 June. ||| German invasion of Denmark and Norway ||| ||| +0 Phoney War ||| Battle of France ||| The open discussions on an [[Allies of World War II|Allied]] expedition to northern Scandinavia, also without the consent of the neutral Scandinavian countries, and the [[Altmark Incident]] on 16 February, alarmed the ''[[Kriegsmarine]]'' and Germany by threatening [[iron ore]] supplies and gave strong arguments for Germany securing the Norwegian coast. Codenamed Operation [[Operation Weserübung|''Weserübung'']], the German invasion of [[German invasion of Denmark (1940)|Denmark]] and [[Norwegian Campaign|Norway]] commenced on 9 April. From the 14th, Allied troops were landed in Norway, but by the end of the month, southern parts of Norway were in German hands. The fighting continued in [[Northern Norway|the north]] until the Allies evacuated in early June in response to the [[Battle of France|German invasion of France]]; the Norwegian forces in mainland Norway laid down their arms at midnight on 9 June. ||| German invasion of Denmark and Norway ||| ||| +0 Phoney War ||| Battle of the Atlantic ||| Despite the relative calm on land, on the high seas the war was very real. Within a few hours of the declaration of war, the British liner {{SS|Athenia}} was torpedoed off the [[Hebrides]] with the loss of 112 lives in what was to be the beginning of the long running [[Battle of the Atlantic]]. On 4 September, the Allies announced a [[Blockade of Germany (1939–45)|blockade of Germany]] to prevent her importing food and raw materials to sustain her war effort; the Germans immediately declared a counter-blockade. RAF Bomber Command, Britain's principal offensive arm, was also heavily engaged, but found that daylight bombing caused little damage and cost insupportable losses (e.g. 12 Wellington bombers shot down out of 22 sent over the Wilhelmshaven naval base on 18 Dececmber 1939.) ||| Inactivity ||| ||| +0 Phoney War ||| Battle of the Netherlands ||| On 10 May 1940, eight months after Britain and France had declared war on Germany, German troops marched into [[Battle of Belgium|Belgium]], the [[Battle of the Netherlands|Netherlands]] and [[Invasion of Luxembourg|Luxembourg]], marking the end of the Phoney War. ||| Actions during the Phoney War ||| ||| +0 Phoney War ||| Battles of Narvik ||| *In December 1939, the German [[Deutschland class cruiser|pocket battleship]] {{Ship|German cruiser|Admiral Graf Spee||2}} was attacked by the [[Royal Navy]] [[cruiser]]s {{HMS|Exeter|68|6}}, {{HMS|Ajax|22|2}} and {{HMNZS|Achilles|70|2}} in the [[Battle of the River Plate]]. ''Admiral Graf Spee'' fled to [[Montevideo]] harbour to carry out repairs on damage sustained during the battle. She was later [[scuttling|scuttled]] rather than face a large British fleet that the ''Kriegsmarine'' believed, incorrectly, was awaiting her departure. The support vessel for ''Admiral Graf Spee'', the [[Tank ship|tanker]] {{Ship|German tanker|Altmark||2}} was captured by the Royal Navy in February 1940 in southern Norway. ''(see: [[Battles of Narvik]], [[Altmark Incident]])'' ||| Actions during the Phoney War ||| ||| +0 Phoney War ||| Invasion of Poland ||| The '''Phoney War''' refers to the relatively quiet eight-month period at the start of [[World War II]] between the declaration of war by the [[Western Allies]] ([[United Kingdom]] and [[France]]) against [[Nazi Germany]] on {{date|1939-9-3}} just after the [[Invasion of Poland]] and the German [[Blitzkrieg]] in May 1940, that was marked by a lack of major military land operations by the Allies on Germany's [[Western Front (World War II)|Western Front]]. ||| ||| ||| +0 Phoney War ||| Winter War ||| The quiet of the Phoney War was punctuated by a few actions by the Allies. In the [[Saar Offensive]] in September, the French attacked Germany with the intention of assisting Poland, but this fizzled within days and they withdrew. In November, the Soviets attacked Finland in the [[Winter War]], resulting in much debate in France and Britain about an offensive to help Finland, but the forces finally assembled for this campaign were delayed until the Winter War ended in March. The Allied discussions about a Scandinavian campaign caused concern in Germany and resulted in the [[Norwegian Campaign|German invasion of Denmark and Norway]] in April, and the Allied troops previously assembled for Finland were redirected to Norway instead. Fighting there continued until June when the Allies evacuated, ceding Norway to Germany in response to the German invasion of France. ||| ||| ||| +0 Plan XVII ||| Battle of Mulhouse ||| |[[Battle of Mulhouse]] ||align='right'|7–10 August ||| Aftermath ||| Battle of the Frontiers ||| +0 Plan XVII ||| Battle of the Ardennes ||| |[[Battle of the Ardennes]] ||align='right'|21–23 August ||| Aftermath ||| Battle of the Frontiers ||| +0 Planned French invasion of Britain (1759) ||| Siege of Louisbourg (1758) ||| The invasion was planned by the [[Étienne François, duc de Choiseul|Duc de Choiseul]] who became [[French foreign minister]] in December 1758 and effectively served as Prime Minister during the period of the mooted invasion. He wanted to launch a bold initiative that would knock Britain out of the war with one stroke. French pride had been stung the previous year by the ease with which the British had [[Siege of Louisbourg (1758)|captured Louisbourg]] and launched amphibious raids on the French coast during 1758, such as the [[Raid on Cherbourg]]. British financial subsidies and military aid to her only ally [[Prussia]] had kept that country afloat since 1756. Choiseul's brief as foreign minister was to overturn this situation. ||| Conception ||| ||| +0 Podujevo bus bombing ||| Kosovo War ||| The '''Podujevo bus bombing''' was an attack on a bus carrying [[Serb]] civilians near the town of [[Podujevo]] in Kosovo on 16 February 2001. The bombing killed twelve Serb civilians who were travelling to [[Gračanica, Kosovo|Gračanica]] and injured dozens more. [[Albanians|Albanian]] extremists are suspected of being responsible for the attack. Gračanica is a predominantly Serb-populated town in central Kosovo, near the regional capital [[Pristina]], in a predominantly Albanian-populated area. Following the [[Kosovo War]] in 1999 it became an [[enclave]] within Albanian-controlled territory. Relations between the two communities were tense and occasionally violent. ||| ||| ||| +0 Point 175 ||| Japanese invasion of Malaya ||| The defenders mistook the Italian tanks for South African reinforcements led by armoured cars and let them approach unchallenged, {{nowrap|167 men}} of the [[21st Battalion (New Zealand)|21st New Zealand Battalion]] being taken prisoner (the Italians apparently being just as surprised to find the area not occupied by Axis troops). The [[6th Infantry Brigade (New Zealand)|6th New Zealand Brigade]] of the [[2nd New Zealand Division]] was almost destroyed in the fighting around Point 175, eventually its remnants retreated to Zaafran and then made their way back to Egypt to refit, the division having suffered {{nowrap|4,620 casualties}} in the fighting. When the division was reassembled it was sent to Syria to recuperate and then almost returned to Asia to participate in the war in the Far East, which had begun with the Japanese [[Japanese invasion of Malaya|Invasion of Malaya]] on {{nowrap|7/8 December}} 1941. ||| ||| ||| +0 Polonization ||| Deluge (history) ||| After several [[:Category:Cossack uprisings|Cossack uprisings]], especially the fateful [[Khmelnytsky uprising]], and foreign invasions (like [[Deluge (history)|the Deluge]]), the Commonwealth, increasingly powerless and falling under the control of its neighbours, started to decline, the process which eventually culminated with [[Partitions of Poland|elimination of the Polish statehood]] in the end of the 18th century for the next 123 years. ||| Polish-Lithuanian Commonwealth (1569–1795) ||| ||| +0 Portuguese Colonial War ||| Angolan Civil War ||| After 1974, the deterioration in [[central planning]] effectiveness, [[economic development]] and growth, security, education and health system efficiency, was rampant. None of the newly independent ex-Portuguese African states made any significant economic progress in the following decades, and political progress in terms of democratic processes and protection of individual human rights was either minimal or nonexistent. With few exceptions, the new regimes ranked at the bottom of human development and [[GDP per capita]] world tables. By 2002, however, the end of the [[Angolan Civil War]], combined with exploitation of the country's highly valuable natural resources, resulted in that country becoming economically successful for the first time in decades. ||| Economic consequences of the war ||| ||| +0 Pursuit of Goeben and Breslau ||| Battle of the Somme ||| General [[Erich Ludendorff|Ludendorff]] stated in his memoirs that he believed the entry of the Turks into the war allowed the outnumbered Central powers to fight on for two years longer than they would have been able on their own, a view shared by historian Ian F.W. Beckett. The war was extended to the [[Middle Eastern theatre of World War I|Middle East]] with main fronts of [[Battle of Gallipoli|Gallipoli]], the [[Sinai and Palestine Campaign|Sinai and Palestine]], [[Mesopotamian Campaign|Mesopotamia]], and the [[Caucasus Campaign|Caucasus]]. The course of the war in the [[Balkans]] was also influenced by the entry of the Ottoman Empire on the side of the [[Central Powers]]. Had the war ended in 1916, some of the bloodiest engagements, such as the [[Battle of the Somme]], would have been avoided. The [[United States]] might not have been drawn from its policy of isolation to intervene in a foreign war. ||| Consequences ||| Long-term consequences ||| +0 Pursuit of Goeben and Breslau ||| Caucasus Campaign ||| General [[Erich Ludendorff|Ludendorff]] stated in his memoirs that he believed the entry of the Turks into the war allowed the outnumbered Central powers to fight on for two years longer than they would have been able on their own, a view shared by historian Ian F.W. Beckett. The war was extended to the [[Middle Eastern theatre of World War I|Middle East]] with main fronts of [[Battle of Gallipoli|Gallipoli]], the [[Sinai and Palestine Campaign|Sinai and Palestine]], [[Mesopotamian Campaign|Mesopotamia]], and the [[Caucasus Campaign|Caucasus]]. The course of the war in the [[Balkans]] was also influenced by the entry of the Ottoman Empire on the side of the [[Central Powers]]. Had the war ended in 1916, some of the bloodiest engagements, such as the [[Battle of the Somme]], would have been avoided. The [[United States]] might not have been drawn from its policy of isolation to intervene in a foreign war. ||| Consequences ||| Long-term consequences ||| +0 Pursuit of Goeben and Breslau ||| October Revolution ||| Also, the closure of Russia′s at the time only ice-free trade route through the Dardanelles effectively strangled the Russian economy until a railway was constructed in 1915/16 to what would shortly become the town of Murmansk on the coast of the Barents sea to the far north. Difficulties in exporting grain or importing munitions was a significant problem for the Russian economy as well as for the Russian army. Combined with the German decision to release [[Vladimir Lenin]] in 1917, the sealing off of the Black Sea was one of the important contributors to the 'revolutionary situation' in Russia, which would explode into the process leading to the [[October Revolution]]. ||| Consequences ||| Long-term consequences ||| +0 Pursuit of Goeben and Breslau ||| Sinai and Palestine Campaign ||| General [[Erich Ludendorff|Ludendorff]] stated in his memoirs that he believed the entry of the Turks into the war allowed the outnumbered Central powers to fight on for two years longer than they would have been able on their own, a view shared by historian Ian F.W. Beckett. The war was extended to the [[Middle Eastern theatre of World War I|Middle East]] with main fronts of [[Battle of Gallipoli|Gallipoli]], the [[Sinai and Palestine Campaign|Sinai and Palestine]], [[Mesopotamian Campaign|Mesopotamia]], and the [[Caucasus Campaign|Caucasus]]. The course of the war in the [[Balkans]] was also influenced by the entry of the Ottoman Empire on the side of the [[Central Powers]]. Had the war ended in 1916, some of the bloodiest engagements, such as the [[Battle of the Somme]], would have been avoided. The [[United States]] might not have been drawn from its policy of isolation to intervene in a foreign war. ||| Consequences ||| Long-term consequences ||| +0 Quebec general election, 2003 ||| 2003 invasion of Iraq ||| The 2003 election happened against the backdrop of the [[2003 invasion of Iraq|war in Iraq]]. The battles of that war took place during the first half of the campaign, diverting the attention of the media and the population. Landry became known for his custom of wearing the [[white ribbon]] (which was in 2003 Quebec worn by people in favour of peace). This custom was shortly followed by the two other main party leaders, Charest and Dumont. Landry was the most outspoken critic of the war. The other two were more discreet on the matter. Charest once stated that it was an opportunity to reaffirm his 'belief in peace'. Dumont acted in a similar way, while also addressing criticism to Landry, saying that Quebecers should refrain from criticizing Americans too harshly since Americans were historical friends of Quebecers. ||| Unfolding ||| ||| +0 Queen Anne's War ||| Battle of Flint River ||| In January 1702, before the war broke out in Europe, Iberville had approached the Spanish with the recommendation that the [[Apalachee]] warriors be armed and sent against the English and their allies. The Spanish organized an expedition under Francisco Romo de Uriza that left [[Pensacola, Florida|Pensacola]] in August for the trading centers of the Carolina backcountry. The English, with advance warning of the expedition, organized a defense at the head of the [[Flint River (Georgia)|Flint River]] and [[Battle of Flint River|routed the Spanish-led force]], with upwards of 500 Spanish-led natives killed or captured. ||| Course of the war ||| Florida and Carolina ||| +0 Queen Anne's War ||| Charles Town expedition ||| When formal notification of hostilities arrived, Governor Moore organized and led a force against Spanish Florida. In 1706 Carolina successfully repulsed [[Charles Town expedition|an attack]] on [[Charleston, South Carolina|Charles Town]] by a combined Spanish and French amphibious force sent from Havana. ||| Course of the war ||| Florida and Carolina ||| +0 Queen Anne's War ||| Raid on Deerfield ||| # The English colonies of [[New England]] fought with French and Native American forces based in [[Acadia]] and [[Canada (New France)|Canada]]. [[Quebec City]] was repeatedly targeted (but never successfully reached) by British expeditions, and the Acadian capital [[Habitation at Port-Royal|Port Royal]] was [[Siege of Port Royal (1710)|taken in 1710]]. The French and [[Wabanaki Confederacy]] sought to thwart New England expansion into Acadia, whose border New France defined as the [[Kennebec River]] in southern Maine. Toward this end, they executed raids against targets in [[Province of Massachusetts Bay|Massachusetts]] (including present-day [[Maine]]), most famously [[Raid on Deerfield|raiding Deerfield]] in 1704. ||| ||| ||| +0 Queen Anne's War ||| Siege of Port Royal (1710) ||| # The English colonies of [[New England]] fought with French and Native American forces based in [[Acadia]] and [[Canada (New France)|Canada]]. [[Quebec City]] was repeatedly targeted (but never successfully reached) by British expeditions, and the Acadian capital [[Habitation at Port-Royal|Port Royal]] was [[Siege of Port Royal (1710)|taken in 1710]]. The French and [[Wabanaki Confederacy]] sought to thwart New England expansion into Acadia, whose border New France defined as the [[Kennebec River]] in southern Maine. Toward this end, they executed raids against targets in [[Province of Massachusetts Bay|Massachusetts]] (including present-day [[Maine]]), most famously [[Raid on Deerfield|raiding Deerfield]] in 1704. ||| ||| ||| +0 Race to the Sea ||| First Battle of Ypres ||| After the opposing forces had reached the North Sea, both tried to conduct offensives, which led to the mutually costly and indecisive [[Battle of the Yser]] (16 October – 2 November) and the [[First Battle of Ypres]] (19 October – 22 November). After mid-November, local operations were carried out by both sides, to improve their tactical position and preparations were made to take the offensive in the spring of 1915. [[Erich von Falkenhayn]], Chief of the [[German General Staff]] {{lang|de|(''[[Oberste Heeresleitung]]'')}} since 14 September, concluded that a decisive victory could not be achieved on the Western Front and that it was equally unlikely in the east. Falkenhayn abandoned {{lang|de|''Vernichtunsstrategie''}} (a strategy of annihilation) and attempted to create the conditions for peace with one of Germany's enemies, by {{lang|de|''Ermattungsstrategie''}} (a strategy of attrition), to enable Germany to concentrate its resources and decisively defeat the remaining opponents. ||| ||| ||| +0 Race to the Sea ||| Second Battle of Artois ||| Over the winter lull, the French army established the theoretical basis of offensive trench warfare and originated many of the methods which became standard for the rest of the war. [[Infiltration tactics]] in which dispersed formations of infantry were followed by {{lang|fr|''nettoyeurs de tranchée''}} ('trench cleaners'), to capture strong-points which had been by-passed, artillery observation from aircraft and [[Barrage (artillery)|creeping barrages]], were first used systematically in the [[Second Battle of Artois]] {{nowrap|(9 May – 18 June 1915).}} Falkenhayn issued memoranda on {{nowrap|7 and 25 January}} 1915, to govern defensive battle on the [[Western Front (World War I)|Western Front]], in which the existing front line was to be fortified, so that it could be held indefinitely with small numbers of troops, to enable more divisions to be sent to the Eastern Front. New defences were be built behind the front line to contain a breakthrough, before the position was restored by counter-attacks. The {{lang|de|''Westheer''}} began the huge task of building fortifications, which were not completed until the autumn of 1915. ||| ||| ||| +0 Raid at Cabanatuan ||| Attack on Pearl Harbor ||| After the United States was [[Attack on Pearl Harbor|attacked at Pearl Harbor]] on December 7, 1941 by Japanese forces, it entered World War II to join the [[Allies of World War II|Allied forces]] in their fight against the [[Axis powers]]. American forces led by General [[Douglas MacArthur]], already stationed in the Philippines as a deterrent against a Japanese invasion of the islands, were [[Philippines Campaign (1941–1942)|attacked by the Japanese]] hours after Pearl Harbor. On March 12, 1942, General MacArthur and a few select officers, on the orders of President [[Franklin D. Roosevelt]], [[Douglas MacArthur's escape from the Philippines|left]] the American forces, promising to return with reinforcements. The 72,000 soldiers of the [[United States Army Forces in the Far East]] (USAFFE), ||| Background ||| ||| +0 Raid at Cabanatuan ||| Battle of Bataan ||| After the surrender of tens of thousands of American troops during the [[Battle of Bataan]], many were sent to a Cabanatuan prison camp following the [[Bataan Death March]]. The Japanese transferred most of the prisoners to other areas, leaving just over 500 American and other Allied POWs and civilians in the prison. Facing brutal conditions including disease, torture, and malnourishment, the prisoners feared they would all be executed as General [[Douglas MacArthur]] and his American forces returned to [[Luzon]]. In late January 1945, a plan was developed by [[Sixth United States Army|Sixth Army]] leaders and Filipino guerrillas to send a small force to rescue the prisoners. A group of over a hundred Rangers and Scouts and several hundred guerrillas traveled {{convert|30|mi|km}} behind Japanese lines to reach the camp. ||| ||| ||| +0 Raid at Cabanatuan ||| Battle of Leyte ||| On October 20, 1944, General [[Douglas MacArthur]]'s forces [[Battle of Leyte|landed on Leyte]], paving the way for the [[Philippines campaign, 1944-45|liberation of the Philippines]]. Several months later, as the Americans consolidated their forces to prepare for the main invasion of [[Luzon]], nearly [[Palawan Massacre|150 Americans were executed]] by their Japanese captors on December 14, 1944 at the Puerto Princesa Prison Camp on the island of [[Palawan]]. These Americans were herded into [[Air-raid shelter|air raid shelters]], sealed in, doused with gasoline, and burned alive. ||| Planning and preparation ||| ||| +0 Raid at Combahee Ferry ||| Carolinas Campaign ||| The Combahee Ferry raid proved the value of black troops in combat, and credited Harriet Tubman's intelligence and bravery. After the raid, Confederate forces rushed to complete several small earthworks and batteries to better defend the area. The Union would not threaten the region again until the [[Carolinas Campaign|march through the Carolinas]] by General [[William T. Sherman]] in early 1865. The abandoned plantations surrounding Combahee Ferry were not rebuilt during the war; the South went without needed supplies and many of the planters were virtually bankrupted. Several plantations remained unoccupied well after the war. ||| Aftermath ||| ||| +0 Raid at Los Baños ||| Raid at Cabanatuan ||| The '''Raid at Los Baños''' in the [[Philippines]], early Friday morning on 23 February 1945, was executed by a combined [[11th Airborne Division (United States)|U.S. Army Airborne]] and [[Filipino people|Filipino]] [[guerrilla warfare|guerrilla]] task force, resulting in the liberation of 2,147 [[Allies of World War II|Allied]] civilian and military internees from an agricultural school campus turned [[Empire of Japan|Japanese]] [[internment camp]]. The 250 Japanese in the garrison were killed. It has been celebrated as one of the most successful rescue operations in modern military history. It was the second precisely-executed raid by combined U.S.-Filipino forces within a month, following on the heels of the [[Raid at Cabanatuan]] at [[Luzon]] on 30 January, in which 522 Allied military POWs had been rescued. ||| ||| ||| +0 Raid on Alexandria ||| Burning of Washington ||| As part of the British expedition to the [[Chesapeake Bay]] in the middle of 1814, a naval force under Commodore [[James Alexander Gordon]] was ordered to sail up the [[Potomac River]], to attack [[Fort Washington Park|Fort Washington]], which was then known as Fort Warburton. The raid was supposed to be a demonstration, to distract American troops from the main British [[Burning of Washington|attack on Washington]] under General [[Robert Ross (British Army officer)|Robert Ross]]. ||| Background ||| ||| +0 Raid on Canso ||| Siege of Louisbourg (1745) ||| The '''Raid on Canso''' was an attack by French forces from [[Louisbourg]] on the British outpost [[Fort William Augustus]] at [[Canso, Nova Scotia]] shortly after war declarations opened [[King George's War]]. The French raid was intended to boost morale, secure [[Fortress of Louisbourg|Louisbourg]]'s supply lines with the surrounding [[Acadian]] settlements, and deprive Britain of a base from which to attack Louisbourg. While the settlement was utterly destroyed, the objective failed, since the British launched [[Siege of Louisbourg (1745)|an attack on Louisbourg]] in 1745, using Canso as a staging area. ||| ||| ||| +0 Raid on Darwin (2 May 1943) ||| North Western Area Campaign ||| The '''Japanese raid on Darwin of 2 May 1943''' was a significant battle in the [[North Western Area Campaign]] of [[World War II]]. During the raid a force of over 20 [[Japan]]ese [[bomber aircraft|bombers]] and [[Mitsubishi A6M Zero|Zero]] [[fighter aircraft|fighters]] attacked the [[Australia]]n town of [[Darwin, Northern Territory]], inflicting little damage on the ground. This attack was the 54th Japanese airstrike over Australia. The [[Royal Australian Air Force]] (RAAF) unit responsible for protecting the town, [[No. 1 Wing RAAF]], intercepted the Japanese force after it had completed its attack, and suffered heavy losses from the Japanese fighters, aggravated by fuel shortages. The results of the battle led to public concern, and No. 1 Wing adopted new fighting tactics which proved successful in countering later raids. ||| ||| ||| +0 Raid on Genoa ||| Siege of Toulon ||| To eliminate the threat these isolated frigates posed, Hood ordered a squadron under Rear-Admiral [[John Gell (Royal Navy officer)|John Gell]] to investigate the harbour at Genoa. The squadron arrived on 5 October and discovered ''Modeste'' and two smaller warships at anchor. Later in the day, three ships of the squadron launched their [[ship's boats]] and instigated a [[boarding action]] against the anchored ships, in defiance of Genoese neutrality. The French crews resisted, but the British boarding parties successfully captured all three vessels without suffering any casualties. Six days later the detached [[HMS Captain (1787)|HMS ''Captain'']] also seized the abandoned ''Impérieuse'', which had fled to [[La Spezia]]. The action had strategic consequences: the Republican faction in Genoa was strong and they successfully barred [[Imperial and Royal Army during the Napoleonic Wars|Austrian]] reinforcements from sailing to join the Allied garrison at the developing [[Siege of Toulon]]. The outnumbered defenders of the port were overwhelmed and driven into the sea by a Republican assault on 17 December. ||| ||| ||| +0 Raid on the Medway ||| English Civil War ||| Only in the afternoon of 10 June did the King instruct Admiral [[George Monck, 1st Duke of Albemarle|George Monck, Duke of Albemarle]] to go to Chatham to take charge of matters, a full three days later ordering Admiral [[Prince Rupert of the Rhine|Prince Rupert]] to organise the defences at [[Woolwich]]. Albemarle went first to Gravesend where he noted to his dismay that there and at [[Tilbury]] only a few guns were present, too few to halt a possible Dutch advance upon the Thames. To prevent such a disaster, he ordered all available artillery from the capital to be positioned at Gravesend. On 11 June ([[Old Style and New Style dates|Old Style]]) he went to Chatham, expecting the place to be well prepared for an attack. Two members of the Navy Board, [[John Mennes|Sir John Mennes]] and [[Henry Brouncker|Lord Henry Brouncker]], had already travelled there on the same day. When Albemarle arrived, however, he found only twelve of the eight hundred dockyard men expected and these in a state of panic; of the thirty sloops only ten were present, the other twenty having been used to evacuate the personal possessions of several officials, such as Pett's ship models. No munitions or powder were available and the [[boom (navigational barrier)|six-inch thick iron chain that blocked the Medway]] had not yet been protected by batteries. This chain system had been built during the [[English Civil War]] to repel a possible attack by the Royalist fleet, replacing earlier versions, the first dating back to 1585. Albemarle immediately ordered the artillery to be moved from Gravesend to Chatham, which would take a day. ||| The raid ||| The Dutch approach ||| +0 Raid on the Medway ||| Third Anglo-Dutch War ||| The Raid on the Medway was a serious blow to the reputation of the English crown. Charles felt personally offended by the fact the Dutch had attacked while he had laid up his fleet and peace negotiations were in progress, conveniently forgetting he himself had not negotiated in good faith. His resentment was one of the causes of the [[Third Anglo-Dutch War]] as it made him enter into the secret [[Treaty of Dover]] with [[Louis XIV of France]]. In the 19th century, nationalistic British writers expanded on this theme by suggesting it had been the Dutch who had sued for peace after their defeats in 1666 – although in fact these had made them, if anything, more belligerent – and that only by treacherously attacking the English had they nevertheless been able to gain a victory; a typical example of this is ''When London burned'', written by the novelist [[G. A. Henty]] in 1895. In the short term, the [[Lord Chancellor]], [[Edward Hyde, 1st Earl of Clarendon]] was made the scapegoat, impeached and forced into exile. ||| Aftermath ||| ||| +0 Rebellions of 1837 ||| Haitian Revolution ||| Some historians contend that the rebellions in 1837 ought to be viewed in the wider context of the late-18th- and early-19th-century [[Atlantic Revolutions|Atlantic revolutions]]. The [[American Revolutionary war]] in 1776, the [[French Revolution]] of 1789–1799, the [[Haitian Revolution]] of 1791–1804, the [[Irish Rebellion of 1798]], and the rebellions in [[Spanish America]] (1810–1825) were inspired by republican ideals, but whether the rebels would have gone so far as to usurp the Crown remains a subject for historical debate. Great Britain's [[Chartism|Chartists]] sought the same democratic goals. ||| Atlantic context ||| ||| +0 Relief of Ladysmith ||| Battle of Colenso ||| Buller's first attempt at crossing the river was the [[Battle of Colenso]]. From the British point of view, the battle was a fiasco. On the western flank the British forces suffered considerable losses when the Irish Brigade were trapped in a loop in the river 3 km upstream from Colenso. In the centre they lost ten guns while on the eastern flank, Buller ordered his men to retreat even though the Boers had abandoned Hlangwane hill. Six [[Victoria Cross]]es were awarded for gallantry during the battle. During this battle, Freddie Roberts, son of Lord Roberts was mortally wounded. ||| Crossing the Tugela ||| The Battle of Colenso (15 December 1899) ||| +0 Relief of Ladysmith ||| Battle of Elandslaagte ||| The Boers crossed the border into the Colony and after battles at [[Battle of Talana Hill|Talana Hill]], [[Battle of Elandslaagte|Elandalaagte]] and the surrender of a large number of British troops at Nicholsons Nek, White set about defending his position at [[Ladysmith, KwaZulu-Natal|Ladysmith]], some 20 km north of the [[Tugela]] river. [[Winston Churchill|Churchill]] asserts that the British Government plan, to which he became privy in later life, was for White to fall back to a position south of the Tugela River. ||| The early campaign ||| ||| +0 Relief of Ladysmith ||| Battle of Ladysmith ||| After the ensuing [[Battle of Ladysmith]] on 28 October, the Boers succeeding in entrapping White and some 8,000 British regulars in Ladysmith. The remaining British forces withdrew south of the Tugela and [[Estcourt, KwaZulu-Natal|Estcourt]], 30 km south of Colenso effectively became the British front and Joubert, in spite of advice to the contrary from [[Louis Botha|Botha]] failed to push home his advantage and take the port city of [[Durban]]. ||| The early campaign ||| ||| +0 Relief of Ladysmith ||| Battle of Paardeberg ||| Events in Natal were soon overtaken by events elsewhere in South Africa. On 15 February, before the siege of Ladysmith had been raised, Roberts had raised the [[siege of Kimberley]] and on the day that the British broke through the Tugela Heights, [[Piet Cronjé|General Cronjé]] surrendered to Lord Roberts with 4000 men at [[Battle of Paardeberg|Paardeberg]]. On 13 March Roberts captured [[Bloemfontein]], the capital of the [[Orange Free State Republic]] and of 5 July 1900 he took [[Pretoria]], the capital of the South African Republic. ||| The Relief of Ladysmith (1 March 1900) and its aftermath ||| ||| +0 Repatriation of Cossacks after World War II ||| Operation Barbarossa ||| On 22 June 1941, [[Nazi Germany]] [[Operation Barbarossa|attacked the USSR]]. Russia had already been a part of WWII with [[Soviet invasion of Poland (1939)|its occupation of eastern Poland]], its attack on Finland and [[Occupation of the Baltic States|its occupation of Lithuania, Estonia, and Latvia]]. During the attack some ROVS, especially the Cossack ''émigré'' generals [[Pyotr Krasnov]] and [[Andrei Shkuro]], asked Nazi Propaganda Minister [[Joseph Goebbels]]' permission to fight alongside Nazi Germany against Communist Russia. Goebbels welcomed this idea, and by 1942 General Krasnov and General Shkuro had mustered a Cossack force — mostly from Red Army [[POW]]s captured by the [[Wehrmacht]] — who would be under the command of General [[Helmuth von Pannwitz]]. ||| The Second World War ||| ||| +0 Resistance at Nenjiang Bridge ||| Japanese invasion of Manchuria ||| The '''Resistance at Nenjiang Bridge''' was a small battle fought between forces of the Chinese [[National Revolutionary Army]] against the [[Imperial Japanese Army]] and collaborationist forces, after the [[Mukden Incident]] during the [[Japanese invasion of Manchuria|Invasion of Manchuria]] in 1931, prior to the start of the [[Second Sino-Japanese War]]. It marked the start of the [[Jiangqiao Campaign]]. ||| ||| ||| +0 Resistance at Nenjiang Bridge ||| Jiangqiao Campaign ||| The '''Resistance at Nenjiang Bridge''' was a small battle fought between forces of the Chinese [[National Revolutionary Army]] against the [[Imperial Japanese Army]] and collaborationist forces, after the [[Mukden Incident]] during the [[Japanese invasion of Manchuria|Invasion of Manchuria]] in 1931, prior to the start of the [[Second Sino-Japanese War]]. It marked the start of the [[Jiangqiao Campaign]]. ||| ||| ||| +0 Resistance at Nenjiang Bridge ||| Mukden Incident ||| The '''Resistance at Nenjiang Bridge''' was a small battle fought between forces of the Chinese [[National Revolutionary Army]] against the [[Imperial Japanese Army]] and collaborationist forces, after the [[Mukden Incident]] during the [[Japanese invasion of Manchuria|Invasion of Manchuria]] in 1931, prior to the start of the [[Second Sino-Japanese War]]. It marked the start of the [[Jiangqiao Campaign]]. ||| ||| ||| +0 Retreat to Montalban ||| Battle of Aliaga ||| The Spanish pursued the [[Katipunero]] forces retreating towards central Luzon, killing many of the revolutionaries. However, some of them joined General [[Manuel Tinio]]'s revolutionary army in [[Nueva Ecija]], where they decisively won the [[Battle of Aliaga]], 'The glorious Battle of the Rebellion', only a few weeks after the retreat. ||| ||| ||| +0 Revolution of 1905 ||| Battle of Tsushima ||| With the unsuccessful and bloody [[Russo-Japanese War]] (1904–1905) there was unrest in army reserve units. On 2 January 1905 [[Lüshunkou District|Port Arthur]] was lost, and the Russian [[Baltic Fleet]] was defeated at [[Battle of Tsushima|Tsushima]]; in February 1905, the Russian army was defeated at [[Battle of Mukden|Mukden]], losing almost 80,000 men in the process. Witte was dispatched to make peace, negotiating the [[Treaty of Portsmouth]] (signed {{OldStyleDate|5 September|1905|23 August}}). In 1905, there were naval mutinies at [[Sevastopol]] (see [[Sevastopol Uprising]]), [[Vladivostok]], and [[Kronstadt]], peaking in June with the [[Russian battleship Potemkin#The_mutiny|mutiny aboard the battleship ''Potemkin'']] — some sources claim over 2,000 sailors died in the restoration of order. The mutinies were disorganised and quickly crushed. Despite these mutinies, the armed forces were largely apolitical and remained mostly loyal, if dissatisfied — and were widely used by the government to control the 1905 unrest. ||| Start of the revolution ||| ||| +0 Revolutions of 1989 ||| Angolan Civil War ||| * [[People's Republic of Angola|Angola]] – The ruling [[MPLA]] government abandoned Marxism-Leninism in 1991 and agreed to the [[Bicesse Accords]] in the same year, however the [[Angolan Civil War]] between the MPLA and the conservative [[UNITA]] continued for another decade. ||| Other events ||| Communist and Socialist countries ||| Africa +0 Revolutions of 1989 ||| Bosnian War ||| * [[Bosnian War]] (1992–95) ||| Albania and Yugoslavia ||| Breakup of Yugoslavia ||| +0 Revolutions of 1989 ||| Communist Insurgency War ||| * Malaysia – The [[Malayan Communist Party]] laid down its arms in 1989, ending the [[Communist Insurgency War]] that had lasted decades. ||| Other events ||| Other countries ||| +0 Revolutions of 1989 ||| Eastern Front (World War II) ||| In the early stages of [[World War II]] Nazi Germany invaded and occupied the countries of Eastern Europe, [[Molotov–Ribbentrop Pact|with the agreement of the USSR]]. Germany then turned against and invaded the USSR: the battles of this [[Eastern Front (World War II)|Eastern Front]] were the largest in history. The USSR perforce became a member of the [[Allies of World War II|Allies]]. The USSR fought the Germans to a standstill and finally began driving them back, reaching Berlin before the end of the war. Nazi ideology was violently opposed to Communism, and The Nazis brutally suppressed the Communist movements in the occupied countries. The Communists played a large part in the resistance to the Nazis in these countries. As the Soviets forced the Germans back, they assumed temporary control of these devastated areas. Earlier in the war in conferences at [[Tehran Conference|Tehran]] and [[Yalta Conference|Yalta]], the allies had agreed that central and eastern Europe would be in the 'Soviet sphere of political influence.' ||| Background ||| Development of the Communist Bloc ||| +0 Revolutions of 1989 ||| January Events (Lithuania) ||| As the Soviet Union rapidly withdrew its forces from Central and Southeast Europe, the spillover from the 1989 upheavals began reverberating throughout the Soviet Union itself. Agitation for self-determination led to first Lithuania, and then Estonia, Latvia and Armenia declaring independence. However, the Soviet central government demanded the revocation of the declarations and threatened military action and economic sanctions. The government even went as far as controversially sending [[Red Army]] troops to the streets of the Lithuanian capital, [[Vilnius]], to [[January Events (Lithuania)|suppress the separatist movements]] in January 1991, causing the deaths of 14 people. ||| Dissolution of the Soviet Union ||| ||| +0 Revolutions of 1989 ||| Kosovo War ||| * [[Kosovo War]] (1998–99), including the [[NATO bombing of Yugoslavia]]. ||| Albania and Yugoslavia ||| Breakup of Yugoslavia ||| +0 Revolutions of 1989 ||| NATO bombing of Yugoslavia ||| * [[Kosovo War]] (1998–99), including the [[NATO bombing of Yugoslavia]]. ||| Albania and Yugoslavia ||| Breakup of Yugoslavia ||| +0 Revolutions of 1989 ||| Nagorno-Karabakh War ||| In Armenia, the independence struggle included violence. The [[Nagorno-Karabakh War]] was fought between Armenia and Azerbaijan. Armenia became increasingly militarized (with the ascendancy of Kocharian, a former president of Nagorno-Karabakh, often viewed as a milestone), while elections have since been increasingly controversial, and government corruption became more rife. After Kocharyan, notably, [[Serzh Sargsyan]] ascended to power. Sargsyan is often noted as the 'founder of the Armenian and Karabakh militaries' and was, in the past, defense minister and national security minister. ||| Dissolution of the Soviet Union ||| Georgia, Armenia, and Azerbaijan ||| +0 Revolutions of 1989 ||| Ten-Day War ||| * [[Ten-Day War|War in Slovenia]] (1991) ||| Albania and Yugoslavia ||| Breakup of Yugoslavia ||| +0 Revolutions of 1989 ||| The Barricades ||| The Singing Revolution is a commonly used name for events between 1987 and 1991 that led to the restoration of the independence of [[Estonian Soviet Socialist Republic|Estonia]], [[Latvian Soviet Socialist Republic|Latvia]] and [[Lithuanian Soviet Socialist Republic|Lithuania]]. [[Act of the Re-Establishment of the State of Lithuania|Lithuania declared its independence]] on 11 March 1990. On 30 March, Estonia announced the start of a transitional period to independence, and [[On the Restoration of Independence of the Republic of Latvia|Latvia followed suit]] a few days later. These declarations were met with force from the Soviet Union in early 1991, in confrontations known as '[[The Barricades]]' in Latvia and the [[January Events (Lithuania)|'January Events' in Lithuania]]. The Baltic states contended that their incorporation into the Soviet Union had been illegal under both international law and their own law, and they were reasserting an independence that still legally existed. ||| Dissolution of the Soviet Union ||| Estonia, Latvia, Lithuania ||| +0 Rhodesian Bush War ||| Mozambican War of Independence ||| Inevitably the Bush War occurred within the context of regional Cold War in Africa, and became embroiled with a number of conflicts in several neighbouring countries as well. Such conflicts included the [[Angolan War of Independence]] (1961–1975) and [[Angolan Civil War]] (1975–2002), the [[Mozambican War of Independence]] (1964–1974) and [[Mozambican Civil War]] (1977–1992), and the [[Shaba I]] (1977) and [[Shaba II]] (1978) conflicts. ||| Background ||| Cold War politics ||| +0 Richebourg-l'Avoué ||| Race to the Sea ||| '''Richebourg-l'Avoué''' is a village and former [[Communes of France|commune]] in the [[Pas-de-Calais]] region of France. It was merged with [[Richebourg-Saint-Vaast]] to form the [[communes of the Pas-de-Calais department|commune]] of [[Richebourg, Pas-de-Calais|Richebourg]] on 21 February 1971. Miliary operations began in the area during September 1914, when the opposing armies made several reciprocal attempt to outflank their opponent to the north during the [[Race to the Sea]] {{nowrap|(17 September – 19 October)}}. ||| ||| ||| +0 Riga Offensive (1944) ||| Operation Doppelkopf ||| Soviet forces had advanced towards the [[Baltic Sea|Baltic]] coast in the beginning of their [[Tartu Offensive]] and at the end of the highly successful [[Belorussian Offensive]] (Operation Bagration), during July and August 1944, and at one point had broken through to the [[Gulf of Riga]]. During August, the German [[18th Army (Wehrmacht)|18th Army]] had mounted a counter-attack, [[Operation Doppelkopf]]. Simultaneously the German [[Valga, Estonia|Valga]]–[[Võrtsjärv]] line, supported by the local Estonian [[Selbstschutz#Estonian Omakaitse|Omakaitse]] militia battalions, repelled the heavy pressure of the Soviet 3rd Baltic Front's Tartu Offensive. The German [[Army Group North]]'s commander, [[Ferdinand Schörner]] designed [[Operation Aster]] to pull his troops out of mainland Estonia. The parallel Riga Offensive would see Soviet forces apply further pressure on Army Group North, which still held much of Latvia and Estonia. ||| Prelude ||| ||| +0 Rohingya insurgency in Western Myanmar ||| Bangladesh Liberation War ||| From 1947 to 1961, [[Mujahideen#Myanmar|local Mujahideen]] insurgents fought government forces in an attempt to separate the mostly Rohingya populated [[Mayu|Mayu region]] from Myanmar, and have it annexed by the newly formed [[East Pakistan]] (present-day [[Bangladesh]]). The government has claimed that most Mujahideen fighters in Myanmar were involved in the [[Bangladesh Liberation War]] in 1971, and several crossed the border and were originally from [[Bangladesh]]. ||| ||| ||| +0 Rohingya insurgency in Western Myanmar ||| World War II ||| Aye Chan, a historian at the Kanda University, suggests that the roots of Mujahideen movements in Arakan (1947) originated from the communal violence between Arakanese and Rohingya Muslims during [[World War II]] in 1942. ||| Commentary upon the Rohingya insurgency ||| Academic discussion of the Mujahideen insurgency ||| +0 Romanian Revolution ||| Warsaw Pact invasion of Czechoslovakia ||| Unlike the other [[Warsaw Pact]] leaders, Ceaușescu had not been slavishly pro-[[Soviet Union|Soviet]] but rather had pursued an 'independent' foreign policy; Romanian forces did not join its Warsaw Pact allies in putting an end to the [[Prague Spring]]—an [[Warsaw Pact invasion of Czechoslovakia|invasion]] Ceaușescu openly denounced—while [[Romania at the 1984 Summer Olympics|Romanian athletes]] competed at the Soviet-boycotted [[1984 Summer Olympics]] in Los Angeles (receiving a standing ovation at the opening ceremonies and proceeding to win 53 medals, trailing only the US and [[West Germany]] in the overall count). ||| Background ||| ||| +0 Rome and Vienna airport attacks ||| Sabra and Shatila massacre ||| Responsibility for the two attacks was later claimed by the [[Abu Nidal]] Organization (ANO) in retaliation for [[Operation Wooden Leg]], the Israeli bombing of PLO headquarters in [[Tunis]] on 1 October 1985. [[Libya]] was accused of funding the terrorists who carried out the attacks; although they denied the charges, they did praise the assaults. According to published reports, sources close to Abu Nidal said Libyan intelligence supplied the weapons and the ANO's head of the Intelligence Directorate's Committee for Special Missions, Dr. Ghassan al-Ali, organized the attacks. Libya denied these charges as well, notwithstanding that it claimed they were 'heroic operations carried out by the sons of the martyrs of [[Sabra and Shatila massacre|Sabra and Shatila]].' ||| Perpetrators ||| ||| +0 Rotterdam Blitz ||| Battle of Britain ||| The [[History of the Netherlands (1939-1945)|Netherlands during the Second World War]] was strategically lodged between [[Military history of the United Kingdom during World War II|Great Britain]] and [[History of Germany during World War II|Germany]], making it an ideal prospective German air and naval 'base' during [[Operation Sea Lion]], the planned invasion of the British Isles that was to follow the forthcoming aerial [[Battle of Britain]]. It had firmly opted for neutrality throughout the [[World War I|First World War]] and had planned to do the same for the Second World War. It most notably refused to accept armaments from [[Military history of France during World War II|France]], making the case that they wanted no association with either side. While armament production was slightly increased after the [[Operation Weserübung|invasion of Denmark]] in April 1940, the Netherlands possessed 35 modern wheeled [[armoured fighting vehicle]], no tracked armoured fighting vehicles, 135 aircraft and 280,000 soldiers,{{sfn|Goossens|2011|loc=[http://www.waroverholland.nl/index.php?page=dutch-army-organisation Dutch army unit organisation]}} while Germany had 159 tanks, 1,200 modern aircraft,{{citation needed|date=January 2013}} and around 150,000 soldiers at their disposal [for the Dutch theatre only]. ||| Prelude ||| ||| +0 Royal Indian Navy mutiny ||| Battle of Imphal ||| The [[Gurbaksh Singh Dhillon#The Red Fort trial|INA trials]], the stories of [[Subhas Chandra Bose]] ('Netaji'), as well as the stories of INA's fight during the [[Battle of Imphal|Siege of Imphal]] and [[Burma Campaign|in Burma]] were seeping into the glaring public-eye at the time. These, received through the wireless sets and the media, fed discontent and ultimately inspired the sailors to strike. In Karachi, revolt broke out on board the Royal Indian Navy ship, [[HMIS Hindustan (L80)|HMIS ''Hindustan'']] off [[Manora Island]]. The ship, as well as shore establishments were taken over by mutineers. Later, it spread to the [[HMIS Bahadur|HMIS ''Bahadur'']]. A naval central strike committee was formed on 19 February 1946, led by M. S. Khan and Madan Singh. The next day, ratings from Castle and Fort Barracks in Bombay, joined in the revolt when rumours (which were untrue) spread that HMIS ''Talwar'''s ratings had been fired upon. ||| Events of the revolt ||| ||| +0 Royal Indian Navy mutiny ||| Burma Campaign ||| The [[Gurbaksh Singh Dhillon#The Red Fort trial|INA trials]], the stories of [[Subhas Chandra Bose]] ('Netaji'), as well as the stories of INA's fight during the [[Battle of Imphal|Siege of Imphal]] and [[Burma Campaign|in Burma]] were seeping into the glaring public-eye at the time. These, received through the wireless sets and the media, fed discontent and ultimately inspired the sailors to strike. In Karachi, revolt broke out on board the Royal Indian Navy ship, [[HMIS Hindustan (L80)|HMIS ''Hindustan'']] off [[Manora Island]]. The ship, as well as shore establishments were taken over by mutineers. Later, it spread to the [[HMIS Bahadur|HMIS ''Bahadur'']]. A naval central strike committee was formed on 19 February 1946, led by M. S. Khan and Madan Singh. The next day, ratings from Castle and Fort Barracks in Bombay, joined in the revolt when rumours (which were untrue) spread that HMIS ''Talwar'''s ratings had been fired upon. ||| Events of the revolt ||| ||| +0 Royal International Air Tattoo ||| Bosnian War ||| In 2002 a [[G-222]] of the [[Italian Air Force]] made a [[hard landing]] after demonstrating a steep descent approach, also known as the 'Sarajevo approach', developed for the [[airbridge (logistics)|airbridge]] for supplying [[Sarajevo]] during its blockade in the [[Bosnian War]]. After initial touch down the aircraft bounced up and came back heavily on the nose wheel, which then collapsed. Emergency services were soon at the scene as the crew strolled from the stricken aircraft. ||| Accidents and incidents ||| ||| +0 Russian Revolution ||| Battle of Tannenberg ||| Russia's first major battle of the war was a disaster: in the 1914 [[Battle of Tannenberg (1914)|Battle of Tannenberg]], over 30,000 Russian troops were killed or wounded and 90,000 captured, while Germany suffered just 12,000 casualties. However, [[Austria-Hungary|Austro-Hungarian]] forces allied to Germany were driven back deep into the [[Battle of Galicia|Galicia]] region by the end of the year. In the autumn of 1915, Nicholas had taken direct command of the army, personally overseeing Russia's main theatre of war and leaving his ambitious but incapable wife Alexandra in charge of the government. Reports of corruption and incompetence in the Imperial government began to emerge, and the growing influence of [[Grigori Rasputin]] in the Imperial family was widely resented. In the eyes of Lynch, a revisionist historian who focuses on the role of the people, Rasputin was a 'fatal disease' to the Tsarist regime. ||| World War I ||| ||| +0 Russian invasion of East Prussia (1914) ||| Battle of Tannenberg ||| [[Helmuth von Moltke the Younger]], Chief of the German General Staff from 1906 to 1914 replaced Prittwitz with [[Paul von Hindenburg]] (brought out of retirement) on 22 August. Hindenburg, along with his Chief of Staff, the formidable [[Erich Ludendorff|Ludendorff]] would approach the crisis in East Prussia very differently from Prittwitz, who panicked when the Russian onslaught entered East Prussia. In contrast to Prittwitz, Hindenburg and Ludendorff decided to take the offensive and encircle one of the opposing armies. Following the plans of Colonel [[Max Hoffmann]], Prittwitz's deputy chief of operations, they chose to send eight divisions against Samsonov in the [[Battle of Tannenberg (1914)|Battle of Tannenberg]] resulting in over 90,000 captured and 70,000 killed or wounded. The Second Army was destroyed and Samsonov shot himself. ||| Battle ||| ||| +0 Russian invasion of East Prussia (1914) ||| Schlieffen Plan ||| The Germans initially planned to have only the [[8th Army (German Empire)|8th army]] to act, as they expected that the Russians would be slow to mobilise, leaving Germany to beat France in a few weeks thereby allowing the victorious, battle-hardened German troops to transfer along Germany's superior transport network to fight the Russians on the Eastern Front. This was the basis of the [[Schlieffen Plan]]. ||| Plans ||| ||| +0 Russian invasion of East Prussia (1914) ||| Western Front (World War I) ||| The '''Russian invasion of East Prussia''' occurred during the [[First World War]], lasting from August to September 1914. As well as being the natural course for the Russians to take upon the declaration of war with Germany, it was also an attempt to focus German military eyes on the [[Eastern Front (World War I)|Eastern Front]], as opposed to the [[Western Front (World War I)|Western Front]]. Despite having an overwhelming superiority over the Germans in numbers, the Russian Army was spread out and suffered a defeat. ||| ||| ||| +0 Russian military intervention in the Syrian Civil War ||| 2015 Russian Sukhoi Su-24 shootdown ||| On 24 November 2015, a Russian [[Sukhoi Su-24]] aircraft was [[2015 Russian Sukhoi Su-24 shootdown|shot down]] by a [[Turkish Air Force]] [[General Dynamics F-16 Fighting Falcon|F-16 fighter jet]] in an incident thought to be the first time a NATO country shot down a Russian plane in half a century. ||| ||| ||| +0 Russian military intervention in the Syrian Civil War ||| American-led intervention in Syria ||| The Syrian Civil War has been waged since 2011 between multiple opposition (anti-government) groupings and the government as well as their local and foreign support bases. Since 2014, a significant part of Syria′s territory had been [[ISIL territorial claims|claimed]] by the [[Islamic State of Iraq and the Levant|Islamic State]], an entity internationally [[List of designated terrorist groups|recognised as terrorist]]. In the north-west of the country, the main opposition faction is the [[al-Qaeda]]-affiliated [[al-Nusra Front]] allied with numerous other smaller [[Islamism|Islamist]] groups, some of which operate under the umbrella of the [[Free Syrian Army]] (FSA) supported and armed by the U.S. and its regional allies. Since September 2014, the [[Combined Joint Task Force – Operation Inherent Resolve|U.S.-led coalition]] had conducted [[American-led intervention in Syria|air strikes]] in Syria against [[Islamic State of Iraq and the Levant|ISIL]], which was widely seen as unsuccessful in achieving their ostensible goals. ||| Background and preparation phase ||| ||| +0 Russian military intervention in the Syrian Civil War ||| Metrojet Flight 9268 ||| In mid-November 2015, Russia responded to the [[Metrojet Flight 9268]] crash by increasing its bombing operations within Syria, using the [[Tu-160]] and [[Tu-95]] [[strategic bomber]]s for the first time. ||| ||| ||| +0 Russian military intervention in the Syrian Civil War ||| Second Battle of Idlib ||| After the [[Second Battle of Idlib|loss]] of [[Idlib province]] to a [[Northwestern Syria offensive (April–June 2015)|rebel offensive]] in the first half of 2015, the situation was judged to have become critical for Assad's survival. High level talks were held between Moscow and Tehran in the first half of 2015 and a political agreement was achieved; ||| Cooperation with Iran ||| ||| +0 Russo-Japanese War ||| Mukden Incident ||| Military and economic exhaustion affected both countries.{{citation needed|date=March 2007}} Japanese historians regard this war as a turning point for Japan, and a key to understanding the reasons why Japan may have failed militarily and politically later. After the war, acrimony was felt at every level of Japanese society and it became the consensus within Japan that their nation had been treated as the defeated power during the peace conference. As time went on, this feeling, coupled with the sense of 'arrogance' at becoming a [[Great Power]],{{citation needed|date=September 2008}} grew and added to growing Japanese hostility towards the West, and fueled Japan's military and imperial ambitions. Only five years after the war, Japan ''de jure'' annexed Korea as part of its colonial empire. In 1931, 21 years later, Japan invaded Manchuria in the [[Mukden Incident]]. This culminated in the invasion of East, Southeast and South Asia in World War II, in an attempt to create a great Japanese colonial empire, the [[Greater East Asia Co-prosperity Sphere]]. As a result, most Chinese historians consider the Russo-Japanese War as a key development of [[Japanese militarism]]. ||| Peace and aftermath ||| Assessment of war results ||| +0 Russo-Japanese War ||| Pacific War ||| In the absence of Russian competition, and with the distraction of European nations during World War I, combined with the [[Great Depression]] that followed, the Japanese military began efforts to dominate China and the rest of Asia, which eventually led to the [[Second Sino-Japanese War]] and the [[Pacific War]] theatres of World War II. ||| Peace and aftermath ||| Political consequences ||| +0 Russo-Japanese War ||| Second Sino-Japanese War ||| In the absence of Russian competition, and with the distraction of European nations during World War I, combined with the [[Great Depression]] that followed, the Japanese military began efforts to dominate China and the rest of Asia, which eventually led to the [[Second Sino-Japanese War]] and the [[Pacific War]] theatres of World War II. ||| Peace and aftermath ||| Political consequences ||| +0 Rákóczi's War of Independence ||| Battle of Blenheim ||| Since the Austrians had to fight Rákóczi on several fronts, they felt obliged to enter negotiations with him. However, the victory of Austrian and British forces against a combined French-Bavarian army in the [[Battle of Blenheim]] on 13 August 1704, provided an advantage not only in the War of the Spanish Succession, but also prevented the union of Rákóczi's forces with their French-Bavarian allies. ||| Fight for independence ||| ||| +0 Sabra and Shatila massacre ||| 1982 Lebanon War ||| The massacre was presented as retaliation for the assassination of newly elected Lebanese president [[Bachir Gemayel]], the leader of the Lebanese Kataeb Party. It was wrongly assumed that [[Palestine Liberation Organization|Palestinian]] militants had carried out the assassination. In June 1982, the [[Israel Defense Forces]] [[1982 Lebanon War|had invaded]] Lebanon with the intention of rooting out the [[Palestine Liberation Organization]] (PLO). By mid-1982, under the supervision of the [[Multinational Force in Lebanon|Multinational Force]], the PLO withdrew from Lebanon following weeks of battles in West Beirut and shortly before the massacre took place. Various forces — Israeli, Phalangists and possibly also the [[South Lebanon Army]] (SLA) — were in the vicinity of Sabra and Shatila at the time of the slaughter, taking advantage of the fact that the Multinational Force had removed barracks and mines that had encircled Beirut's predominantly Muslim neighborhoods and kept the Israelis at bay during the Beirut siege. The Israeli Army surrounded Sabra and Shatila and stationed troops at the exits of the area to prevent camp residents from leaving and, at the Phalangists' request, ||| ||| ||| +0 Sabra and Shatila massacre ||| Khobar Towers bombing ||| According to Robert Fisk, Osama bin Laden cited the Sabra and Shatila massacre as one of the motivations for the 1996 [[Khobar Towers bombing]], in which al-Qaeda attacked an American Air Force housing complex in Saudi Arabia. ||| Reprisal operations ||| ||| +0 Sabra and Shatila massacre ||| Tel al-Zaatar massacre ||| From 1975 to 1990, groups in competing alliances with neighboring countries fought against each other in the [[Lebanese Civil War]]. Infighting and massacres between these groups claimed several thousand victims. Examples: the Syrian-backed [[Karantina massacre]] (January 1976) by the Kataeb and its allies against [[Kurds in Lebanon|Kurds]], [[Syrians in Lebanon|Syrians]] and [[Palestinians in Lebanon|Palestinians]] in this predominantly Muslim slum district of Beirut, [[Damour massacre|Damour]] (January 1976) by the PLO against Christian [[Maronite Christianity in Lebanon|Maronites]], including the family and fiancée of the Lebanese Forces intelligence chief [[Elie Hobeika]]; and [[Tel al-Zaatar massacre|Tel al-Zaatar]] (August 1976) by Phalangists and their allies against Palestinian refugees living in a camp administered by [[United Nations Relief and Works Agency for Palestine Refugees in the Near East|UNRWA]]. The total death toll in Lebanon for the whole civil war period was around 150,000 victims. ||| Background ||| ||| +0 Sack of Amorium ||| Muslim conquest of Sicily ||| By 829, when the young emperor Theophilos ascended the Byzantine throne, the Byzantines and Arabs had been fighting on and off for almost two centuries. At this time, Arab attacks resumed both in the east, where after almost twenty years of peace due to the [[Fourth Fitna|Abbasid civil war]] Caliph [[al-Ma'mun]] (r. 813–833) launched several large-scale raids, and in the west, where the gradual [[Muslim conquest of Sicily]] was under way since 827. Theophilos was an ambitious man and also a convinced adherent of [[Byzantine Iconoclasm]], which prohibited the depiction of divine figures and the veneration of [[icon]]s. He sought to bolster his regime and support his religious policies by military success against the [[Abbasid Caliphate]], the Empire's major antagonist. ||| Background ||| ||| +0 Sack of Cashel ||| English Civil War ||| The political and military situation was further fragmented by the [[English Civil War]], in which the Catholics gave their support to King Charles I, and the Protestants, since 1643, to the English Parliament. What was more, the Confederate Catholics were themselves split over the terms on which they should sign a peace deal with the King. A deep rift developed within their ranks in 1647 between those who were prepared to accept a mere toleration of Catholicism in return for an alliance with the English Royalists and those who in effect wanted Ireland to be Catholic kingdom, albeit under sovereignty of the Stuart monarchy. This infighting was to fatally hamper the war effort of the Confederates in Munster and make possible the Protestant sack of Cashel. ||| The Munster mutiny ||| ||| +0 Sack of Wexford ||| Irish Rebellion of 1641 ||| Wexford was held by Irish Catholic forces throughout the [[Irish Confederate Wars]]. In the [[Irish Rebellion of 1641]], over 1500 local men mustered in the town for the rebels. In 1642, Lord Mountgarret, the local Commander of the [[Confederate Ireland|Confederate Catholic]] regime, ordered Protestants to leave Wexford. About 80 English Protestant refugees drowned when the boat evacuating them from Wexford sank. ||| Background ||| ||| +0 Sack of Wexford ||| Siege of Drogheda ||| In relation to Wexford, as with his [[Siege of Drogheda]], the contention that Cromwell massacred civilians is disputed. Cromwell did not mention civilian casualties in his report on the siege. However, a request for compensation from the town of Wexford to the restored monarchy in the 1660s stated that 1,500 townspeople lost their lives in the sack. James Scott Wheeler, author of ''Cromwell in Ireland'' judges that, 'unquestionably, hundreds of non-combatants were killed by the rampaging soldiers'. Even Tom Reilly, author of ''Cromwell: an Honourable Enemy'' (which gives a favourable account of Cromwell's conduct in Ireland) concedes, 'there are many more references to the deaths of women and children at Wexford than at Drogheda and this fact is difficult to ignore'. ||| Debate ||| ||| +0 Saint-Domingue expedition ||| American Revolutionary War ||| Peace had not yet been conclusively signed with Britain (the [[Peace of Amiens]] would finally be signed on 25 March 1802) when on 14 December 1801 a French fleet of 21 frigates and 35 ships of the line (with one 120 gun ship) left [[Brest, France|Brest]] under [[Louis Thomas Villaret de Joyeuse|Villaret de Joyeuse]] carrying 7,000–8,000 troops. This fleet was followed by the squadron under [[contre-amiral]] [[Honoré Joseph Antoine Ganteaume|Ganteaume]] which left [[Toulon]] on 14 February with 4,200 troops then by that under contre-amiral [[Charles Alexandre Léon Durand de Linois|Linois]] which left [[Cadiz]] on 17 February with 2,400 troops. In the following months even more ships left France with fresh troops, including over 4,000 men were also sent from the artillerie de marine, a Dutch division and the [[Polish Legions (Napoleonic period)|Polish]] [[Danube Legion]]. Also included were a Spanish fleet of seven ships under Admiral [[Federico Carlos Gravina y Nápoli|Federico Gravina]] as well as large financial and material aid coming from [[Spanish Cuba]]. In total 31,131 troops were landed on [[Saint-Domingue]], including some black figures such as [[André Rigaud]], who had joined a brigade of volunteers in 1779 which had fought in the [[American Revolutionary War]] (after the Saint-Domingue expedition's failure, he would be imprisoned at [[fort de Joux]] by Napoleon, a few cells away from Toussaint himself), and [[Alexandre Pétion]] (who had led a revolt of ''free people of colour'' at [[Jacmel]] in 1799). ||| Expedition ||| ||| +0 Salamaua–Lae campaign ||| Battle of Wau ||| In January 1943, the Okabe Detachment was defeated in an [[Battle of Wau|attack on the Australian base of Wau]], about 40 kilometres (25 mi) away. Allied commanders turned their attention to Salamaua, which could be attacked by troops flown into [[Wau, Papua New Guinea|Wau]]. This also diverted attention from Lae, which was a major objective of [[Operation Cartwheel]], the [[Allies of World War II|Allied]] grand strategy for the [[Pacific Ocean theater of World War II|South Pacific]]. It was decided that the Japanese would be pursued towards Salamaua by the [[Australian 3rd Division (World War II)|Australian 3rd Division]], which had been formed at Wau, under the command of Maj. Gen. [[Stanley Savige]]. ||| Background ||| ||| +0 Salamaua–Lae campaign ||| New Guinea campaign ||| The '''Salamaua–Lae campaign''' was a series of actions in the [[New Guinea campaign]] of World War II. Australian and United States forces sought to capture two major [[Empire of Japan|Japanese]] bases, one in the town of [[Lae]], and another one at [[Salamaua]]. The campaign to take the Salamaua and Lae area began with the Australian attack on Japanese positions near [[Mubo]], on 22 April 1943. The campaign ended with the fall of Lae on 16 September 1943. ||| ||| ||| +0 Samland Offensive ||| Eastern Front (World War II) ||| The '''Samland Offensive''' was a [[Soviet Union|Soviet]] offensive on the [[Eastern Front (World War II)|Eastern Front]] in the final stages of World War II. It took place in [[Sambia]] ({{lang-de|Samland}}); ({{lang-ru|земланд, ''Zemland''}}). ||| ||| ||| +0 Sarawak Communist Insurgency ||| Communist Insurgency War ||| Besides the main [[Communist Insurgency War|Communist insurgency]] in [[Peninsular Malaysia]], another one occurred in [[Sarawak]], one of Malaysia's [[Borneo]] states. However, the Sarawak Communist Organisation had little support from ethnic Malays and the indigenous Sarawak races. At its height, the SCO had 24,000 members. ||| History ||| Background ||| +0 Saudi Arabian-led intervention in Yemen ||| Battle of Aden ||| On 6 April, airstrikes began before sunset and struck targets in western Sana'a, Sa'dah and the [[Ad Dali' Governorate]], a supply route for Houthis in the [[Battle of Aden]]. ||| Operation ''Decisive Storm'' ||| Air campaign ||| April 2015 +0 Schlieffen Plan ||| Battle of the Ardennes ||| |[[Battle of the Ardennes]] ||align='right'|21–23 August ||| Prelude ||| Battle of the Frontiers ||| +0 Schweinfurt–Regensburg mission ||| Operation Torch ||| Because of diversions of groups to the [[Operation Torch|invasion of North Africa]], the bomber force in England had been limited in size to four groups of B-17s and two of [[B-24]]s until May 1943. At that time, and in conjunction with the [[Pointblank Directive]] to destroy the Luftwaffe in preparation for [[Operation Overlord]], the B-17 force had expanded fourfold and was organized into the 1st and 4th Bombardment Wings (which due to their large size would soon be re-designated Bomb Divisions). The 1st Bombardment Wing, which included all of the original B-17 groups, was based in the [[English Midlands]] while the 4th Bombardment Wing stations were located in [[East Anglia]]. ||| The mission plan ||| ||| +0 Scilly naval disaster of 1707 ||| Battle of Toulon (1707) ||| In the summer of 1707, during the [[War of the Spanish Succession]], a combined British, [[Habsburg Monarchy|Austrian]] and [[Dutch Republic|Dutch]] force under the command of [[Prince Eugene of Savoy]] besieged and attempted to take the French port of [[Toulon]]. During [[Battle of Toulon (1707)|this campaign]], which was fought from 29 July to 21 August, Great Britain dispatched a fleet to provide naval support. Led by the [[Admiral of the Fleet (Royal Navy)|Commander-in-Chief of the British Fleets]], [[Cloudesley Shovell|Sir Cloudesley Shovell]], the ships sailed to the Mediterranean, attacked Toulon and also managed to inflict damage on the French fleet caught in the siege. The overall campaign was nevertheless unsuccessful and the alliance was ultimately defeated by [[Kingdom of France|Franco]]-[[Kingdom of Spain|Spanish]] units. The British fleet was ordered to return home, and set sail from [[Gibraltar]] to [[Portsmouth]] in late September. The force under Shovell's command comprised fifteen [[ship of the line|ships of the line]] ({{HMS|Association|1697|2}}, [[HMS St Andrew (1670)|''Royal Anne'']], {{HMS|Torbay|1693|2}}, [[HMS Charles (1668)|''St George'']], {{HMS|Cruizer|1705|2}}, {{HMS|Eagle|1679|2}}, {{HMS|Lenox|1678|2}}, {{HMS|Monmouth|1667|2}}, {{HMS|Orford|1698|2}}, {{HMS|Panther|1703|2}}, {{HMS|Romney|1694|2}}, {{HMS|Rye|1696|2}}, {{HMS|Somerset|1698|2}}, {{HMS|Swiftsure|1673|2}}, {{HMS|Valeur|1705|2}}) as well as four [[fireship]]s ({{HMS|Firebrand|1694|2}}, {{HMS|Griffin|1690|2}}, {{HMS|Phoenix|1694|2}}, {{HMS|Vulcan|1691|2}}), the [[sloop-of-war|sloop]] {{HMS|Weazel|1704|2}} and the [[yacht]] {{HMS|Isabella||2}}. ||| Background ||| ||| +0 Scotland in the Wars of the Three Kingdoms ||| Cromwellian conquest of Ireland ||| The threat posed by King Charles II with his new Covenanter allies was considered to be the greatest facing the new English Republic so [[Oliver Cromwell]] left some of his lieutenants in Ireland to continue the [[Cromwellian conquest of Ireland|suppression of the Irish Royalists]] and returned to England in May. He arrived in Scotland on 22 July 1650, advancing along the east coast towards Edinburgh. By the end of August, his army was reduced by disease and running out of supplies, so he was forced to order a retreat towards his base at the port of Dunbar. A Scottish Covenanter army under the command of [[David Leslie (Scottish general)|David Leslie]] had been shadowing his progress. Seeing some of Cromwell's sick troops being taken on board the waiting ships, Leslie made ready to attack what he believed was a weakened remnant (though some historians report that he was ordered to fight against his better judgment by the Covenanter General Assembly). Cromwell seized the opportunity, and the [[New Model Army]] inflicted a crushing defeat on the Scots at the subsequent [[Battle of Dunbar (1650)|Battle of Dunbar]] on 3 September. Leslie's army, which had strong ideological ties to the radical [[Kirk Party]], was destroyed, losing over 14,000 men killed, wounded and taken prisoner. Cromwell's army then took [[Edinburgh]] and by the end of the year his army had occupied much of southern Scotland. ||| Scotland and the Second and Third English Civil Wars ||| Third Civil War===<!-- This section is linked from [[Bass Rock]] --& ||| +0 Scotland in the Wars of the Three Kingdoms ||| English Civil War ||| Between 1644 and 1651 [[Kingdom of Scotland|Scotland]] was involved in the [[Wars of the Three Kingdoms]], a series of [[civil war]]s that were fought in Scotland, England ([[English Civil War]]) and in Ireland ([[Irish Confederate Wars]]). These wars followed other related conflicts: the [[Bishops Wars]] (between Scotland and England) and the [[Irish Rebellion of 1641]]. ||| ||| ||| +0 Scotland in the Wars of the Three Kingdoms ||| Glorious Revolution ||| After the death of Oliver Cromwell in 1658, the factions and divisions which had struggled for supremacy during the early years of the interregnum reemerged. Monck, who had served Cromwell and the English Parliament throughout the civil wars, judged that his best interests and those of his country lay in the Restoration of Charles II. In 1660, he marched his troops south from Scotland to ensure the monarchy's reinstatement. Scotland's Parliament and legislative autonomy were restored under [[Restoration (Scotland)|The Restoration]] though many issues that had led to the wars; religion, Scotland's form of government and the status of the Highlands, remained unresolved. After the [[Glorious Revolution]] of 1688, many more Scots would die over the same disputes in [[Jacobite rebellions]]. ||| From occupation to restoration ||| ||| +0 Scotland in the Wars of the Three Kingdoms ||| Irish Confederate Wars ||| Between 1644 and 1651 [[Kingdom of Scotland|Scotland]] was involved in the [[Wars of the Three Kingdoms]], a series of [[civil war]]s that were fought in Scotland, England ([[English Civil War]]) and in Ireland ([[Irish Confederate Wars]]). These wars followed other related conflicts: the [[Bishops Wars]] (between Scotland and England) and the [[Irish Rebellion of 1641]]. ||| ||| ||| +0 Scotland in the Wars of the Three Kingdoms ||| Irish Rebellion of 1641 ||| Between 1644 and 1651 [[Kingdom of Scotland|Scotland]] was involved in the [[Wars of the Three Kingdoms]], a series of [[civil war]]s that were fought in Scotland, England ([[English Civil War]]) and in Ireland ([[Irish Confederate Wars]]). These wars followed other related conflicts: the [[Bishops Wars]] (between Scotland and England) and the [[Irish Rebellion of 1641]]. ||| ||| ||| +0 Scuttling of the French fleet in Toulon ||| Operation Torch ||| On 8 November 1942 the Allies invaded French North Africa ([[Operation Torch]]). It may be that General [[Dwight Eisenhower]], with the support of Roosevelt and Churchill, made a secret agreement with Admiral [[François Darlan]], commander of Vichy Naval forces, that Darlan would be given control of French North Africa if he joined the Allied side. An alternative view is that Darlan was an opportunist and simply switched sides for self advancement, thus becoming titular controller of French North Africa. Following the Allied invasion of French North Africa [[Adolf Hitler]] immediately triggered [[Case Anton]], the occupation of Vichy France, and reinforced [[Afrika Korps|German forces in Africa]]. ||| Context ||| ||| +0 Seattle Jewish Federation shooting ||| Iraq War ||| Dayna Klein, a Federation employee who was five months pregnant, heard the shots being fired and as she went to the door of her office, Haq fired at her abdomen, but the bullet hit her raised arm. According to Klein, Haq then moved to another section of the building and Klein, bleeding profusely, crawled to her desk and dialed 911, despite Haq's threats to kill anyone who called the police. Haq eventually returned to Klein's office and discovered her on the phone, at which point he reportedly shouted 'Now since you don't know how to ... listen, now you're the hostage, and I don't give a [expletive] if I kill you or your baby.' Klein told the ''Seattle Post-Intelligencer'' that Haq '...stated that he was a Muslim, [and] this was his personal statement against Jews and the Bush administration for giving money to Jews, and for us Jews for giving money to Israel, about Hezbollah, the [[Iraq War|war in Iraq]], and he wanted to talk to [[CNN]].' Klein then offered Haq the phone and suggested that he tell the dispatcher what he had just told her. ||| Details ||| Hostage-taking and surrender ||| +0 Second Anglo-Dutch War ||| Battle of Scheveningen ||| The [[First Anglo-Dutch War]] was concluded with an English victory in the [[Battle of Scheveningen]] in August 1653, although a peace treaty was not signed for another eight months. The [[Commonwealth of England|Commonwealth]] government of [[Oliver Cromwell]] tried to avoid further conflict with the Dutch Republic. It did not come to the aid of its ally, [[Sweden]], when the Dutch thwarted the Swedish attempt to conquer [[Denmark]] in the [[Battle of the Sound]] on November 8, 1658. The English feared Dutch intervention in this war on the side of the Spanish, in part, because the Republic contained a strong Orangist party hostile to Cromwell. The leading personage of the Royal House of Orange was young [[William III of England|Prince William]] who was the grandson of [[Charles I of England|Charles I]] the lately beheaded king of England. Thus, the Commonwealth of England feared that the Orange party was under the influence of exiled English royalists. ||| Prelude ||| ||| +0 Second Anglo-Dutch War ||| First Anglo-Dutch War ||| The [[First Anglo-Dutch War]] was concluded with an English victory in the [[Battle of Scheveningen]] in August 1653, although a peace treaty was not signed for another eight months. The [[Commonwealth of England|Commonwealth]] government of [[Oliver Cromwell]] tried to avoid further conflict with the Dutch Republic. It did not come to the aid of its ally, [[Sweden]], when the Dutch thwarted the Swedish attempt to conquer [[Denmark]] in the [[Battle of the Sound]] on November 8, 1658. The English feared Dutch intervention in this war on the side of the Spanish, in part, because the Republic contained a strong Orangist party hostile to Cromwell. The leading personage of the Royal House of Orange was young [[William III of England|Prince William]] who was the grandson of [[Charles I of England|Charles I]] the lately beheaded king of England. Thus, the Commonwealth of England feared that the Orange party was under the influence of exiled English royalists. ||| Prelude ||| ||| +0 Second Anglo-Dutch War ||| Third Anglo-Dutch War ||| The peace was generally seen as a personal triumph for Johan De Witt. The Republic was jubilant about the Dutch victory. De Witt used the occasion to induce four provinces to adopt the [[Perpetual Edict (1667)]] abolishing the stadtholderate forever. He used the weak position of Charles to force him into the [[Triple Alliance of 1668]] which again forced Louis to temporarily abandon his plans for the conquest of the Southern Netherlands. But De Witt's success would eventually produce his downfall and nearly that of the Republic with it. Both humiliated monarchs intensified their secret cooperation and would, joined by the bishop of Münster, attack the Dutch in 1672 in the [[Third Anglo-Dutch War]]. De Witt was unable to counter this attack, as he could not create a strong Dutch army for lack of money and for fear that it would strengthen the position of the young [[William III of England|William III]]. That same year De Witt was assassinated, and William became stadtholder. ||| Peace ||| ||| +0 Second Barbary War ||| Battle off Cape Palos ||| Shortly after departing Gibraltar en route to Algiers, Decatur's squadron encountered the Algerian flagship ''[[Meshuda]]'', and, in the [[Battle off Cape Gata]], captured it. Not long afterward, the American squadron likewise captured the Algerian [[brig]] ''[[Estedio]]'' [[Battle off Cape Palos|off Cape Palos]]. By the final week of June, the squadron had reached Algiers and had initiated negotiations with the [[Dey]]. After the United States made persistent demands for compensation, mingled with threats of destruction, the Dey capitulated. By terms of the treaty signed aboard the ''Guerriere'' in the [[Bay of Algiers]], 3 July 1815, Decatur agreed to return the captured ''Meshuda'' and ''Estedio.'' The Algerians returned all American captives, estimated to be about 10, and a significant number of European captives{{Citation needed|date=July 2010}} were exchanged for about 500 subjects of the Dey. and granted the United States full shipping rights in the Mediterranean Sea. ||| Negotiations ||| ||| +0 Second Barbary War ||| First Barbary War ||| After the [[First Barbary War]] (1801-1805), the U.S. found its attention diverted to its worsening relationship with Great Britain over trade with [[France]], which culminated in the [[War of 1812]]. The [[Barbary pirates|Barbary pirate]] states took this opportunity to return to their practice of attacking American and European merchant vessels in the [[Mediterranean Sea]] and holding their crews and officers for ransom. ||| Background ||| ||| +0 Second Barbary War ||| War of 1812 ||| After the [[First Barbary War]] (1801-1805), the U.S. found its attention diverted to its worsening relationship with Great Britain over trade with [[France]], which culminated in the [[War of 1812]]. The [[Barbary pirates|Barbary pirate]] states took this opportunity to return to their practice of attacking American and European merchant vessels in the [[Mediterranean Sea]] and holding their crews and officers for ransom. ||| Background ||| ||| +0 Second Battle of Algeciras ||| Battle of the Nile ||| In August 1798, the French Mediterranean Fleet was largely destroyed by a British fleet at the [[Battle of the Nile]] during the [[French invasion of Egypt]]. With the [[Royal Navy]] dominant in the [[Mediterranean Sea]] and their army trapped in [[Egypt]], the French sought in 1801 to augment their depleted forces in the region by sending reinforcements from the Atlantic Fleet and by purchasing ships from the [[Spanish Navy]], based in [[Cadiz]]. ||| Background ||| First battle of Algeciras ||| +0 Second Battle of Algeciras ||| First Battle of Algeciras ||| The '''Second Battle of Algeciras''' (also known as the '''Battle of the Gut of Gibraltar''') was a naval battle fought on the night of 12 July 1801 (23 messidor an IX of the [[French Republican Calendar]]) between a squadron of British [[Royal Navy]] [[ships of the line]] and a larger squadron of ships from the [[Spanish Navy]] and [[French Navy]] in the [[Gut of Gibraltar]]. The battle followed closely the [[First Battle of Algeciras]] on 6 July, in which a French squadron anchored at the Spanish port of [[Algeciras]] was attacked by a larger British squadron based at nearby [[Gibraltar]]. In a heavy engagement fought in calm weather in the close confines of [[Algeciras Bay]], the British force was becalmed and battered, suffering heavy casualties and losing the ship [[HMS Hannibal (1786)|HMS ''Hannibal'']]. Retiring for repairs, both sides called up reinforcements, the French receiving support first, from the Spanish fleet based at Cadiz, which sent six [[ships of the line]] to escort the French squadron to safety. ||| ||| ||| +0 Second Battle of Amman ||| Battle of Nablus ||| The '''Second Battle of Amman''' was fought on 25 September 1918 during the [[Third Transjordan attack]] as part of the [[Battle of Nablus (1918)|Battle of Nablus]] which together with the main [[Battle of Sharon]] form the major set piece offensive known as the [[Battle of Megiddo (1918)|Battle of Megiddo]] of the [[Sinai and Palestine Campaign]] in World War I. After cutting the road from Nablus to [[Salt, Jordan|Es Salt]] on 22 September [[Chaytor's Force]] captured the bridge over the [[Jordan River]] at [[Capture of Jisr ed Damieh|Jisr ed Damieh]] while units of the [[Seventh Army (Ottoman Empire)|Seventh Army]] and remnants of the [[Eighth Army (Ottoman Empire)|Eighth Army]] were still in retreating towards the bridge from the [[Judean Hills]]. Having cut this line of retreat, Chaytor's Force proceeded eastwards to attack and capture Es Salt, before riding on to attack and capture the [[Ottoman Empire|Ottoman]] rearguard of the [[Fourth Army (Ottoman Empire)|Fourth Army]] defending [[Amman]]. These [[British Empire]] victories of the Third Transjordan attack over [[Yildirim Army Group]] forces, followed two unsuccessful EEF attacks across the Jordan River in [[First Transjordan attack on Amman (1918)|March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|April]] 1918. ||| ||| ||| +0 Second Battle of Amman ||| Battle of Nablus (1918) ||| The '''Second Battle of Amman''' was fought on 25 September 1918 during the [[Third Transjordan attack]] as part of the [[Battle of Nablus (1918)|Battle of Nablus]] which together with the main [[Battle of Sharon]] form the major set piece offensive known as the [[Battle of Megiddo (1918)|Battle of Megiddo]] of the [[Sinai and Palestine Campaign]] in World War I. After cutting the road from Nablus to [[Salt, Jordan|Es Salt]] on 22 September [[Chaytor's Force]] captured the bridge over the [[Jordan River]] at [[Capture of Jisr ed Damieh|Jisr ed Damieh]] while units of the [[Seventh Army (Ottoman Empire)|Seventh Army]] and remnants of the [[Eighth Army (Ottoman Empire)|Eighth Army]] were still in retreating towards the bridge from the [[Judean Hills]]. Having cut this line of retreat, Chaytor's Force proceeded eastwards to attack and capture Es Salt, before riding on to attack and capture the [[Ottoman Empire|Ottoman]] rearguard of the [[Fourth Army (Ottoman Empire)|Fourth Army]] defending [[Amman]]. These [[British Empire]] victories of the Third Transjordan attack over [[Yildirim Army Group]] forces, followed two unsuccessful EEF attacks across the Jordan River in [[First Transjordan attack on Amman (1918)|March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|April]] 1918. ||| ||| ||| +0 Second Battle of Amman ||| Battle of Sharon ||| The '''Second Battle of Amman''' was fought on 25 September 1918 during the [[Third Transjordan attack]] as part of the [[Battle of Nablus (1918)|Battle of Nablus]] which together with the main [[Battle of Sharon]] form the major set piece offensive known as the [[Battle of Megiddo (1918)|Battle of Megiddo]] of the [[Sinai and Palestine Campaign]] in World War I. After cutting the road from Nablus to [[Salt, Jordan|Es Salt]] on 22 September [[Chaytor's Force]] captured the bridge over the [[Jordan River]] at [[Capture of Jisr ed Damieh|Jisr ed Damieh]] while units of the [[Seventh Army (Ottoman Empire)|Seventh Army]] and remnants of the [[Eighth Army (Ottoman Empire)|Eighth Army]] were still in retreating towards the bridge from the [[Judean Hills]]. Having cut this line of retreat, Chaytor's Force proceeded eastwards to attack and capture Es Salt, before riding on to attack and capture the [[Ottoman Empire|Ottoman]] rearguard of the [[Fourth Army (Ottoman Empire)|Fourth Army]] defending [[Amman]]. These [[British Empire]] victories of the Third Transjordan attack over [[Yildirim Army Group]] forces, followed two unsuccessful EEF attacks across the Jordan River in [[First Transjordan attack on Amman (1918)|March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|April]] 1918. ||| ||| ||| +0 Second Battle of Amman ||| Sinai and Palestine Campaign ||| The '''Second Battle of Amman''' was fought on 25 September 1918 during the [[Third Transjordan attack]] as part of the [[Battle of Nablus (1918)|Battle of Nablus]] which together with the main [[Battle of Sharon]] form the major set piece offensive known as the [[Battle of Megiddo (1918)|Battle of Megiddo]] of the [[Sinai and Palestine Campaign]] in World War I. After cutting the road from Nablus to [[Salt, Jordan|Es Salt]] on 22 September [[Chaytor's Force]] captured the bridge over the [[Jordan River]] at [[Capture of Jisr ed Damieh|Jisr ed Damieh]] while units of the [[Seventh Army (Ottoman Empire)|Seventh Army]] and remnants of the [[Eighth Army (Ottoman Empire)|Eighth Army]] were still in retreating towards the bridge from the [[Judean Hills]]. Having cut this line of retreat, Chaytor's Force proceeded eastwards to attack and capture Es Salt, before riding on to attack and capture the [[Ottoman Empire|Ottoman]] rearguard of the [[Fourth Army (Ottoman Empire)|Fourth Army]] defending [[Amman]]. These [[British Empire]] victories of the Third Transjordan attack over [[Yildirim Army Group]] forces, followed two unsuccessful EEF attacks across the Jordan River in [[First Transjordan attack on Amman (1918)|March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|April]] 1918. ||| ||| ||| +0 Second Battle of Amman ||| Third Transjordan attack ||| The '''Second Battle of Amman''' was fought on 25 September 1918 during the [[Third Transjordan attack]] as part of the [[Battle of Nablus (1918)|Battle of Nablus]] which together with the main [[Battle of Sharon]] form the major set piece offensive known as the [[Battle of Megiddo (1918)|Battle of Megiddo]] of the [[Sinai and Palestine Campaign]] in World War I. After cutting the road from Nablus to [[Salt, Jordan|Es Salt]] on 22 September [[Chaytor's Force]] captured the bridge over the [[Jordan River]] at [[Capture of Jisr ed Damieh|Jisr ed Damieh]] while units of the [[Seventh Army (Ottoman Empire)|Seventh Army]] and remnants of the [[Eighth Army (Ottoman Empire)|Eighth Army]] were still in retreating towards the bridge from the [[Judean Hills]]. Having cut this line of retreat, Chaytor's Force proceeded eastwards to attack and capture Es Salt, before riding on to attack and capture the [[Ottoman Empire|Ottoman]] rearguard of the [[Fourth Army (Ottoman Empire)|Fourth Army]] defending [[Amman]]. These [[British Empire]] victories of the Third Transjordan attack over [[Yildirim Army Group]] forces, followed two unsuccessful EEF attacks across the Jordan River in [[First Transjordan attack on Amman (1918)|March]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt (1918)|April]] 1918. ||| ||| ||| +0 Second Battle of Artois ||| Battle of Loos ||| The British attacks at Festubert forced the Germans back {{convert|3|km|mi}} and diverted reserves from the French but the French gained little more ground, despite firing double the amount of artillery ammunition, at the cost of many casualties to both sides. On 18 June, the main offensive was stopped and local attacks were ended on 25 June. The French offensive had advanced the front line about {{convert|3|km|mi}} towards Vimy Ridge, on an {{convert|8|km|mi|adj=on}} front. The failure to break through, despite the expenditure of {{nowrap|2,155,862 shells}} and the loss of {{nowrap|102,500 casualties,}} led to recriminations against Joffre; the German 6th Army lost {{nowrap|73,072 casualties.}} A lull followed until the [[Second Battle of Champagne]], the [[Third Battle of Artois]] and the [[Battle of Loos]] in September. ||| ||| ||| +0 Second Battle of Artois ||| Third Battle of Artois ||| The British attacks at Festubert forced the Germans back {{convert|3|km|mi}} and diverted reserves from the French but the French gained little more ground, despite firing double the amount of artillery ammunition, at the cost of many casualties to both sides. On 18 June, the main offensive was stopped and local attacks were ended on 25 June. The French offensive had advanced the front line about {{convert|3|km|mi}} towards Vimy Ridge, on an {{convert|8|km|mi|adj=on}} front. The failure to break through, despite the expenditure of {{nowrap|2,155,862 shells}} and the loss of {{nowrap|102,500 casualties,}} led to recriminations against Joffre; the German 6th Army lost {{nowrap|73,072 casualties.}} A lull followed until the [[Second Battle of Champagne]], the [[Third Battle of Artois]] and the [[Battle of Loos]] in September. ||| ||| ||| +0 Second Battle of Benghazi ||| 2011 military intervention in Libya ||| The '''Second Battle of Benghazi''' was a battle in the [[2011 Libyan Civil War|Libyan Civil War]] between army units and militiamen loyal to Libyan leader [[Muammar Gaddafi]], and [[anti-Gaddafi forces]]. The battle marked the start of a [[United Nations]]-mandated [[2011 military intervention in Libya|military intervention]] in the conflict, with [[Fighter aircraft|fighter jets]] from the [[French Air Force]] attacking and destroying several pro-Gaddafi units, forcing them to retreat. ||| ||| ||| +0 Second Battle of Bull Run ||| Battle of Antietam ||| The actions in Sigel's attack against A.P. Hill's division were typical of all the battles near Stony Ridge that day. Although the unfinished railroad grade provided natural defensive positions in some places, in general the Confederates eschewed a static defense, absorbing the Union blows and following up with vigorous counterattacks. (These were the same tactics that Jackson would employ at the [[Battle of Antietam]] a few weeks later.) Schurz's two brigades (under Brig. Gen. [[Alexander Schimmelfennig]] and Col. [[Włodzimierz Krzyżanowski]]) skirmished heavily with Gregg and Thomas, with both sides committing their forces piecemeal. As Milroy heard the sound of battle to his right, he ordered two of his regiments to assist Schurz. They achieved some success, and the 82nd Ohio breached the Confederate lines in a ground depression known as the Dump, but were eventually repulsed. Schenck and Reynolds, subjected to a heavy artillery barrage, answered with counterbattery fire, but did not advance their infantry. ||| Battle ||| August 29: Jackson defends Stony Ridge ||| +0 Second Battle of Bull Run ||| First Battle of Bull Run ||| The '''Second Battle of Bull Run''' or '''Second Manassas''' was fought August 28–30, 1862 in [[Prince William County, Virginia]], as part of the [[American Civil War]]. It was the culmination of an offensive campaign waged by [[Confederate States Army|Confederate]] [[General (CSA)|Gen.]] [[Robert E. Lee]]'s [[Army of Northern Virginia]] against [[Union Army|Union]] [[Major General (CSA)|Maj. Gen.]] [[John Pope (military officer)|John Pope]]'s [[Army of Virginia]], and a battle of much larger scale and numbers than the [[First Battle of Bull Run]] (or ''First Manassas'') fought on July 21, 1861 on the same ground. ||| ||| ||| +0 Second Battle of Deep Bottom ||| Battle of the Crater ||| In the [[First Battle of Deep Bottom]], July 27–29, Grant sent a force under [[Major general (United States)|Maj. Gens.]] [[Winfield S. Hancock]] and [[Philip H. Sheridan]] on an expedition threatening Richmond and its railroads, intending to attract [[Confederate States Army|Confederate]] troops away from the Petersburg defensive line. The Union infantry and cavalry force was unable to break through the Confederate fortifications at Bailey's Creek and Fussell's Mill and was withdrawn, but it achieved its desired effect of momentarily reducing Confederate strength at Petersburg. The planned attack on the fortifications went ahead on July 30, but the resulting [[Battle of the Crater]] was an embarrassing Union defeat, a fiasco of mismanaged resources by Grant's subordinates at a heavy cost in casualties. ||| Background ||| ||| +0 Second Battle of El Alamein ||| First Battle of El Alamein ||| The '''Second Battle of El Alamein''' (23 October – 11 November 1942) took place near the [[Egypt]]ian railway halt of [[El Alamein]]. With the Allies victorious, it marked a major turning point in the [[Western Desert Campaign]] of the Second World War. It followed the [[First Battle of El Alamein]], which had stalled the [[Axis Powers|Axis]] advance into Egypt, after which, in August 1942, [[Lieutenant General (United Kingdom)|Lieutenant-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] had taken command of the British [[Eighth Army (United Kingdom)|Eighth Army]] from General [[Claude Auchinleck]]. This victory turned the tide in the [[North African Campaign]] and ended the Axis threat to [[Egypt]], the [[Suez Canal]], and of gaining access to the Middle Eastern and Persian oil fields via North Africa. From a psychological perspective, Second El Alamein revived the morale of the Allies, being the first major offensive against the Axis since the start of the European war in 1939 in which the Western Allies had achieved a decisive victory. The battle coincided with the Allied invasion of [[French North Africa]] in [[Operation Torch]], which started 8 November. ||| ||| ||| +0 Second Battle of Fallujah ||| Pacific War ||| The battle proved to be the bloodiest of the war and the bloodiest battle involving American troops since the [[Vietnam War]]. Comparisons with the [[Battle of Hue City]] and the [[Pacific War|Pacific campaign]] of [[World War II]] were made. ||| Aftermath ||| ||| +0 Second Battle of Fallujah ||| World War II ||| The battle proved to be the bloodiest of the war and the bloodiest battle involving American troops since the [[Vietnam War]]. Comparisons with the [[Battle of Hue City]] and the [[Pacific War|Pacific campaign]] of [[World War II]] were made. ||| Aftermath ||| ||| +0 Second Battle of Kehl (1796) ||| Battle of Schliengen ||| In late summer of 1796, the Austrian force reacquired most of the territory lost to the French earlier in the summer. On 18 September 1796, the Austrians temporarily acquired control of the ''[[Bridgehead|tête-du-pont]]s'' (bridgeheads) joining Kehl and Strasbourg until a strong French counter-attack forced them to retreat, leaving the French in control of the bridges but the Austrians in control of the territory surrounding them. The situation remained in ''status quo'' until late October. Control of the surrounding territory there prevented the French from crossing to safety in Strasbourg, and required the French commander, [[Jean Victor Marie Moreau]], to withdraw toward Basel. Immediately after the [[Battle of Schliengen]] (24 October 1796), while most of Moreau's army retreated south to cross the Rhine at Hüningen, Count Baillet Latour moved his Austrian force to Kehl to begin a 100-day siege. ||| ||| ||| +0 Second Battle of Kehl (1796) ||| Siege of Kehl (1733) ||| In the 1790s, the Rhine was wild, unpredictable, and difficult to cross. Its channels and tributaries created islands of trees and vegetation that were alternately submerged by floods or exposed during the dry seasons. A complex of bridges, gates, fortifications and [[Barrage (dam)|barrage dam]]s linked Kehl with Strasbourg. These had been constructed by the fortress architect [[Sébastien Le Prestre de Vauban|Sébastien le Préstre de Vauban]] in the seventeenth century. The crossings had been contested before: in 1678 during the French-Dutch war, in [[Siege of Kehl (1703)|1703]] during the [[War of the Spanish Succession]], in [[Siege of Kehl (1733)|1733]] during the [[War of the Polish Succession]], and earlier in [[Battle of Kehl (1796)|Battle of Kehl]], when the French crossed into the German states on 23-24 June. Critical to French success would be the army's ability to cross the Rhine at will. The crossings at [[Hüningen]], near the Swiss city of [[Basle|Basel]], and at Kehl, offered access to most of southwestern Germany; from there, French armies could sweep north, south, or east, depending on their military goal. ||| ||| ||| +0 Second Battle of Naktong Bulge ||| Battle of Masan ||| When the North Koreans approached the Pusan Perimeter on August 5, they attempted the same frontal assault technique on the four main avenues of approach into the perimeter. Throughout August, the [[NK 6th Division]], and later the [[NK 7th Division]] engaged the [[US 25th Infantry Division]] at the [[Battle of Masan]], initially repelling a UN [[counteroffensive]] before countering with battles at [[Battle of Komam-ni|Komam-ni]] ||| Background ||| Pusan Perimeter ||| +0 Second Battle of Naktong Bulge ||| Battle of Nam River ||| During the North Koreans' September 1 offensive, the [[US 25th Infantry Division]]'s [[US 35th Infantry Regiment]] was heavily engaged in the [[Battle of Nam River]] north of [[Masan]]. On the 35th Regiment's right flank, just north of the confluence of the [[Nam River (Korea)|Nam River]] and the [[Naktong River]], was the [[US 9th Infantry Regiment]], [[US 2nd Infantry Division]]. There, in the southernmost part of the 2nd Infantry Division zone, the 9th Infantry Regiment held a sector more than {{convert|20,000|yd}} long, including the bulge area of the Naktong where the [[First Battle of Naktong Bulge]] had taken place earlier in August. ||| Battle ||| ||| +0 Second Battle of Naktong Bulge ||| Battle of Yongsan ||| After the [[First Battle of Naktong Bulge]], the [[US Army]]'s [[US 2nd Infantry Division|2nd Infantry Division]] was moved to defend the Naktong River line. The division, which was untried in combat, was struck with a strong attack by several divisions of the [[North Korean People's Army|Korean People's Army]] which crossed the river and struck all along the division's line. The force of the attack split the US 2nd Infantry Division in half, and the North Koreans were able to penetrate to [[Yongsan]], promoting a [[Battle of Yongsan|fight there]]. ||| ||| ||| +0 Second Battle of Newbury ||| Battle of Cropredy Bridge ||| This allowed the King to double back and return to Oxford to collect reinforcements. On 29 June, he then won a victory over Waller at [[Battle of Cropredy Bridge|Cropredy Bridge]]. Waller's army, most of which was unwilling to serve far from its home areas in London and the southeast,{{sfn|Rogers|1968|p=131}} was subsequently crippled for several weeks by desertions and threatened mutinies. This allowed the King to march after Essex's army. ||| Background ||| ||| +0 Second Battle of Newbury ||| Battle of Marston Moor ||| On 2 July however, the Covenanters and Parliamentarians in the north had defeated King Charles's nephew [[Prince Rupert of the Rhine|Prince Rupert]] at the [[Battle of Marston Moor]]. This victory gave them control of the north, and also released the Army of the ''[[Eastern Association]]'' under the [[Edward Montagu, 2nd Earl of Manchester|Earl of Manchester]] to serve in the south of England, once the city of [[Siege of York|York surrendered]] on 16 July. ||| Background ||| ||| +0 Second Battle of Newbury ||| First Battle of Newbury ||| The '''Second Battle of Newbury''' was a battle of the [[English Civil War]] fought on 27 October 1644, in [[Speen, Berkshire|Speen]], adjoining [[Newbury, Berkshire|Newbury]] in Berkshire. The battle was fought close to the site of the [[First Battle of Newbury]], which took place in late September the previous year. ||| ||| ||| +0 Second Battle of Newbury ||| Siege of York ||| On 2 July however, the Covenanters and Parliamentarians in the north had defeated King Charles's nephew [[Prince Rupert of the Rhine|Prince Rupert]] at the [[Battle of Marston Moor]]. This victory gave them control of the north, and also released the Army of the ''[[Eastern Association]]'' under the [[Edward Montagu, 2nd Earl of Manchester|Earl of Manchester]] to serve in the south of England, once the city of [[Siege of York|York surrendered]] on 16 July. ||| Background ||| ||| +0 Second Battle of Passchendaele ||| Battle of Cambrai (1917) ||| The attack was successful in capturing the German-held high ground along the Passchendaele–Westrozebeke ridge but the campaign was forced to end just short of [[Westrozebeke]]. No further attempt was made to build on the momentum of the attack. The significant victory of the Austro-German forces against the Italian Army at the [[Battle of Caporetto]] and the forthcoming [[Battle of Cambrai (1917)|Battle of Cambrai]] forced the British into a parallel diversion of resources away from the sector and make an end to offensive actions in the Ypres Salient. ||| ||| ||| +0 Second Battle of Sabine Pass ||| Capture of New Orleans ||| United States [[President of the United States|President]] [[Abraham Lincoln]] was well aware of Confederate intentions and sent an expedition to establish a military presence in Texas and to discourage Maximilian from opening trade with the Confederacy. The military Federal force was commanded by [[Major General (United States)|Major General]] [[Nathaniel P. Banks]], a political general with little discernible command ability. Banks's original intent was to launch a combined Army-Navy campaign in northwest [[Louisiana]]. The Union plan was to send Union Navy warships from the [[Mississippi River|Mississippi]] up the tributary [[Red River (Mississippi watershed)|Red River]], which was navigable upstream as far as where the boundaries of the Confederate states of Louisiana, Arkansas, and Texas came together. The Union declared its [[Capture of New Orleans]] on May 1, 1863, and after the July 3, 1863 surrender of Confederate [[Vicksburg, Mississippi|Vicksburg]], the Union military had better control of both the east and west banks and of the mouth of the Mississippi. Unusually low water in the Red River at this time, however, prevented even relatively low-draft Union [[gunboat]]s from operating effectively, and the anticipated overland Union invasion of Texas was further delayed. ||| Background ||| ||| +0 Second Battle of Sabine Pass ||| First Battle of Sabine Pass ||| Consequently, General Banks ordered his subordinate, Major General [[William B. Franklin]], who would coordinate with the U.S. Navy, to enter the [[Sabine River (Texas-Louisiana)|Sabine River]] from the [[Gulf of Mexico]] and defeat the small Confederate detachment at 'Fort Sabine' on the river's west bank (Texas side) at [[Sabine Pass]]. about 2 miles (3.2 km) upstream of the river mouth. The key U.S. Navy target in the [[First Battle of Sabine Pass]] was the original earthworks thrown up on the Texas (west) shore of the [[Sabine River (Texas–Louisiana)|Sabine River]] about three miles (4.8 km) south of [[Sabine Pass, Texas|Sabine City]], a tiny town with some wharfs on the east side of its main street. After the Navy gunboats subdued the fort, the first [[Amphibious landing|wave]] of U.S. Army infantrymen riding the deck of one of the gunboats would debark at the fort. They were to take Sabine City, secure the area for the main landing force, and prepare to march on [[Beaumont, Texas|Beaumont]]. This action would deny the Pass and the natural shallow-water harbor [[Sabine Lake]], upstream from the Gulf about 6 miles (about 9.6 km), to [[blockade runners]]. Beaumont, on higher ground about 18 miles (33 km) northwest of Sabine City, was the key to threatening [[Houston, Texas|Houston]]. If Union forces were to capture Beaumont, through which passed the railway line from Houston to [[New Orleans, Louisiana|New Orleans]], then the last remaining railroad connection between Texas and the eastern Confederacy would be under Union control. ||| Background ||| ||| +0 Second Battle of Sacket's Harbor ||| Battle of Fort George ||| On 25 May, Chauncey's squadron was sighted off Fort George. The British commander there, Brigadier General [[John Vincent (British Army officer)|John Vincent]], immediately sent a dispatch vessel to Kingston with the information. (Two days later, he was driven from his position with heavy losses at the [[Battle of Fort George]].) On learning of Chauncey's presence off Fort George, Yeo and Prevost realised that the American squadron and Dearborn's army would be probably be occupied there for several days. There was an opportunity to capture Sacket's Harbor, and deliver a decisive blow which would ensure that the British gained naval supremacy on the lake. ||| Background ||| ||| +0 Second Battle of Sacket's Harbor ||| Battle of Stoney Creek ||| The news of the British assault caused Commodore Chauncey to recall his entire squadron to Sacket's Harbor until ''General Pike'' was completed, leaving the American Army on the Niagara peninsula without support. They had already been checked at the [[Battle of Stoney Creek]], and Yeo attacked their vulnerable lakeside flank, capturing provision boats, tents and large quantities of supplies and forcing them to withdraw to Fort George. ||| Results ||| ||| +0 Second Battle of Sacket's Harbor ||| Invasion of Martinique (1809) ||| Although Prevost had previously commanded troops in an opposed landing at [[Invasion of Martinique (1809)|Martinique]] in 1809, he had not directly led them, but as at Sackett's Harbor he had delegated command to another officer (in this instance, Brigadier General [[Daniel Hoghton]]). He was to be noted for his caution in later actions. Colonel Baynes, to whom Prevost delegated command at Sackett's Harbor, had had little opportunity to lead troops in battle during his career. Yeo had a reputation as a fighting Captain gained by leading landing parties, but was new to the command and conditions on the lake, and cautiously kept most of his warships in deep water on 28 May. When he went ashore on 29 May to be close to the fighting, the larger British vessels were apparently left without orders and only ''Beresford'' attempted to intervene decisively. ||| Analysis ||| ||| +0 Second Battle of Sirte ||| Raid on Alexandria (1941) ||| The British expected opposition from German and Italian aircraft as well as Italian surface units. In December 1941, the two battleships ({{HMS|Queen Elizabeth|1913|2}} and {{HMS|Valiant|1914|2}}) stationed in the eastern Mediterranean had been disabled by [[Raid on Alexandria (1941)|an attack by Italian frogmen]], and so their Alexandria squadron consisted only of cruisers and destroyers. ||| Background ||| ||| +0 Second Battle of Tripoli Harbor ||| War of 1812 ||| Several of the United States' early naval heroes served in the blockade including [[Stephen Decatur]], [[William Bainbridge]], [[Charles Stewart (1778-1869)|Charles Stewart]], [[Isaac Hull]], [[David Porter (naval officer)|David Porter]], [[Reuben James]] and [[Edward Preble]]. Collectively referred to as ''Preble's Boys'', many of these officers would play a significant role in the upcoming [[War of 1812]]. ||| Notable veterans ||| ||| +0 Second Battle of Villers-Bretonneux ||| Battle of the Lys (1918) ||| The '''Second Battle of Villers-Bretonneux''' came during the period of the [[Battle of the Lys (1918)|Battle of the Lys]], 24–27 April 1918, but was launched against the Allied lines in front of [[Amiens]]. The German army built twenty-one tanks in the war and used fourteen [[A7V]] tanks in the attack, making it one of the biggest German tank operations in World War I. ||| ||| ||| +0 Second Battle of Ypres ||| First Battle of Ypres ||| During [[World War I]], the '''Second Battle of Ypres''' was fought from {{nowrap|22 April – 25 May 1915}} for control of the strategic [[Flemish]] town of [[Ypres]] in western [[Belgium]] after the [[First Battle of Ypres]] the previous autumn. It was the first mass use by Germany of [[Chemical weapon|poison gas]] on the [[Western Front (World War I)|Western Front]]. For the first time, a former colonial force (the [[1st Canadian Division]]) defeated that of a European power (the [[German Empire]]) on European soil (in the battles of St. Julien and [[Battle of Kitcheners' Wood|Kitcheners' Wood]], engagements during the battle). ||| ||| ||| +0 Second Battle of Zurich ||| First Battle of Zurich ||| The '''Second Battle of Zurich''' (25–26 September 1799) was a key victory by the Republican French army in Switzerland led by [[André Masséna]] over an Austrian and Russian force commanded by [[Alexander Korsakov]] near [[Zurich]]. It broke the stalemate that had resulted from the [[First Battle of Zurich]] three months earlier and led to the withdrawal of [[Russia]] from the [[War of the Second Coalition|Second Coalition]]. Most of the fighting took place on both banks of the river [[Limmat]] up to the gates of Zurich, and within the city itself. ||| ||| ||| +0 Second Battle of the Aisne ||| Battle of Arras (1917) ||| The '''Second Battle of the Aisne''' ({{lang-fr|Bataille du Chemin des Dames}} or {{lang|fr|''Seconde bataille de l'Aisne''}}) was a [[French Third Republic|French]] attempt to inflict a decisive defeat on the [[German Empire|German]] armies in [[France]] by an [[offensive (military)|offensive]] of several French [[army group]]s. The attacks became known as the [[Nivelle Offensive]] and began on 9 April with the [[Battle of Arras (1917)|Battle of Arras]]. The French attacks began on 16 April 1917 against the German-occupied [[Chemin des Dames]] ridge, some {{convert|110|km|mi}} to the north-east of [[Paris]] and south of the city of [[Laon]]. On 17 April the French Fourth Army, further to the south, began the [[Battle of the Hills]]. [[Robert Nivelle]], Commander-in-Chief of the [[French Army]], laid the plan in December 1916 after he had replaced [[Joseph Joffre]], who had lost the confidence of the French government and been removed from office. The objective of the Nivelle Offensive was to secure the prominent {{convert|80|km|mi}} long, east–west ridge of the Chemin des Dames and then to move north to capture the city of Laon. ||| ||| ||| +0 Second Battle of the Aisne ||| Battle of Messines (1917) ||| The British prolonged the Arras offensive into mid-May, despite uncertainty about French intentions, high losses and diminishing success, before moving their forces northwards to Flanders. The British captured [[Battle of Messines (1917)|Messines Ridge]] on 7 June and spent the rest of the year on the offensive in the [[Battle of Passchendaele|Third Battle of Ypres]] ({{nowrap|31 July – 10 November}}) and the [[Battle of Cambrai (1917)|Battle of Cambrai]] ({{nowrap|20 November – 8 December}}). The French conducted limited attacks at Verdun in August, which recaptured much of the remaining ground lost in 1916 and at Malmaison in October, which captured the west end of the Chemin des Dames and forced the Germans to withdraw from the ridge to the north bank of [[Ailette (river)|the Ailette]]. French Army morale recovered from the strategic failure of the Nivelle Offensive after Pétain introduced reforms increasing the welfare of French troops; {{nowrap|40–62 mutineers}} were shot as scapegoats. ||| ||| ||| +0 Second Battle of the Aisne ||| Battle of Passchendaele ||| The British prolonged the Arras offensive into mid-May, despite uncertainty about French intentions, high losses and diminishing success, before moving their forces northwards to Flanders. The British captured [[Battle of Messines (1917)|Messines Ridge]] on 7 June and spent the rest of the year on the offensive in the [[Battle of Passchendaele|Third Battle of Ypres]] ({{nowrap|31 July – 10 November}}) and the [[Battle of Cambrai (1917)|Battle of Cambrai]] ({{nowrap|20 November – 8 December}}). The French conducted limited attacks at Verdun in August, which recaptured much of the remaining ground lost in 1916 and at Malmaison in October, which captured the west end of the Chemin des Dames and forced the Germans to withdraw from the ridge to the north bank of [[Ailette (river)|the Ailette]]. French Army morale recovered from the strategic failure of the Nivelle Offensive after Pétain introduced reforms increasing the welfare of French troops; {{nowrap|40–62 mutineers}} were shot as scapegoats. ||| ||| ||| +0 Second Battle of the Aisne ||| Battle of the Hills ||| The '''Second Battle of the Aisne''' ({{lang-fr|Bataille du Chemin des Dames}} or {{lang|fr|''Seconde bataille de l'Aisne''}}) was a [[French Third Republic|French]] attempt to inflict a decisive defeat on the [[German Empire|German]] armies in [[France]] by an [[offensive (military)|offensive]] of several French [[army group]]s. The attacks became known as the [[Nivelle Offensive]] and began on 9 April with the [[Battle of Arras (1917)|Battle of Arras]]. The French attacks began on 16 April 1917 against the German-occupied [[Chemin des Dames]] ridge, some {{convert|110|km|mi}} to the north-east of [[Paris]] and south of the city of [[Laon]]. On 17 April the French Fourth Army, further to the south, began the [[Battle of the Hills]]. [[Robert Nivelle]], Commander-in-Chief of the [[French Army]], laid the plan in December 1916 after he had replaced [[Joseph Joffre]], who had lost the confidence of the French government and been removed from office. The objective of the Nivelle Offensive was to secure the prominent {{convert|80|km|mi}} long, east–west ridge of the Chemin des Dames and then to move north to capture the city of Laon. ||| ||| ||| +0 Second Battle of the Aisne ||| Nivelle Offensive ||| The '''Second Battle of the Aisne''' ({{lang-fr|Bataille du Chemin des Dames}} or {{lang|fr|''Seconde bataille de l'Aisne''}}) was a [[French Third Republic|French]] attempt to inflict a decisive defeat on the [[German Empire|German]] armies in [[France]] by an [[offensive (military)|offensive]] of several French [[army group]]s. The attacks became known as the [[Nivelle Offensive]] and began on 9 April with the [[Battle of Arras (1917)|Battle of Arras]]. The French attacks began on 16 April 1917 against the German-occupied [[Chemin des Dames]] ridge, some {{convert|110|km|mi}} to the north-east of [[Paris]] and south of the city of [[Laon]]. On 17 April the French Fourth Army, further to the south, began the [[Battle of the Hills]]. [[Robert Nivelle]], Commander-in-Chief of the [[French Army]], laid the plan in December 1916 after he had replaced [[Joseph Joffre]], who had lost the confidence of the French government and been removed from office. The objective of the Nivelle Offensive was to secure the prominent {{convert|80|km|mi}} long, east–west ridge of the Chemin des Dames and then to move north to capture the city of Laon. ||| ||| ||| +0 Second Battle of the Corunna Road ||| First Battle of the Corunna Road ||| The [[Battle of Madrid]] in November 1936 had been fought to a standstill, with the Nationalists under [[Francisco Franco|Franco]] failing to take the city. They then started to besiege it, aiming to cut its links to the rest of [[Spain]]. Franco decided to attack the city from the north-west in order to cut off water and electricity supplies from the [[Sierra de Guadarrama]] and encircle the city. After a [[First Battle of the Corunna Road|failed offensive]] in November, the Nationalists summoned a force of 17,000 men, led by General Orgaz, with four mobile brigades (led by García Escámez [Francisco García Escámez], Barron, Saenz de Buruaga and Monasterio), backed by heavy artillery and [[Junkers Ju 52|Ju-52]] bombers. The Republican army had a few battalions led by [[Luis Barceló]]. ||| Background ||| ||| +0 Second Battle of the Masurian Lakes ||| Western Front (World War I) ||| [[German Empire|German]] [[Chief of staff (military)|Chief of Staff]] [[Erich von Falkenhayn]] strongly believed that the war would be won on the [[Western Front (World War I)|Western Front]]. Nonetheless he sent four additional army corps to [[Paul von Hindenburg]], commander of their Eastern Front. ||| The Attack ||| ||| +0 Second Battle of the Somme (1918) ||| Battle of Cambrai (1918) ||| In late September/early October, one of the epic battles of the whole war was the breach of the Hindenburg Line (the [[Battle of St. Quentin Canal]]) by British, Australian and American troops (under the command of Australian General [[John Monash]]). Soon after, the Canadians breached the Hindenburg Line at the [[Battle of Cambrai (1918)|Battle of Cambrai]]. ||| Battle ||| ||| +0 Second Battle of the Somme (1918) ||| Battle of Saint-Mihiel ||| A key part of the German supply line ran parallel with the front. This second 1918 battle around the Somme was part of a strategy designed to push parts of the German line back behind this main supply line so cutting it and making impossible the efficient maintenance of the German forces on the front. The campaign began with battle of Bapaume and, starting shortly after, the [[Battle of Saint-Mihiel]], outside the Somme area, with the aim of reducing salients before using the fluidity of the broken line to press on to the strategic railway. It was hoped that this fluidity would be present as, owing to the German advance in the spring, the German forces were well in advance of their hitherto impregnable, very well prepared defences on the Hindenburg Line. ||| Battle ||| ||| +0 Second Battle of the Somme (1918) ||| Hindenburg Line ||| On the morning of 2 September, after a heavy battle, the Canadian Corps seized control of the [[Drocourt-Quéant]] line (representing the west edge of the [[Hindenburg Line]]). The battle was fought by the Canadian [[1st Canadian Division|1st Division]], [[4th Canadian Division|4th Division]], and by the [[52nd (Lowland) Infantry Division|British 52nd Division]]. By noon that day the German commander, [[Erich Ludendorff]], had decided to withdraw behind the [[Canal du Nord]]. ||| Battle ||| ||| +0 Second Battle of the Somme (1918) ||| Operation Michael ||| The most significant feature of the 1918 Somme battles was that with the [[Operation Michael|first Battle of the Somme of 1918]] having halted what had begun as an overwhelming German offensive, the second formed the central part of the [[Allies of World War I|Allies]]' advance to the [[Armistice with Germany|Armistice of 11 November]]. ||| ||| ||| +0 Second Battle of the Somme (1918) ||| Spring Offensive ||| The '''Second Battle of the Somme''' of 1918 was fought during the [[World War I|First World War]] on the [[Western Front (World War I)|Western Front]] from the end of the summer, in the [[drainage basin|basin]] of the [[River Somme]]. It was part of a series of successful counter-offensives in response to the [[German Army (German Empire)|German]] [[Spring Offensive]], after a pause for redeployment and supply. ||| ||| ||| +0 Second Boer War ||| Battle of France ||| The counterinsurgency techniques and lessons (the restriction of movement, the containment of space, the ruthless targeting of anything, everything and anyone that could give sustenance to guerrillas, the relentless harassment through sweeper groups coupled with rapid reaction forces, the sourcing and coordination of intelligence, and the nurturing of native allies) learned during the Boer War were used by the British (and other forces) in future guerrilla campaigns including to counter [[Federation of Malaya|Malayan]] communist rebels during the [[Malayan Emergency]]. In World War II the British also adopted some of the concepts of raiding from the Boer commandos when, after the [[Battle of France|fall of France]], they set up their special raiding forces, and in acknowledgement of their erstwhile enemies, chose the name [[British Commandos]]. ||| Aftermath and analysis ||| ||| +0 Second Congo War ||| Angolan Civil War ||| The [[Angola]]n government had fought against [[Mobutu Sésé Seko]] in the [[First Congo War]] because of his support for rebel [[UNITA]] in the [[Angolan Civil War]]. The Angolan government wanted to eliminate UNITA operations in southern Congo, which [[Conflict diamond#Angola|exchanged diamonds extracted from rebel-held Angola for foreign weapons]]. ||| 1998–1999 ||| Foreign supporters of the Congo government ||| Angola +0 Second Congo War ||| First Congo War ||| The '''Second Congo War''' (also known as the '''Great War of Africa''' or the '''Great African War''', and sometimes referred to as the '''African World War''') began in August 1998, little more than a year after the [[First Congo War]] (and involving some of the same issues), in the [[Democratic Republic of the Congo]], and officially ended in July 2003 when the [[Transitional Government of the Democratic Republic of the Congo]] took power. However, hostilities have continued since then in the ongoing [[Lord's Resistance Army insurgency]], and the [[Kivu conflict|Kivu]] and [[Ituri conflict]]s. ||| ||| ||| +0 Second Desmond Rebellion ||| Battle of Affane ||| The first Desmond rebellion (1569–73) had been an armed protest against English intrusion into the Desmond territories. Specifically it was against the creation of the office of 'Lord President' (governor) in the province of Munster and the English pursuit of policies that favoured the FitzGerald's rivals, the Butlers of Ormonde, and various English colonists. The most pressing grievance of the Geraldines had been the government's arrest of Gerald the Earl and his brother John of Desmond in 1568 for their part in a private war against the Butlers in 1565, which had culminated in the [[Battle of Affane]] in [[County Waterford]]. ||| Background ||| First rebellion, 1569–73 ||| +0 Second Desmond Rebellion ||| Dutch Revolt ||| In exile in Europe from 1575, Fitzmaurice tried to get backing for a new rebellion. He intrigued at the French and Spanish courts for a foreign invasion of Ireland. However, [[Philip II of Spain]] showed no interest in supporting him, as he was already overstretched fighting the [[Dutch Revolt]] in the [[Netherlands]]. Fitzmaurice had more success though, at the court of [[Pope Gregory XIII]], where he met with exiled English [[Roman Catholic]] priests such as [[William Allen (cardinal)|William Allen]] and [[Nicholas Sanders]] who were seeking to invade England, depose Elizabeth and restore a Catholic monarchy. ||| Aborted invasion of 1578 ||| ||| +0 Second Desmond Rebellion ||| Spanish Armada ||| * Juan Martinez de Recalde, Spanish member of the invasion force who returned later in the [[Spanish Armada]] ||| Notable participants ||| ||| +0 Second English Civil War ||| First English Civil War ||| The '''Second English Civil War''' (1648–1649) was the second of three wars known collectively as the [[English Civil War]] (or ''Wars''), which refers to the series of armed conflicts and political machinations which took place between [[Parliament of England|Parliamentarians]] and [[Cavalier|Royalist]]s from 1642 until 1651 and also include the [[First English Civil War]] (1642–1646) and the [[Third English Civil War]] (1649–1651). ||| ||| ||| +0 Second Raid on Schweinfurt ||| Operation Overlord ||| As a contrast to the strategy of using heavy bombers against a particular wartime resource, the [[Oil Campaign of World War II]] was essentially started by the [[RAF Bomber Command]] as early as August 1941 — two months after Hitler's invasion of the Soviet Union, and six months before the United States entered the war. It went forward relentlessly from that time with the USAAF joining in on the efforts by late June 1943 during daylight. The Oil Campaign had its priority diminished from time to time with important events, such as the lead-up to [[Operation Overlord]], which by June 1944 demanded heavy bomber support for a time, but soon thereafter the relentless attacks by day and night resumed, starving the entire German ''Wehrmacht'' military [[Oil Campaign of World War II|of fuel and lubricants]] from the autumn of 1944 onwards. ||| Result ||| ||| +0 Second Siege of Gerona ||| Battle of Gerona (1808) ||| After the Spanish people rebelled against occupation by the [[First French Empire]], Duhesme found himself badly isolated in [[Barcelona]]. The Franco-Italian corps was surrounded by swarms of [[Catalonia|Catalan]] [[miquelets]] (militia) supported by a few Spanish regulars. When the French general received news that a French division under [[Honoré Charles Reille]] was coming to his assistance, he decided to capture [[Girona]]. Having failed to [[Battle of Gerona (1808)|storm Girona]] in June, Duhesme mounted a formal siege operation. Duhesme's formal siege operations were interrupted by Caldagues' attack in mid-August. Though the Franco-Italian forces suffered few casualties, Duhesme and his soldiers became discouraged and they ended the siege. ||| ||| ||| +0 Second Siege of Gerona ||| Siege of Roses (1808) ||| While Reille retreated to [[Figueres]] without much trouble, Duhesme's men were harassed during their return to [[Barcelona]] by the Spanish army and the British navy. By the time the French forces arrived in [[Barcelona]], they were without artillery and badly demoralized. Meanwhile, [[Napoleon Bonaparte|Emperor Napoleon I]] assembled a new corps under [[Laurent Gouvion Saint-Cyr]] to relieve Duhesme from his predicament. The next action of the Peninsular War would be the [[Siege of Roses (1808)|Siege of Roses]], from 7 November to 5 December 1808. ||| ||| ||| +0 Second Siege of Missolonghi ||| Battle of Karpenisi ||| After the [[First Siege of Missolonghi|first unsuccessful attempt]] to take the town in 1822, another expedition to western [[Central Greece]] was undertaken by [[Mustafa Reshiti|Mustai Pasha]] of [[Shkoder]]. Mustai proceeded through the city of [[Trikala]] to [[Karpenisi]], where a first Greek attempt to stop his advance resulted in the [[Battle of Karpenisi]]. During this battle, the Ottoman casualties were 1,200 troops, but the Greeks lost their commander, [[Markos Botsaris]]. The second unsuccessful Greek attempt to stop Mustai at Mount Kaliakouda, on 29 August 1823, resulted in 200 Greek casualties. ||| Background ||| ||| +0 Second Siege of Missolonghi ||| Third Siege of Missolonghi ||| Missolonghi remained under Greek control. Its resistance achieved wider fame when [[Lord Byron]] arrived there, dying in the town of fever in April 1824. The city was besieged for a [[Third Siege of Missolonghi|third and final time]], resisting both Ottoman and Egyptian armies for almost a year, until its final fall on April 10, 1826. ||| Aftermath ||| ||| +0 Second Siege of Zaragoza ||| Battle of Tudela ||| These movements developed into the [[Battle of Tudela]]. This battle was a major victory for the French, but the armies of the Spanish generals ([[Juan O'Neylle|O'Neylle]] and Castaños) were able to flee to Saragossa, escaping with the large majority of their war chests and cannons. The stage was now set for a second siege. ||| Historical context ||| ||| +0 Second Sino-Japanese War ||| Attack on Pearl Harbor ||| China fought Japan, with some economic help from Germany (see [[Sino-German cooperation until 1941]]), the [[Soviet Volunteer Group|Soviet Union]], the [[British Empire]] and the [[American Volunteer Group|United States]]. After the [[Attack on Pearl Harbor|Japanese attack on Pearl Harbor]] in 1941, the war would merge into the greater conflict of [[World War II]] as a major front of what is broadly known as the [[Pacific War]]. The Second Sino-Japanese War was the largest Asian war in the 20th century. It accounted for the majority of civilian and military casualties in the [[Pacific War]], with anywhere between 10 and 25 million Chinese civilians and over 4 million Chinese and Japanese military personnel dying from war-related violence, famine, and other causes (see [[World War II casualties]]). ||| ||| ||| +0 Second Sino-Japanese War ||| Battle of France ||| By 1941 Japan held most of the eastern coastal areas of China and [[Vietnam]], but [[guerrilla warfare|guerilla]] fighting continued in these occupied areas. Japan had suffered high casualties from unexpectedly stubborn Chinese resistance, and neither side could make any swift progress in the manner of [[Nazi Germany]] in [[Battle of France|Western Europe]]. ||| Course of the war ||| Japanese expansion ||| +0 Second Sino-Japanese War ||| Battle of Rehe ||| ** {{Flagdeco|Empire of Japan}} [[Battle of Rehe]] February 1933 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +0 Second Sino-Japanese War ||| Battle of Stalingrad ||| After the signing of the [[Anti-Comintern Pact]] between Germany and Japan, the Soviet Union hoped to keep China in the war as a way of deterring the Japanese from invading [[Siberia]], thus saving itself from the threat of a [[two-front war]]. In September 1937, the Soviet leadership signed the [[Sino-Soviet Non-Aggression Pact]] and approved [[Operation Zet]], the formation of a [[Soviet Volunteer Group|Soviet volunteer air force]]. As part of this secret operation, Soviet technicians upgraded and ran some of China's transportation systems. [[Bomber]]s, [[Fighter aircraft|fighters]], supplies and advisors arrived, including Soviet general [[Vasily Chuikov]], the future victor of the [[Battle of Stalingrad]]. Prior to the entrance of the Western Allies, the Russians provided the largest amount of foreign aid to China, totalling some $250 million in credits for munitions and other supplies. In April 1941, Soviet aid ended as a result of the [[Soviet–Japanese Neutrality Pact]] and the beginning of the [[Eastern Front (World War II)|Great Patriotic War]]. This pact enabled the Soviet Union to avoid fighting against Germany and Japan at the same time. In August 1945, Soviet Union annulled the neutrality pact with Japan and invaded Manchuria, Inner Mongolia, the Kuril Islands and North Korea. As well, the Soviets continued to support the [[Chinese Communist Party]]. In total, 3,665 Soviet advisors and pilots served in China,{{sfn|Taylor|page=156}} and 227 of them died fighting there. ||| Foreign support for China ||| Soviet support ||| +0 Second Sino-Japanese War ||| Battle of Toungoo ||| ** {{Flagdeco|Republic of China (1912–1949)}} [[Battle of Toungoo]] ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +0 Second Sino-Japanese War ||| Battle of Wanjialing ||| ** {{Flagdeco|Republic of China (1912–1949)}} [[Battle of Wanjialing]] ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +0 Second Sino-Japanese War ||| Battle of Yenangyaung ||| Chiang Kai-shek continued to receive supplies from the United States. However, in contrast to the Arctic supply route to the Soviet Union which stayed open through most of the war, sea routes to China and the [[Yunnan–Vietnam Railway]] had been closed since 1940. Therefore, between the [[Japanese conquest of Burma|closing of the Burma Road]] in 1942 and its re-opening as the [[Ledo Road]] in 1945, foreign aid was largely limited to what could be flown in over '[[The Hump]]'. On 16 April 1942, in Burma 7,000 British soldiers were encircled by the Japanese 33rd Division during the [[Battle of Yenangyaung]] and rescued by the Chinese 38th Division. ||| Course of the war ||| Entrance of the Western Allies ||| +0 Second Sino-Japanese War ||| Chinese Civil War ||| On 12 December 1936 a deeply disgruntled Zhang Xueliang [[Xi'an Incident|kidnapped Chiang Kai-shek]] in [[Xi'an]], hoping to force an end to the conflict between KMT and CCP. To secure the release of Chiang, the KMT agreed to a temporary end to the [[Chinese Civil War]] and, on 24 December, the creation of a [[Second United Front (China)|United Front]] between the CCP and KMT against Japan. The alliance having salutary effects for the beleaguered CCP, they agreed to form the [[New Fourth Army]] and the [[8th Route Army]] and place them under the nominal control of the NRA. The CCP's Red Army fought alongside KMT forces during the [[Battle of Taiyuan]], and the high point of their cooperation came in 1938 during the [[Battle of Wuhan]]. ||| Course of the war ||| Relationship between the Nationalists and Communists ||| +0 Second Sino-Japanese War ||| Defense of Harbin ||| ** {{Flagdeco|Empire of Japan}} [[Defense of Harbin]] January 1932 ||| Military engagements of the Second Sino-Japanese War ||| Battles ||| +0 Second Sino-Japanese War ||| Eastern Front (World War II) ||| After the signing of the [[Anti-Comintern Pact]] between Germany and Japan, the Soviet Union hoped to keep China in the war as a way of deterring the Japanese from invading [[Siberia]], thus saving itself from the threat of a [[two-front war]]. In September 1937, the Soviet leadership signed the [[Sino-Soviet Non-Aggression Pact]] and approved [[Operation Zet]], the formation of a [[Soviet Volunteer Group|Soviet volunteer air force]]. As part of this secret operation, Soviet technicians upgraded and ran some of China's transportation systems. [[Bomber]]s, [[Fighter aircraft|fighters]], supplies and advisors arrived, including Soviet general [[Vasily Chuikov]], the future victor of the [[Battle of Stalingrad]]. Prior to the entrance of the Western Allies, the Russians provided the largest amount of foreign aid to China, totalling some $250 million in credits for munitions and other supplies. In April 1941, Soviet aid ended as a result of the [[Soviet–Japanese Neutrality Pact]] and the beginning of the [[Eastern Front (World War II)|Great Patriotic War]]. This pact enabled the Soviet Union to avoid fighting against Germany and Japan at the same time. In August 1945, Soviet Union annulled the neutrality pact with Japan and invaded Manchuria, Inner Mongolia, the Kuril Islands and North Korea. As well, the Soviets continued to support the [[Chinese Communist Party]]. In total, 3,665 Soviet advisors and pilots served in China,{{sfn|Taylor|page=156}} and 227 of them died fighting there. ||| Foreign support for China ||| Soviet support ||| +0 Second Sino-Japanese War ||| Ili Rebellion ||| The [[Ili Rebellion]] broke out in [[Xinjiang]] when the Kuomintang Chinese Muslim Officer [[Liu Bin-Di]] was killed while fighting Turkic Uyghur Rebels in November 1944. The Soviet Union supported the Turkic rebels against the Kuomintang, and Kuomintang forces were fighting back. ||| Contemporaneous wars being fought by China ||| ||| +0 Second Sino-Japanese War ||| January 28 Incident ||| Incessant fighting followed the Mukden Incident. In 1932, Chinese and Japanese troops fought a battle known as the [[January 28 Incident]]. This resulted in the [[demilitarisation]] of [[Shanghai]], which forbade the Chinese from deploying troops in their own city. In Manchukuo there was an [[Pacification of Manchukuo|ongoing campaign]] to defeat the anti-Japanese [[Anti-Japanese Volunteer Armies|volunteer armies]] that arose from widespread outrage over the policy of non-resistance to Japan. ||| Background ||| Invasion of Manchuria, interventions in China ||| +0 Second Sino-Japanese War ||| Japanese invasion of Manchuria ||| The war was the result of a decades-long [[Imperialism#Japan|Japanese imperialist]] policy aimed at expanding its influence politically and militarily in order to secure access to raw material reserves and other economic resources in the area, particularly food and labour, and engage war with others in the policy context of aggressive modernized militarism in the Asia-Pacific, at the height of [[Imperial Rule Assistance Association]]'s [[Hideki Tojo]] cabinet and with the order from [[Emperor Shōwa]]. Before 1937, China and Japan fought in small, localized engagements, so-called 'incidents'. In 1931, the [[Japanese invasion of Manchuria]] by Japan's [[Kwantung Army]] followed the [[Mukden Incident]]. The last of these incidents was the [[Marco Polo Bridge Incident]] of 1937, which marked the beginning of [[total war]] between the two countries. ||| ||| ||| +0 Second Sino-Japanese War ||| Long March ||| After the [[Mukden Incident]] in 1931, Chinese public opinion was strongly critical of Manchuria's leader, the 'young marshal' [[Zhang Xueliang]], for his nonresistance to the Japanese invasion, even though the Kuomintang central government was also responsible for this policy, giving Zhang an order to 'improvise' while not offering support. After losing Manchuria to the Japanese, Zhang and his [[Fengtian clique|Northeast Army]] were given the duty of suppressing the [[Chinese Red Army|Red Army]] of the [[Chinese Communist Party]] (CCP) in [[Shaanxi]] after their [[Long March]]. This resulted in great casualties for his Northeast Army, which received no support in manpower or weaponry from Chiang Kai-shek. ||| Course of the war ||| Relationship between the Nationalists and Communists ||| +0 Second Sino-Japanese War ||| Mukden Incident ||| The war was the result of a decades-long [[Imperialism#Japan|Japanese imperialist]] policy aimed at expanding its influence politically and militarily in order to secure access to raw material reserves and other economic resources in the area, particularly food and labour, and engage war with others in the policy context of aggressive modernized militarism in the Asia-Pacific, at the height of [[Imperial Rule Assistance Association]]'s [[Hideki Tojo]] cabinet and with the order from [[Emperor Shōwa]]. Before 1937, China and Japan fought in small, localized engagements, so-called 'incidents'. In 1931, the [[Japanese invasion of Manchuria]] by Japan's [[Kwantung Army]] followed the [[Mukden Incident]]. The last of these incidents was the [[Marco Polo Bridge Incident]] of 1937, which marked the beginning of [[total war]] between the two countries. ||| ||| ||| +0 Second Sino-Japanese War ||| Northern Expedition ||| Japan increasingly exploited internal conflicts in China to reduce the strength of its fractious opponents. This was precipitated by the fact that even years after the [[Northern Expedition]], the political power of the Nationalist government was limited to just the area of the [[Yangtze River Delta]]. Other sections of China were essentially in the hands of local Chinese warlords. Japan sought various [[hanjian|Chinese collaborators]] and helped them establish governments friendly to Japan. This policy was called the ''Specialization'' of [[North China]] ({{zh|c=華北特殊化|p=húaběitèshūhùa|links=no}}), more commonly known as the North China Autonomous Movement. The northern provinces affected by this policy were [[Chahar Province|Chahar]], [[Suiyuan Province|Suiyuan]], [[Hebei]], [[Shanxi]], and [[Shandong]]. ||| Background ||| Invasion of Manchuria, interventions in China ||| +0 Second Sino-Japanese War ||| Republic of China presidential election, 2000 ||| Traditionally, the [[Republic of China]] government has held celebrations marking the [[Victory Day]] on September 9 (now known as [[Armed Forces Day]]) and Taiwan's [[Retrocession Day]] on October 25. However, after the [[Democratic Progressive Party]] (DPP) won the [[Republic of China presidential election, 2000|presidential election]] in 2000, these national holidays commemorating the war has been cancelled as the [[Taiwan Independence|pro-independent]] DPP does not see the relevancy of celebrating events that happened in mainland China. ||| Conclusion and aftermath ||| Aftermath ||| Aftermath in Taiwan +0 Second Sino-Japanese War ||| Republic of China presidential election, 2008 ||| Meanwhile, many KMT supporters, particularly veterans who retreated with the government in 1949, still have an emotional interest in the war. For example, in celebrating the 60th anniversary of the end of war in 2005, the cultural bureau of KMT stronghold [[Taipei]] held a series of talks in the [[Sun Yat-sen Memorial Hall]] regarding the war and post-war developments, while the KMT held its own exhibit in the KMT headquarters. Whereas the KMT won the [[Republic of China presidential election, 2008|presidential election]] in 2008, the ROC government resumed commemorating the war. ||| Conclusion and aftermath ||| Aftermath ||| Aftermath in Taiwan +0 Second Sino-Japanese War ||| Russo-Japanese War ||| The chaotic situation in China provided excellent opportunities for Japanese expansionism. Japan saw Manchuria as a limitless supply of raw materials, a market for its manufactured goods (now excluded from the influence of many Western countries in [[Great Depression|Depression]] era [[tariff]]s), and as a protective [[buffer state]] against the [[Soviet Union]] in [[Siberia]]. [[Japanese invasion of Manchuria|Japan invaded Manchuria]] outright after the [[Mukden Incident]] ({{zh|s=九一八事变|t=九一八事變|hp=Jiǔyībā Shìbiàn|links=no}}) in September 1931. Japan charged that their rights in Manchuria, established by the [[Russo-Japanese War]], had been systematically violated and that there were 'more than 120 cases of infringement of rights and interests, interference with business, boycott of Japanese goods, unreasonable taxation, detention of individuals, confiscation of properties, eviction, demand for cessation of business, assault and battery, and the oppression of Korean residents.' ||| Background ||| Invasion of Manchuria, interventions in China ||| +0 Second Sino-Japanese War ||| Xinhai Revolution ||| The [[Republic of China (1912–1949)|Republic of China]] was founded in 1912, following the [[Xinhai Revolution]] which overthrew the Qing Dynasty. However, central authority disintegrated and the Republic's authority succumbed to that of [[Warlord era|regional warlords]]. Unifying the nation and repelling imperialism seemed a very remote possibility.{{sfn|Wilson|page=4}} Some warlords even aligned themselves with various foreign powers in an effort to wipe each other out. For example, the warlord [[Zhang Zuolin]] of [[Manchuria]] openly cooperated with the Japanese for military and economic assistance.<ref name='Foreign News: Revenge?-TIME-MAGAZINE'>{{Cite news ||| Background ||| Republic of China ||| +0 Second Taranaki War ||| First Taranaki War ||| The '''Second Taranaki War''' is a term used by some historians for the period of hostilities between [[Māori people|Māori]] and the New Zealand Government in the [[Taranaki]] district of [[New Zealand]] between 1863 and 1866. The term is avoided by some historians, who either describe the conflicts as merely a series of West Coast campaigns that took place between the [[First Taranaki War|Taranaki War]] (1860–1861) and [[Titokowaru's War]] (1868–69), or an extension of the [[First Taranaki War]]. ||| ||| ||| +0 Second battle of Boulou ||| Siege of Toulon ||| Fresh from his victory at the [[Siege of Toulon (1793)|Siege of Toulon]], General of Division [[Jacques François Dugommier]] arrived to lead the army on 16 January 1794. He began a complete reorganization of the army, setting up supply depots, hospitals, and arsenals, and also improving roads. After getting reinforcements from the [[Toulon]] army, Dugommier's field army numbered 28,000. These troops were supported by 20,000 garrison troops and 9,000 green volunteers. He formed his field army into three infantry divisions under Generals of Division [[Dominique Catherine de Pérignon]], [[Pierre Augereau]], and [[Pierre François Sauret]]. There was a 2,500-strong cavalry division led by General of Division André de la Barre and a reserve headed by [[General of Brigade]] [[Claude Perrin Victor]]. ||| Background ||| New commanders ||| +0 Segovia Offensive ||| Biscay Campaign ||| In April 1937, the Nationalists started an offensive against the [[Second Spanish Republic|Republican]] held, [[Biscay Campaign|Biscay Province]], and, by the end of May, the Navarrese troops had reached the eastern side of Bilbao's defenses. The Republican government then decided to launch two diversionary offensives on the [[Huesca Offensive|Aragon]] and Madrid fronts in order to divert Nationalist troops. ||| Background ||| ||| +0 September 11 attacks ||| 1982 Lebanon War ||| Bin Laden claimed, in 2004, that the idea of destroying the towers had first occurred to him in 1982, when he witnessed Israel's bombardment of high-rise apartment buildings during the [[1982 Lebanon War]]. In 2004 and 2010, bin Laden again connected the September 11 attacks with U.S. support of Israel, although most of the letter expressed bin Laden's disdain for President Bush and bin Laden's hope to 'destroy and bankrupt' the U.S. ||| Background ||| Motives ||| +0 September 11 attacks ||| Death of Osama bin Laden ||| Suspicion for the attack quickly fell on al-Qaeda. The United States responded to the attacks by launching the [[War on Terror]] and [[War in Afghanistan (2001–present)|invading Afghanistan]] to depose the [[Taliban]], which had harbored al-Qaeda. Many countries strengthened their [[anti-terrorism legislation]] and expanded the powers of [[law enforcement agencies|law enforcement]] and [[Intelligence agency|intelligence agencies]] to prevent terrorist attacks. Although al-Qaeda's leader, [[Osama bin Laden]], initially denied any involvement, in 2004 he claimed [[Responsibility for the September 11 attacks|responsibility for the attacks]]. Al-Qaeda and bin Laden cited [[Israel–United States relations|U.S. support of Israel]], the presence of [[Operation Southern Watch|U.S. troops in Saudi Arabia]], and [[Iraq sanctions|sanctions against Iraq]] as motives. Having evaded capture for almost a decade, [[Death of Osama bin Laden|bin Laden was located and killed]] by [[SEAL Team Six|members]] of the [[United States Armed Forces|U.S. military]] in May 2011. ||| ||| ||| +0 September 11 attacks ||| Iraq War ||| The September 11 attacks also led to the U.S. [[War in Afghanistan (2001–present)|wars in Afghanistan]] and [[Iraq War|Iraq]], ||| Effects ||| Economic ||| +0 Seven Days Battles ||| Battle of Seven Pines ||| As McClellan's army reached the outskirts of Richmond, a minor battle occurred at [[Battle of Hanover Court House|Hanover Court House]] (May 27), but it was followed by a surprise attack by Johnston at the [[Battle of Seven Pines]] or Fair Oaks on May 31 and June 1. The battle was inconclusive, with heavy casualties, but it had lasting effects on the campaign. Johnston was wounded and replaced on June 1 by the more aggressive Robert E. Lee. Lee spent almost a month extending his defensive lines and organizing his [[Army of Northern Virginia]]; McClellan accommodated this by sitting passively to his front, waiting for dry weather and roads, until the start of the Seven Days. ||| Start of the Peninsula Campaign ||| ||| +0 Seven Years' War ||| Battle of Carillon ||| British Prime Minister William Pitt's focus on the colonies for the 1758 campaign paid off with the [[Siege of Louisbourg (1758)|taking of Louisbourg]] after French reinforcements were blocked by British naval victory in the [[Battle of Cartagena (1758)|Battle of Cartagena]] and in the successful [[Forbes Expedition|capture of Fort Duquesne]] The British also continued the process of deporting the Acadian population with a wave of major operations against [[Ile Saint-Jean Campaign|Île Saint-Jean]] (present-day [[Prince Edward Island]]), the [[St. John River Campaign|St. John River valley]], and the [[Petitcodiac River Campaign|Petitcodiac River valley]]. The celebration of these successes was dampened by their embarrassing defeat in the [[Battle of Carillon]] (Ticonderoga), in which 4,000 French troops repulsed 16,000 British. ||| Colonies ||| North America ||| +0 Seven Years' War ||| Battle of Fort Oswego (1756) ||| In 1756 and 1757 the French captured forts [[Battle of Fort Oswego (1756)|Oswego]] ||| Colonies ||| North America ||| +0 Seven Years' War ||| Battle of Jumonville Glen ||| The most important French fort planned was intended to occupy a position at 'the Forks' where the [[Allegheny River|Allegheny]] and [[Monongahela River]]s meet to form the [[Ohio River]] (present day [[Pittsburgh]], Pennsylvania). Peaceful British attempts to halt this fort construction were unsuccessful, and the French proceeded to build the fort they named Fort Duquesne. British colonial militia from Virginia were then sent to drive them out. Led by [[George Washington]], they ambushed a small French force at [[Battle of Jumonville Glen|Jumonville Glen]] on 28 May 1754 killing ten, including commander [[Joseph Coulon de Jumonville|Jumonville]]. ||| Background ||| In North America ||| +0 Seven Years' War ||| Battle of Signal Hill ||| Meanwhile, the long British naval blockade of French ports had sapped the morale of the French populace. Morale declined further when news of defeat in the [[Battle of Signal Hill]] in [[Colony of Newfoundland|Newfoundland]] reached Paris. ||| Europe ||| 1761–62 ||| +0 Seven Years' War ||| Siege of Louisbourg (1758) ||| British Prime Minister William Pitt's focus on the colonies for the 1758 campaign paid off with the [[Siege of Louisbourg (1758)|taking of Louisbourg]] after French reinforcements were blocked by British naval victory in the [[Battle of Cartagena (1758)|Battle of Cartagena]] and in the successful [[Forbes Expedition|capture of Fort Duquesne]] The British also continued the process of deporting the Acadian population with a wave of major operations against [[Ile Saint-Jean Campaign|Île Saint-Jean]] (present-day [[Prince Edward Island]]), the [[St. John River Campaign|St. John River valley]], and the [[Petitcodiac River Campaign|Petitcodiac River valley]]. The celebration of these successes was dampened by their embarrassing defeat in the [[Battle of Carillon]] (Ticonderoga), in which 4,000 French troops repulsed 16,000 British. ||| Colonies ||| North America ||| +0 Seventh Battle of the Isonzo ||| Sixth Battle of the Isonzo ||| However despite the greater concentration of resources upon a single point - as much intended to reduce the severely high casualty rate sustained to date - the Italians' success of the [[Sixth Battle of the Isonzo]] was not repeated, and the attack was called off after three days of heavy casualties, on 17 September 1916. ||| Battle ||| ||| +0 Shaar HaNegev school bus attack ||| Shmuel HaNavi bus bombing ||| *[[Shmuel HaNavi bus bombing]] ||| See also ||| ||| +0 Shangani Patrol ||| Battle of the Alamo ||| |p=v}} For clarity, consistency and ease of reading, this article uses the term 'Matabele' to refer to the people, and calls their language 'Sindebele'.}} Headed by Major [[Allan Wilson (army officer)|Allan Wilson]], the patrol was attacked just north of the [[Shangani River]] in [[Matabeleland]] in [[Rhodesia (name)|Rhodesia]] (today Zimbabwe). Its dramatic [[last stand]], sometimes called 'Wilson's Last Stand', achieved a prominent place in the British public imagination and, subsequently, in Rhodesian history, mirroring events such as the [[Battle of Shiroyama]] in Japan, the [[Battle of the Alamo|Alamo massacre]] in Texas and the ancient Greeks' last stand at [[Battle of Thermopylae|Thermopylae]]. ||| ||| ||| +0 Shanghai massacre of 1927 ||| Guangzhou Uprising ||| By July 15, 1927, the Wuhan regime had also expelled the Communists in its ranks, effectively ending the KMT's four-year alliance with Soviet Russia and its cooperation with the Chinese Communist Party. During the remainder of 1927, the Communists launched several revolts in an attempt to win back power, marking the beginning of the [[Chinese Civil War]]. With the failure of the [[Guangzhou Uprising]] (December 11–13, 1927), the Chinese Communist Party's eclipse was complete; it was two decades before they were able to launch another major urban offensive. The incident was a key moment in the complex sequence of events that set the stage for the first ten years of the Nationalist government. ||| ||| ||| +0 Shanghai massacre of 1927 ||| Northern Expedition ||| The roots of the April 12 Incident go back to the Kuomintang's alliance with the [[Soviet Union]], formally initiated by KMT's founder [[Sun Yat-sen]] after discussions with Soviet diplomat [[Adolph Joffe]] in January 1923. This alliance included both financial and military aid and a small but important group of Soviet political and military advisors, headed by [[Michael Borodin]]. Internal conflicts between left- and right-wing leaders of the KMT with regards to the CCP problem continued right up to the launch of the [[Northern Expedition]]. ||| Background ||| ||| +0 Shays' Rebellion ||| Battles of Lexington and Concord ||| Overlaid upon these financial issues was the fact that veterans of the war had received little pay during the war and faced difficulty collecting pay owed them from the State or the [[Congress of the Confederation]]. Some of the soldiers, [[Daniel Shays]] among them, began to organize protests against these oppressive economic conditions. Shays was a farmhand from Massachusetts when the Revolution broke out; he joined the [[Continental Army]], saw action at the [[Battles of Lexington and Concord]], [[Battle of Bunker Hill|Bunker Hill]] and [[Battles of Saratoga|Saratoga]], and was eventually wounded in action. In 1780, he resigned from the army unpaid and went home to find himself in court for nonpayment of debts. He soon realized that he was not alone in his inability to pay his debts and began organizing for debt relief. ||| Background ||| ||| +0 Shays' Rebellion ||| Battles of Saratoga ||| Overlaid upon these financial issues was the fact that veterans of the war had received little pay during the war and faced difficulty collecting pay owed them from the State or the [[Congress of the Confederation]]. Some of the soldiers, [[Daniel Shays]] among them, began to organize protests against these oppressive economic conditions. Shays was a farmhand from Massachusetts when the Revolution broke out; he joined the [[Continental Army]], saw action at the [[Battles of Lexington and Concord]], [[Battle of Bunker Hill|Bunker Hill]] and [[Battles of Saratoga|Saratoga]], and was eventually wounded in action. In 1780, he resigned from the army unpaid and went home to find himself in court for nonpayment of debts. He soon realized that he was not alone in his inability to pay his debts and began organizing for debt relief. ||| Background ||| ||| +0 Shelling of Johnston and Palmyra ||| Attack on Pearl Harbor ||| [[Johnston Atoll|Johnston]] and [[Palmyra Atoll|Palmyra]] are two American controlled atolls located in the [[Pacific Ocean]]. Johnston had been claimed for the US in 1858, Palmyra in 1859; both under the Guano Islands act. Following the [[Attack on Pearl Harbor]], Japanese navy forces attacked [[Allies of World War II|Allied]] possessions across the Pacific, including Johnston and Palmyra. ||| ||| ||| +0 Sherman's March to the Sea ||| Battle of Atlanta ||| '''Sherman's March to the Sea''' is the name commonly given to the [[Military campaign|military]] '''Savannah Campaign''' in the [[American Civil War]], conducted through [[Georgia (U.S. state)|Georgia]] from November 15 to December 21, 1864 by [[Major general (United States)|Maj. Gen.]] [[William Tecumseh Sherman]] of the [[Union Army]]. The campaign began with Sherman's troops leaving the [[Battle of Atlanta|captured]] city of [[Atlanta, Georgia]], on November 15 and ended with the capture of the port of [[Savannah, Georgia|Savannah]] on December 21. His forces destroyed military targets as well as industry, infrastructure, and civilian property and disrupted the Confederacy's economy and its transportation networks. Sherman's bold move of operating deep within enemy territory and without supply lines is considered to be revolutionary in the annals of war. ||| ||| ||| +0 Sherman's March to the Sea ||| Battle of Fort McAllister (1864) ||| Sherman's armies reached the outskirts of Savannah on December 10 but found that [[William J. Hardee|Hardee]] had entrenched 10,000 men in good positions, and his soldiers had flooded the surrounding rice fields, leaving only narrow causeways available to approach the city. Sherman was blocked from linking up with the [[U.S. Navy]] as he had planned, so he dispatched cavalry to Fort McAllister, guarding the [[Ogeechee River]], in hopes of unblocking his route and obtaining supplies awaiting him on the Navy ships. On December 13, William B. Hazen's division of Howard's wing stormed the fort in the [[Battle of Fort McAllister (1864)|Battle of Fort McAllister]] and captured it within 15 minutes. Some of the 134 Union casualties were caused by torpedoes, a name for crude [[land mine]]s that were used only rarely in the war. ||| March ||| ||| +0 Sherman's March to the Sea ||| Carolinas Campaign ||| From Savannah, after a month-long delay for rest, Sherman marched north in the spring through the [[Carolinas Campaign|Carolinas]], intending to complete his turning movement and combine his armies with Grant's against Robert E. Lee. After a successful two-month campaign, Sherman accepted the surrender of General [[Joseph E. Johnston]] and his forces in [[North Carolina]] on April 26, 1865. ||| Aftermath ||| ||| +0 Shimonoseki Campaign ||| Battle of Gettysburg ||| For the U.S., July 1863 was a momentous month, with the battles of [[Battle of Gettysburg|Gettysburg]] and [[Vicksburg Campaign|Vicksburg]]. ||| Historical significance ||| ||| +0 Shuangduiji Campaign ||| Huaihai Campaign ||| The '''Battle of Shuangduiji''' (双堆集战役) was a major campaign fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during the [[Chinese Civil War]] in the post-[[World War II]] era, resulting in a [[communist]] victory. The campaign was part of the [[Huaihai Campaign]]. ||| ||| ||| +0 Shuangduiji Campaign ||| World War II ||| The '''Battle of Shuangduiji''' (双堆集战役) was a major campaign fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during the [[Chinese Civil War]] in the post-[[World War II]] era, resulting in a [[communist]] victory. The campaign was part of the [[Huaihai Campaign]]. ||| ||| ||| +0 Shyrokyne standoff (February–July 2015) ||| Battle of Debaltseve ||| The new Ukrainian offensive outside Mariupol came as DPR and [[Luhansk People's Republic|LPR]] forces [[Battle of Debaltseve|were assaulting]] the strategic town of [[Debaltseve]], {{convert|200|km|mi}} to the north. Accordingly, the offensive was also intended to relieve pressure on Debaltseve by forcing the insurgents divert manpower and weaponry to the southern part of the line of contact. After breaking through DPR lines, the Azov Battalion managed to quickly capture the towns of Shyrokyne, Pavlopil, and Kominternove, and began to advance toward Novoazovsk. ||| Events ||| Ukrainian offensive ||| +0 Siachen conflict ||| Indo-Pakistani War of 1971 ||| Later, following the [[Indo-Pakistani War of 1971]], and the [[Simla Agreement]] in July 1972, the ceasefire line was converted into the 'Line of Control' extending from the '''Chhamb sector on the international border [to] the Turtok-Partapur sector in the north.''' The general description of CFL given in Section 1 of Karachi Agreement is further explained at Page 38 where it states: '''thence northwards along the boundary line going through Point 18402 up to NJ-9842''' is the second [[addendum]] to the 1949 Karachi Agreement, and shows the CFL marked on the Map of the State of [[Jammu and Kashmir]] as per the explanation of CFL in paragraph 'B' 2 (d) of the Karachi Agreement. ||| Causes Leading to Conflict ||| Paragraph B 2 (d) of Karachi Agreement ||| +0 Sichuan invasion ||| Battle of Changde ||| In fear of Chinese reinforcements through the cleared route and having sustained much losses in the [[Battle of Changde]], the Japanese army switched their attention to [[Yunnan]] to prevent future Chinese counter-offensives from that area. ||| Sichuan Invasion ||| Last operative attempt to invade ||| +0 Sichuan invasion ||| Battle of West Hubei ||| However, the Japanese Imperial General Headquarters was still in favor of an invasion. Hence the Japanese [[China Expeditionary Army]] produced a new plan for the capture of [[Sichuan]], which was based on the previous 1942 plan. The May 1943 '[[Battle of West Hubei]]' was part of this new attempt to advance to Sichuan. ||| Sichuan Invasion ||| Last operative attempt to invade ||| +0 Sicilian Expedition ||| Battle of Mantinea (418 BC) ||| In 415, Athens and Sparta had been formally at peace since 421, when the [[Peace of Nicias]] had brought the [[Archidamian War]] to a close. The terms of that peace, however, had never been fulfilled; Sparta had never surrendered [[Amphipolis]] to Athens, as required by the treaty, and in return the Athenians had held [[Pylos]]. More recently, Athenian and Spartan troops had fought at the [[Battle of Mantinea (418 BC)|Battle of Mantinea]] in 418, with Athens supporting [[Argos]], [[Mantinea]], and other Peloponnesian cities in an attempt to establish a stable anti-Spartan alliance in the Peloponnese. That attempt, largely orchestrated by the Athenian nobleman Alcibiades, would have destroyed Sparta's control over the [[Peloponnesian League]] had it succeeded. ||| Background ||| State of the War ||| +0 Sicilian revolution of 1848 ||| Expedition of the Thousand ||| The '''Sicilian revolution of independence of 1848''' occurred in a year replete with [[Revolutions of 1848|revolutions]] and popular revolts. It commenced on 12 January 1848, and therefore was one of the first of the numerous revolutions to occur that year. Three revolutions had previously occurred on the island of [[Sicily]] starting from 1800 against [[House of Bourbon|Bourbon]] rule: this final one resulted in an independent state surviving for 16 months. The constitution that survived the 16 months was quite advanced for its time in liberal democratic terms, as was the proposal of an [[Italy|Italian]] confederation of states. It was in effect a curtain raiser to the end of the Bourbon kingdom of the [[Two Sicilies]] which was started by [[Giuseppe Garibaldi]]'s [[Expedition of the Thousand]] in 1860 and culminated with the [[Siege of Gaeta (1861)|Siege of Gaeta]] of 1860-1861. ||| ||| ||| +0 Siege of Acre (1189–91) ||| Battle of Arsuf ||| The Muslims lay in a semicircle east of the city facing inwards towards Acre. The Crusader army lay in between, with lightly armed [[crossbow]]men in the first line and the heavy [[cavalry]] in second. At the later [[Battle of Arsuf]] the Christians fought coherently; here the battle began with a disjointed combat between the [[Knights Templar|Templars]] and Saladin's right wing. The Crusaders were so successful that the enemy had to send reinforcements from other parts of the field. Thus the steady advance of the Christian center against Saladin's own corps, in which the crossbows prepared the way for the charge of the men-at-arms, met with no great resistance. Saladin's center and right flanks were put to flight. ||| Battle of Acre ||| ||| +0 Siege of Almeida (1810) ||| Battle of Bussaco ||| The French received siege supplies from Ciudad Rodrigo on August 15, and started to dig trench lines to the south-east of the town, facing the San Pedro bastion. The siege train was well supplied with guns; as well as the existing French ones, it also included captured Spanish guns from Ciudad Rodrigo. By August 24, the French lines had eleven batteries in place, with over 50 guns. Throughout, the Portuguese defenders had fired upon the French, with little effect. When the French bombardment opened on August 26 at 6 AM, several quarters of the town were quickly set on fire, and the defending guns of the nearest three batteries overwhelmed. However, the defences held. The governor was confident in withstanding the assault, until a shell made a freak hit. The great magazine in the castle had been used through the day to supply the defenders, and at some point a leaky powder keg had left a trail of powder leading up to the courtyard. At around 7 PM, one French shell landed in the courtyard, igniting a gunpowder trail that led through the still open door, and set off a chain reaction into the magazine. The ensuing explosion killed 600 defenders and wounded 300 more. The castle that housed the gunpowder was razed and sections of the defenses were damaged, leaving a crater still visible today. Unable to reply to the French cannonade without gunpowder, Cox was forced to capitulate the following day with the survivors of the blast and 100 cannon. The French lost 58 killed and 320 wounded during the operation. The next action was the [[Battle of Bussaco]]. ||| Siege ||| ||| +0 Siege of Almeida (1810) ||| Siege of Ciudad Rodrigo (1810) ||| Fresh from the successful [[Siege of Ciudad Rodrigo (1810)|Siege of Ciudad Rodrigo]], the French army laid siege to Almeida on July 25, 1810. Brigadier-General [[William Cox (British general)|William Cox]] commanded a 4,000-man Portuguese garrison of three battalions of militia, from Arganil, Trancoso and Vizeu. Some regular British forces were also present, including 1,200 men of the 24th Line Regiment, a squadron of the 11th Cavalry Regiment and over 400 gunners. The defences of Almeida were in better repair and stronger than [[Ciudad Rodrigo]] which the French had recently taken. In particular, there were over 100 artillery pieces, of which 40 were 18-pounders or heavier, and most were in protected casemates. The siege was conducted by the 14,000 infantry, 1,000 cavalry, 1,000 artillerists and 100 cannon of the [[VI Corps (Grande Armée)|VI Corps]] under the command of Marshal [[Michel Ney]]. In addition, General [[Jean-Andoche Junot]] lay in reserve nearby with his [[VIII Corps (Grande Armée)|VIII Corps]] . ||| Siege ||| ||| +0 Siege of Ascalon ||| Siege of Jerusalem (1099) ||| Ascalon was [[Fatimid]] Egypt's greatest and most important frontier fortress. The [[Battle of Ascalon]] was fought outside the city in 1099 in the aftermath of the [[First Crusade]] and the [[Siege of Jerusalem (1099)|fall of Jerusalem]] to the Crusaders. Although the crusaders were victorious, internal disputes in their camp allowed Ascalon to remain in Egyptian hands. Thereafter, the Fatimids were able to launch raids into the kingdom every year from this fortress, and the southern border of the crusader kingdom remained unstable. If this fortress fell, then the gateway to Egypt would be open. Therefore, the Fatimid garrison in Ascalon remained strong and large. ||| Background ||| ||| +0 Siege of Barcelona (1705) ||| Siege of Barcelona (1706) ||| An attempted landing had been repulsed the previous year at the [[Battle of Barcelona (1704)]]. Following the city's capture by Peterborough, the French and Spanish launched a concerted attempt to recapture it the following year during the [[Siege of Barcelona (1706)]], which failed. The city and entire [[Catalonia]] remained in Allied hands until 1714. ||| ||| ||| +0 Siege of Barcelona (1706) ||| Siege of Barcelona (1705) ||| The '''Siege of Barcelona''' took place between 3 and 27 April 1706 during the [[War of the Spanish Succession]] when a Franco-Spanish army led by [[Philip V of Spain|Philip V]] laid siege to [[Barcelona]] in an attempt to recapture it following its [[Siege of Barcelona (1705)|fall to an English-led Allied army the previous year]]. ||| ||| ||| +0 Siege of Bastogne ||| Invasion of Normandy ||| After the successful [[Invasion of Normandy]] and the subsequent eastward push through [[France]], the Allied front lines extended from [[Nijmegen]] in the north down to neutral [[Switzerland]] in the south. The valuable port city of [[Antwerp]] had been captured during the push, and by the time winter arrived, the Allies even had control of German territory near the city of [[Aachen]]. [[Adolf Hitler]] soon laid out a plan to attack the Allied lines in Belgium and Luxembourg; 25 divisions would launch a surprise attack through the Ardennes, with the aim of crossing the [[Meuse River]] (called ''Maas'' in German and Flemish) and recapturing Antwerp. Despite major misgivings from his senior commanders, including [[Gerd von Rundstedt]] and [[Walther Model]], the plan was not modified and the jump-off date was eventually set as 16 December 1944. Meanwhile, the Allied commanders considered the Ardennes area to be unsuitable for a large-scale German attack, mainly because of terrain issues. In addition, intelligence reports suggested that the only German divisions stationed in the area were weary, and in the weeks leading up to the assault, no Allied commander saw reason to believe that an attack was imminent. Bastogne, a hub city that commanded several important roads in the area, was defended mainly by the [[28th Infantry Division (United States)|28th Infantry Division]], which had seen continuous fighting from 22 July-19 November, before being assigned to this relatively quiet area. The Allies believed only an infantry division was present opposite the 28th Infantry, and they believed any attack along this sector would be limited in scale. The seven roads in and out of Bastogne were critical to the movement of German armor, making Allied retention of the roads imperative. ||| Background ||| ||| +0 Siege of Bastogne ||| Operation Market Garden ||| Despite several notable signs in the weeks preceding the attack, the Ardennes Offensive achieved virtually complete surprise. By the end of the second day of battle, it became apparent that the 28th Infantry was near collapse. Maj. Gen. [[Troy H. Middleton]], commander of [[VIII Corps (United States)|VIII Corps]], was given Combat Command B of the [[10th Armored Division (United States)|10th Armored Division]] to assist in the defense of Bastogne. CCB consisted of the 3rd Tank Battalion, 20th Armored Infantry Battalion, C Company 21st Tank Battalion, B Company 54th Armored Infantry Battalion, C Company, 609th Tank Destroyer Battalion, 420th Armored Field Artillery Battalion, and three companies of support troops. Gen. George Patton, commander of the 3rd Army was not happy about giving up the unit right before he planned an offensive near [[Mainz]] but Gen. [[Omar Bradley]], commander of the 12th Army Group, ordered Gen. Patton to release the unit. Meanwhile, Gen. [[Dwight D. Eisenhower]] ordered forward the [[SHAEF]] reserve, composed of the [[82nd Airborne Division|82nd Airborne]] and the [[101st Airborne Division|101st Airborne]] at [[Reims]]. These were veteran troops that had served with distinction since [[American airborne landings in Normandy|the parachute drops in Normandy]] and were resting and re-equipping after two months of combat in [[Operation Market Garden|the Netherlands]]. Both divisions were alerted on the evening of 17 December, and not having transport automatically assigned for their use, began arranging trucks for movement forward. The 82nd—longer in reserve and thus better re-equipped—moved out first. The 101st left Camp Mourmelon on the afternoon of 18 December, with the order of march the division artillery, division trains, [[501st Parachute Infantry Regiment (United States)|501st Parachute Infantry Regiment]] (PIR), [[506th Infantry Regiment|506th PIR]], [[502nd Infantry Regiment (United States)|502nd PIR]], and [[327th Infantry Regiment (United States)|327th Glider Infantry]]. Much of the convoy was conducted at night in drizzle and sleet, using headlights despite threat of air attack to speed the movement, and at one point the combined column stretched from [[Bouillon]], Belgium, back to Reims. ||| Prelude ||| Commitment of reserves ||| +0 Siege of Belgrade (1456) ||| Battle of Vienna ||| While fierce resistance and Hunyadi's effective leadership ensured that the daring and ambitious [[Ottoman Sultan|Sultan]] [[Mehmed the Conqueror|Mehmed]] would only get as far into Europe as the Balkans, the Sultan had already managed to transform the [[Ottoman Empire]] into what would become one of the most feared powers in Europe (as well as in Asia) for centuries. Most of Hungary was eventually conquered in 1526 at the [[Battle of Mohács]]. [[Ottoman Empire|Ottoman]] [[Sunni Islam|Muslim]] [[Ottoman wars in Europe|expansion into Europe]] continued with menacing success until the [[Siege of Vienna]] in 1529, although Ottoman power in Europe remained strong and still threatening to Central Europe at times until the [[Battle of Vienna|Battle of Vienna in 1683]]. ||| Follow Up ||| ||| +0 Siege of Bihać ||| Operation Deny Flight ||| Since [[Operation Deny Flight]] did not allow fighter jets to be used in Bosnia, the Army of the Republika Srpska took advantage of the ban by outsourcing air strikes to the Army of Srpska Krajina: they launched air strikes with aircraft based at a former [[Yugoslav People's Army]] (JNA) military airport in [[Udbina]], south of Bihać, located in Croatian territory that was at the time controlled by the [[Republic of Serbian Krajina]]. The Serb aircraft dropped [[napalm]] and [[cluster bombs]]. Although most of the ordnance came from old, unreliable stocks and failed to explode, the attacks were a clear violation of the no-fly zone. [[NATO]] immediately looked for ways to respond, but its forces were not permitted to carry out operations in Croatian airspace, and due to Bihać's proximity to the border, Serb aircraft could attack into Bosnia, then cross back into Croatia before being intercepted. As such, NATO was powerless to stop the incursions. In recognition of the situation, the Security Council passed [[United Nations Security Council Resolution 958|Resolution 958]], which allowed NATO aircraft to operate in Croatia. Under the cool leadership of the UNHCR Director of Logistics Operations, Peter Walsh, the refugee agency managed to breach the blockade in December 1994 and get 100 tonnes of valuable food aid into the pocket. This was a difficult task hampered by persistent small arms and artillery fire as well as unnecessary freedom of movement violations. The aid was delivered to Cazin for distribution throughout the region. ||| Timeline ||| 1994 ||| +0 Siege of Bihać ||| Operation Storm ||| The '''Siege of Bihać''' was a three-year-long siege of the northwestern [[Bosnia and Herzegovina|Bosnian]] town of [[Bihać]] by the [[Army of the Republika Srpska]], the [[Army of the Republic of Serbian Krajina]] and [[Autonomous Province of Western Bosnia|Bosniak dissenters]] led by the [[Bosniak]] politician [[Fikret Abdić]] during the 1992-95 [[Bosnian War]]. The siege lasted for three years, from June 1992 until 4–5 August 1995, when [[Operation Storm]] ended it after the [[Croatian Army]] (HV) overran the rebel Serbs in Croatia and northwest of the besieged town. ||| ||| ||| +0 Siege of Blair Castle ||| Battle of Culloden ||| [[Lord George Murray (general)|Lord George Murray]] and his men met up with the army of Charles Edward Stuart and were defeated a few weeks later at the [[Battle of Culloden]]. The [[Royal Scots Fusiliers]] also fought at Culloden but on the British Government side. ||| Aftermath ||| ||| +0 Siege of Boston ||| Battles of Lexington and Concord ||| The siege began on April 19 after the [[Battles of Lexington and Concord]], when the militia from surrounding Massachusetts communities limited land access to Boston. The [[Continental Congress]] formed the [[Continental Army]] from the militia, with [[George Washington]] as its Commander in Chief. In June 1775, the British [[Battle of Bunker Hill|seized Bunker and Breed's Hills]], but their casualties were heavy and their gains were insufficient to break the Continental Army's hold on land access to Boston. Military actions during the remainder of the siege were limited to occasional raids, minor skirmishes, and sniper fire. ||| ||| ||| +0 Siege of Boston ||| Boston Tea Party ||| Prior to 1775, the British had [[Colonial history of the United States#Tax protests lead to Revolution|imposed taxes and import duties]] on the American colonies, to which the inhabitants objected since they [[taxation without representation|lacked British Parliamentary representation]]. In response to the [[Boston Tea Party]] and other acts of protest, 4,000 British troops under the command of General [[Thomas Gage]] were sent to occupy Boston and to pacify the restive [[Province of Massachusetts Bay]]. ||| Background ||| ||| +0 Siege of Bouchain ||| Battle of Denain ||| Bouchain was Marlborough's last campaign. On the last day of the year he was stripped of his position as Captain-General, and of all his other offices. Command of the army on the continent for the campaign of 1712 was given to the [[James Butler, 2nd Duke of Ormonde|Duke of Ormonde]], and strict limitations were placed on his freedom of movement. Particularly he was prohibited from engaging the French in battle, as Anglo-French peace talks were well advanced, and the opportunity of seizing Cambrai and marching on Paris, opened by Marlborough's gains the year before, was abandoned. Before the year was out, the British army would withdraw from the alliance, leaving the remaining allies, under [[Eugene of Savoy]] to be defeated at [[Battle of Denain|Denain]]. ||| Aftermath ||| ||| +0 Siege of Bouchain ||| Battle of Malplaquet ||| Throughout the early summer of 1711 Marlborough's army, having taken the important fortress of [[Douai]] the previous year, manoeuvred indecisively in northern France, blocked by the French Lines of Ne Plus Ultra – a massive series of fieldworks stretching from the [[English Channel|Channel]] coast to the [[Ardennes]] at [[Namur (city)|Namur]]. The allied army had been weakened by the withdrawal of [[Eugene of Savoy|Prince Eugene's]] army to cover the upper [[Rhine]], as the deposed [[Maximilian II Emanuel|Elector of Bavaria]] attempted to take advantage of the disruption caused by the death of the Emperor [[Joseph I, Holy Roman Emperor|Joseph]]. On 6 July, Marlborough captured the small fortress of Arleux, just to the north of the Lines, west of Bouchain, both to deny its use to the French as a sally-port, and to secure the water supply to Douai, which could be cut off by damming the canal that supplied the town. The Duke was then wrong-footed by Villars as the French army crossed the Lines on 22/23 July and retook Arleux, with the allied army too far to the west to intervene in time, and the defences were levelled before the French retreated back across the Lines. Marlborough, initially furious, soon retook the initiative by marching his army as if to assault the Lines near [[Arras]], and carrying out a detailed personal reconnaissance there on 4 August in full view of Villars' covering army. That night the army struck camp, leaving their campfires burning to deceive the French, and marched eastwards to Arleux. At midnight a force from Douai under [[William Cadogan, 1st Earl Cadogan|Cadogan]] crossed the unguarded French lines, and by 8 am the advance guard of the main army was also crossing over. Villars, arriving on the scene with a few hundred cavalry, realised he had been outmanoeuvred, and though he attempted to offer battle in front of Bourlon Wood, Marlborough declined to attack, the Marshal's position being even stronger than the one in which he had given Marlborough's army such a mauling two years earlier at [[Battle of Malplaquet|Malplaquet]]. He thus drew off and attempted to hinder Marlborough's siege of Bouchain which followed. ||| Prelude ||| ||| +0 Siege of Budapest ||| Operation Bagration ||| In October 1944, after successive Allied victories at [[Operation Overlord|Normandy]] and [[Falaise pocket|Falaise]], and after the collapse of the Eastern Front following the stunning success of the Soviet summer offensive, [[Operation Bagration|Bagration]], [[Horthy]] again attempted to negotiate a separate peace with the [[Allies of World War II|Allies]]. Upon hearing of Horthy's efforts, Hitler launched [[Operation Panzerfaust]] to keep Hungary on the Axis side, and forced Horthy to abdicate. Horthy and his government were replaced by 'Hungarist' [[Ferenc Szálasi]], led by the far-right [[Nazism|National Socialist]] [[Arrow Cross Party]]. As the new right-wing government and its German allies prepared the defense of the capital, [[IX SS Mountain Corps]], consisting of two [[Waffen SS]] divisions, was sent to Budapest to strengthen the city's defense. ||| General situation ||| ||| +0 Siege of Calvi ||| French Revolution ||| The '''Siege of Calvi''' was a siege of [[French Revolution]]ary forces in [[Calvi, Haute-Corse]] in July and August 1794 by [[Kingdom of Great Britain|British]] forces, ending in a British victory. ||| ||| ||| +0 Siege of Cambrai (1677) ||| War of Devolution ||| In 1667, Louis XIV, invoking the right of devolution to justify the claims of his wife [[Maria Theresa of Spain]] on several Spanish provinces, address to the Regent of Spain, [[Mariana of Austria|Marie-Anne of Austria]], a 'Treaty on the rights of the most Christian Queen on various states of the monarchy of Spain ' and then without waiting for an answer [[War of Devolution|commenced hostilities]] in May. During the summer of 1667 the French took Charleroi, Tournai, Douai and Lille and in February 1668 the Franche-Comté. By the [[Treaty of Aix-la-Chapelle (1668)]] Spain abandoned the cities of Charleroi, Binche, Ath, Douai, Tournai, Oudenarde, Lille, Armentieres, Courtrai, Bergues and Furnes. ||| Background ||| ||| +0 Siege of Cawnpore ||| Battle of Plassey ||| The [[sniper]] fire and the [[bombardment]] continued until 23 June 1857, the 100th anniversary of the [[Battle of Plassey]], which took place on 23 June 1757 and was one of the pivotal battles leading to the expansion of [[British Raj|British rule in India]]. One of the driving forces of the sepoy rebellion was a prophecy which predicted the downfall of [[British East India Company|East India Company]] rule in India exactly one hundred years after the Battle of Plassey. {{cite journal ||| Attack on Wheeler's entrenchment ||| Assault on 23 June ||| +0 Siege of Cawnpore ||| Siege of Lucknow ||| }} He was confident that the sepoys at Cawnpore would remain loyal to him, and sent two British companies (one each of the [[84th (York and Lancaster) Regiment of Foot|84th]] and [[32nd Regiment of Foot|32nd Regiments]]) to [[Siege of Lucknow|besieged Lucknow]]. {{cite web ||| Background ||| ||| +0 Siege of Charlemont ||| Cromwellian conquest of Ireland ||| The '''Siege of Charlemont''' took place in July–August 1650 during the [[Cromwellian conquest of Ireland]] when the fortress of [[Charlemont, County Armagh|Charlemont]] in [[County Armagh]], Ireland was besieged by [[Charles Coote, 1st Earl of Mountrath|Charles Coote]]'s Parliamentarian army, which was largely composed of soldiers of the [[New Model Army]]. The force led by Coote eventually took the fort from its Irish defenders, but not before they suffered heavy losses, with some 500–800 Parliamentarian Soldiers being killed during assaults on the formidable stronghold. In terms of the number of soldiers killed in battle, The Siege of Charlemont was the second bloodiest engagement fought by the Parliamentarians in Ireland, only surpassed by the [[Siege of Clonmel]]. ||| ||| ||| +0 Siege of Charlemont ||| Siege of Clonmel ||| The '''Siege of Charlemont''' took place in July–August 1650 during the [[Cromwellian conquest of Ireland]] when the fortress of [[Charlemont, County Armagh|Charlemont]] in [[County Armagh]], Ireland was besieged by [[Charles Coote, 1st Earl of Mountrath|Charles Coote]]'s Parliamentarian army, which was largely composed of soldiers of the [[New Model Army]]. The force led by Coote eventually took the fort from its Irish defenders, but not before they suffered heavy losses, with some 500–800 Parliamentarian Soldiers being killed during assaults on the formidable stronghold. In terms of the number of soldiers killed in battle, The Siege of Charlemont was the second bloodiest engagement fought by the Parliamentarians in Ireland, only surpassed by the [[Siege of Clonmel]]. ||| ||| ||| +0 Siege of Charleston ||| Capture of Savannah ||| In late 1779, following strategic failures earlier in the war, the British were stymied by the waiting strategy adopted by [[General]] [[George Washington]] leading the Continental Army. Under political pressure to deliver victory, British leaders turned to launching their [[Southern theater of the American Revolutionary War|'southern strategy']] for winning the war, that built on the idea that there was strong Loyalist sentiment in the southern colonies due to extensive business and trading relationships. Their opening move was the [[Capture of Savannah]], [[Georgia (U.S. state)|Georgia]] in December 1778. After repulsing a [[Siege of Savannah|siege and assault on Savannah]] by a combined Franco-American force in October 1779, the British planned an attack on [[Charleston, South Carolina]], which they intended to use as a base for further operations in the north. ||| Background ||| ||| +0 Siege of Charleston ||| Siege of Savannah ||| In late 1779, following strategic failures earlier in the war, the British were stymied by the waiting strategy adopted by [[General]] [[George Washington]] leading the Continental Army. Under political pressure to deliver victory, British leaders turned to launching their [[Southern theater of the American Revolutionary War|'southern strategy']] for winning the war, that built on the idea that there was strong Loyalist sentiment in the southern colonies due to extensive business and trading relationships. Their opening move was the [[Capture of Savannah]], [[Georgia (U.S. state)|Georgia]] in December 1778. After repulsing a [[Siege of Savannah|siege and assault on Savannah]] by a combined Franco-American force in October 1779, the British planned an attack on [[Charleston, South Carolina]], which they intended to use as a base for further operations in the north. ||| Background ||| ||| +0 Siege of Ciudad Rodrigo (1810) ||| Battle of Corunna ||| A defensive battle, the [[Battle of Bussaco]], was fought, which gave the French a bloody nose, before the British and Portuguese fell back on the [[Lines of Torres Vedras]] which were completed as the troops arrived. The lines were designed to enable a successful defence of [[Lisbon]] and avoid a British evacuation of the peninsular, as had happened after the [[Battle of Corunna]] in January 1809. ||| Aftermath ||| ||| +0 Siege of Ciudad Rodrigo (1810) ||| Siege of Ciudad Rodrigo (1812) ||| A second [[Siege of Ciudad Rodrigo (1812)|Siege of Ciudad Rodrigo]] occurred in January 1812, with the French being besieged this time, losing the town after a short two week siege. ||| Aftermath ||| ||| +0 Siege of Ciudad Rodrigo (1812) ||| Siege of Ciudad Rodrigo (1810) ||| In the '''Siege of Ciudad Rodrigo,''' (7-20 January 1812) the [[Arthur Wellesley, 1st Duke of Wellington|Viscount Wellington]]'s [[Anglo-Portuguese Army]] besieged the city's French garrison under [[General of Brigade]] [[Jean Léonard Barrié]]. After two breaches were blasted in the walls by British heavy artillery, the fortress was successfully stormed on the evening of 19 January 1812. After breaking into the city, British troops went on a rampage for several hours before order was restored. Wellington's army suffered casualties of about 1,700 men including two generals killed. Strategically, the fall of the fortress opened the northern gateway into French-dominated Spain from British-held Portugal. An earlier [[Siege of Ciudad Rodrigo (1810)|siege of Ciudad Rodrigo]] occurred in 1810 when the French captured the city from Spanish forces. ||| ||| ||| +0 Siege of Colchester ||| First English Civil War ||| Inside the town, the local people found themselves trapped with an army with which most had very little sympathy. Colchester had been a staunch supporter of Parliament during the [[First English Civil War]] and any sympathy with the Royalist army soon vanished as the soldiers seized provisions from the town's people. ||| The Siege ||| ||| +0 Siege of Delhi ||| Battle of Plassey ||| Large contingents of rebellious sepoys and volunteers continued to arrive in Delhi. The majority of no less than ten regiments of cavalry and fifteen of infantry of the Bengal army rebelled and made their way to Delhi during June and July, Another major attack was made on 23 June, the centenary of the [[Battle of Plassey]]. (It was believed that British presence in India would end one hundred years after this famous battle). ||| Company Moves ||| The Siege: June through July ||| +0 Siege of Delhi ||| Second Anglo-Sikh War ||| Although there were several Company units available in the cool 'hill stations' in the foothills of the Himalayas, it took time before any action could be taken to recapture Delhi. This was partly due to lack of transport and supplies. After the end of the [[Second Anglo-Sikh War]], the Bengal Army's transport units had been disbanded as an economy measure, and transport had to be improvised from scratch. Also, many of the senior British officers were widely regarded as dotards, far too senile to act decisively or sensibly. ||| Company Moves ||| ||| +0 Siege of Derry ||| Battle of the Bogside ||| The siege is commemorated yearly by the Protestant [[Apprentice Boys of Derry]] who stage the week-long [[Maiden City Festival]] culminating in a parade around the walls of the city by local members, followed by a parade of the city by the full Association. Although violence has attended these parades in the past, e.g., see [[Battle of the Bogside]], those in recent years have been largely peaceful. ||| Remembrance ||| ||| +0 Siege of Derry ||| Cromwellian conquest of Ireland ||| In the '[[Glorious Revolution]]' of 1688, [[James II of England|James II]] (King of England, Ireland and Scotland), a [[Roman Catholic]] convert, was ousted from power by his [[Protestantism|Protestant]] daughter [[Mary II of England|Mary]] and her husband [[William III of England|William of Orange]]. Most of the Irish population were Catholic, and James had given them some real concessions during his reign. He had made an Irish Catholic the [[Lord Deputy of Ireland]] ([[Richard Talbot, 1st Earl of Tyrconnell|Richard Talbot]]), and re-admitted Catholics into the [[Parliament of Ireland|Irish Parliament]], public office, and had replaced Protestant officers with Roman Catholic officers in the army. Irish Catholics also hoped that James would re-grant them their lands, which had been seized after the [[Cromwellian conquest of Ireland]] (1649–53). James thus looked to Ireland to muster support in re-gaining his kingdoms just as his father, Charles I had done in the Civil War of the 1640s. ||| Background ||| ||| +0 Siege of Detroit ||| American Revolutionary War ||| Madison and Eustis concurred with this plan. Madison offered command of the army to Hull, an ageing veteran of the [[American Revolutionary War]]. Hull was initially reluctant to take the appointment, but no other officer with his prestige and experience was immediately available. After repeated pleas from Madison, Hull finally accepted, and was commissioned as a Brigadier General in the United States Army. ||| Background ||| American plans and moves ||| +0 Siege of Drogheda ||| Cromwellian conquest of Ireland ||| The '''Siege of Drogheda''' took place on 3–11 September 1649 at the outset of the [[Cromwellian conquest of Ireland]]. The town of [[Drogheda]] in eastern [[Ireland]] was held by the [[Confederate Ireland|Irish Catholic Confederation]] and [[Cavalier|English Royalists]] when it was besieged and stormed by [[Roundhead|English Parliamentarian]] forces under [[Oliver Cromwell]]. In the aftermath of the assault, much of the garrison and an unknown but 'significant number' of civilians were killed by the Parliamentarian troops.{{sfn|Ó Siochrú|2008|p=95}} Historians debate the legality of Cromwell's killing of the garrison of [[Drogheda]] and the extent to which civilians were targeted during the massacre. ||| ||| ||| +0 Siege of Dubrovnik ||| Operation Tiger (1992) ||| The siege and a naval blockade by the [[Yugoslav Navy]] caused the deaths of between 82 and 88 Croatian civilians and 194 Croatian military personnel. The JNA suffered 165 fatalities. By the end of 1992, when the entire region was recaptured by the HV in [[Operation Tiger (1992)|Operation Tiger]] and the [[Battle of Konavle]], 417 HV troops had been killed. The offensive displaced 15,000 refugees{{mdash}}mainly from [[Konavle]]{{mdash}}who fled to Dubrovnik. Approximately 16,000 refugees were evacuated from Dubrovnik by sea and the city was resupplied by blockade-evading [[Runabout (boat)|runabouts]] and a convoy of civilian vessels. 11,425 buildings suffered a degree of damage and numerous homes, businesses, and public buildings were looted or torched by the JNA. ||| ||| ||| +0 Siege of Dunkirk (1944–45) ||| Battle of the Scheldt ||| Action against Calais continued (see [[Operation Undergo|Operation ''Undergo'']]), at least partly due to the need to silence the heavy artillery sited nearby. The forces that might have been used to capture Dunkirk were released to assist on the [[Battle of the Scheldt|Scheldt]] and thus open access to the largely undamaged port of Antwerp. Instead, smaller Allied forces held a perimeter around the city. ||| Background ||| ||| +0 Siege of Eshowe ||| Battle of Gingindlovu ||| [[Frederick Augustus Thesiger, 2nd Baron Chelmsford|Lord Chelmsford]] led this column, consisting of 3,390 Europeans and 2,280 Africans to relieve the forces at [[Eshowe]]. The force had a range of artillery, including two 9-pounders, four 24-pounder rocket tubes and two [[Gatling gun]]s. The progress was slow, as in addition to taking a roundabout route to avoid ambush, the rivers they had to traverse were swollen by heavy rains. By the evening of 1 April, Pearson's observers at Eshowe could see the relief column laagering on the south bank of the Inyezane. The laager was sited on a 300-foot ridge running roughly west-east. West of the ridge, the ground dipped, only to rise again to the 470-foot [[Umisi Hill]]. The ground sloped away in all directions, allowing a good field of fire. A trench surrounded a waist high wall of earth, which itself encompassed 120 wagons formed a square with sides of 130 yards in length. Here the relief column fought the [[Battle of Gingindlovu]], a British victory, before continuing on to Eshowe. ||| The Relief Column ||| ||| +0 Siege of Eshowe ||| Battle of Isandlwana ||| Two days later, [[Frederick Augustus Thesiger, 2nd Baron Chelmsford|Lord Chelmsford]] contacted Pearson. Without giving any details of the disaster at [[Battle of Isandlwana|Isandlwana]] he informed him that all previous orders were cancelled, and that he was to take such as action as he thought fit to preserve his column, including withdrawal from Eshowe if necessary. If he withdrew, he was to hold the bridgehead at the Lower Drift, but he might be attacked by the whole Zulu Army. Pearson had no precise information on the whereabouts of the enemy, and although his defences around the mission would soon be complete, it was not an ideal position to defend. His force was good for ammunition, but other supplies were insufficient and the general consensus of his subordinates was to pull back to the Lower Drift. The decision to stay was settled on when news arrived of the return of the supply wagons, with five further companies as reinforcement from the Lower Drift. ||| Arrival at Eshowe ||| ||| +0 Siege of Fort Detroit ||| Siege of Detroit ||| :''For the action in the War of 1812, see the [[Siege of Detroit]]'' ||| ||| ||| +0 Siege of Fort Erie ||| Battle of Chippawa ||| The Americans under Major General [[Jacob Brown]] had crossed the [[Niagara River]] and [[Capture of Fort Erie|captured Fort Erie]] on 3 July 1814. After defeating a British force at the [[Battle of Chippawa]] they advanced north but the British reinforced their troops in the Niagara peninsula. On 25 July, the bloody but indecisive [[Battle of Lundy's Lane]] was fought, during which Brown was severely wounded. Following the battle, the outnumbered American troops, now under the command of Brigadier General [[Eleazer Wheelock Ripley]], withdrew to Fort Erie. Ripley advocated abandoning the Fort and retreating across the Niagara but Brown overruled him and summoned Brigadier General [[Edmund P. Gaines]] from [[Sackett's Harbor]] to assume command. ||| Background ||| ||| +0 Siege of Fort Gaines ||| Siege of Fort Morgan ||| With the fall of Fort Gaines, Granger left a garrison at the fort and immediately moved against [[Fort Morgan (Alabama)|Fort Morgan]] to the east. After a two-week siege - the [[Siege of Fort Morgan]] - General Page surrendered his fort too. ||| Aftermath ||| ||| +0 Siege of Fort Harrison ||| Siege of Fort Wayne ||| The Battle of Fort Harrison is considered the first land victory of the United States during the War of 1812. Shortly afterwards, U.S. forces relieved [[Siege of Fort Wayne|Fort Wayne]], which eliminated the last Indian threat to Indiana Territory for the remainder of the war. ||| Aftermath ||| ||| +0 Siege of Fort Mackinac ||| American Revolutionary War ||| [[Mackinac Island]] was a U.S. [[North American fur trade|fur trading]] post in the [[Straits of Mackinac]] between [[Lake Michigan]] and [[Lake Huron]]. Since the mid-seventeenth century, it had been important for its influence and control over the Indian tribes in the area. British and Canadian traders had resented it being ceded to the United States at the end of the [[American Revolutionary War]]. The [[United States Army]] maintained a small fort, named [[Fort Mackinac]], on the island. About {{convert|40|mi|km}} away was the British military post on [[St. Joseph Island (Ontario)|St. Joseph Island]] and the ([[Canada|Canadian]]) [[North West Company]]'s trading post at [[Sault Ste. Marie, Ontario|Sault Sainte Marie]]. ||| Background ||| ||| +0 Siege of Fort Mackinac ||| Siege of Detroit ||| The news of the loss of Mackinac prompted several Indian tribes (such as the [[Wyandot people|Wyandot]]s near Detroit) who formerly were friendly to the Americans or neutral, to rally to the British cause. Their hostility influenced the U.S. surrender at the [[Siege of Detroit]] shortly afterwards. Lieutenant Hanks was killed by a cannon shot at Detroit shortly before the surrender, while awaiting a [[court martial]] for cowardice. ||| Aftermath ||| ||| +0 Siege of Fort Morgan ||| Battle of Fort Blakely ||| The fall of Fort Morgan to the Union forces sealed the mouth of [[Mobile Bay]]. The city of [[Mobile, Alabama]] would fall following the [[Battle of Fort Blakely]] in 1865. ||| Aftermath ||| ||| +0 Siege of Fort Morgan ||| Battle of Mobile Bay ||| The '''Siege of Fort Morgan''' occurred during the [[American Civil War]] as part of the [[Battle of Mobile Bay|battle for Mobile Bay]] in 1864. Union ground forces led by General [[Gordon Granger]] conducted a short siege of the Confederate garrison at the mouth of Mobile Bay under the command of General [[Richard L. Page]]. The Confederate surrender helped shut down Mobile as an effective Confederate port city. ||| ||| ||| +0 Siege of Fort St. Jean ||| French and Indian War ||| By the time the Americans arrived at Île-aux-Noix, Fort St. Jean was defended by about 750 men under the command of Major Charles Preston. The majority of these were regular troops from the [[7th Regiment of Foot|7th]] and [[26th Regiment of Foot|26th]] Regiments of Foot and the Royal Artillery. There were 90 locally-raised militia, and 20 members of Colonel Allen Maclean's [[84th Regiment of Foot (Royal Highland Emigrants)|Royal Highland Emigrants]], men who were veterans of the [[French and Indian War]]. A detachment of Indians (probably [[Mohawk nation|Caughnawaga]] from a nearby village) patrolled outside the fort under the direction of [[Claude-Nicolas-Guillaume de Lorimier|Claude de Lorimier]] and Gilbert Tice. The Richelieu River was patrolled by an armed schooner, the ''Royal Savage'', under the command of Lieutenant William Hunter, with other boats under construction. ||| Background ||| British defensive preparations ||| +0 Siege of Fort Ticonderoga (1777) ||| Battle of Carillon ||| On the morning of 2 July, St. Clair decided to withdraw the men occupying the defence post at Mount Hope, which was exposed and subject to capture. The detachment there set fire to the works and retreated to the old French lines (so called because they were the site of the French defence in the 1758 [[Battle of Carillon]]), getting away not long before the arrival of Burgoyne's advance guard. That afternoon, a company of British soldiers and Indians came toward those lines, but not near enough to do significant damage, and opened fire. St. Clair ordered his men to hold their fire until the enemy was closer, but [[James Wilkinson]] fired at a British soldier, spurring the untrained defenders to follow suit. The soldier Wilkinson fired at fell, and the British troops fled. When the man was captured, it turned out he was uninjured, and that he had fallen down because he was drunk. Through the deception of placing him with a man posing as a captured [[Loyalist (American Revolution)|Loyalist]], St. Clair learned the nature of the opposing forces. ||| Battle ||| British advance ||| +0 Siege of Fort Ticonderoga (1777) ||| Invasion of Canada (1775) ||| In September 1775, early in the [[American Revolutionary War]], the American [[Continental Army]] embarked on an [[Invasion of Canada (1775)|invasion of Quebec]]. The invasion ended in disaster in July 1776, with the army chased back to [[Fort Ticonderoga]] by a large British army that arrived in [[Province of Quebec (1763-1791)|Quebec]] in May 1776. A small [[Continental Navy]] fleet on [[Lake Champlain]] was defeated in the October 1776 [[Battle of Valcour Island]]. The delay required by the British to build their fleet on Lake Champlain caused General [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]] to hold off on attempting an assault on Ticonderoga in 1776. Although his advance forces came within three miles of Ticonderoga, the lateness of the season and the difficulty of maintaining supply lines along the lake in winter caused him to withdraw his forces back into Quebec. ||| Background ||| ||| +0 Siege of Gaeta (1806) ||| Battle of Ulm ||| Gaeta's commander Prince Hesse was an eccentric soldier of fortune. The general was short in stature and red-faced with an aquiline nose. Known for his hard drinking, he was also a good leader of men. He gained the respect of his poorly-motivated soldiers by joking with them and showing outstanding personal courage. From the first days of the siege, he posted himself at the Breach Battery and announced that he would not quit until the siege was done. He also vowed to limit his drinking to only one bottle a day. Referring to [[Karl Mack von Leiberich]]'s surrender of [[Battle of Ulm|Ulm]], he famously yelled at the besiegers through a speaking-trumpet, ''''Gaeta is not Ulm! Hesse is not Mack!'''' When the French first arrived in the neighborhood on 13 February, they demanded that the fortress be handed over to them. When Hesse answered the request by firing a cannon, the French left an observation force in the area. ||| Gaeta ||| ||| +0 Siege of Galway ||| Cromwellian conquest of Ireland ||| The '''Siege of [[Galway]]''' took place from August 1651 to May 1652 during the [[Cromwellian conquest of Ireland]]. Galway was the last city held by Irish Catholic forces in Ireland and its fall signalled the end to most organised resistance to the Parliamentarian conquest of the country. ||| ||| ||| +0 Siege of Gandesa (1938) ||| Battle of Gandesa (1938) ||| The attack against the Francoist troops entrenched in the town of Gandesa was mainly led by the 35th Division of the [[15th Republican Army Corps|15th Army Corps]] (''XV Cuerpo del Ejército''), led by [[Manuel Tagüeña]] Among the attackers the [[XV International Brigade]], who had led the [[Battle of Gandesa (1938)|Battle of Gandesa]] a few months before, also took part in what would be its last battle in Spain. ||| History ||| The siege ||| +0 Siege of Genoa (1747) ||| Siege of Genoa (1746) ||| The Austrians had [[Siege of Genoa (1746)|captured and then lost]] Genoa the previous year and made it the central objective of their strategy for 1747 before they would consider further operations against [[Naples]] or an invasion of France. Schulenberg's force reached the outskirts of the city in April, but realising they needed more troops they waited until twelve battalions of infantry from their [[Kingdom of Sardinia|Sardinian]] allies arrived in June. The delay allowed the [[France|French]] and [[Spain|Spanish]] to send reinforcements to the city under [[Joseph Marie, Duke of Boufflers]] to bolster the garrison. ||| ||| ||| +0 Siege of Giarabub ||| Operation Compass ||| The '''Siege of Giarabub''' (now [[Jaghbub, Libya|Jaghbub]]) in [[Libya]], was an engagement between [[Commonwealth of Nations|Commonwealth]] and [[Fascist Italy (1922–43)|Italian]] forces, in the [[Western Desert Campaign|Western Desert]] during [[World War II]]. In the aftermath of {{lang|it|''Operazione E''}}, the invasion of Libya by the Italian [[Tenth Army (Italy)|10th Army]] {{nowrap|(9–16 September 1940),}} [[Operation Compass]] {{nowrap|(9–16 December)}} by the [[Western Desert Force]] (WDF), the [[Battle of Sidi Barrani]] and the pursuit of the 10th Army into Cyrenaica {{nowrap|(16 December 1940 – 9 February 1941),}} the fortified Italian position at the [[Al Jaghbub Oasis]] was besieged by parts of the [[6th Division (Australia)|6th Australian Division]]. ||| ||| ||| +0 Siege of Godesberg ||| Dutch Revolt ||| Advances in military architecture over the previous century had led to the construction or enhancement of fortresses that could withstand the pounding of cannonballs and mortar shells. For both Gebhard and Ernst, winning the war required mobilizing enough men to encircle a seemingly endless array of enemy artillery fortresses. These could be protected with relatively small garrisons, but taking them required both expensive artillery and enough men to storm the battlements. Furthermore, the victor had to maintain and defend all his possessions as they were acquired. Even the ruin of the Godesburg required a garrison and a defensive strategy; as a strategic point on the north-south road from Bonn to Koblenz, it came under siege in 1586 and again in 1588. The Cologne War, similar to the [[Dutch Revolt]], was not a war of assembled armies facing each other on a field, but a war of artillery sieges. It required men who could operate the machinery of war, which meant extensive economic resources for soldiers to build and operate the siege works, and a political and military will to keep the machinery of war operating. ||| Aftermath ||| ||| +0 Siege of Godesberg ||| Peace of Augsburg ||| At its most fundamental, it was a local feud between two competing dynastic interests—the [[Seneschal]]s (''Truchsess'') of the [[House of Waldburg]] and the dukes of the House of Wittelsbach—that acquired religious overtones. The dispute had broad implications in the political, social, and dynastic balance of the [[Holy Roman Empire]]. It tested the principle of [[ecclesiastical reservation]] established in the religious [[Peace of Augsburg]] (1555). The 1555 agreement settled religious problems in the Empire with the principle ''[[Cuius regio, eius religio]]'': the subjects of a secular prince followed the religion of their sovereign. Ecclesiastical reservation excluded the territories of the imperial prelates (bishops, archbishops, abbots or abbesses) from ''cuius regio, eius religio''. In an ecclesiastical territory, if the prelate changed his religion, his subjects did not have to do so. Instead, the prelate was expected to resign from his post. Problematically, the 1555 agreement did not specify this detail. ||| Background ||| ||| +0 Siege of Grand Pre ||| Raid on Lunenburg, Nova Scotia (1756) ||| The Mi'kmaq and Acadians continued raids on the Protestant settlements, such as the [[Raid on Dartmouth (1751)]] and the [[Raid on Lunenburg, Nova Scotia (1756)]]. For the Maliseet, it was their first breech of the Peace Treaty that had made with Cornwallis months earlier. ||| Aftermath ||| ||| +0 Siege of Hull (1642) ||| Battle of Edgehill ||| Charles took great personal affront to these actions, and declared Hotham a traitor. The Royalists' unsuccessful siege of the city was a major step on the road to full scale war which would start at in earnest with the [[pitched battle]] of [[Battle of Edgehill|Edgehill]] on 23 October 1642. ||| ||| ||| +0 Siege of Hull (1643) ||| Battle of Gainsborough ||| On 16 July 1643, [[Francis Willoughby, 5th Baron Willoughby of Parham|Lord Willoughby]] captured [[Gainsborough, Lincolnshire|Gainsborough]] for Parliament, only to be immediately besieged by the Royalists under Sir [[Charles Cavendish (1620-1643)|Charles Cavendish]]. Parliament sent a relieving force under Sir [[John Meldrum]] and Colonel [[Oliver Cromwell]], which beat the Royalists at the [[Battle of Gainsborough]] on 28 July. However, the arrival of Newcastle's main army forced the abandonment of Gainsborough, which, with [[Lincoln, Lincolnshire|Lincoln]], fell quickly to the Royalists. ||| Prelude ||| Gainsborough and Lincoln ||| +0 Siege of Hüningen (1796–97) ||| Battle of Emmendingen ||| Wartensleben and Charles united first, and the tide turned against the French. With 25,000 of his best troops, the Archduke crossed to the north bank of the [[Danube]] at [[Regensburg]] and moved north to join his colleague Wartensleben. The defeat of Jourdan's army at [[Battle of Amberg|Amberg]], [[Battle of Würzburg|Würzburg]] and [[Battle of Altenkirchen|Altenkirchen]] allowed Charles to move more troops to the south. The next contact occurred on 19 October at [[Battle of Emmendingen|Emmendingen]], in the [[Elz (Rhine)|Elz]] valley which winds through the Black Forest. The section of the valley involved in the battle runs southwest through the mountains from Elzach, through Bleibach and Waldkirch. Just to the southwest of Waldkirch, the river emerges from the mountains and flows northwest towards the Rhine, with the Black Forest to its right. This section of the river passes through Emmendingen before it reaches [[Riegel am Kaiserstuhl|Riegel]]. Riegel sits in a narrow gap between the Black Forest and an isolated outcropping of volcanic hills known as the [[Kaiserstuhl (Baden-Württemberg)|Kaiserstuhl]]. Here the archduke split his force into four columns. ||| Military situation in early 1796 ||| Preliminaries to the siege ||| +0 Siege of Hüningen (1796–97) ||| Battle of Kaiserslautern ||| On 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–1798), France ranged itself against most of the European states sharing land or water borders with her, plus Portugal and the Ottoman Empire. Coalition forces achieved several victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], but these were countered by French victories at [[Battle of Tourcoing|Tourcouring (1794)]], [[Siege of Dunkirk (1793)|Dunkirk]], and [[Battle of Haguenau (1793)|Haguenau]]. For the French, the [[Rhine Campaign of 1795]] proved especially disastrous, although they had achieved some success in other theaters of war (see for example, [[War of the Pyrenees|War of the Pyrenees (1793–1795)]]. ||| Background ||| ||| +0 Siege of Hüningen (1796–97) ||| Battle of Kehl (1796) ||| The French grand plan called for two French armies to press against the flanks of the northern armies in the German states while a third army simultaneously approached Vienna through Italy. [[Jean-Baptiste Jourdan]]'s army would push southeast from Düsseldorf, hopefully drawing troops and attention toward themselves, which would allow Moreau's army an easier crossing of the Rhine between Kehl and Hüningen. According to plan, Jourdan's army feinted toward Mannheim, and Charles quickly reapportioned his troops. Moreau's army attacked the bridgehead at Kehl, which was guarded by 7,000 imperial troops—troops recruited that spring from the [[Swabian Circle|Swabian circle]] polities, inexperienced and untrained—which amazingly held the bridgehead for several hours, but then retreated toward Rastatt. On June 23–24, Moreau [[Battle of Kehl (1796)|reinforced]] the bridgehead with his forward guard. After pushing the imperial militia from their post on the bridgehead, his troops poured into Baden unhindered. Similarly, in the south, by Basel, Ferino's column moved speedily across the river and proceeded up the Rhine along the Swiss and German shoreline, toward Lake Constance and into the southern end of the Black Forest. Anxious that his supply lines would be overextended, Charles began a retreat to the east. ||| Military situation in early 1796 ||| ||| +0 Siege of Hüningen (1796–97) ||| Battle of Neerwinden (1793) ||| On 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–1798), France ranged itself against most of the European states sharing land or water borders with her, plus Portugal and the Ottoman Empire. Coalition forces achieved several victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], but these were countered by French victories at [[Battle of Tourcoing|Tourcouring (1794)]], [[Siege of Dunkirk (1793)|Dunkirk]], and [[Battle of Haguenau (1793)|Haguenau]]. For the French, the [[Rhine Campaign of 1795]] proved especially disastrous, although they had achieved some success in other theaters of war (see for example, [[War of the Pyrenees|War of the Pyrenees (1793–1795)]]. ||| Background ||| ||| +0 Siege of Hüningen (1796–97) ||| Battle of Schliengen ||| With the conclusion of the [[Battle of Schliengen]] on 24 October, the French army withdrew south and west toward the Rhine. Forces commanded by [[Jean Charles Abbatucci]] and [[Pierre Marie Barthélemy Ferino]] provided the rear guard support and the main force retreated across the Rhine into France. The French retained control of the fortifications at Kehl and Hüningen and, more importantly, the ''[[Bridgehead|tête-du-pont]]s'' (bridgeheads) of the star-shaped [[Star fort|fortresses]] where the bridges crossed the Rhine. The French chief commander, [[Jean Victor Marie Moreau|Jean Victor Moreau]], offered an armistice to the Austrian commander, which the archduke was inclined to accept. He wanted to secure the Rhine crossings and then send troops to northern Italy to relieve [[Dagobert Sigmund von Wurmser]] at besieged [[Siege of Mantua (1796–1797)|Mantua]]; an armistice with Moreau would allow him to do that. However, his brother, [[Francis II, Holy Roman Emperor|Francis II]], the Holy Roman Emperor, and the civilian military advisers of the [[Aulic Council]] categorically refused such an armistice, forcing Charles to order simultaneous sieges at [[Siege of Kehl (1796)|Kehl]] and Hüningen. These tied his army to the Rhine for most of the winter. He himself moved north with the bulk of his force to invest the larger crossing at Kehl, and instructed [[Karl Aloys zu Fürstenberg]] to conduct the siege in the south by Basel. While the Austrians besieged these Rhine crossings, Moreau had sufficient surplus troops to send 14 demi-brigades (approximately 12,000 troops) into Italy to assist in the siege at Mantua. ||| ||| ||| +0 Siege of Hüningen (1796–97) ||| Siege of Dunkirk (1793) ||| On 20 April 1792, the [[French National Convention]] declared war on Austria. In this [[War of the First Coalition]] (1792–1798), France ranged itself against most of the European states sharing land or water borders with her, plus Portugal and the Ottoman Empire. Coalition forces achieved several victories at [[Battle of Verdun (1792)|Verdun]], [[Battle of Kaiserslautern|Kaiserslautern]], [[Battle of Neerwinden (1793)|Neerwinden]], but these were countered by French victories at [[Battle of Tourcoing|Tourcouring (1794)]], [[Siege of Dunkirk (1793)|Dunkirk]], and [[Battle of Haguenau (1793)|Haguenau]]. For the French, the [[Rhine Campaign of 1795]] proved especially disastrous, although they had achieved some success in other theaters of war (see for example, [[War of the Pyrenees|War of the Pyrenees (1793–1795)]]. ||| Background ||| ||| +0 Siege of Inverness (1649) ||| Battle of Carbisdale ||| James Graham, 1st Marquess of Montrose, landed in Ross-shire in 1650, expecting support from the clans who had rebelled in 1649. However, by this time many of them had switched sides, and opposed him at the [[Battle of Carbisdale]]. ||| ||| ||| +0 Siege of Jerusalem (1099) ||| Battle of Ascalon ||| On August 12, Godfrey led an army, with the True Cross carried in the vanguard, against the Fatimid army at the [[Battle of Ascalon]] on August 12. The crusaders were successful, but following the victory, the majority of them considered their crusading vows to have been fulfilled, and all but a few hundred knights returned home. Nevertheless, their victory paved the way for the establishment of the Crusader [[Kingdom of Jerusalem]]. ||| Aftermath ||| ||| +0 Siege of Jerusalem (637) ||| Siege of Jerusalem (1099) ||| Over the next 400 years, the city's prominence diminished as Saracen powers in the region jockeyed for control. Jerusalem remained under Muslim rule until it was [[Siege of Jerusalem (1099)|captured by Crusaders in 1099]] during the [[First Crusade]]. ||| Aftermath ||| ||| +0 Siege of Kehl (1796–97) ||| Battle of Stockach (1799) ||| The capitulation at Kehl on 9 January allowed Charles to send additional troops and heavy artillery to Hüningen. On 2 February 1797, as the Austrians prepared to storm the bridgehead, General of Division [[Georges Joseph Dufour]], the French commander who had replaced the deceased Jean Charles Abbatucci, pre-empted what would have been a costly attack, offering to surrender the bridge. On 5 February, Fürstenberg finally took possession. Francis II, the Holy Roman Emperor, appointed him as [[Proprietor (Inhaber)|Colonel and Proprietor]] of the Infantry Regiment Nr. 36, which bore his name until his death in [[Battle of Stockach (1799)|battle]] in 1799. ||| Aftermath ||| ||| +0 Siege of Kehl (1796–97) ||| Siege of Kehl (1703) ||| In the 1790s, the Rhine was wild, unpredictable, and difficult to cross, in some places more than four or more times wider than it is in the twenty-first century, even under non-flood conditions. Its channels and tributaries wound through marsh and meadow and created islands of trees and vegetation that were alternate submerged by floods or exposed during the dry seasons. At Kehl and the city of Strasbourg lay a complex of bridges, gates, fortifications and [[Barrage (dam)|barrage dam]]s. These had been constructed by the fortress architect [[Sébastien Le Prestre de Vauban|Sébastien le Prestre de Vauban]] in the seventeenth century. The crossings had been contested before: in 1678 during the French-Dutch war, in [[Siege of Kehl (1703)|1703]] during the [[War of the Spanish Succession]], in [[Siege of Kehl (1733)|1733]] during the [[War of the Polish Succession]], and earlier in [[Battle of Kehl (1796)|1796]], when the French crossed into the German states on 23-24 June. Critical to French success was the army's ability to cross the Rhine at will. The crossings at [[Hüningen]], near the Swiss city of [[Basle|Basel]], and the crossing at Kehl, gave them ready access to most of southwestern Germany; from there, French armies could sweep north, south, or east, depending on their military goal. ||| ||| ||| +0 Siege of Kehl (1796–97) ||| Siege of Kehl (1733) ||| In the 1790s, the Rhine was wild, unpredictable, and difficult to cross, in some places more than four or more times wider than it is in the twenty-first century, even under non-flood conditions. Its channels and tributaries wound through marsh and meadow and created islands of trees and vegetation that were alternate submerged by floods or exposed during the dry seasons. At Kehl and the city of Strasbourg lay a complex of bridges, gates, fortifications and [[Barrage (dam)|barrage dam]]s. These had been constructed by the fortress architect [[Sébastien Le Prestre de Vauban|Sébastien le Prestre de Vauban]] in the seventeenth century. The crossings had been contested before: in 1678 during the French-Dutch war, in [[Siege of Kehl (1703)|1703]] during the [[War of the Spanish Succession]], in [[Siege of Kehl (1733)|1733]] during the [[War of the Polish Succession]], and earlier in [[Battle of Kehl (1796)|1796]], when the French crossed into the German states on 23-24 June. Critical to French success was the army's ability to cross the Rhine at will. The crossings at [[Hüningen]], near the Swiss city of [[Basle|Basel]], and the crossing at Kehl, gave them ready access to most of southwestern Germany; from there, French armies could sweep north, south, or east, depending on their military goal. ||| ||| ||| +0 Siege of Kijevo (1991) ||| 1991 protest in Split ||| The '''1991 siege of Kijevo''' was one of the earliest conflicts in the [[Croatian War of Independence]]. The 9th Corps of the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) led by [[Colonel]] [[Ratko Mladić]] and the forces of the [[SAO Krajina|Serbian Autonomous Oblast (region) of Krajina]] (SAO Krajina) under [[Knin]] police chief [[Milan Martić]] besieged the Croat-inhabited village of [[Kijevo, Croatia|Kijevo]] in late April and early May 1991. The initial siege was lifted after negotiations that followed [[1991 protest in Split|major protests in Split against the JNA]]. ||| ||| ||| +0 Siege of Kimberley ||| Battle of Magersfontein ||| The British military had to change its strategy for the war as public opinion demanded that the sieges of Kimberley, [[Siege of Ladysmith|Ladysmith]] and [[Siege of Mafeking|Mafeking]] be relieved before the Boer capitals were assaulted. The first attempt at relief of Kimberley under [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] was stopped at the battles of [[Battle of Modder River|Modder River]] and [[Battle of Magersfontein|Magersfontein]]. The 124-day siege was finally relieved on 15 February 1900 by a cavalry division under [[John French, 1st Earl of Ypres|Lieutenant-General John French]], part of a larger force under [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]]. The battle against the Boer general [[Piet Cronjé]] continued at [[Battle of Paardeberg|Paardeberg]] immediately after the town itself was relieved. ||| ||| ||| +0 Siege of Kimberley ||| Battle of Modder River ||| The British military had to change its strategy for the war as public opinion demanded that the sieges of Kimberley, [[Siege of Ladysmith|Ladysmith]] and [[Siege of Mafeking|Mafeking]] be relieved before the Boer capitals were assaulted. The first attempt at relief of Kimberley under [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] was stopped at the battles of [[Battle of Modder River|Modder River]] and [[Battle of Magersfontein|Magersfontein]]. The 124-day siege was finally relieved on 15 February 1900 by a cavalry division under [[John French, 1st Earl of Ypres|Lieutenant-General John French]], part of a larger force under [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]]. The battle against the Boer general [[Piet Cronjé]] continued at [[Battle of Paardeberg|Paardeberg]] immediately after the town itself was relieved. ||| ||| ||| +0 Siege of Kimberley ||| Battle of Paardeberg ||| The British military had to change its strategy for the war as public opinion demanded that the sieges of Kimberley, [[Siege of Ladysmith|Ladysmith]] and [[Siege of Mafeking|Mafeking]] be relieved before the Boer capitals were assaulted. The first attempt at relief of Kimberley under [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] was stopped at the battles of [[Battle of Modder River|Modder River]] and [[Battle of Magersfontein|Magersfontein]]. The 124-day siege was finally relieved on 15 February 1900 by a cavalry division under [[John French, 1st Earl of Ypres|Lieutenant-General John French]], part of a larger force under [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]]. The battle against the Boer general [[Piet Cronjé]] continued at [[Battle of Paardeberg|Paardeberg]] immediately after the town itself was relieved. ||| ||| ||| +0 Siege of Kimberley ||| First Boer War ||| Tensions soon started rising between the British Empire and the two Boer republics. The causes of the war were complex, with contributing factors including the Boers' desire for independence, the prize of the rich gold fields, [[Scramble for Africa|British colonial expansionist ambitions in Africa]], perceived ill-treatment of British [[expatriate]]s working in the Boer republics, the [[First Boer War]] and a failed British-organised uprising in the form of the [[Jameson Raid]]. Discussions broke down in October 1899 when the British ignored a Boer [[ultimatum]] to stop concentrating forces on the borders of the Boer republics. ||| Background ||| ||| +0 Siege of Kimberley ||| Jameson Raid ||| [[Cecil Rhodes]], who had made his fortune in the town, and who controlled all the mining activities, moved into the town at the onset of the siege. His presence was controversial, as his involvement in the [[Jameson Raid]] made him one of the primary protagonists behind war breaking out. Rhodes was constantly at loggerheads with the military, but he was nonetheless instrumental in organising the defence of the town. The Boers shelled the town with their superior artillery in an attempt to force the garrison to capitulate. Engineers of the [[De Beers]] company manufactured a one-off gun named [[Long Cecil]], however the Boers soon countered with a much larger siege gun that terrified the residents, forcing many to take shelter in the [[Big Hole|Kimberley Mine]]. ||| ||| ||| +0 Siege of Kimberley ||| Siege of Ladysmith ||| The British military had to change its strategy for the war as public opinion demanded that the sieges of Kimberley, [[Siege of Ladysmith|Ladysmith]] and [[Siege of Mafeking|Mafeking]] be relieved before the Boer capitals were assaulted. The first attempt at relief of Kimberley under [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] was stopped at the battles of [[Battle of Modder River|Modder River]] and [[Battle of Magersfontein|Magersfontein]]. The 124-day siege was finally relieved on 15 February 1900 by a cavalry division under [[John French, 1st Earl of Ypres|Lieutenant-General John French]], part of a larger force under [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]]. The battle against the Boer general [[Piet Cronjé]] continued at [[Battle of Paardeberg|Paardeberg]] immediately after the town itself was relieved. ||| ||| ||| +0 Siege of Kimberley ||| Siege of Mafeking ||| The British military had to change its strategy for the war as public opinion demanded that the sieges of Kimberley, [[Siege of Ladysmith|Ladysmith]] and [[Siege of Mafeking|Mafeking]] be relieved before the Boer capitals were assaulted. The first attempt at relief of Kimberley under [[Paul Methuen, 3rd Baron Methuen|Lord Methuen]] was stopped at the battles of [[Battle of Modder River|Modder River]] and [[Battle of Magersfontein|Magersfontein]]. The 124-day siege was finally relieved on 15 February 1900 by a cavalry division under [[John French, 1st Earl of Ypres|Lieutenant-General John French]], part of a larger force under [[Frederick Roberts, 1st Earl Roberts|Lord Roberts]]. The battle against the Boer general [[Piet Cronjé]] continued at [[Battle of Paardeberg|Paardeberg]] immediately after the town itself was relieved. ||| ||| ||| +0 Siege of Kolberg (1807) ||| World War II ||| Before [[World War II]], a monument in the town's center was dedicated to Gneisenau, Nettelbeck and Schill; Schill's house was marked with a memorial plaque, After the war, when the town [[Oder-Neisse line|became Polish]], a street in Kołobrzeg was named after [[Antoni Paweł Sułkowski|Antoni Sułkowski]], the commander of the Polish troops taking part in the siege. ||| Aftermath ||| In popular memory ||| +0 Siege of Ladysmith ||| Battle of Elandslaagte ||| A total of 21,000 Boers advanced into Natal from all sides. with a detachment even further forward at [[Dundee, KwaZulu-Natal|Dundee]]. The entire British force could concentrate only after fighting two battles at [[Battle of Talana Hill|Talana Hill]] and [[Battle of Elandslaagte|Elandslaagte]]. As the Boers surrounded Ladysmith, White ordered a sortie by his entire force to capture the Boer artillery. The result was the disastrous [[Battle of Ladysmith]], in which the British were driven back into the town having lost 1,200 men killed, wounded or captured. ||| Outbreak of war ||| ||| +0 Siege of Ladysmith ||| Battle of Ladysmith ||| A total of 21,000 Boers advanced into Natal from all sides. with a detachment even further forward at [[Dundee, KwaZulu-Natal|Dundee]]. The entire British force could concentrate only after fighting two battles at [[Battle of Talana Hill|Talana Hill]] and [[Battle of Elandslaagte|Elandslaagte]]. As the Boers surrounded Ladysmith, White ordered a sortie by his entire force to capture the Boer artillery. The result was the disastrous [[Battle of Ladysmith]], in which the British were driven back into the town having lost 1,200 men killed, wounded or captured. ||| Outbreak of war ||| ||| +0 Siege of Landau (1702) ||| Battle of Friedlingen ||| The earliest actions from the war were focused in northern Italy in 1701, but military activity began in the [[Electoral Palatinate]] the following year. In the Palatinate, Louis of Baden and an Imperial army crossed the [[Rhine]] River at [[Speyer]] and moved south to invest Landau. Unwilling to challenge his stronger foes, [[Nicolas Catinat]] with his French army watched from a distance as the Landau defenses were methodically reduced by siege artillery, mining and infantry attacks. After losing a key defensive position, Mélac and his garrison were forced to capitulate. At this time, the [[Electorate of Bavaria]] became a French ally, tipping the balance of power and causing Louis of Baden to withdraw. The next clash was the [[Battle of Friedlingen]] on 14 October 1702. ||| ||| ||| +0 Siege of Landau (1702) ||| Battle of Slankamen ||| Not all the available troops are listed. To protect the siege against French incursions, Louis posted 10 battalions and 15 squadrons on the [[Lauter (Rhine)|Lauter River]] under [[Christian Ernst, Margrave of Brandenburg-Bayreuth]], seven battalions and 12 squadrons at Rastatt and seven battalions and eight squadrons on the upper Rhine. By June, Louis' army numbered 32,000 foot and 14,000 horse. The Imperial army's general officers included [[Feldmarschall]] Hans Karl von Thüngen who fought with Louis at the [[Battle of Slankamen]], [[Bernhard I, Duke of Saxe-Meiningen]], [[Charles Alexander, Duke of Württemberg]], [[John Ernst, Count of Nassau-Weilburg]], Franz Sebastian von Thürheim and [[Maximilian Karl Albert, Prince of Löwenstein-Wertheim-Rochefort]]. ||| Forces ||| ||| +0 Siege of Lathom House ||| Battle of Marston Moor ||| After the Parliamentary victory at the [[Battle of Marston Moor]], which was fought 2 July ||| Second siege ||| ||| +0 Siege of Leningrad ||| Battle of Moscow ||| The 872 days of the siege caused unparalleled famine in the Leningrad region through disruption of utilities, water, energy and food supplies. This resulted in the deaths of up to 1,500,000 [[Piskaryovskoye Memorial Cemetery]] alone in Leningrad holds half a million civilian victims of the siege. Economic destruction and human losses in Leningrad on both sides exceeded those of the [[Battle of Stalingrad]], the [[Battle of Moscow]], or the [[atomic bombings of Hiroshima and Nagasaki]]. The siege of Leningrad is the [[Most lethal battles in world history|most lethal siege in world history]], and some historians speak of the siege operations in terms of [[genocide]], as a 'racially motivated starvation policy' that became an integral part of the unprecedented German war of extermination against populations of the Soviet Union generally. ||| Effect on the city ||| ||| +0 Siege of Leningrad ||| Operation Barbarossa ||| The capture of Leningrad was one of three strategic goals in the German [[Operation Barbarossa]] and the main target of Army Group North. The strategy was motivated by [[Leningrad]]'s political status as the former capital of [[Russia]] and the symbolic capital of the [[Russian Revolution (1917)|Russian Revolution]], its military importance as a main base of the Soviet [[Baltic Fleet]] and its industrial strength, housing numerous arms factories. ||| Background ||| ||| +0 Siege of Leningrad ||| Operation Iskra ||| * '''12–30 January:''' ''[[Operation Iskra]]'' penetrates the siege by opening a land corridor along the coast of Lake Ladoga into the city. The blockade is broken. ||| Timeline ||| 1943 ||| +0 Siege of Leningrad ||| Operation Polyarnaya Zvezda ||| * '''10 February – 1 April:''' The unsuccessful [[Operation Polyarnaya Zvezda]] attempts to lift the siege. ||| Timeline ||| 1943 ||| +0 Siege of Lille (1708) ||| Battle of Malplaquet ||| With the loss of Lille, the French presence in northern Flanders crumbled{{Who|date=August 2011}}; the Allies moved against [[Ghent]], taking the city in late December. However, an invasion of France the following summer along the corridor opened by the fall of Lille would run into a bloody standstill at the [[Battle of Malplaquet]]. ||| ||| ||| +0 Siege of Lille (1708) ||| Battle of Oudenarde ||| The siege was made possible by the destruction of the French army at the [[Battle of Oudenarde]] and the landing in [[Ostend]] of large amounts of ammunition and food after the [[Battle of Wijnendale]]. For most of the campaign, Eugene commanded the forces besieging Lille, while Marlborough commanded the forces covering those forces against external French interference. For a short period in late September however, after Eugene was injured on the 21st, Marlborough took command of both the besiegers and the covering force. ||| ||| ||| +0 Siege of Lille (1708) ||| Battle of Wijnendale ||| The siege was made possible by the destruction of the French army at the [[Battle of Oudenarde]] and the landing in [[Ostend]] of large amounts of ammunition and food after the [[Battle of Wijnendale]]. For most of the campaign, Eugene commanded the forces besieging Lille, while Marlborough commanded the forces covering those forces against external French interference. For a short period in late September however, after Eugene was injured on the 21st, Marlborough took command of both the besiegers and the covering force. ||| ||| ||| +0 Siege of Limerick (1650–51) ||| Cromwellian conquest of Ireland ||| '''[[Limerick]]''', in western Ireland was the scene of two sieges during the [[Irish Confederate Wars]]. The second and largest of these took place during the [[Cromwellian conquest of Ireland]] in 1650–51. Limerick was one of the last fortified cities held by an alliance of Irish [[Confederate Ireland|Confederate Catholics]] and English Royalists against the forces of the English Parliament. Its garrison, led by [[Hugh Dubh O'Neill]], surrendered to [[Henry Ireton]] after a protracted and bitter siege. ||| ||| ||| +0 Siege of Limerick (1690) ||| Battle of the Boyne ||| '''Limerick''', a city in western [[Ireland]], was besieged twice in the [[Williamite War in Ireland]], 1689-1691. On the first of these occasions, in August to September 1690, its [[Jacobitism|Jacobite]] defenders retreated to the city after their defeat at the [[Battle of the Boyne]]. The [[Williamite]]s, under [[William III of England|William III]], tried to take Limerick by storm, but were driven off and had to retire into their winter quarters. ||| ||| ||| +0 Siege of Lleida (1644) ||| Siege of Barcelona (1651) ||| [[Philippe de La Mothe-Houdancourt]], who failed to lift the Spanish siege was replaced by [[Henri de Lorraine, count of Harcourt]]. the Spanish took [[Balaguer]] in September and [[Agramunt]] in October. After the conquest of [[Rosas]], the frontline stabilized for many years, until the Spanish [[Siege of Barcelona (1651)]]. ||| ||| ||| +0 Siege of Louisbourg (1745) ||| Raid on Lorient ||| Both France and Britain planned expeditions to North America in the wake of the capture. The great [[Duc d'Anville Expedition]] led by [[Jean-Baptiste Louis Frédéric de La Rochefoucauld de Roye|Admiral Jean-Batiste, De Roye de la Rochefoucauld, Duc d'Anville]] was dispatched from France to retake Louisbourg and recover Acadia in 1746. However it was destroyed by storms, disease and British naval attacks and never reached the fortress. The British government made plans, based on suggestions by Shirley and Warren, for a follow-up expedition to seize Quebec. For a variety of reasons, including a late start and contrary winds, the 1746 expedition did not leave European waters, and was instead diverted to [[Raid on Lorient|raid the French port of Lorient]]. Although the idea was also considered for the 1747 campaign season, it again failed to bear fruit. ||| Aftermath ||| ||| +0 Siege of Louisbourg (1745) ||| Siege of Louisbourg (1758) ||| When the war ended with the signing of the [[Treaty of Aix-la-Chapelle (1748)|Treaty of Aix-la-Chapelle]] in 1748, Louisbourg was returned to France in exchange for the return of [[Madras]] to Britain, and the withdrawal of French troops from the [[Low Countries]]. The decision to withdraw from Louisbourg came under fierce attacks in London from opponents of the [[Pelham Ministry]], but it went ahead nonetheless. In 1758 the fortress [[Siege of Louisbourg (1758)|was captured again by the British]] during the [[Seven Years' War]], this time permanently, as Île-Royale and much of [[New France]] was ceded to Britain under the terms of the [[Treaty of Paris (1763)|1763 Treaty of Paris]]. ||| Aftermath ||| ||| +0 Siege of Louisbourg (1758) ||| Battle of Fort Oswego (1756) ||| On 26 July the French surrendered. Having fought a spirited defence, the French expected to be granted 'honours of war' as given to the surrendering British at the [[Battle of Minorca]]. However, Amherst refused, tales of the atrocities supposedly committed by France's native allies at the surrender of [[Battle of Fort Oswego (1756)|Fort Oswego]] and [[Siege of Fort William Henry|Fort William Henry]] probably fresh in his mind. The defenders of Louisbourg were ordered to surrender all of their arms, equipment and flags. These actions outraged Drucour, but because the safety of the non-combatant inhabitants of Louisbourg depended upon him he reluctantly accepted the terms of surrender. The Cambis regiment refused to honour the terms of surrender, breaking their muskets and burning their regimental flags rather than hand them over to the British victors. ||| Capitulation ||| ||| +0 Siege of Louisbourg (1758) ||| Battle of the Plains of Abraham ||| The loss of Louisbourg deprived Quebec and New France of naval protection, opening the Saint Lawrence to attack. Louisbourg was used in 1759 as the staging point for General [[James Wolfe|Wolfe]]'s famous [[Battle of the Plains of Abraham|Siege of Quebec]] ending French rule in North America. Following the surrender of Quebec, British forces and engineers set about methodically destroying the fortress with explosives, ensuring that it could not return to French possession a second time in any eventual peace treaty. By 1760, the entire fortress was reduced to mounds of rubble. In 1763 the [[Treaty of Paris (1763)|Treaty of Paris]] saw France formally cede Canada, including Cape Breton Island, to the British. In 1768 the last of the British garrison departed along with most of the remaining civilian inhabitants. ||| Aftermath ||| ||| +0 Siege of Louisbourg (1758) ||| Siege of Louisbourg (1745) ||| Pitt assigned the duty of capturing the fortress to Major General [[Jeffrey Amherst]]. Amherst's brigadiers were [[Charles Lawrence (British Army officer)|Charles Lawrence]], [[James Wolfe]] and [[Edward Whitmore]], and command of naval operations was assigned to Admiral [[Edward Boscawen]]. The chief engineer was [[John Henry Bastide]] who had been present at the [[Siege of Louisbourg (1745)|first siege of Louisbourg]] in 1745 and was chief engineer at Fort St Philip, Minorca, in 1756 [[Fall of Minorca|when the British had surrendered the fort and the island]] to the French after a long siege. ||| Background ||| ||| +0 Siege of Lucknow ||| Battle of Chinhat ||| On 30 June, Lawrence learned that the rebels were gathering north of Lucknow and ordered a reconnaissance in force, despite the available intelligence being of poor quality. Although he had comparatively little military experience, Lawrence led the expedition himself. The expedition was not very well organised. The troops were forced to march without food or adequate water during the hottest part of the day at the height of summer, and at the [[Battle of Chinhat|Chinhat]] they met a well-organised rebel force, with [[cavalry]] and dug-in artillery. Whilst they were under attack, some of Lawrence's sepoys and Indian artillerymen defected to the rebels, overturning their guns and cutting the traces. {{rp|484}} His exhausted British soldiers retreated in disorder. Some died of [[heatstroke]] within sight of the Residency. ||| Rebellion begins ||| ||| +0 Siege of Lydenburg ||| Battle of Majuba Hill ||| On 23 March, Boers again entered Lydenburg, informing Long of the death of [[George Pomeroy Colley|Major-General George Colley]] at [[Battle of Majuba Hill|Majuba Hill]], and requesting British surrender. Still, the siege continued until 30 March 1881, when Lieutenant Baker, from the [[King's Royal Rifle Corps|60th regiment]], agreed to peace terms with the Boers. ||| Siege ||| ||| +0 Siege of Lydenburg ||| Second Boer War ||| Following the capture of Lydenburg and other British forts in Transvaal, the South African Republic regained independence and control over its territories. British forces would again enter Lydenburg during the [[Second Boer War]]. ||| Aftermath ||| ||| +0 Siege of Lyme Regis ||| Sieges of Taunton ||| Maurice retreated to Exeter, while the Earl of Essex continued down into [[Devon]] and [[Cornwall]], after sending Blake to [[Sieges of Taunton|capture Taunton]]. Essex's campaign failed, suffering a total defeat at the [[Battle of Lostwithiel]] in early September 1644. His remaining forces retreated back to Dorset, leaving only Plymouth, Lyme Regis and Taunton under Parliamentarian control in the south-west. ||| Aftermath ||| ||| +0 Siege of Madras ||| Battle of Madras ||| Britain and France had been struggling for colonial supremacy in [[India]] for several years. in 1746 the city had been captured at the [[Battle of Madras]], but was returned in 1748. Following the fresh outbreak of war both sides were soon in conflict again. By 1757 Britain held the upper hands after several victories by [[Robert Clive]]. In 1758 French reinforcements under [[Thomas Arthur, Comte Lally|Lally]] had arrived in Pondicherry and set about advancing France's position on the [[Coromandel Coast]], notably capturing [[Fort St. David]]. ||| Background ||| ||| +0 Siege of Madrid ||| Battle of Brunete ||| The year 1937 saw two major battles in the immediate area around Madrid, the [[Battle of Jarama]] (January to February) and the [[Battle of Brunete]] in July. In addition, two other battles were fought further afield as part of the Nationalist's campaign to take the capital: in March, at [[Guadalajara, Spain|Guadalajara]] and at the end of December at [[Teruel]], both north east of Madrid. ||| Battles around Madrid (1937) ||| ||| +0 Siege of Madrid ||| Battle of Guadalajara ||| In March, the [[Battle of Guadalajara]] was fought about 60 km to the north east of Madrid, when Republican troops routed an attempt by Italian troops to cross the Jarama, encircle Madrid's defences and launch an assault on the city. With around a third of the city of Madrid heavily damaged by that time, morale was still holding up strongly amongst the populace, and Madrilenes prided themselves of doing 'business as usual' under fire. ||| Battles around Madrid (1937) ||| ||| +0 Siege of Madrid ||| Second Battle of the Corunna Road ||| The battle petered out in December, with both sides exhausted. A front line stabilised in the city, running from the Nationalist [[Salients, re-entrants and pockets|salient]] over the river Manzanares, in the University City, through the Casa de Campo park, and through the streets of the Carabanchel area. The population of Madrid was subjected to a sporadic artillery and aerial bombardment, and food became short as the winter went on. The UGT union transferred some vital industries to [[rapid transit|metro]] tunnels under the city, which were not in use. Franco's final action of 1936 was to attempt to cut off the road to [[A Coruña|Corunna]], northeast of Madrid, as the first step towards surrounding the Spanish capital. The resulting [[Second Battle of the Corunna Road|Battle of the Corunna Road]] also resulted in a stalemate. ||| Battle for Madrid (November 1936) ||| Front stabilises ||| +0 Siege of Mafeking ||| Siege of Kimberley ||| As in the case of the nearby [[Siege of Kimberley]], the Boers decided that the town was too heavily defended to take. On 19 November, 4,000 Boers were redeployed elsewhere, although the siege remained and shelling of Mafeking continued. Aware of the approaching British relief columns, the Boers launched a final major attack early in the morning of 12 May that succeeded in breaching the perimeter defences and setting fire to some of the town, but were finally beaten back. ||| Siege ||| ||| +0 Siege of Medina ||| Battle of Aqaba ||| With British support, an initial attack led by Hussein's son [[Faisal I of Iraq|Feisal]] was launched against Medina in October 1916; however, the Arabs were repulsed with heavy losses by the Turks, who were heavily-entrenched and armed with artillery, which the Arabs lacked. As the Arab Revolt slowly spread northwards along the [[Red Sea]] (ultimately culminating in the [[Battle of Aqaba|seizure of Aqaba]]), British and Arab strategy for capturing Medina changed, and Faisal and his advisers was determined that the Arabs would gain an advantage by leaving Medina unoccupied; this would force the Turks to retain troops to defend Medina, and to protect the [[Hejaz Railway]], the only means of supplying the city. ||| Events ||| ||| +0 Siege of Motya ||| Battle of Salamis ||| Himilco, however, had managed to put the Syracusan navy in a similar position the Persians were in at the [[Battle of Salamis]]: while the Carthaginian ships had room to maneuver, the Greeks did not, which nullified the numerical superiority and heavier Greek ships (the Greeks had quinqueremes, the Carthaginians did not). Had Dionysius sent ships south to meet the Carthaginians, the depth of the lagoon would mean a small number of his ships would have emerged to the south of Motya to face the entire Carthaginian fleet. Himilco would then have the advantage of numbers and room to maneuver and could destroy the Greek ships in detail. ||| Siege of Motya: Initial steps ||| Trappers trapped ||| +0 Siege of Namur (1914) ||| Siege of Antwerp (1914) ||| The '''Siege of Namur''' ({{lang-fr|Siège de Namur}}) was a battle between [[Belgium|Belgian]] and [[German Empire|German]] forces around the fortified city of [[Namur, Belgium|Namur]] during [[World War I]]. Namur was defended by a ring of modern fortresses, known as the [[Fortified Position of Namur]] and guarded by the Belgian 4th Division. When the siege began on 20 August, the German forces used experience gained at the [[Battle of Liège]] {{nowrap|(4–16 August)}} and bombarded the forts using German super-heavy siege artillery and four batteries on loan from Austria-Hungary, before attacking with infantry. The French army was defeated at the [[Battle of Charleroi]] and managed to pass only one regiment into Namur as a reinforcement. The forts were destroyed by the bombardment, some being demolished by conventional heavy artillery rather than the siege guns, due to flaws in the concrete protection encasing the forts. The last of the Belgian fortress troops were forced to surrender on 25 August, after the survivors of the Belgian 4th Division had withdrawn to the south through the French Fifth Army and eventually joined the Belgian field army at Antwerp during the [[Siege of Antwerp (1914)|siege]]. ||| ||| ||| +0 Siege of Nicaea ||| Battle of Dorylaeum (1097) ||| The crusaders left Nicaea on June 26, in two contingents: Bohemond, Tancred, Robert of Flanders, and Tatikios in the vanguard, and Godfrey, Baldwin of Boulogne, Stephen, and Hugh of Vermandois in the rear. [[Tatikios]] was instructed to ensure the return of captured cities to the empire. Their spirits were high, and Stephen wrote to his wife [[Adela of Blois|Adela]] that they expected to be in Jerusalem in five weeks. On July 1, they defeated Kilij at the [[Battle of Dorylaeum (1097)|Battle of Dorylaeum]], and by October they reached [[Antioch]]; they would not reach Jerusalem until two years after leaving Nicaea. ||| Aftermath ||| ||| +0 Siege of Odessa (1941) ||| Siege of Leningrad ||| [[Orders, decorations, and medals of the Soviet Union|The Medal]] [[Medal 'For the Defence of Odessa'|'For the Defence of Odessa']] was established on 22 December 1942. Approximately 38,000 people have been awarded (servicemen of the Soviet Army, Navy, Ministry of Internal Affairs, and civil citizens who took part in the defense of Odessa). [[Odessa]] was one of the first four Soviet cities to be awarded the title of '[[Hero City]]' in 1945 (the others being [[Siege of Leningrad|Leningrad]], [[Battle of Stalingrad|Stalingrad]], [[Siege of Sevastopol (1941–42)|Sevastopol]]). ||| Soviet Recognition of the Defenders of Odessa ||| ||| +0 Siege of Oxford ||| Battle of Naseby ||| The first engagement was in May 1644, during which [[Charles I of England|King Charles I]] escaped, thus preventing a formal siege. The second, in May 1645, had barely started when [[Thomas Fairfax, 3rd Lord Fairfax of Cameron|Sir Thomas Fairfax]] was given orders to stop and pursue the King to [[Battle of Naseby|Naseby]] instead. The last siege began in May 1646 and was a formal siege of some three months; but the war was obviously over and negotiation, rather than fighting, took precedence. Being careful not to inflict too much damage on the city, Fairfax even sent in food to the King's second son, [[James II of England|James]], and was happy to conclude the siege with an honourable agreement before any further escalation occurred. ||| ||| ||| +0 Siege of Oxford ||| Siege of Reading ||| * [[Siege of Reading]] ||| See also ||| ||| +0 Siege of Petersburg ||| Battle of Cold Harbor ||| On May 4, Grant and Meade's Army of the Potomac crossed the [[Rapidan River]] and entered the area known as the Wilderness of [[Spotsylvania County, Virginia|Spotsylvania]], beginning the six-week [[Overland Campaign]]. At the bloody but tactically inconclusive [[Battle of the Wilderness]] (May 5–7) and [[Battle of Spotsylvania Court House]] (May 8–21), Grant failed to destroy Lee's army but, unlike his predecessors, did not retreat after the battles; he repeatedly moved his army leftward to the southeast in a campaign that kept Lee on the defensive and moved ever closer to Richmond. Grant spent the remainder of May maneuvering and fighting minor battles with the Confederate army as he attempted to turn Lee's flank and lure him into the open. Grant knew that his larger army and base of manpower in the North could sustain a war of attrition better than Lee and the Confederacy could. This theory was tested at the [[Battle of Cold Harbor]] (May 31 – June 12) when Grant's army once again came into contact with Lee's near [[Mechanicsville, Virginia|Mechanicsville]]. He chose to engage Lee's army directly, by ordering a frontal assault on the Confederate fortified positions on June 3. This attack was repulsed with heavy losses. Cold Harbor was a battle that Grant regretted more than any other and Northern newspapers thereafter frequently referred to him as a 'butcher'. Although Grant suffered high losses during the campaign—approximately 50,000 casualties, or 41%—Lee lost even higher percentages of his men—approximately 32,000, or 46%—losses that could not be replaced. ||| Background ||| ||| +0 Siege of Petersburg ||| Battle of Gettysburg ||| Directed by Hancock, divisions from three Union corps (II, V, and IX) and Gregg's cavalry division, numbering more than 30,000 men, withdrew from the Petersburg lines and marched west to operate against the Boydton Plank Road and South Side Railroad. The initial Union advance on October 27 gained the Boydton Plank Road, a major campaign objective. But that afternoon, a counterattack near Burgess' Mill spearheaded by Henry Heth's division, and Wade Hampton's cavalry isolated the II Corps and forced a retreat. The Confederates retained control of the Boydton Plank Road for the rest of the winter. It marked the last battle for Hancock, who resigned from field command because of wounds sustained at [[Battle of Gettysburg|Gettysburg]]. ||| Boydton Plank Road (October 27–28) ||| ||| +0 Siege of Petersburg ||| Battle of New Market ||| Most of these initiatives failed, often because of the assignment of generals to Grant for political rather than military reasons. Butler's [[Army of the James]] bogged down against inferior forces under Gen. [[P.G.T. Beauregard]] before Richmond in the [[Bermuda Hundred Campaign]]. Sigel was soundly defeated at the [[Battle of New Market]] in May and soon afterward he was replaced by Maj. Gen. [[David Hunter]]. Banks was distracted by the [[Red River Campaign]] and failed to move on Mobile. However, Crook and Averell were able to cut the last railway linking Virginia and Tennessee, and Sherman's [[Atlanta Campaign]] was a success, although it dragged on through the fall. ||| Background ||| ||| +0 Siege of Petersburg ||| Battle of Sappony Church ||| As Wilson and Kautz turned back to the east after their defeat at Staunton River Bridge, Rooney Lee's cavalry pursued and threatened their rear. Meanwhile, Robert E. Lee ordered Maj. Gen. [[Wade Hampton III|Wade Hampton]]'s cavalry, which had been engaged with Maj. Gen. [[Philip H. Sheridan]]'s cavalry at the [[Battle of Trevilian Station]] on June 11–12, to join the pursuit and attack Wilson and Kautz. Before leaving on his raid, Wilson had received assurances from Meade's chief of staff, Maj. Gen. [[Andrew A. Humphreys]], that the Army of the Potomac would be immediately taking control of the Weldon Railroad at least as far south as Reams Station, so Wilson decided that would be an appropriate place to return to Union lines. The Union defeat at [[Battle of Jerusalem Plank Road|Jerusalem Plank Road]] made those assurances inoperable. Wilson and Kautz were surprised on the afternoon of June 28 when they reached Stony Creek Station, {{convert|10|mi|km}} south of Reams, as hundreds of Hampton's cavalrymen (under Brig. Gen. [[John R. Chambliss]]) and infantry blocked their path. In the [[Battle of Sappony Church]], Wilson's men tried to break through, but had to fall back when Confederate Brig. Gen. [[Matthew C. Butler]] and [[Thomas L. Rosser]] threatened to envelop Wilson's left flank. Kautz's division, following Wilson's, took a back road in the direction of Reams Station and was attacked by Rooney Lee's division late in the day. The Union cavalrymen were able to slip out of the trap under the cover of darkness and rode north on the Halifax Road for the supposed security of Reams Station. ||| Initial attempts to cut the railroads (June 21–30) ||| Wilson-Kautz Raid (June 22 – July 1) {{anchor|Wilson-Kautz}} ||| +0 Siege of Petersburg ||| Battle of Spotsylvania Court House ||| On May 4, Grant and Meade's Army of the Potomac crossed the [[Rapidan River]] and entered the area known as the Wilderness of [[Spotsylvania County, Virginia|Spotsylvania]], beginning the six-week [[Overland Campaign]]. At the bloody but tactically inconclusive [[Battle of the Wilderness]] (May 5–7) and [[Battle of Spotsylvania Court House]] (May 8–21), Grant failed to destroy Lee's army but, unlike his predecessors, did not retreat after the battles; he repeatedly moved his army leftward to the southeast in a campaign that kept Lee on the defensive and moved ever closer to Richmond. Grant spent the remainder of May maneuvering and fighting minor battles with the Confederate army as he attempted to turn Lee's flank and lure him into the open. Grant knew that his larger army and base of manpower in the North could sustain a war of attrition better than Lee and the Confederacy could. This theory was tested at the [[Battle of Cold Harbor]] (May 31 – June 12) when Grant's army once again came into contact with Lee's near [[Mechanicsville, Virginia|Mechanicsville]]. He chose to engage Lee's army directly, by ordering a frontal assault on the Confederate fortified positions on June 3. This attack was repulsed with heavy losses. Cold Harbor was a battle that Grant regretted more than any other and Northern newspapers thereafter frequently referred to him as a 'butcher'. Although Grant suffered high losses during the campaign—approximately 50,000 casualties, or 41%—Lee lost even higher percentages of his men—approximately 32,000, or 46%—losses that could not be replaced. ||| Background ||| ||| +0 Siege of Petersburg ||| Battle of the Crater ||| Lee finally gave in to the pressure—the point at which supply lines were finally cut and a true siege began on March 25—and abandoned both cities in April 1865, leading to his [[Appomattox Campaign|retreat]] and surrender at [[Battle of Appomattox Court House|Appomattox Court House]]. The Siege of Petersburg foreshadowed the trench warfare that was common in [[World War I]], earning it a prominent position in military history. It also featured [[African Americans at Siege of Petersburg|the war's largest concentration of African American troops]], who suffered heavy casualties at such engagements as the [[Battle of the Crater]] and [[Battle of Chaffin's Farm|Chaffin's Farm]]. ||| ||| ||| +0 Siege of Petersburg ||| Siege of Vicksburg ||| Grant wanted to defeat Lee's army without resorting to a lengthy siege—his experience in the [[Siege of Vicksburg]] told him that such affairs were expensive and difficult on the morale of his men. [[Lieutenant Colonel (United States)|Lt. Col.]] [[Henry Pleasants]], commanding the [[48th Pennsylvania Volunteer Infantry Regiment|48th Pennsylvania Infantry]] of Maj. Gen. [[Ambrose E. Burnside]]'s [[IX Corps (Union Army)|IX Corps]], offered a novel proposal to solve Grant's problem. Pleasants, a mining engineer from [[Pennsylvania]] in civilian life, proposed digging a long mine shaft underneath the Confederate lines and planting explosive charges directly underneath a fort (Elliott's Salient) in the middle of the Confederate First Corps line. If successful, Union troops could drive through the resulting gap in the line into the Confederate rear area. Digging began in late June, creating a mine in a 'T' shape with an approach shaft {{convert|511|ft|m}} long. At its end, a perpendicular gallery of {{convert|75|ft|m}} extended in both directions. The gallery was filled with 8,000 pounds of gunpowder, buried {{convert|20|ft|m}} underneath the Confederate works. ||| The Crater (July 30) {{anchor|crater}} ||| ||| +0 Siege of Pondicherry (1778) ||| Battles of Saratoga ||| Following the American [[Battles of Saratoga|victory at Saratoga]] in October 1777, [[France]] decided to enter the [[American War of Independence]] as an ally to the [[United States]]. Word first reached the [[French India]]n colony of [[Puducherry|Pondicherry]] in July 1778 that France and [[Kingdom of Great Britain|Britain]] had recalled their ambassadors, a sign that war was imminent. The British colonies had already received orders to seize the French possessions in India and begun military preparations. ||| Background ||| ||| +0 Siege of Pondicherry (1793) ||| Third Anglo-Mysore War ||| News of the outbreak of war took five months to reach the [[Indian Ocean]] but British forces, recently engaged in the [[Third Anglo-Mysore War]], were mobilised in preparation and immediately seized the ports of French India. Only Pondicherry was able to resist, and a siege was instigated on 1 August 1793 by Colonel [[Sir John Braithwaite, 1st Baronet|John Braithwaite]] while Cornwallis imposed a naval [[blockade]]. British forces constructed trenches and batteries, often under heavy fire, over the following weeks. Twenty days after the city was cut off, Braithwaite began a bombardment of the defences. Within hours the French commander Colonel Prosper de Clermont requested a truce, followed the next morning by an unconditional surrender. ||| ||| ||| +0 Siege of Port Arthur ||| Battle of Mukden ||| As for Nogi, after leaving a garrison in Port Arthur, he led the surviving bulk of his army of 120,000 men north to join Marshal Oyama at the [[Battle of Mukden]]. ||| The Battles ||| The surrender ||| +0 Siege of Port Arthur ||| Battle of Tsushima ||| The capture of Port Arthur and the subsequent Japanese victories at the [[Battle of Mukden]] and [[Battle of Tsushima|Tsushima]] gave Japan a dominant military position, resulting in favorable arbitration by U.S. President [[Theodore Roosevelt]] in the [[Treaty of Portsmouth]], which ended the war. The loss of the war in 1905 led to major political unrest in Imperial Russia (see: [[Russian revolution of 1905]]). ||| Aftermath ||| ||| +0 Siege of Port Hudson ||| Battle of Baton Rouge (1862) ||| General Breckinridge was soon ordered to take most of his troops to Kentucky however, and on August 18 he left, leaving only 1,500 men to work on the fortifications under Ruggles' command. Ruggles did have a [[Naval artillery in the Age of Sail#Artillery types|forty-two-pounder]] smoothbore cannon,<!---needs better link or article--> which he mounted immediately, manned by the sailors of the [[CSS Arkansas]] which had been destroyed in the [[Battle of Baton Rouge (1862)|Battle of Baton Rouge]]. Two [[Dahlgren gun#32-pounder|thirty-two-pounder]]s were shortly added from the abandoned wreck of the {{USS|Sumter|1863|6}}. ||| Background ||| Foundation of a fortress ||| +0 Siege of Port Hudson ||| Battle of Shiloh ||| The Confederate command reacted to this increased Union commitment by sending a newly promoted major general to take command of Port Hudson. Major General [[Franklin Gardner]] arrived at his post on December 27, 1862. Gardner was a career Army officer who graduated from West Point 17th in his class in 1843. The native [[New York]]er commanded a cavalry brigade at [[Battle of Shiloh|Shiloh]] and was 39 years old at the time of his arrival. Upon taking command he reorganized the defenses at Port Hudson, concentrating the fields of fire of the heavy guns and setting up more earthworks using packed earth and sod rather than the traditional [[gabions]] or sandbags. ||| Background ||| A change of commands ||| +0 Siege of Port Hudson ||| Capture of New Orleans ||| In the spring and early summer of 1862, the Union advanced their control of the Mississippi from both the north and the south. From the mouth of the river, a fleet commanded by [[Flag officer|Flag Officer]] [[David G. Farragut]] fought its way through Confederate fortifications in the [[Battle of Forts Jackson and St. Philip]], resulting in the [[Capture of New Orleans]]. A second Union fleet commanded by [[Charles Henry Davis|Charles H. Davis]] occupied [[Memphis, Tennessee]], after defeating Confederate riverine forces in [[Battle of Memphis]]. To make sure it could continue to use the middle section of the river, the South fortified positions at both [[Siege of Vicksburg|Vicksburg]], and Port Hudson. ||| Background ||| Strategy and politics on the Mississippi ||| +0 Siege of Port Hudson ||| French and Indian War ||| According to historian [[John D. Winters]], 'Port Hudson, unlike [[Baton Rouge, Louisiana|Baton Rouge]], was one of the strongest points on the river, and batteries placed upon the bluffs could command the entire river front.' It was a position similar to that of [[Quebec City]] in the [[French and Indian War]]. ||| Background ||| Strategy and politics on the Mississippi ||| +0 Siege of Port Hudson ||| Siege of Vicksburg ||| While [[Major General#United States|Union General]] [[Ulysses S. Grant|Ulysses Grant]] was [[Siege of Vicksburg|besieging Vicksburg]] upriver, General [[Nathaniel P. Banks|Nathaniel Banks]] was ordered to capture the Confederate stronghold of [[Port Hudson, Louisiana|Port Hudson]], in order to go to Grant's aid. When his assault failed, Banks settled into a 48-day siege, the longest in US military history. A second attack also failed, and it was only after the fall of Vicksburg that the Confederate commander, General [[Franklin Gardner]] surrendered the port. This left the [[Mississippi River|Mississippi]] open to Union navigation from its source to the [[Gulf of Mexico]]. ||| ||| ||| +0 Siege of Porto ||| Battle of Ponte Ferreira ||| On 18 July, the first attack by the Royalists occurred, without success. Five days later the [[Battle of Ponte Ferreira]] was fought, in which a Liberal column routed the Royalists and returned to [[Porto]]. The Liberals committed numerous brutalities on their way, reinforcing the bad concept created by the clergy of the villages that the local populations had about the Liberals. ||| Occupation of Porto and first encounters ||| ||| +0 Siege of Porto Ferrajo ||| Battle of the Nile ||| Although the Ligurian Sea was by this stage largely French territorial waters, after the [[Royal Navy]] had destroyed the French Mediterranean Fleet at the [[Battle of the Nile]] off [[Egypt]] in 1798, the British in fact controlled it and the whole [[Mediterranean Sea]]. ||| Invasion ||| ||| +0 Siege of Reading ||| Battle of Edgehill ||| In late October 1642, [[Charles I of England|King Charles]] returned to [[Oxford]] from the indecisive [[Battle of Edgehill]] (23 October). On 4 November, he entered Reading from Oxford and later that month retired leaving a Royalist garrison, of 2,000 foot soldiers and a cavalry regiment, under Sir [[Arthur Aston (English Army officer)|Arthur Aston]]. ||| Background ||| ||| +0 Siege of Roses (1794–95) ||| Siege of Roses (1808) ||| A subsequent [[Siege of Roses (1808)|Siege of Roses]] happened in November and December 1808, during the [[Peninsular War]]. ||| Results ||| ||| +0 Siege of Santuario de Nuestra Señora de la Cabeza ||| Battle of Lopera ||| In December 1936, [[Queipo de Llano]] launched [[Aceituna Campaign|an offensive]] in order to occupy Andújar and relieve the shrine, but the offensive was stopped at [[Battle of Lopera|Lopera]] in January 1937 (20 milles away from Andújar). In April 1937, the Republican government decided to crush the resistance of the rebels and sent a large force (20,000 men), led by communist major Martínez Cartón. The Republican forces split the rebel enclave in two and conquered the encampment of Lugar Nuevo. Franco then gave permission to Cortés to evacuate women and children and to surrender should resistance become impossible, but Cortés rejected the evacuation of the women and children. On April 30, Cortés was wounded and on May 1, the Republicans broke into the sanctuary. ||| The siege ||| ||| +0 Siege of Sarajevo ||| Battle of Vrbanja bridge ||| On 27 May 1995, Serb soldiers posing as French troops captured two UN observation posts at either end of the front-line [[Vrbanja bridge]] without firing a shot. They wore French uniforms, flak jackets and helmets, were armed with French weapons and drove a French armoured personnel carrier (APC) – all stolen from UN troops detained outside the city. The soldiers disarmed the 12 peacekeepers at gunpoint. Ten were taken to an unknown destination while two remained on the bridge as human shields. The French responded by sending 30 troops, backed by six light tanks, to storm the northern end of the bridge. Two French soldiers were killed in [[Battle of Vrbanja bridge|the clash]] and five were wounded, while four Serb soldiers were killed and four were taken prisoner. At the end of the day, the Serbs remained in control of the southern portion of the bridge, while the French occupied the northern portion. The Serbs later abandoned the southern portion of the bridge. ||| NATO intervention ||| ||| +0 Siege of Sarajevo ||| Markale massacres ||| The biggest single loss of life was the first [[Markale massacres|Markale marketplace massacre]] on 5 February 1994, in which 68 civilians were killed and 200 were wounded. Medical facilities were overwhelmed by the scale of the civilian casualties, and only a small number of the wounded benefited from [[medical evacuation]] programmes like 1993's [[Operation Irma]]. ||| Atrocities ||| ||| +0 Siege of Sarajevo ||| Operation Deliberate Force ||| On 1 September, NATO and the UN demanded the lifting of the siege, removal of heavy weapons from the heavy weapons exclusion zone around Sarajevo, and complete security of other UN [[safe area (Bosnian War)|safe area]]s. The Bosnian Serb leaders were given a deadline of 4 September, and the [[Operation Deliberate Force]] bombing campaign was suspended. Heavy weapons had not been removed when the deadline passed. On 5 September, air strikes resumed on Bosnian Serb positions around Sarajevo and near the Bosnian Serb headquarters at Pale. ||| NATO intervention ||| ||| +0 Siege of Sarajevo ||| World War II ||| From its creation following [[World War II]], the government of [[Socialist Federal Republic of Yugoslavia|Yugoslavia]] kept a close watch on nationalist sentiment among the many ethnic and religious groups that composed the country, as it could have led to chaos and the breakup of the state. When Yugoslavia's longtime leader Marshal [[Josip Broz Tito|Tito]] died in 1980 this policy of containment underwent a dramatic reversal. ||| Background ||| ||| +0 Siege of Savannah ||| Battle of Grenada ||| French Admiral the [[Comte d'Estaing]] spent the first part of 1779 in the Caribbean, where his fleet and a British fleet monitored each other's movements. He took advantage of conditions to [[Battle of Grenada|capture]] [[Grenada]] in July before acceding to American requests for support in operations against Savannah. On September 3, an uncharacteristically early arrival as there was still substantial risk of seasonal [[hurricane]]s, a few French ships arrived at Charleston with news that d'Estaing was sailing for Georgia with twenty-five [[ships of the line]] and 4,000 French troops. Lincoln and the French emissaries agreed on a plan of attack on Savannah, and Lincoln left Charleston with over 2,000 men on September 11. ||| Background ||| ||| +0 Siege of Savannah ||| Haitian Revolution ||| In 1779, more than 500 [[Chasseurs-Volontaires de Saint-Domingue|recruits from Saint-Domingue]] (France's colony which became [[Haiti]] two decades later, after a [[Haitian Revolution|massive slave revolt]]), under the overall command of French nobleman [[Charles Hector, Comte d'Estaing]], fought alongside American colonial troops against the [[British Army]] during the siege of Savannah. This was one of the most significant foreign contributions to the American Revolutionary War. {{Cite journal ||| ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of Alma ||| The '''Siege of Sevastopol''' lasted from September 1854 until September 1855, during the [[Crimean War]]. The allies ([[Second French Empire|French]], [[Ottoman Empire|Ottoman]], and [[United Kingdom of Great Britain and Ireland|British]]) landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a triumphal march to Sevastopol, the capital of the [[Crimea]], with 50,000 men. The {{convert|56|km|adj=on}} traverse took a year of fighting against the Russians. Major battles along the way were [[Battle of Alma|Alma]] (September 1854), [[Battle of Balaclava|Balaklava]] (October 1854), [[Battle of Inkerman|Inkerman]] (November 1854), [[Battle of the Chernaya|Tchernaya]] (August 1855), [[Battle of the Great Redan|Redan]] (September 1855), and, finally, [[Sevastopol]] (September 1855). During the siege, the allied navy undertook six bombardments of the capital, on 17 October 1854; and on 9 April, 6 June, 17 June, 17 August, and 5 September 1855. ||| ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of Inkerman ||| The '''Siege of Sevastopol''' lasted from September 1854 until September 1855, during the [[Crimean War]]. The allies ([[Second French Empire|French]], [[Ottoman Empire|Ottoman]], and [[United Kingdom of Great Britain and Ireland|British]]) landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a triumphal march to Sevastopol, the capital of the [[Crimea]], with 50,000 men. The {{convert|56|km|adj=on}} traverse took a year of fighting against the Russians. Major battles along the way were [[Battle of Alma|Alma]] (September 1854), [[Battle of Balaclava|Balaklava]] (October 1854), [[Battle of Inkerman|Inkerman]] (November 1854), [[Battle of the Chernaya|Tchernaya]] (August 1855), [[Battle of the Great Redan|Redan]] (September 1855), and, finally, [[Sevastopol]] (September 1855). During the siege, the allied navy undertook six bombardments of the capital, on 17 October 1854; and on 9 April, 6 June, 17 June, 17 August, and 5 September 1855. ||| ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of Malakoff ||| On 17 October 1854 ([[Old Style and New Style dates|old style date]], 29 October new style){{efn|In this article the first date given is the [[Old Style and New Style dates|old style date]], the date following is the modern equivalent. Conversions were completed using [http://www.fourmilab.ch/documents/calendar/ Calendar Converter] by [[John Walker (programmer)|John Walker]].}} the artillery battle began. The Russian artillery first destroyed a French [[Magazine (artillery)|magazine]], silencing their guns. British fire then set off the magazine in the [[Battle of Malakoff|Malakoff redoubt]], killing Admiral Kornilov, silencing most of the Russian guns there, and leaving a gap in the city's defences. However, the British and French withheld their planned infantry attack, and a possible opportunity for an early end to the siege was missed. ||| Description ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of Waterloo ||| The British sent a pair of cannon seized at Sevastopol to each of several important cities in the Empire. Additionally, several were sent to the [[Royal Military College Sandhurst]] and the [[Royal Military Academy Woolwich]]. These cannon now all reside at the Royal Military Academy Sandhurst (renamed after the closing of RMA Woolwich shortly after the Second World War) and are displayed in front of Old College next to cannon from [[Battle of Waterloo|Waterloo]] and other battles. ||| Fate of Sevastopol cannon ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of the Chernaya ||| The '''Siege of Sevastopol''' lasted from September 1854 until September 1855, during the [[Crimean War]]. The allies ([[Second French Empire|French]], [[Ottoman Empire|Ottoman]], and [[United Kingdom of Great Britain and Ireland|British]]) landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a triumphal march to Sevastopol, the capital of the [[Crimea]], with 50,000 men. The {{convert|56|km|adj=on}} traverse took a year of fighting against the Russians. Major battles along the way were [[Battle of Alma|Alma]] (September 1854), [[Battle of Balaclava|Balaklava]] (October 1854), [[Battle of Inkerman|Inkerman]] (November 1854), [[Battle of the Chernaya|Tchernaya]] (August 1855), [[Battle of the Great Redan|Redan]] (September 1855), and, finally, [[Sevastopol]] (September 1855). During the siege, the allied navy undertook six bombardments of the capital, on 17 October 1854; and on 9 April, 6 June, 17 June, 17 August, and 5 September 1855. ||| ||| ||| +0 Siege of Sevastopol (1854–55) ||| Battle of the Great Redan ||| The '''Siege of Sevastopol''' lasted from September 1854 until September 1855, during the [[Crimean War]]. The allies ([[Second French Empire|French]], [[Ottoman Empire|Ottoman]], and [[United Kingdom of Great Britain and Ireland|British]]) landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a triumphal march to Sevastopol, the capital of the [[Crimea]], with 50,000 men. The {{convert|56|km|adj=on}} traverse took a year of fighting against the Russians. Major battles along the way were [[Battle of Alma|Alma]] (September 1854), [[Battle of Balaclava|Balaklava]] (October 1854), [[Battle of Inkerman|Inkerman]] (November 1854), [[Battle of the Chernaya|Tchernaya]] (August 1855), [[Battle of the Great Redan|Redan]] (September 1855), and, finally, [[Sevastopol]] (September 1855). During the siege, the allied navy undertook six bombardments of the capital, on 17 October 1854; and on 9 April, 6 June, 17 June, 17 August, and 5 September 1855. ||| ||| ||| +0 Siege of Sevastopol (1941–42) ||| Battle of Moscow ||| On 30 October, the Soviet defences detected the spearhead of the German 132nd Infantry Division and shelled it at 12:30 on 1 November using Battery 30's 305mm coastal guns. This fort would later become known to the Germans as [[Maxim Gorky Fortresses|Fort Maxim Gorky I]]. Von Manstein lacked sufficient air and mobile units to force a decision. Instead, Manstein ordered Hansen's LIV Corps to head east down the Sevastopol-Simferopol rail line towards [[Yalta]], while the 72nd Infantry Division was to head to [[Balaklava]], effectively encircling Sevastopol. Once there, it would attack Sevastopol from the east. The 132nd made reasonable progress, but was stopped on 2 November by the 8th Naval Brigade. The Germans suffered 428 casualties. Manstein ordered a halt for a week, whilst bringing up reserves. Oktyabrsky used his fleet to bring in a further 23,000 men from the Caucasus. On 9 November, Petrov's Army was brought in, bringing 19,894 soldiers, ten [[T-26]] tanks, 152 artillery pieces, and 200 mortars. The Soviets now had 52,000 troops in the area of the city. The Luftwaffe was considered weak (the bulk of it was engaged in the [[Battle of Moscow]]), so the Soviet Navy kept the heavy cruiser ''[[Soviet cruiser Krasnyi Kavkaz|Krasny Kavkaz]]'', light cruisers ''[[Soviet cruiser Krasnyi Krym|Krasny Krym]]'' and ''[[Soviet cruiser Chervona Ukraina|Chervona Ukrania]]'', and seven destroyers to protect the port. ||| First Axis offensive ||| Sevastopol offensive ||| Initial battles +0 Siege of Sevastopol (1941–42) ||| Operation Barbarossa ||| The '''Siege of Sevastopol''' also known as the '''Defence of Sevastopol''' ({{lang-ru|Оборона Севастополя}}, [[Romanization of Russian|transliteration]]: ''Oborona Sevastopolya'') took place on the [[Eastern Front (World War II)|Eastern Front]] of the [[Second World War]]. The campaign was fought by the [[Axis powers]] of Germany, [[Romania]], and Italy against the [[Soviet Union]] for control of [[Sevastopol]], a port in the [[Crimea]] on the [[Black Sea]]. On 22 June 1941 the Axis invaded the Soviet Union during [[Operation Barbarossa]]. Axis land forces reached the Crimea in the autumn of 1941 and overran most of the area. The only objective not in Axis hands was Sevastopol. Several attempts were made to secure the city in October and November 1941. A major attack was planned for late November, but heavy rains delayed the Axis attack until 17 December 1941. Under the command of [[Erich von Manstein]], Axis forces were unable to capture Sevastopol during this first operation. Soviet forces launched an amphibious landing on the Crimean peninsula at [[Battle of the Kerch Peninsula (1942)|Kerch]] in December 1941 to relieve the siege and force the Axis to divert forces to defend their gains. The operation saved Sevastopol for the time being, but the bridgehead in the eastern Crimea was eliminated in May 1942. ||| ||| ||| +0 Siege of Sloviansk ||| Euromaidan ||| Separatists kidnapped [[Euromaidan]] activist and journalist Irma Krat who had arrived in the city to cover the conflict. They later paraded her blindfolded in front of the press. ||| History ||| Easter truce ||| +0 Siege of Srebrenica ||| World War II ||| In July 1995, Srebrenica fell to the combined forces of the [[Republika Srpska]] and numerous paramilitary formations which included hundreds of [[Greece|Greek]] and [[Russia]]n volunteers in what was codenamed '''Operation Krivaja '95'''. The subsequent [[Srebrenica massacre|massacre]] of the town's male population led to the deaths of more than 8,000 Bosniak men and boys, and is considered the largest act of [[mass murder]] in Europe since the end of [[World War II]]. It was judged to have been a crime of [[genocide]] by international criminal courts. As a result, VRS General [[Radislav Krstić]] was found guilty by the [[International Criminal Tribunal for the former Yugoslavia]] (ICTY) of murder, persecution and aiding and abetting genocide, while VRS General [[Zdravko Tolimir]] was also convicted of genocide. Both men were sentenced to life imprisonment. One of the indictments against [[Ratko Mladić]], the commander of the VRS during the war, is for the massacre in Srebrenica. The commander of Bosniak forces in the enclave, Naser Orić, was found guilty of failing to prevent the mistreatment of VRS prisoners held in Srebrenica between September 1992 and March 1993. However, his conviction was overturned in 2008. ||| ||| ||| +0 Siege of Stralsund (1678) ||| Battle of Fehrbellin ||| The Scanian War reached [[Swedish Pomerania]] when after the [[Battle of Fehrbellin]] (1675) the retreating Swedish forces were pursued by a Brandenburgian army under [[Frederick William I, Elector of Brandenburg|'Great Elector' Frederick William I]]'s command. In addition, [[Denmark|Danish]] forces had landed on [[Rügen]] in 1677, aided by a [[Principality of Rügen|loyal Rugian noble]]. ||| Prelude ||| ||| +0 Siege of Stralsund (1807) ||| Siege of Kolberg (1807) ||| On 29 March, Mortier received orders to leave Grandjean's division to maintain the blockade and march to assist in the [[Siege of Kolberg (1807)|Siege of Kolberg]] in [[Province of Pomerania (1653-1815)|Brandenburg-Prussian Pomerania]]. ||| First siege ||| ||| +0 Siege of Suffolk ||| Battle of Chancellorsville ||| Finally on April 30, Lamson's sailors landed on Hill's Point and set up pickets. However, around this time Longstreet began to receive word of Union movements in northern Virginia under Maj. Gen. [[Joseph Hooker]]. Longstreet assumed he would be called to reinforce Lee, though no orders were issued at the time. Peck also received reports of Union movements and assured Hooker he could hold Longstreet at Suffolk. On May 1, the first day of fighting at the [[Battle of Chancellorsville]], Hooker insisted to Peck that Longstreet had rejoined Lee, although Peck insisted that he had not left Suffolk. None of Longstreet's forces had returned to Lee by this point but the Confederate foraging wagons began to move back to the North. It was clear at this point that Lee and Hooker were engaged in a major battle, but Longstreet informed Richmond that he would not withdraw until the wagons were safe. On May 3 the withdrawal orders were given. Early on May 3 Getty's division attacked Law's Alabamans and captured the first line of Confederate trenches. The fighting produced relatively high casualties while Longstreet decided to continue with his withdrawal plans later in the day. Corcoran's front pursued Pickett as he withdrew, but they were unable to catch up to the retreating Confederates. By May 9 Longstreet had rejoined Lee near [[Fredericksburg, Virginia|Fredericksburg]]. ||| Lifting the siege ||| ||| +0 Siege of Suffolk ||| Battle of Harpers Ferry ||| The operation was running smoothly. Three hundred yards from the landing point the canvas sides were dropped, revealing the infantry. With just 30 feet to go, the ''Stepping Stones'' grounded on an unseen obstruction in the river and came to a halt. The Union infantry stood fully exposed on the decks with 30 feet of unknown-depth water separating them from the bank. Fortunately for the Union troops, Bozeman's Confederates were not at their posts (most likely still taking cover from the earlier Union bombardment). Leading by example, Captain Stevens pushed his way through the troops and plunged into the water and waded ashore. The example worked as 100 more soldiers followed holding rifles above their heads to keep them from getting wet. Meanwhile, Lamson, remaining calm, maneuvered the boat closer to shore where the rest of the infantry helped unload the howitzers. Stevens and the first 100 fixed bayonets and rushed the flank. The rest of the infantry moved against the rear. Bozeman's infantry appeared while Stribling turned the battery's guns on the attackers. Without ever firing a shot Getty's infantry reached the fort. The entire garrison at Hill's Point surrendered just 10 minutes from the time the infantry had landed. Since the attackers had not fired a shot, no Confederates were wounded or killed, but all 130 men were captured. Getty suffered 3 killed and 10 wounded. Lamson had no casualties, but Cushing suffered 3 killed and 1 wounded in the morning bombardment. Within the battery were guns which had been captured by [[Stonewall Jackson]] at [[Battle of Harpers Ferry|Harpers Ferry]] the previous year. ||| The siege ||| Hill's Point ||| +0 Siege of Tarragona (1813) ||| Battle of Castalla ||| Murray's Anglo-Sicilian-Spanish army, based on [[Alicante]], inflicted a sharp check on [[Marshal of France|Marshal]] [[Louis Gabriel Suchet]]'s corps at the [[Battle of Castalla]] in April. After this action, General [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]] ordered Murray to attack Tarragona, which is on the east coast of Spain. The port is about 50 miles southwest of [[Barcelona]]. Wellington planned to launch his summer 1813 offensive against King [[Joseph Bonaparte]]'s French armies. By attacking Tarragona, Wellington wished to prevent Suchet from reinforcing Joseph. ||| Background ||| ||| +0 Siege of Tarragona (1813) ||| Battle of Vitoria ||| Aside from the 18 lost siege guns, the Anglo-Allies lost 15 killed, 82 wounded and five missing. French losses were 13 killed and 85 wounded. The Tarragona fiasco did not affect Wellington's 1813 campaign, which ended in a decisive Anglo-Allied victory over King Joseph at the [[Battle of Vitoria]] on June 21. In 1814, Murray was court-martialled for his conduct before Tarragona. He was acquitted of all charges except that of abandoning his guns without just cause, for which he was admonished by the court. ||| Results ||| ||| +0 Siege of Tobruk ||| Operation Brevity ||| Operation Sonnenblume {{nowrap|(6 February – 25 May 1941),}} forced the British into a retreat to the Egyptian border. A garrison was left behind at [[Tobruk]], to deny the port to the Axis, while the WDF reorganised and prepared a counter-offensive. The Axis siege of Tobruk began on 10 April, when the port was attacked by a force under ''Generalleutnant'' [[Erwin Rommel]] and continued during three relief attempts, [[Operation Brevity]] {{nowrap|(15–16 May),}} [[Operation Battleaxe]] {{nowrap|(15–17 June)}} and [[Operation Crusader]] {{nowrap|(18 November – 30 December).}} The occupation of Tobruk deprived the Axis of a supply port closer to the [[Egypt]]-Libya border than [[Benghazi]], {{convert|900|mi|km}} west of the Egyptian frontier, which was within the range of RAF bombers; Tripoli was {{convert|1500|km|mi}} to the west in [[Tripolitania]]. ||| ||| ||| +0 Siege of Tobruk ||| Operation Compass ||| The '''Siege of Tobruk''' lasted for 241 days in 1941, after [[Axis powers|Axis]] forces advanced through Cyrenaica from El Agheila in [[Operation Sonnenblume]] against the British [[Western Desert Force]] (WDF) in [[Libya]], during the [[Western Desert Campaign]] (1940–1943) of the [[World War II|Second World War]]. In late 1940, the British had defeated the Italian 10th Army during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941)}} and trapped the remnants at Beda Fomm. German troops and Italian reinforcements reached Libya, while much of the WDF was sent to Greece and replaced by a skeleton force, short of equipment and supplies. ||| ||| ||| +0 Siege of Tobruk ||| Operation Crusader ||| Operation Sonnenblume {{nowrap|(6 February – 25 May 1941),}} forced the British into a retreat to the Egyptian border. A garrison was left behind at [[Tobruk]], to deny the port to the Axis, while the WDF reorganised and prepared a counter-offensive. The Axis siege of Tobruk began on 10 April, when the port was attacked by a force under ''Generalleutnant'' [[Erwin Rommel]] and continued during three relief attempts, [[Operation Brevity]] {{nowrap|(15–16 May),}} [[Operation Battleaxe]] {{nowrap|(15–17 June)}} and [[Operation Crusader]] {{nowrap|(18 November – 30 December).}} The occupation of Tobruk deprived the Axis of a supply port closer to the [[Egypt]]-Libya border than [[Benghazi]], {{convert|900|mi|km}} west of the Egyptian frontier, which was within the range of RAF bombers; Tripoli was {{convert|1500|km|mi}} to the west in [[Tripolitania]]. ||| ||| ||| +0 Siege of Tobruk ||| Operation Sonnenblume ||| The '''Siege of Tobruk''' lasted for 241 days in 1941, after [[Axis powers|Axis]] forces advanced through Cyrenaica from El Agheila in [[Operation Sonnenblume]] against the British [[Western Desert Force]] (WDF) in [[Libya]], during the [[Western Desert Campaign]] (1940–1943) of the [[World War II|Second World War]]. In late 1940, the British had defeated the Italian 10th Army during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941)}} and trapped the remnants at Beda Fomm. German troops and Italian reinforcements reached Libya, while much of the WDF was sent to Greece and replaced by a skeleton force, short of equipment and supplies. ||| ||| ||| +0 Siege of Toulon ||| American Revolutionary War ||| Lángara ordered Don [[Pedro Cotiella]] to take three boats into the arsenal to destroy the French fleet. [[William Sidney Smith|Sir Sidney Smith]], who had recently arrived, volunteered to accompany him with his ship ''Swallow'' and three British boats. Cotiella was tasked with sinking Toulon's [[powder hulks]]; one was a disarmed former British [[frigate]] captured during the [[American Revolutionary War]], ''[[HMS Montreal (1761)|Montréal]]'', and the other was the French frigate ''[[French frigate Iris (1781)|Iris]]''. ||| Destruction of the French fleet ||| ||| +0 Siege of Tripoli ||| Aragonese Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Crusade of 1101 ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Eighth Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Hussite Wars ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Ninth Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Ottoman invasion of Otranto ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tripoli ||| Siege of Jerusalem (1099) ||| The [[Siege of Jerusalem (1099)|Siege of Jerusalem]] was a success and led to the foundation of the [[Kingdom of Jerusalem]]. Most crusaders returned home afterwards; a [[Crusade of 1101|second movement]] set out, encouraged by the success of the First Crusade, but it was mostly annihilated by the [[Seljuk Turks]] in [[Anatolia]]. Raymond participated in this crusade as well, and returned to Syria after escaping from his defeat at the hands of [[Kilij Arslan I]] in Anatolia. He had with him only three hundred men. Fakhr al-Mulk, ''qadi'' of Tripoli, was not as accommodating to Raymond as his predecessor had been, and called for assistance from [[Duqaq]] of [[Damascus]] and the governor of Homs. However, the troops from Damascus and Homs defected once they reached Tripoli, and the ''qadi'' was defeated at the beginning of April, losing seven thousand men. Raymond could not take Tripoli itself, but captured [[Tartus|Tortosa]], which became the base of all future operations against Tripoli. ||| Raymond returns to Tripoli ||| ||| +0 Siege of Tripoli ||| Sixth Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +0 Siege of Tsingtao ||| Siege of Port Arthur ||| The Japanese started shelling the fort and the city on 31 October and began digging parallel lines of trenches, just as they had done at the [[Siege of Port Arthur]] nine years earlier. Very large 11 inch howitzers from land, in addition to the firing of the Japanese naval guns, brought the German defences under constant bombardment during the night, the Japanese moving their own trenches further forward under the cover of their artillery. When the artillery rounds had been finally used up by 6 November, surrender was inevitable. ||| Siege ||| ||| +0 Siege of Turin ||| Battle of Toulon (1707) ||| To the east, a French victory over a Hessian corps at [[Battle of Castiglione (1706)|Castiglione]] was not enough to regain initiative or to check the allied advance, and the French retreat from Turin effectively left the allies free to invade southern France. After the failed [[Battle of Toulon (1707)|Siege of Toulon]] in the following year, no significant military event took place on the Italian front until the [[Treaty of Utrecht]]. ||| Epilogue ||| ||| +0 Siege of Turin ||| Siege of Toulon ||| To the east, a French victory over a Hessian corps at [[Battle of Castiglione (1706)|Castiglione]] was not enough to regain initiative or to check the allied advance, and the French retreat from Turin effectively left the allies free to invade southern France. After the failed [[Battle of Toulon (1707)|Siege of Toulon]] in the following year, no significant military event took place on the Italian front until the [[Treaty of Utrecht]]. ||| Epilogue ||| ||| +0 Siege of Uxellodunum ||| Battle of Alesia ||| [[Lucterius]], the chief of the [[Carduci]], and [[Drapes]], chief of the [[Senones]], had retired to the hill fort of [[Uxellodunum]] to remain in the relative safety of the fortifications until the governorship of [[Julius Caesar|Gaius Julius Caesar]] ended in [[Gaul]]. The group had apparently planned to then begin a new rebellion against their Roman conquerors. Uxellodunum was heavily fortified both by its natural position (a river almost entirely surrounded the hill upon which it was built) and by its impressive fortifications built by the Carduci tribe. Additionally, one side of the fort was protected by a mountainside which prevented any approach from that direction. For these reasons, it was impossible to besiege it in the same manner the Romans had used at the [[Battle of Alesia]] a year before. ||| Actions leading up to the siege ||| ||| +0 Siege of Veprik ||| Swedish invasion of Russia ||| The '''Siege of Veprik''' took place on January 3 to January 17, 1709 during the [[Charles XII invasion of Russia|Swedish invasion of Russia]] in the [[Great Northern War]]. After the [[Great Frost of 1709|unusual cold winter]], many troops had died from both armies and [[Charles XII of Sweden]] decided to siege the Russian city of Veprik to put pressure on Tsar [[Peter the Great|Peter I of Russia]]. In the town there was a garrison of about 1,500 men. After the Russian commander Colonel Ferber refused to surrender, Charles XII started a bombardment of the town and later, on 17 January also an assault. After about two hours of intense fighting the Swedes pulled back, unable to capture the town. However, the Russians surrendered on the night to the 18th January and the Swedes could march in by diplomatic. The result of the capture was little, another town had fallen for the Russians but in a strategic view, not much had changed. About 400 Swedes was killed and another 600 wounded. The whole Russian garrison was either killed, captured or wounded. After several days Charles XII burnt down the town. ||| ||| ||| +0 Siege of Vicksburg ||| Battle of Arkansas Post ||| One of Grant's actions during the siege was to settle a lingering rivalry. On May 30, General McClernand wrote a self-adulatory note to his troops, claiming much of the credit for the soon-to-be victory. Grant had been waiting six months for him to slip, ever since they clashed early in the campaign, around the [[Battle of Arkansas Post]]. He had received permission to relieve McClernand in January 1863 but waited for an unequivocal provocation. Grant finally relieved McClernand on June 18. He so diligently prepared his action that McClernand was left without recourse. McClernand's XIII Corps was turned over to Maj. Gen. [[Edward Ord]], recovered from a wound sustained at [[Battle of Hatchie's Bridge|Hatchie's Bridge]]. In May 1864, McClernand was restored to a command in remote [[Texas]]. ||| Siege ||| Command changes ||| +0 Siege of Vicksburg ||| Battle of Gettysburg ||| The Confederate surrender following the siege at Vicksburg is sometimes considered, when combined with Gen. [[Robert E. Lee]]'s defeat at [[Battle of Gettysburg|Gettysburg]] by Maj. Gen. [[George G. Meade]] the previous day, the [[Turning point of the American Civil War|turning point of the war]]. It cut off the states of [[Arkansas]], [[Louisiana]], and [[Texas]] from the rest of the Confederacy, as well as communication with Confederate forces in the [[Trans-Mississippi Theater of the American Civil War|Trans-Mississippi Department]] for the remainder of the war. ||| ||| ||| +0 Siege of Vicksburg ||| Battle of Port Gibson ||| After crossing the Mississippi River south of Vicksburg at [[Bruinsburg, Mississippi|Bruinsburg]] and driving northeast, Grant won battles at [[Battle of Port Gibson|Port Gibson]] and [[Battle of Raymond|Raymond]] and captured [[Battle of Jackson (MS)|Jackson]], the [[Mississippi]] state capital on May 14, 1863, forcing Pemberton to withdraw westward. Attempts to stop the Union advance at [[Battle of Champion Hill|Champion Hill]] and [[Battle of Big Black River Bridge|Big Black River Bridge]] were unsuccessful. Pemberton knew that the corps under Maj. Gen. [[William T. Sherman]] was preparing to flank him from the north; he had no choice but to withdraw or be outflanked. Pemberton burned the bridges over the [[Big Black River (Mississippi)|Big Black River]] and took everything edible in his path, both animal and plant, as he retreated to the well-fortified city of Vicksburg. ||| Background ||| ||| +0 Siege of Vicksburg ||| Jackson Expedition ||| Another command change occurred on June 22. In addition to Pemberton at his front, Grant had to be concerned with Confederate forces in his rear under the command of [[Joseph E. Johnston]]. He stationed one division in the vicinity of the Big Black River bridge and another reconnoitered as far north as Mechanicsburg, both to act as a covering force. By June 10, the [[IX Corps (Union Army)|IX Corps]], under Maj. Gen. [[John G. Parke]], was transferred to Grant's command. This corps became the nucleus of a special task force whose mission was to prevent Johnston, gathering his forces at [[Canton, Mississippi|Canton]], from interfering with the siege. Sherman was given command of this task force and Brig. Gen. [[Frederick Steele]] replaced him at the XV Corps. Johnston eventually began moving to relieve Pemberton and reached the Big Black River on July 1, but he delayed a potentially difficult encounter with Sherman until it was too late for the Vicksburg garrison, and then fell back to Jackson. Sherman would eventually pursue Johnston and [[Jackson Expedition|capture Jackson]] on July 17. ||| Siege ||| Command changes ||| +0 Siege of Vicksburg ||| Siege of Port Hudson ||| The successful ending of the [[Vicksburg Campaign]] significantly degraded the ability of the Confederacy to maintain its war effort, as described in the [[Vicksburg Campaign#Aftermath|Aftermath]] section of the campaign article. Some historians&mdash;e.g., Ballard, p. 308&mdash;suggest that the decisive battle in the campaign was actually the [[Battle of Champion Hill]], which, once won by Grant, made victory in the subsequent siege a foregone conclusion. This action (combined with the surrender of [[Siege of Port Hudson|Port Hudson]] to Maj. Gen. [[Nathaniel P. Banks]] on July 9) yielded command of the [[Mississippi River]] to the Union forces, who would hold it for the rest of the conflict. ||| ||| ||| +0 Siege of Vicksburg ||| World War II ||| Folk tradition holds that the [[Fourth of July]] (Independence Day) holiday was not celebrated by Vicksburg until [[World War II]]. ||| Legacy ||| ||| +0 Siege of York ||| Battle of Adwalton Moor ||| During the following year, Newcastle defeated the Parliamentarian northern army under [[Ferdinando Fairfax, 2nd Lord Fairfax of Cameron|Lord Fairfax]] and his son [[Sir Thomas Fairfax]] at the [[Battle of Adwalton Moor]] and drove the survivors into [[Kingston upon Hull|Hull]]. The Royalists laid siege to Hull, but could not prevent Parliament resupplying the city from the sea. An attempt to suborn the governor, Sir [[Sir John Hotham, 1st Baronet|John Hotham]], was thwarted. Newcastle also sent detachments southward into [[Lincolnshire]], but these were defeated at [[Battle of Gainsborough|Gainsborough]] and [[Battle of Winceby|Winceby]] by Parliamentarian cavalry under [[Oliver Cromwell]] and Sir Thomas Fairfax. ||| Campaign ||| Early years of the Civil War ||| +0 Siege of York ||| Battle of Gainsborough ||| During the following year, Newcastle defeated the Parliamentarian northern army under [[Ferdinando Fairfax, 2nd Lord Fairfax of Cameron|Lord Fairfax]] and his son [[Sir Thomas Fairfax]] at the [[Battle of Adwalton Moor]] and drove the survivors into [[Kingston upon Hull|Hull]]. The Royalists laid siege to Hull, but could not prevent Parliament resupplying the city from the sea. An attempt to suborn the governor, Sir [[Sir John Hotham, 1st Baronet|John Hotham]], was thwarted. Newcastle also sent detachments southward into [[Lincolnshire]], but these were defeated at [[Battle of Gainsborough|Gainsborough]] and [[Battle of Winceby|Winceby]] by Parliamentarian cavalry under [[Oliver Cromwell]] and Sir Thomas Fairfax. ||| Campaign ||| Early years of the Civil War ||| +0 Siege of York ||| Battle of Marston Moor ||| '''The Siege of York''' in 1644 was a prolonged contest for [[York]] during the [[English Civil War]], between the Scottish [[Covenanter]] army and the [[Parliament of England|Parliamentarian]] armies of the Northern Association and Eastern Association, and the [[Cavalier|Royalist]] Army under the [[William Cavendish, 1st Duke of Newcastle|Marquess of Newcastle]]. It lasted from 22 April until 1 July when the city was relieved by [[Prince Rupert of the Rhine]]. Rupert and Newcastle were defeated the next day at the decisive [[Battle of Marston Moor]], and the siege resumed until the city was surrendered on easy terms on 16 July. ||| ||| ||| +0 Siege of York ||| Battle of Selby ||| Late in 1643, Parliament signed a treaty, the [[Solemn League and Covenant]], with Scotland. On 19 January 1644, a Scottish army under the [[Alexander Leslie, 1st Earl of Leven|Earl of Leven]] invaded [[Northumberland]]. Newcastle took the bulk of his army north to face this new threat, leaving [[John Belasyse, 1st Baron Belasyse|John Belasyse]] as Governor of York with 1,500 horse and 1,800 foot. Since the autumn of 1643, Sir Thomas Fairfax's cavalry had moved into [[Cheshire]], where they had fought at the [[Battle of Nantwich]]. Now, they began moving back across the Pennines into Yorkshire. To prevent them rejoining Lord Fairfax's army in Hull, Belasyse occupied the town of [[Selby]], which lay between them. On 11 April, Thomas Fairfax and Parliamentarian infantry under Sir [[John Meldrum]] [[Battle of Selby|stormed Selby]], capturing Belasyse and most of his army. ||| Campaign ||| Campaign of 1644 ||| +0 Siege of Yorktown (1862) ||| American Revolutionary War ||| The battle took place near the site of the 1781 [[Siege of Yorktown]], the final battle of the [[American Revolutionary War]] in the east. ||| ||| ||| +0 Siege of Yorktown (1862) ||| Battle of Hampton Roads ||| McClellan had chosen to approach the Confederate capital of [[Richmond, Virginia]], with an amphibious operation that landed troops on the tip of the [[Virginia Peninsula]] at Fort Monroe. His Army of the Potomac numbered 121,500 men, transported starting on March 17 by 389 vessels. McClellan planned to use U.S. Navy forces to envelop Yorktown, but the emergence of the Confederate ironclad [[CSS Virginia|CSS ''Virginia'']] and the [[Battle of Hampton Roads]] (March 8–9, 1862) disrupted this plan. The threat of the ''Virginia'' on the James River and the heavy Confederate batteries at the mouth of the York River prevented the Navy from assuring McClellan that they could control either the York or the James, so he settled on a purely land approach toward Yorktown. ||| Background ||| ||| +0 Siege of Yorktown (1862) ||| Peninsula Campaign ||| The '''Battle of Yorktown''' or '''Siege of Yorktown''' was fought from April 5 to May 4, 1862, as part of the [[Peninsula Campaign]] of the [[American Civil War]]. Marching from [[Fort Monroe]], [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]]'s [[Army of the Potomac]] encountered Maj. Gen. [[John B. Magruder]]'s small [[Confederate States Army|Confederate]] force at [[Yorktown, Virginia|Yorktown]] behind the [[Warwick Line]]. McClellan suspended his march up the Peninsula toward [[Richmond, Virginia|Richmond]] and settled in for siege operations. ||| ||| ||| +0 Siege of Yorktown (1862) ||| Siege of Yorktown ||| The battle took place near the site of the 1781 [[Siege of Yorktown]], the final battle of the [[American Revolutionary War]] in the east. ||| ||| ||| +0 Siege of the Acropolis (1826–27) ||| Battle of Arachova ||| Following the [[Third Siege of Missolonghi|fall]] of [[Missolonghi]] in western Greece, Athens and the Acropolis remained the only strongholds in Greek hands in mainland Greece outside the [[Peloponnese]]. Consequently, after his victory at Missolonghi, the Ottoman commander-in-chief, [[Reşid Mehmed Pasha]], turned against Athens. The siege began in August 1826, and followed closely the experience of Missolonghi: the Ottomans set up a very close blockade and bombarded the hill, while the besieged harassed them with frequent night sorties and [[Mining (military)|mining]], utilizing the expertise of Konstantinos Chormivitis, who had already distinguished himself in Missolonghi. The Beleaguered Greeks were resupplied and reinforced by small detachments sent through the Ottoman lines by the main Greek army, under [[Georgios Karaiskakis]], which had established itself around [[Eleusis]], [[Piraeus]] and [[Phaleron]] to the south of Athens. The Greeks launched various attacks against the Ottoman army's rear and its supply lines, most notably the victory at the [[Battle of Arachova]] in November ; this strategy was altered in favour of direct attacks on the Ottoman army, resulting in the [[Battle of Kamatero]] in February. The command was transferred from Karaiskakis to the British general [[Richard Church (general)|Richard Church]] in April. ||| ||| ||| +0 Siege of the Acropolis (1826–27) ||| Battle of Phaleron ||| The Ottoman victory at [[Battle of Phaleron|Phaleron]] (Analatos) on 24 April (Julian) 1827 ended any possibility for relief, and the Acropolis garrison surrendered a month later. ||| ||| ||| +0 Siege of the Acropolis (1826–27) ||| Third Siege of Missolonghi ||| Following the [[Third Siege of Missolonghi|fall]] of [[Missolonghi]] in western Greece, Athens and the Acropolis remained the only strongholds in Greek hands in mainland Greece outside the [[Peloponnese]]. Consequently, after his victory at Missolonghi, the Ottoman commander-in-chief, [[Reşid Mehmed Pasha]], turned against Athens. The siege began in August 1826, and followed closely the experience of Missolonghi: the Ottomans set up a very close blockade and bombarded the hill, while the besieged harassed them with frequent night sorties and [[Mining (military)|mining]], utilizing the expertise of Konstantinos Chormivitis, who had already distinguished himself in Missolonghi. The Beleaguered Greeks were resupplied and reinforced by small detachments sent through the Ottoman lines by the main Greek army, under [[Georgios Karaiskakis]], which had established itself around [[Eleusis]], [[Piraeus]] and [[Phaleron]] to the south of Athens. The Greeks launched various attacks against the Ottoman army's rear and its supply lines, most notably the victory at the [[Battle of Arachova]] in November ; this strategy was altered in favour of direct attacks on the Ottoman army, resulting in the [[Battle of Kamatero]] in February. The command was transferred from Karaiskakis to the British general [[Richard Church (general)|Richard Church]] in April. ||| ||| ||| +0 Siege of the Luhansk Border Base ||| 2014 Ukrainian revolution ||| Since the end of the [[2014 Ukrainian revolution]], eastern Ukraine experienced pro-Russian protests. Government buildings were occupied and were eventually retaken, but on April 6, the [[Security Service of Ukraine]] office in Luhansk was occupied by protesters. ||| Background ||| ||| +0 Sieges of Taunton ||| Battle of Lostwithiel ||| The Earl of Essex's campaign failed, suffering a total defeat at the [[Battle of Lostwithiel]] in early September 1644. His remaining forces retreated back to Dorset, leaving only Plymouth, Lyme Regis and Taunton under Parliamentarian control in the South West. ||| Sieges ||| First siege ||| +0 Sieges of Taunton ||| Battle of Naseby ||| [[George Goring, Lord Goring|Lord Goring]], who had proposed the second siege, renewed the blockade for a third time in mid-May, after engaging Weldon's departing army and forcing it back into Taunton. Goring's siege was lax and allowed provisions into the town, diminishing its effectiveness. The Parliamentarian defence tied up Goring and his 10–15,000 troops, who would have otherwise been available to fight for the King at [[Battle of Naseby|Naseby]], where historians believe they could have tipped the battle in favour of the Royalists. Instead, after securing a Parliamentarian victory at Naseby, [[Thomas Fairfax]] marched his army to relieve Taunton on 9 July 1645. ||| ||| ||| +0 Sieges of Taunton ||| Second English Civil War ||| After commanding the defence of Taunton, Blake was ordered to capture Dunster Castle, which he achieved after a nine-month siege. After the war, he was honoured by Parliament for his efforts and rewarded with £500, while a further £2,000 was split amongst his men. He took no side during the [[Second English Civil War|Second Civil War]] and, three years later, under the [[Commonwealth of England]], he became a [[general at sea]], as one of the three commissioners of the navy, and spent the rest of his life as a naval commander, for which he remains best known. ||| Aftermath ||| ||| +0 Sinai and Palestine Campaign ||| Anglo-Egyptian War ||| By 1914 Egypt had been part of the [[Ottoman Empire]] for 400 years, remaining under nominal Ottoman suzerainty despite being [[British occupation of Egypt|occupied by the British]] in 1882, following the [[Anglo-Egyptian War (1882)|Anglo-Egyptian War]], eventually becoming a [[British protectorate of Egypt|British protectorate]]. The [[Suez Canal]] was of vital strategic importance to the British, reducing the sailing time from India, New Zealand and Australia to Europe. ||| Background ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Beersheba (1917) ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Jerusalem ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Katia ||| Fighting for the oases area during a [[Battle of Katia|raid on Katia and Ogratine]] demonstrated its importance to both sides. From a base in the oases a large number of Ottoman troops could threaten the Suez Canal, and control the Sinai Peninsula with the threat of a [[Flanking maneuver|flank attack]]. The Australian [[1st Light Horse Brigade]] arrived at Romani on 28 May 1916. ||| Defence of the Suez Canal (1915–16) ||| Occupation of Romani ||| +0 Sinai and Palestine Campaign ||| Battle of Magdhaba ||| Fighting began in January 1915, when a German-led Ottoman force invaded the [[Sinai Peninsula]], then part of the British [[Protectorate]] of [[Egypt]], to unsuccessfully [[Raid on the Suez Canal|raid the Suez Canal]]. After the [[Gallipoli Campaign]], veterans from each side formed the [[Egyptian Expeditionary Force]] (EEF) and the [[Fourth Army (Ottoman Empire)|Fourth Army in Palestine]], to fight for the Sinai Peninsula in 1916. During this campaign the [[Anzac Mounted Division]] and the [[52nd (Lowland) Division]] succeeded in pushing [[German Empire|German]]-led [[Ottoman Army]] units out of the area, beginning with the [[Battle of Romani]] and pursuit in August, the [[Battle of Magdhaba]] in December, and in January 1917 the newly formed [[Desert Column]] completed the recapture of the Sinai at the [[Battle of Rafa]]. These three victories, resulting in the recapture of substantial Egyptian territory, were followed in March and April, by two EEF defeats on [[Ottoman Empire]] territory, at the [[First Battle of Gaza|First]] and [[Second Battle of Gaza|Second Battles of Gaza]] in southern [[Palestine (region)|Palestine]]. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Mughar Ridge ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Nablus ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Nablus (1918) ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Nazareth ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Rafa ||| Fighting began in January 1915, when a German-led Ottoman force invaded the [[Sinai Peninsula]], then part of the British [[Protectorate]] of [[Egypt]], to unsuccessfully [[Raid on the Suez Canal|raid the Suez Canal]]. After the [[Gallipoli Campaign]], veterans from each side formed the [[Egyptian Expeditionary Force]] (EEF) and the [[Fourth Army (Ottoman Empire)|Fourth Army in Palestine]], to fight for the Sinai Peninsula in 1916. During this campaign the [[Anzac Mounted Division]] and the [[52nd (Lowland) Division]] succeeded in pushing [[German Empire|German]]-led [[Ottoman Army]] units out of the area, beginning with the [[Battle of Romani]] and pursuit in August, the [[Battle of Magdhaba]] in December, and in January 1917 the newly formed [[Desert Column]] completed the recapture of the Sinai at the [[Battle of Rafa]]. These three victories, resulting in the recapture of substantial Egyptian territory, were followed in March and April, by two EEF defeats on [[Ottoman Empire]] territory, at the [[First Battle of Gaza|First]] and [[Second Battle of Gaza|Second Battles of Gaza]] in southern [[Palestine (region)|Palestine]]. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Romani ||| Fighting began in January 1915, when a German-led Ottoman force invaded the [[Sinai Peninsula]], then part of the British [[Protectorate]] of [[Egypt]], to unsuccessfully [[Raid on the Suez Canal|raid the Suez Canal]]. After the [[Gallipoli Campaign]], veterans from each side formed the [[Egyptian Expeditionary Force]] (EEF) and the [[Fourth Army (Ottoman Empire)|Fourth Army in Palestine]], to fight for the Sinai Peninsula in 1916. During this campaign the [[Anzac Mounted Division]] and the [[52nd (Lowland) Division]] succeeded in pushing [[German Empire|German]]-led [[Ottoman Army]] units out of the area, beginning with the [[Battle of Romani]] and pursuit in August, the [[Battle of Magdhaba]] in December, and in January 1917 the newly formed [[Desert Column]] completed the recapture of the Sinai at the [[Battle of Rafa]]. These three victories, resulting in the recapture of substantial Egyptian territory, were followed in March and April, by two EEF defeats on [[Ottoman Empire]] territory, at the [[First Battle of Gaza|First]] and [[Second Battle of Gaza|Second Battles of Gaza]] in southern [[Palestine (region)|Palestine]]. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Samakh ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Battle of Tabsor ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Capture of Afulah and Beisan ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Capture of Jenin ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| First Transjordan attack on Amman ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Gallipoli Campaign ||| Fighting began in January 1915, when a German-led Ottoman force invaded the [[Sinai Peninsula]], then part of the British [[Protectorate]] of [[Egypt]], to unsuccessfully [[Raid on the Suez Canal|raid the Suez Canal]]. After the [[Gallipoli Campaign]], veterans from each side formed the [[Egyptian Expeditionary Force]] (EEF) and the [[Fourth Army (Ottoman Empire)|Fourth Army in Palestine]], to fight for the Sinai Peninsula in 1916. During this campaign the [[Anzac Mounted Division]] and the [[52nd (Lowland) Division]] succeeded in pushing [[German Empire|German]]-led [[Ottoman Army]] units out of the area, beginning with the [[Battle of Romani]] and pursuit in August, the [[Battle of Magdhaba]] in December, and in January 1917 the newly formed [[Desert Column]] completed the recapture of the Sinai at the [[Battle of Rafa]]. These three victories, resulting in the recapture of substantial Egyptian territory, were followed in March and April, by two EEF defeats on [[Ottoman Empire]] territory, at the [[First Battle of Gaza|First]] and [[Second Battle of Gaza|Second Battles of Gaza]] in southern [[Palestine (region)|Palestine]]. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Spring Offensive ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai and Palestine Campaign ||| Third Transjordan attack ||| After a period of [[stalemate in Southern Palestine]] from April to October 1917, General [[Edmund Allenby]] captured [[Battle of Beersheba (1917)|Beersheba]] defended by the III Corps (which had fought at Gallipoli). Having weakened the Ottoman defences which had stretched almost continually from Gaza to Beersheba, they were finally captured by 8 November, after the [[Battle of Tel el Khuweilfe]], the [[Battle of Hareira and Sheria]] and the [[Third Battle of Gaza]], when the pursuit began. During the subsequent operations, about {{convert|50|mi|km}} of formerly Ottoman territory, was captured as a result of the EEF victories at the [[Battle of Mughar Ridge]], fought between 10 and 14 November, and the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] fought between 17 November and 30 December. Serious losses on the [[Western Front (World War I)|Western Front]] in March 1918 during [[Erich Ludendorff]]'s German [[Spring Offensive]], forced the British Empire to send reinforcements from the EEF. During this time, two unsuccessful attacks were made [[First Transjordan attack on Amman|to capture Amman]] and [[Second Transjordan attack on Shunet Nimrin and Es Salt|to capture Es Salt]] in March and April 1918, before Allenby's force resumed the offensive during the [[manoeuvre warfare]] of the [[Battle of Megiddo (1918)|Battle of Megiddo]]. The successful infantry battles at [[Battle of Tulkarm|Tulkarm]] and [[Battle of Tabsor|Tabsor]] created gaps in the Ottoman front line, allowing the pursuing [[Desert Mounted Corps]] to [[encirclement|encircle]] the infantry fighting in the [[Judean Hills]] and fight the [[Battle of Nazareth]] and [[Battle of Samakh]], capturing [[Capture of Afulah and Beisan|Afulah, Beisan]], [[Capture of Jenin|Jenin]] and [[Capture of Tiberias|Tiberias]]. In the process the EEF destroyed three Ottoman armies during the [[Battle of Sharon]], the [[Battle of Nablus (1918)|Battle of Nablus]] and the [[Third Transjordan attack]], capturing thousands of prisoners and large quantities of equipment. [[Capture of Damascus (1918)|Damascus]], and [[Battle of Aleppo (1918)|Aleppo]] were captured during the subsequent pursuit, before the Ottoman Empire agreed to the [[Armistice of Mudros]] on 30 October 1918, ending the Sinai and Palestine Campaign. The [[British Mandate of Palestine]], and the [[French Mandate for Syria and Lebanon]] were created to administer the captured territories. ||| ||| ||| +0 Sinai insurgency ||| Egyptian Revolution of 2011 ||| The '''Sinai insurgency''' is the conflict ignited by Islamist militants in the [[Sinai Peninsula]], which began after the start of the [[Egyptian Crisis (2011–present)|Egyptian Crisis]], which saw the overthrow of longtime [[Egypt]]ian dictator [[Hosni Mubarak]] in the [[Egyptian Revolution of 2011]] and the response from the interim Egyptian government after mid-2011, known as [[Operation Eagle]] and then [[Operation Sinai (2012)|Operation Sinai]]. The Sinai insurgency consisted of militants, largely composed of local [[Bedouin]] tribesmen, who exploited the chaotic situation in Egypt and weakened central authority to launch a series of attacks on government forces in Sinai. ||| ||| ||| +0 Sinking of the RMS Lusitania ||| Gallipoli Campaign ||| On 27 March, Room 40 had intercepted a message which clearly demonstrated that the Germans had broken the code used to pass messages to British merchant ships. Cruisers protecting merchant ships were warned not to use the code to give directions to shipping because it could just as easily attract enemy submarines as steer ships away from them. Queenstown (Cobh since Irish independence) was not given this warning and continued to give directions in the compromised code, which was not changed until after ''Lusitania''{{'}}s sinking. At this time the Navy was significantly involved with operations leading up to the landings at [[Gallipoli Campaign|Gallipoli]], and the intelligence department had been undertaking a program of misinformation to convince Germany to expect an attack on her northern coast. As part of this, ordinary cross-channel traffic to the [[Netherlands]] was halted from 19 April and false reports were leaked about troop ship movements from British west and south coast ports. This led to a demand from the German army for offensive action against the expected troop movements, and consequently, a surge in German submarine activity on the British west coast. The fleet was warned to expect additional submarines, but this warning was not passed on to those sections of the navy dealing with merchant vessels. The return of the battleship ''Orion'' from [[HMNB Devonport|Devonport]] to Scotland was delayed until 4 May and she was given orders to stay {{convert|100|mi|km}} from the Irish coast. ||| Last voyage and sinking ||| Submarine activity ||| +0 Sinking of the RMS Lusitania ||| Spring Offensive ||| In January 1917 the German Government announced it would now conduct full [[unrestricted submarine warfare]]. Once again, Woodrow Wilson was furious and on 6 April 1917 the United States Congress followed Wilson's request to declare war on Germany. US buildup of participation was at first slow, but during the German [[Spring Offensive]] in March 1918, which at first went well for the Germans with the Allies barely holding the lines, was reversed with the arrival by April 1918 of two million American troops. ||| International reaction ||| German policy reversal ||| +0 Sino-Indian War ||| Indo-Pakistani War of 1971 ||| |jstor=2754976}} The border treaty largely set the border along the MacCartney-Macdonald Line. In the [[Indo-Pakistani War of 1971]], Pakistan expected China to provide military support, but it was left alone as India successfully helped the rebels in [[East Pakistan]] to found the new nation-state of [[Bangladesh]]. ||| World opinion ||| ||| +0 Sino-Vietnamese War ||| 1975 Spring Offensive ||| The United States played an ever-increasing role in supporting South Vietnam through the period. The U.S. had supported French forces in the First Indochina War, sent supplies and military advisers to South Vietnam throughout the 1950s and early 1960s, and eventually took over most of the fighting against both North Vietnam and the Viet Cong by the mid-1960s. By 1968, over 500,000 American troops were involved in the Vietnam War. Due to a lack of clear military success and facing [[Opposition to United States involvement in the Vietnam War|increasingly strident opposition]] to the war in the U.S., American forces began a slow withdrawal in 1969 while attempting to [[Vietnamization|bolster South Vietnam's military]] so that they could take over the fighting. In accordance with the [[Paris Peace Accords]] by 29 March 1973 all U.S. combat forces had left South Vietnam, however North Vietnamese combat forces were allowed to remain in place. North Vietnam [[1975 Spring Offensive|attacked South Vietnam]] in early 1975 and [[Fall of Saigon|South Vietnam fell]] on 30 April 1975. ||| Background ||| Vietnam War ||| +0 Sino-Vietnamese War ||| First Indochina War ||| The Sino-Vietnamese War ({{lang-vi|Chiến tranh biên giới Việt-Trung}}) is also known in English as the Third Indochina War, to distinguish it from the [[First Indochina War]], and the [[Vietnam War]], also known as the Second Indochina War. ||| Names ||| ||| +0 Sino-Vietnamese War ||| Korean War ||| On February 17, 1979, a [[People's Liberation Army]] (PLA) force of about 200,000 troops supported by 200 [[Type 59 tank|Type 59]], [[Type 62]], and [[Type 63 light tank|Type 63]] tanks entered northern Vietnam in the PLA's first major combat operation since the end of the [[Korean War]] in 1953. ||| Course of the war ||| Chinese Engagement ||| +0 Sino-Vietnamese War ||| Vietnam War ||| The Sino-Vietnamese War ({{lang-vi|Chiến tranh biên giới Việt-Trung}}) is also known in English as the Third Indochina War, to distinguish it from the [[First Indochina War]], and the [[Vietnam War]], also known as the Second Indochina War. ||| Names ||| ||| +0 Six-Day War ||| 1929 Hebron massacre ||| After the Old City fell, the Jerusalem Brigade reinforced the paratroopers, and continued to the south, capturing [[Judea]] and [[Gush Etzion]]. [[Hebron]] was taken without any resistance. Fearful that Israeli soldiers would exact retribution for the [[1929 Hebron massacre|1929 massacre]] of the city's Jewish community, Hebron's residents flew white sheets from their windows and rooftops, and voluntarily gave up their weapons. The Harel Brigade proceeded eastward, descending to the [[Jordan River]]. ||| Fighting fronts ||| West Bank ||| The Old City (June 7) +0 Six-Day War (2000) ||| Six-Day War ||| The conflict is called the 'Six-Day War' not only due to its literal six-day duration but also because it shared the same dates as the [[Six-Day War]] between Israel and Arab states in 1967. ||| ||| ||| +0 Sixth Battle of the Isonzo ||| Battle of Asiago ||| [[Franz Graf Conrad von Hötzendorf]] had reduced the [[Austria-Hungary|Austro-Hungarian]] forces along the [[Soča]] (Isonzo) front to reinforce his [[Battle of Asiago|Trentino Offensive]]. Italian Chief-of-Staff [[Luigi Cadorna]] made good use of railroads to quickly shift troops from [[Trentino]] back to the Isonzo line for an offensive against the weakened Austro-Hungarian defenses. ||| Background ||| ||| +0 Skirmish of Littlestown ||| Battle of Gettysburg ||| The '''Skirmish of Littlestown''' was a Pennsylvania military engagement before the [[Battle of Gettysburg]] in which 'a few companies of skirmishers' of Union infantry defeated a Confederate detachment of [[J.E.B. Stuart]]'s Cavalry Division. ||| ||| ||| +0 Slovak National Uprising ||| Battle of the Dukla Pass ||| On September 8, the Red Army began an [[Battle of the Dukla Pass|offensive on the Dukla Pass]] on the Slovak-[[Poland|Polish]] border and tried to fight through the [[Carpathian Mountains]] to penetrate into Slovakia. This poorly planned and late action resulted in tremendous casualties on both sides and became bogged down for nearly two months. ||| Course of the uprising ||| Momentum lost ||| +0 Somali Rebellion ||| Ogaden War ||| The '''Somali Rebellion''' started in 1986 when [[Siad Barre]] began attacking clan-based dissident groups opposed to his rule with his special forces, the 'Red Berets' (''Duub Cas''). The dissidents had been gaining strength for nearly a decade following his abrupt switch of allegiance from the [[Soviet Union]] to the [[United States]] and the disastrous [[Ogaden War]] of 1977-1978. When Barre was injured in an automobile accident on May 23, 1986, rivals within Barre's own government and revolutionary groups became bolder and entered into open conflict. ||| ||| ||| +0 Sonderaktion Krakau ||| Invasion of Poland ||| A little over two months after the German [[Invasion of Poland]], the [[Gestapo]] chief in Kraków ''{{nobreak|SS-Obersturmbannführer}}'' [[Bruno Müller]], commanded [[Jagiellonian University]] [[Rector (academia)|rector]] Professor [[Tadeusz Lehr-Spławiński]] to require all professors to attend his lecture about German plans for Polish education. The rector agreed and sent an invitation throughout the university for a meeting scheduled at the administrative centre building in the [[Collegium Novum]] ''(entrance pictured)''. On November 6, 1939 at the lecture room no. 56 (or 66, sources vary) at noon, all academics and their guests gathered; among them, 105 professors and 33 lecturers from Jagiellonian University (UJ), 34 professors and doctors from [[AGH University of Science and Technology|University of Technology]] (AGH) some of whom attended a meeting in a different room, 4 from [[Cracow University of Economics|University of Economics]] (AE) and 4 from Lublin and Wilno. ||| Course of operation ||| ||| +0 South Lebanon conflict (1985–2000) ||| 1982 Lebanon War ||| In earlier conflicts prior to the [[1982 Lebanon War|1982 Israeli invasion]], including [[Operation Litani]], [[Israel]] attempted to eradicate PLO bases from Lebanon and support Christian Maronite militias. The 1982 invasion resulted in the PLO's departure from Lebanon. The creation of the Security Zone in South Lebanon benefited civilian Israelis, although at great cost to Palestinian and Lebanese civilians. Despite this Israeli success in eradicating PLO bases and its partial withdrawal in 1985, the Israeli invasion increased the severity of conflict with local Lebanese militias and resulted in the consolidation of several local [[Shia Muslim]] movements in Lebanon, including Hezbollah and [[Amal Movement|Amal]], from a previously unorganized guerrilla movement in the south. Over the years, military casualties of both sides grew higher, as both parties used more modern weaponry, and Hezbollah progressed in its tactics. By the early 1990s, Hezbollah, with support from [[Syria]] and Iran, emerged as the leading group and military power, monopolizing guerrilla activity in South Lebanon. ||| ||| ||| +0 South Lebanon conflict (1985–2000) ||| 1983 Beirut barracks bombing ||| Increased hostilities against the US resulted in the April [[1983 United States Embassy bombing]]. In response, the US brokered the [[May 17 Agreement]], in an attempt to stall hostilities between Israel and Lebanon. However, this agreement eventually failed to take shape, and hostilities continued. In October, the United States Marines barracks [[1983 Beirut barracks bombing|in Beirut was bombed]] (usually attributed to the Islamic Resistance groups). Following this incident, the United States withdrew its military forces from Lebanon. ||| Chronology ||| Occupation period 1982–1985 – the emergence of Hezbollah ||| +0 South Lebanon conflict (1985–2000) ||| 2006 Hezbollah cross-border raid ||| In July 2006, Hezbollah performed a [[2006 Hezbollah cross-border raid|cross-border raid]] while shelling Israeli towns and villages. During the raid Hezbollah succeeded in kidnapping two Israeli soldiers and killing eight others. In retaliation Israel began [[2006 Lebanon War|the 2006 Lebanon War]] to rescue the abducted soldiers and to create a bufferzone in Southern Lebanon. ||| Aftermath ||| ||| +0 South-East Asian theatre of World War II ||| Battle of Madagascar ||| The Japanese [[Indian Ocean raid]] was a naval sortie by the Fast Carrier Strike Force of the [[Imperial Japanese Navy]] from 31 March to 10 April 1942 against Allied shipping and bases in the Indian Ocean. Following the destruction of the [[ABDACOM]] forces in the battles around [[Java (island)|Java]] in February and March, the Japanese sortied into the Indian Ocean to destroy British seapower there and support the invasion of [[Burma Campaign|Burma]]. The raid was only partially successful. It did not succeed in destroying Allied naval power in the Indian Ocean but it did force the British fleet to relocate from [[British Ceylon]] to [[Kilindini]] near [[Mombasa]] in [[Kenya]], as their more forward fleet anchorages could not be adequately protected from Japanese attack. The fleet in the Indian Ocean was then gradually reduced to little more than a convoy escort force as other commitments called for the more powerful ships. From May 1942, it was also used in the [[Battle of Madagascar|invasion of Madagascar]] — an operation aimed at thwarting any attempt by Japan to use bases on the [[Vichy French]] controlled territory. ||| Initial Japanese successes ||| The Japanese Indian Ocean raid ||| +0 South-East Asian theatre of World War II ||| Battle of Palembang ||| The Japanese [[Southern Expeditionary Army Group]]'s [[Teishin Shudan|1st Raiding Regiment]] (also known as the 1st Parachute Brigade) was used with good effect in the seizure of [[Sumatra]] (see [[Battle of Palembang]]). ||| Initial Japanese successes ||| ||| +0 South-East Asian theatre of World War II ||| Battle of Singapore ||| Japanese forces met stiff resistance from [[Indian III Corps|III Corps]] of the [[British Indian Army|Indian Army]], the [[Australian 8th Division]] and British units during the [[Battle of Malaya]], but Japan's superiority in air power, tanks and infantry tactics drove the Allied units back. After being driven out of Malaya, Allied forces in [[Singapore]], under the command of Lieutenant General [[Arthur Ernest Percival|Arthur Percival]], surrendered to the Japanese on 15 February 1942; about 130,000 Allied troops became prisoners of war. The [[Battle of Singapore|fall of Singapore]] was the largest surrender in British military history. ||| Initial Japanese successes ||| Malaya and Singapore ||| +0 South-East Asian theatre of World War II ||| Burma Campaign ||| The Japanese [[Indian Ocean raid]] was a naval sortie by the Fast Carrier Strike Force of the [[Imperial Japanese Navy]] from 31 March to 10 April 1942 against Allied shipping and bases in the Indian Ocean. Following the destruction of the [[ABDACOM]] forces in the battles around [[Java (island)|Java]] in February and March, the Japanese sortied into the Indian Ocean to destroy British seapower there and support the invasion of [[Burma Campaign|Burma]]. The raid was only partially successful. It did not succeed in destroying Allied naval power in the Indian Ocean but it did force the British fleet to relocate from [[British Ceylon]] to [[Kilindini]] near [[Mombasa]] in [[Kenya]], as their more forward fleet anchorages could not be adequately protected from Japanese attack. The fleet in the Indian Ocean was then gradually reduced to little more than a convoy escort force as other commitments called for the more powerful ships. From May 1942, it was also used in the [[Battle of Madagascar|invasion of Madagascar]] — an operation aimed at thwarting any attempt by Japan to use bases on the [[Vichy French]] controlled territory. ||| Initial Japanese successes ||| The Japanese Indian Ocean raid ||| +0 South-East Asian theatre of World War II ||| Indian Ocean raid ||| The Japanese [[Indian Ocean raid]] was a naval sortie by the Fast Carrier Strike Force of the [[Imperial Japanese Navy]] from 31 March to 10 April 1942 against Allied shipping and bases in the Indian Ocean. Following the destruction of the [[ABDACOM]] forces in the battles around [[Java (island)|Java]] in February and March, the Japanese sortied into the Indian Ocean to destroy British seapower there and support the invasion of [[Burma Campaign|Burma]]. The raid was only partially successful. It did not succeed in destroying Allied naval power in the Indian Ocean but it did force the British fleet to relocate from [[British Ceylon]] to [[Kilindini]] near [[Mombasa]] in [[Kenya]], as their more forward fleet anchorages could not be adequately protected from Japanese attack. The fleet in the Indian Ocean was then gradually reduced to little more than a convoy escort force as other commitments called for the more powerful ships. From May 1942, it was also used in the [[Battle of Madagascar|invasion of Madagascar]] — an operation aimed at thwarting any attempt by Japan to use bases on the [[Vichy French]] controlled territory. ||| Initial Japanese successes ||| The Japanese Indian Ocean raid ||| +0 South-East Asian theatre of World War II ||| Japanese invasion of French Indochina ||| Japanese forces had invaded [[Japanese invasion of French Indochina|French Indochina]] in September 1940, as did [[Franco-Thai War|Thailand]] in January 1941. By December 1941, the area had been mostly 'pacified.' ||| Initial Japanese successes ||| French Indochina ||| +0 Soviet invasion of Poland ||| Battle of Grodno (1939) ||| Soviet units often met their German counterparts advancing from the opposite direction. Notable examples of co-operation occurred between the two armies in the field. The ''Wehrmacht'' passed the [[Brest Fortress]] to the Soviet 29th Tank Brigade, which had been seized after the [[Battle of Brześć Litewski]] on 17 September. Soviet forces had taken [[Vilnius|Wilno]] (now Vilnius) on 19 September after [[Battle of Wilno (1939)|a two-day battle]], and they took [[Grodno]] on 24 September after [[Battle of Grodno (1939)|a four-day battle]]. By 28 September, the Red Army had reached the line formed by the Narew, Western Bug, Vistula and San rivers—the border agreed in advance with the Germans. ||| Soviet invasion of Poland ||| Military campaign ||| +0 Soviet invasion of Poland ||| Battle of Szack ||| Despite a tactical Polish victory on 28 September at the [[Battle of Szack]], the outcome of the larger conflict was never in doubt. ||| Soviet invasion of Poland ||| Military campaign ||| +0 Soviet invasion of Poland ||| Battle of Wilno (1939) ||| Soviet units often met their German counterparts advancing from the opposite direction. Notable examples of co-operation occurred between the two armies in the field. The ''Wehrmacht'' passed the [[Brest Fortress]] to the Soviet 29th Tank Brigade, which had been seized after the [[Battle of Brześć Litewski]] on 17 September. Soviet forces had taken [[Vilnius|Wilno]] (now Vilnius) on 19 September after [[Battle of Wilno (1939)|a two-day battle]], and they took [[Grodno]] on 24 September after [[Battle of Grodno (1939)|a four-day battle]]. By 28 September, the Red Army had reached the line formed by the Narew, Western Bug, Vistula and San rivers—the border agreed in advance with the Germans. ||| Soviet invasion of Poland ||| Military campaign ||| +0 Soviet invasion of Poland ||| Battles of Khalkhin Gol ||| The Allied governments declared war on Germany on 3 September but failed to provide any meaningful support. The undeclared war between the [[Soviet Union]] and the [[Empire of Japan]] at the [[Battles of Khalkhin Gol]] (Nomonhan) in the [[Far East]] ended with the [[Vyacheslav Molotov|Molotov]]–[[Hideki Tojo|Tojo]] agreement between the USSR and Japan which was signed on 15 September 1939, with a ceasefire taking effect on 16 September 1939. On 17 September 1939, Molotov delivered the following declaration of war to [[Wacław Grzybowski]], the Polish Ambassador in Moscow: ||| German invasion of Poland ||| ||| +0 Soviet–Japanese border conflicts ||| Operation Barbarossa ||| Later in 1941, Japan would consider breaking the pact when the German [[Third Reich]] invaded the Soviet Union ([[Operation Barbarossa]]), but they made the crucial decision to keep it and to continue to press into Southeast Asia instead. This was said to be largely due to the Battle of Khalkhin Gol. The defeat there caused Japan not to join forces with Germany against the Soviet Union, even though Japan and Germany were part of the [[Tripartite Pact]]. On April 5, 1945, the Soviet Union unilaterally denounced the neutrality pact, noting that it would not renew the treaty when it expired on April 13, 1946. Four months later, prior to the expiration of the neutrality pact, and between the [[atomic bomb]]ings of [[Hiroshima]] and [[Nagasaki]], the Soviet Union declared war on Japan, completely surprising the Japanese. The [[Soviet invasion of Manchuria]] was launched one hour after the declaration of war. ||| Soviet–Japanese Neutrality Pact ||| ||| +0 Soviet–Japanese border conflicts ||| Second Sino-Japanese War ||| As early as 1935, the Soviets were providing ammunition and intelligence to Communist guerillas in Manchuria. In 1937, the Japanese invaded China, starting the [[Second Sino-Japanese War]]. During the first two years of the war, the Soviets heavily aided the Chinese, increasing tensions with Japan. From October 1937 to September 1939, the Soviets supplied the Chinese with 82 tanks, over 1,300 pieces of artillery, over 14,000 machine guns, 50,000 rifles, 1,550 trucks and tractors, and also ammunition, equipment and supplies. They also provided 3,665 military advisors and 'volunteers'. 195 of these men, almost all officers, died in battle against Japanese forces. Large-scale aid ceased by the end of the Soviet-Japanese border wars. {{Cite web ||| Prelude ||| Soviet involvement in China ||| +0 Spanish–American War ||| American Civil War ||| In 1823, U.S. President [[James Monroe]] enunciated the [[Monroe Doctrine]], which stated that the United States would not tolerate further efforts by European governments to colonize land or interfere with states in the Americas; however, Spain's colony in Cuba was exempted. Before the [[American Civil War|Civil War]] Southern interests attempted to have the U.S. purchase Cuba and make it new slave territory. The [[Ostend Manifesto|proposal]] failed, and national attention shifted to the Civil War. ||| Historical background ||| American interest in the Caribbean ||| +0 Spanish–American War ||| Battle of Manila Bay ||| Although the main issue was Cuban independence, the ten-week war was fought in both the Caribbean and the Pacific. US naval power proved decisive, allowing expeditionary forces to disembark in Cuba against a Spanish garrison already brought to its knees by nationwide Cuban insurgent attacks and further wasted by [[yellow fever]]. With two obsolete Spanish squadrons sunk in [[Battle of Santiago de Cuba|Santiago de Cuba]] and [[Battle of Manila Bay|Manila Bay]] and a third, more modern fleet recalled home to protect the Spanish coasts, Madrid [[Suing for peace|sued for peace]].<ref name='108–109'>{{harvnb|Dyal|1996| ||| ||| ||| +0 Spanish–American War ||| Capture of Guam ||| On June 20, a U.S. fleet commanded by Captain [[Henry Glass (admiral)|Henry Glass]], consisting of the [[protected cruiser]] {{USS|Charleston|C-2|6}} and three transports carrying troops to the Philippines, entered Guam's Apra Harbor, Captain Glass having opened sealed orders instructing him to proceed to [[Capture of Guam|Guam and capture it]]. ''Charleston'' fired a few cannon rounds at Fort Santa Cruz without receiving return fire. Two local officials, not knowing that war had been declared and believing the firing had been a salute, came out to ''Charleston'' to apologize for their inability to return the salute as they were out of gunpowder. Glass informed them that the U.S. and Spain were at war. ||| Pacific Theater ||| Guam ||| +0 Spring Offensive ||| Battle of the Somme ||| After a few days, the German advance began to falter, as the infantry became exhausted and it became increasingly difficult to move artillery and supplies forward to support them. Fresh British and [[Australia]]n units were moved to the vital rail centre of [[Amiens]] and the defence began to stiffen. After fruitless attempts to capture Amiens, Ludendorff called off Operation ''Michael'' on 5 April. By the standards of the time, there had been a substantial advance. It was, however, of little value; a [[Pyrrhic victory]] in terms of the casualties suffered by the crack troops, as the vital positions of Amiens and Arras remained in Allied hands. The newly-won territory was difficult to traverse, as much of it consisted of the shell-torn wilderness left by the 1916 [[Battle of the Somme]], and would later be difficult to defend against Allied counterattacks. ||| Operation ''Michael''==<!-- This section is linked from [[Western Front (World War I)]] --&g ||| ||| +0 Spring Offensive ||| Operation Michael ||| Although Ludendorff was unsure whether the Americans would enter the war in strength, at a meeting of the Chiefs of Staff of the German armies on the Western Front on 11 November 1917, he decided to launch an offensive. The German government and Field Marshal [[Paul von Hindenburg]], nominally the Chief of the General Staff, were not party to the planning process. Eventually it was decided to launch [[Operation Michael]] near [[Saint-Quentin, Aisne|Saint-Quentin]], at the hinge between the French and British armies, and strike north to Arras. The main reason for the choice was tactical expediency. The ground on this sector of the front would dry out much sooner after the winter and spring rains and would therefore be easier to advance across. It was also a line of least resistance as the British and French armies were weak in the sector. ||| German preparations ||| Strategy ||| +0 Spring Offensive ||| Schlieffen Plan ||| Logistics were a key issue in the Spring Offensives, owing to the German failures in that area. Operation ''Michael'' in particular repeated the apparent mistakes of the [[Schlieffen Plan]], in that it forced German infantry to advance too deep and fight too far away from supplying railheads. The [[stormtrooper]] units leading the advance were unable to carry enough supplies to sustain themselves for more than a few days as it would slow them down and defeat the object of deploying a unit built for a speedy advance. Instead, they relied on logistical support brought up quickly from the rear to allow them to continue rapid advances. This was not achieved; the advance was slowed by supply shortages, which then gave Allied commanders the time to reinforce the threatened areas and slow the advance still more. ||| German preparations ||| Supply constraints ||| +0 St. James's Day Battle ||| Battle of Texel ||| Meanwhile, Lieutenant-Admiral [[Cornelis Tromp]], commanding the Dutch rear, had seen the sad events evolve from a great distance. Annoyed by the lack of competence shown, he decided to give the correct example. He turned sharply to the west, crossed the line of the English rear, commanded by [[Jeremiah Smith (Royal Navy officer)|Jeremiah Smith]], separating it from the rest of the English fleet and then, having the weather gauge, kept on attacking it rabidly until, at last, the English were routed and fled to the west. He pursued well into the night, destroying [[HMS Resolution (1654)|''Resolution'']] with a [[fireship]]. After Tromp thrice shot the entire crew from its rigging, Smith's flagship [[HMS Loyal London (1666)|''Loyal London'']] had to be towed home. The vice commander of the English rear was [[Edward Spragge]], who felt so humiliated by the course of events that he became a personal enemy of Tromp, dying himself while trying to kill his foe in the [[Battle of Texel]]. ||| First day ||| ||| +0 St. James's Day Battle ||| Raid on the Medway ||| The battle was a clear English victory, though the separate clash of the two rears was a victory for Tromp. Dutch casualties were enormous, estimated immediately after the battle at about 5,000 men, compared with 300 English killed; later, more precise information showed that only about 1,200 of these had been killed or seriously wounded. However, the Dutch only lost two ships: De Ruyter had been successful at saving almost the complete van, only ''Sneek'' and ''Tholen'' struck their flag, and they could quickly repair the damage. The twin disasters of the [[Great Plague of London]] and the [[Great Fire of London]], however, combined with his financial mismanagement, left [[Charles II of England|Charles II]] without the funds to continue the war. In fact, he had had only enough reserves for this one last battle. The Dutch soon recovered; within a month, they again took sea, but only a minor skirmish resulted. During this later fight, De Ruyter inhaled a burning fuse filament that burnt a [[fistula]] in his throat; he would recover just in time to inflict a severe blow on the English navy in the [[Raid on the Medway]] in 1667, when, at last, he could carry out the plan he was prevented from executing in 1666. ||| Results ||| ||| +0 St. John River Campaign ||| Battle of the Plains of Abraham ||| After the [[Battle of the Plains of Abraham|fall of Quebec]] on September 18, 1759, the resistance ended. The Maliseet and Acadians of the Saint John River surrendered to the British at Fort Frederick ||| Consequences ||| ||| +0 Strategic Air Command in the United Kingdom ||| Battle of Britain ||| SAC B-50s were regular visitors to [[RAF St Eval]] in Cornwall, and they regularly participated in static displays at various RAF bases during the [[Battle of Britain]] celebrations between 1948 and 1951. ||| B-50 deployments ||| ||| +0 Strategic Air Command in the United Kingdom ||| Iraq War ||| During [[Operation Desert Storm]], B-52s used [[RAF Fairford]] as a forward operating base. Fairford was also used during [[Operation Allied Force]] in 1999, and during the 2003 [[Iraq War]]. During these three conflicts, the Fairford was the home to [[B-52]]s, along with the [[B-1 Lancer]], and [[KC-135]] aircraft, and their support personnel. In recent years Fairford has been used by [[Air Combat Command]] [[B-2 Spirit]] stealth bombers. ||| B-52 deployments ||| ||| +0 Strategic bombing during World War II ||| Altmark Incident ||| After the [[Altmark Incident]], the ''Luftwaffe'' launched a strike against the British navy yard at [[Scapa Flow]] on 16 March 1940, leading to the first British civilian death. A British attack followed three days later against the German airbase at [[Hörnum]] on the island of [[Sylt]], The Germans retaliated with a naval raid. ||| Europe ||| Early war in Europe ||| The Western Front, 1939 to June 1940 +0 Strategic bombing during World War II ||| Battle of Britain ||| On 10 July, the [[Battle of Britain]] began with attack on shipping and fighter skirmishes over the British Channel. ||| Europe ||| Early war in Europe ||| The Battle of Britain and the Blitz +0 Strategic bombing during World War II ||| Invasion of Normandy ||| Before 1944, the Allies bombed targets in France that were part of the German war industry. This included raids such as those on the [[Renault]] factory in [[Boulogne-Billancourt]] in March 1942 or the port facilities of [[Nantes]] in September 1943 (which killed 1,500 civilians). In preparation of Allied [[Invasion of Normandy|landings in Normandy]] and [[Operation Dragoon|those in the south of France]], French infrastructure (mainly rail transport) was intensively targeted by RAF and USAAF in May and June 1944. Despite intelligence provided by the [[French Resistance]], many residential areas were hit in error or lack of accuracy. This included cities like [[Marseille]] (2,000 dead), [[Lyon]] (1,000 dead), [[Saint-Étienne]], [[Rouen]], [[Orléans]], [[Grenoble]], [[Nice]], Paris surrounds, and so on. The [[Free French Air Force]], operational since 1941, used to opt for the more risky skimming tactic when operating in national territory, to avoid civilian casualties. In 5 January 1945, British bombers struck the 'Atlantic pocket' of [[Royan]] and destroyed 85% of this city. A later raid, using [[napalm]] was carried out before it was freed from Nazi occupation in April. Of the 3,000 civilians left in the city, 442 died. ||| Europe ||| Bombing in France ||| +0 Strategic bombing during World War II ||| Operation Chastise ||| [[Operation Chastise]], better known as the Dambusters raid, was an attempt to damage German industrial production by crippling its hydro-electric power and transport in the Ruhr area. [[Operation Hydra (1943)|Operation Hydra]] of August 1943 sought to destroy German work on long-range rockets but only delayed it by a few months. Subsequent efforts were directed against V-weapon launch sites in France. ||| Europe ||| The British later in the war ||| Other British efforts +0 Strategic bombing during World War II ||| Operation Dragoon ||| Before 1944, the Allies bombed targets in France that were part of the German war industry. This included raids such as those on the [[Renault]] factory in [[Boulogne-Billancourt]] in March 1942 or the port facilities of [[Nantes]] in September 1943 (which killed 1,500 civilians). In preparation of Allied [[Invasion of Normandy|landings in Normandy]] and [[Operation Dragoon|those in the south of France]], French infrastructure (mainly rail transport) was intensively targeted by RAF and USAAF in May and June 1944. Despite intelligence provided by the [[French Resistance]], many residential areas were hit in error or lack of accuracy. This included cities like [[Marseille]] (2,000 dead), [[Lyon]] (1,000 dead), [[Saint-Étienne]], [[Rouen]], [[Orléans]], [[Grenoble]], [[Nice]], Paris surrounds, and so on. The [[Free French Air Force]], operational since 1941, used to opt for the more risky skimming tactic when operating in national territory, to avoid civilian casualties. In 5 January 1945, British bombers struck the 'Atlantic pocket' of [[Royan]] and destroyed 85% of this city. A later raid, using [[napalm]] was carried out before it was freed from Nazi occupation in April. Of the 3,000 civilians left in the city, 442 died. ||| Europe ||| Bombing in France ||| +0 Strategic bombing during World War II ||| Pacific War ||| In the [[Pacific War]], the Japanese bombed civilian populations throughout the war (e.g. in [[Bombing of Chongqing|Chongqing]]). The US [[air raids on Japan]] began in earnest in October 1944 and escalated into widespread [[firebombing]], which culminated in the [[atomic bombings of Hiroshima and Nagasaki]] on 6 and 9 August 1945 respectively, and the [[Surrender of Japan|Japanese surrender]] on 15 August. ||| ||| ||| +0 Strategic bombing during World War II ||| Phoney War ||| Germany's first strikes were not carried out until 16 and 17 October 1939, against the British fleet at [[Rosyth]] and [[Scapa Flow]]. Little activity followed. The [[Phoney War]] continued. ||| Europe ||| Early war in Europe ||| The Western Front, 1939 to June 1940 +0 Strategic bombing during World War II ||| Second Sino-Japanese War ||| During World War II, it was believed by many military strategists of [[air power]] that major victories could be won by attacking industrial and political infrastructure, rather than purely military targets. Strategic bombing often involved bombing areas inhabited by civilians and sometimes bombing campaigns were deliberately designed to target civilian populations in order to terrorize, disorganize, and disrupt their usual activities. [[International law]] at the outset of World War II did not specifically forbid aerial bombardment of cities despite the prior occurrence of such bombing during [[World War I]], the [[Spanish Civil War]], and the [[Second Sino-Japanese War]]. ||| ||| ||| +0 Strategic bombing during World War II ||| The Blitz ||| The ''Luftwaffe'', which Hitler had prohibited from bombing civilian areas in the UK, was now ordered to bomb British cities. [[The Blitz]] was underway. Hitler himself hoped that the bombing of London would terrorize the population into submission. He stated that 'If eight million [Londoners] go mad, it might very well turn into a catastrophe!'. After that he believed 'even a small invasion might go a long way'. Another 250 bomber sorties were flown in the night. By the morning of 8 September 430 Londoners had been killed. The ''Luftwaffe'' issued a press notice announcing they had dropped more than 1,000,000 kilograms of bombs on London in 24 hours. Many other British cities were hit in the nine-month Blitz, including [[Plymouth Blitz|Plymouth]], [[Birmingham Blitz|Birmingham]], [[Liverpool Blitz|Liverpool]], [[Southampton Blitz|Southampton]], [[Manchester Blitz|Manchester]], [[Bristol Blitz|Bristol]], [[Belfast Blitz|Belfast]], [[Cardiff Blitz|Cardiff]], [[Clydebank Blitz|Clydebank]], [[Hull Blitz|Kingston upon Hull]] and [[Coventry Blitz|Coventry]]. [[Basil Collier]], author of 'The Defence of the United Kingdom', the HMSO's official history, wrote: ||| Europe ||| Early war in Europe ||| The Battle of Britain and the Blitz +0 Swedish invasion of Russia ||| Battle of Holowczyn ||| ! style='text-align:right;' | [[Battle of Holowczyn|Holowczyn]] ||| Battles ||| ||| +0 Swedish invasion of Russia ||| Battle of Narva (1700) ||| Charles was a skilled military leader, and probably considered the invasion to be a risky enterprise; he had resisted the advice of his generals to invade during the Russian winter following the first [[Battle of Narva (1700)]]. He chose to continue his invasion now because he expected Swedish reinforcements and the alliance of the Cossacks under [[Ivan Mazepa]]. The reinforcing Swedish army, however, was ambushed by Russians, and a Russian army under [[Aleksandr Danilovich Menshikov]] had destroyed Mazepa's capital and chased him to Charles with just thirteen hundred men. ||| ||| ||| +0 Swedish invasion of Russia ||| Siege of Veprik ||| ! style='text-align:right;' | [[Siege of Veprik|Veprik]] ||| Battles ||| ||| +0 Swissair Flight 111 ||| Second Congo War ||| *Pierce J. Gerety, Jr., [[UNHCR]] Director of Operations for the [[Great Lakes Region of Africa]], who was on a special mission for U.N. Secretary General [[Kofi Annan]] to the [[Democratic Republic of the Congo]] to attempt to negotiate a peace accord with [[Laurent Kabila]] in an [[Second Congo War|erupting regional war]] ||| Victims ||| Notable victims ||| +0 Syrian Civil War spillover in Lebanon ||| Arab Spring ||| From the inception of the violence that began in Syria as a result of the [[Arab Spring]], the Syrian Civil War has produced and inspired a great deal of strife and unrest among armed factions. Prior to the Battle of Arsal in August 2014, the Lebanese Army has tried to keep out of it and the violence has been mostly between various factions within the country and overt Syrian involvement has been limited to airstrikes and occasional accidental incursions. ||| Timeline ||| ||| +0 Tactical development on the Western Front in 1917 ||| Battle of Cambrai (1917) ||| The French army began the year with a return to the strategy of decisive battle, using the methods pioneered at the [[Battle of Verdun]] in December 1916, to break through the German defences on the Western front and return to [[maneuver warfare|manoeuvre warfare]] ({{lang|de|''Bewegungskrieg''}}) but ended the year recovering from the disastrous result. The German army attempted to avoid the high infantry losses of 1916 by withdrawing to new deeper and dispersed defences. Defence in depth was intended to nullify the Allies' growing material strength (particularly in artillery) and succeeded in slowing the growth of Anglo-French battlefield superiority. The British army continued its evolution into a mass army capable of imposing itself on a continental power, took on much of the military burden borne by the French and Russian armies since 1914 and left the German army resorting to expedients to counter the development of its increasingly skilful use of fire-power and technology. During 1917 the British army also experienced the manpower shortages that hampered the French and Germans and then at [[Battle of Cambrai (1917)|Cambrai]] in December, encountered the revitalising effect on the German army of reinforcements from Russia. ||| ||| ||| +0 Tactical development on the Western Front in 1917 ||| Battle of Verdun ||| The French army began the year with a return to the strategy of decisive battle, using the methods pioneered at the [[Battle of Verdun]] in December 1916, to break through the German defences on the Western front and return to [[maneuver warfare|manoeuvre warfare]] ({{lang|de|''Bewegungskrieg''}}) but ended the year recovering from the disastrous result. The German army attempted to avoid the high infantry losses of 1916 by withdrawing to new deeper and dispersed defences. Defence in depth was intended to nullify the Allies' growing material strength (particularly in artillery) and succeeded in slowing the growth of Anglo-French battlefield superiority. The British army continued its evolution into a mass army capable of imposing itself on a continental power, took on much of the military burden borne by the French and Russian armies since 1914 and left the German army resorting to expedients to counter the development of its increasingly skilful use of fire-power and technology. During 1917 the British army also experienced the manpower shortages that hampered the French and Germans and then at [[Battle of Cambrai (1917)|Cambrai]] in December, encountered the revitalising effect on the German army of reinforcements from Russia. ||| ||| ||| +0 Taganrog during World War II ||| Battle of Berlin ||| The citizens of Taganrog collected money for the construction of a tank column ''Taganrog'', which was built from that money and given over to the [[3rd Guards Tank Army (Soviet Union)|army]] of General [[Pavel Rybalko]]. Some of these tanks with inscriptions ''Taganrog'' participated at the [[Battle of Berlin]]. ||| Post-liberation period ||| ||| +0 Taganrog during World War II ||| Battle of Stalingrad ||| After their defeat at the [[Battle of Stalingrad]], the German military command started to strengthen its defense lines. The defense lines '[[Mius-Front]]' along the [[Mius River]] had been created under command of General [[Paul Ludwig Ewald von Kleist]] back in October 1941. By summer 1943 the Mius-Front consisted of three defense lines with a total depth of the Mius defense range of 40–50 kilometers. The defense was held by the [[6th Army (Wehrmacht)]] under command of General [[Karl-Adolf Hollidt]]. ||| Liberation of Taganrog ||| ||| +0 Tallinn Offensive ||| Battle of Tannenberg Line ||| [[Stavka]] relocated the 2nd Shock Army from the [[Battle of Tannenberg Line|Narva front]] to the Emajõgi River. Fulfilling a complicated logistical task, the units of the shock army started to move on September 5, 1944. The 25th River Boat Brigade and engineer troops were ordered by Stavka to transport the units over Lake Peipus. Five crossings were built from the Russian settlement of Pnevo across the 2 km wide sound called Lämmijärv to the Estonian village of Mehikoorma. Forty-six vessels worked 24 hours a day. 135,000 troops, 13,200 horses, 9,100 lorries, 2,183 artillery, and 8,300 tons of ammunition crossed the lake. ||| Background ||| Prelude ||| +0 Tarnów rail station bomb attack ||| Gleiwitz incident ||| * [[Gleiwitz incident]] ||| See also ||| ||| +0 Tehran Conference ||| Battle of Kursk ||| Despite accepting the above arrangements, Stalin dominated the conference. He used the prestige of the Soviet victory at the [[Battle of Kursk]] to get his way. Roosevelt attempted to cope with Stalin's onslaught of demands, but was able to do little except appease Stalin. Churchill argued for the invasion of Italy in 1943, then Overlord in 1944, on the basis that Overlord was due to lack of shipping physically impossible in 1943 and it would be unthinkable to do anything major until it could be launched. ||| Proceedings ||| Main conference ||| +0 Tehran Conference ||| Operation Bagration ||| The invasion of France on 6 June 1944 took place about as planned, and the supporting invasion of southern France also took place ([[Operation Dragoon]]). The Soviets launched a major offensive against the Germans on 22 June 1944 ([[Operation Bagration]]). ||| Results ||| ||| +0 Tehran Conference ||| Operation Dragoon ||| The invasion of France on 6 June 1944 took place about as planned, and the supporting invasion of southern France also took place ([[Operation Dragoon]]). The Soviets launched a major offensive against the Germans on 22 June 1944 ([[Operation Bagration]]). ||| Results ||| ||| +0 Tel al-Zaatar massacre ||| Damour massacre ||| After [[Damour massacre|killing]] and evicting the occupying Palestinians on January 20, 1976 the PLO used the Christian town of [[Damour]] to house survivors of the Tel al-Zaatar battle. ||| The battle and its aftermath ||| ||| +0 Texas Revolution ||| Mexican War of Independence ||| Following the [[Mexican War of Independence]], Texas became part of [[Mexico]]. Under the [[1824 Constitution of Mexico|Constitution of 1824]], which defined the country as a [[federal republic]], the provinces of Texas and Coahuila were combined to become the state [[Coahuila y Tejas]]. ||| Background ||| ||| +0 Thanh Hóa Bridge ||| Operation Linebacker ||| Between 1968 and 1972, bombing of North Vietnam was discontinued, enabling the North Vietnamese to repair their infrastructures, including the Thanh Hóa bridge. With the communist invasion of [[South Vietnam]] in 1972, a new bombing campaign was instituted: [[Operation Linebacker]]. ||| The final blow ||| ||| +0 The Blitz ||| Battle of the Atlantic ||| In 1941, the Luftwaffe shifted strategy again. [[Erich Raeder]]—commander-in-chief of the ''[[Kriegsmarine]]''—had long argued the Luftwaffe should support the German submarine force (''U-Bootwaffe'') in the [[Battle of the Atlantic (1939-1945)|Battle of the Atlantic]] by attacking shipping in the Atlantic Ocean and attacking British ports. ||| Final attacks ||| Directive 23: Göring and the ''Kriegsmarine'' ||| +0 The Blitz ||| Operation Barbarossa ||| The bombing did not achieve its intended goals of demoralising the British into surrender or significantly damaging their war economy. The Blitz did not facilitate [[Operation Sea Lion]], the planned German invasion of Britain. By May 1941 the threat of an invasion of Britain had passed, and Hitler's attention had turned to [[Operation Barbarossa]] in the East. ||| ||| ||| +0 The Blitz ||| Rotterdam Blitz ||| Within hours of the UK and France declaring war on Germany on 3 September 1939, the RAF bombed German warships along the German coast at [[Wilhelmshaven]]. Thereafter bombing operations were against ports and shipping and propaganda leaflet drops. Operations were planned to minimize civilian casualties. From 15 May 1940 – the day after [[Rotterdam Blitz|the Luftwaffe destroyed the centre of Rotterdam]] – the RAF also carried out operations east of the Rhine, attacking industrial and transportation targets. Operations were carried out every night thereafter. ||| Background ||| Battle of Britain ||| +0 The Blitz ||| Spanish Civil War ||| Based on experience with [[German strategic bombing during World War I]] against the United Kingdom, the British government estimated after the war that 50 casualties— with about one third killed— would result for every tonne of bombs dropped on London. The estimate of tonnes of bombs an enemy could drop per day grew as aircraft technology advanced, from 75 in 1922, to 150 in 1934, to 644 in 1937. That year the [[Committee on Imperial Defence]] estimated that an attack of 60 days would result in 600,000 dead and 1,200,000 wounded. News reports of the [[Spanish Civil War]], such as the [[bombing of Barcelona]], supported the 50-casualties-per-tonne estimate. By 1938 experts generally expected that Germany would attempt to drop as much as 3,500 tonnes in the first 24 hours of war and average 700 tonnes a day for several weeks. In addition to high explosive and incendiary bombs the enemy would possibly use poison gas and even bacteriological warfare, all with a high degree of accuracy. ||| Civilian defensive measures ||| Physical protection ||| Prewar preparations and fears +0 The Hardest Day ||| Adlertag ||| The primary target was [[RAF Fighter Command]]. In July 1940, the Luftwaffe began [[operation (military)|military operations]] to destroy the RAF. Throughout July and early August, the Germans targeted convoys in the [[English Channel]] and occasionally RAF airfields. On 13 August, a major German effort, known as ''[[Adlertag]]'' (Eagle Day), was made against RAF airfields, but failed. The failure did not deter the Germans from persisting with air raids against the RAF or its infrastructure. ||| ||| ||| +0 The Hardest Day ||| Battle of Belgium ||| The tactics were unsuitable for fighter-versus-fighter combat. Packed in tight formation, the RAF pilots were more concerned with keeping their position and not colliding with each other than they were keeping watch for the enemy. It made them vulnerable to surprise attacks by Bf 109s and Bf 110s. Even if the British fighters reached the bombers without interception, the chaos of modern aerial combat made it impossible to concentrate attacks with large, rigid formations. Pilots were also forced into paying far too much respect to the bomber's defensive capabilities. Attacks were broken off far too early and caused little damage to bombers. These tactical failures were evident during the battles [[Battle of Belgium|in Belgium]] and [[Battle of France|France]]. Moreover, rushed training with pilots who were barely able to use the old tactical methods meant that airmen could not cope with much needed radical changes. ||| RAF defences ||| Initial strategy and tactics ||| +0 The Hardest Day ||| Battle of Britain Day ||| On 18 August 1940, the Luftwaffe made an all-out effort to severely damage Fighter Command. The air battles that took place on this day were amongst the largest aerial engagements in history at that time. Both sides suffered very heavy losses. The British outperformed the Luftwaffe in the air, achieving a favourable ratio of 2:1. However, a number of RAF aircraft, including around six to eight fighters, were caught and destroyed on the ground, equalling the total losses of both sides. Further large aerial battles took place, with heavy casualties being suffered, but both sides lost more aircraft combined on this day than at any other point during the campaign, including [[Battle of Britain Day]], generally considered the climax of the campaign. For this reason, the air battles of the 18 August 1940 became known as 'The Hardest Day'. ||| ||| ||| +0 The Hardest Day ||| Battle of France ||| The tactics were unsuitable for fighter-versus-fighter combat. Packed in tight formation, the RAF pilots were more concerned with keeping their position and not colliding with each other than they were keeping watch for the enemy. It made them vulnerable to surprise attacks by Bf 109s and Bf 110s. Even if the British fighters reached the bombers without interception, the chaos of modern aerial combat made it impossible to concentrate attacks with large, rigid formations. Pilots were also forced into paying far too much respect to the bomber's defensive capabilities. Attacks were broken off far too early and caused little damage to bombers. These tactical failures were evident during the battles [[Battle of Belgium|in Belgium]] and [[Battle of France|France]]. Moreover, rushed training with pilots who were barely able to use the old tactical methods meant that airmen could not cope with much needed radical changes. ||| RAF defences ||| Initial strategy and tactics ||| +0 The Hardest Day ||| Spanish Civil War ||| German fighter tactics were more flexible. In the [[Spanish Civil War]], [[Werner Mölders]] developed a new system of fighter tactics. The primary deployment was to use large numbers of Bf 109s on free-hunting missions, or sweeps, over the battle area. Instead of flying the standard V formation, used by many air forces, the Germans paired their fighters into ''Rotte''. It consisted of two fighters; a pilot and his wingman 200 yards abreast. Flying this way meant each could cover the others blind spots. If an enemy made an attack, the other could move in behind it to protect the other ''Rotte'' member. The ''Rotte'' could be expanded into a ''Schwarm'' (Swarm or Flight). The formation was eventually given the name '[[Finger-four]]'. It offered maximum protection and all members of a ''Schwarm'' were on the lookout for threats and targets. ||| RAF defences ||| Initial strategy and tactics ||| +0 The Hump ||| Second Sino-Japanese War ||| '''The Hump''' was the name given by Allied pilots in the [[Second World War]] to the eastern end of the [[Himalaya]]n Mountains over which they flew [[military transport aircraft]] from [[India]] to [[China]] to resupply the [[Second Sino-Japanese War|Chinese war effort]] of [[Chiang Kai-shek]] and the units of the [[United States Army Air Forces]] based in China. Creating an [[airlift]] presented the USAAF a considerable challenge in 1942: it had no units trained or equipped for moving cargo, and no airfields existed in the [[China Burma India Theater]] (CBI) for basing the large number of transports that would be needed. Flying over the Himalayas was extremely dangerous and made more difficult by a lack of reliable charts, an absence of radio navigation aids, and a dearth of information about the weather. ||| ||| ||| +0 Third Anglo-Dutch War ||| Battle of Texel ||| In late July, Rupert sailed out again, trying to lure the Dutch fleet to the north, pretending to attempt a landing at [[Den Helder]]. De Ruyter at first decided not to leave his Schooneveld position, but was ordered to do so by William to prevent a [[Dutch East India Company]] fleet, loaded with spices and treasure, from being captured. The loss of this fleet would have allowed the English to continue the war, alleviating Charles's lack of funds. This resulted in the final [[Battle of Texel|Battle of the Texel]]. Both sides no longer restrained their forces, striving for a decision; even the French fought hard, but for the fourth time allowed themselves to get separated from the English fleet. Spragge broke formation for the second time to duel with Tromp; on this occasion losing his life. The English had to abandon their plans for an invasion from the sea, and the large costs of repair troubled Parliament. ||| 1673 ||| ||| +0 Third Anglo-Dutch War ||| Glorious Revolution ||| Reacting to the change in the public mood, Buckingham, who had learned of it during his trip to the Republic the previous year, began to leak the Dover Treaty to many fellow politicians, and Arlington soon followed. Thus in a short time Charles' own cabinet, the [[Cabal Ministry]], went over to the 'Dutch' peace party; [[Anthony Ashley-Cooper, 1st Earl of Shaftesbury|Lord Shaftesbury]], much shocked by the revelation, began to consider driving out the troublesome [[House of Stuart]] entirely. He induced his secretary, [[John Locke]], to develop further the legal concepts which would later be the basis of the ''[[Two Treatises of Government]]'', which justified the [[Glorious Revolution]] of 1688. ||| 1673 ||| ||| +0 Third Anglo-Dutch War ||| Raid on the Medway ||| Although England, the Dutch Republic and [[Sweden]] had signed a [[Triple Alliance (1668)|Triple Alliance]] against France in 1668 to prevent that country from occupying the [[Spanish Netherlands]], [[Charles II of England]] signed the secret [[Treaty of Dover]] with France in 1670, entailing that England would join [[Louis XIV of France]] in a punitive campaign against the United Provinces. Charles, feeling personally humiliated by the events of the [[Second Anglo-Dutch War]], especially the [[Raid on the Medway]], had engaged in the Triple Alliance only to create a rift between the Dutch and the French, two former allies. While publicly trying to appease tensions between France and the Republic, making ambassador [[William Temple (British politician)|William Temple]] avow friendship to [[Grand Pensionary]] [[Johan de Witt]], he secretly schemed to seduce Louis to a campaign against the Dutch. He was promised that after a French victory, he would be rewarded strategic coastal key positions to take as Crown possession. [[Walcheren]], [[Cadzand]] and [[Sluys]] were noted explicitly, but Charles also desired [[Brielle|Brill]], [[Texel]], [[Terschelling]] and [[Delfzijl]], to control the seaways towards the main Dutch ports, including [[Rotterdam]] and [[Amsterdam]], the latter of which was the richest city in Europe. ||| Preparations ||| ||| +0 Third Anglo-Dutch War ||| Second Anglo-Dutch War ||| Although England, the Dutch Republic and [[Sweden]] had signed a [[Triple Alliance (1668)|Triple Alliance]] against France in 1668 to prevent that country from occupying the [[Spanish Netherlands]], [[Charles II of England]] signed the secret [[Treaty of Dover]] with France in 1670, entailing that England would join [[Louis XIV of France]] in a punitive campaign against the United Provinces. Charles, feeling personally humiliated by the events of the [[Second Anglo-Dutch War]], especially the [[Raid on the Medway]], had engaged in the Triple Alliance only to create a rift between the Dutch and the French, two former allies. While publicly trying to appease tensions between France and the Republic, making ambassador [[William Temple (British politician)|William Temple]] avow friendship to [[Grand Pensionary]] [[Johan de Witt]], he secretly schemed to seduce Louis to a campaign against the Dutch. He was promised that after a French victory, he would be rewarded strategic coastal key positions to take as Crown possession. [[Walcheren]], [[Cadzand]] and [[Sluys]] were noted explicitly, but Charles also desired [[Brielle|Brill]], [[Texel]], [[Terschelling]] and [[Delfzijl]], to control the seaways towards the main Dutch ports, including [[Rotterdam]] and [[Amsterdam]], the latter of which was the richest city in Europe. ||| Preparations ||| ||| +0 Third Battle of Artois ||| Battle of Loos ||| The '''Third Battle of Artois''' was on the [[Western Front (World War I)|Western Front]] of [[World War I]], is also known as the ''Loos–Artois Offensive'' and included the big British offensive, known as the [[Battle of Loos]]. The offensive, meant to complement the [[Second Battle of Champagne]], was the last attempt of 1915 by the French commander-in-chief [[Joseph Joffre]] to exploit an Allied numerical advantage over Germany. Joffre's plan was for simultaneous attacks in [[Champagne-Ardenne]] and [[Artois]], to capture the railways at [[Attigny, Ardennes|Attigny]] and [[Douai]], to force a German withdrawal from the Noyon salient. ||| ||| ||| +0 Third Battle of Artois ||| Second Battle of Champagne ||| The '''Third Battle of Artois''' was on the [[Western Front (World War I)|Western Front]] of [[World War I]], is also known as the ''Loos–Artois Offensive'' and included the big British offensive, known as the [[Battle of Loos]]. The offensive, meant to complement the [[Second Battle of Champagne]], was the last attempt of 1915 by the French commander-in-chief [[Joseph Joffre]] to exploit an Allied numerical advantage over Germany. Joffre's plan was for simultaneous attacks in [[Champagne-Ardenne]] and [[Artois]], to capture the railways at [[Attigny, Ardennes|Attigny]] and [[Douai]], to force a German withdrawal from the Noyon salient. ||| ||| ||| +0 Third Battle of Gaza ||| Battle of Beersheba (1917) ||| The '''Third Battle of Gaza''' was fought on the night of 1/2 November 1917 between British and Ottoman forces during the [[Sinai and Palestine Campaign]] of [[World War I]], and came after the [[Egyptian Expeditionary Force]] (EEF) victory at the [[Battle of Beersheba (1917)|Battle of Beersheba]] had ended the [[Stalemate in Southern Palestine]]. The fighting occurred at the beginning of the [[Southern Palestine Offensive]], and together with [[Battle of Hareira and Sheria|attacks on Hareira and Sheria]] on 6–7 November and the continuing [[Battle of Tel el Khuweilfe]] which had been launched by General [[Edmund Allenby]] on 1 November, it eventually broke the [[Gaza City|Gaza]] to [[Beersheba]] line defended by the [[Yildirim Army Group]]. Despite having held this line since March 1917, the [[Ottoman Army]] was forced to evacuate Gaza and Tel el Khuweilfe during the night of 6/7 November. Only Sheria held out for most of the 7 November before it too was captured. ||| ||| ||| +0 Third Battle of Gaza ||| Battle of Passchendaele ||| Following British defeats at the [[First Battle of Gaza|First]] and [[Second Battle of Gaza|Second Battles of Gaza]] in March and April 1917, Lieutenant General [[Philip Chetwode]] commanding the EEF's Eastern Force and [[Friedrich Freiherr Kress von Kressenstein|Kress von Kressenstein]]'s [[Ottoman Empire]] force had each adopted a defensive posture and a stalemate had developed in Southern Palestine. Entrenched defences approximately on the lines held at the end of the second battle were strengthened, and both sides undertook regular mounted reconnaissances into the open eastern flank. In late June, Allenby replaced General [[Archibald Murray]] as commander of the EEF, which he quickly reorganised. At about the same time, the Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was also restructured. As the stalemate continued in terrible conditions through the summer, reinforcements began to arrive to replace the large number of casualties suffered by the EEF during the previous fighting for Gaza, while several additional divisions also arrived. The Ottoman defenders were also reinforced at this time, and both sides carried out training while manning the front lines and monitoring the open eastern flank. By mid-October, as the [[Battle of Passchendaele]] continued on the [[Western Front (World War I)|Western Front]], the last of the British reinforcements arrived as Allenby's preparations to commence a campaign of manoeuvre neared completion. ||| ||| ||| +0 Third Battle of Gaza ||| Western Front (World War I) ||| Following British defeats at the [[First Battle of Gaza|First]] and [[Second Battle of Gaza|Second Battles of Gaza]] in March and April 1917, Lieutenant General [[Philip Chetwode]] commanding the EEF's Eastern Force and [[Friedrich Freiherr Kress von Kressenstein|Kress von Kressenstein]]'s [[Ottoman Empire]] force had each adopted a defensive posture and a stalemate had developed in Southern Palestine. Entrenched defences approximately on the lines held at the end of the second battle were strengthened, and both sides undertook regular mounted reconnaissances into the open eastern flank. In late June, Allenby replaced General [[Archibald Murray]] as commander of the EEF, which he quickly reorganised. At about the same time, the Ottoman [[Fourth Army (Ottoman Empire)|Fourth Army]] was also restructured. As the stalemate continued in terrible conditions through the summer, reinforcements began to arrive to replace the large number of casualties suffered by the EEF during the previous fighting for Gaza, while several additional divisions also arrived. The Ottoman defenders were also reinforced at this time, and both sides carried out training while manning the front lines and monitoring the open eastern flank. By mid-October, as the [[Battle of Passchendaele]] continued on the [[Western Front (World War I)|Western Front]], the last of the British reinforcements arrived as Allenby's preparations to commence a campaign of manoeuvre neared completion. ||| ||| ||| +0 Third Battle of Kharkov ||| Battle of Kursk ||| The ''[[Wehrmacht]]'', while understrength, managed to flank, encircle, and defeat the Red Army's armored spearheads south of Kharkov. This enabled von Manstein to renew his offensive against the city of Kharkov proper on 7 March. Despite orders to encircle Kharkov from the north the SS Panzer Corps instead decided to directly engage Kharkov on 11 March. This led to four days of house-to-house fighting before Kharkov was recaptured by the [[1st SS Division Leibstandarte SS Adolf Hitler|1st SS Panzer Division]] on 15 March. The Germans recaptured Belgorod two days later, creating the [[Salients, re-entrants and pockets|salient]] which in July 1943 would lead to the [[Battle of Kursk]]. The German offensive cost the Red Army an estimated 90,000 [[casualty (person)|casualties]]. The house-to-house fighting in Kharkov was also particularly bloody for the German SS Panzer Corps, which had approximately 4,300 men killed and wounded by the time operations ended in mid March. ||| ||| ||| +0 Third Battle of Kharkov ||| Battle of Stalingrad ||| As the German [[6th Army (Wehrmacht)|Sixth Army]] was encircled in [[Battle of Stalingrad|Stalingrad]], the Red Army undertook a series of wider attacks against the rest of Army Group South. These culminated on 2 January 1943 when the Soviets launched [[Operation Star|Operation ''Star'']] and [[Operation Gallop|Operation ''Gallop'']], which between January and early February broke German defenses and led to the Soviet recapture of Kharkov, Belgorod, [[Kursk]], as well as [[Voroshilovgrad]] and [[Izium]]. The Soviet victories caused participating Soviet units to over-extend themselves. Freed on 2 February by the surrender of the German Sixth Army the Red Army's Central Front turned its attention west and on 25 February expanded its offensive against both Army Group South and [[Army Group Centre|Army Group Center]]. Months of continuous operations, however, had taken a heavy toll on the Soviets and some divisions were reduced to 1,000–2,000 combat effective soldiers. On 19 February, [[Field Marshal]] [[Erich von Manstein]] launched his Kharkov counterstrike, using the fresh [[II SS Panzer Corps|SS Panzer Corps]] and two panzer armies. ||| ||| ||| +0 Third Battle of Mount Hermon ||| First Battle of Mount Hermon ||| The '''Third Battle of Mount Hermon''' was fought on the night of October 21-22, 1973, between the [[Israeli Army]] and the [[Syrian Army]] over [[Mount Hermon]], during the last days of the [[Yom Kippur War]]. [[Syria]]n troops had [[First Battle of Mount Hermon|captured]] the IDF outpost on the mountain on October 6, and held it for two weeks. In the third battle, codenamed '''Operation Dessert''' ({{lang-he|מבצע קינוח}}, ''Mivtza Kinu'ah''), Israeli troops captured the Israeli outpost and the Syrian one. {{Cite news ||| ||| ||| +0 Third Battle of the Aisne ||| Battle of the Lys (1918) ||| The massive surprise attack (named ''Blücher-Yorck'' after two Prussian generals of the [[Napoleonic Wars]]) lasted from 27 May until 4 June 1918 and was the first full-scale German offensive following the [[Battle of the Lys (1918)|Lys Offensive]] in [[Flanders]] in April. ||| Background ||| ||| +0 Third Battle of the Aisne ||| First Battle of the Aisne ||| The Germans had held the Chemin des Dames Ridge from the [[First Battle of the Aisne]] in September 1914 to 1917, when General [[Charles Mangin|Mangin]] captured it during the [[Second Battle of the Aisne]] (in the [[Nivelle Offensive]]). ||| Background ||| ||| +0 Third Battle of the Aisne ||| Second Battle of the Marne ||| Ludendorff, encouraged by the gains of ''Blücher-Yorck'', would launch further offensives culminating in the [[Second Battle of the Marne]]. ||| Aftermath ||| ||| +0 Third Battle of the Aisne ||| Spring Offensive ||| The '''Third Battle of the Aisne''' ({{lang-fr|3e Bataille de L'Aisne}}) was a battle of the German [[Spring Offensive]] during [[World War I]] that focused on capturing the [[Chemin des Dames]] Ridge before the [[American Expeditionary Forces]] could arrive completely in [[France]]. It was one of a series of offensives, known as the [[Spring Offensive|''Kaiserschlacht'']], launched by the Germans in the spring and summer of 1918. ||| ||| ||| +0 Third Encirclement Campaign against Jiangxi Soviet ||| Mukden Incident ||| Capitalizing on their victory, communists launched their offensives into the nationalist dominated regions, further expanding their communist base in [[Jiangxi]], resulting in previously two separate communist bases in southern [[Jiangxi]] and western [[Fujian]] joining together into a larger one, covering twenty-one counties totaling more than fifty square kilometers, with permanent residents totaling more than two and half a million. The communist success paved the way for the communist base to later expand to its ultimate size with population over three million. It was worth to note that though [[Mao Zedong]] was still viewed by many communists as the supreme commander, his positions had already been actually reduced significantly since the last encirclement campaign, and it was only because [[Wang Ming]]'s protégés had not yet fully established their absolute authority, plus the fact that Mao's previous proven strategies had once more been applied in this campaign that created the false impression that Mao was still the supreme leader. After this campaign, Mao soon fell from power as the internal political power struggle intensified and [[Wang Ming]] emerged victorious. The encirclement stopped because the Japanese launched the [[Mukden Incident]]. ||| Aftermath ||| ||| +0 Third Transjordan attack ||| Battle of Aleppo (1918) ||| The British Empire victories during the Third Transjordan attack resulted in the occupation of many miles of Ottoman territory and the capture of the equivalent of one Ottoman corps. Meanwhile, the remnants of the Fourth Army were forced to retreat in disarray north to Damascus, along with the remnants of the Seventh and [[Eighth Army (Ottoman Empire)|Eighth Armies]] after the EEF victories during the [[Battle of Sharon]] and Battle of Nablus. Fighting extended from the [[Mediterranean Sea]] during these seven days of battle, resulting in the capture of many thousands of prisoners, and extensive territory. After several days pursuing remnant columns, [[Desert Mounted Corps]] captured [[Capture of Damascus (1918)|Damascus]] on 1 October. The surviving remnants of Yildirim Army Group which escaped Damascus were pursued north during the [[Pursuit to Haritan]] when [[Homs]] was occupied and [[Battle of Aleppo (1918)|Aleppo]] was captured by [[Faisal I of Iraq|Prince Feisal's]] Sherifial Army Force. Soon after, on 30 October, the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire, ending the Sinai and Palestine campaign. ||| ||| ||| +0 Third Transjordan attack ||| Battle of Jerusalem ||| Following the victory at the [[Battle of Jerusalem (1917)|Battle of Jerusalem]] at the end of 1917, and the [[Capture of Jericho]] in February 1918, the [[Egyptian Expeditionary Force]] (EEF) crossed the Jordan River, establishing bridgeheads in March prior to the First Transjordan attack on Amman. These bridgeheads remained after the Second Transjordan attacks on Shunet Nimrin and Es Salt when a second withdrawal back to the Jordan Valley took place from 3 to 5 May. This marked the end of major operations in the area until September 1918. So important did Allenby consider the support of the Hedjaz Arabs to the defence of his right flank, that they were substantially subsidised: ||| Background ||| ||| +0 Third Transjordan attack ||| Battle of Megiddo (1918) ||| The '''Third Transjordan attack''' by [[Chaytor's Force]], part of the [[British Empire]]'s [[Egyptian Expeditionary Force]] (EEF), took place between 21 and 25 September 1918, against the [[Ottoman Empire]]'s [[Fourth Army (Ottoman Empire)|Fourth Army]] and other [[Yildirim Army Group]] units. These operations took place during the [[Battle of Nablus (1918)|Battle of Nablus]], part of the [[Battle of Megiddo (1918)|Battle of Megiddo]] which began on 19 September in the final months of the [[Sinai and Palestine Campaign]] of [[World War I]]. Fought on the right flank and subsidiary to the Battle of Nablus, the Third Transjordan attack began northwards, with the assault on Kh Fasail. The following day a section of Chaytor's Force, attacked and captured the Ottoman Empire's 53rd Division ([[Seventh Army (Ottoman Empire)|Seventh Army]]) on the main eastwards line of retreat out of the [[Judean Hills]] across the Jordan River. Retreating columns of the Yildirim Army Group were attacked during the [[Capture of Jisr ed Damieh|battle for the Jisr ed Damieh bridge]], and several fords to the south were also captured, closing this line of retreat. Leaving detachments to hold the captured bridge and fords, Chaytor's Force began their eastwards advance by attacking and capturing the Fourth Army garrison at Shunet Nimrin on their way to capture [[Salt, Jordan|Es Salt]] for a third time. With the Fourth Army's VIII Corps in retreat, Chaytor's Force continued their advance to attack and capture [[Amman]] on 25 September during the [[Second Battle of Amman]]. Several days later, to the south of Amman, the Fourth Army's II Corps which had garrisoned the southern [[Hejaz Railway]], surrendered to Chaytor's Force at Ziza, effectively ending military operations in the area. ||| ||| ||| +0 Third Transjordan attack ||| Battle of Nablus (1918) ||| The '''Third Transjordan attack''' by [[Chaytor's Force]], part of the [[British Empire]]'s [[Egyptian Expeditionary Force]] (EEF), took place between 21 and 25 September 1918, against the [[Ottoman Empire]]'s [[Fourth Army (Ottoman Empire)|Fourth Army]] and other [[Yildirim Army Group]] units. These operations took place during the [[Battle of Nablus (1918)|Battle of Nablus]], part of the [[Battle of Megiddo (1918)|Battle of Megiddo]] which began on 19 September in the final months of the [[Sinai and Palestine Campaign]] of [[World War I]]. Fought on the right flank and subsidiary to the Battle of Nablus, the Third Transjordan attack began northwards, with the assault on Kh Fasail. The following day a section of Chaytor's Force, attacked and captured the Ottoman Empire's 53rd Division ([[Seventh Army (Ottoman Empire)|Seventh Army]]) on the main eastwards line of retreat out of the [[Judean Hills]] across the Jordan River. Retreating columns of the Yildirim Army Group were attacked during the [[Capture of Jisr ed Damieh|battle for the Jisr ed Damieh bridge]], and several fords to the south were also captured, closing this line of retreat. Leaving detachments to hold the captured bridge and fords, Chaytor's Force began their eastwards advance by attacking and capturing the Fourth Army garrison at Shunet Nimrin on their way to capture [[Salt, Jordan|Es Salt]] for a third time. With the Fourth Army's VIII Corps in retreat, Chaytor's Force continued their advance to attack and capture [[Amman]] on 25 September during the [[Second Battle of Amman]]. Several days later, to the south of Amman, the Fourth Army's II Corps which had garrisoned the southern [[Hejaz Railway]], surrendered to Chaytor's Force at Ziza, effectively ending military operations in the area. ||| ||| ||| +0 Third Transjordan attack ||| Battle of Nazareth ||| [[Otto Liman von Sanders]], the commander of the [[Yildirim Army Group]], was forced out of his headquarters at Nazareth during the [[Battle of Nazareth (1918)|Battle of Nazareth]] on the morning of 20 September by elements of the 5th Cavalry Division. He drove via [[Capture of Tiberias|Tiberias]] and [[Samakh, Tiberias|Samakh]] where he [[Battle of Samakh|alerted the garrisons]], to arrive at [[Deraa]] on the morning of 21 September, on his way to Damascus. At Deraa, Liman von Sanders received a report from the Fourth Army, which he ordered to withdraw to the Deraa to Irbid line without waiting for the troops which garrisoned the southern Hejaz. ||| Background ||| Liman von Sanders escapes ||| +0 Third Transjordan attack ||| Battle of Samakh ||| [[Otto Liman von Sanders]], the commander of the [[Yildirim Army Group]], was forced out of his headquarters at Nazareth during the [[Battle of Nazareth (1918)|Battle of Nazareth]] on the morning of 20 September by elements of the 5th Cavalry Division. He drove via [[Capture of Tiberias|Tiberias]] and [[Samakh, Tiberias|Samakh]] where he [[Battle of Samakh|alerted the garrisons]], to arrive at [[Deraa]] on the morning of 21 September, on his way to Damascus. At Deraa, Liman von Sanders received a report from the Fourth Army, which he ordered to withdraw to the Deraa to Irbid line without waiting for the troops which garrisoned the southern Hejaz. ||| Background ||| Liman von Sanders escapes ||| +0 Third Transjordan attack ||| Battle of Sharon ||| The British Empire victories during the Third Transjordan attack resulted in the occupation of many miles of Ottoman territory and the capture of the equivalent of one Ottoman corps. Meanwhile, the remnants of the Fourth Army were forced to retreat in disarray north to Damascus, along with the remnants of the Seventh and [[Eighth Army (Ottoman Empire)|Eighth Armies]] after the EEF victories during the [[Battle of Sharon]] and Battle of Nablus. Fighting extended from the [[Mediterranean Sea]] during these seven days of battle, resulting in the capture of many thousands of prisoners, and extensive territory. After several days pursuing remnant columns, [[Desert Mounted Corps]] captured [[Capture of Damascus (1918)|Damascus]] on 1 October. The surviving remnants of Yildirim Army Group which escaped Damascus were pursued north during the [[Pursuit to Haritan]] when [[Homs]] was occupied and [[Battle of Aleppo (1918)|Aleppo]] was captured by [[Faisal I of Iraq|Prince Feisal's]] Sherifial Army Force. Soon after, on 30 October, the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire, ending the Sinai and Palestine campaign. ||| ||| ||| +0 Third Transjordan attack ||| Capture of Damascus (1918) ||| The British Empire victories during the Third Transjordan attack resulted in the occupation of many miles of Ottoman territory and the capture of the equivalent of one Ottoman corps. Meanwhile, the remnants of the Fourth Army were forced to retreat in disarray north to Damascus, along with the remnants of the Seventh and [[Eighth Army (Ottoman Empire)|Eighth Armies]] after the EEF victories during the [[Battle of Sharon]] and Battle of Nablus. Fighting extended from the [[Mediterranean Sea]] during these seven days of battle, resulting in the capture of many thousands of prisoners, and extensive territory. After several days pursuing remnant columns, [[Desert Mounted Corps]] captured [[Capture of Damascus (1918)|Damascus]] on 1 October. The surviving remnants of Yildirim Army Group which escaped Damascus were pursued north during the [[Pursuit to Haritan]] when [[Homs]] was occupied and [[Battle of Aleppo (1918)|Aleppo]] was captured by [[Faisal I of Iraq|Prince Feisal's]] Sherifial Army Force. Soon after, on 30 October, the [[Armistice of Mudros]] was signed between the [[Allies of World War I|Allies]] and the Ottoman Empire, ending the Sinai and Palestine campaign. ||| ||| ||| +0 Third Transjordan attack ||| Second Battle of Amman ||| The '''Third Transjordan attack''' by [[Chaytor's Force]], part of the [[British Empire]]'s [[Egyptian Expeditionary Force]] (EEF), took place between 21 and 25 September 1918, against the [[Ottoman Empire]]'s [[Fourth Army (Ottoman Empire)|Fourth Army]] and other [[Yildirim Army Group]] units. These operations took place during the [[Battle of Nablus (1918)|Battle of Nablus]], part of the [[Battle of Megiddo (1918)|Battle of Megiddo]] which began on 19 September in the final months of the [[Sinai and Palestine Campaign]] of [[World War I]]. Fought on the right flank and subsidiary to the Battle of Nablus, the Third Transjordan attack began northwards, with the assault on Kh Fasail. The following day a section of Chaytor's Force, attacked and captured the Ottoman Empire's 53rd Division ([[Seventh Army (Ottoman Empire)|Seventh Army]]) on the main eastwards line of retreat out of the [[Judean Hills]] across the Jordan River. Retreating columns of the Yildirim Army Group were attacked during the [[Capture of Jisr ed Damieh|battle for the Jisr ed Damieh bridge]], and several fords to the south were also captured, closing this line of retreat. Leaving detachments to hold the captured bridge and fords, Chaytor's Force began their eastwards advance by attacking and capturing the Fourth Army garrison at Shunet Nimrin on their way to capture [[Salt, Jordan|Es Salt]] for a third time. With the Fourth Army's VIII Corps in retreat, Chaytor's Force continued their advance to attack and capture [[Amman]] on 25 September during the [[Second Battle of Amman]]. Several days later, to the south of Amman, the Fourth Army's II Corps which had garrisoned the southern [[Hejaz Railway]], surrendered to Chaytor's Force at Ziza, effectively ending military operations in the area. ||| ||| ||| +0 Third Transjordan attack ||| Sinai and Palestine Campaign ||| The '''Third Transjordan attack''' by [[Chaytor's Force]], part of the [[British Empire]]'s [[Egyptian Expeditionary Force]] (EEF), took place between 21 and 25 September 1918, against the [[Ottoman Empire]]'s [[Fourth Army (Ottoman Empire)|Fourth Army]] and other [[Yildirim Army Group]] units. These operations took place during the [[Battle of Nablus (1918)|Battle of Nablus]], part of the [[Battle of Megiddo (1918)|Battle of Megiddo]] which began on 19 September in the final months of the [[Sinai and Palestine Campaign]] of [[World War I]]. Fought on the right flank and subsidiary to the Battle of Nablus, the Third Transjordan attack began northwards, with the assault on Kh Fasail. The following day a section of Chaytor's Force, attacked and captured the Ottoman Empire's 53rd Division ([[Seventh Army (Ottoman Empire)|Seventh Army]]) on the main eastwards line of retreat out of the [[Judean Hills]] across the Jordan River. Retreating columns of the Yildirim Army Group were attacked during the [[Capture of Jisr ed Damieh|battle for the Jisr ed Damieh bridge]], and several fords to the south were also captured, closing this line of retreat. Leaving detachments to hold the captured bridge and fords, Chaytor's Force began their eastwards advance by attacking and capturing the Fourth Army garrison at Shunet Nimrin on their way to capture [[Salt, Jordan|Es Salt]] for a third time. With the Fourth Army's VIII Corps in retreat, Chaytor's Force continued their advance to attack and capture [[Amman]] on 25 September during the [[Second Battle of Amman]]. Several days later, to the south of Amman, the Fourth Army's II Corps which had garrisoned the southern [[Hejaz Railway]], surrendered to Chaytor's Force at Ziza, effectively ending military operations in the area. ||| ||| ||| +0 Third attack on Anzac Cove ||| Landing at Anzac Cove ||| On 25 April 1915, the [[Australian and New Zealand Army Corps]] (ANZAC) landed on the western side of the [[Gallipoli Peninsula]], at what thereafter became known as [[Anzac Cove]]. The first Turkish attempts to recapture the ANZAC beachhead were two [[Landing at Anzac Cove|unsuccessful attacks in April]]. Just over two weeks later, the Turks had gathered a force of 42,000 men (four [[division (military)|division]]s) to conduct their second assault against the ANZAC's 17,300 men (two divisions). The ANZAC commanders had no indication of the impending attack until the day before, when British aircraft reported a build-up of troops opposite the ANZAC positions. ||| ||| ||| +0 Third attack on Anzac Cove ||| Landing at Cape Helles ||| The [[Landing at Anzac Cove#Consolidating the landing|First Turkish counter-attack on Anzac Cove]] in April, by the [[19th Infantry Division (Ottoman Empire)|19th Infantry Division]] ([[57th Infantry Regiment (Ottoman Empire)|57th]], 72nd and 77th Infantry Regiments) commanded by [[Colonel]] [[Mustafa Kemal Atatürk|Mustafa Kemal]], had initially pierced the ANZAC line but was eventually repulsed. On 5 May the Turkish Army commander, the German officer [[Otto Liman von Sanders]], ordered his troops to adopt a defensive posture. However, the Turkish General Staff considered the ANZAC beachhead to be such a precarious position that even a small Turkish success would 'drive them back into the sea'. Another consideration was that eliminating the ANZAC position would release four or five divisions to move against the [[Landing at Cape Helles|British and French beachhead]] at [[Cape Helles]]. ||| Background ||| Beachhead ||| +0 Thirteenth Siege of Gibraltar ||| Battle of Cape Passaro ||| The letter was tantamount to a declaration of war. Spain, however, was not in a particularly advantageous position to capture Gibraltar in 1727. At the last [[Capture of Gibraltar|attempt to retake Gibraltar in 1704]], Spain had a strong Navy and the additional assistance of French warships. However, following their defeat at the battle of [[Battle of Cape Passaro|Cape Passaro]] and the [[capture of Vigo]] and Pasajes, the Spanish Navy was severely weakened. The Royal Navy had complete naval supremacy in the Straits, ruling out a Spanish landing in the south, and ensuring that the British garrison would be well supplied through a siege. Also, any attempt to scale the Rock from the east (as five hundred men under Colonel Figueroa, led by a local goatherd named [[Simón Susarte|Susarte]], had done in 1704) ||| Background ||| ||| +0 Thirty Years' War ||| Battle of Fehmarn (1644) ||| In 1643, Denmark made preparations to again intervene in the war, but on the Imperial side (against Sweden). The Swedish marshal [[Lennart Torstenson]] expelled [[Frederick III of Denmark|Danish prince Frederick]] from [[Bremen-Verden]], gaining a stronghold south of Denmark and hindering Danish participation as mediators in the [[Peace of Westphalia|peace talks in Westphalia]]. Torstensson went on to occupy [[Jutland]], and after the [[Royal Swedish Navy]] under [[Carl Gustaf Wrangel]] inflicted a decisive defeat on the [[Danish Navy]] in the battle of Fehmern Belt in an [[Battle of Fehmarn (1644)|action of 13 October 1644]] forcing them to sue for peace. With Denmark out of the war, Torstenson then pursued the Imperial army under [[Matthias Gallas|Gallas]] from [[Jutland]] in Denmark down to Bohemia. At the [[Battle of Jankau]] near Prague, the Swedish army defeated the Imperial army under Gallas and could occupy Bohemian lands and threaten [[Prague]] as well as [[Vienna]]. ||| French intervention and continued Swedish participation (1635–1648) ||| ||| +0 Three Hundred and Thirty Five Years' War ||| Second English Civil War ||| The origins of the war can be found in the [[Second English Civil War]], fought between the [[Cavalier|Royalists]] and [[Roundhead|Parliamentarians]] from 1642 to 1652. [[Oliver Cromwell]] had fought the Royalists to the edges of the [[Kingdom of England]]. In the West of England this meant that [[Cornwall]] was the last Royalist stronghold. In 1648, Cromwell pushed on until mainland Cornwall was in the hands of the Parliamentarians. ||| War ||| Origins ||| +0 Times Square Ball ||| Iraq War ||| *'''2007–2008''': Karolina Wierzchowska, a [[valedictorian]] of the [[New York City Police Department|NYPD]]'s academy who also served in the [[Iraq War]] ||| Events ||| Festivities ||| +0 Titokowaru's War ||| First Taranaki War ||| Te Ngutu o Te Manu was a shattering defeat for the Europeans, on a similar magnitude to the Battle of Puketakuere during the [[First Taranaki War]]. Contemporary writers described the loss as 'the most serious and complete defeat ever experienced by the colonial forces' and 'the most disastrous affair that ever took place in New Zealand'. Von Tempsky's death came as a shock to his military followers and to his wider audience of admirers throughout New Zealand. In the minds of the Pākeha public, von Tempsky was a dashing hero of the New Zealand wars, whose fearlessness and ability to survive near-misses gave him an aura of invincibility. ||| Engagements ||| Te Ngutu o Te Manu ||| +0 Titokowaru's War ||| Second Taranaki War ||| '''Titokowaru ' s War''' was a military conflict that took place in the [[South Taranaki District|South Taranaki]] region of [[New Zealand]]'s [[North Island]] from June 1868 to March 1869 between the [[Ngāti Ruanui]] [[Māori people|Māori]] tribe and the New Zealand Government. The conflict, near the conclusion of the [[New Zealand wars]], was a revival of hostilities of the [[Second Taranaki War]] as [[Titokowaru|Riwha Titokowaru]], chief of the Ngāti Ruanui's Ngaruahine ''[[hapu]]'' (sub-tribe), responded to the continued surveying and settlement of confiscated land with well-planned and effective attacks on settlers and government troops in an effort to block the occupation of Māori land. ||| ||| ||| +0 Troude's expedition to the Caribbean ||| Battle of Trafalgar ||| During the [[Napoleonic Wars]], the [[French Navy]] suffered a series of defeats at the hands of the British [[Royal Navy]], culminating in the destruction of much of their Mediterranean Fleet at the [[Battle of Trafalgar]] in 1805. Unable to compete at sea, the French were increasingly confined to their principal naval bases, especially [[Brest, France|Brest]] on the [[Bay of Biscay|Biscay]] coast and [[Toulon]] in the [[Mediterranean]]. With British squadrons patrolling the entrances to these ports, the French found it difficult not only to conduct regular overseas trade, but also to supply and reinforce their overseas colonies. ||| Background ||| ||| +0 Tulle massacre ||| Ardeatine massacre ||| The public proclamations and explanations given by the Germans to the French authorities reliably refer to the potential for the murder of unarmed German soldiers. According to the German argument, reprisals conformed with international military law, under the [[Armistice of 22 June 1940]] and under the [[Hague Conventions (1899 and 1907)|second Hague Convention]]. Following the trial conducted in Belgium on the execution of hostages by German troops and one conducted in Italy for the [[Ardeatine massacre]], one can conclude that the Tulle massacre has been effected in violation of the law of armed conflict., ||| Analysis ||| Historical Research ||| +0 Turkish War of Independence ||| Arab Revolt ||| The National Movement—which persuaded the Ottoman [[Chamber of Deputies (Ottoman Empire)|Chamber of Deputies]] to declare a 'National Pact' (''[[Misak-i Milli]]'') against the occupying Allies–prompted the British government to take action. To put an end to Turkish Nationalist hopes, the British decided to systematically bring Turkey under their control. The plan was to dismantle Turkish Government organizations, beginning in Istanbul and moving deep into Anatolia. Mustafa Kemal's National Movement was seen as the main problem. The British Foreign Office was asked to devise a plan. The Foreign Office suggested the same plan previously used during the [[Arab Revolt]]. This time however, resources were channeled to warlords like [[Ahmet Anzavur]]. The politics of this decision were legitimised via the Treaty of Sèvres. Anatolia was to be westernized under Christian governments. That was the only way that Christians could be safe, said the British government. The Treaty of Sèvres placed most of Anatolia under Christian control. This policy aimed to break down authority in Anatolia by separating the Sultan, its government, and pitting Christians (Greece and [[First Republic of Armenia|Republic of Armenia]], Armenians of Cilicia) against Muslims. The details of these covert operations are summarized below, in the section under Jurisdictional Conflict. ||| Initial organization ||| Shift from ''de facto'' to ''de jure'' occupation ||| +0 Turkish War of Independence ||| Gallipoli Campaign ||| Mustafa Kemal Paşa writes in his memoir{{Citation needed|date=November 2010}} that he needed nationwide support. The importance of his position, and his status as the 'Hero of Anafartalar' after the [[Gallipoli Campaign]], and his title of Fahri Yaver-i Hazret-i Şehriyari ('Honorary Aide-de-camp to His Majesty Sultan') gave him some credentials. On the other hand, this was not enough to inspire everyone. While officially occupied with the disarming of the army, he had increased his various contacts in order to build his movement's momentum. He met with Rauf Bey (Orbay), Ali Fuat Paşa (Cebesoy), and Refet Bey (Bele) on June 21, 1919 and declared the [[Amasya Circular]] (22 June 1919). ||| Initial organization ||| ||| +0 Turkish presidential election, 2014 ||| Gallipoli Campaign ||| During his electoral rally in [[Van (Turkey)|Van]], Erdoğan attacked his rival Ekmeleddin İhsanoğlu for allegedly mistaking the [[Independence March]], the Turkish [[National Anthem]], for a poem composed for the fallen soldiers at [[Çanakkale]] during the [[Gallipoli Campaign]]. In his [[Kahramanmaraş]] rally on 1 August, he showed the crowd a video of İhsanoğlu misreading the Independence March. ||| Campaigns ||| Erdoğan campaign ||| +0 Turkish–Armenian War ||| Armenian Genocide ||| Armenia's most crippling problem was its dispute with its neighbor to the west, the [[Ottoman Empire]]. The Ottomans had killed as many as 1,5 million Armenians during the [[Armenian Genocide]]. Although the armies of the [[Ottoman Empire]] eventually occupied the South Caucasus in the summer of 1918 and stood poised to crush the republic, Armenia resisted until the end of October, when the Ottoman Empire [[Armistice of Mudros|capitulated]] to the [[Allies of World War I|Allied powers]]. Though the Ottoman Empire was partially occupied by the Allies, they did not withdraw their forces from the pre-war Russo-Turkish boundary until February 1919 and maintained many troops mobilized along this frontier. ||| Background ||| ||| +0 Turkish–Armenian War ||| Caucasus Campaign ||| * [[Caucasus Campaign]] ||| See also ||| ||| +0 Turkish–Armenian War ||| February Revolution ||| With the dissolution of the [[Russian Empire]] in the wake of the [[February Revolution|Feb 1917 revolution]] and of the [[Transcaucasian Federation]] in May 1918, the Armenians of the South Caucasus declared their independence and formally established the [[First Republic of Armenia]]. ||| Background ||| ||| +0 Tyrolean Rebellion ||| Battle of Aspern-Essling ||| The Tyroleans celebrated the news that Napoleon had suffered his first defeat at the [[Battle of Aspern-Essling]] on May 22. Nevertheless, after the French again gained the upper hand at the [[Battle of Wagram]] on July 5/6, [[Archduke Charles of Austria]] signed the [[Armistice of Znaim]] whereafter the Austrian forces withdraw from Tyrol. Thus, the rebels, who had their strongholds in Southern Tyrol, were left fighting alone. They however were able to inflict several defeats to the French and Bavarians forces under Marshal Lefebvre in July, culminating in a complete French retreat after the [[Battles of Bergisel|Third Battle of Bergisel]] on August 12/13. Hofer now took over the administration of the unoccupied territories at Innsbruck; large parts of Tyrol enjoyed a brief period of independence. ||| The war of the Fifth Coalition and outbreak and course of the rebellion ||| ||| +0 Tyrolean Rebellion ||| War of the Third Coalition ||| In September 1805 the [[Electorate of Bavaria#Revolutionary and Napoleonic periods|Electorate of Bavaria]] under Prince-elector [[Maximilian I Joseph of Bavaria|Maximilian I Joseph of Wittelsbach]], that had been allied with the [[Habsburg Monarchy]] under the common federally structured [[Holy Roman Empire]], went over to Napoleonic France: the Bavarian Minister Count [[Maximilian von Montgelas]], realizing the French superiority while fearing the ambitions of the newly established [[Austrian Empire]], signed a secret defence alliance at [[Bogenhausen]]. At the end of the [[War of the Third Coalition]] shortly afterwards, Bavaria found itself on the victorious side. Upon the 1805 [[Peace of Pressburg (1805)|Peace of Pressburg]] it not only was elevated to a [[Kingdom of Bavaria|kingdom]], it also gained French-occupied Tyrol, which since 1363 had been held by the Austrian Habsburgs, who, heavily defeated by Napoleon at the [[Battle of Austerlitz]], were forced to renounce it. The French officially handed over the Tyrolean county including the secularized [[Bishopric of Trent]] (Trentino) to Bavaria on 11 February 1806. ||| Historical background: Bavarian occupation of Tyrol since 1805 ||| ||| +0 U-boat Campaign (World War I) ||| Gallipoli Campaign ||| The German Navy sent their first submarines to the Mediterranean in response to the Anglo-French [[Gallipoli Campaign|Dardanelles campaign]], after it became obvious that their Austro-Hungarian allies could do little against it with their small submarine force, which nevertheless was successful in defending the [[Adriatic]]. ||| 1915: War on commerce ||| Dardanelles Operations ||| +0 USS Kitty Hawk riot ||| Operation Linebacker ||| The '''USS ''Kitty Hawk'' riot''', sometimes called the '''''Kitty Hawk'' mutiny''', was part of widespread antiwar protests within the US armed forces which took place as part of a movement called SOS (Stop Our Ships/Support Our Sailors) on the [[United States Navy]] [[aircraft carrier]] {{USS|Kitty Hawk|CV-63|2}} on the night of 12/13 October 1972, off the coast of [[Vietnam]] during [[Operation Linebacker]]. A report by the House Armed Services Committee concluded that the rebellion had been precipitated by orders received to return to Vietnam from Subic Bay. These orders were given after incidents of sabotage by American sailors had disabled the [[USS Ranger (CV-61)|USS Ranger]] and [[USS Forrestal (CV-59)|USS Forrestal]]. The ''Kitty Hawk'' was eventually forced to retire to San Diego and was removed from the war. ||| ||| ||| +0 Ukrainian War of Independence ||| October Revolution ||| All this led to the [[October Revolution]] in Petrograd, which quickly spread all over the empire. The [[Kiev Bolshevik Uprising|Kiev Uprising]] in November 1917 led to the defeat of [[Kiev Military District|Russian imperial forces]] in the capital. Soon after, the [[Central Council of Ukraine|Central Rada]] took power in Kiev, while in late December 1917 the [[Bolsheviks]] set up a [[Ukrainian Soviet Socialist Republic|rival Ukrainian republic]] in the eastern city of Kharkov ({{lang-ua|''[[Kharkiv]]''}}) – initially also called the 'Ukrainian People's Republic'. ||| Ukraine after the Russian revolution ||| ||| +0 Ukrainian War of Independence ||| Operation Barbarossa ||| The political status of Ukraine remained unchanged until the [[Molotov-Ribbentrop Pact]] between the USSR and Nazi Germany in August 1939, in which the Red Army allied with Nazi Germany to invade Poland and [[Polish areas annexed by the Soviet Union|incorporate Volhynia and Galicia into the Ukrainian SSR]]. In June 1941, Germany and its allies [[Operation Barbarossa|invaded the Soviet Union]] and conquered Ukraine completely within the first year of the conflict. Following the Soviet victory in [[World War II]], to which [[Ukrainians]] greatly contributed, the region of [[Carpathian Ruthenia]] – formerly a part of [[Lands of the Crown of Saint Stephen|Hungary]] before 1919, of [[First Czechoslovak Republic|Czechoslovakia]] from 1919 to 1939 and again of [[Kingdom of Hungary (1920–1946)|Hungary]] between 1939 and 1945 – was incorporated into the Ukrainian SSR, as were [[Territorial changes of Poland after World War II|parts of pre-war Poland]]. The final expansion of Ukraine took place in 1954, when the [[Crimea]] was [[1954 transfer of Crimea|transferred to Ukraine]] from Russia with the approval of [[General Secretary of the Communist Party of the Soviet Union|Soviet leader]] [[Nikita Khrushchev]]. ||| Aftermath ||| ||| +0 Ukrainian parliamentary election, 2014 ||| 2014 Ukrainian revolution ||| The parliamentary coalition that supported the [[First Yatsenyuk Government|Yatsenyuk Government]], formed in the aftermath of the [[2014 Ukrainian revolution]] and of the [[Euromaidan]] movement, was dissolved on 24 July. On the same day as the dissolution, the [[Sovereign European Ukraine]] faction submitted a bill to the Rada that called for elections to take place on 28 September 2014. ||| Background ||| ||| +0 Ukrainian parliamentary election, 2014 ||| War in Donbass ||| In the election campaign the parties positions on foreign relations and the [[War in Donbass]] could be roughly divided into two groups. ||| Campaign ||| ||| +0 Ukrainian presidential election, 2014 ||| 2014 Ukrainian revolution ||| |colspan='12' style='background:#D0D0D0; color:black' | '''[[2014 Ukrainian revolution|Yanukovych ouster]]''' and '''[[2014 Crimean crisis|Crimean crisis]]''' ||| Opinion polls ||| First round ||| +0 Ulm Campaign ||| Battle of Trafalgar ||| As the Austrians were marching out of Ulm to surrender, a combined Franco-Spanish fleet was being destroyed at the [[Battle of Trafalgar]]. This decisive [[United Kingdom of Great Britain and Ireland|British]] victory ended the naval threat from France and ensured British naval domination until [[World War I]]. Despite this setback, the Ulm Campaign had been a spectacular victory and had witnessed the elimination of an entire Austrian army at very little cost for the French. The 8th bulletin of the Grande Armée described the scale of the achievement: ||| Aftermath ||| ||| +0 Ulm Campaign ||| Capitulation of Dornbirn ||| [[Pierre Augereau|Marshal Augereau]]'s arrival from [[Brest, France|Brest]] with the newly formed [[VII Corps (Grande Armée)|VII Corps]] gave the French one more piece of good news. In the [[Capitulation of Dornbirn]] on 13 November, [[Franjo Jelačić]]'s division was cornered and forced to surrender. The Russians withdrew to the northeast after Mack's capitulation and Vienna fell on November 12. The Allies were thoroughly defeated at the Battle of Austerlitz in December and Austria was permanently knocked out of the Third Coalition a few weeks later. The French victory highlighted the effectiveness of ''la manoeuvre sur les derrières'', a special type of strategic envelopment first used by Napoleon in his Italian campaign in 1796. The maneuver called for a pinning force that would occupy a broad front of the enemy line while other supporting units positioned themselves at a specific location in the enemy's flank or rear. As the enemy became more embroiled with the pinning force, the flanking troops would attack at a critical spot and seal the victory. In the Ulm Campaign, Murat's cavalry served as the pinning force that fooled the Austrians into thinking the main French attack would come from the Black Forest. As Murat lulled the Austrians towards Ulm, the main French forces crashed through Central Germany and separated Mack's army from the other theaters of the war. ||| Aftermath ||| ||| +0 Ulm Campaign ||| Schlieffen Plan ||| The '''Ulm Campaign''' consisted of a series of [[First French Empire|French]] and [[Electorate of Bavaria|Bavarian]] military maneuvers and battles to outflank and capture an [[Austrian Empire|Austrian]] army in 1805 during the [[War of the Third Coalition]]. It took place in the vicinity of and inside the [[Swabia]]n (then [[Bavaria]]n) city of [[Ulm]]. The French [[La Grande Armée|Grande Armée]], led by [[Napoleon I of France|Napoleon Bonaparte]], comprised 210,000 troops organized into seven [[corps]], and hoped to knock out the Austrian army in the [[Danube]] before [[Russian Empire|Russian]] reinforcements could arrive. Through rapid marching, Napoleon conducted a large wheeling maneuver that captured an Austrian army of 23,000 under [[Karl Freiherr Mack von Leiberich|General Mack]] on October 20 at Ulm, bringing the total number of Austrian [[prisoner of war|prisoners]] in the campaign to 60,000. The campaign is generally regarded as a strategic masterpiece and was influential in the development of the [[Schlieffen Plan]] in the late 19th century. ||| ||| ||| +0 Uman–Botoșani Offensive ||| Kamenets-Podolsky pocket ||| The 40th Army of the 2nd Ukrainian Front, that advanced along the east bank of the Dniester, was given the task of cutting off withdrawal routes to the south to the 1st Panzer Army, by collaborating with troops of the 1st Ukrainian Front in eliminating 1st Ukrainian Front encirclement of German troops at [[Kamianets-Podilskyi]] (Kamenets-Podolsk) (see [[Kamenets-Podolsky pocket|Proskurov-Chernovtsy Offensive]] operation). Deflecting an attempted German counter-attack at [[Khotyn]], they pressed home the attack from the bridgehead to Dniester, the 27th and 52nd armies together with detachments of the 2nd and 6th tank armies advanced to the river [[Prut]], and on 26 March reached the State border of the USSR on an 85 km front north of [[Ungheni]] (Ungen). ||| The offensive ||| ||| +0 Underage Festival ||| Iraq War ||| *XX Teens set featured an appearance by famous [[anti-war]] protestor [[Brian Haw]], who is currently the longest residing resident of the [[peace camp]] situated outside [[Parliament Square]]. Following set-closer 'For Brian Haw', Haw gave a ten-minute speech regarding the [[Iraq War|War in Iraq]]. ||| 2008 Festival ||| ||| +0 Union blockade ||| Battle of Hampton Roads ||| In early March 1862, the blockade of the James River in Virginia was gravely threatened by the first ironclad, [[CSS Virginia|CSS ''Virginia'']] in the dramatic [[Battle of Hampton Roads]]. Only the timely entry of the new Union [[ironclad]] {{USS|Monitor||2}} forestalled the threat. Two months later, ''Virginia'' and other ships of the [[James River Squadron]] were scuttled in response to the Union Army and Navy advances. ||| Major engagements ||| ||| +0 Union blockade ||| Battle of Mobile Bay ||| The [[Battle of Mobile Bay]] on 5 August 1864 closed the last major Confederate port in the Gulf of Mexico. ||| Major engagements ||| ||| +0 United Kingdom general election, 1983 ||| Battle of the Somme ||| The campaign displayed the huge divisions between the two major parties. Thatcher had been extremely unpopular during her first two years in office until the swift and decisive victory in the Falklands War, coupled with an improving economy, considerably raised her standings in the polls. The Conservatives' key issues included employment, economic growth and defence. Labour's campaign manifesto involved leaving the [[European Economic Community]], abolishing the [[House of Lords]], abandoning the [[United Kingdom]]'s nuclear deterrent by cancelling [[UK Trident programme|Trident]] and removing cruise missiles, a programme dubbed by Labour MP [[Gerald Kaufman]] [[The longest suicide note in history|'the longest suicide note in history']]. 'Although, at barely 37 pages, it only seemed interminable', noted [[Roy Hattersley]]. Pro-Labour political journalist [[Michael White (journalist)|Michael White]], writing in ''[[The Guardian]]'', commented, 'There was something magnificently brave about [[Michael Foot]]'s campaign but it was like the [[Battle of the Somme]]'. ||| Background and campaign ||| ||| +0 United States Air Force In South Korea ||| Battle of Pusan Perimeter ||| Despite repeated air attacks by UN aircraft on the advancing North Korean troops, by early September the UN armies had been squeezed down into a small area south of the Naktong River, called the '[[Battle of Pusan Perimeter|Pusan Perimeter]]', and there was a very real fear that the hard-pressed UN troops might be forced to evacuate the entire Korean peninsula. In late July, MacArthur agreed to divert the B-29s to interdiction raids against North Korean targets nearer the [[38th parallel north|38th parallel]] in an attempt to interrupt supplies being delivered to North Korean troops in the south. ||| History ||| Korean War ||| Initial USAF Response +0 United States Air Force in Thailand ||| Laotian Civil War ||| USAF combat sorties from Thailand flown into both [[North Vietnam]] and [[South Vietnam]] grew as the Vietnam War expanded in the 1960s. In addition, combat missions were flown aiding friendly forces in Laos and, starting in 1970, [[Cambodia]] were also flown. The missions flown over Laos are today referred to as the [[Laotian Civil War|Secret War]]. ||| Vietnam War ||| The 'Secret War' in Laos ||| +0 United States Air Force in Thailand ||| World War II ||| Despite these denials, however, the Secret War was actually the largest U.S. [[covert operation]] prior to the [[Afghan-Soviet War]], with areas of Laos controlled by North Vietnam subjected to three million tons of bombing, representing the heaviest U.S.-led bombing campaign since [[World War II]]. ||| Vietnam War ||| The 'Secret War' in Laos ||| +0 United States Army Air Forces in Australia ||| Battle of the Coral Sea ||| * On 7 December 1941 (8 December in the Philippines), when the Japanese first attacked [[Clark AB|Clark Field]], the '''19th Bombardment Group''' suffered numerous casualties and lost many planes. Late in December the air echelon moved to Australia to transport medical and other supplies to the Philippine Islands and evacuate personnel from that area. The men in Australia moved to [[Java]] at the end of 1941 and, flying [[B-17 Flying Fortress]], [[B-24|LB-30]], and [[B-24 Liberator]] aircraft, earned a [[Distinguished Unit Citation]] for the group by attacking enemy aircraft, ground installations, warships, and transports during the Japanese drive through the [[Philippines]] and [[Netherlands Indies]] early in 1942. The men returned to Australia from Java early in March 1942, and later that month the group evacuated [[Douglas MacArthur|Gen Douglas MacArthur]], his family, and key members of his staff from the Philippines to Australia. After a brief rest the group resumed combat operations, participating in the [[Battle of the Coral Sea]] and raiding Japanese transportation, communications, and ground forces during the enemy's invasion of [[Papua New Guinea]]. From 7 to 12 August 1942 the 19th bombed airdromes, ground installations, and shipping near [[Rabaul]], [[New Britain]], being awarded another DUC for these missions. [[Harl Pease|Captain Harl Pease, Jr.]] was posthumously awarded the [[Medal of Honor]] for his actions during 6–7 August 1942: when one engine of his bomber failed during a mission over [[New Britain]], Captain Pease returned to Australia to obtain another plane; unable to find one fit for combat, he selected the most serviceable plane at the base and rejoined his squadron for an attack on a Japanese airdrome near [[Rabaul]]. By skillful flying he maintained his position in the formation and withstood enemy attacks until his bombs had been released on the objective; in the air battle that continued after the bombers left the target, Captain Pease's aircraft fell behind the formation and was lost. The group returned to the US late in 1942. ||| Historical notes ||| ||| +0 United States Army Air Forces in Australia ||| Woodstock ||| * [[Donnington Airpark|Donnington Airfield]], [[Woodstock]], [[Queensland]] ||| Airfields and unit assignments ||| ||| +0 United States Army Air Forces in Okinawa ||| Operation Downfall ||| With the conquest of Okinawa, the United States obtained a key location to launch an [[Operation Downfall|invasion]] of the [[Japanese Archipelago|Japanese Home Islands]], planned for November 1945. Base development plans were drawn up to provide for 18 runways on Okinawa and three on [[Ie Shima Airfield|Ie Shima]], instead of the eight and two originally planned respectively for the two islands. Construction of airfields on Okinawa was to center on the provision of facilities for [[B-29 Superfortress]] operations, while Ie Shima was to be developed primarily as a base for Very Long Range (VLR) [[P-47 Thunderbolt|P-47N Thunderbolt]] and [[P-51 Mustang|P-51H Mustang]] fighter escorts. ||| Airfield development ||| ||| +0 United States Army Air Forces in Okinawa ||| Pacific War ||| The [[Battle of Okinawa]] was the last major ground battle between the armed forces of the [[Empire of Japan]] and the United States of the [[Pacific War]]. ||| ||| ||| +0 United States Army Air Forces in the Central Pacific Area ||| Battle of Midway ||| .* Detachments deployed for use in [[Battle of Midway]] ||| Airfields and unit assignments ||| ||| +0 United States Army Air Forces in the Central Pacific Area ||| Operation Downfall ||| In September 1945, just after the [[Surrender of Japan]], a few advance elements of [[Eighth Air Force]] arrived on [[Tinian]] and [[Guam]]. Eighth Air Force was transferred from England to be a second strategic air force in the [[Pacific War]], with a mission to carry out B-29 attacks on the [[Japanese Archipelago|Japanese Home Islands]] during the planned [[Operation Downfall|Invasion of Japan]] beginning in November 1945. These advance units were reassigned to other stations in December 1945. ||| ||| ||| +0 United States Army Air Forces in the Central Pacific Area ||| Pacific War ||| In September 1945, just after the [[Surrender of Japan]], a few advance elements of [[Eighth Air Force]] arrived on [[Tinian]] and [[Guam]]. Eighth Air Force was transferred from England to be a second strategic air force in the [[Pacific War]], with a mission to carry out B-29 attacks on the [[Japanese Archipelago|Japanese Home Islands]] during the planned [[Operation Downfall|Invasion of Japan]] beginning in November 1945. These advance units were reassigned to other stations in December 1945. ||| ||| ||| +0 United States Capitol cornerstone laying ||| Burning of Washington ||| The precise location of the cornerstone was lost during the two centuries following the ceremony due to [[Burning of Washington|attack]] and multiple expansions of the original building. In 1993, Architect of the Capitol [[George M. White|George White]], following a protracted search involving the use of ground-penetrating radar, electromagnetic induction and induced polarization, announced he had found a large stone buried beneath one section of the foundation that was 'obviously a ceremonial stone,' and declared it was probably the cornerstone of the building. No sign of the original silver plaque was discovered, and experts believe it may have been dislodged and destroyed during the 1850 construction of the Senate chambers. ||| Subsequent history ||| Artifacts ||| +0 United States House of Representatives elections in California, 2008 ||| Iraq War ||| The eighth congressional district has been represented by Democrat [[Nancy Pelosi]] since 1993, when the area was redistricted from the 5th congressional district. Pelosi, who is [[Speaker of the United States House of Representatives|Speaker of the House]], is considered safe for re-election, but [[Iraq War]] activist [[Cindy Sheehan]] announced that she would consider running against Pelosi if Pelosi did not put in an article of impeachment against [[President of the United States|President]] [[George W. Bush]] and [[Vice President of the United States|Vice President]] [[Dick Cheney]]. ||| Results ||| District 8 ||| +0 United States Senate election in Illinois, 2004 ||| Iraq War ||| Obama touted his legislative experience and early public opposition to the [[Iraq War]] to distinguish himself from his Democratic primary rivals. Illinois Comptroller [[Daniel Hynes|Dan Hynes]] won the endorsement of the [[AFL-CIO]]. Obama succeeded in obtaining the support of three of the state's largest and most active member unions: [[American Federation of State, County and Municipal Employees|AFSCME]], [[Service Employees International Union|SEIU]], and the [[American Federation of Teachers|Illinois Federation of Teachers]]. Hynes and multimillionaire former securities trader [[Blair Hull]] each won the endorsements of two of nine Democratic Illinois congressmen. Obama had the endorsements of four: [[Jesse Jackson, Jr.]], [[Danny K. Davis|Danny Davis]], [[Lane Evans]], and [[Jan Schakowsky]]. ||| Democratic primary ||| Campaign ||| +0 United States Senate elections, 2010 ||| Battle of Waterloo ||| Incumbent Republican [[Jim DeMint]] was elected with 54% in 2004. DeMint was easily renominated. He stated in July 2009 that the defeat of health care reform would be Obama's [[Battle of Waterloo|Waterloo]]. In a surprise, unemployed military veteran [[Alvin Greene]] won the Democratic primary. Greene reported no fundraising by mid-October and made few campaign appearances. [[Tom Clements (politician)|Tom Clements]] ran as the candidate of the [[Green Party (United States)|Green Party]]. DeMint won re-election with 61.48%. ||| Complete list of races ||| South Carolina ||| +0 United States gubernatorial elections, 2010 ||| Iraq War ||| [[Governor of Guam|Governor]] [[Felix Camacho]] is term-limited in 2010. [[Lieutenant Governor of Guam|Lieutenant Governor]] [[Michael W. Cruz]], a surgeon who is a veteran of the [[Gulf War]] and [[Iraq War]], is running for the Republican nomination against [[Guam Legislature|Senator]] Eddie B. Calvo. On the Democratic side, former governor [[Carl Gutierrez]] has announced that he will run. Attorney Mike Phillips is also considering a bid for the governorship. ||| Election summaries ||| Retiring or term-limited Republican governors ||| Felix Camacho (Guam) +0 United States presidential election, 1848 ||| Siege of Fort Harrison ||| File:Fort Harrison March.jpg |Artwork for '[[Media:Fort Harrison March.mid|Fort Harrison March]],' a campaign song for Zachary Taylor's presidential campaign which recalled his triumph at the [[Siege of Fort Harrison]] in 1812. ||| General election ||| Campaign ||| +0 United States presidential election, 1864 ||| Battle of Gettysburg ||| The Democratic Party was bitterly split between War Democrats and [[Peace Democrats]], who further divided among competing factions. Moderate Peace Democrats who supported the war against the Confederacy, such as [[Horatio Seymour]], were preaching the wisdom of a negotiated peace. After the [[Battle of Gettysburg]], when it was clear the South could no longer win the war, moderate Peace Democrats proposed a negotiated peace that would secure Union victory. They believed this was the best course of action, because an armistice could finish the war without devastating the South. ||| Nominations ||| Democratic Party nomination ||| Democratic Party Vice-Presidential candidates gallery +0 United States presidential election, 1864 ||| Battle of the Crater ||| For much of 1864, Lincoln himself believed he had little chance of being re-elected. Confederate forces had triumphed at the [[Battle of Mansfield]], the [[Battle of the Crater]], and the [[Battle of Cold Harbor]]. In addition, the war was continuing to take a very high toll in terms of casualties. The prospect of a long and bloody war started to make the idea of 'peace at all cost' offered by the [[Copperheads (politics)|Copperheads]] look more desirable. Because of this, McClellan was thought to be a heavy favorite to win the election. Unfortunately for Lincoln, Frémont's campaign got off to a good start. ||| General election ||| ||| +0 United States presidential election, 1868 ||| Battle of Gettysburg ||| Seymour answered none of the charges made against him, but made a few key speeches. Some newspapers exaggerated his faults. As governor, Seymour had sent troops to [[Battle of Gettysburg|Gettysburg]], but some press tried to portray him as disloyal to the Union. The ''[[New York Tribune]]'' led the cartoon campaign with the picture of Seymour standing on the steps of the City Hall calling a mob of [[New York Draft Riots|New York draft rioters]] 'my friends.' The ''Hartford Post'' called him 'almost as much of a corpse' as ex-President [[James Buchanan]], who had just died. Additionally, Republicans alleged that insanity ran through the Seymour family, citing as evidence the suicide of his father. ||| General election ||| Campaign ||| +0 United States presidential election, 1944 ||| Battle of Leyte Gulf ||| The Republicans campaigned against the [[New Deal]], seeking a smaller government and less-regulated economy as the end of the war seemed in sight. Nonetheless, Roosevelt's continuing popularity was the main theme of the campaign. To quiet rumors of his poor health, Roosevelt insisted on making a vigorous campaign swing in October and rode in an open car through city streets. A high point of the campaign occurred when Roosevelt, speaking to a meeting of [[Trade union|labor union]] leaders, gave a speech carried on national radio in which he ridiculed Republican claims that his administration was corrupt and wasteful with tax money. He particularly ridiculed a Republican claim that he had sent a US Navy warship to pick up his [[Scottish Terrier]] [[Fala (dog)|Fala]] in Alaska, noting that 'Fala was furious' at such rumors. The speech was met with loud laughter and applause from the labor leaders. In response, Dewey gave a blistering partisan speech in [[Oklahoma City|Oklahoma City, Oklahoma]], a few days later on national radio, in which he accused Roosevelt of being 'indispensable' to corrupt big-city Democratic organizations and [[American Communists]]; he also referred to members of Roosevelt's cabinet as a 'motley crew'. However, American battlefield successes in Europe and the Pacific during the campaign, such as the [[liberation of Paris]] in August 1944 and the successful [[Battle of Leyte Gulf]] in the [[Philippines]] in October 1944, made Roosevelt unbeatable. ||| General election ||| The Fall Campaign ||| +0 United States presidential election, 2004 timeline ||| 2003 invasion of Iraq ||| *May 3 - Democrats meet at the [[University of South Carolina]], located in [[Columbia, South Carolina]], in the first formal debate between the nine challengers for the 2004 [[Democratic Party (United States)|Democratic party]] presidential nomination. The candidates disagree on the [[2003 invasion of Iraq|war against Iraq]], health insurance, and even President Bush's tax cuts, but unite in criticizing Bush's handling of the economy. ||| 2003 ||| May 2003 ||| +0 United States presidential election, 2008 ||| Iraq War ||| The incumbent [[President of the United States|president]], [[George W. Bush]], was ineligible to be elected to a third term due to term limits in the [[Twenty-second Amendment to the United States Constitution]]. McCain secured the Republican nomination by March 2008, but the Democratic nomination was marked by a sharp contest between Obama and initial front-runner Senator [[Hillary Clinton]], with Obama not securing the nomination until early June. Early campaigning had focused heavily on the [[Iraq War]] and the unpopularity of outgoing Republican President George W. Bush, but all candidates focused on domestic concerns as well, which grew more prominent as the economy experienced the onset of the [[Great Recession]] and a [[Financial crisis of 2007–08|major financial crisis that peaked in September 2008]]. ||| ||| ||| +0 United States presidential election, 2012 ||| Iraq War ||| As the incumbent president, Obama secured the Democratic nomination with no serious opposition. The Republican Party was more fractured; Mitt Romney was consistently competitive in the polls, but faced challenges from a number of more conservative contenders whose popularity each fluctuated, often besting Romney's. Romney effectively secured the nomination by early May as the economy improved, albeit at a persistently laggard rate. The campaign was marked by a sharp rise in fundraising, including from new nominally independent [[Super PACs]]. The campaigns focused heavily on domestic issues: debate centered largely around sound responses to the [[Great Recession]] in terms of economic recovery and job creation. Other issues included long-term federal budget issues, the future of [[social insurance|social insurance programs]], and the [[Patient Protection and Affordable Care Act|Affordable Care Act]]. [[Foreign policy]] was also discussed including the phase-out of the [[Iraq War]], the size of and spending on the military, preventing Iran from obtaining nuclear weapons, and appropriate counteractions to terrorism. ||| ||| ||| +0 Upper Canada Rebellion ||| French Revolution ||| The '''Upper Canada Rebellion''' was an insurrection against the [[Oligarchy|oligarchic]] government of the British colony of [[Upper Canada]] (present day [[Ontario]]) in December 1837. While public grievances had existed for years, it was the [[Lower Canada Rebellion|Rebellion]] in [[Lower Canada]] (present day [[Quebec]]) that emboldened rebels in Upper Canada to openly revolt soon after. The Upper Canada Rebellion was largely defeated shortly after it began, although resistance lingered until 1838 (and became more violent) - mainly through the support of the [[Hunters' Lodges]], a secret anti-British, US-based militia that emerged around the [[Great Lakes]]. They launched the [[Patriot War]] in 1838-39. The rebellion led directly to [[John Lambton, 1st Earl of Durham|Lord Durham]]'s [[Report on the Affairs of British North America]] and to ''[[Act of Union 1840|The British North America Act, 1840]]'' which partially reformed the British provinces into a unitary system. Some historians argue that the rebellions in 1837 should be viewed in the wider context of the late 18th and early 19th century [[Atlantic Revolutions|Atlantic revolutions]]. The [[American Revolutionary war]] in 1776, the [[French Revolution]] of 1789–1799, the [[Haitian Revolution]] of 1791-1804, the [[Irish Rebellion of 1798]], and the independence struggles of Spanish America (1810–1825) were inspired by similar democratic ideals, although they were tinged with [[republicanism]] as well. Great Britain's [[Chartism|Chartists]] sought similar democratic goals. ||| ||| ||| +0 Upper Canada Rebellion ||| Haitian Revolution ||| The '''Upper Canada Rebellion''' was an insurrection against the [[Oligarchy|oligarchic]] government of the British colony of [[Upper Canada]] (present day [[Ontario]]) in December 1837. While public grievances had existed for years, it was the [[Lower Canada Rebellion|Rebellion]] in [[Lower Canada]] (present day [[Quebec]]) that emboldened rebels in Upper Canada to openly revolt soon after. The Upper Canada Rebellion was largely defeated shortly after it began, although resistance lingered until 1838 (and became more violent) - mainly through the support of the [[Hunters' Lodges]], a secret anti-British, US-based militia that emerged around the [[Great Lakes]]. They launched the [[Patriot War]] in 1838-39. The rebellion led directly to [[John Lambton, 1st Earl of Durham|Lord Durham]]'s [[Report on the Affairs of British North America]] and to ''[[Act of Union 1840|The British North America Act, 1840]]'' which partially reformed the British provinces into a unitary system. Some historians argue that the rebellions in 1837 should be viewed in the wider context of the late 18th and early 19th century [[Atlantic Revolutions|Atlantic revolutions]]. The [[American Revolutionary war]] in 1776, the [[French Revolution]] of 1789–1799, the [[Haitian Revolution]] of 1791-1804, the [[Irish Rebellion of 1798]], and the independence struggles of Spanish America (1810–1825) were inspired by similar democratic ideals, although they were tinged with [[republicanism]] as well. Great Britain's [[Chartism|Chartists]] sought similar democratic goals. ||| ||| ||| +0 Upper Canada Rebellion ||| Irish Rebellion of 1798 ||| The '''Upper Canada Rebellion''' was an insurrection against the [[Oligarchy|oligarchic]] government of the British colony of [[Upper Canada]] (present day [[Ontario]]) in December 1837. While public grievances had existed for years, it was the [[Lower Canada Rebellion|Rebellion]] in [[Lower Canada]] (present day [[Quebec]]) that emboldened rebels in Upper Canada to openly revolt soon after. The Upper Canada Rebellion was largely defeated shortly after it began, although resistance lingered until 1838 (and became more violent) - mainly through the support of the [[Hunters' Lodges]], a secret anti-British, US-based militia that emerged around the [[Great Lakes]]. They launched the [[Patriot War]] in 1838-39. The rebellion led directly to [[John Lambton, 1st Earl of Durham|Lord Durham]]'s [[Report on the Affairs of British North America]] and to ''[[Act of Union 1840|The British North America Act, 1840]]'' which partially reformed the British provinces into a unitary system. Some historians argue that the rebellions in 1837 should be viewed in the wider context of the late 18th and early 19th century [[Atlantic Revolutions|Atlantic revolutions]]. The [[American Revolutionary war]] in 1776, the [[French Revolution]] of 1789–1799, the [[Haitian Revolution]] of 1791-1804, the [[Irish Rebellion of 1798]], and the independence struggles of Spanish America (1810–1825) were inspired by similar democratic ideals, although they were tinged with [[republicanism]] as well. Great Britain's [[Chartism|Chartists]] sought similar democratic goals. ||| ||| ||| +0 Upper Canada Rebellion ||| Lower Canada Rebellion ||| The '''Upper Canada Rebellion''' was an insurrection against the [[Oligarchy|oligarchic]] government of the British colony of [[Upper Canada]] (present day [[Ontario]]) in December 1837. While public grievances had existed for years, it was the [[Lower Canada Rebellion|Rebellion]] in [[Lower Canada]] (present day [[Quebec]]) that emboldened rebels in Upper Canada to openly revolt soon after. The Upper Canada Rebellion was largely defeated shortly after it began, although resistance lingered until 1838 (and became more violent) - mainly through the support of the [[Hunters' Lodges]], a secret anti-British, US-based militia that emerged around the [[Great Lakes]]. They launched the [[Patriot War]] in 1838-39. The rebellion led directly to [[John Lambton, 1st Earl of Durham|Lord Durham]]'s [[Report on the Affairs of British North America]] and to ''[[Act of Union 1840|The British North America Act, 1840]]'' which partially reformed the British provinces into a unitary system. Some historians argue that the rebellions in 1837 should be viewed in the wider context of the late 18th and early 19th century [[Atlantic Revolutions|Atlantic revolutions]]. The [[American Revolutionary war]] in 1776, the [[French Revolution]] of 1789–1799, the [[Haitian Revolution]] of 1791-1804, the [[Irish Rebellion of 1798]], and the independence struggles of Spanish America (1810–1825) were inspired by similar democratic ideals, although they were tinged with [[republicanism]] as well. Great Britain's [[Chartism|Chartists]] sought similar democratic goals. ||| ||| ||| +0 Upper Canada Rebellion ||| Newport Rising ||| This union was reorganized as the Canadian Alliance Society in 1835. It shared a large meeting space in the market buildings with the Mechanics Institute and the [[The Children of Peace|Children of Peace]]. The Canadian Alliance Society adopted much of the platform (such as secret ballot & universal suffrage) of the [[Owenite]] National Union of the Working Classes in London, England, that were to be integrated into the [[Chartism|Chartist]] movement in England. In pursuit of this democratic goal, the Chartists eventually staged a similar armed rebellion, the [[Newport Rising]], in Wales in 1839. ||| Reform movement and rebellion organization ||| Political unions ||| +0 Uprising in Serbia (1941) ||| Operation Barbarossa ||| The German [[Operation Barbarossa|invasion of the Soviet Union]] was launched on 22 June 1941. Before the invasion, the Germans withdrew the majority of their troops from Serbia, leaving three weak divisions in Serbia (the [[104th Jäger Division (Wehrmacht)|704th]], [[114th Jäger Division (Wehrmacht)|714th]] and [[117th Jäger Division (Wehrmacht)|717th Infantry Divisions]]) and one weak division (the [[118th Jäger Division (Wehrmacht)|718th Infantry Division]]) in the Independent State of Croatia. The majority of these divisions were made up by older soldiers originating from Austria. Communist sympathisers in [[Srđan Budisavljević]]'s Ministry of Interior in [[Dušan Simović]]'s government, such as [[Janko Janković]], destroyed files on communists held in prewar police archives. So, when mass arrests of communists began after the launching of Operation Barbarosa, few records were available for the [[Gestapo]] to use. The communists then considered that all the requirements for the uprising were now met. ||| Preparations for the uprising ||| Communists ||| +0 Uprising in Serbia (1941) ||| Operation Uzice ||| Nebojša Jerković, a commander of Mačva partisan detachment, visited Chetnik captain [[Dragoslav Račić]], a commander of Cer Corp in order to reach agreement on joint attack on [[Šabac]]. Number of soldiers in Mačva partisan detachment drop to half on initial troops. Deployment of [[342nd Infantry Division (Wehrmacht)|342nd German Division]] marked beginning of [[Operation Uzice|big German counter-offensive]] on liberated territory. ||| Resistance begins ||| Chetniks join the uprising ||| Battle of Šabac +0 Uprising in Serbia (1941) ||| Spanish Civil War ||| For the beginning of the uprising is taken armed action of Rađevina partisan detachment on 7 July 1941 in [[Bela Crkva, Krupanj|Bela Crkva]] near [[Krupanj]]. In Bela Crkva was held the traditional [[Nativity of St. John the Baptist|Ivanjdan]] midsummer village fair. There came a group of fifteen partisans, led by commander [[Miša Pantić]] and [[political commissar]] [[Žikica Jovanović Španac]]. Partisans gathered people and called them to join in fight against the German invaders. Speech was given by Pantić, a doctor from Valjevo, and Jovanović, a journalist from Valjevo and [[International Brigades|combatant]] from [[Spanish Civil War]]. Gendarmes [[Bogdan Lončar]] and Milenko Braković tried to break up the gathering, forbidden under conditions of military occupation. The partisans opened fire and killed both gendarmes. ||| Resistance begins ||| ||| +0 Uzbin Valley ambush ||| 1983 Beirut barracks bombing ||| The battle itself was unexceptional in 2008 Afghanistan: the same day, tens of civilians were killed by a car bomb in Khost, and suicide bombers had attacked US military installation, yielding a 12-hour battle. Two days later, a [[Azizabad airstrike|US airstrike on Azizabad]] killed 90 civilians, 60 of them children. However, the loss of life for the [[French Army]] represented the most significant single incident since the [[1983 Beirut barracks bombing]], which killed 58 soldiers, and the third greatest single military loss since [[Operation Red Wings]]. ||| Aftermath ||| Casualties ||| +0 Valley of Tears ||| Six-Day War ||| The Golan Heights are made up of a 1240-square-kilometre volcanic (basalt) rock plateau perched above the [[Hula Valley]] and the [[Sea of Galilee]] to the west, the [[Yarmouk River|Yarmouk Valley]] to the south, and bordering on [[Mount Hermon]] to the north. Israel in the [[Six-Day War|1967 war]] had advanced against the routed Syrians until a defensible line was reached, a string of extinct volcano cones that commands strategic views of all northern [[Israel]] on one side and of [[Damascus]] on the other. The 1967 cease-fire line was known as the [[Purple Line (ceasefire line)|Purple Line]], and marked the end of the [[no man's land]] separating [[Syria]] from the now Israeli-occupied part of the Golan, comprising the western two-thirds of the region. Lacking a true defensive barrier, the Israelis had dug a 32-kilometre-long anti-tank ditch along the border from Mount Hermon to [[Al Rafeed (Golan)|Rafid]], an obstacle Syrian armor would be forced to cross under fire from Israeli tanks positioned behind ramparts. ||| ||| ||| +0 Vietnam War ||| Japanese invasion of French Indochina ||| In 1940, during World War II, the [[Battle of France|French were defeated by the Germans]]. The [[Vichy France|French State]] (commonly known as Vichy France) was established as a [[client state]] of [[Nazi Germany]]. The French colonial authorities, in French Indochina, sided with the Vichy regime. In September 1940, Japan [[Japanese invasion of French Indochina|invaded Indochina]]. Following the cessation of fighting and the beginning of the Japanese occupation, the French colonial authorities collaborated with the Japanese. The French continued to run affairs in Indochina, but ultimate power resided in the hands of the Japanese. ||| Background to 1949 ||| ||| +0 Vietnam War ||| Sino-Vietnamese War ||| The Khmer Rouge launched ferocious raids into Vietnam in 1975–1978. When Vietnam responded with an invasion that toppled the Khmer Rouge, China launched a brief, punitive [[Sino-Vietnamese War|invasion of Vietnam in 1979]]. ||| Other countries' involvement ||| Pro-Hanoi ||| People's Republic of China +0 Villarreal Offensive ||| Biscay Campaign ||| The offensive failed and the Basques did not occupy Villareal, although the Basque forces occupied the mountains of ''Maroto'', ''Albertia'' and ''Jarinto'', until the start of the [[Biscay Campaign]]. ||| Aftermath ||| ||| +0 Villarreal Offensive ||| Siege of Madrid ||| In 1936, the [[Basque Country (autonomous community)|Basque]] [[José Antonio Aguirre (politician)|Aguirre]]'s government organized its own independent army, the [[Eusko Gudarostea]], with 25,000 men. Nominally, the Basque Army was a part of the [[Spanish Republican Army|Republican Army]] of the North. Furthermore, the war industries were militarized and started the construction of the Bilbao's [[Iron Belt]]. In early December the Basques, launched an offensive in order to occupy [[Vitoria-Gasteiz|Vitoria]], the capital city of the [[Alava]] province, and reduce the Nationalist pressure on [[Siege of Madrid|Madrid]]. ||| Background ||| ||| +0 Vilnius Offensive ||| Operation Ostra Brama ||| The battle was also marked by an uprising under the code-name [[Operation Ostra Brama]] by the Polish Home Army, in expectation of the arrival of the Red Army, as part of [[Operation Tempest]]. The accounts of the battle given by the Home Army differ from the official Soviet account, particularly with regard to the date of Soviet entry into Vilnius. ||| The battle for Vilnius ||| Contribution by the Polish Home Army ||| +0 Vistula–Oder Offensive ||| Operation Solstice ||| ''[[Stavka]]'' declared the operation complete on 2 February. Zhukov had initially hoped to advance directly on Berlin, as the German defences had largely collapsed. However the exposed northern flank of 1st Belorussian Front in [[Pomerania]], along with a German counter-attack ([[Operation Solstice]]) against its spearheads, convinced the Soviet command that it was essential to clear German forces from Pomerania in the [[East Pomeranian Offensive]] before the Berlin offensive could proceed. ||| The offensive ||| Zhukov's advance to the Oder ||| +0 Volcano and Ryukyu Islands campaign ||| Operation Downfall ||| The campaign was part of the Allied [[Japan campaign]] intended to provide staging areas for an [[Operation Downfall|invasion]] of Japan as well as supporting aerial bombardment and a naval blockade of the Japanese mainland. The dropping of [[Atomic bombing of Hiroshima and Nagasaki|atomic weapons]] on two Japanese cities and the hammer-blow Soviet invasion of Japanese Manchuria, however, caused the Japanese government to [[Surrender of Japan|surrender]] without an armed invasion being necessary. ||| ||| ||| +0 Volleyball at the 2004 Summer Paralympics ||| Bosnian War ||| The tournament brought [[Bosnia and Herzegovina]] their first ever Paralympic gold medal. Their team consisted of players injured in the [[Bosnian War|War of 1992-95]]. ||| ||| ||| +0 Vukovar massacre ||| World War II ||| The '''Vukovar massacre''', also known as the '''Vukovar hospital massacre''' or the '''Ovčara massacre''', was the killing of Croatian [[prisoners of war]] and civilians by Serb paramilitaries and the [[Yugoslav People's Army]] (JNA) at the Ovčara farm southeast of [[Vukovar]] on 20 November 1991, during the [[Croatian War of Independence]]. The massacre occurred shortly after [[Battle of Vukovar|Vukovar's capture]] by the JNA, Croatian Serb [[Territorial Defense Forces (Yugoslavia)|Territorial Defence]] (TO), and paramilitaries from neighbouring Serbia. It was the largest massacre of the war, and the worst war crime in Europe since [[World War II]] up until that time. ||| ||| ||| +0 Vučitrn massacre ||| Kosovo War ||| The '''Vučitrn massacre''' was the mass killing of [[Kosovo Albanian]] [[refugees]] near [[Vučitrn]], during the [[Kosovo War]] on May 2, 1999. ||| ||| ||| +0 Vyborg–Petrozavodsk Offensive ||| Operation Bagration ||| The offensive continued on June 25, when the Red Army breached the [[VKT-line]] at Tali, between the [[Vyborg Bay|Viborg Bay]] and the [[Vuoksi river]]. On June 26 the Finnish president [[Risto Ryti|Ryti]] [[Ryti-Ribbentrop Agreement|gave the guarantee]] to Ribbentrop that Finland would fight to the end alongside with Germany. When it became evident that a breakthrough was not possible at Ihantala, the Leningrad Front attempted to double envelope the defenders with the twin assaults at the [[Battle of Vyborg Bay (1944)|Viborg Bay]] and [[Battle of Vuosalmi|Vuosalmi]]. However, the Finnish army was able to hold its positions on these sectors of the front. On July 12 Stavka ordered Leningrad front to release offensive elements from the Finnish front, and on July 15, the Red Army troops were ordered to assume a defensive posture, and offensive elements (mostly armor) were transferred to the German front for use in [[Operation Bagration]]. ||| Virojoki-Lappeenranta Offensive ||| ||| +0 Vyborg–Petrozavodsk Offensive ||| Winter War ||| The Finnish army had been preparing defensive fortifications since 1940, and three [[defensive line|lines of defence]] on the [[Karelian Isthmus]]. The first two were the 'Main line', which was constructed along the frontline of 1941, and the [[VT-line]] ([[Vammelsuu]]-[[Solovyovo, Priozersky District, Leningrad Oblast|Taipale]]) running 20 km behind the main line. These lines were reinforced with numerous concrete fortifications, but the work was still ongoing. The third line, the [[VKT-line]] (Viipuri-[[Kuparsaari]]-Taipale) was still on the drawing board and the construction of the fortifications began in late May 1944 at the Viborg sector of the line. At the northern bank of the [[Svir River]] ({{lang-fi|Syväri}}) the Finnish army had prepared a defence in depth area which was fortified with strong-points with concrete [[Pillbox (military)|pillboxes]], barbed wire, obstacles and trenches. After the [[Winter War]], the [[Salpa Line]] was built behind the 1940 border with concrete bunkers in front of the [[Kymi river]]. ||| The plan ||| ||| +0 Walcheren Campaign ||| Battle of Wagram ||| In July 1809, the British decided to seal the mouth of the [[Scheldt]] to prevent the port of [[Antwerp]] being used as a base against them. The primary aim of the campaign was to destroy the [[First French Empire|French]] fleet thought to be in [[Flushing, Netherlands|Flushing]] whilst providing a diversion for the hard-pressed Austrians. However, the [[Battle of Wagram]] had already occurred before the start of the campaign and the Austrians had effectively already lost the war. ||| Campaign ||| ||| +0 War crimes of the Wehrmacht ||| Eastern Front (World War II) ||| '''War crimes of the ''Wehrmacht''''' were those carried out by the German armed forces during [[World War II]]. While the principal perpetrators of the [[Holocaust]] amongst German armed forces were the [[Nazi Germany|Nazi German]] 'political' armies (the ''[[SS-Totenkopfverbände]]'' and particularly the ''[[Einsatzgruppen]]''), the regular armed forces represented by the ''[[Wehrmacht]]'' committed war crimes of their own, particularly on the [[Eastern Front (World War II)|Eastern Front]] in the [[Operation Barbarossa|war against the Soviet Union]]. The [[Nuremberg Trials]] at the end of World War II judged that the ''Wehrmacht'' was not an inherently criminal organization, but that it had committed crimes during the course of the war. ||| ||| ||| +0 War crimes of the Wehrmacht ||| Operation Barbarossa ||| '''War crimes of the ''Wehrmacht''''' were those carried out by the German armed forces during [[World War II]]. While the principal perpetrators of the [[Holocaust]] amongst German armed forces were the [[Nazi Germany|Nazi German]] 'political' armies (the ''[[SS-Totenkopfverbände]]'' and particularly the ''[[Einsatzgruppen]]''), the regular armed forces represented by the ''[[Wehrmacht]]'' committed war crimes of their own, particularly on the [[Eastern Front (World War II)|Eastern Front]] in the [[Operation Barbarossa|war against the Soviet Union]]. The [[Nuremberg Trials]] at the end of World War II judged that the ''Wehrmacht'' was not an inherently criminal organization, but that it had committed crimes during the course of the war. ||| ||| ||| +0 War in Afghanistan (1978–present) ||| 2012 Afghanistan Quran burning protests ||| In February 2012, a small number of American service members [[2012 Afghanistan Quran burning protests|burned several copies]] of the Quran. Some Afghans responded with massive demonstrations and riots in Kabul and other areas. Assailants killed several American military personnel, including two officers in the Interior Ministry building. ||| Islamic Republic and NATO ||| ||| +0 War in Afghanistan (1978–present) ||| Afghan parliamentary election, 2010 ||| A [[loya jirga]] (grand assembly) was convened in June 2002 by former King [[Zahir Shah]], who returned from exile after 29 years. Hamid Karzai was elected President for the two years in the jirga, in which the Afghan Interim Authority was also replaced with the Transitional Islamic State of Afghanistan (TISA). A constitutional loya jirga was held in December 2003, adopting the new [[Constitution of Afghanistan|2004 constitution]], with a presidential form of government and a bicameral legislature. Karzai was elected in the [[Afghan presidential election, 2004|2004 presidential election]] followed by winning a second term in the [[Afghan presidential election, 2009|2009 presidential election]]. Both the [[Afghan parliamentary election, 2005|2005]] and the [[Afghan parliamentary election, 2010|2010 parliamentary election]]s were also successful. ||| Islamic Republic and NATO ||| ||| +0 War in Afghanistan (1978–present) ||| Kandahar massacre ||| On March 11, 2012, an American soldier, [[Robert Bales]], killed 16 civilians in the [[Kandahar massacre]]. ||| Islamic Republic and NATO ||| ||| +0 War in Afghanistan (1978–present) ||| September 11 attacks ||| Following the [[September 11 attacks]] inside the United States in 2001, [[2001-present war in Afghanistan|NATO intervened in Afghanistan]] under [[Operation Enduring Freedom]]. The purpose of this was to defeat [[Al-Qaeda]], to remove the Taliban from power, and to create a viable democratic state. ||| ||| ||| +0 War in Afghanistan (1978–present) ||| Taliban insurgency ||| The [[UN Security Council]] established the [[International Security Assistance Force]] (ISAF) in December 2001 to provide basic security for the people of Afghanistan and assist the [[Karzai administration]]. Since 2002, the total number of ISAF and U.S. forces have climbed from 15,000 to 150,000. The majority of them belong to various branches of the [[United States armed forces]], who are not only fighting the [[Taliban insurgency]] but also training the [[military of Afghanistan]] and the [[Afghan National Police]]. They are scheduled to withdraw slowly until the end of 2014 but [[Vice President of the United States|Vice President]] [[Joe Biden]] has proposed to retain an unknown number of U.S. [[military personnel]]s after the 2014 deadline if the security situation required and the Afghan government and people desired. ||| Islamic Republic and NATO ||| ||| +0 War in Afghanistan (2001–14) ||| 2012 Afghanistan Quran burning protests ||| [[w:Video of US troops urinating on Taliban fighters|Beginning in January 2012]] incidents involving US troops also included the [[2012 Afghanistan Quran burning protests]] and the [[Kandahar massacre|Panjwai shooting spree]]. ||| Reassessment and renewed commitment from 2008 ||| 2012: Strategic Agreement ||| High-profile U.S. military incidents +0 War in Afghanistan (2001–14) ||| Azizabad airstrike ||| On 13 July 2008, a coordinated Taliban [[Battle of Wanat|attack was launched on a remote NATO base at Wanat]] in [[Kunar province]]. On 19 August, French troops suffered their worst losses in Afghanistan [[Uzbin valley ambush|in an ambush]]. Later in the month, an [[Azizabad airstrike|airstrike]] targeted a Taliban commander in Herat province and killed 90 civilians. ||| Reassessment and renewed commitment from 2008 ||| ||| +0 War in Afghanistan (2001–14) ||| Death of Osama bin Laden ||| On 2 May 2011, [[United States Navy SEALs]] [[Death of Osama bin Laden|killed Osama bin Laden]] in [[Abbotabad]], Pakistan. In May 2012, NATO leaders endorsed [[#NATO Chicago Summit: Troops withdrawal and long-term presence|an exit strategy]] for withdrawing their forces. UN-backed peace talks have since taken place between the Afghan government and the Taliban. ||| ||| ||| +0 War in Afghanistan (2001–14) ||| Iraq War ||| Admiral [[Mike Mullen]], [[Chairman of the Joint Chiefs of Staff]], said that while the situation in Afghanistan is 'precarious and urgent', the 10,000 additional troops needed there would be unavailable 'in any significant manner' unless withdrawals from [[Iraq War|Iraq]] are made. The priority was Iraq first, Afghanistan second. ||| Reassessment and renewed commitment from 2008 ||| ||| +0 War in Afghanistan (2001–14) ||| Kandahar massacre ||| [[w:Video of US troops urinating on Taliban fighters|Beginning in January 2012]] incidents involving US troops also included the [[2012 Afghanistan Quran burning protests]] and the [[Kandahar massacre|Panjwai shooting spree]]. ||| Reassessment and renewed commitment from 2008 ||| 2012: Strategic Agreement ||| High-profile U.S. military incidents +0 War in Afghanistan (2001–14) ||| September 11 attacks ||| On the morning of 11 September 2001, a total of 19 [[Arabs|Arab]] men carried out four [[September 11 attacks|coordinated attacks]] in the United States. Four commercial passenger jet airliners were hijacked. Total deaths were 2996, including the 19 hijackers. ||| Before the start of war ||| September 11, 2001 attacks ||| +0 War in Donbass ||| 2014 Ukrainian revolution ||| The '''War in Donbass''' (also called the '''War in Ukraine''', '''War in Eastern Ukraine''') is an armed conflict in the [[Donbass]] region of [[Ukraine]]. From the beginning of March 2014, demonstrations by [[Russophilia|pro-Russian]] and anti-government groups took place in the [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] oblasts of Ukraine, together commonly called the 'Donbass', in the aftermath of the [[2014 Ukrainian revolution]] and the [[Euromaidan]] movement. These demonstrations, which followed the [[annexation of Crimea by the Russian Federation]], and which were part of a wider group of [[2014 pro-Russian unrest in Ukraine|concurrent pro-Russian protests across southern and eastern Ukraine]], escalated into an [[War|armed conflict]] between the [[Separatism|separatist]] forces of the self-declared [[Donetsk People's Republic|Donetsk]] and [[Luhansk People's Republic|Luhansk]] People's Republics (DPR and LPR respectively), and the [[Government of Ukraine|Ukrainian government]]. ||| ||| ||| +0 War in Donbass ||| Euromaidan ||| The '''War in Donbass''' (also called the '''War in Ukraine''', '''War in Eastern Ukraine''') is an armed conflict in the [[Donbass]] region of [[Ukraine]]. From the beginning of March 2014, demonstrations by [[Russophilia|pro-Russian]] and anti-government groups took place in the [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] oblasts of Ukraine, together commonly called the 'Donbass', in the aftermath of the [[2014 Ukrainian revolution]] and the [[Euromaidan]] movement. These demonstrations, which followed the [[annexation of Crimea by the Russian Federation]], and which were part of a wider group of [[2014 pro-Russian unrest in Ukraine|concurrent pro-Russian protests across southern and eastern Ukraine]], escalated into an [[War|armed conflict]] between the [[Separatism|separatist]] forces of the self-declared [[Donetsk People's Republic|Donetsk]] and [[Luhansk People's Republic|Luhansk]] People's Republics (DPR and LPR respectively), and the [[Government of Ukraine|Ukrainian government]]. ||| ||| ||| +0 War in Donbass ||| Malaysia Airlines Flight 17 ||| A civilian passenger jet, [[Malaysia Airlines Flight 17]], was shot down over [[Hrabove, Donetsk Oblast|Hrabove]] on 17 July, killing all 298 people on board. DPR-affiliated insurgents blamed the Ukrainian government for the disaster, whereas the government blamed Russia and the insurgents. This disaster followed two similar incidents earlier in the week, when two Ukrainian Air Force planes were shot down. At least twenty civilians were killed in the shelling of Luhansk, according to a statement by the city administration. ||| History ||| Fighting worsens in eastern Donetsk Oblast ||| Downing of Malaysia Airlines Flight 17 +0 War in North-West Pakistan ||| 2008 Wah bombing ||| On 21 August 2008, in response to the military offensive in Bajaur, [[2008 Wah bombing|two suicide bombers]] attacked the [[Pakistan Ordnance Factories|POF Laboratories]] in [[Wah]] while workers were changing shifts. The attack killed at least 70 people. ||| Escalation, air and ground war ||| Peace agreement and Bajaur offensive ||| +0 War in North-West Pakistan ||| Indo-Pakistani Naval War of 1971 ||| On 21 and 28 April, senior al-Qaeda operative [[Ilyas Kashmiri]] conducted a series of coordinated terrorist attacks on the [[Pakistan Navy]] presence in [[Northern Pakistan|Northern]] and [[Southern Pakistan|Southern contingents]]. This included attacks on high naval officials of the Pakistan Navy in Karachi, first attacking their bus near the Navy bases. Finally on 22 May, TTP attacked the [[PNS Mehran|Mehran Naval Base]], killing up to 10 naval officers, wounding 30 others, and destroying two naval reconnaissance aircraft, during the attack. In response, the navy's [[Special Service Group Navy|SSG(N)]] launched its largest offensive efforts since the [[Indo-Pakistani Naval War of 1971|1971 operations]], and managed to control and secure the base after a massive shootout. Operationally resulting in tactical success, the navy's counter offensive killed all the militants and ring leaders behind these operations. Kashmiri was widely suspected in the Mehran operation. On 4 June 2011, [[Ilyas Kashmiri]] was killed by a U.S. drone strike in [[South Waziristan]]. ||| Continued insurgency ||| Death of Bin Laden and Navy offensive ||| +0 War in North-West Pakistan ||| Islamabad Marriott Hotel bombing ||| In 2008, the al-Qaeda struck its largest terrorist attack in [[Islamabad]] when a [[truck bomb]] [[Islamabad Marriott Hotel bombing|targeted]] the [[Marriott International|Marriott Hotel]]. This attack was a defining moment in the war and around ~266 sustained the injuries and 54 died. According to the testimonies, numbers of [[United States Marine Corps|U.S. Marines]] and [[United States Navy|U.S. Navy]] personnel also died in the attack; many believed the Americans were the target of the terrorist attacks. In a response to attack on 23 September 2008, the [[Pakistan Air Force|PAF]] launched its aerial bombing mission which resulted in ultimate success. Military reports indicating that more than 60 insurgents were killed in northwest Pakistan. In the nearby Bajur tribal region, the air force strikes killed at least 10 militants, according to government officials. ||| Escalation, air and ground war ||| Islamabad Marriott Hotel Bombing ||| +0 War in North-West Pakistan ||| Pakistani general election, 2008 ||| In January 2008, the [[Foreign Mujahideen|foreign fighters]] overran Sararogha Fort, and may have overrun a fort in Ladah as well. Both forts are in South Waziristan, and were held by the Pakistan Army. After the [[Pakistani general election, 2008|general elections]] in 2008, the [[Pakistan Army|army]]'s fighting capability was depleted under the command of President Musharraf and many in the [[Pakistani media|media]] had scrutinized the role of the army in the [[Pakistani politics|national politics]]. On 25 February 2008, a suicide bomber struck in the garrison-town of Rawalpindi which targeted and killed top military medic and [[Pakistan Army Medical Corps|Medical Corps]] [[Surgeon-General]], [[Lieutenant-General]] [[General Mushtaq Ahmed Baig|Mushtaq Baig]], along with two more soldiers and five civilians. ||| Escalation, air and ground war ||| ||| +0 War in North-West Pakistan ||| Pakistani presidential election, 2008 ||| In a secretive appointment by Musharraf personally, General Baig had been an operational commander of the army fighting in the region and was the highest-level military official to be assassinated since [[Bangladesh liberation war|1971 war]]. In 2008, General Musharraf was soon relieved off his command, succeeding General [[Ishfaq Pervez Kiani]] as chief of army staff. Events led by successful [[Lawyer's movement|movement]] pushed Musharraf to downfall, followed by the consolidated [[Movement to impeach Pervez Musharraf|impeachment movement]] led by Prime minister [[Yousaf Raza Gillani]] ousted Musharraf from the [[Pakistani presidential election, 2008|presidency in 2008]]. The new [[Social democracy|socialist government]] led by Prime minister [[Yousaf Raza Gillani]] of the [[Pakistan Peoples Party|PPP]] made critical decisions and appointment in the key combatant staff of the armed forces, including the new [[chief of Naval Staff (Pakistan)|chief of naval staff]] (Admiral [[Noman Bashir]]) and endorsing [[air chief marshal]] [[Rao Qamar Suleman|Rao Soleman]] as [[Chief of Air Staff (Pakistan)|chief of air staff]]; all in late 2008. ||| Escalation, air and ground war ||| ||| +0 War in Somalia (2006–09) ||| 1998 United States embassy bombings ||| * [[Abu Taha al-Sudan]], reported to have led the ICU troops in the [[Battle of Baidoa]], former Al-Itihaad al-Islamiya, wanted by the U.S. as the financier of the [[1998 United States embassy bombings]] and involvement in the [[2002 Mombasa hotel bombing]] ||| Key men ||| Islamic Court Union (ICU) ||| +0 War in Somalia (2006–09) ||| Fall of Mogadishu ||| | accessdate = 2007-01-05 }} Ethiopia, however, refused to abandon its positions around the TFG interim capital at [[Baidoa]]. On December 29, after several successful battles, TFG and Ethiopian troops [[Fall of Mogadishu|entered Mogadishu]] relatively unopposed. The UN also stated that many Arab nations including Egypt were also supporting the ICU through [[Eritrea]]. Although not announced until later, a small number of U.S. Special Forces troops accompanied Ethiopian and TFG troops after the collapse and withdrawal of the ICU to give military advice and to track suspected al-Qaida fighters. Both American support for the TFG and various Arab Nations' support for the ICU were isolated cases from the central motive of the war between the allied Ethiopian & Somali government forces and the allied ICU & Eritrean forces. ||| ||| ||| +0 War in Somalia (2009–present) ||| Operation Indian Ocean ||| In August 2014, the Somali government-led [[Operation Indian Ocean]] was launched to cleanup the remaining insurgent-held pockets in the countryside. ||| ||| ||| +0 War in Somalia (2009–present) ||| Operation Linda Nchi ||| In 2011, a [[Operation Linda Nchi|coordinated military operation]] between the Somali military and multinational forces began. ||| ||| ||| +0 War in Vietnam (1954–59) ||| First Indochina War ||| The '''1954 to 1959''' phase of the '''[[Vietnam War]]''' was the era of the two nations. Coming after the [[First Indochina War]], this period resulted in the military defeat of the [[French Fourth Republic|French]], a [[Geneva Conference (1954)|1954 Geneva meeting]] that [[partition of Vietnam|partitioned Vietnam]] into North and South, and the French [[Withdrawal of French troops from Vietnam|withdrawal from Vietnam]], leaving the [[Republic of Vietnam]] regime fighting a [[communist]] insurgency with USA aid. During this period, [[North Vietnam]] recovered from the wounds of war, rebuilt nationally, and accrued to prepare for the anticipated war. In South Vietnam, [[Ngô Đình Diệm]] consolidated power and encouraged [[anti-communism]]. This period was marked by [[U.S. support to South Vietnam before Gulf of Tonkin]], as well as communist infrastructure-building. ||| ||| ||| +0 War in Vietnam (1954–59) ||| North Vietnamese invasion of Laos ||| }}, pp. 136-137 Mao's use of 'strategic defensive' refers to the guerilla force making its presence known and building its organization, but not attempting to engage military units. George Carver, the principal CIA analyst on Vietnam, said in a ''Foreign Affairs'' article, A pattern of politically motivated terror began to emerge, directed against the representatives of the Saigon government and concentrated on the very bad and the very good. The former were liquidated to win favor with the peasantry; the latter because their effectiveness was a bar to the achievement of Communist objectives. The terror was directed not only against officials but against all whose operations were essential to the functioning of organized political society, school teachers, health workers, agricultural officials, etc. The scale and scope of this terrorist and insurrectionary activity mounted slowly and steadily. By the end of 1958 the participants in this incipient insurgency, whom Saigon quite accurately termed the 'Viet Cong', constituted a serious threat to South Viet Nam's political stability' On March 7, President Diệm received a letter from North Vietnam Prime Minister [[Phạm Văn Đồng]] proposing a discussion on troop reductions and trade relations as a renewed step towards reunification. On 26 April, Diệm rejected any discussion until North Vietnam had established 'democratic liberties' similar to those in the South. A coordinated command structure was formed by Communists in the [[Mekong Delta]] where 37 armed companies were being organized in June 1958. North Vietnam [[North Vietnamese invasion of Laos|invaded Laos]] and occupied parts of the country. Fall reported that the GVN lost almost 20% of its village chiefs through 1958. ||| Events ||| 1958: North Vietnam looks South ||| +0 War in the North ||| Battle of Belchite (1937) ||| After the failed republican [[Battle of Belchite (1937)|offensive against Zaragoza]], the Nationalists decided to continue their offensive against Asturias. The Nationalists had overwhelming numerical (90,000 men against 45,000) and material (more than 200 aircraft against 35) superiority, but the Republican Army in Asturias was better organized than in Santander and the difficult terrain provided excellent defensive positions. The Navarrese troops (30,000), led by Solchaga, and supported by the ''Legion Condor'', managed to occupy the [[Battle of El Mazuco|El Mazuco]] Pass, held by 5,000 Republican soldiers, only after 33 days of bloody combat. ||| Asturias Campaign ||| ||| +0 War in the North ||| Battle of Brunete ||| After the fall of Bilbao, the Republican government decided to launch an offensive against [[Battle of Brunete|Brunete]] in order to stop the Nationalist offensive in the north on July 6, but by July 25 the offensive had ended. The morale of the Republican troops in Cantabria was low and the Basque soldiers did not want to carry on the fight. On August 14, the Nationalists launched their offensive against Cantabria, with the 90,000 men (25,000 Italians) and 200 aircraft of the Army of the North. On August 17, the Italians occupied the ''[[Puerto del Escudo|El Escudo]]'' Pass and encircled 22 Republican battalions at Campoo (Cantabria). On August 24, the Basque troops surrendered to the Italians at [[Santoña Agreement|Santoña]] and the Republican troops fled from Santander. On August 26, the Italians occupied Santander and by September 1, the Nationalists had occupied almost all Cantabria. The Nationalists captured 60,000 prisoners, the greatest victory of the war. ||| Battle of Santander ||| ||| +0 War in the North ||| Biscay Campaign ||| The '''War in the North''', in the [[Spanish Civil War]] was the campaign in which the Nationalist forces defeated and occupied the parts of northern [[Spain]] that remained loyal to the [[Second Spanish Republic|Republican]] government. The campaign included several separate battles. The [[Biscay Campaign]] resulted in the loss of the part of the [[Basque Country (autonomous community)|Basque Country]] still held by the Republic and [[Battle of Bilbao|Bilbao]], the greatest Spanish industrial center. This part of the campaign saw the [[Bombing of Guernica]] and [[Durango, Spain|Durango]]. The [[Battle of Santander]] caused the loss of the province of Santander in [[Cantabria]]n [[Old Castile|Castile]] for the Republic. The [[Battle of El Mazuco]] lead to the capture of the Republican-controlled part of [[Asturias]] and the fall of [[Gijón]], the Republic's last stronghold in the North, to the Nationalists. The campaign ended on October 21, 1937 with a decisive and total Nationalist victory. ||| ||| ||| +0 War in the North ||| Bombing of Durango ||| The Nationalist offensive started on March 31, and the same day the ''[[Legion Condor]]'' bombed the town of [[Bombing of Durango|Durango]], there were 250 civilian deaths. The Navarrese troops attacked the town of Ochandiano and on April 4 occupied it, after heavy combat. Mola then decided to stop the advance due to bad weather. ||| Beginning of the campaign ||| ||| +0 War in the North ||| Segovia Offensive ||| The Republican government decided to send 50 aircraft to Bilbao and launched two offensives against [[Huesca Offensive|Huesca]] and [[Segovia Offensive|Segovia]] in order to stop the Nationalist advance, but both failed. On June 3, Mola died and was replaced by Davila. On June 12, the Nationalists started their assault of the [[Iron Belt]] and after heavy aerial and artillery bombings entered [[Battle of Bilbao|Bilbao]] on June 19. ||| Beginning of the campaign ||| ||| +0 War of Devolution ||| Second Anglo-Dutch War ||| The rapid progress of the French in this war had, however, greatly alarmed the Dutch United Provinces. For almost a century, France and the United Provinces had been allies against the Spanish. Though they remained enemies of the Spanish monarchy, the Dutch began to wonder if 'a tired and inactive Spain promised to be a better neighbor than a powerful and aggressive France' ([[John A. Lynn|Lynn]] 1999:108). The Dutch became more concerned about maintaining the Spanish Netherlands as a buffer state. The Netherlands, therefore, hurriedly ended their war, the [[Second Anglo-Dutch War]](or Second Navigation War) with England. Despite the very successful conduct of the war, the Dutch signed the inconclusive [[Treaty of Breda (1667)|Treaty of Breda]] on 31 July 1667. After this, they offered to mediate in the war between France and Spain. Louis XIV however rejected this in September and continued to try to persuade the Dutch to divide up the Spanish Netherlands with the French. These attempts were a failure, and Louis XIV played with the idea of a war against the Dutch. ||| War ||| Diplomatic turnaround ||| +0 War of Jenkins' Ear ||| War of the Quadruple Alliance ||| At the conclusion of the [[War of the Spanish Succession]], the [[Treaty of Utrecht]] in 1713 gave Britain a thirty-year [[asiento]], or contract-right, to supply an unlimited number of slaves to the Spanish colonies, and 500 tons of goods per year. This provided British traders and smugglers potential inroads into the (traditionally) closed markets in Spanish America. But Britain and Spain were often at war during this period, fighting one another in the [[War of the Quadruple Alliance]] (1718–20), the [[Blockade of Porto Bello]] (1726) and the [[Anglo-Spanish War (1727)|Anglo-Spanish War]] (1727–1729). ||| Background ||| ||| +0 War of the Fourth Coalition ||| Battle of Copenhagen (1807) ||| Following the [[Treaties of Tilsit]], Britain and Sweden remained the only two major coalition members still at war with France. Russia soon declared [[Anglo-Russian War (1807–1812)|war against Britain]] and after a [[Battle of Copenhagen (1807)|British attack on Copenhagen]], [[Denmark–Norway]] joined the war on the side of Napoleon (''[[Gunboat War]]''), opening a second front against Sweden. A short British expedition under [[John Moore (British Army officer)|Sir John Moore]] was sent to Sweden (May 1808) to protect against any possible Franco-Danish invasion. ||| Results ||| ||| +0 War of the Fourth Coalition ||| Gunboat War ||| Following the [[Treaties of Tilsit]], Britain and Sweden remained the only two major coalition members still at war with France. Russia soon declared [[Anglo-Russian War (1807–1812)|war against Britain]] and after a [[Battle of Copenhagen (1807)|British attack on Copenhagen]], [[Denmark–Norway]] joined the war on the side of Napoleon (''[[Gunboat War]]''), opening a second front against Sweden. A short British expedition under [[John Moore (British Army officer)|Sir John Moore]] was sent to Sweden (May 1808) to protect against any possible Franco-Danish invasion. ||| Results ||| ||| +0 War of the Reunions ||| Battle of Vienna ||| The summer of 1683 was the peak of [[Great Turkish War|War of the Holy League]], in which the eastern flank of the Holy Roman Empire went under the greatest ever offensive by [[Ottoman Empire]]. On 12 September 1683, combined Imperial, German and Polish troops [[Battle of Vienna|defeated the Turks before the walls of Vienna]], ending the Turkish threat. ||| Background ||| ||| +0 War of the Second Coalition ||| French Revolution ||| The '''War of the Second Coalition''' (1798–1802) was the second war on [[French Revolution|revolutionary]] [[French First Republic|France]] by the European monarchies, led by Britain, Austria and Russia, and including the Ottoman Empire, Portugal and Naples. Their goal was to contain republican France. They failed to overthrow the revolutionary regime and French territorial gains since 1793 were confirmed. The Allies formed a new alliance and attempted to roll back France's previous military conquests. The Coalition did very well in 1799, but Russia pulled out. Napoleon took charge in France in late 1799, and he and his generals defeated the Coalition. In the [[Treaty of Lunéville]] in 1801, France held all of its previous gains and obtained new lands in Tuscany, Italy, while Austria was granted Venetia and the Dalmatian coast. Britain and France signed the [[Treaty of Amiens]] in March 1802, bringing an interval of peace in Europe that lasted for 14 months. By May 1803 Britain and France were again at war and in 1805 Britain assembled the Third Coalition to resume the war against France. ||| ||| ||| +0 War of the Second Coalition ||| Haitian Revolution ||| In December 1801, an [[Saint-Domingue expedition|expedition was sent to Saint-Domingue]] to quell [[Haitian Revolution|the revolution that had started there in 1791]] once and for all, but the [[Blockade of Saint-Domingue|blockade of the Caribbean island]] by the British fleet made the sending of reinforcements impossible. ||| The war ||| 1801 ||| +0 War of the Second Coalition ||| Siege of Acre (1799) ||| Napoleon himself invaded Syria from Egypt, but after a failed [[Siege of Acre (1799)|siege of Acre]] retreated to Egypt, repelling a British-Turkish invasion. Alerted to the political and military crisis in France, he returned, leaving his army behind, and used his popularity and army support to mount [[18 Brumaire|a coup]] that made him [[First Consul]], the head of the French government. ||| The war ||| 1799 ||| +0 War of the Sixth Coalition ||| Battle of Borodino ||| In 1812 [[French invasion of Russia (1812)|Napoleon invaded Russia]] to compel [[Alexander I of Russia|Emperor Alexander I]] to remain in the [[Continental System]]. The ''Grande Armée'', consisting of as many as 650,000 men (roughly half of whom were French, with the remainder coming from allies or subject areas), crossed the [[Neman River]] on 23 June 1812. Russia proclaimed a Patriotic War, while Napoleon proclaimed a '[[Second Polish War]]'. But against the expectations of the Poles, who supplied almost 100,000 troops for the invasion force, and having in mind further negotiations with Russia, he avoided any concessions toward Poland. Russian forces fell back, destroying everything potentially of use to the invaders until giving battle at [[Battle of Borodino|Borodino]] (7 September) where the two great armies fought a devastating but inconclusive battle. Following the battle the Russians withdrew, thus opening the road to [[Moscow]]. By 14 September the French had occupied Moscow but found the city practically empty. Alexander I (despite having almost lost the war by Western European standards) refused to capitulate, leaving the French in the abandoned city of Moscow with little food, shelter (large parts of Moscow had burned down) and winter approaching. In these circumstances, and with no clear path to victory, Napoleon was forced to withdraw from Moscow. ||| Invasion of Russia ||| ||| +0 War of the Sixth Coalition ||| Battle of Vitoria ||| While events unfolded in the East, the [[Peninsular War]] in [[Iberia]] continued to be Napoleon's 'Spanish ulcer' tying down hundred of thousands of French soldiers. [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley]] Duke of Wellington finally broke the French power in Spain and forced the French to retreat. In a strategic move, Wellington planned to move his supply base from Lisbon to [[Santander, Cantabria|Santander]]. The [[Anglo-Portuguese Army|Anglo-Portuguese forces]] swept northwards in late May and seized Burgos; they then outflanked the French army, forcing Joseph Bonaparte into the valley of the River Zadorra. At the [[Battle of Vitoria]], 21 June, the 65,000 French under Joseph were routed by 53,000 British, 27,000 Portuguese and 19,000 Spaniards. Wellington pursued and dislodged the French from [[San Sebastián]], which was sacked and burnt. ||| Peninsular War ||| ||| +0 War of the Third Coalition ||| Battle of Trafalgar ||| [[United Kingdom of Great Britain and Ireland|Great Britain]] had already been at war with France following the resumption of hostilities resulting from the breakdown of the [[Treaty of Amiens|Peace of Amiens]] and remained the only country still at war with France after the [[Treaty of Pressburg (1805)|Treaty of Pressburg]]. From 1803–05, Britain stood under constant threat of a [[Napoleon's planned invasion of the United Kingdom|French invasion]]. The [[Royal Navy]], however, secured mastery of the seas and decisively destroyed a Franco-Spanish fleet at the [[Battle of Trafalgar]] in October 1805. ||| ||| ||| +0 War of the Third Coalition ||| Battle of the Nile ||| The British possessed an experienced and well-trained corps of naval officers. By contrast, most of the best officers in the French navy had either been executed or dismissed from the service during the early part of the [[French Revolution]]. As a result, Vice-Admiral [[Pierre-Charles Villeneuve]] was the most competent senior officer available to command Napoleon's Mediterranean fleet. However, Villeneuve had shown a distinct lack of enthusiasm to face Nelson and the Royal Navy after his defeat at the [[Battle of the Nile]]. ||| Battle of Trafalgar ||| ||| +0 War of the Third Coalition ||| War of the Second Coalition ||| Ferdinand had hoped for a repeat of the events of 1799, when a popular uprising in Calabria eventually caused the downfall of the [[Parthenopaean Republic]], a French client state created after the Neapolitans were defeated the first time during the [[War of the Second Coalition]]. However, no such rebellion initially occurred and on 3 March, General [[Jean Reynier]], who commanded the 10,000 strong II Corps of the Army of Naples invaded Calabria. Only a few Calabrians resisted the invading French force and the Royal Neapolitan Army was soundly defeated at the [[Battle of Campo Tenese]] on 10 March 1806. Ferdinand now had no choice but to concede the Neapolitan throne to the French. A day after Campo Tenese, Joseph was installed as the new King of Naples. By now, the last regular troops of the Neapolitan army had fled to Sicily and the French controlled the entire Italian mainland except for the fortress of Gaeta, which had been [[Siege of Gaeta (1806)|under siege]] since 26 February. ||| Italian Campaign ||| Invasion of Naples ||| +0 War of the Three Henrys ||| Battle of Arques ||| In the spring, Henry IV returned to the field; he won significant victories at [[Battle of Ivry|Ivry]] and [[Battle of Arques|Arques]] and laid siege to Paris (despite being greatly outnumbered), but a Spanish army under [[Alexander Farnese, Duke of Parma]] lifted the siege. ||| Aftermath ||| ||| +0 War of the Three Henrys ||| Battle of Ivry ||| In the spring, Henry IV returned to the field; he won significant victories at [[Battle of Ivry|Ivry]] and [[Battle of Arques|Arques]] and laid siege to Paris (despite being greatly outnumbered), but a Spanish army under [[Alexander Farnese, Duke of Parma]] lifted the siege. ||| Aftermath ||| ||| +0 War of the Three Henrys ||| Spanish Armada ||| After the defeat of the [[Spanish Armada]], the king called the Estates-General in the midst of intrigue and plotting. Henri of Guise planned to assassinate the king and seize the throne, but the king struck first by having Guise killed by his guards, [[The forty-five guards|The Forty-Five]]. ||| ||| ||| +0 War on Terror ||| 1983 Beirut barracks bombing ||| In 1984, the [[Reagan Administration]] used the term 'war against terrorism' as part of an effort to pass legislation that was designed to freeze assets of terrorist groups and marshal the forces of government against them. Author Shane Harris asserts this was a reaction to the [[1983 Beirut barracks bombing]], which killed 241 U.S. and 58 French [[peacekeeping|peacekeepers]]. ||| {{anchor|Terminology}}Etymology ||| History of the name ||| +0 Warsaw Uprising ||| Battle of Radzymin (1944) ||| One way or the other, the presence of Soviet tanks in nearby [[Wołomin]] 15 kilometers to the east of Warsaw had sealed the decision of the Home Army leaders to launch the Uprising. However, as a result of the initial [[Battle of Radzymin (1944)|battle of Radzymin]] in the final days of July, these advance units of the Soviet 2nd Tank Army were pushed out of Wołomin and back about 10 km. ||| Limited outside support ||| Soviet stance ||| +0 Warsaw Uprising ||| Eastern Front (World War II) ||| Although the exact number of casualties remains unknown, it is estimated that about 16,000 members of the Polish resistance were killed and about 6,000 badly wounded. In addition, between 150,000 and 200,000 Polish civilians died, mostly from mass executions.{{citation needed|date=October 2015}} [[Rescue of Jews by Poles during the Holocaust|Jews being harboured by Poles]] were exposed by German house-to-house clearances and mass evictions of entire neighbourhoods. German casualties totalled over 8,000 soldiers killed and missing, and 9,000 wounded. During the [[urban combat]] approximately 25% of Warsaw's buildings were destroyed. Following the surrender of Polish forces, German troops systematically levelled another 35% of the city block by block.{{citation needed|date=October 2015}} Together with earlier damage suffered in the [[invasion of Poland|1939 invasion of Poland]] and the [[Warsaw Ghetto Uprising]] in 1943, over 85% of the city was destroyed by January 1945, when the course of the events in the [[Eastern Front (World War II)|Eastern Front]] forced the Germans to abandon the city. ||| ||| ||| +0 Warsaw Uprising ||| Invasion of Poland ||| By January 1945 85% of the buildings were destroyed: 25% as a result of the Uprising, 35% as a result of systematic German actions after the uprising, and the rest as a result of the earlier [[Warsaw Ghetto Uprising]], and the [[Invasion of Poland|September 1939 campaign]]. Those estimates were later raised to US$45 billion 2004 US dollars and in 2005, to $54.6 billion. ||| Aftermath ||| Destruction of the city ||| +0 Warsaw Uprising ||| Liberation of Paris ||| The role of the Red Army during the Warsaw Uprising remains controversial and is still disputed by historians. The Uprising started when the Red Army appeared on the city's doorstep, and the Poles in Warsaw were counting on Soviet front capturing or forwarding beyond the city in a matter of days. This basic scenario of an uprising against the Germans, launched a few days before the arrival of Allied forces, played out successfully in a number of European capitals, such as [[Liberation of Paris|Paris]] The weak German defence forces did not experience any significant Soviet pressure during that period, which effectively allowed them to strengthen German forces fighting against uprising in the city itself. ||| Limited outside support ||| Soviet stance ||| +0 Waterloo Campaign ||| Battle of Tolentino ||| |3 May||General [[Frederick Bianchi, Duke of Casalanza|Bianchi's]] Austrian I Corps decisively defeated Murat at the [[Battle of Tolentino]]. ||| Timeline ||| ||| +0 Waterloo Campaign: Ligny through Wavre to Waterloo ||| Battle of Waterloo ||| After their defeat at the [[Battle of Ligny]] (16 June 1815) the Prussians successfully disengaged and withdrew to north west to Wavre where they reorganised and then three corps advance westward to attack the right flank of the French army at the [[Battle of Waterloo]]. The French were desultory in the aftermath of Ligny. [[Napoleon]] wasted the morning of 17 June by taking a late breakfast and going to see the previous days battlefield before organising a pursuit of the two Coalition armies. He took the reserves and marched with [[Marshal Ney]] in pursuit of the [[Duke of Wellington|Duke of Wellington's]] Anglo-allied army, and he gave instructions to [[Marshal Grouchy]] to pursue the Prussians wherever they were going and harry them so that they had no time to reorganise. ||| ||| ||| +0 Waterloo Campaign: Waterloo to Paris (18–24 June) ||| Battle of Waterloo ||| After the their defeat at the [[Battle of Waterloo]] on 18 June 1815, the French [[Army of the North (France)|Army of the North]], under the command of [[Napoleon Bonaparte]] retreated in disarray back towards France. As agreed by the two Seventh Coalition commanders in chief, the [[Duke of Wellington]], commander of the Anglo-allied army, and [[Prince Blücher]], commander of the Prussian army, the French were to be closely pursued by units of the Prussian army. ||| ||| ||| +0 Weixian–Guangling–Nuanquan Campaign ||| World War II ||| The '''Weixian–Guangling–Nuanquan Campaign''' (蔚广暖战役) was a campaign fought in Wei (蔚) County and Warm Spring (Nuanquan 暖泉) of [[Chahar (province)]] and Guanling (广灵) of [[Shanxi]], and it was a clash between the [[communist]]s and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after [[World War II]]. The battle was one of the [[Chinese Civil War]] in the immediate post [[World War II]] era, and resulted in [[Communist Party of China|communist]] victory. This campaign was part of the General Counteroffensive in [[Shanxi]]-[[Chahar (province)]]-[[Hebei]]. ||| ||| ||| +0 West Loch disaster ||| Attack on Pearl Harbor ||| During the salvage and removal of the wrecks from West Loch, the U.S. Navy found remains of a Japanese [[midget submarine]]. Researchers now believe this to be the fifth Japanese midget submarine used in the [[Attack on Pearl Harbor|attack in December 1941]]. ||| ||| ||| +0 Western Desert Campaign ||| Eastern Front (World War II) ||| In the Spring of 1941 Axis forces under Rommel pushed the British-led allied forces back and reached [[Tobruk]] which [[Siege of Tobruk|was besieged]]. The allied force there held out and were relieved during [[Operation Crusader]], who then pushed the Axis forces back to where they had started by the end of the year. In 1942 Axis forces drove the Allies back [[Battle of Gazala|capturing Tobruk]] but failed to gain a decisive victory. On the final Axis push to Egypt the Allies retreated to El Alamein, where at the [[Second Battle of El Alamein]] the Eighth Army defeated the Axis forces, which never recovered and were driven out of Libya to [[Tunisia]], where they were defeated in the [[Tunisia Campaign]]. After the British defeats in the [[Balkan Campaign (World War II)|Balkan Campaign]], the Western Desert Campaign had become more important to British strategy. For [[Adolf Hitler]] the [[Eastern Front (World War II)|Eastern Front]] dwarfed the desert war, which was a holding action of secondary importance. The Axis never had sufficient resources or the means to deliver them to defeat the British, who in their turn missed several opportunities to finish the campaign, by diverting resources to Greece and the Levant in 1941 and the Far East in 1942. ||| ||| ||| +0 Western Front (World War II) ||| Battle of Arnhem ||| [[Field marshal (United Kingdom)|Field Marshal]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Law Montgomery]], commanding the Anglo-Canadian [[21st Army Group]], persuaded the Allied High Command to launch a bold attack, Operation ''[[Operation Market Garden|Market Garden]]'', which he hoped would get the Allies across the Rhine and create the narrow-front he favoured. [[Airborne forces|Airborne troops]] would fly in from the UK and take bridges over the main rivers of the German-occupied Netherlands in three main cities; [[Eindhoven]], [[Nijmegen]], and [[Arnhem]]. The [[XXX Corps (United Kingdom)|British XXX Corps]] would punch through the German lines along the Maas-Schelde Kanal and link up with the airborne troops of the [[101st Airborne Division|US 101st Airborne]] in Eindhoven, the [[82nd Airborne Division|US 82nd]] at Nijmegen and the [[1st Airborne Division (United Kingdom)|British 1st]] at Arnhem. If all went well XXX Corps would advance into Germany without any remaining major obstacles. XXX Corps was able to advance beyond six of the seven airborne-held bridges, but was unable to link up with the troops near the bridge over the Rhine at Arnhem. The result was the near-destruction of the 1st Airborne Division during the [[Battle of Arnhem]]. The offensive ended with Arnhem remaining in German hands and the Allies holding an extended salient from the Belgian border to the area between Nijmegen and Arnhem. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Operation Market Garden ||| +0 Western Front (World War II) ||| Battle of Britain ||| The '''Western Front''' of the [[European theatre of World War II|European theatre]] of [[World War II]] encompassed [[Denmark]], [[Norway]], [[Luxembourg]], [[Belgium]], the [[Netherlands]], the [[United Kingdom]], [[France]], [[Italy]], and [[West Germany|Western Germany]]. World War II military engagements in Southern Europe and elsewhere are generally considered under separate headings. The Western Front was marked by two phases of large-scale combat operations. The first phase saw the capitulation of the Netherlands, Belgium and France during May and June 1940 after their defeat in the [[Low Countries]] and the northern half of France, and continued into an air war between Germany and Britain that climaxed with the [[Battle of Britain]]. The second phase consisted of large-scale ground combat, which began in June 1944 with the [[Normandy landings|Allied landings in Normandy]] and continued until the [[Victory in Europe Day|defeat of Germany]] in May 1945. ||| ||| ||| +0 Western Front (World War II) ||| Battle of the Atlantic ||| In their hurry to re-arm, Britain and France had both begun to buy large numbers of weapons from manufacturers in the United States at the outbreak of hostilities, supplementing their own production. The [[non-belligerent]] United States, contributed to the [[Western Allies]] by discounted sales of military equipment and supplies. German efforts to interdict the Allies' trans-Atlantic trade at sea ignited the [[Battle of the Atlantic]]. ||| 1939–40: Axis victories ||| Phoney War ||| +0 Western Front (World War II) ||| Battle of the Scheldt ||| The port of [[Antwerp]] was liberated on 4 September by the [[British 11th Armoured Division]]. However, it lay at the end of the long [[Scheldt Estuary]], and so it could not be used until its approaches were clear of heavily fortified German positions. The [[Breskens pocket]] on the southern bank of the [[Scheldt]] was cleared with heavy casualties by Canadian and Polish forces in Operation ''[[Operation Switchback|Switchback]]'', during the [[Battle of the Scheldt]]. This was followed by a tedious campaign to clear a peninsula dominating the estuary, and finally, the amphibious assault on [[Walcheren]] Island in November. The campaign to clear the Scheldt Estuary was a decisive victory for the [[First Canadian Army]] and the rest of the Allies, as it allowed a greatly improved delivery of supplies directly from Antwerp, which was far closer to the front than the Normandy beaches. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Allied advance from Paris to the Rhine ||| +0 Western Front (World War II) ||| Colmar Pocket ||| South of the [[Ardennes]], US forces fought from September until mid-December to push the Germans out of Lorraine and from behind the Siegfried Line. The crossing of the [[Moselle River]] and the capture of the fortress of [[Metz]] proved difficult for the US troops in the face of German reinforcements, supply shortages, and unfavorable weather.{{Citation needed|date=September 2009}} During September and October, the Allied 6th Army Group ([[U.S. Seventh Army]] and [[French First Army]]) fought a difficult campaign through the Vosges Mountains that was marked by dogged German resistance and slow advances. In November, however, the German front snapped under the pressure, resulting in sudden Allied advances that liberated [[Belfort]], [[Mulhouse]], and [[Strasbourg]], and placed Allied forces along the [[Rhine River]]. The Germans managed to hold a large bridgehead (the [[Colmar Pocket]]), on the western bank of the Rhine and centered around the city of [[Colmar]]. On 16 November the Allies started a large scale autumn offensive called Operation ''[[Operation Queen|Queen]]''. With its main thrust again through the [[Hurtgen Forest|Hürtgen Forest]], the offensive drove the Allies to the [[Rur River]], but failed in its core objectives to capture the Rur dams and pave the way towards the Rhine. The Allied operations were then succeeded by the German Ardennes offensive. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Allied advance from Paris to the Rhine ||| +0 Western Front (World War II) ||| Eastern Front (World War II) ||| While the unconditional surrender of the German armed forces represented a resounding success for the Western Allies and [[Eastern Front (World War II)|the Soviet Union]], the path to this outcome was influenced by the strategic decisions of both sides. In retrospect, it is clear that particular factors and choices strongly affected the pace and course of the campaign on the Western Front. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| The 1944–45 campaign in hindsight ||| +0 Western Front (World War II) ||| European theatre of World War II ||| The '''Western Front''' of the [[European theatre of World War II|European theatre]] of [[World War II]] encompassed [[Denmark]], [[Norway]], [[Luxembourg]], [[Belgium]], the [[Netherlands]], the [[United Kingdom]], [[France]], [[Italy]], and [[West Germany|Western Germany]]. World War II military engagements in Southern Europe and elsewhere are generally considered under separate headings. The Western Front was marked by two phases of large-scale combat operations. The first phase saw the capitulation of the Netherlands, Belgium and France during May and June 1940 after their defeat in the [[Low Countries]] and the northern half of France, and continued into an air war between Germany and Britain that climaxed with the [[Battle of Britain]]. The second phase consisted of large-scale ground combat, which began in June 1944 with the [[Normandy landings|Allied landings in Normandy]] and continued until the [[Victory in Europe Day|defeat of Germany]] in May 1945. ||| ||| ||| +0 Western Front (World War II) ||| Operation Barbarossa ||| With the Luftwaffe unable to defeat the RAF in the Battle of Britain, the invasion of Great Britain could no longer be thought of as an option. While the majority of the German army was mustered for the [[Operation Barbarossa|invasion of the Soviet Union]], construction began on the [[Atlantic Wall]] – a series of defensive [[fortification]]s along the French coast of the [[English Channel]]. These were built in anticipation of an Allied invasion of France. ||| 1941–44: Interlude ||| ||| +0 Western Front (World War II) ||| Operation Basalt ||| A raid on [[Operation Basalt|Sark]] on the night of 3/4 October 1942 is notable because a few days after the incursion the Germans issued a propaganda communiqué implying at least one prisoner had escaped and two were shot while resisting having their hands tied. This instance of tying prisoner's hands contributed to [[Hitler]]'s decision to issue his [[Commando Order]] instructing that all captured Commandos or Commando-type personnel were to be executed as a matter of procedure. ||| 1941–44: Interlude ||| ||| +0 Western Front (World War II) ||| Operation Biting ||| Two early British raids for which battle honours were awarded were Operations ''[[Operation Collar (commando raid)|Collar]]'' in Boulogne (11 June 1940) and ''[[Operation Ambassador|Ambassador]]'' in Guernsey (14–15 July 1940). The raids for which the British awarded the 'North-West Europe Campaign of 1942' [[battle honour]] were: Operation ''[[Operation Biting|Biting]]'' - Bruneval (27–28 February 1942), [[St. Nazaire Raid|St Nazaire]] (27–28 March 1942), Operation ''[[Operation Myrmidon|Myrmidon]]'' - Bayonne (5 April 1942), Operation ''[[Operation Abercrombie|Abercrombie]]'' - Hardelot (21–22 April 1942), [[Dieppe raid|Dieppe]] (19 August 1942) and Operation - ''[[Operation Frankton|Frankton]]'' - Gironde (7–12 December 1942). ||| 1941–44: Interlude ||| ||| +0 Western Front (World War II) ||| Operation Blackcock ||| In January 1945 the German bridgehead over the river [[Roer]] between Heinsberg and Roermond was cleared during Operation ''[[Operation Blackcock|Blackcock]]'', followed by the pincer movement of the [[First Canadian Army]] in Operation ''[[Operation Veritable|Veritable]]'' advancing from the Nijmegen area of the Netherlands and the US Ninth Army crossing the [[Rur]] (Roer) in Operation [[Operation Grenade|Grenade'']] was planned to start on 8 February 1945, but it was delayed by two weeks when the Germans flooded the river valley by destroying the dam gates upstream. Field Marshal [[Gerd von Rundstedt]] requested permission to withdraw east behind the Rhine, arguing that further resistance would only delay the inevitable, but was ordered by Hitler to fight where his forces stood. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Invasion of Germany ||| +0 Western Front (World War II) ||| Operation Dragoon ||| On 15 August the Allies launched Operation ''[[Operation Dragoon|Dragoon]]'' – the invasion of Southern France between [[Toulon]] and [[Cannes]]. The [[Seventh United States Army#Operation Dragoon|US Seventh Army]] and the [[French First Army]], making up the [[US 6th Army Group]], rapidly consolidated this [[beachhead]] and liberated southern France in two weeks; they then moved north up the Rhone valley. Their advance only slowed down as they encountered regrouped and entrenched German troops in the [[Vosges Mountains]]. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Liberation of France ||| +0 Western Front (World War II) ||| Operation Queen ||| South of the [[Ardennes]], US forces fought from September until mid-December to push the Germans out of Lorraine and from behind the Siegfried Line. The crossing of the [[Moselle River]] and the capture of the fortress of [[Metz]] proved difficult for the US troops in the face of German reinforcements, supply shortages, and unfavorable weather.{{Citation needed|date=September 2009}} During September and October, the Allied 6th Army Group ([[U.S. Seventh Army]] and [[French First Army]]) fought a difficult campaign through the Vosges Mountains that was marked by dogged German resistance and slow advances. In November, however, the German front snapped under the pressure, resulting in sudden Allied advances that liberated [[Belfort]], [[Mulhouse]], and [[Strasbourg]], and placed Allied forces along the [[Rhine River]]. The Germans managed to hold a large bridgehead (the [[Colmar Pocket]]), on the western bank of the Rhine and centered around the city of [[Colmar]]. On 16 November the Allies started a large scale autumn offensive called Operation ''[[Operation Queen|Queen]]''. With its main thrust again through the [[Hurtgen Forest|Hürtgen Forest]], the offensive drove the Allies to the [[Rur River]], but failed in its core objectives to capture the Rur dams and pave the way towards the Rhine. The Allied operations were then succeeded by the German Ardennes offensive. ||| 1944–45: The Second Front ==<!-- [[West European Campaign (1944-1945)]] redirects to this section heading change this then please change that--&g ||| Allied advance from Paris to the Rhine ||| +0 Western New Guinea campaign ||| Battle of Biak ||| * [[Battle of Biak]] ||| Major battles and sub-campaigns ||| ||| +0 Western New Guinea campaign ||| Battle of Driniumor River ||| * [[Battle of Driniumor River]] ||| Major battles and sub-campaigns ||| ||| +0 Western New Guinea campaign ||| Battle of Noemfoor ||| * [[Battle of Noemfoor]] ||| Major battles and sub-campaigns ||| ||| +0 Western New Guinea campaign ||| Battle of Sansapor ||| * [[Battle of Sansapor]] ||| Major battles and sub-campaigns ||| ||| +0 Western Sahara War ||| Zemla Intifada ||| Raids and rebellions by the [[Indigenous peoples of Africa|indigenous]] [[Sahrawi people|Saharan]] population kept the Spanish forces out of much of the territory for a long time. [[Ma al-Aynayn]], the Saharan caïd of Smara, started an uprising against the [[France|French]] in the 1910s, at a time when [[France]] had expanded its influence and control in North-West Africa, he died in the same year and his son [[El Hiba]] succeeded him. French forces defeated him when he tried to conquer [[Marrakesh]], and in retaliation destroyed the holy city of [[Smara]] in 1913{{citation needed|date=August 2011}}. Not until the second destruction of Smara in 1934{{citation needed|date=August 2011}}, by joint Spanish and French forces, did the territory finally become subdued. [[Ifni War|Another uprising in 1956 – 1958]], initiated by the [[Moroccan Army of Liberation]], led to heavy fighting, but eventually the Spanish forces regained control, again with French aid. However, unrest simmered, and in 1967 the [[Harakat Tahrir]] arose to challenge Spanish rule peacefully. After the events of the [[Zemla Intifada]] in 1970, when Spanish police destroyed the organization and '[[forced disappearance|disappeared]]' its founder, [[Muhammad Bassiri]], Sahrawi nationalism again took a militant turn. ||| Background ||| Spanish Sahara ||| +0 Western Tai'an Campaign ||| World War II ||| '''Western [[Tai'an]] Campaign''' was a series of battles fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. The communists also refer this campaign as '''Campaign to Move Eastward''' (东进战役), and viewed this campaign as the prelude to [[Huaihai Campaign]]. ||| ||| ||| +0 Western theater of the American Revolutionary War ||| Battle of Blue Licks ||| In July 1782, more than 1,000 Indians gathered at Wapatomica, but the expedition was called off after scouts reported that George Rogers Clark was preparing to invade the Ohio Country from Kentucky. The reports turned out to be false, but Caldwell still managed to lead 300 Indians into Kentucky and deliver a devastating blow at the [[Battle of Blue Licks]] in August. With peace negotiations between the United States and Great Britain making progress, Caldwell was ordered to cease further operations. ||| 1782 – 'The Year of Blood' ||| ||| +0 Western theater of the American Revolutionary War ||| French and Indian War ||| When the American Revolutionary War began in 1775, the [[Ohio River]] marked a tenuous border between the American colonies and the American Indians of the Ohio Country. This border had its origins in the [[Proclamation of 1763]], which forbade British colonists from settling west of the [[Appalachian Mountains]]. The British Crown had issued the Proclamation after the [[French and Indian War]] (1754–1763) in order to prevent conflict between Indians and colonists in the vast territory newly acquired from France. Settlers and land speculators in Britain and America objected to this restriction, however, and so British officials negotiated two treaties with American Indians in 1768—the [[Treaty of Fort Stanwix]] and the [[Treaty of Hard Labour]]—which opened up land for settlement south of the Ohio River. Thereafter, tensions between British officials and colonists over western land policy diminished. ||| Background ||| ||| +0 Whiskey Rebellion ||| Northwest Indian War ||| In addition to the whiskey tax, westerners had a number of other grievances with the national government. Chief among these was the perception that the government was not adequately protecting the western frontier: the [[Northwest Indian War]] was going badly for the United States, with major losses in 1791. Furthermore, westerners were prohibited by Spain (which then owned [[Louisiana (New Spain)|Louisiana]]) from using the [[Mississippi River]] for commercial navigation. Until these issues were addressed, westerners felt the government was ignoring their security and economic welfare. Adding the whiskey excise to these existing grievances only increased tensions on the frontier. ||| Western grievances ||| ||| +0 Williamite War in Ireland ||| Battle of Culloden ||| For over a century after the war, Irish Catholics maintained a sentimental attachment to the Jacobite cause, portraying James and the Stuarts as the rightful monarchs who would have given a just settlement to Ireland, including self-government, restoration of confiscated lands and tolerance for Catholicism. Thousands of Irish soldiers left the country to serve the Stuart monarchs in the [[Irish Brigade (Spanish)]] and [[Irish Brigade (French)|Irish Brigade]] of the [[French Army]]. Until 1766 France and the Papacy remained committed to restoring the Stuarts to their British Kingdoms, at least one composite Irish battalion (500-men) drawn from Irish soldiers in the French service fought on the Jacobite side in the Scottish Jacobite uprisings up to the [[Battle of Culloden]] in 1746. ||| Long-term effects ||| ||| +0 Williamite War in Ireland ||| English Civil War ||| The war in Ireland began as a direct consequence of the [[Glorious Revolution]] in England. James, who was a [[Roman Catholic]], attempted to introduce freedom of religion for Catholics and bypass the [[English Parliament]] to introduce unpopular laws. For many in England, this was an unpleasant reminder of the rule of [[Charles I of England|Charles I]], whose conflict with the Parliament ended with the outbreak of the [[English Civil War]]. The breaking point in James' relationship with the English political class came in June 1688 when his second wife gave birth to a son, which opened the prospect of an enduring Catholic [[Stuart dynasty]]. This fear led some political figures to conspire to invite [[William III of England|William III of Orange]], [[stadtholder]] of the main provinces of the [[Dutch Republic]], to invade England. William had indicated that such an invitation would be a condition for a military intervention, which he desired primarily for military and strategic reasons. ||| Glorious Revolution ||| ||| +0 Williamite War in Ireland ||| Irish Confederate Wars ||| However, while [[James II of England|James II]] was unpopular in England, he had widespread popular support in Ireland. The Irish were almost all [[Roman Catholics]] and had [[Irish Confederate Wars|fought en masse]] for the Stuart dynasty in the [[Wars of the Three Kingdoms]] in the 1640s, in the hope of securing religious toleration and political self-government. They had been defeated by 1652 and were punished by the [[English Commonwealth]] regime with land confiscations and penal legislation. They were largely disappointed with the failure of [[Charles II of England|King Charles II]] to completely reverse this situation in the [[Act of Settlement 1662]]. ||| Glorious Revolution ||| ||| +0 Winter War ||| Battles of Khalkhin Gol ||| After the [[Battles of Khalkhin Gol]], the Soviet high command had divided into two factions. One side was represented by [[Spanish Civil War]] veterans General [[Pavel Rychagov]] representing the [[Soviet Air Forces|Red Air Force]], Soviet tank expert General [[Dmitry Pavlov (general)|Dmitry Pavlov]], and Stalin's favorite general, Marshal [[Grigory Kulik]], chief of artillery. ||| Soviet advance to the Mannerheim Line ||| Soviet military plan ||| +0 Winter War ||| Finnish Civil War ||| The outbreak of the First World War and the collapse of the Russian Empire during the [[Russian Revolution]] and [[Russian Civil War]] of 1917–1920 gave Finland a window of opportunity; on 6 December 1917, the [[Senate of Finland]] [[Finland's Declaration of Independence|declared the nation's independence]]. The new [[Bolshevik]] Russian government was weak, and with the threat of [[Russian Civil War|civil war]] looming Soviet Russia recognized the new Finnish government just three weeks after the declaration of independence. Sovereignty was fully achieved in May 1918 after a short [[Finnish Civil War|civil war]] and the expulsion of Bolshevik troops. ||| Background ||| Politics of Finland ||| +0 Winter War ||| Operation Barbarossa ||| The Supreme Military Soviet command met in April 1940, reviewed the lessons of the Finnish campaign, and recommended reforms. The role of frontline political commissars was reduced and old-fashioned ranks and forms of discipline were reintroduced. Clothing, equipment, and tactics for winter operations were improved. However, not all of these reforms had been completed when the Germans began [[Operation Barbarossa]] 15 months later. ||| Aftermath ||| Military consequences ||| +0 Winter War ||| Soviet invasion of Poland ||| The Soviet Union and [[Nazi Germany]] signed the [[Molotov–Ribbentrop Pact]] in August 1939. The pact was nominally a [[non-aggression treaty]], but it included a secret protocol in which the Eastern European countries were divided into [[spheres of interest]]. Finland fell into the Soviet sphere. On 1 September 1939, [[Invasion of Poland (1939)|Germany began its invasion of Poland]] and two days later Great Britain and France declared war against Germany. Shortly afterwards (17 September 1939), the Soviets [[Soviet invasion of Poland|invaded eastern Poland]]. The [[Baltic states]] were later [[Occupation and annexation of the Baltic states by the Soviet Union (1940)|forced to accept treaties]] allowing the Soviets to establish military bases and to station troops on their soil. ||| Background ||| Negotiations ||| +0 Winter War ||| Spanish Civil War ||| After the [[Battles of Khalkhin Gol]], the Soviet high command had divided into two factions. One side was represented by [[Spanish Civil War]] veterans General [[Pavel Rychagov]] representing the [[Soviet Air Forces|Red Air Force]], Soviet tank expert General [[Dmitry Pavlov (general)|Dmitry Pavlov]], and Stalin's favorite general, Marshal [[Grigory Kulik]], chief of artillery. ||| Soviet advance to the Mannerheim Line ||| Soviet military plan ||| +0 Withdrawal of U.S. troops from Iraq ||| United States presidential election, 2008 ||| The Burner Plan, formally entitled ''[[A Responsible Plan to End the War in Iraq]]'', was a 36-page policy paper presented 17 March 2008 by [[Darcy Burner]] and other 2008 Democratic congressional candidates, in cooperation with some retired national security officials. The plan outlined policy measures the candidates pledged to support in the [[United States presidential election, 2008]]. ||| Background ||| Burner Plan ||| +0 Women of Krusha e Madhe ||| Kosovo War ||| '''The Women of Krusha e Madhe''' ({{IPA|/ˈkruʃa e maðe/}}; {{lang-sq|Gratë e Krushës së Madhe}}; {{lang-sr|Жене у Великој Круши}}) are known as the Widowed Women of [[Kosovo]] because of the [[Massacre at Krusha e Madhe|massacre]] that occurred in their village. Throughout the dates 25, 26 and 27 of March in 1999 during the [[Kosovo War]], most, if not all, of the men were gathered up and shot to death by forces of the [[Military of Serbia and Montenegro|Yugoslav Army]]. The women and children fled [http://geographic.org/geographic_names/name.php?uni=501645&fid=3574&c=kosovo Krushe e Madhe] and headed to the Albanian border. Once the war was over and they returned, their entire village was flat because all their houses, mosques, schools, etc. had been burned to the ground. ||| ||| ||| +0 World War II ||| Northern Expedition ||| The [[Kuomintang]] (KMT) party in China launched a [[Northern Expedition|unification campaign]] against [[Warlord Era|regional warlords]] and nominally unified China in the mid-1920s, but was soon embroiled in a [[Chinese Civil War|civil war]] against its former [[Chinese Communist Party|Chinese communist]] allies. ||| Background ||| ||| +0 World War II ||| October Revolution ||| [[World War I]] had radically altered the [[Geopolitics|political]] European map, with the defeat of the [[Central Powers]]—including [[Austria-Hungary]], [[German Empire|Germany]] and the [[Ottoman Empire]]—and the 1917 [[Bolshevik]] [[October Revolution|seizure of power]] in [[Russian Republic|Russia]]. Meanwhile, existing victorious Allies such as France, Belgium, Italy, Greece and Romania gained territories, and new [[Nation states]] were created out of the collapse of Austria-Hungary and the Ottoman and [[Russian Empire]]s. ||| Background ||| ||| +0 World War II in Yugoslav Macedonia ||| Balkan Wars ||| Following the end of the [[Balkan Wars]] in 1912 and 1913, the [[Treaty of Bucharest (1913)|Treaty of Bucharest]] divided the region of Macedonia amongst the [[Kingdom of Greece]], the [[Kingdom of Bulgaria]] and the [[Kingdom of Serbia]]. The territory was up until that time part of the Ottoman Empire. ||| Background ||| ||| +0 World War II in Yugoslav Macedonia ||| Invasion of Yugoslavia ||| On 27 March, the regime of Prince Paul was overthrown by a military [[Yugoslav coup d'état|coup d'état]] with British support. The 17-year-old [[Peter II of Yugoslavia]] was declared to be of age and placed in power. General [[Dušan Simović]] became his Prime Minister. The Kingdom of Yugoslavia withdrew its support for the Axis ''de facto'' without formally renouncing the Pact. On 6 April 1941 the German armed forces (''[[Wehrmacht]]'') launched the [[Invasion of Yugoslavia|invasion of the Kingdom of Yugoslavia]] and quickly conquered it. ||| Occupation of Macedonia ||| Invasion of Yugoslavia ||| +0 World War II in Yugoslavia ||| Eastern Front (World War II) ||| The [[Air Force of the Independent State of Croatia]] (''Zrakoplovstvo Nezavisne Države Hrvatske'', or ZNDH) and the units of the [[Croatian Air Force Legion]] (''Hrvatska Zrakoplovna Legija'', or HZL), returned from service on the [[Eastern Front (World War II)|Eastern Front]] provided some level of air support (attack, fighter and transport) right up until May 1945, encountering and sometimes defeating opposing aircraft from the British [[Royal Air Force]], [[United States Air Force]] and the [[Soviet Air Force]]. Although 1944 had been a catastrophic year for the ZNDH, with aircraft losses amounting to 234, primarily on the ground, it entered 1945 with 196 machines. Further deliveries of new aircraft from Germany continued in the early months of 1945 to replace losses. By 10 March, the ZNDH had 23 [[Messerschmitt 109]] G&Ks, three [[Morane-Saulnier M.S.406]], six [[Fiat G.50]], and two [[Messerschmitt 110]] G fighters. The final deliveries of up-to-date German [[Messerschmitt 109]] G and K fighter aircraft were still taking place in March 1945. ||| 1945 ||| Partisan general offensive ||| +0 World War II in Yugoslavia ||| Operation Halyard ||| The Chetniks were praised for [[Operation Halyard|saving 500 downed Allied pilots]] in 1944. ||| 1944 ||| Partisan growth to domination ||| +0 World War II in Yugoslavia ||| Tehran Conference ||| Both the Yugoslav Partisans and the Chetnik movement initially resisted the occupation. However, after 1941, Chetniks extensively and systematically collaborated with the [[Military history of Italy during World War II|Italian occupation forces]] until the [[Italian capitulation]], and thereon also with [[Wehrmacht|German]] and Ustaše forces.{{sfn|Ramet|2006|pages=145–155|ps=: 'Both the Chetniks' political program and the extent of their collaboration have been amply, even voluminously, documented; it is more than a bit disappointing, thus, that people can still be found who believe that the Chetniks were doing anything besides attempting to realize a vision of an ethnically homogenous Greater Serbian state, which they intended to advance, in the short run, by '''a policy of collaboration''' with the Axis forces. The Chetniks collaborated extensively and systematically with the Italian occupation forces until the Italian capitulation in September 1943, and beginning in 1944, portions of the Chetnik movement of Draža Mihailović collaborated openly with the Germans and Ustaša forces in Serbia and Croatia.'}}{{sfn|Tomasevich|1975|page=246|ps=: '[...]the systematic and enduring Chetnik collaboration described in this study'}} The Axis mounted a [[Seven anti-Partisan offensives|series of offensives]] intended to destroy the Partisans, coming close to doing so in [[Battle of Neretva|winter]] and [[Battle of Sutjeska|spring]] of 1943. Despite the setbacks, the Partisans remained a credible fighting force, gaining [[Tehran Conference|recognition from the Western Allies]] and [[AVNOJ|laying the foundations]] for the [[SFRY|post-war Yugoslav state]]. With support in logistics and air power from the Western Allies, and [[Red Army|Soviet ground troops]] in the [[Belgrade Offensive]], the Partisans eventually gained control of the entire country and of border regions of [[Trieste#World War II and its aftermath|Italy]] and [[Carinthia (state)#From 1920 to the Present|Austria]]. ||| ||| ||| +0 World War III (film) ||| Battle of Khe Sanh ||| * The [[Vietnam War]]. Footage of the US Marines at [[Battle of Khe Sanh|Khe Sanh]] under attack from [[North Vietnamese Army]] artillery is used to illustrate the Soviet and East German airstrikes on [[Ramstein Air Base]] in West Germany. ||| Parallels and references to real life events ||| ||| +0 World War III (film) ||| Bosnian War ||| * The [[Bosnian War]] of 1992-95. Shots from aircraft cameras were used to illustrate NATO bombing of [[Legnica]]. ||| Parallels and references to real life events ||| ||| +0 Wounded Knee Massacre ||| World War II ||| Historian Will G. Robinson noted that, in contrast, only three Medals of Honor were awarded among the 64,000 South Dakotans who fought for four years of [[World War II]]. ||| Medal of Honor controversy ||| ||| +0 Wounded Knee Massacre ||| Wounded Knee incident ||| More than 80 years after the battle, beginning on February 27, 1973, Wounded Knee was the site of the [[Wounded Knee incident]], a 71-day standoff between militants of the [[American Indian Movement]]—who had chosen the site for its symbolic value—and federal law enforcement officials. ||| Aftermath ||| ||| +0 Wounded Knee incident ||| Wounded Knee Massacre ||| Oglala and AIM activists controlled the town for 71 days while the [[United States Marshals Service]], [[FBI]] agents, and other law enforcement agencies cordoned off the area. The activists chose the site of the 1890 [[Wounded Knee Massacre]] for its symbolic value. Both sides were armed, and shooting was frequent. A Cherokee and an Oglala Lakota were killed by shootings in April 1973. [[Perry Ray Robinson|Ray Robinson]], a [[civil rights]] activist who joined the protesters, disappeared during the events and is believed to have been murdered. Due to damage to the houses, the small community was not reoccupied until the 1990s. ||| ||| ||| +0 WrestleMania XXX ||| Occupy Wall Street ||| Frustrated over being constantly cost the WWE World Heavyweight Championship by the Authority, Bryan challenged Triple H to a match at WrestleMania XXX. When Triple H refused Bryan's challenge, Bryan brought a large group of fans on the March 10 episode of ''Raw'' to '[[Occupy Wall Street|occupy]]' the ring and refused to leave. An irate Triple H agreed to Bryan's demand for a WrestleMania match with the stipulation that if Bryan won, he would be inserted into the WWE World Heavyweight Championship match at the event. ||| Production ||| Storylines ||| +0 Xinjiang conflict ||| Russian military intervention in the Syrian Civil War ||| After the [[Russian military intervention in the Syrian Civil War]], photos of Uyghur fighters from [[Turkistan Islamic Party in Syria]] were released with captions in Arabic that said “standing up strongly to the Nusayri army and the Russians.” (المجاهدين التركستانيين يتصدى بقوة للجيش النصيري ومن قبل الروس). ||| Jihadist elements ||| Turkistan Islamic Party in Syria ||| +0 Yemeni Civil War (2015) ||| Cyclone Chapala ||| As the war dragged on through the summer and into the fall, things were made far worse when [[Cyclone Chapala]], the equivalent of a category 2 Hurricane, made landfall on 3 November. ||| Humanitarian situation ||| ||| +0 Yorktown campaign ||| Battle of Camden ||| By December 1780, the [[American Revolutionary War]]'s [[North America]]n theaters had reached a critical point. The [[Continental Army]] had suffered major defeats earlier in the year, with its southern armies either captured or dispersed in the [[Siege of Charleston|loss of Charleston]] and the [[Battle of Camden]] in the south, while the armies of [[George Washington]] and the British [[Commander-in-Chief, North America|commander-in-chief for North America]], [[Henry Clinton (American War of Independence)|Sir Henry Clinton]] watched each other around [[New York City]] in the north. ||| Background ||| ||| +0 Yorktown campaign ||| Battle of Cape Henry ||| De Tilley's expedition, and the strong encouragement of General Washington, who traveled to Newport to press the case, convinced Destouches to make a larger commitment. On March 8 he sailed with his entire fleet (7 ships of the line and several frigates, including the recently captured ''Romulus''), carrying French troops to join with Lafayette's in Virginia. Arbuthnot, whose [[Copper sheathing|copper-clad]] ships could sail faster than those of Destouches, reached [[Cape Henry]] on March 16, just ahead of the French fleet. The [[Battle of Cape Henry|ensuing battle]] was largely indecisive, but left Arbuthnot free to enter [[Lynnhaven River|Lynnhaven Bay]] and control access to Chesapeake Bay; Destouches returned to Newport. ||| British raiding in Virginia ||| American attempts at defense ||| +0 Yorktown campaign ||| Battle of Fort Royal ||| De Grasse had a somewhat successful campaign in the West Indies. His forces successfully [[Invasion of Tobago|captured Tobago]] in June after a [[Battle of Fort Royal|minor engagement]] with the British fleet. He sailed from Cap-Français on August 5, beginning a deliberately slow route north through a little-used channel in the [[Bahamas]]. ||| Allied decisions ||| ||| +0 Yorktown campaign ||| Battle of Rhode Island ||| French military planners had to balance competing demands for the 1781 campaign. After a series of unsuccessful attempts at cooperation with the Americans (leading to failed assaults on [[Battle of Rhode Island|Newport, Rhode Island]] and [[Siege of Savannah|Savannah, Georgia]]), they realized more active participation in North America was needed. However, they also needed to coordinate their actions with [[Spain]], where there was potential interest in making an assault on the British stronghold of [[Jamaica]]. It turned out that the Spanish were not interested in operations against Jamaica until after they had dealt with an expected British attempt to reinforce [[Great Siege of Gibraltar|besieged Gibraltar]], and merely wanted to be informed of the movements of the [[West Indies]] fleet. ||| Background ||| French and American planning for 1781 ||| +0 Yorktown campaign ||| Battle of the Chesapeake ||| British naval forces in North America and the [[West Indies]] were weaker than the combined fleets of France and [[Spain]], and, after some critical decisions and tactical missteps by British naval commanders, the French fleet of [[François Joseph Paul de Grasse|Paul de Grasse]] gained control over [[Chesapeake Bay]], blockading Cornwallis from naval support and delivering additional land forces to blockade him on land. The [[Royal Navy]] attempted to dispute this control, but Admiral Thomas Graves was defeated in the key [[Battle of the Chesapeake]] on September 5. American and French armies that had massed outside [[New York City]] began moving south late in August, and arrived near Yorktown in mid-September; deceptions about their movement successfully delayed attempts by Clinton to send more troops to Cornwallis. ||| ||| ||| +0 Yorktown campaign ||| Great Siege of Gibraltar ||| French military planners had to balance competing demands for the 1781 campaign. After a series of unsuccessful attempts at cooperation with the Americans (leading to failed assaults on [[Battle of Rhode Island|Newport, Rhode Island]] and [[Siege of Savannah|Savannah, Georgia]]), they realized more active participation in North America was needed. However, they also needed to coordinate their actions with [[Spain]], where there was potential interest in making an assault on the British stronghold of [[Jamaica]]. It turned out that the Spanish were not interested in operations against Jamaica until after they had dealt with an expected British attempt to reinforce [[Great Siege of Gibraltar|besieged Gibraltar]], and merely wanted to be informed of the movements of the [[West Indies]] fleet. ||| Background ||| French and American planning for 1781 ||| +0 Yorktown campaign ||| Siege of Charleston ||| By December 1780, the [[American Revolutionary War]]'s [[North America]]n theaters had reached a critical point. The [[Continental Army]] had suffered major defeats earlier in the year, with its southern armies either captured or dispersed in the [[Siege of Charleston|loss of Charleston]] and the [[Battle of Camden]] in the south, while the armies of [[George Washington]] and the British [[Commander-in-Chief, North America|commander-in-chief for North America]], [[Henry Clinton (American War of Independence)|Sir Henry Clinton]] watched each other around [[New York City]] in the north. ||| Background ||| ||| +0 Yorktown campaign ||| Siege of Yorktown ||| The '''Yorktown''' or '''Virginia campaign''' was a series of military maneuvers and battles during the [[American Revolutionary War]] that culminated in the decisive [[Siege of Yorktown]] in October 1781. The result of the campaign was the surrender of the [[British Army]] force of General [[Charles Cornwallis, 1st Marquess Cornwallis|Charles, Earl Cornwallis]], an event that led directly to the beginning of serious peace negotiations and the eventual end of the war. The campaign was marked by disagreements, indecision, and miscommunication on the part of British leaders, and by a remarkable set of cooperative decisions, at times in violation of orders, by the French and Americans. ||| ||| ||| +0 Zagreb rocket attacks ||| Croatian War of Independence ||| The '''Zagreb rocket attacks''' were a series of two [[artillery]] attacks conducted by [[Serb]] armed forces that fired [[surface-to-surface missile]]s on the [[Croatia]]n capital of [[Zagreb]] during the [[Croatian War of Independence]]. The attack killed seven {{cite web ||| ||| ||| +0 Zaian War ||| Battle of Verdun ||| The conflict in the Tafilalt distracted the French from their main war aims, draining French reinforcements in return for little economic gain and drawing comparisons to the recent [[Battle of Verdun]]. ||| Post-war conflicts ||| ||| +0 Zaragoza Offensive ||| Battle of Belchite (1937) ||| Modesto then decided to capture the small (3,800 inhabitants) and well fortified town of [[Battle of Belchite (1937)|Belchite]]. The Republican army cut the water supply of the town and the heat was appalling, but the defence of the besieged forces was vigorous. ||| The offensive ||| Belchite ||| +0 Zoot Suit Riots ||| Attack on Pearl Harbor ||| With the entry of the United States into the war in December 1941 following the [[Attack on Pearl Harbor|Japanese attack on Pearl Harbor]], the nation had to deal with the restrictions of [[rationing]] and the prospects of [[conscription]]. In March 1942, the [[War Production Board]]'s regulated the manufacture of mens' suits and indeed all clothing which contained wool. To achieve a 26% cut-back in the use of fabrics, the War Production Board drew up regulations for the manufacture of what ''[[Esquire (magazine)|Esquire]]'' magazine called, 'streamlined suits by Uncle Sam.' The regulations effectively forbade the manufacture of the wide-cut zoot suits and full women's skirts or dresses. Most legitimate tailoring companies ceased to manufacture or advertise any suits that fell outside the War Production Board's guidelines. ||| Origins ||| ||| +0 Zvornik massacre ||| Bijeljina massacre ||| The attack on Zvornik started on 8 April 1992, just a few days after the [[Bijeljina massacre|Serb seizure of Bijeljina]]. According to witness accounts, former JNA troops from the following garrisons were involved during the attack: ||| Attack on Zvornik ||| Build-up ||| +0 Šiauliai Offensive ||| Operation Doppelkopf ||| On 19 August, the assault, which had been dubbed ''Unternehmen Doppelkopf'' ([[Operation Doppelkopf]]) got underway. It was preceded by a bombardment by the [[German cruiser Prinz Eugen|cruiser ''Prinz Eugen'''s]] 203 mm guns, which destroyed forty-eight T-34s assembling in the square at [[Tukums]]. During these defensive actions, the ground forces were supported by the [[3rd Air Army (Soviet Union)|3rd Air Army]]. By August 20 the German forces, by counterattacks in the regions west of [[Tukums]] and [[Sloki]] and with support from the ''[[Kriegsmarine]]'', were able to push the Soviet troops away from the coastline in the southern sector and to restore the sea communications of their formations around [[Riga]]. Strachwitz and the ''Nordland'' remnants met on the 21st, and contact was restored between the army groups. ||| The offensive ||| German counter-attacks ||| +1 1 December 2013 Euromaidan riots ||| Euromaidan ||| A series of riots occurred in several locations of downtown [[Kiev]], [[Ukraine]], on 1 December 2013 in response to a violent police crackdown on [[Euromaidan]]'s peaceful protesters and journalist on the night of 30 November. The day saw the highest numbers of journalists injured by police in a single event since Ukraine's independence regain in 1991. Also, 1 December became the first instance of a public building being occupied by protesters in modern history of the country. ||| ||| ||| +1 11 December 2013 Euromaidan assault ||| Euromaidan ||| '''The assault of Euromaidan by security forces on 11 December 2013''' was an attempt of [[Viktor Yanukovych]]'s regime to wind up [[Euromaidan]] by means of a night assault using [[Berkut (special police force)|Berkut special police units]] and soldiers of [[Interior Troops of Ukraine|internal troops]]. Their tactics was the displacement of frontal peaceful protesters from slightly barricaded camps at the Independence Square and the part of [[Khreshchatyk]] Street toward the [[Bessarabska Square]]. The grounds for the assault – the requirements of public enforcement that arrived at the site and read out the resolution of the [[Pechersk Raion|Pecherskyi District]] Court. It was found later that such a procedure was illegal, as the public enforcement has the right to read out such demands only by 10 pm. In fact, the court's decision only had to do with the fact that [[Vitali Klitschko]] was forbidden to hinder citizens moving along the main streets . Vitali Klitschko himself was neither informed of that resolution nor given the opportunity to appeal against it. People responsible for the unlawful assault against peaceful protesters have not been identified. ||| ||| ||| +1 13 April 1999 Albania–Yugoslav border incident ||| Kosovo War ||| An incident took place on the '''Albania–Yugoslav border''' in April 1999 when the [[Military of Serbia and Montenegro|FR Yugoslav Army]] shelled several [[Border crossings of Albania|Albanian border towns]] around [[Krumë]], [[Tropojë]]. In these villages, refugees were being housed after fleeing the [[Kosovo War|war in Kosovo]] by crossing into Albania. ||| ||| ||| +1 1809 Gottscheer Rebellion ||| War of the Fifth Coalition ||| The '''1809 Gottscheer Rebellion''' ([[German language|German]]: ''Gottscheer Bauernaufstand'') was a revolt by the [[Gottschee Germans]] against the [[First French Empire]] during the French occupation of [[Gottschee]] following the [[War of the Fifth Coalition]]. ||| ||| ||| +1 1925 Hama uprising ||| Great Syrian Revolt ||| The '''1925 Hama uprising''' was one of the major events of the [[Great Syrian Revolt]]. It involved a rebel assault led by [[Fawzi al-Qawuqji]] against [[French Mandate of Syria|Mandatory French]] security installations in [[Hama]] and a subsequent uprising by residents sympathetic to the rebel cause. Heavy French bombardment of the city and the dispatch of reinforcements followed. The hostilities began on 4 October 1925 and negotiations between a delegation of Hama's leading families and the French authorities resulted in the rebels' withdrawal on 5 October. ||| ||| ||| +1 1929 Safed riots ||| 1929 Palestine riots ||| The '''1929 Safed riots''', during the [[1929 Palestine riots]], were the portion of the riots in Safed which culminated with the massacre of 18-20 Jewish residents of [[Safed]] on August 29, 1929. ||| ||| ||| +1 1939–40 Winter Offensive ||| Second Sino-Japanese War ||| The '''1939–40 Winter Offensive''' was one of the major engagements between the [[National Revolutionary Army]] and [[Imperial Japanese Army]] during the [[Second Sino-Japanese War]], in which the Chinese forces launched their first major counter-offensive on multiple fronts. Although this offensive failed to achieve its original objectives, some studies have shown that this operation came as a heavy blow to the Japanese forces, as well as a massive shock to the Japanese military command, which did not expect the Chinese forces to be able to launch an offensive operation on such a large scale. ||| ||| ||| +1 1948 Arab–Israeli War ||| 1948 Palestine war ||| The '''1948 Arab–Israeli War''' or the '''First Arab–Israeli War''' was fought between the [[State of Israel]] and a military coalition of Arab states. In Hebrew it is known as '''The War of Independence''' ({{lang-he|מלחמת העצמאות}}, ''Milkhemet Ha'Atzma'ut'') or the War of Liberation ({{lang-he|מלחמת השחרור}}, ''Milkhemet HaShikhrur''). This war formed the second stage of the [[1948 Palestine war]], known in Arabic as '''The Nakba''' or '''Catastrophe''' ({{lang-ar|النكبة}}, ''al-Nakba''). ||| ||| ||| +1 1971 Bangladesh genocide ||| Bangladesh Liberation War ||| The International Crimes Tribunal (ICT) is a war crimes tribunal in Bangladesh set up in 2009 to investigate and prosecute suspects for the genocide committed in 1971 by the [[Pakistan Army]] and their local collaborators, [[Razakars (Pakistan)|Razakars]], [[Al-Badr (East Pakistan)|Al-Badr]] and [[Al-Shams (Bangladesh)|Al-Shams]] during the [[Bangladesh Liberation War]]. During the [[Bangladeshi general election, 2008|2008 general election]], the [[Awami League]] (AL) pledged to establish the tribunals in response to long-demanded popular calls for trying war criminals. The first indictments were issued in 2010. ||| War crimes trial attempts ||| 2007—Present ||| +1 1973 Syrian General Staff Headquarters raid ||| Yom Kippur War ||| The '''1973 Syrian General Staff Headquarters Raid''' was an aerial strike carried out by the [[Israeli Air Force]] on October 9, 1973, the fourth day of the [[Yom Kippur War]]. Following a strike by Syrian [[surface-to-surface missile]]s against settlements and installations in northern [[Israel]], seven [[F-4 Phantom II]]s from [[119 Squadron (Israel)|119 Squadron]] attacked the Syrian General Staff Headquarters (GHQ) and adjacent buildings in downtown [[Damascus]]. ||| ||| ||| +1 1973 al-Mazzah Airport Raid ||| Yom Kippur War ||| The '''1973 al-Mazzah Airport Raid''' took place on October 13, 1973, and was one of a series of bombing raids carried out by the [[Israeli Air Force]] deep inside [[Syria]] during the [[Yom Kippur War]]. ||| ||| ||| +1 1973 raid on Egyptian missile bases ||| Yom Kippur War ||| The '''16 October 1973 raid on Egyptian missile bases''' was an [[Israel]]i raid that took place during the [[Yom Kippur War]]. Conducted by the [[Israel Defense Forces]]' 421st brigade, its goal was the creation of a corridor in the dense Egyptian air defense array, thus allowing [[Israeli Air Force]] activity in the vicinity of the Suez Canal. Egyptian military forces were significantly weakened in the operation due the destruction of several tanks and three missile bases. According to Israeli claims Israeli forces did not sustain any losses in personnel or equipment. ||| ||| ||| +1 1978 South Lebanon conflict ||| Lebanese Civil War ||| During Israeli raids from 1968 to 1977, some of the Palestinian towns and camps in the area were totally leveled. According to estimations, by October 1977 about 300,000 refugees, mainly Shiite Muslims, fled South Lebanon. The PLO-Israeli conflict increased political tensions between [[Maronite]] Christians and [[Druze]] on the one hand and Muslims on the other, adding to the factors behind the 1975–1990 [[Lebanese Civil War]]. {{cite book ||| Background ||| ||| +1 1981 Entumbane Uprising ||| Rhodesian Bush War ||| The '''1981 Entumbane Uprising''', also known as the '''Battle of Bulawayo''' or '''Entumbane II''', occurred between 8 and 12 February 1981 in and around [[Bulawayo]], Zimbabwe amid political tensions in the newly independent state. [[Zimbabwe People's Revolutionary Army]] (ZIPRA) guerrillas, mainly in the city's western suburb of Entumbane, rebelled, creating a situation that threatened to develop into a fresh civil war, barely a year after the end of the [[Rhodesian Bush War|Bush War]]. The [[Rhodesian African Rifles]] (RAR) and other white-commanded elements of the former [[Rhodesian Security Forces]], fighting for the Zimbabwean government as part of the new [[Zimbabwe National Army]], put down the uprising. Groups of [[Zimbabwe African National Liberation Army]] (ZANLA) fighters attacked both ZIPRA and the government forces during the revolt, which followed a smaller [[1980 Entumbane clashes|outbreak]] of fighting between guerrillas in November 1980. ||| ||| ||| +1 1982 Lebanon War ||| Lebanese Civil War ||| Following the assassination of [[President of Lebanon|Lebanese President]] Bachir Gemayel, Israel's position in Beirut became untenable and the signing of a peace treaty became increasingly unlikely. Outrage following Israel's role in the Phalangist-perpetrated [[Sabra and Shatila massacre]], of mostly Palestinians and Lebanese Shiites, and Israeli popular disillusionment with the war would lead to a gradual withdrawal from Beirut to the areas claimed by the self-proclaimed [[Free Lebanon State]] in southern Lebanon (later to become [[South lebanon security belt]]), which was initiated following the [[17 May Agreement]] and Syria's change of attitude towards the PLO. After Israeli forces withdrew from most Lebanon, the [[War of the Camps]] broke out between Lebanese factions, the remains of PLO and Syria, in which Syria fought its former Palestinian allies. At the same time, Shi'a militant groups began consolidating and waging a low-intensity [[Guerrilla warfare|guerrilla war]] over the Israeli occupation of southern Lebanon, leading to [[South Lebanon conflict (1985–2000)|15 years of low-scale armed conflict]]. The [[Lebanese Civil War]] would continue until 1990, at which point [[Syrian occupation of Lebanon|Syria had established complete dominance over Lebanon]]. ||| ||| ||| +1 1983 Beirut barracks bombing ||| Lebanese Civil War ||| The '''Beirut Barracks Bombings''' (October 23, 1983, in [[Beirut]], [[Lebanon]]) occurred during the [[Lebanese Civil War]] when two [[truck bomb]]s struck separate buildings housing [[Military of the United States|United States]] and [[Military of France|French]] military forces—members of the [[Multinational Force in Lebanon|Multinational Force (MNF) in Lebanon]]—killing 299 American and French servicemen. An obscure group calling itself '[[Islamic Jihad Organization|Islamic Jihad]]' claimed responsibility for the bombings. ||| ||| ||| +1 1983 United States embassy bombing ||| Lebanese Civil War ||| The attack came in the wake of the intervention of a [[Multinational Force in Lebanon|Multinational Force]], made up of Western countries, including the U.S., in the [[Lebanese Civil War]], to try to restore order and central government authority. ||| ||| ||| +1 1991 uprising in Sulaymaniyah ||| 1991 uprisings in Iraq ||| The '''1991 uprising in Sulaymaniyah''' was one of biggest [[1991 uprisings in Iraq]]. [[Sulaymaniyah]], a [[Kurd]]ish city of over 100,000 population, was the first Iraqi city to be captured by rebels and the last one to fall. The city was recaptured by Kurdish rebels, after the Peshmerga launched a new offensive on 20 July. ||| ||| ||| +1 1992 European Community Monitor Mission helicopter downing ||| Croatian War of Independence ||| The '''1992 European Community Monitor Mission helicopter downing''' was an incident that occurred on 7 January 1992, during the [[Croatian War of Independence]], in which a [[European Community Monitor Mission]] (ECMM) helicopter carrying five [[European Community]] (EC) [[military observer|observers]] was downed by a [[Yugoslav Air Force]] [[Mikoyan-Gurevich MiG-21]], in the air space above the village of [[Podrute]], near [[Novi Marof]], [[Croatia]]. An Italian and a French officer and three Italian [[non-commissioned officer]]s were killed. Another ECMM helicopter flying in formation with the attacked helicopter made an emergency landing. The second helicopter carried a crew and a visiting diplomat, all of whom survived. The incident was condemned by the [[United Nations Security Council]] and the EC. As a result of the incident, the [[SFR Yugoslavia|Yugoslav]] authorities suspended the head of the air force, and the Yugoslav defense minister, [[General]] [[Veljko Kadijević]], resigned his post. The events followed the end of the first stage of the war in Croatia and closely preceded the country's international recognition. ||| ||| ||| +1 2003 invasion of Iraq ||| Iraq War ||| The '''2003 invasion of Iraq''' lasted from 19 March to 1 May 2003 and signaled the start of the [[Iraq War]], which was dubbed Operation Iraqi Freedom by the United States (prior to 19 March, the mission in Iraq was called [[Operation Enduring Freedom]], a carryover from the [[NATO War in Afghanistan|War in Afghanistan]]). The invasion consisted of 21 days of major combat operations, in which a combined force of troops from the [[United States]], the [[United Kingdom]], [[Australia]] and [[Poland]] invaded [[Iraq]] and deposed the [[Ba'athist]] [[Ba'ath Party (Iraqi-dominated faction)|government]] of [[Saddam Hussein]]. The invasion phase consisted primarily of a conventionally fought war which concluded with the capture of the Iraqi capital of [[Baghdad]] by American forces. ||| ||| ||| +1 2004 Adjara crisis ||| Rose Revolution ||| The '''Adjara crisis''' refers to a political crisis in [[Georgia (country)|Georgia]]'s [[Adjara]]n Autonomous Republic, then led by [[Aslan Abashidze]], who refused to obey the central authorities after President [[Eduard Shevardnadze]]'s ousting during the [[Rose Revolution]] of November 2003. The crisis threatened to develop into military confrontation as both sides mobilized their forces at the internal border. However, Georgia's post-revolutionary government of President [[Mikheil Saakashvili]] managed to avoid bloodshed and with the help of Adjaran opposition reasserted its supremacy. Abashidze left the region in exile in May 2004 and was succeeded by [[Levan Varshalomidze]]. ||| ||| ||| +1 2004 French–Ivorian clashes ||| First Ivorian Civil War ||| In 2002, a [[First Ivorian Civil War|civil war broke out]] in Côte d'Ivoire between Ivorian military and other forces loyal to [[Laurent Gbagbo]], the [[List of heads of state of Côte d'Ivoire|Ivorian president]] since 2000, and rebel forces identified with the [[Forces Nouvelles de Côte d'Ivoire]]. Although most of the fighting ended by late 2004, the country remained split in two, with a rebel-held north and a government-held south. ||| Background ||| ||| +1 2006 Hezbollah cross-border raid ||| 2006 Lebanon War ||| Using rockets fired on several Israeli towns as a diversion, Hezbollah militants crossed from Lebanon into Israel and ambushed two [[Israeli Army]] vehicles, killing three soldiers and abducting two other soldiers. Another five soldiers were killed inside Lebanese territory in a failed rescue attempt. Hezbollah demanded the release of Lebanese prisoners held by Israel in exchange for the release of the abducted soldiers. Israel refused and launched a large-scale military campaign across Lebanon in response to the Hezbollah incursion. This marked the start of the [[2006 Lebanon War]]. Two years later, on 16 July 2008, the bodies of the two abducted soldiers were returned to Israel by Hezbollah in exchange for [[Samir Kuntar]] and four Hezbollah prisoners. ||| ||| ||| +1 2008 attack on Omdurman and Khartoum ||| War in Darfur ||| It was the first time that the [[War in Darfur]], previously confined to western Sudan, reached the country's capital. Overall, the war has claimed the lives of up to 300,000 people, with 2.5 million more made homeless since 2003 (the United States has labeled the conflict in Darfur as genocide, a charge the Sudanese government has rejected). Despite [[Second Sudanese Civil War|decades of warfare]] in [[Southern Sudan]], Khartoum had not experienced any street fighting since 1976. ||| ||| ||| +1 2008–09 Sri Lankan Army Northern offensive ||| Sri Lankan Civil War ||| The '''2008–2009 SLA Northern offensive''' was an armed conflict in the [[Northern Province, Sri Lanka|northern Province]] of Sri Lanka between the [[military of Sri Lanka]] and the separatist [[Liberation Tigers of Tamil Eelam]] (LTTE). The battle broke with the [[Sri Lanka Army]] (SLA) offensive attempting to break through the LTTE defence lines in the north of the island, aiming to conclude the country's [[Sri Lankan Civil War|25-year-old civil war]] by military victory. ||| ||| ||| +1 2009 Eastern Congo offensive ||| Rwandan Genocide ||| The '''2009 Eastern Congo offensive''' was a joint [[Democratic Republic of the Congo|Congo]]-[[Rwanda]] military offensive against the [[Hutu]] [[Democratic Forces for the Liberation of Rwanda|FDLR]] [[List of active rebel groups|rebel group]] descended from those groups that carried out the [[Rwandan Genocide|1994 Rwanda genocide]]. Two operations were carried out, 'Kimia II' and 'Umoja Wetu.' 'Kimia' can be translated as 'calm.' “Umoja Wetu” is [[Swahili language|Swahili]] for “Our Unity”. ||| ||| ||| +1 2010 South Kyrgyzstan ethnic clashes ||| Kyrgyz Revolution of 2010 ||| The '''2010 South Kyrgyzstan riots''' ({{lang-ky|Ош коогалаңы}}; {{lang-uz|Qirgʻiziston janubidagi tartibsizliklar, Қирғизистон жанубидаги тартибсизликлар}}; {{lang-ru|link=no|Беспорядки на юге Киргизии}}) were clashes between ethnic [[Kyrgyz people|Kyrgyz]] and [[Uzbeks]] in southern [[Kyrgyzstan]], primarily in the cities of [[Osh]] and [[Jalal-Abad]], in the aftermath of the ouster of former President [[Kurmanbek Bakiyev]] on 7 April. It is part of the larger [[Kyrgyz Revolution of 2010]]. Violence that started between Kyrgyz and Uzbeks on 19 May in Jalal-Abad escalated on 10 June in Osh. ||| ||| ||| +1 2011 Azerbaijani protests ||| Arab Spring ||| The [[European Union]], the [[United States Department of State]], [[Amnesty International]], and other organizations called on the government to release political prisoners and allow for [[free assembly]]. Meanwhile, Azerbaijani Prosecutor General [[Zakir Qaralov]] vowed to 'suppress' protests, comparing them to [[Arab Spring|incidents]] in 'other countries' and saying that the government would not allow them to go forward. ||| ||| ||| +1 2011 Chinese pro-democracy protests ||| Arab Spring ||| ''Time'' suggested that though there are many similarities between the complaints [[Arab Spring|voiced by the people in Arab Spring]] and those voiced by the Chinese people, the state's tighter grip on the country's media, Internet and other communication forums pose difficulties for anyone trying to organise mass demonstrations. ||| Reactions ||| International ||| +1 2011 Israeli border demonstrations ||| Arab Spring ||| Inspired by the [[Arab Spring|uprisings and revolutions taking place in the Arab world]], Palestinians used Facebook to call for mass protests throughout the region on 15 May 2011 Nakba Day. ||| 15 May events ||| ||| +1 2011 Khuzestan protests ||| Arab Spring ||| The '''2011 Khuzestan protests''', known among protesters as the '''Ahvaz Day of Rage''', relates to violent protests, which erupted on 15 April 2011 in [[Khuzestan Province|Iranian Khuzestan]], to mark an anniversary of the [[2005 Ahvaz unrest]], and as a response to the regional [[Arab Spring]]. The protests lasted for 4 days and resulted in 12 to 15 protesters killed and many wounded and arrested. 1 security officer was killed as well, and another wounded. ||| ||| ||| +1 2011 Lebanese protests ||| Arab Spring ||| The '''2011 Lebanese protests''' were seen as influenced by the [[Arab Spring]]. The main protests focused on calls for political reform especially against [[Confessionalism (politics)|confessionalism]] in [[Lebanon]]. The protests initiated in early 2011, and dimmed by the end of the year. In another aspect of the Arab Spring, Lebanese pro and anti-[[Bashar al-Assad|Assad]] factions descended into [[2012 conflict in Lebanon|sectarian violence]], which culminated in May–June 2012. ||| ||| ||| +1 2011 Western Saharan protests ||| Arab Spring ||| On 8 April, families of '[[political prisoner]]s' held a new protest in the Moroccan-administered city in a bid to draw attention to the alleged poor treatment of Sahrawi detainees and call upon Moroccan authorities for their release, a Sahrawi human rights group said. The group also claimed that though police and intelligence officers kept a close watch on the vigil, protesters were nonviolent and no clashes erupted. Similar to major days of demonstration in other [[Arab world|Arab states]] experiencing [[Arab Spring|concurrent protests]], the vigil was held on a Friday, though it was unclear if this was intentional on the part of protest organizers. ||| Timeline ||| Laayoune sit-ins ||| +1 2011–12 Iranian protests ||| Arab Spring ||| The '''2011–12 protests in Iran''' were a series of demonstrations in Iran which began on 14 February 2011, called 'The Day of Rage'. The protests followed the [[2009–2010 Iranian election protests]] and were influenced by [[Arab Spring|other concurrent protests in the region]]. {{cite news ||| ||| ||| +1 2011–12 Mauritanian protests ||| Arab Spring ||| The '''2011–13 Mauritanian protests''' are a series of protests in the [[North Africa]]n country of [[Mauritania]] that started in January 2011, concurrent with the [[Arab Spring]], and continued into 2012. The largely peaceful protest movement has demanded President [[Mohamed Ould Abdel Aziz]] institute political, economic, and legal reforms. Common themes of protest have included [[Slavery in Mauritania|slavery]], which is officially illegal in Mauritania but is widespread in the country, ||| ||| ||| +1 2012 Homs offensive ||| Siege of Homs ||| The '''2012 [[Homs]] offensive''' was a Syrian Army offensive on the armed rebellion stronghold of Homs, within the scope of the [[Siege of Homs]], beginning in early February 2012 and ending with the U.N. brokered cease fire on April 14, 2012. ||| ||| ||| +1 2013 India–Pakistan border skirmishes ||| Kashmir conflict ||| The '''2013 India–Pakistan border incidents''' was a series of armed skirmishes along the [[Line of Control]] (LoC) in the disputed [[Kashmir conflict|Kashmir]] area. Starting from the mid-January 2013, they have been described as the 'worst bout of fighting in the region in nearly 10 years'. ||| ||| ||| +1 2013 Lahad Datu standoff ||| North Borneo dispute ||| The '''2013 Lahad Datu standoff''' was a military conflict that started on 11 February 2013 and ended on 24 March 2013. was sent by [[Jamalul Kiram III]], one of the claimants to the throne of the [[Sultanate of Sulu]]. Kiram stated that their objective was to assert the unresolved [[North Borneo dispute|territorial claim]] of the Philippines to eastern Sabah (the former [[North Borneo]]). Malaysian security forces surrounded the village of Tanduo in Lahad Datu where the group had gathered and, after several weeks of negotiations and unmet deadlines for the intruders to withdraw, the Malaysian security forces attacked and routed the Sulu militants. ||| ||| ||| +1 2014 Euromaidan regional state administration occupations ||| Euromaidan ||| Ukraine became gripped by unrest since [[President of Ukraine|President]] [[Viktor Yanukovych]] refused to sign [[Ukraine–European Union Association Agreement|an association agreement]] with the [[European Union]] on 21 November 2013. A widespread movement known as '[[Euromaidan]]' demanded closer ties with the European Union, and the ousting of President Yanukovych. Significant support for the movement built in [[Western Ukraine|western Ukrainian]] oblasts as the severity of the unrest in [[Kiev]] grew. As a result, protesters in these regions began to seize control of the oblast governor's offices, known as regional state administration (RSA) buildings. ||| Background ||| ||| +1 2014 Hrushevskoho Street riots ||| Euromaidan ||| In response to [[Anti-protest laws in Ukraine|anti-protest laws]] in [[Ukraine]] (announced on 16 January 2014 and enacted on 21 January 2014), a standoff between protesters and police began on 19 January 2014 that was precipitated by a series of [[riot]]s in central [[Kiev]] on [[Hrushevskoho Street]], outside [[Valeriy Lobanovskyi Dynamo Stadium|Dynamo Stadium]] and adjacent to the ongoing [[Euromaidan]] protests. ||| ||| ||| +1 2014 Ukrainian revolution ||| Euromaidan ||| The '''[[Ukraine|Ukrainian]] revolution''' of February 2014 (also known as the ''[[Euromaidan]] Revolution'' or ''Revolution of Dignity'' {{lang-uk|Революція гідності}}) took place after a series of violent events involving protesters, riot police and unknown shooters in capital [[Kiev]] that resulted in the ousting of the then [[President of Ukraine]], [[Viktor Yanukovych]]. ||| ||| ||| +1 2014–15 India–Pakistan border skirmishes ||| Kashmir conflict ||| The '''2014–15 India–Pakistan border skirmishes''' are a series of ongoing armed skirmishes and firing exchange between the [[Border Security Force]] and [[Pakistan Rangers]] along the [[Line of Control]] (LoC) in the [[Kashmir conflict|disputed Kashmir]] region and [[Punjab region|Punjab]]. Started from mid-July 2014, military officials and media reports of both countries gave different accounts of the incidents, each accusing the other of initiating the hostilities. The incident sparked outrage both in [[News channels in Pakistan|Pakistan]] and [[News channels in India|India]] and harsh reactions by the [[Indian Army|Indian]] and [[Pakistan Armed Forces|Pakistan armed forces]] and governments. ||| ||| ||| +1 2014–15 Russian military intervention in Ukraine ||| 2014 pro-Russian unrest in Ukraine ||| The war in Donbass is an armed conflict in the [[Donbass]] region of [[Ukraine]]. From the beginning of March 2014, demonstrations by [[Russophilia|pro-Russian]] and anti-government groups took place in the [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] oblasts of Ukraine, together commonly called the 'Donbass', in the aftermath of the [[2014 Ukrainian revolution]] and the [[Euromaidan]] movement. These demonstrations, which followed the [[annexation of Crimea by the Russian Federation]], and which were part of a wider group of [[2014 pro-Russian unrest in Ukraine|concurrent pro-Russian protests across southern and eastern Ukraine]], escalated into an [[War|armed conflict]] between the [[Separatism|separatist forces]] of the self-declared [[Donetsk People's Republic|Donetsk]] and [[Lugansk People's Republic|Lugansk]] People's Republics (DPR and LPR respectively), and the [[Government of Ukraine|Ukrainian government]]. ||| Donbass ||| ||| +1 2015 Kuwait mosque bombing ||| 2015 Ramadan attacks ||| [[2015 Ramadan attacks|Three other Islamist attacks]] took place on the same day in France, Tunisia, and Somalia. The attacks followed an audio message released three days earlier by [[Islamic State of Iraq and the Levant|ISIS]] senior leader, [[Abu Mohammad al-Adnani]], encouraging militants everywhere to attack the stated enemies of ISIS during the month of [[Ramadan]]. No definitive link between the attacks has yet been established. [[Saint-Quentin-Fallavier attack|One attack, at a French factory]], resulted in the beheading of one person; [[Sousse attacks|another, at a Tunisian beach resort]], killed 38, most of them tourists; and the other, [[2015 Leego attack|an attack on an African Union base]] undertaken by [[Al-Shabaab (militant group)|Al-Shabaab]], killed at least 70. ||| ||| ||| +1 2015 Sousse attacks ||| 2015 Ramadan attacks ||| [[2015 Ramadan attacks|Four other Islamist attacks]] took place on the same day in France, Kuwait, Syria and Somalia. The attacks followed an audio message released three days earlier by [[Islamic State of Iraq and the Levant|ISIL]] senior leader [[Abu Mohammad al-Adnani]] encouraging militants everywhere to attack during the month of [[Ramadan]]. No definitive link between the attacks has yet been established. [[Saint-Quentin-Fallavier attack|One attack, at a French factory]], resulted in the beheading of one person; another [[2015 Kuwait mosque bombing|bombing at a Shia mosque in Kuwait City]] killed at least 27; and the other [[2015 Leego attack|attack on an African Union base]] in Somalia undertaken by [[Al-Shabaab (militant group)|Al-Shabaab]], killed at least 70. Another attack on the day took place in [[Hasakeh]] in Syria. A suicide bomber blew himself up and killed 20 people. ||| Other Islamist attacks ||| ||| +1 6th Airborne Division advance to the River Seine ||| Operation Overlord ||| The '''6th Airborne Division advance to the River Seine''' occurred in August 1944, in the later stages of [[Operation Overlord]] following the [[German Army (Wehrmacht)|German Army]]'s defeat in the [[Falaise pocket]], during the [[World War II|Second World War]]. ||| ||| ||| +1 6th Airborne Division advance to the River Seine ||| World War II ||| The '''6th Airborne Division advance to the River Seine''' occurred in August 1944, in the later stages of [[Operation Overlord]] following the [[German Army (Wehrmacht)|German Army]]'s defeat in the [[Falaise pocket]], during the [[World War II|Second World War]]. ||| ||| ||| +1 Action at Abraham's Creek ||| American Civil War ||| The '''Action at Abraham's Creek''' was an engagement on September 13, 1864 between [[Union Army]] and [[Confederate States Army]] forces during a Union reconnaissance in force toward [[Winchester, Virginia]]. The action occurred during skirmishing, maneuvering and scouting before the [[Third Battle of Winchester]] on September 19, 1864 in the [[Valley Campaigns of 1864]] during the [[American Civil War]]. ||| ||| ||| +1 Action at Ashley's Station ||| American Civil War ||| The '''Action at Ashley's Station''' was a large engagement fought between [[Confederate States Army]] cavalry raiders under [[Brigadier General (CSA)|Brigadier General]] [[Joseph O. Shelby]] and [[Union Army]] garrison forces under the overall command of [[Brigadier general (United States)|Brigadier General]] [[Christopher Columbus Andrews]] and immediate commands of [[Colonel (United States)|Colonel]] [[Greenville M. Mitchell]] and Colonel [[Washington F. Geiger]] in northeast Arkansas on August 24, 1864 during the [[American Civil War]]. ||| ||| ||| +1 Action of 12 December 1782 ||| American Revolutionary War ||| The action was the final clash of arms in which American forces were engaged before the [[Treaty of Paris (1783)|Treaty of Paris]] concluded the [[American Revolutionary War]]. ||| Aftermath ||| ||| +1 Action of 12 May 1796 ||| French Revolutionary Wars ||| The '''Action of 12 May 1796''' was a minor naval engagement during the [[French Revolutionary Wars]] between a squadron of British [[Royal Navy]] [[frigates]] and a frigate and four smaller ships of the [[Dutch Navy|Navy]] of the [[Batavian Republic]]. The British squadron had been detached on the previous day from the British North Sea fleet under Admiral [[Adam Duncan, 1st Viscount Duncan|Adam Duncan]], which was cruising off the Batavian fleet anchorage at the [[Texel]], while the Batavian squadron was returning to the Netherlands from the Norwegian coast where it had been sheltering since suffering defeat at the [[Action of 22 August 1795]] the previous year. As the Batavian squadron neared the Batavian coast, the British squadron under Captain [[Lawrence Halstead]] attacked. ||| ||| ||| +1 Action of 12 October 1950 ||| Korean War ||| The '''Action of 12 October 1950''' was a battle fought during the [[Korean War]]. While conducting [[Blockade of Wonsan#Operation Wonsan|Operation Wonsan]] against [[sea mines]] in [[Wonsan, North Korea|Wonsan Harbor]], a squadron of [[US Navy]] warships was attacked by [[Korean People's Army|North Korean Army]] (KPA) [[shore battery|batteries]]. During the operation, two US ships struck mines and sank while the remaining vessels and aircraft silenced the enemy guns. --> ||| ||| ||| +1 Action of 14 February 1944 ||| Pacific War ||| The '''Action of 14 February 1944''' refers to the sinking of a [[Nazi Germany|German]] [[U-boat]] off the [[Strait of Malacca]] during [[World War II]] by a [[United Kingdom|British]] [[submarine]]. It was one of the few naval engagements of the [[Pacific War|Asian and Pacific theater]] involving German and [[Italy|Italian]] forces. ||| ||| ||| +1 Action of 14 June 1742 ||| War of the Austrian Succession ||| The '''Action of 14 June 1742''' was a minor naval battle of the [[War of the Austrian Succession]] in which a small British squadron under Captain Richard Norris burned 5 Spanish royal galleys at the French port of [[Saint Tropez]]. Norris had surprised the galleys near [[Île Sainte-Marguerite|Sainte-Marguerite]] and had chased and driven them into the French port. The British captain, in spite of alleged French neutrality, followed the Spanish vessels into the port and destroyed them at slight cost. ||| ||| ||| +1 Action of 15 July 1798 ||| French Revolutionary Wars ||| The '''Action of 15 July 1798''' was a minor naval battle of the [[French Revolutionary Wars]], fought off the Spanish Mediterranean coast by the [[Royal Navy]] [[ship of the line]] [[HMS Lion (1777)|HMS ''Lion'']] under Captain [[Manley Dixon]] and a squadron of four [[Spanish Navy]] [[frigates]] under Commodore Don Felix O'Neil. ''Lion'' was one of several ships sent into the Western Mediterranean by Vice-Admiral [[John Jervis, 1st Earl of St Vincent|Earl St Vincent]], commander of the British Mediterranean Fleet based at the [[Tagus]] in Portugal during the late spring of 1798. The Spanish squadron was a raiding force that had sailed from [[Cartagena, Spain|Cartagena]] in Murcia seven days earlier, and was intercepted while returning to its base after an unsuccessful cruise. Although together the Spanish vessels outweighed the British ship, individually they were weaker and Commodore O'Neil failed to ensure that his manoeuvrees were co-ordinated. As a result, one of the frigates, [[Spanish frigate Santa Dorotea|''Santa Dorotea'']], fell out of the [[line of battle]] and was attacked by ''Lion''. ||| ||| ||| +1 Action of 16 October 1799 ||| French Revolutionary Wars ||| The '''Action of 16 October 1799''' was a minor naval engagement during the [[French Revolutionary Wars]] between a squadron of British [[Royal Navy]] [[frigates]] and two [[frigates]] of the [[Spanish Navy]] close to the Spanish naval port of [[Vigo]] in [[Galicia (Spain)|Galicia]]. The Spanish ships were a treasure convoy, carrying silver [[Bullion coins|specie]] and luxury trade goods across the [[Atlantic Ocean]] from the colonies of [[New Spain]] to [[Spain]]. Sighted by British frigate [[HMS Naiad (1797)|HMS ''Naiad'']] enforcing the [[blockade]] of Vigo late on the 15 October, the Spanish ships were in the last stages of their journey. Turning to flee from ''Naiad'', the Spanish soon found themselves surrounded as more British frigates closed in. ||| ||| ||| +1 Action of 18 August 1798 ||| French Revolutionary Wars ||| The '''Action of 18 August 1798''' was a minor naval engagement of the [[French Revolutionary Wars]], fought between the British [[fourth rate]] ship [[HMS Leander (1780)|HMS ''Leander'']] and the French [[ship of the line]] [[French ship Le Généreux|''Généreux'']]. Both ships had been engaged at the [[Battle of the Nile]] three weeks earlier, in which a British fleet under Rear-Admiral [[Sir Horatio Nelson]] had destroyed a French fleet at [[Aboukir Bay]] on the [[Mediterranean]] coast of [[Egypt]]. ''Généreux'' was one of only four French ships to survive the battle, while ''Leander'' had been detached from the British fleet by Nelson on 6 August. On board, Captain [[Edward Berry]] sailed as a passenger, charged with carrying despatches to the squadron under [[John Jervis, 1st Earl of St Vincent|Earl St Vincent]] off [[Cadiz]]. On 18 August, while passing the western shore of [[Crete]], ''Leander'' was intercepted and attacked by ''Généreux'', which had separated from the rest of the French survivors the day before. ||| ||| ||| +1 Action of 19 February 1801 ||| French Revolutionary Wars ||| The '''Action of 19 February 1801''' was a minor naval battle fought off [[Ceuta]] in Spanish North Africa in February 1801 between [[frigate]]s of the [[French Navy|French]] and [[Royal Navy|Royal Navies]] during the [[French Revolutionary Wars]]. The engagement formed part of a series of actions fought to prevent the French from resupplying their garrison in [[Egypt]], which had been trapped there without significant reinforcement since the defeat of the French Mediterranean Fleet at the [[Battle of the Nile]] two and a half years earlier. The leader of the Egyptian expedition, General [[Napoleon Bonaparte]], had returned to France in 1799 and promised aid to the troops left behind, prompting several expeditions to the region carrying reinforcements. ||| ||| ||| +1 Action of 2 March 1808 ||| Gunboat War ||| The '''Action of 2 March 1808''' was a minor naval battle between the [[Royal Navy]]'s 18-gun [[Cruizer class brig-sloop|''Cruizer''-class]] [[brig-sloop]] [[HMS Sappho (1806)|HMS ''Sappho'']], and the 28-gun, [[Denmark|Danish]] two-decker brig ''Admiral Yawl'', during the [[Gunboat War]]. ''Sappho'', under the command of Captain George Langford, discovered and chased ''Admiral Yawl'', which was steering a course in order to cut off several merchant vessels to leeward. After a short engagement ''Sappho'' captured the ''Admiral Yawl'', commanded by [[Jørgen Jørgensen]]. ||| ||| ||| +1 Action of 20 October 1793 ||| French Revolutionary Wars ||| The '''Action of 20 October 1793''' was a minor naval engagement of the [[French Revolutionary Wars]] fought off Cape Barfleur on the French coast of the [[English Channel]]. The early months of the war, which had begun in February, had seen a number of French [[frigates]] raiding British merchant shipping in the Channel, and [[HMS Crescent (1784)|HMS ''Crescent'']] under Captain [[James Saumarez]] was deployed to watch the port of [[Cherbourg]] with the aim of disrupting the operations of the French frigates [[French frigate Reunion (1786)|''Réunion'']] and [[French frigate Sémillante (1792)|''Sémillante'']] that were based in the harbour. On 20 October, Saumarez was waiting off Cape Barfleur for French movement when his lookout sighted ''Réunion'' and the [[cutter (ship)|cutter]] ''Espérance'' approaching from open water. ||| ||| ||| +1 Action of 21 October 1794 ||| French Revolutionary Wars ||| The '''Action of 21 October 1794''' was a minor naval engagement between [[Great Britain]] and [[France]] fought off the [[Brittany|Breton]] coast of France during the second year of the [[French Revolutionary Wars]]. French frigates had been raiding British Atlantic trade routes with considerable success since the outbreak of the war, and in response the [[Admiralty]] had formed a frigate squadron to patrol the French Channel and Atlantic coasts in search of French raiders. On 13 October 1794, the large, modern and powerful 40-gun French frigate [[HMS Révolutionnaire (1794)|''Révolutionnaire'']] under the command of Captain [[Antoine René Thévenard]] sailed from [[Le Havre]] for a raiding cruise against British trade routes in the Atlantic. Eight days later, while rounding the Breton headland of [[Ushant]] about 25-{{convert|30|nmi|km}} miles out to sea, ''Révolutionnaire'' encountered the British frigate squadron, commanded by Commodore [[Sir Edward Pellew]], which had secured a number of victories over French raiding frigates during the previous two years. ||| ||| ||| +1 Action of 22 June 1803 ||| First Barbary War ||| The '''Action of 22 June 1803''' was a naval battle between the [[United States Navy]] and the [[Tripolitan Navy]] during the [[First Barbary War]]. Two ships from the American squadron blockading [[Tripoli]], {{USS|John Adams|1799|6}} and {{USS|Enterprise|1799|6}}, met and engaged a Tripolitan [[polacre]] along with nine [[gunboat]]s. After fighting a sharp action for forty five minutes the gunboats veered off and the polacre was abandoned. The Tripolitians later retook the polacre and were reengaged by the Americans before the vessel was destroyed in a large explosion. ||| ||| ||| +1 Action of 23 April 1794 ||| French Revolutionary Wars ||| The '''Action of 23 April 1794''' took place between a British squadron of five frigates under the command of [[Sir John Borlase Warren, 1st Baronet|Sir John Borlase Warren]] and three frigates and a corvette under the command of [[Chef d'escadre]] F. Desgarceaux during the [[French Revolutionary Wars]]. Three of the French ships were captured. ||| ||| ||| +1 Action of 23 August 1967 ||| Vietnam War ||| The '''Action of 23 August 1967''' was a major air battle which involved elements of the [[Vietnam People's Air Force]] (VPAF) and the [[United States Air Force]] (USAF). The air battle took place over the skies of North Vietnam as part of [[Operation Rolling Thunder]], during the [[Vietnam War]]. ||| ||| ||| +1 Action of 24 October 1798 ||| Irish Rebellion of 1798 ||| The '''Action of 24 October 1798''' was a minor naval engagement of the [[French Revolutionary Wars]], fought between a British [[Royal Navy]] frigate and two ships of the [[Batavian Republic]]. The Dutch ships were intercepted in the [[North Sea]] within hours of leaving port, {{convert|30|nmi|km}} northwest of the [[Texel]], by the British ship [[HMS Sirius (1797)|HMS ''Sirius'']]. Both Dutch vessels were carrying large quantities of military supplies and [[French Army|French soldiers]], reinforcements for the French and Irish forces participating in the [[Irish Rebellion of 1798]]. Although the rebellion had been defeated a month earlier, word of the British victory had not yet reached the European continent, and the Dutch force was intended to supplement a larger French squadron sent earlier in October. The French had already been defeated at the [[Battle of Tory Island]] and the Dutch suffered a similar outcome, both ships defeated in turn by the larger and better armed British vessel. ||| ||| ||| +1 Action of 26 April 1797 ||| French Revolutionary Wars ||| The '''Action of 26 April 1797''' was a minor naval engagement during the [[French Revolutionary Wars]] in which a Spanish convoy of two [[frigates]] was trapped and defeated off the Spanish town of [[Conil de la Frontera]] by British ships of the [[Cadiz]] [[blockade]]. The British vessels, the [[ship of the line]] [[HMS Irresistible|HMS ''Irresistible'']] and the [[Fifth-rate]] frigate [[HMS Emerald (1795)|HMS ''Emerald'']], were significantly more powerful than the Spanish frigates, which were on the last stage of a voyage carrying treasure from [[Havana]], Cuba, to the Spanish fleet base of Cadiz. ||| ||| ||| +1 Action of 28 February 1799 ||| French Revolutionary Wars ||| The '''Action of 28 February 1799''' was a minor naval engagement of the [[French Revolutionary Wars]], fought off the mouth of the [[Hooghly River]] in the [[Bay of Bengal]] between the [[French Navy|French]] [[frigate]] [[French frigate Forte (1794)|''Forte'']] and the [[Royal Navy]] frigate [[HMS Sybille (1794)|HMS ''Sybille'']]. ''Forte'' was an exceptionally large and powerful ship engaged on a [[commerce raiding]] operation against British merchant shipping off the port of [[Calcutta]] in [[British India]]. To eliminate this threat, ''Sybille'' was sent from [[Madras]] in pursuit. Acting on information from released prisoners, [[Edward Cooke (Royal Navy officer)|Edward Cooke]], captain of ''Sybille'', was sailing off [[Balasore]] when distant gunfire alerted him to the presence of ''Forte'' on the evening of 28 February. The French frigate was discovered at anchor in the sandbanks at the mouth of the Hooghly with two recently captured British merchant ships. ||| ||| ||| +1 Action of 30 June 1798 ||| French Revolutionary Wars ||| The '''Action of 30 June 1798''' was a minor naval engagement fought along the [[Bay of Biscay|Biscay]] coast of [[France]] during the [[French Revolutionary Wars]]. The [[French Navy]] had been largely driven from the [[Atlantic Ocean]] early in the war following heavy losses in a series of failed operations. This had allowed the [[Royal Navy]]'s [[Channel Fleet]] to institute a close [[blockade]] on the French naval ports of the Biscay coast, particularly [[Brest, France|Brest]] in [[Brittany]]. The blockade strategy included a constantly patrolling inshore squadron composed of [[frigates]], tasked with preventing the passage of French ships into or out of the port. In the spring of 1798, several French frigates stationed in the [[Indian Ocean]] were sent back to France as the base at [[Isle de France (Mauritius)|Île de France]] could no longer supply them effectively. One of these ships was the 40-gun frigate [[HMS Seine (1798)|''Seine'']], which departed [[Port Louis]] laden with 280 soldiers from the garrison. ||| ||| ||| +1 Action of 30 May 1798 ||| French Revolutionary Wars ||| The '''Action of 30 May 1798''' was a minor naval engagement between a small British squadron and a small French squadron off the coast of [[Normandy]], [[France]] during the [[French Revolutionary Wars]]. A British [[blockade]]ing force, which had been conducting patrols in the region in the aftermath of the [[Battle of the Îles Saint-Marcouf|battle of St Marcou]] earlier in the month, encountered two French vessels attempting to sail unnoticed between [[Le Havre]] and [[Cherbourg]]. Closing with the French, the British commander [[Francis Laforey|Sir Francis Laforey]] sought to bring the French ships to battle as they attempted to turn back to Le Havre before the British squadron could attack. The French were unable to escape, and Laforey's ship, the [[fifth rate]] {{HMS|Hydra|1797|6}}, engaged the French corvette [[French frigate Confiante (1797)|''Confiante'']], while two smaller British ships chased the [[French corvette Vésuve (1795)|''Vésuve'']]. ||| ||| ||| +1 Action of 31 July 1793 ||| French Revolutionary Wars ||| The '''Action of 31 July 1793''' was an inconclusive engagement between a [[United Kingdom|British]] [[Royal Navy]] [[frigate]] and [[France|French]] frigate off the [[New Jersey]] coastline in the first year of the [[French Revolutionary Wars]]. The British [[Captain (naval)|captain]], George Courtenay of [[HMS Boston (1762)|HMS ''Boston'']], had arrived off [[New York City]] on 28 May and deliberately disguised his ship as a French vessel, fooling a French officer into coming aboard and making him a [[prisoner of war]]. Courtenay then sent a message into New York, where he knew a French frigate lay at anchor, challenging the French captain to battle within the next three days. The challenge was accepted and widely disseminated throughout the city, so that when Captain [[Jean-Baptiste-François Bompart]] of [[French frigate Embuscade (1789)|''Embuscade'']] sailed out to meet Courtenay on the morning of 31 July, the shore was crowded with thousands of sightseers. ||| ||| ||| +1 Action of 31 March 1800 ||| French Revolutionary Wars ||| The '''Action of 31 March 1800''' was a naval engagement of the [[French Revolutionary Wars]] fought between a [[Royal Navy]] squadron and a [[French Navy]] [[ship of the line]] off [[Malta]] in the [[Mediterranean Sea]]. By March 1800 [[Valletta]], the Maltese capital, had been [[Siege of Malta (1798-1800)|under siege]] for eighteen months and food supplies were severely depleted, a problem exacerbated by the [[Battle of the Malta Convoy (1800)|interception and defeat]] of a French replenishment convoy in mid-February. In an effort to simultaneously obtain help from France and reduce the number of personnel maintained in the city, the naval commander on the island, Contre-Admiral [[Pierre-Charles Villeneuve]], ordered his subordinate Contre-Admiral [[Denis Decrès]] to put to sea with the large ship of the line [[French ship Guillaume Tell (1795)|''Guillaume Tell'']], which had arrived in the port shortly before the siege began in September 1798. Over 900 men were carried aboard the ship, which was to sail for [[Toulon]] under cover of darkness on 30 March. ||| ||| ||| +1 Action of 4 August 1800 ||| French Revolutionary Wars ||| The '''Action of 4 August 1800''' was a highly unusual [[naval engagement]] that took place off the Brazilian coast during the [[French Revolutionary Wars]]. A French [[frigate]] force that had been raiding British commerce off West Africa approached and attempted to attack a convoy of valuable [[East Indiamen]], large and heavily armed merchant vessels sailing from Britain to [[British India]] and China, two ships sailing for Botany Bay, and a whaler sailing for the South Seas' whale fishery. The small British [[ship of the line]] {{HMS|Belliqueux|1780|6}} escorted the convoy, which otherwise had to rely on the ships' individual armament to protect them from attack. Due to their large size, the East Indiamen could be mistaken for ships of the line at a distance, and the French commander Commodore [[Jean-François Landolphe]] was un-nerved when the convoy formed a [[line of battle]]. Assuming his target to be a fleet of powerful warships he turned to escape and the British commander, Captain Rowley Bulteel, immediately ordered a pursuit. To preserve the impression of warships he also ordered four of his most powerful East Indiamen to join the chase. ||| ||| ||| +1 Action of 5 July 1942 ||| Pacific War ||| Over the course of the [[Pacific War]], ''Growler''—under various commanders—sank 17 enemy vessels, including many armed ships. She was a [[Gato-class submarine|''Gato''-class submarine]] and had a complement of 60 officers and men. Her armament included ten {{convert|21|in|mm|abbr=on}} [[torpedo tube]]s and one {{convert|3|in|mm|abbr=on}}/50-caliber [[deck gun]]. On her first patrol from [[Pearl Harbor]] to [[Alaska]], she was commanded by [[Lieutenant Commander]] [[Howard Gilmore]]. Japanese forces included the {{convert|2490|LT|t|abbr=on}} [[Kagero class destroyer|''Kagero''-class]] [[destroyer]] {{Ship|Japanese destroyer|Shiranui|1938|2}} with 240 crewmen and six {{convert|5|in|mm|abbr=on}} [[Naval gun|gun]]s, several [[Anti-aircraft warfare|anti-aircraft gun]]s, eight large torpedo tubes and 36 depth charges. There were also the two {{convert|2370|LT|t|abbr=on}} [[Asashio class destroyer|''Asashio''-class destroyer]]s {{Ship|Japanese destroyer|Arare||2}} and {{Ship|Japanese destroyer|Kasumi|1937|2}}, each with about 200 men and mounting the same armament as ''Shiranui''. The three vessels were assigned to the [[Japanese occupation of Kiska|occupation]] of Kiska and had participated in the [[Battle of Pearl Harbor]]. ||| Background ||| ||| +1 Action of 5 May 1794 ||| French Revolutionary Wars ||| The '''Action of 5 May 1794''' was a minor naval engagement fought in the [[Indian Ocean]] during the [[French Revolutionary Wars]]. A British squadron had been [[blockade|blockading]] the French island of [[Isle de France (Mauritius)|Isle de France]] (now [[Mauritius]]) since early in the year, and early on 5 May discovered two ships approaching their position. As the strange vessels came closer, they were recognised as the French [[frigate]] [[Princess Royal (1786 Indiaman)|''Duguay Trouin'']], which had been captured from the [[East India Company]] the year before, and a small [[brig]]. Making use of a favourable wind, the British squadron gave chase to the new arrivals, which fled. The chase was short, as ''Duguay Trouin'' was a poor sailor with many of the crew sick and unable to report for duty. The British frigate [[HMS Orpheus (1780)|HMS ''Orpheus'']] was the first to arrive, and soon completely disabled the French frigate, successfully [[raking fire|raking]] the wallowing ship. After an hour and twenty minutes the French captain surrendered, Captain Henry Newcome of ''Orpheus'' taking over the captured ship and bringing his prize back to port in India. ||| ||| ||| +1 Action of 7 May 1794 ||| French Revolutionary Wars ||| The '''Action of 7 May 1794''' was a minor naval action fought between a British [[ship of the line]] and a French [[frigate]] early in the [[French Revolutionary Wars]]. The [[French Navy]] sought to disrupt British trade by intercepting and capturing merchant ships with roving [[frigates]], a strategy countered by protecting British convoys with heavier warships, particularly in European waters. On 5 May 1794, the British escorts of a convoy from [[Cork (city)|Cork]] sighted two French ships approaching and gave chase. The ships, a [[sailing frigate|frigate]] and a [[corvette]], outmatched by their opponents, separated and the convoy escorts did likewise, each following one of the raiders on a separate course. ||| ||| ||| +1 Action of 8 May 1941 ||| World War II ||| The '''action of 8 May 1941''' was a [[single ship action]] fought during the [[World War II|Second World War]] in the course of which the [[Royal Navy|British]] [[heavy cruiser]] {{HMS|Cornwall|56|6}} sank the [[Kriegsmarine|German]] [[auxiliary cruiser]] {{Ship|German auxiliary cruiser|Pinguin||2}}. The engagement took place in the [[Indian Ocean]] off the [[Seychelles]] archipelago, north of [[Madagascar]]. ||| ||| ||| +1 Action of 9 September 1796 ||| French Revolutionary Wars ||| The '''Action of 9 September 1796''' was an inconclusive minor naval engagement between small [[French Navy]] and British [[Royal Navy]] squadrons off northeastern [[Sumatra]], near [[Banda Aceh]], during the [[French Revolutionary Wars]]. The French squadron comprised six [[frigates]] engaged on a [[commerce raiding]] operation against British trade routes passing through captured parts of the [[Dutch East Indies]], and posed a considerable threat to the weakened British naval forces in the region. The British force consisted of two 74-gun [[ships of the line]] hastily paired to oppose the eastward advance of the French squadron. ||| ||| ||| +1 Action of August 1702 ||| War of the Spanish Succession ||| The '''Action of August 1702''' took place from 19–25 August 1702 [[Old Style|O.S.]] between an English [[Squadron (naval)|squadron]] under Vice-Admiral [[John Benbow]] and a French under Admiral [[Jean du Casse]], off Cape Santa Marta on the coast of present-day Colombia, South America, during the [[War of the Spanish Succession]]. [[John B. Hattendorf]], ed., 'Benbow's Last Fight: Documents relating to the Battle of Cape Santa Marta, ||| ||| ||| +1 Action off Cape Bougaroun ||| World War II ||| The '''Action off Cape Bougaroun''', or the '''Attack on Convoy KMF-25A''' was a ''[[Luftwaffe]]'' action against an [[Allies of World War II|Allied]] naval convoy off the coast of [[Algeria]] during [[World War II]]. The convoy of [[United States|American]], [[United Kingdom|British]], [[Greece|Greek]] and [[Netherlands|Dutch]] ships was attacked on 6 November 1943 by 25 [[Nazi Germany|German]] land based aircraft. Six Allied vessels were sunk or damaged and six German aircraft were destroyed. German forces achieved a tactical victory, though the Allied warships involved received credit for defending their convoy and reacting to their losses quickly. The quick response led to the rescue of over 6,000 service men and civilians without further loss of life. ||| ||| ||| +1 Action off Lofoten ||| World War II ||| The '''Action off Lofoten''' was a [[naval battle]] fought between the German ''[[Kriegsmarine]]'' and the [[United Kingdom|British]] [[Royal Navy]] off the southern coast of the [[Lofoten Islands]], [[Norway]] during [[World War II]]. A German [[Squadron (naval)|squadron]] under [[Kriegsmarine#Comparative ranks (during World War II)|''Vizeadmiral'']] [[Günther Lütjens]] consisting of the [[battleship]]s {{Ship|German battleship|Scharnhorst||2}} and {{Ship|German battleship|Gneisenau||2}} met and engaged a British squadron under [[Admiral (Royal Navy)|Admiral]] Sir [[William Whitworth]] consisting of the [[battlecruiser]] {{HMS|Renown|1916|6}} and 10 [[destroyer]]s. After a short engagement, ''Gneisenau'' suffered moderate damage and the Germans withdrew. ||| ||| ||| +1 Aerial engagements of the Second Sino-Japanese War ||| Second Sino-Japanese War ||| The [[Second Sino-Japanese War]] began on 7 July 1937 with the [[Marco Polo Bridge Incident]] in the [[Republic of China (1912–1949)|Republic of China]]. The regional conflict lasted until the end of World War II, when the [[Empire of Japan]] surrendered to the [[Allies of World War II|Allies]] in August 1945. By the end of July 1937, fighting had escalated into a full-scale war and both countries deployed their air forces, ground troops, and warships into combat. Japanese [[heavy bomber]]s also extensively bombed Chinese factories, airfields and conducted the first major air-raids against civilian targets in the war. ||| ||| ||| +1 Afghan Civil War (1996–2001) ||| War on Terror ||| [[Osama bin Laden]] was a member of the prominent Saudi bin Laden family and the founding leader of [[Al Qaeda]]. After the attacks on September 11, 2001 (in which 3 000 people died on U.S. soil), Osama bin Laden and his organization have been major targets of the United States' [[War on Terror]]. Osama bin Laden was killed in Pakistan on May 2, 2011, shortly after 1 a.m. local time by a United States special forces military unit. ||| Main participants ||| Al-Qaeda ||| +1 Air battle over Niš ||| World War II ||| '''The air battle over Niš''' occurred on 7 November 1944 over [[Niš]], in [[Serbia]], between the Air Forces of the [[United States]] and the [[Soviet Union]] in [[World War II]]. This was the only direct military confrontation between the U.S. and the USSR in the history of these two countries. ||| ||| ||| +1 Air raids on Japan ||| Pacific War ||| [[Allies of World War II|Allied]] forces conducted many '''air raids on Japan''' during World War II, causing extensive destruction to the country's cities and killing between 241,000 and 900,000 people. During the first years of the [[Pacific War]], sparked by the Japanese [[attack on Pearl Harbor]], these attacks were limited to the [[Doolittle Raid]] in April 1942 and small-scale raids on military positions in the [[Kuril Islands]] from mid-1943. [[Strategic bombing during World War II|Strategic bombing]] raids began in June 1944 and continued until the end of the war in August 1945. Allied naval and land-based [[Tactical bombing|tactical air units]] also attacked Japan during 1945. ||| ||| ||| +1 Akbaş arms depot raid ||| Turkish War of Independence ||| The '''Akbaş arms depot raid''' was one of the actions of the [[Kuva-yi Milliye]] during the [[Turkish War of Independence]]. Led by the [[militia]] leader Köprülü Hamdi Bey and Dramalı Rıza Bey, the raid was conducted on the night of 26–27 January 1920. ||| ||| ||| +1 Albanian resistance during World War II ||| World War II ||| The '''Albanian Resistance''' of [[World War II]] was a movement of largely [[Communist]] persuasion directed against the occupying [[Kingdom of Italy (1861-1946)|Italian]] (until 1943) and then [[Nazi Germany|German]] forces in [[Albania]], which led to the successful liberation of the country in 1944. ||| ||| ||| +1 Aleutian Islands Campaign ||| American Theater (World War II) ||| The '''Aleutian Islands Campaign''' was a struggle over the [[Aleutian Islands]], part of the [[Alaska Territory]], in the [[American Theater (World War II)|American theater]] and the [[Pacific War|Pacific theater]] of [[World War II]] starting on 3 June 1942. A small [[Japan]]ese force occupied the islands of [[Attu Island|Attu]] and [[Kiska]], but the remoteness of the islands and the difficulties of weather and terrain meant that it took nearly a year for a far larger U.S./Canadian force to eject them. The islands' strategic value was their ability to control Pacific [[Great circle|Great Circle]] routes. This control of the Pacific transportation routes is why [[U.S. General]] [[Billy Mitchell]] stated to the [[U.S. Congress]] in 1935, 'I believe that in the future, whoever holds Alaska will hold the world. I think it is the most important strategic place in the world.' The Japanese reasoned that control of the Aleutians would prevent a possible U.S. attack across the Northern Pacific. Similarly, the U.S. feared that the islands would be used as bases from which to launch aerial assaults against the [[West Coast of the United States|West Coast]]. ||| ||| ||| +1 Allied invasion of Italy ||| World War II ||| The '''Allied invasion of Italy''' was the [[Allies of World War II|Allied]] [[Amphibious warfare|amphibious landing]] on mainland [[Italy]] that took place on 3 September 1943 during [[World War II]]. The operation was undertaken by [[British Army|British]] [[General (United Kingdom)|General]] [[Harold Alexander, 1st Earl Alexander of Tunis|Harold Alexander]]'s [[15th Army Group]] (comprising [[Lieutenant general (United States)|Lieutenant General]] [[Mark W. Clark|Mark Clark]]'s [[United States Army North|U.S. Fifth Army]] and General [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery's]] [[Eighth Army (United Kingdom)|British Eighth Army]]). The operation followed the successful [[Allied invasion of Sicily|invasion of Sicily]] during the [[Italian Campaign (World War II)|Italian Campaign]]. The main invasion force landed around [[Salerno]] on the western coast in '''Operation ''Avalanche''''', while two supporting operations took place in [[Calabria]] ('''[[Operation Baytown|Operation ''Baytown'']]''') and [[Taranto]] ('''[[Operation Slapstick|Operation ''Slapstick'']]'''). ||| ||| ||| +1 Allied invasion of Sicily ||| World War II ||| The '''Allied invasion of Sicily''', codenamed '''Operation Husky''', was a major campaign of [[World War II]], in which the [[Allies of World War II|Allies]] took [[Sicily]] from the [[Axis Powers]] ([[Kingdom of Italy|Italy]] and [[Nazi Germany]]). It was a large [[Amphibious warfare|amphibious]] and [[airborne forces|airborne]] operation, followed by a six-week land campaign and was the beginning of the [[Italian Campaign (World War II)|Italian Campaign]]. ||| ||| ||| +1 Allied naval bombardments of Japan during World War II ||| Pacific War ||| During the [[Pacific War]] the US Navy's [[fast battleship]]s were mainly used to escort the groups of [[aircraft carrier]]s which formed the [[United States Pacific Fleet]]'s main striking force. They were occasionally used to bombard Japanese positions near the shore, however, and fought a small number of actions with Japanese warships. ||| Background ||| ||| +1 Altmark Incident ||| World War II ||| The '''''Altmark'' Incident''' ([[Norwegian language|Norwegian]]: ''Altmark''-affæren) was a naval skirmish of [[World War II]] between the United Kingdom and [[Nazi Germany]], which happened on 16 February 1940. It took place in what were, at that time, [[Neutral country|neutral]] Norwegian waters. ||| ||| ||| +1 American Theater (World War II) ||| World War II ||| The '''American Theater''' describes a series of mostly minor areas of operations during [[World War II]]. This was mainly due to both North and South America's geographical separation from the central [[Theater (warfare)|theaters of conflict]] in [[Europe]] and [[Asia]]. Thus, any threat by the [[Axis Powers]] to [[Mainland invasion of the United States#World War II|invade the mainland United States]] or other areas was considered negligible, allowing for American resources to be deployed in overseas theaters. ||| ||| ||| +1 American-led intervention in Syria ||| Military intervention against ISIL ||| On September 22, 2014, the United States, Bahrain, Jordan, Qatar, Saudi Arabia, and the United Arab Emirates began to strike targets of the [[Islamic State of Iraq and the Levant]] (ISIL) inside Syria, as part of the [[Military intervention against ISIL]]. ||| ||| ||| +1 Amoy Operation ||| Second Sino-Japanese War ||| The '''Amoy Operation''' was part of a campaign by [[Japan]] during the [[Second Sino-Japanese War]] to blockade [[China]] to prevent it from communicating with the outside world and importing needed arms and materials. Control of [[Xiamen|Amoy]] Island would provide a base to make the blockade of [[Fujian]] province more effective. ||| ||| ||| +1 Anglo-Spanish War (1796–1808) ||| French Revolutionary Wars ||| The '''Anglo-Spanish War''' was a conflict fought between 1796 and 1802, and again from 1804 to 1808, as part of the [[French Revolutionary Wars]] and the [[Napoleonic Wars]]. The war ended when an alliance was signed between UK and Spain. ||| ||| ||| +1 Apache Wars ||| American Indian Wars ||| [[Sergeant]] [[James T. Daniels]], Company L., 4th Cavalry and Sergeant [[William McBryar]], Troop K., 10th Cavalry, are the last-known recipients of the [[Medal of Honor]] for actions during the Apache Wars. Both sides of the war where exited for '''extreme courage and heroism''' while under attack by hostile Apaches, on March 7, 1890. A [[Private (rank)|Private]] Rowdy, Troop A, of the Indian Scouts, was also decorated for '''faithfulness, zeal, and great tenacity, making it possible to encounter the Apache renegades.'''{{Citation needed|date=August 2011}} The native warriors continued to resist by maintaining dozens of holdouts until the [[Battle of Bear Valley]] in 1918 but hostilities continued for several more years. The last [[Apache]] raid into the United States occurred as late as 1924 when a band of natives stole some horses from [[Arizona]]n settlers who were caught and arrested. This is considered to be the end of the [[American Indian Wars]], but the neighbouring [[Mexican Indian Wars]] were still going on for another nine years. ||| Wars ||| Renegade Period ||| +1 Arab Revolt ||| Middle Eastern theatre of World War I ||| The Ottoman Empire took part in the [[Middle Eastern theatre of World War I|Middle Eastern theatre]] of World War I, under the terms of the [[Ottoman–German Alliance]]. Many Arab nationalist figures in [[Damascus]] and [[Beirut]] were arrested, then tortured. The flag of the resistance was designed by Sir [[Mark Sykes]], in an effort to create a feeling of 'Arab-ness' in order to fuel the revolt. ||| Conflicts ||| ||| +1 Arab–Byzantine wars ||| Muslim conquests ||| The '''Arab–Byzantine wars''' were a series of wars between the mostly [[Arab]] [[Muslims]] and the East Roman or [[Byzantine Empire]] between the 7th and 11th centuries AD. Started during the initial [[Muslim conquests]] under the expansionist [[Rashidun Caliphate|Rashidun]] and [[Umayyad Caliphate|Umayyad]] [[caliph]]s in the 7th century and continued by their successors until the mid-11th century. ||| ||| ||| +1 Assault on Copenhagen (1659) ||| Second Northern War ||| The '''assault on [[Copenhagen]]''' on 11 February 1659 was a major battle during the [[Second Northern War]], taking place during the siege of Copenhagen by the [[Swedish army]]. ||| ||| ||| +1 Atlantic campaign of May 1794 ||| French Revolutionary Wars ||| By the spring of 1794, the [[First French Republic|French Republic]], under the rule of the [[National Convention]], was at [[French Revolutionary Wars|war with all its neighbours]]. With [[famine]] imminent, the French [[Committee of Public Safety]] looked to France's colonies and the United States to provide an infusion of grain; this was to be convoyed across the [[Atlantic]] during April, May and June, accompanied by a small escort squadron and supported by a second, larger squadron in the [[Bay of Biscay]]. However, political upheaval had severely reduced the [[French Navy]]'s ability to fight coherently and supply shortages had devastated its morale, significantly weakening the fleet. Britain, by contrast, was at a high state of readiness with a well-organised command structure, but was suffering from a severe shortage of trained seamen with which to man its large navy. The French Atlantic Fleet, under Admiral [[Villaret de Joyeuse]], was tasked with keeping the British Channel Fleet occupied long enough for the convoy to reach France safely. The Channel Fleet, commanded by [[Richard Howe, 1st Earl Howe|Lord Howe]], knew of the convoy's passage, and dispatched squadrons to protect British commerce while pursuing Villaret himself with the main body of the Royal Navy's Channel Fleet. For over a week the two battlefleets manoeuvred around one another, Villaret drawing Howe deeper westwards into the Atlantic and away from the convoy. Two partial but inconclusive fleet actions on 28 and 29 May followed, during which Howe seized the [[weather gage]] from Villaret, granting him freedom to choose the time and place of his next attack. ||| ||| ||| +1 Atomic bombings of Hiroshima and Nagasaki ||| Pacific War ||| In the final year of the war, the [[Allies of World War II|Allies]] prepared for what was anticipated to be a very costly [[Operation Downfall|invasion of the Japanese mainland]]. This was preceded by a U.S. [[Air raids on Japan|firebombing campaign]] that obliterated many Japanese cities. The [[European theatre of World War II|war in Europe]] had concluded when [[Nazi Germany]] signed its [[German Instrument of Surrender|instrument of surrender]] on {{#dateformat:May 8, 1945}}. The Japanese, facing the same fate, refused to accept the Allies' demands for unconditional surrender and the [[Pacific War]] continued. Together with the United Kingdom and [[Republic of China (1912–49)|China]], the United States called for the unconditional surrender of the Japanese armed forces in the [[Potsdam Declaration]] on {{#dateformat:July 26, 1945}}—the alternative being 'prompt and utter destruction'. The Japanese response to this ultimatum was to [[mokusatsu|ignore]] it. ||| ||| ||| +1 Attack on Aruba ||| World War II ||| The '''Attack on Aruba''' was an attack on oil installations and [[oil tanker|tankers]] by [[Axis powers|Axis]] [[submarine]]s during [[World War II]]. On 16 February 1942, a [[Nazi Germany|German]] [[U-boat]] attacked the small island of [[Aruba]]. Other submarines patrolled the area for shipping and they sank or damaged tankers. Aruba was home to two of the largest [[oil refinery|oil refineries]] in the world during the war against the Axis powers, the Arend Petroleum Maatschappij, situated near the Oranjestad harbor and the [[Lago Oil and Transport Company]] at the San Nicolas harbor. The attack resulted in the disruption of vital [[Allies of World War II|Allied]] fuel production. ||| ||| ||| +1 Attack on Camp Holloway ||| Vietnam War ||| The '''attack on [[Camp Holloway]]''' occurred during the early hours of 7 February 1965, in the early stages of the [[Vietnam War]]. Camp Holloway was a helicopter facility constructed by the [[United States Army]] near [[Pleiku]] in 1962, to support the operations of [[Free World Military Forces]] in the [[Central Highlands (Vietnam)|Central Highlands of Vietnam]]. ||| ||| ||| +1 Attack on Pearl Harbor ||| Pacific War ||| The attack came as a profound shock to the American people and led directly to the American entry into World War II in both the [[Pacific War|Pacific]] and [[European theatre of World War II|European theaters]]. The following day, December 8, the United States [[United States declaration of war upon Japan|declared war]] on Japan. disappeared. Clandestine support of the [[United Kingdom]] (e.g., the [[Neutrality Patrol]]) was replaced by active alliance. Subsequent operations by the U.S. prompted Germany and Italy to [[Axis Powers#Germany's and Italy's declaration of war against the United States|declare war]] on the U.S. on December 11, which was reciprocated by the U.S. the same day. ||| ||| ||| +1 Attack on Pearl Harbor ||| World War II ||| The '''attack on Pearl Harbor'''{{refn|Also known as the Battle of Pearl Harbor, |group=nb}} was a surprise [[military strike]] by the [[Imperial Japanese Navy]] against the [[United States]] [[Naval Station Pearl Harbor|naval base]] at [[Pearl Harbor]], in the [[Hawaii#Annexation—the Territory of Hawaii (1898–1959)|United States Territory of Hawaii]], on the morning of December 7, 1941. The attack led to the United States' entry into [[World War II]]. ||| ||| ||| +1 Attack on Yokosuka ||| Pacific War ||| The '''attack on Yokosuka''' was an air raid conducted by the [[United States Navy]] on 18 July 1945 during the last weeks of the [[Pacific War]]. The [[Japanese battleship Nagato|Japanese battleship ''Nagato'']] was the raid's main target, though anti-aircraft positions and other warships at [[Yokosuka Naval Arsenal]] were also attacked. Other U.S. Navy and British [[Royal Navy]] aircraft struck airfields in the [[Tokyo]] area. ||| ||| ||| +1 Attack on the USNS Card ||| Vietnam War ||| The '''Attack on the USNS ''Card''''' was a [[Viet Cong]] operation during the [[Vietnam War]]. It took place in the port of [[Saigon]] in the early hours of May 2, 1964, and mounted by commandos from the 65th Special Operations Group ({{lang|vi|''Đội Biệt động 65''}}). ||| ||| ||| +1 Attacks at Fort Blue Mounds ||| Black Hawk War ||| The '''attacks at Fort Blue Mounds''' were two separate incidents which occurred on June 6 and 20, 1832, as part of the [[Black Hawk War]]. In the first incident, area residents attributed the killing of a miner to a band of [[Ho-Chunk]] warriors, and concluded that more Ho-Chunk planned to join [[Black Hawk (chief)|Black Hawk]] in his war against [[european colonization of the Americas|white settlers]]. The second incident occurred east of the fort as a [[Sauk people|Sauk]] raiding party, estimated by eyewitnesses to be as large as 100 warriors, attacked two militia men who were investigating noises heard the night before. Two members of the militia stationed at [[Blue Mounds Fort|Blue Mounds]] were killed in the attack, and both their bodies were badly mutilated. ||| ||| ||| +1 Attacks on the Butte de Warlencourt ||| Battle of the Somme ||| During the [[Battle of Le Transloy]] (1–20 October), part of the [[Battle of the Somme (1916)|Battle of the Somme]], the Butte de Warlencourt was the subject of several attacks by the [[British Fourth Army]], which were costly failures; attacks in November also failed. The [[Australian 2nd Division|2nd Australian Division]] occupied the Butte on 24 February 1917, during the German retirements made on the Somme front, preparatory to [[Alberich (World War I German operation)|Operation Alberich]], the retreat to the [[Hindenburg Line]]. The Butte de Warlencourt was recaptured by the German 2nd Army on 24 March 1918, during the retreat of the [[2nd Infantry Division (United Kingdom)|2nd Division]] in [[Operation Michael]], the German spring offensive. The butte was recaptured for the last time on 26 August, by the [[21st Division (United Kingdom)|21st Division]], during the [[Second Battle of Bapaume]]. In 1990, the site was purchased for preservation by the [[Western Front Association]]. ||| ||| ||| +1 Bandaranaike Airport attack ||| Sri Lankan Civil War ||| Reports said that the LTTE timed the attack to coincide with the rioting of [[Black July]] in 1983, in which 1000 of [[Tamil people|Tamil]]s were killed by [[Sinhalese people|Sinhalese]] mobs. Even though the Tamil rebellion far preceded the attack in history, this is considered the start of the [[Sri Lankan Civil War]]. The rebels launched this attack on Sri Lanka's key military target and at the time the country's only international airport. ||| Background ||| ||| +1 Battle at Borodino Field ||| Battle of Moscow ||| The '''Battle at Borodino Field''' was a part of the [[Battle of Moscow]], on the [[Eastern Front of World War II]]. While referring to the battle in Russian, the Borodino Field is actually more commonly applied rather than just Borodino, [[cf.]] [[Georgy Zhukov]] ('...this division [32nd] was forced to cross the arms with the enemy on the Borodino Field...'). ||| ||| ||| +1 Battle for Brest ||| Western Front (World War II) ||| The '''Battle for Brest''' was one of the fiercest battles fought on the [[Western Front (World War II)|Western Front]] during [[World War II]]. Part of the Allied plan for the [[Operation Overlord|invasion of mainland Europe]] called for the capture of port facilities, in order to ensure the timely delivery of the enormous amount of war [[wikt:materiel|materiel]] required to supply the invading Allied forces. It was estimated that the 37 Allied divisions to be on the continent by September 1944 would need 26,000 tons of supplies each day. The main port the Allied forces hoped to seize and put into their service was [[Brest, France|Brest]], in northwestern France. ||| ||| ||| +1 Battle for Brest ||| World War II ||| The '''Battle for Brest''' was one of the fiercest battles fought on the [[Western Front (World War II)|Western Front]] during [[World War II]]. Part of the Allied plan for the [[Operation Overlord|invasion of mainland Europe]] called for the capture of port facilities, in order to ensure the timely delivery of the enormous amount of war [[wikt:materiel|materiel]] required to supply the invading Allied forces. It was estimated that the 37 Allied divisions to be on the continent by September 1944 would need 26,000 tons of supplies each day. The main port the Allied forces hoped to seize and put into their service was [[Brest, France|Brest]], in northwestern France. ||| ||| ||| +1 Battle for Caen ||| World War II ||| The '''Battle for Caen''' from June–August 1944 was a battle of the [[World War II|Second World War]] between [[Allies of World War II|Allied]] forces of the mainly Anglo-Canadian [[Second Army (United Kingdom)|Second Army]] and [[German Army (Wehrmacht)|German]] forces of {{lang|de|''Panzergruppe West''}} during the [[Operation Overlord|Battle of Normandy]]. The Allies aimed to take [[Caen]], one of the largest cities in [[Normandy]] on [[Normandy landings|D-Day]]. Caen was an important Allied objective because it lay astride the [[Orne River]] and [[Canal de Caen à la Mer|Caen Canal]]; these two water obstacles could strengthen a German defensive position if not crossed. Caen was a road hub and the side which held it could shift forces rapidly. The area around Caen was open, compared to the [[bocage]] country in the west of Normandy and was valuable land for airfields. ||| ||| ||| +1 Battle for Height 776 ||| Second Chechen War ||| The '''Battle for Height 776''', part of the larger [[Battle of Ulus-Kert]], was an engagement in the [[Second Chechen War]] that took place during fighting for control of the [[Argun River (Caucasus)|Argun River]] [[Canyon|gorge]] in the highland [[Shatoysky District]] of central [[Chechnya]], between the villages of Ulus-Kert and Selmentausen. ||| ||| ||| +1 Battle for Narva Bridgehead ||| World War II ||| The '''Battle of Narva Bridgehead''' (Estonian: ''Narva lahingud''; German: ''Schlacht um den Brückenkopf von Narva''; Russian: ''Битва за плацдарм Нарва''; 2 February – 26 July 1944) was the campaign that stalled the Soviet Estonian Operation in the surroundings of the town of [[Narva]] for six months. It was the first phase of the [[Battle of Narva (1944)|Battle of Narva]] campaign fought at the [[Eastern Front (World War II)|Eastern Front]] during [[World War II]], the second phase being the [[Battle of Tannenberg Line]]. ||| ||| ||| +1 Battle for No.3 Post ||| Gallipoli Campaign ||| On 25 April, at the start of the [[Gallipoli Campaign]], the [[Australian and New Zealand Army Corps]] (ANZAC) landed at what later became known as [[Anzac Cove]]. ||| Background ||| ANZAC landings ||| +1 Battle for Outpost Vegas ||| Korean War ||| The '''Battle for Outpost Vegas''' was a battle during the [[Korean War]] between the armed forces of the United States and China from March 26–28, 1953, four months before the end of the Korean War. Vegas was one of three outposts called the Nevada Cities north of the [[Main Line of Resistance]] (MLR), the [[United Nations]] defensive line which stretched roughly around the latitude [[38th parallel north|38th Parallel]]. Vegas, and the outposts it supported, Reno and Carson, were manned by elements of the [[1st Marine Division]]. On March 26, 1953 the Chinese army launched an attack on the Nevada Cities, including Vegas, in an attempt to better the position of China and North Korea in the [[Panmunjon]] peace talks which were occurring at the time, and to gain more territory for North Korea when its borders would be solidified. The battle raged for five days until Chinese forces halted their advance after partially obtaining their objective through capturing one outpost north of the MLR on March 28. The battle for outpost Vegas and the surrounding outposts are considered the bloodiest fighting to date in western Korea during the Korean War. It is estimated that there were over 1,000 American casualties and twice that number of Chinese during the battle of outpost Vegas. The battle is also known for the involvement of [[Sergeant Reckless]], a horse in a USMC [[recoilless rifle]] [[platoon]] who transported ammunition and the wounded during the U.S. defense of outpost Vegas. ||| ||| ||| +1 Battle in Shakhtarsk Raion ||| 2014 pro-Russian unrest in Ukraine ||| From 6 April, as part of the [[2014 pro-Russian unrest in Ukraine|rising unrest]] in Ukraine in the aftermath of the [[2014 Ukrainian revolution]], insurgents affiliated with the [[Donetsk People's Republic]] (DPR) captured towns and cities across [[Donetsk Oblast]], including Shakhtarsk Raion. The raion is in a crucial position between the Donetsk and Lugansk People's Republics, and Russia. Government forces launched an offensive against insurgent forces in Donetsk and Luhansk oblasts of Ukraine on 7 April, resulting in the [[War in Donbass]]. War reached Shakhtarsk Raion on 16 July, after insurgents retreated from most of northern Donetsk Oblast. Fighting took place across the raion, in an attempt by the government to cut-off insurgent supply lines, and to reach the crash site of [[Malaysia Airlines Flight 17]]. ||| Events by location ||| ||| +1 Battle of Aachen ||| World War II ||| The '''Battle of Aachen''' was a major combat action of [[World War II]], fought by American and German forces in and around [[Aachen]], Germany, between 2–21 October 1944. The city had been incorporated into the [[Siegfried Line]], the main defensive network on Germany's western border; the Allies had hoped to capture it quickly and advance into the industrialized Ruhr Basin. Although most of Aachen's civilian population was evacuated before the battle began, much of the city was destroyed and both sides suffered heavy losses. It was one of the largest urban battles fought by U.S. forces in World War II, and the first city on German soil to be captured by the Allies. The battle ended with a German surrender, but their tenacious defense significantly disrupted Allied plans for the advance into Germany. ||| ||| ||| +1 Battle of Abu-Ageila (1967) ||| Six-Day War ||| The 1967 '''Battle of [[Abu-Ageila]]''' was a military confrontation between the [[Israel Defense Forces|Israeli]] and [[Egyptian Army|Egyptian]] military in the [[Sinai desert]] in June 1967, as part of the [[Six-Day War]]. The decisive defeat of the Egyptians was critical to the eventual loss of the entire [[Sinai Peninsula]] to Israeli forces. The head of the Israel command was [[Ariel Sharon]], who latter became a prominent politician and prime minister of [[Israel]]. ||| ||| ||| +1 Battle of Actium ||| Final War of the Roman Republic ||| The '''Battle of Actium''' was the decisive confrontation of the [[Final War of the Roman Republic]], a naval engagement between [[Augustus|Octavian]] and the combined forces of [[Mark Antony]] and [[Cleopatra]] on 2 September 31 BC, on the [[Ionian Sea]] near the city of [[Actium]], in the Roman province of [[Epirus vetus|Epirus Vetus]] in [[Greece]]. Octavian's fleet was commanded by [[Marcus Vipsanius Agrippa]], while Antony's fleet was supported by the ships of Queen Cleopatra of [[Ptolemaic Kingdom|Ptolemaic Egypt]]. ||| ||| ||| +1 Battle of Agua Dulce ||| Texas Revolution ||| The '''Battle of Agua Dulce Creek''' was a skirmish during the [[Texas Revolution]] between Mexican troops and rebellious immigrants to the [[Mexican Texas|Mexican province of Texas]], known as [[Texian]]s. As part of the [[Goliad Campaign]] to retake the Texas [[Gulf Coast]], Mexican troops ambushed a group of Texians on March 2, 1836. The skirmish began approximately {{convert|26|mi|km}} south of [[San Patricio, Texas|San Patricio]], in territory belonging to the Mexican state of [[Tamaulipas, Mexico|Tamaulipas]]. ||| ||| ||| +1 Battle of Al Busayyah ||| Gulf War ||| The '''Battle of Al Busayyah''' was a [[tank warfare|tank battle]] fought just before sunrise on February 26, 1991, during the [[Gulf War|Persian Gulf War]], between armored forces of the [[United States Army]] and those of the [[Iraqi Army]]. ||| ||| ||| +1 Battle of Alamana ||| Greek War of Independence ||| The '''Battle of Alamana''' was fought between the [[Greeks]] and the [[Ottoman Empire]] during the [[Greek War of Independence]] on April 22, 1821. ||| ||| ||| +1 Battle of Alapan ||| Philippine Revolution ||| The previous year marked the end of the first part of the [[Philippine Revolution]] with the signing of the [[Pact of Biak-na-Bato]]. Under the terms of the agreement, Aguinaldo went into exile in Hong Kong and prepared for the continuation of the revolution. ||| Background ||| ||| +1 Battle of Albarracín ||| Spanish Civil War ||| The '''Battle of Albarracín''' took place in [[Albarracín]] and surrounding areas ([[Province of Teruel|Teruel]]) between July 5 and August 11, 1937, during the [[Spanish Civil War]]. ||| ||| ||| +1 Battle of Albert (1914) ||| Race to the Sea ||| The '''Battle of Albert''' (also known as the First Battle of Albert) began on 25 September 1914, in what became misleadingly known as the '[[Race to the Sea]]', during World War I. It followed the [[First Battle of the Aisne]] as both sides moved northwards, trying to turn the northern flank of the opposing army. The [[Second Army (France)|Second Army]] under [[Noël Édouard, vicomte de Curières de Castelnau|Noël de Castelnau]], began to assemble at Amiens in mid-September and was directed by General [[Joseph Joffre]], the [[Generalissimo]] of the French Army, to attack near [[Albert, Somme|Albert]]. ||| ||| ||| +1 Battle of Albuera ||| Peninsular War ||| The '''Battle of Albuera''' (16 May 1811) was a battle during the [[Peninsular War]]. A mixed [[United Kingdom of Great Britain and Ireland|British]], Spanish and [[Portugal|Portuguese]] [[corps]] engaged elements of the French [[Armée du Midi]] (Army of the South) at the small Spanish village of [[La Albuera|Albuera]], about 20 kilometres (12 mi) south of the frontier fortress-town of [[Badajoz]], Spain. ||| ||| ||| +1 Battle of Alcantara (1809) ||| Peninsular War ||| The '''Battle of Alcantara''' (14 May 1809) saw an [[First French Empire|Imperial French]] division led by [[Marshal of France|Marshal]] [[Claude Perrin Victor]] attack a Portuguese detachment under Colonel William Mayne. After a three hours skirmish, the French stormed across the [[Alcántara Bridge]] and forced the Portuguese to retreat. The clash happened during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Alcántara]], Spain is situated on the [[Tagus]] river near the Portuguese border, {{convert|285|km|mi|0}} west-southwest of [[Madrid]]. ||| ||| ||| +1 Battle of Aldbourne Chase ||| First English Civil War ||| The '''Battle of Aldbourne Chase''', in 1643, was a battle of the [[First English Civil War]], in which a fleeing column of [[Cavalier|Royalist]] troops, led by [[Prince Rupert]], attacked the dangerously extended [[Roundhead|Parliamentarian]] troops of [[Robert Devereux, 3rd Earl of Essex|Essex]]'s army at Aldbourne Chase in [[Wiltshire]]. The action that followed was inconclusive, but allowed the Royalists to get to Newbury ahead of the Parliamentarian army. ||| ||| ||| +1 Battle of Aldie ||| American Civil War ||| The '''Battle of Aldie''' took place on June 17, 1863, in [[Loudoun County, Virginia]], as part of the [[Gettysburg Campaign]] of the [[American Civil War]]. ||| ||| ||| +1 Battle of Alexandria (30 BC) ||| Final War of the Roman Republic ||| The '''Battle of Alexandria''' was fought on July 31, 30 BC between the forces of [[Augustus|Octavian]] and [[Mark Antony]] during the [[Final War of the Roman Republic]]. Although Antony's side was plagued by desertions, he still managed to narrowly win the battle. The desertions continued, however, and, in early August, Octavian launched a second, ultimately successful, invasion of Egypt. ||| ||| ||| +1 Battle of Alfambra ||| Spanish Civil War ||| The '''Battle of Alfambra''' took place near [[Alfambra]] between 5 and the 8 February 1938, during the [[Spanish Civil War]]. This battle was a part of the [[Battle of Teruel]]. After, the conquest of Teruel by the Republican army, the Nationalists started a counteroffensive in order to reocuppy Teruel. On 5 February a huge nationalist force broke the republican lines in the north of the Teruel towards the Alfambra river, taking 7,000 republican prisoners and threatening the Republican forces in Teruel. ||| ||| ||| +1 Battle of Alford ||| Wars of the Three Kingdoms ||| The '''Battle of Alford''' was an engagement of the [[Scotland in the Wars of the Three Kingdoms|Wars of the Three Kingdoms]], which took place near the village of [[Alford, Aberdeenshire]], [[Scotland]], on 2 July 1645. The battlefield is included in the [[Inventory of Historic Battlefields in Scotland]] and protected by [[Historic Scotland]] under the Historic Environment (Amendment) Act 2011. ||| ||| ||| +1 Battle of Aliwal ||| First Anglo-Sikh War ||| The '''Battle of Aliwal''' was fought on 28 January 1846 between the British and the Sikhs. The British were led by Sir [[Sir Harry Smith, 1st Baronet|Harry Smith]], while the Sikhs were led by [[Ranjodh Singh Majithia]]. The British won a victory which is sometimes regarded as the turning point of the [[First Anglo-Sikh War]]. ||| ||| ||| +1 Battle of Alligator Bridge ||| American Revolutionary War ||| The '''Battle of Alligator Bridge''' took place on June 30, 1778, and was the only major engagement in an unsuccessful campaign to conquer [[United Kingdom|British]] [[East Florida]] during the [[American Revolutionary War]]. A detachment of [[Georgia (U.S. state)|Georgia]] [[militia]]men under the command of [[General]] [[James Screven]] chased [[Thomas Brown (loyalist)|Thomas Brown]]'s [[Loyalist (American Revolution)|Loyalist]] company into a large position of British [[regular army|regulars]] established by British [[Major]] [[Mark Prevost]] and were turned back. ||| ||| ||| +1 Battle of Almaraz ||| Peninsular War ||| The '''Battle of Almaraz''' was a battle of the [[Peninsular War]] which took place on 18/19 May 1812, in which the [[Anglo-Portuguese Army]] under [[Rowland Hill, 1st Viscount Hill|Lord Hill]] destroyed a French pontoon bridge across the [[Tagus|River Tagus]], in [[Almaraz]], Spain. The bridge was protected by two French garrisons at either end. ||| ||| ||| +1 Battle of Almonacid ||| Peninsular War ||| The '''Battle of Almonacid''' was fought on 11 August 1809 during the [[Peninsular War]] between [[Horace François Bastien Sébastiani de La Porta|Sébastiani's]] IV Corps of the French Peninsular Army, which had withdrawn from the [[Battle of Talavera]] to defend [[Madrid]], and the [[Army of Spain (Peninsular War)|Spanish Army]] of La Mancha under [[Joaquín Venegas|General Venegas]]. After the decisive charges of [[Poland|Polish]] [[uhlan]]s, the battle resulted in a French victory. ||| ||| ||| +1 Battle of Alvøen ||| Gunboat War ||| The '''Battle of Alvøen''' was a sea battle of the [[Gunboat War]] between [[Denmark-Norway]] and the United Kingdom. It was fought on 16 May 1808 in Vatlestraumen, outside [[Bergen]] in [[Norway]], between the British frigate [[HMS Tartar (1801)|HMS ''Tartar'']] and a Norwegian force consisting of four ''kanonjolles'' and one ''kanonsjalupps'' (collectively known as [[gunboat]]s). ||| ||| ||| +1 Battle of Amgala (1989) ||| Western Sahara War ||| It would be the last military operation of the [[Western Sahara War]] until the 1991 [[1991 Tifariti offensive|Operation Rattle]]. ||| ||| ||| +1 Battle of An Ninh ||| Vietnam War ||| The '''Battle of An Ninh''' (18 September 1965), was fought during the [[Vietnam War]] between [[Regular army|regulars]] of the [[United States Army]] and regulars of the [[People's Army of Vietnam]] (PAVN/NVA) of [[North Vietnam]]. It occurred during an operation codenamed ''Operation Gibraltar'', developed by [[MACV]] to clear the area around the [[1st Cavalry Division (United States)|1st Cavalry Division]]'s base at [[An Khê District|An Khe]], South Vietnam. ||| ||| ||| +1 Battle of Anderson ||| American Civil War ||| The '''Battle of Anderson''' was a minor skirmish during the [[American Civil War]], fought in [[Anderson County, South Carolina|Anderson County]], [[South Carolina]], on May 1, 1865. The battle was one of the final conflicts of the war, taking place three weeks after [[Robert E. Lee]] surrendered to [[Ulysses S. Grant]] at [[Appomattox Court House National Historical Park|Appomattox Court House]]. ||| ||| ||| +1 Battle of Angamos ||| War of the Pacific ||| The '''Battle of Angamos''' (Spanish: Combate de Angamos) was a naval encounter of the [[War of the Pacific]] fought between the navies of Chile and Perú at Punta Angamos, on 8 October, 1879. The battle was the culminant point of a naval campaign that lasted about five months, as the Chilean Navy steamed with the sole mission of eliminating its Peruvian counterpart. In the struggle, two armored frigates, led by Commodore [[Galvarino Riveros]] and Navy Captain [[Juan José Latorre]] battered and later captured the Peruvian monitor ''Huáscar'', under Rear Admiral [[Miguel Grau Seminario]]. ||| ||| ||| +1 Battle of Annaberg ||| Silesian Uprisings ||| The '''Battle of (the) Annaberg''' ({{lang-pl|Bitwa o Górę Św. Anny}}) was the biggest [[battle]] of the [[Silesian Uprisings]]. The battle, which took place between May 21-26, 1921, was fought at the [[Annaberg (hill)|Annaberg]] (Polish: ''Góra Św. Anny''), a strategic hill near the village of [[Góra Świętej Anny|Annaberg O.S.]] (''Góra Świętej Anny''), located southeast of [[Opole|Oppeln]] (Opole) in [[Province of Upper Silesia|Upper Silesia]], [[Weimar Republic|Weimar Germany]]. After the hill had been captured by irregular Polish-Silesian units in the [[Third Silesian Uprising]], German [[Freikorps]] pushed the Polish forces back. The final border was determined by political and diplomatic efforts. ||| ||| ||| +1 Battle of Annual ||| Rif War ||| The '''Battle of Annual''' was fought on July 22, 1921, at [[Annual (Morocco)|Annual]] in [[Spanish Morocco]], between the [[Spanish Army of Africa]] and [[Berber People|Berber]] combatants of the [[Rif]] region during the [[Rif War (1920)|Rif War]]. The Spanish suffered a major military defeat, almost always referred to by the Spanish as the '''Disaster of Annual''', which led to major political crises and a redefinition of Spanish colonial policy toward the Rif. ||| ||| ||| +1 Battle of Antietam ||| American Civil War ||| The '''Battle of Antietam''' {{IPAc-en|æ|n|ˈ|t|iː|t|əm}}, also known as the '''Battle of Sharpsburg''', particularly in the [[Southern United States|South]], fought on September 17, 1862, near [[Sharpsburg, Maryland]], and [[Antietam Creek]] as part of the [[Maryland Campaign]], was the first major battle in the [[American Civil War]] to take place on Union soil. It is the bloodiest single-day battle in [[History of the United States|American history]], with a combined tally of dead, wounded, and missing at 22,717. ||| ||| ||| +1 Battle of Ap Bac ||| Vietnam War ||| The '''Battle of Ấp Bắc''' was a major battle fought on January 2, 1963, during the [[Vietnam War]]. It was fought in [[Định Tường]] Province (now part of [[Tiền Giang Province]]), [[South Vietnam]]. On December 28, 1962, US intelligence detected the presence of a radio transmitter along with a sizable force of [[National Front for the Liberation of South Vietnam]] (NLF/Viet Cong) soldiers, reported to number around 120, in the hamlet of Ap Tan Thoi in Dinh Tuong Province, home of the [[Army of the Republic of South Vietnam]] (ARVN) [[7th Division (South Vietnam)|7th Infantry Division]]. To destroy the NLF force, the South Vietnamese and their US advisers planned to attack Ap Tan Thoi from three directions by using two provincial Civil Guard battalions and elements of the 11th Infantry Regiment, ARVN 7th Infantry Division. The infantry units would be supported by artillery, [[M113 armored personnel carrier|M-113 armored personnel carrier]]s and helicopters. ||| ||| ||| +1 Battle of Aqaba ||| Arab Revolt ||| '''Battle of Aqaba''' (6 July 1917) was fought for the [[Jordan]]ian port of [[Aqaba]]. The attacking forces of the [[Arab Revolt]], led by [[Auda ibu Tayi]] and advised by [[T. E. Lawrence]] ('Lawrence of Arabia'), were victorious over the Turkish defenders. ||| ||| ||| +1 Battle of Arcole ||| French Revolutionary Wars ||| The '''Battle of Arcole''' or '''Battle of Arcola''' (15–17 November 1796) was a battle fought between French and Austrian forces {{convert|25|km|mi|0}} southeast of [[Verona]] during the [[War of the First Coalition]], a part of the [[French Revolutionary Wars]]. ||| ||| ||| +1 Battle of Arica ||| War of the Pacific ||| The '''Battle of Arica''', also known as ''Assault and Capture of Cape Arica'', was a battle in the [[War of the Pacific]]. It was fought on 7 June 1880, between the forces of Chile and Peru. ||| ||| ||| +1 Battle of Arkansas Post ||| American Civil War ||| The '''Battle of Arkansas Post''', or the '''Battle of Fort Hindman''', was fought January 9-11, 1863, near the mouth of the [[Arkansas River]] at [[Arkansas Post|Arkansas Post, Arkansas]], as part of the [[Vicksburg Campaign]] of the [[American Civil War]]. ||| ||| ||| +1 Battle of Arnhem ||| Operation Market Garden ||| After sweeping through [[France]] and [[Belgium]] in the summer of 1944, the [[Allies of World War II|Allies]] were poised to enter the [[Netherlands]]. [[British Army|British]] [[Field marshal (United Kingdom)|Field Marshal]] [[Knight|Sir]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] favoured a single thrust north over the branches of the [[Lower Rhine]] River, allowing the [[Second Army (United Kingdom)|British Second Army]] to bypass the [[Siegfried Line]] and attack the [[Ruhr]]. To this end, the Allies launched [[Operation Market Garden]] on 17 September. [[Airborne forces|Airborne troops]] were dropped in the Netherlands to secure key bridges and towns along the Allied axis of advance. Farthest north, the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]], supported by men of the [[Glider Pilot Regiment]] and the [[1st Independent Parachute Brigade (Poland)|1st Polish Parachute Brigade]], landed at Arnhem to secure bridges across the [[Nederrijn]]. Initially expecting a walkover, [[XXX Corps (United Kingdom)|British XXX Corps]] planned to reach the British airborne forces within two to three days. ||| ||| ||| +1 Battle of Arracourt ||| World War II ||| The '''Battle of Arracourt''' was a major clash between U.S. and German armored forces near the town of [[Arracourt]], [[Lorraine (region)|Lorraine]], France, between 18–29 September 1944, during [[World War II]]. As part of a [[counteroffensive]] against recent U.S. advances in France, the German [[5th Panzer Army]] had as its objective the recapture of [[Lunéville]] and the elimination of the [[XII Corps (United States)|U.S. XII Corps]] bridgehead over the [[Moselle River]] at Dieulouard. ||| ||| ||| +1 Battle of Arras (1917) ||| Western Front (World War I) ||| For much of the war, the opposing armies on the [[Western Front (World War I)|Western Front]] were at a stalemate, with a continuous line of trenches stretching from the Belgian coast to the Swiss border. ||| ||| ||| +1 Battle of Arsuf ||| Third Crusade ||| The '''Battle of Arsuf''' was a battle of the [[Third Crusade]] in which [[Richard I of England]] (Richard the Lionheart) defeated [[Saladin]] (Ṣalāḥ al-Dīn Yūsuf ibn Ayyūb), founder of the [[Ayyubid dynasty]] and [[Sultan]] of [[Egypt]] and [[Syria]], at [[Arsuf]] in [[Palestine (region)|Palestine]]. The forces of the Third Crusade had taken the city of [[Acre, Israel|Acre]] after a prolonged [[Siege of Acre (1189–91)|siege]]. The next strategic target for the Christian army was to secure the city of [[Jaffa]], which would facilitate their ultimate goal, the recapture of the city of [[Jerusalem]]. ||| ||| ||| +1 Battle of Athens (1861) ||| American Civil War ||| The '''Battle of Athens''' was an [[American Civil War]] [[skirmish]] that took place in northeast [[Missouri]] in 1861 near present [[Revere, Missouri|Revere]] and southeast [[Iowa]] along the [[Des Moines River]] across from Croton (3 miles southeast of [[Farmington, Iowa|Farmington]]). The Union victory has the distinction of being the most northerly of Civil War Battles fought west of the Mississippi, and also of being the only such battle fought along the [[Iowa]] border. ||| ||| ||| +1 Battle of Atlanta ||| American Civil War ||| The '''Battle of Atlanta''' was a battle of the [[Atlanta Campaign]] fought during the [[American Civil War]] on July 22, 1864, just southeast of [[Atlanta, Georgia]]. Continuing their summer campaign to seize the important rail and supply center of Atlanta, [[Union Army|Union]] forces commanded by [[William Tecumseh Sherman|William T. Sherman]] overwhelmed and defeated [[Confederate States Army|Confederate]] forces defending the city under [[John Bell Hood|John B. Hood]]. Union [[Major general (United States)|Maj. Gen.]] [[James B. McPherson]] was killed during the battle. Despite the implication of finality in its name, the battle occurred midway through the campaign, and the city did not fall until September 2, 1864, after a Union siege and various attempts to seize railroads and supply lines leading to Atlanta. After taking the city, Sherman's troops headed south-southeastward toward [[Milledgeville, Georgia|Milledgeville]], the state [[Capital city|capital]], and on to [[Savannah, Georgia|Savannah]] with the [[Sherman's March to the Sea|March to the Sea]]. ||| ||| ||| +1 Battle of Attu ||| Pacific War ||| The '''Battle of Attu''', which took place from 11–30 May 1943, was fought between forces of the [[United States]], aided by Canadian reconnaissance and fighter-bomber support, and the [[Empire of Japan]] on [[Attu Island]] off the coast of the [[Territory of Alaska]] as part of the [[Aleutian Islands Campaign]] during the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] and was the only [[land battle]] of [[World War II]] fought on [[incorporated territory]] of the United States. It is also the only land battle in which Japanese and American forces fought in [[Arctic]] conditions. ||| ||| ||| +1 Battle of Attu ||| World War II ||| The '''Battle of Attu''', which took place from 11–30 May 1943, was fought between forces of the [[United States]], aided by Canadian reconnaissance and fighter-bomber support, and the [[Empire of Japan]] on [[Attu Island]] off the coast of the [[Territory of Alaska]] as part of the [[Aleutian Islands Campaign]] during the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] and was the only [[land battle]] of [[World War II]] fought on [[incorporated territory]] of the United States. It is also the only land battle in which Japanese and American forces fought in [[Arctic]] conditions. ||| ||| ||| +1 Battle of Aubers Ridge ||| Second Battle of Artois ||| The '''Battle of Aubers Ridge''' was a [[United Kingdom|British]] offensive on the [[Western Front (World War I)|Western Front]] on 9 May 1915 during [[World War I]]. The battle was part of the British contribution to the [[Second Battle of Artois]], a Franco-British offensive intended to exploit the German diversion of troops to the Eastern Front. The French Tenth Army was to attack the German Sixth Army north of Arras and capture Vimy Ridge, preparatory to an advance on Cambrai and Douai. The British First Army on the left (northern) flank of the Tenth Army, was to attack on the same day and widen the gap in the German defences, expected to be made by the Tenth Army and to prevent German troops from being moved south of La Bassée canal. ||| ||| ||| +1 Battle of Aubers Ridge ||| Western Front (World War I) ||| The '''Battle of Aubers Ridge''' was a [[United Kingdom|British]] offensive on the [[Western Front (World War I)|Western Front]] on 9 May 1915 during [[World War I]]. The battle was part of the British contribution to the [[Second Battle of Artois]], a Franco-British offensive intended to exploit the German diversion of troops to the Eastern Front. The French Tenth Army was to attack the German Sixth Army north of Arras and capture Vimy Ridge, preparatory to an advance on Cambrai and Douai. The British First Army on the left (northern) flank of the Tenth Army, was to attack on the same day and widen the gap in the German defences, expected to be made by the Tenth Army and to prevent German troops from being moved south of La Bassée canal. ||| ||| ||| +1 Battle of Authion ||| World War II ||| The '''Battle of Authion''' was a military engagement that took place towards the end of [[World War II]] within the near defeat of [[Nazi Germany]] in April 1945. Allied forces were sent to the [[French Alps]] - [[United Kingdom|British]] and [[France|French]] Army were ready to face the determined but weakened [[Germany|Germans]] and [[Italy|Italians]]. A critical choke point was the 2 km high massive Authion where the Axis were locked up in. Hoping to conquer Authion and so create a clear path to [[Italy]], [[Harold Alexander, 1st Earl Alexander of Tunis|Harold Alexander]] authorized an assault on Authion on 10 April 1945. ||| ||| ||| +1 Battle of Avesnes-le-Sec ||| French Revolutionary Wars ||| The '''Battle of Avesnes-le-Sec''' was a military action during the [[Flanders Campaign]] of the [[French Revolutionary Wars]], between [[Republican France|French]] forces under General Nicolas Declaye, and Imperial [[Austria]]n forces under [[Johann I Joseph, Prince of Liechtenstein|Johann I]] of [[Liechtenstein]] and [[Count Heinrich von Bellegarde]]. The Austrian cavalrymen made an overwhelming charge against the French and severely defeated them. ||| ||| ||| +1 Battle of Bad Axe ||| Black Hawk War ||| The '''Battle of Bad Axe''', also known as the '''Bad Axe Massacre''', occurred 1–2 August 1832, between [[Sauk people|Sauk]] (Sac) and [[Fox (tribe)|Fox]] Indians and [[United States Army]] regulars and militia. This final battle of the [[Black Hawk War]] took place near present-day [[Victory, Wisconsin|Victory]], [[Wisconsin]] in the [[United States]]. It marked the end of the war between white settlers and militia in [[Illinois]] and [[Michigan Territory]], and the Sauk and Fox tribes under warrior [[Black Hawk (Sauk leader)|Black Hawk]]. ||| ||| ||| +1 Battle of Baghdad (2003) ||| 2003 invasion of Iraq ||| The '''Battle of Baghdad''', also known as the '''Fall of Baghdad''', was a military invasion of [[Baghdad]] that took place in early April 2003, as part of the [[2003 invasion of Iraq|invasion of Iraq]]. ||| ||| ||| +1 Battle of Baguio (1945) ||| World War II ||| The '''Battle of Baguio''' occurred between 21 February and 26 April 1945, and was part of the greater [[Battle of Luzon|Luzon campaign]] during the [[Philippines Campaign (1944–45)|Allied liberation of the Philippines]] at the end of [[World War II]]. ||| ||| ||| +1 Battle of Balikpapan (1945) ||| World War II ||| Major operations had ceased by July 21. The 7th Division's casualties were significantly lighter than they had suffered in previous campaigns. The battle was one of the last to occur in [[World War II]], beginning a few weeks before the [[bombing of Hiroshima and Nagasaki]] effectively ended the war. Japan surrendered while the Australians were combing the jungle for stragglers. ||| ||| ||| +1 Battle of Ballinamuck ||| Irish Rebellion of 1798 ||| The '''Battle of Ballinamuck''' (8 September 1798) marked the defeat of the main force of the French incursion during the [[Irish Rebellion of 1798|1798 Rebellion in Ireland]]. ||| ||| ||| +1 Battle of Baltim ||| Yom Kippur War ||| The '''Battle of Baltim''' (also '''Battle of Damietta''', '''Battle of Baltim–Damietta''', '''Battle of Damietta–Baltim''' or '''Battle of Damietta – El Burelos''') was fought between the [[Israeli Navy]] and the [[Egyptian Navy]] on October 8–9, 1973, during the [[Yom Kippur War]]. It took place off the [[Nile delta]], between [[Baltim]] and [[Damietta]]. The battle erupted when six Israeli Sa'ar class missile boats heading toward [[Port Said]] were engaged by four Egyptian [[Osa class missile boat]]s coming from [[Alexandria]]. It lasted about forty minutes. ||| ||| ||| +1 Battle of Ban Me Thuot ||| Vietnam War ||| The '''Battle of Ban Me Thuot''' was a decisive battle of the [[Vietnam War]] which led to the complete destruction of [[South Vietnam]]'s [[II Corps Tactical Zone]]. The battle was part of a larger [[North Vietnam]]ese military operation known as Campaign 275 to capture the [[Tay Nguyen]] region, known in the West as the Vietnamese Central Highlands. ||| ||| ||| +1 Battle of Bardia ||| Operation Compass ||| The '''Battle of Bardia''' was fought over three days between 3 and 5 January 1941, as part of [[Operation Compass]], the first military operation of the [[Western Desert Campaign]] of the Second World War. It was the first battle of the war in which an [[Australian Army]] formation took part, the first to be commanded by an Australian general and the first to be planned by an Australian staff. [[Major General (Australia)|Major General]] [[Iven Mackay]]'s [[6th Division (Australia)|6th Division]] assaulted the strongly held Italian fortress of [[Bardia]], Libya, assisted by air support and naval gunfire, and under the cover of an [[Barrage (artillery)|artillery barrage]]. The [[16th Brigade (Australia)|16th Infantry Brigade]] attacked at dawn from the west, where the defences were known to be weak. [[Sapper]]s blew gaps in the [[barbed wire]] with [[Bangalore torpedo]]es and filled in and broke down the sides of the anti-tank ditch with [[Pickaxe|picks]] and [[shovel]]s. This allowed the infantry and 23 [[Matilda II]] tanks of the [[7th Royal Tank Regiment]] to enter the fortress and capture all their objectives, along with 8,000 prisoners. ||| ||| ||| +1 Battle of Bardia ||| Western Desert Campaign ||| The '''Battle of Bardia''' was fought over three days between 3 and 5 January 1941, as part of [[Operation Compass]], the first military operation of the [[Western Desert Campaign]] of the Second World War. It was the first battle of the war in which an [[Australian Army]] formation took part, the first to be commanded by an Australian general and the first to be planned by an Australian staff. [[Major General (Australia)|Major General]] [[Iven Mackay]]'s [[6th Division (Australia)|6th Division]] assaulted the strongly held Italian fortress of [[Bardia]], Libya, assisted by air support and naval gunfire, and under the cover of an [[Barrage (artillery)|artillery barrage]]. The [[16th Brigade (Australia)|16th Infantry Brigade]] attacked at dawn from the west, where the defences were known to be weak. [[Sapper]]s blew gaps in the [[barbed wire]] with [[Bangalore torpedo]]es and filled in and broke down the sides of the anti-tank ditch with [[Pickaxe|picks]] and [[shovel]]s. This allowed the infantry and 23 [[Matilda II]] tanks of the [[7th Royal Tank Regiment]] to enter the fortress and capture all their objectives, along with 8,000 prisoners. ||| ||| ||| +1 Battle of Barnet ||| Wars of the Roses ||| The '''Battle of Barnet''' was a decisive engagement in the [[Wars of the Roses]], a dynastic conflict of [[England in the Middle Ages|15th-century England]]. The military action, along with the subsequent [[Battle of Tewkesbury]], secured the throne for [[Edward IV of England|Edward IV]]. On 14 April 1471 near [[Chipping Barnet|Barnet]], then a small Hertfordshire town north of London, Edward led the [[House of York]] in a fight against the [[House of Lancaster]], which backed [[Henry VI of England|Henry VI]] for the throne. Leading the Lancastrian army was [[Richard Neville, 16th Earl of Warwick]], who played a crucial role in the fate of each king. Historians regard the battle as one of the most important clashes in the Wars of the Roses, since it brought about a decisive turn in the fortunes of the two houses. Edward's victory was followed by fourteen years of Yorkist rule over England. ||| ||| ||| +1 Battle of Barrosa ||| Peninsular War ||| The '''Battle of Barrosa''' (Chiclana, 5 March 1811) was part of an unsuccessful manoeuvre to break the [[siege of Cádiz]] in Spain during the [[Peninsular War]]. During the battle, a single British [[Division (military)|division]] defeated two French divisions and captured a [[French Imperial Eagle|regimental eagle]]. ||| ||| ||| +1 Battle of Basra (2003) ||| 2003 invasion of Iraq ||| The '''Battle of Basra''' lasted from March 21, 2003 to April 6, 2003 and was one of the first battles of the [[2003 invasion of Iraq]]. The [[7th Armoured Brigade (United Kingdom)|British 7 Armoured Brigade]] fought their way into Iraq's second-largest city, [[Basra]], on 6 April coming under constant attack by the Iraqi Army 51st Division and [[Fedayeen]]. While elements of the [[Parachute Regiment (United Kingdom)|Parachute Regiment]] cleared the 'old quarter' of the city that was inaccessible to vehicles. Entering Basra had only been achieved after two weeks of conflict, which included the biggest tank battle of the war by British forces when the [[Royal Scots Dragoon Guards]] destroyed 14 Iraqi tanks on 27 March. ||| ||| ||| +1 Battle of Basra (2008) ||| Iraq War ||| The '''Battle of Basra''' began on March 25, 2008, when the [[Iraqi Army]] launched an operation (code-named ''Saulat al-Fursan''<!-- please add Arabic script -->, meaning '''Operation ''Charge of the Knights ''''' in Arabic) to drive the [[Mahdi Army]] militia out of the southern [[Iraq]]i city of [[Basra]]. The operation was the first major operation to be planned and carried out by the Iraqi Army since the [[Iraq War|invasion of 2003]]. ||| ||| ||| +1 Battle of Bassignano ||| War of the Austrian Succession ||| The '''Battle of Bassignana''' was fought in the Italian campaign of the [[War of the Austrian Succession]] on September 27, 1745. It resulted in a victory for the combined armies of France and Spain over Austria and the [[Kingdom of Sardinia]]. ||| ||| ||| +1 Battle of Bataan ||| World War II ||| The '''Battle of Bataan''', fought 7 January – 9 April 1942, represented the most intense phase of [[Empire of Japan|Imperial Japan's]] [[Battle of the Philippines (1941–42)|invasion of the Philippines]] during [[World War II]]. In January 1942, forces of the [[Imperial Japanese Army]] and [[Imperial Japanese Navy|Navy]] invaded [[Luzon]] along with several islands in the Philippine Archipelago after the [[Attack on Pearl Harbor|bombing of the American naval base at Pearl Harbor]]. The commander-in-chief of all Filipino and American forces in the islands, General [[Douglas MacArthur]], consolidated all of his Luzon-based units on the [[Bataan]] Peninsula to fight against the Japanese invaders. By this time, the Japanese controlled nearly all of Southeast Asia. The [[Bataan]] peninsula and the island of [[Corregidor]] were the only remaining Allied strongholds in the region. Despite a lack of supplies, Filipino (many were U.S. Nationals) and American forces managed to fight the Japanese for three months, engaging them initially in a fighting retreat southward. As the combined Filipino and American forces made a last stand, the delay cost the Japanese valuable time and prohibited immediate victory across the Pacific. The surrender at Bataan was the largest in [[Military history of the United States|American]] and [[Military history of the Philippines|Filipino military histories]], and was the largest United States surrender since the [[American Civil War]]'s [[Battle of Harpers Ferry|Battle of Harper's Ferry]]. ||| ||| ||| +1 Battle of Batina ||| World War II in Yugoslavia ||| According to some estimates the Battle of Batina is the biggest battle by the amount of power of the participants, the intensity of fighting and the strategic importance during the [[World War II in Yugoslavia]]. ||| ||| ||| +1 Battle of Baton Rouge (1862) ||| American Civil War ||| The '''Battle of Baton Rouge''' was a ground and naval battle in the [[American Civil War]] fought in [[East Baton Rouge Parish, Louisiana|East Baton Rouge Parish]], [[Louisiana]], on August 5, 1862. The [[Union (American Civil War)|Union]] victory halted [[Confederate States Army|Confederate]] attempts to recapture the capital city of Louisiana. ||| ||| ||| +1 Battle of Bayonne ||| Peninsular War ||| The '''Battle of Bayonne''' of 14 April 1814 was a ''[[sortie]]'' by [[Major General|General]] [[Pierre Thouvenot|Thouvenot's]] French garrison of [[Bayonne]] during the siege of that city conducted by Allied forces under [[Lieutenant General]] [[John Hope, 4th Earl of Hopetoun|John Hope]]. The battle was the last of the [[Peninsular War]] and occurred as news of [[Napoleon|Napoleon's]] [[abdication]] was beginning to reach the opposing forces. ||| ||| ||| +1 Battle of Bayou Bourbeux ||| American Civil War ||| The '''Battle of Bayou Bourbeux''' also known as the '''Battle of Grand Coteau''' or the '''Battle of Carrion Crow Bayou''' (Carrion Crow is the [[Cajun French]] word for buzzard), which is present day [[Carencro, Louisiana|Carencro Bayou]], was fought in southwestern [[Louisiana]] west of the town of [[Grand Coteau, Louisiana|Grand Coteau]], during the [[American Civil War]]. ||| ||| ||| +1 Battle of Bazentin Ridge ||| Western Front (World War I) ||| The '''Battle of Bazentin Ridge''' {{nowrap|(14–17 July 1916),}} was part of the [[Battle of the Somme (1916)|Battle of the Somme]] {{nowrap|(1 July – 18 November)}} on the [[Western Front (World War I)|Western Front]] in France, during the [[World War I|First World War]]. The British [[Fourth Army (United Kingdom)|Fourth Army]] (General [[Henry Rawlinson, 1st Baron Rawlinson|Henry Rawlinson]]) attacked at dawn on 14 July, against the German [[2nd Army (German Empire)|2nd Army]] (General [[Fritz von Below]]) and was the start of the second phase of the battle. Dismissed beforehand by a [[France|French]] commander as 'an attack organized for [[amateur]]s by amateurs', it turned out to be 'hugely successful' for the British, in contrast to the disaster of the [[First day on the Somme]] on 1 July. The British were unable to exploit the success and the 2nd Army recovered, leading to another period of [[battle of attrition|attrition]], before the general attacks of September. ||| ||| ||| +1 Battle of Beaufort ||| American Revolutionary War ||| The '''Battle of Beaufort''', also known as the '''Battle of Port Royal Island''', was fought on February 3, 1779, near [[Beaufort, South Carolina]], during the [[American Revolutionary War]]. The inconsequential battle took place not long after [[Kingdom of Great Britain|British]] forces consolidated control around [[Savannah, Georgia]], which [[Capture of Savannah|they had captured]] in December 1778. ||| ||| ||| +1 Battle of Beda Fomm ||| Operation Compass ||| The rapid British advance during [[Operation Compass]] (9 December 1940 – 9 February 1941) forced the Italian [[Tenth Army (Italy)|10th Army]] to evacuate [[Cyrenaica]], the eastern province of [[Libya]]. In late January, the British learned that the Italians were retreating along the [[Litoranea Balbo]] (''Via Balbia'') from Benghazi. The [[7th Armoured Division (United Kingdom)|7th Armoured Division]] (Major-General Sir [[Michael O'Moore Creagh]]) was dispatched to intercept the remnants of the 10th Army by moving through the desert, south of the [[Jebel Akhdar, Libya|Jebel Akhdar]] (Green Mountain) via [[Msus]] and [[Antelat]] as the [[Australian 6th Division|6th Australian Division]] pursued the Italians along the coast road, north of the jebel. The terrain was hard going for the British tanks and Combeforce (Lieutenant-Colonel [[John Frederick Boyce Combe|J. F. B. Combe]]), a flying column of wheeled vehicles, was sent ahead across the chord of the jebel. ||| ||| ||| +1 Battle of Beirut (1941) ||| World War II ||| The '''Battle of Beirut''' (12 July 1941) marked the end of hostilities in the [[Syria-Lebanon campaign]] of [[World War II]]. ||| ||| ||| +1 Battle of Belchite (1937) ||| Spanish Civil War ||| The '''Battle of Belchite''' refers to a series of military operations that took place between 24 August and 7 September 1937, in and around the small town of [[Belchite]], in [[Aragon]] during the [[Spanish Civil War]]. ||| ||| ||| +1 Battle of Belgium ||| World War II ||| The '''Battle of Belgium''' or '''Belgian Campaign''',{{sfn|Belgian American Educational Foundation|1941}} often referred to within Belgium as the '''18 Days' Campaign''' ({{lang-fr|Campagne des 18 jours}}, {{lang-nl|Achttiendaagse Veldtocht}}), formed part of the greater [[Battle of France]], an offensive campaign by [[Nazi Germany|Germany]] during the [[World War II|Second World War]]. It took place over 18 days in May 1940 and ended with the German occupation of Belgium following the surrender of the [[Belgian Army]]. ||| ||| ||| +1 Battle of Belmont ||| American Civil War ||| The '''Battle of Belmont''' was fought on November 7, 1861, in [[Mississippi County, Missouri]]. It was the first combat test in the [[American Civil War]] for [[Brigadier general (United States)|Brig. Gen.]] [[Ulysses S. Grant]], the future [[Union Army]] general in chief and eventual [[President of the United States|U.S. president]]; Grant's troops in this battle were the 'nucleus' of the Union [[Army of the Tennessee]]. ||| ||| ||| +1 Battle of Benavente ||| Peninsular War ||| The '''Battle of Benavente''' (29 December 1808) was a cavalry clash in which the British cavalry of [[Henry Paget, 1st Marquess of Anglesey|Lord Paget]] defeated the elite ''[[Chasseurs à cheval]]'' of the French [[Imperial Guard (Napoleon I)|Imperial Guard]] during the [[Battle of Corunna|Corunna Campaign]] of the [[Peninsular War]]. The French chasseurs were broken and forced into the [[Esla river|River Esla]]; their commanding officer, General [[Charles, comte Lefebvre-Desnouettes|Lefebvre-Desnouettes]], was captured. The action was the first major incident in the British army's harrowing retreat to the coast and ultimate evacuation by sea. ||| ||| ||| +1 Battle of Benburb ||| Irish Confederate Wars ||| The '''Battle of Benburb''' took place on 5 June 1646 during the [[Irish Confederate Wars]], the Irish theatre of the [[Wars of the Three Kingdoms]]. It was fought between the forces of [[Confederate Ireland]] under [[Owen Roe O'Neill]] and a [[Scotland|Scottish]] [[Covenanter]] and [[Old English (Ireland)|Anglo-Irish]] army under [[Robert Monro]]. The battle ended in a decisive victory for the Irish Confederates and ended the Scottish hopes of conquering Ireland and imposing their own religious settlement there. ||| ||| ||| +1 Battle of Berryville ||| American Civil War ||| '''The Battle of Berryville''' was fought September 3 and September 4, 1864, in [[Clarke County, Virginia]]. It took place toward the end of the [[American Civil War]]. ||| ||| ||| +1 Battle of Białołęka ||| November Uprising ||| The '''Battle of Białołęka''' was fought from February 24 to February 25, 1831, in the village of [[Białołęka]], Poland, during the [[November Uprising]]. Though the [[Poland|Polish]] forces were victorious over the [[Russia]]ns, the outcome was not decisive, and was inconclusive in the scope of the larger [[November Uprising#The Russo-Polish war|Russo-Polish War]]. ||| ||| ||| +1 Battle of Biberach (1796) ||| French Revolutionary Wars ||| The '''Battle of Biberach''' was fought on 2 October 1796 between a [[First French Republic]] army led by [[Jean Victor Marie Moreau]] and a [[Habsburg Monarchy|Habsburg Austrian]] army led by [[Maximilian Anton Karl, Count Baillet de Latour]]. The French army paused in its retreat toward the [[Rhine]] River to savage the pursuing Austrians. The action occurred during the [[War of the First Coalition]], part of the [[French Revolutionary Wars]]. [[Biberach an der Riss]] is located {{convert|35|km|mi|0}} southwest of [[Ulm]]. ||| ||| ||| +1 Battle of Biberach (1800) ||| French Revolutionary Wars ||| The '''Battle of Biberach''' on 9 May 1800 saw a [[French First Republic]] corps under [[Laurent Gouvion Saint-Cyr]] engage part of a [[Habsburg Monarchy|Habsburg Austrian]] army led by [[Pál Kray]]. After an engagement in which the Austrians suffered twice as many casualties as the French, Kray withdrew to the east. The combat occurred during the [[War of the Second Coalition]], part of the [[French Revolutionary Wars]]. [[Biberach an der Riss]] is located {{convert|35|km|mi|0}} southwest of [[Ulm]]. ||| ||| ||| +1 Battle of Big Sandy Creek ||| War of 1812 ||| '''The Battle of Big Sandy Creek''' was fought in northwestern [[New York]] on May 29–30, 1814, during the [[War of 1812]]. The battle was an [[United States|American]] victory in which American [[militia]] and [[Oneidas|Oneida Indians]] launched a surprise attack on [[United Kingdom of Great Britain and Ireland|British]] soldiers who were chasing them inland from [[Lake Ontario]]. ||| ||| ||| +1 Battle of Binh Gia ||| Vietnam War ||| The '''Battle of Binh Gia''' ({{lang-vi|Trận Bình Giã}}), which was part of a larger [[Communism|communist]] campaign, was conducted by the [[Viet Cong]] from December 28, 1964, to January 1, 1965, during the [[Vietnam War]] in [[Binh Gia|Bình Giã]]. The battle took place in [[Phước Tuy Province]] (now part of [[Bà Rịa–Vũng Tàu Province]]), [[South Vietnam]]. ||| ||| ||| +1 Battle of Bitonto ||| War of the Polish Succession ||| King [[Philip V of Spain]] had always aimed to reconquer Naples and Sicily, which Spain lost to the [[Habsburg Monarchy|Habsburgs]] as a consequence of the [[War of the Spanish Succession]]. In 1714 he married [[Elisabeth Farnese]], who had dynastic interests in Italy. Under her influence he had attempted without success to recover the Italian holdings in the [[War of the Quadruple Alliance]]. When the [[War of the Polish Succession]] broke out in 1733, he saw an opportunity to act against the Habsburgs, who had no military support among western European powers ([[Great Britain]] and the [[Dutch Republic]] opting to remain neutral), with active opposition by [[France]] and [[Charles Emmanuel III of Sardinia]]. In the fall of 1733 Spain and France signed the [[Treaty of the Escorial]], the first of several Bourbon Family Compacts. The treaty pledged mutual protection and aid, and provided for the allies to work together for the conquest of Habsburg territories on the Italian peninsula. ||| Prelude ||| ||| +1 Battle of Blanc Mont Ridge ||| Western Front (World War I) ||| But by the end of September 1918, the time had come for a grand roll-back; it was time for the Allies to regain occupied France and Flanders. The German Army was suffering regular defeats and had sunk to conscripting the too-young and too-old into service. In the northwest of the [[Western Front (World War I)|Western Front]], the British, bolstered by Canadian and ANZAC divisions, with the small Belgian Army on their flank, were on the attack; while to the east, the newly arrived First Army of the [[American Expeditionary Forces on the Western Front (World War I) order of battle|American Expeditionary Force (AEF)]] was advancing in fits and starts towards Sedan. ||| Background ||| ||| +1 Battle of Blenheim ||| War of the Spanish Succession ||| The '''Battle of Blenheim''' (referred to in some countries as the '''Second Battle of Höchstädt'''), fought on 13 August 1704, was a major battle of the [[War of the Spanish Succession]]. The overwhelming Allied victory ensured the safety of [[Vienna]] from the Franco-Bavarian army, thus preventing the collapse of the [[Grand Alliance (League of Augsburg)|Grand Alliance]]. ||| ||| ||| +1 Battle of Bloody Ridge ||| Korean War ||| The '''Battle of Bloody Ridge''' was a ground combat battle that took place during the [[Korean War]] from August 18 to September 5, 1951. ||| ||| ||| +1 Battle of Blore Heath ||| Wars of the Roses ||| The '''Battle of Blore Heath''' was one of the first major battles in the English [[Wars of the Roses]]. It was fought on 23 September 1459, at [[Blore Heath]] in [[Staffordshire]], two miles east of the town of [[Market Drayton]] in [[Shropshire]], England. ||| ||| ||| +1 Battle of Bobruysk (1918) ||| October Revolution ||| On July 24, 1918, Jozef Dowbor-Musnicki, who was a General of the [[Imperial Russian Army]] and an ethnic Pole, created a Polish tactical-operational unit of the Russian Army: one of the first such units during [[World War One]]. After the [[October Revolution]] of 1917, headquarters of the Polish I Corps in Russia decided to operate in Belarus, in the area marked by the towns of [[Rahachow]] – [[Zlobin]] – Babruysk. ||| ||| ||| +1 Battle of Bong Son ||| Vietnam War ||| The '''Battle of [[Bồng Sơn]]''' was the second major battle for the [[1st Cavalry Division (United States)|US 1st Cavalry Division]], an [[air assault#First U.S. Airmobile Combat Deployments|airmobile unit of divisional strength]], during the [[Vietnam War]]. The battle was part of '''[[Operation Masher]]''', also known as Operation Whitewing. A month earlier in 1965, in the [[Battle of the Ia Drang]], the 1st Cavalry used all the division infantry, but one brigade at a time. One of the realizations that affected Bong Son was that with adequate helicopter lift, the traditional need to keep a strong reserve was less required—the least involved unit usually could break away and go where it was needed. ||| ||| ||| +1 Battle of Booneville ||| American Civil War ||| The '''Battle of Booneville''' was fought on July 1, 1862, in [[Booneville, Mississippi]], during the [[American Civil War]]. It occurred in the aftermath of the [[Union Army|Union]] victory at the [[Battle of Shiloh]] and within the context of [[Confederate States Army|Confederate]] General [[Braxton Bragg]]'s efforts to recapture the rail junction at [[Siege of Corinth|Corinth, Mississippi]], {{convert|20|mi|km}} north of Booneville. ||| ||| ||| +1 Battle of Boonville ||| American Civil War ||| The '''First Battle of Boonville''' was a minor skirmish of the [[American Civil War]], occurring on June 17, 1861, near [[Boonville, Missouri|Boonville]] in [[Cooper County, Missouri]]. Although casualties were extremely light, the battle's strategic impact was far greater than one might assume from its limited nature. The Union victory established what would become an unbroken Federal control of the [[Missouri River]], and helped to thwart efforts to bring Missouri into the [[Confederate States of America|Confederacy]]. ||| ||| ||| +1 Battle of Boquerón (1932) ||| Chaco War ||| The '''Battle of Boquerón '''was a battle fought from September 7 to September 29, 1932, between the Bolivian and Paraguayan armies in and around the stronghold of Boquerón. It was the first major battle of the [[Chaco War]]. The outpost (''fortín'') of Boquerón, among others, had been occupied by Bolivian troops since late July 1932 following instructions of president [[Daniel Salamanca]] leading to the escalation of the border conflict into a full-scale war. ||| ||| ||| +1 Battle of Bornhöved (1813) ||| War of the Sixth Coalition ||| The '''Battle of Bornhöved''' or '''Bornhöft''' was a battle on 7 December 1813 between a Swedish cavalry regiment under [[Bror Cederström]] and [[Prince Frederik of Hesse]]'s Danish troops reinforced by smaller numbers of Polish cavalry and German infantry. The clash occurred at the small village of [[Bornhöft]] in what is now [[Schleswig-Holstein]] in north Germany. The engagement occurred during the [[War of the Sixth Coalition]], part of the [[Napoleonic Wars]], and was the last time Swedish and Danish forces met on the battlefield. ||| ||| ||| +1 Battle of Bornos (1811) ||| Peninsular War ||| The '''Battle of Bornos''' on 5 November 1811 saw a [[Kingdom of Spain|Spanish]] force led by [[Francisco Ballesteros]] attack an [[First French Empire|Imperial French]] column under Jean-Baptiste Pierre de Semellé. The action was part of a larger operation in which the French tried to trap Ballesteros but failed. Instead, the Spanish general lashed out at one of the French columns. The French escaped disaster when they fought their way out, but a French-allied Spanish battalion either surrendered or switched sides. [[Bornos]] is about {{convert|40|mi|km|0}} northeast of [[Jerez de la Frontera]] on Route 342. The battle occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Borodino ||| French invasion of Russia ||| The '''Battle of Borodino''' ({{lang-ru|Бородинское сражение}}, ''Borodinskoe srazhenie''; {{lang-fr|Bataille de [[Moscow River|la Moskova]]}}), fought on September 7, 1812, was a major engagement in the [[Napoleonic Wars]] during the [[French invasion of Russia]]. The fighting involved around 250,000 troops and produced at least 70,000 casualties, making Borodino the single deadliest day of the Napoleonic Wars. Napoleon's Grande Armée launched an attack against the Russian army, driving the latter back from their initial positions but failing to score a decisive victory. Both armies were exhausted after the battle and the Russians withdrew from the field the following day. Borodino represented the last Russian effort at stopping the French advance on Moscow, which fell a week later; but because the Russian army was not badly beaten enough to be rendered ineffective, the French would have no clear way of bringing Czar Alexander to peace, resulting ultimately in the retreat from Moscow and the defeat of the French invasion. ||| ||| ||| +1 Battle of Borovo Selo ||| Croatian War of Independence ||| The '''Battle of Borovo Selo''' on 2 May 1991 (known in [[Croatia]] as the '''Borovo Selo massacre''', {{lang-hr|Pokolj u Borovom Selu}} and in [[Serbia]] as the '''Borovo Selo incident''', {{lang-sr|Инцидент у Боровом Селу}}) was one of the first armed clashes in the conflict which became known as the [[Croatian War of Independence]]. The clash was precipitated by months of rising ethnic tensions and armed combat in [[Pakrac clash|Pakrac]] and at the [[Plitvice Lakes incident|Plitvice Lakes]] in March. The immediate cause for the confrontation in the heavily ethnic Serb village of [[Borovo Selo]], just north of [[Vukovar]], was a failed attempt to replace a [[Flag of Yugoslavia|Yugoslav flag]] in the village with a [[Flag of Croatia|Croatian one]]. The unauthorised effort by four Croatian policemen resulted in the capture of two by a [[Croatian Serb]] militia in the village. To retrieve the captives, Croatian authorities deployed additional police, who drove into an ambush. At least twelve Croatian policemen and an unknown number of Serbs were killed in the battle before the [[Yugoslav People's Army]] (JNA) intervened and stopped the fighting. ||| ||| ||| +1 Battle of Bosworth Field ||| Wars of the Roses ||| The '''Battle of Bosworth''' (or '''Bosworth Field''') was the last significant battle of the [[Wars of the Roses]], the civil war between the [[House of Lancaster|Houses of Lancaster]] and [[House of York|York]] that raged across England in the latter half of the 15th century. Fought on 22 August 1485, the battle was won by the Lancastrians. Their leader [[Henry VII of England|Henry Tudor, Earl of Richmond]], by his victory became the first English monarch of the [[Tudor dynasty]]. His opponent, [[Richard III of England|Richard III]], the last king of the House of York, was killed in the battle. Historians consider Bosworth Field to mark the end of the [[House of Plantagenet|Plantagenet dynasty]], making it a defining moment of English and Welsh history. ||| ||| ||| +1 Battle of Bothaville ||| Second Boer War ||| De Wet was one of the most successful Boer commanders of the [[Second Boer War]], disrupting British supply lines almost with impunity. On 6 November, De Wet camped at [[Bothaville]] on the [[Valsch River]] with 800 [[Orange Free State]] commandos. His party included the president of the Free State, [[Marthinus Steyn]]. De Wet was aware that Maj. Gen. [[Charles Edmond Knox|Charles Knox]]'s greatly superior British all-arms force was camped {{convert|7|mi|km}} away and believed that his outposts would give him adequate warning of any enemy moves. What he did not know was that the men at his main outpost had fallen asleep. ||| Battle ||| ||| +1 Battle of Boulogne (1940) ||| Battle of France ||| The '''Battle of Boulogne''' was the defence of the port of [[Boulogne-sur-Mer]] by French, British and Belgian troops, during the [[Battle of France]] in 1940. The battle was fought at the same time as the [[Siege of Calais (1940)|Siege of Calais]], just before [[Operation Dynamo]], the evacuation of the [[British Expeditionary Force (World War II)|British Expeditionary Force]] (BEF) through [[Dunkirk]]. After the Franco-British counter-attack at the [[Battle of Arras (1940)|Battle of Arras]] (21 May) German units were held ready to resist a resumption of the attack on 22 May, despite the protests of General [[Heinz Guderian]], the commander of XIX Corps, who wanted to rush north up the Channel coast to capture Boulogne, Calais and Dunkirk. An attack by part of the XIX Corps was not authorised until {{nowrap|12:40 p.m.}} on 22 May, by when the Allied troops at Boulogne had been reinforced from England by most of the [[20th Independent Infantry Brigade (Guards)|20th Guards Brigade]]. ||| ||| ||| +1 Battle of Bound Brook ||| American Revolutionary War ||| The '''Battle of Bound Brook''' (April 13, 1777) was a surprise attack conducted by British and Hessian forces against a [[Continental Army]] outpost at [[Bound Brook, New Jersey]] during the [[American Revolutionary War]]. The British objective of capturing the entire garrison was not met, although prisoners were taken. The American commander, Major General [[Benjamin Lincoln]], left in great haste, abandoning papers and personal effects. ||| ||| ||| +1 Battle of Braddock Down ||| First English Civil War ||| The '''Battle of Braddock Down''' was a battle of the south-western campaign of the [[First English Civil War]]. It was fought on open ground in [[Cornwall]], on 19 January 1643. An apparently easy victory for the [[Cavalier|Royalists]] under [[Ralph Hopton|Sir Ralph Hopton]] secured Cornwall for [[Charles I of England|King Charles]] and confirmed Hopton's reputation as a commander. Hopton also gained respect for the mercy shown to his foe, of whom 1,500 were captured during and after the battle. The precise location of the battlefield is a matter of dispute, though [[English Heritage]] believe it to be within parkland at [[Boconnoc]]. ||| ||| ||| +1 Battle of Brandywine ||| American Revolutionary War ||| The '''Battle of Brandywine''', also known as the '''Battle of Brandywine Creek''', was fought between the American army of [[General]] [[George Washington]] and the British army of General [[William Howe, 5th Viscount Howe|Sir William Howe]] on September 11, 1777. The British defeated the Americans and forced them to withdraw toward the American capital of [[Philadelphia]]. The engagement occurred near [[Chadds Ford Township, Pennsylvania|Chadds Ford, Pennsylvania]] during Howe's [[Philadelphia Campaign|campaign to take Philadelphia]], part of the [[American Revolutionary War]]. More troops fought at Brandywine than any other battle of the American Revolution. ||| ||| ||| +1 Battle of Brice's Crossroads ||| American Civil War ||| The '''Battle of Brice's Crossroads''' was fought on June 10, 1864, near [[Baldwyn, Mississippi|Baldwyn]] in [[Lee County, Mississippi]], during the [[American Civil War]]. [[Confederate States Army|Confederate]] [[Major General]] [[Nathan Bedford Forrest]] led a 4,787-man contingent against an 8,100-strong [[Union army|Union]] force led by [[Brigadier General]] [[Samuel D. Sturgis]]. The battle ended in a rout of the Union forces and cemented Forrest's reputation as one of the great cavalrymen. It was his greatest victory. ||| ||| ||| +1 Battle of Brier Creek ||| American Revolutionary War ||| The '''Battle of Brier Creek''' was an [[American Revolutionary War]] battle fought on March 3, 1779 near the confluence of [[Brier Creek]] with the [[Savannah River]] in eastern [[Georgia (U.S. state)|Georgia]]. A [[Patriot (American Revolution)|Patriot]] force consisting principally of militia from [[North Carolina]] and Georgia was surprised, suffering significant casualties. The battle occurred only a few weeks after a resounding [[United States|American]] Patriot victory over the [[Kingdom of Great Britain|British]] at [[Battle of Kettle Creek|Kettle Creek]], north of [[Augusta, Georgia|Augusta]], reversing its effect on morale. ||| ||| ||| +1 Battle of Britain ||| World War II ||| The '''Battle of Britain ''' ([[German language|German]]: ''Luftschlacht um England'', literally 'Air battle for England') is the name given to the [[World War II|Second World War]] defence of the [[United Kingdom]] by the [[Royal Air Force]] (RAF) against an onslaught by the German Air Force ([[Luftwaffe]]) which began at the end of June 1940. In Britain, the officially recognised dates are 10 July – 31 October 1940, overlapping with the period of large-scale night attacks known as [[The Blitz]]. ||| ||| ||| +1 Battle of Buffalo ||| War of 1812 ||| The '''Battle of Buffalo''' (also known as the '''Battle of Black Rock''') took place during the [[War of 1812]] between [[British Empire]] and the United States on December 30, 1813 in the State of New York, near the [[Niagara River]]. The British forces drove off the hastily organized defenders and engaged in considerable plundering and destruction. The operation was conceived as an act of retaliation for the burning by American troops of the Canadian village of Newark (present day [[Niagara-on-the-Lake]]). ||| ||| ||| +1 Battle of Buna–Gona ||| World War II ||| The '''Battle of Buna–Gona''' was part of the [[New Guinea campaign]] in the [[Pacific war|Pacific Theatre]] during [[World War II]]. It followed the conclusion of the [[Kokoda Track campaign]] and lasted from 16 November 1942 until 22 January 1943. The battle was conducted by [[Australian Defence Force|Australian]] and [[United States armed forces|United States forces]] against the [[Empire of Japan|Japanese]] [[beachhead]]s at [[Buna, Papua New Guinea|Buna]], [[Sanananda]] and [[Gona]]. From these, the Japanese had launched an overland attack on [[Port Moresby]]. In light of developments in the [[Solomon Islands campaign]], Japanese forces approaching Port Moresby were ordered to withdraw to and secure these bases on the northern coast. Australian forces maintained contact as the Japanese conducted a well-ordered [[rearguard]] action. The [[Allies of World War II|Allied]] objective was to eject the Japanese forces from these positions and deny them their further use. The Japanese forces were skilful, well prepared and resolute in their defence. They had developed a strong network of well-concealed defences. ||| ||| ||| +1 Battle of Bure ||| World War II ||| The '''Battle of Bure''' was part of the [[Battle of the Bulge]], which lasted from the 2 to 5 January 1945 during the final months of the [[World War II|Second World War]]. The battle was fought as part of the allied counterattack to rid the German held ground of the 'Bulge' which forced them on the defensive. [[XXX Corps (United Kingdom)|British XXX Corps]] with [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] attached was tasked with clearing the area East of [[Dinant]], [[Rochfort]], [[Gupont]] and [[Bure, Belgium|Bure]]. In a tough battle Bure was secured after nearly three days of heavy fighting whilst Gupont and Rochefort were both cleared with little resistance and the advance continued. ||| ||| ||| +1 Battle of Burgos ||| Peninsular War ||| The '''Battle of Burgos''', also known as '''Battle of Gamonal''', was fought on November 10, 1808, during the [[Peninsular War]] in the village of Gamonal, near [[Burgos]], Spain. A powerful [[France|French]] army under [[Jean-Baptiste Bessières|Marshal Bessières]] overwhelmed and destroyed the outnumbered [[Spain|Spanish]] troops under General Belveder, opening central Spain to invasion. ||| ||| ||| +1 Battle of Burnt Corn ||| Creek War ||| '''The Battle of Burnt Corn''', also known as the '''Battle of Burnt Corn Creek''', was an encounter between United States armed forces and [[Creek (people)|Creek Indians]] that took place July 27, 1813 in present-day southern [[Alabama]]. The battle was part of the [[Creek War]]. ||| ||| ||| +1 Battle of Bussaco ||| Peninsular War ||| The '''Battle of Buçaco''' ({{IPA-pt|buˈsaku|pron}}) or '''Bussaco''', fought on 27 September 1810 during the [[Peninsular War]] in the Portuguese mountain range of [[Serra do Buçaco]], resulted in the defeat of French forces by [[Arthur Wellesley, 1st Duke of Wellington|Lord Wellington's]] [[Anglo-Portuguese Army]]. ||| ||| ||| +1 Battle of Cabin Creek ||| American Civil War ||| | partof = the [[American Civil War]] ||| ||| ||| +1 Battle of Calabria ||| Battle of the Mediterranean ||| The '''Battle of Calabria''', (known to the Italian Navy as the '''Battle of Punta Stilo''') was a [[naval battle]] during the [[Battle of the Mediterranean]] in [[World War II]]. It was fought between the [[Kingdom of Italy (1861-1946)|Italian]] [[Regia Marina|Royal Navy]] (''[[Regia Marina]]'') and the British [[Royal Navy]] and the [[Royal Australian Navy]]. The battle occurred 30 miles to the east of [[Punta Stilo]], [[Calabria]], on 9 July 1940. It was one of the few [[pitched battle]]s of the Mediterranean campaign during [[World War II]] involving large numbers of ships on both sides. Both sides claimed victory, but in fact the battle was a draw and everyone returned to their bases as soon as possible. After the battle the [[Allies of World War II|Allies]] claimed to have achieved some sort of 'moral ascendancy' over the Italian Navy; conversely, the Italian propaganda depicted the clash as a victory of their own. ||| ||| ||| +1 Battle of Calderón Bridge ||| Mexican War of Independence ||| The '''Battle of Calderón Bridge''' ({{lang-es|Batalla del Puente de Calderón}}) was a decisive battle in the [[Mexican War of Independence]]. It was fought in January 1811 on the banks of the [[Calderón River]] {{convert|60|km|mi|abbr=on}} east of [[Guadalajara, Jalisco|Guadalajara]] in present day [[Zapotlanejo]], [[Jalisco]]. ||| ||| ||| +1 Battle of Caldiero (1796) ||| French Revolutionary Wars ||| In the '''Battle of Caldiero''' on 12 November 1796, a [[Habsburg Austria|Habsburg Austrian]] army led by [[Jozsef Alvinczi]] fought a [[First French Republic]] army commanded by [[Napoleon Bonaparte]]. The French assaulted the Austrian positions, which were initially held by the army advance guard under [[Prince Friedrich Franz Xaver of Hohenzollern-Hechingen]]. The defenders held firm until reinforcements arrived in the afternoon to push back the French. This marked a rare tactical setback for Bonaparte, whose forces withdrew into [[Verona]] that evening after having suffered greater losses than their adversaries. The action occurred during the [[War of the First Coalition]], which was part of the [[French Revolutionary Wars]]. [[Caldiero]] is a town located about {{convert|15|km|mi|abbr=on}} east of Verona. ||| ||| ||| +1 Battle of Caldiero (1813) ||| War of the Sixth Coalition ||| The '''Battle of Caldiero''' on 15 November 1813 saw an army of the [[First French Empire]] under [[Eugène de Beauharnais]] opposed to an [[Austrian Empire]] army led by [[Johann von Hiller]]. Eugène, who was the [[Viceroy]] of the [[Kingdom of Italy (Napoleonic)|Napoleonic Kingdom of Italy]] inflicted a defeat on Hiller's troops, driving them from [[Caldiero]]. The action took place during the [[War of the Sixth Coalition]], part of the [[Napoleonic Wars]]. Caldiero is located {{convert|15|km|mi|0}} east of [[Verona]] on the [[Autostrada A4 (Italy)|Autostrada A4]]. ||| ||| ||| +1 Battle of Calliano ||| French Revolutionary Wars ||| The '''Battle of Calliano''' on 6 and 7 November 1796 saw an Austrian corps commanded by [[Paul Davidovich]] rout a French division directed by [[Claude-Henri Belgrand de Vaubois|Claude Belgrand de Vaubois]]. The engagement was part of the third Austrian attempt to relieve the French [[Siege of Mantua (1796-1797)|siege of Mantua]] during the [[French Revolutionary Wars]]. The battle was preceded by a clash at [[Cembra]] on 2 November and followed by actions at [[Rivoli Veronese]] on 17 and 21 November. ||| ||| ||| +1 Battle of Camden ||| American Revolutionary War ||| The '''Battle of Camden''' was a major victory for the [[Kingdom of Great Britain|British]] in the [[Southern theater of the American Revolutionary War|Southern theater]] of the [[American Revolutionary War]] (American War of Independence). On August 16, 1780, British forces under [[Lieutenant General]] [[Charles Cornwallis|Charles, Lord Cornwallis]] routed the American forces of [[Major General]] [[Horatio Gates]] about 10 km (five miles) north of [[Camden, South Carolina]], strengthening the British hold on the [[Province of Carolina|Carolinas]] following the [[Siege of Charleston|capture of Charleston]]. ||| ||| ||| +1 Battle of Camp Allegheny ||| American Civil War ||| The '''Battle of Camp Allegheny''', also known as the '''Battle of [[Allegheny Mountain (West Virginia, Virginia)|Allegheny Mountain]]''', took place on December 13, 1861, in [[Pocahontas County, West Virginia|Pocahontas County, Virginia]] (now [[West Virginia]]) as part of the Operations in Western Virginia Campaign during the [[American Civil War]]. ||| ||| ||| +1 Battle of Camp Hill ||| First English Civil War ||| The '''Battle of Camp Hill''' (or the '''Battle of Birmingham''') took place in and around [[Camp Hill, West Midlands|Camp Hill]], during the [[First English Civil War]], on Easter Monday, 3 April 1643, when a company of [[Roundhead|Parliamentarians]] from the [[Lichfield]] garrison with the support of some of the local townsmen, in all about 300 men, attempted to stop a detachment of [[Cavalier|Royalists]], of about 1,200 cavalry and dragoons and 600 to 700 foot, under the command of [[Prince Rupert of the Rhine|Prince Rupert]] from passing through the unfortified parliamentary town of [[Birmingham]]. ||| ||| ||| +1 Battle of Campichuelo ||| Paraguay campaign ||| The '''Battle of Campichuelo''' was a battle fought on 19 December 1810 between revolutionary forces led by [[Manuel Belgrano]] and Royalist troops on the right bank of the [[Paraná river]], as part of the [[Paraguay campaign]] of the [[Argentine War of Independence]]. It ended with a victory for the forces of Belgrano. ||| ||| ||| +1 Battle of Campo Grande ||| Chaco War ||| The '''Battle of Campo Grande''' was a major engagement which took place during the [[Chaco War]], in the southern region of the Chaco Boreal. During this battle, the Paraguayan Army successfully encircled two Bolivian regiments defending two of the three flanks of Fort Alihuatá, forcing them to surrender. ||| ||| ||| +1 Battle of Campo Jordán ||| Chaco War ||| The '''Battle of Campo Jordán''' occurred during the [[Chaco War]], with victory going to the Bolivians, who forced the Paraguayans to retreat towards [[Gondra]], on losing [[Alihuatá]] and the supply route of the Saavedra-Alihuatá road. ||| ||| ||| +1 Battle of Campo Santo ||| War of the Austrian Succession ||| The '''Battle of Campo Santo''' was fought in [[Camposanto|Campo Santo]], [[Italy]] on 8 February 1743 between [[Spain]] and [[Austria]], as part of the [[War of the Austrian Succession]]. The Spaniards and their [[Naples|Neapolitan]] allies under General [[Jean Thierry du Mont, comte de Gages|De Gages]] were fought to a standstill by the Austrians and their [[Sardinia]]n allies under Field Marshal Traun on the [[Panaro (river)|Panaro]]. The Spanish sustained heavy casualties, but as darkness fell, Traun ordered a general retreat; de Gages, rather than pursue, himself drew back over the river. ||| ||| ||| +1 Battle of Cane Hill ||| American Civil War ||| The '''Battle of Cane Hill''' was fought during the [[American Civil War]] on November 28, 1862 in [[Washington County, Arkansas]]. [[Union Army|Union]] troops under [[Brigadier General|Brig. Gen.]] [[James G. Blunt]] drove [[Confederate States Army|Confederates]] under Brig. Gen. [[John S. Marmaduke]] back into the [[Boston Mountains]] in northwestern [[Arkansas]]. ||| ||| ||| +1 Battle of Canyon de Chelly ||| Navajo Wars ||| The '''Battle of Canyon de Chelly''' was fought in 1864 as part of the [[Navajo Wars]]. It was a successful operation for the United States [[US Army|Army]] which precipitated the [[Long Walk of the Navajo|Long Walk]] and was the final major military engagement between the Navajo and the Americans. The battle ended with the fall of the main Navajo settlements of [[Canyon de Chelly]] in present day northern [[Arizona]]. ||| ||| ||| +1 Battle of Cao Bang (1979) ||| Sino-Vietnamese War ||| The '''Battle of Cao Bằng''' was fought between the Chinese [[People's Liberation Army]] (PLA) and the [[Vietnam People's Army]] (VPA) over the city of [[Cao Bằng]] and its vicinity, from the beginning of the [[Sino-Vietnamese War]] on 17 February, to 6 March 1979. After the capture of Cao Bằng on 25 February, Chinese forces still had to struggle for days to gain control over other areas in the province against badly outnumbered Vietnamese defenders. Contrary to the Chinese intention to battle against and defeat some major regular units of the VPA, the PLA found themselves encountering mostly small units of Vietnamese border guards and militia, which had clearly outperformed their enemy. ||| ||| ||| +1 Battle of Cap de la Roque ||| War of the Spanish Succession ||| The '''Battle of Cap de la Roque''' was a naval battle that took place on May 22, 1703 between a Dutch [[convoy]] protected by captain [[Roemer Vlacq (1637-1703)|Roemer Vlack]] and a French [[Squadron (naval)|squadron]] under [[Alain Emmanuel de Coëtlogon]], during the [[War of the Spanish Succession]]. ||| ||| ||| +1 Battle of Cape Espartel ||| Spanish Civil War ||| The '''Battle of Cape Espartel''' was a naval battle of the [[Spanish Civil War]] that broke the [[Second Spanish Republic|Republican]] [[blockade]] of the [[Strait of Gibraltar]], securing the naval supply route to [[Spanish Morocco]] for the [[Nationalist Spain|Nationalists]] early in the war. The action occurred on September 29, 1936 between two Nationalist [[cruiser]]s and two Republican [[destroyer]]s. ||| ||| ||| +1 Battle of Cape Matapan ||| World War II ||| The '''Battle of Cape Matapan ''' ({{lang-el|Ναυμαχία του Ταίναρου}}) was a [[World War II|Second World War]] [[naval battle|naval engagement]] fought from 27–29 March 1941. The [[Cape Matapan|cape]] is on the southwest coast of [[Greece]]'s [[Peloponnesus|Peloponnesian]] peninsula. Acting on intercepted signals broken by the [[Government Code and Cypher School]] (GC&CS) at [[Bletchley Park]], a force of British [[Royal Navy]] ships accompanied by several [[Royal Australian Navy]] vessels, under the command of British Admiral [[Andrew Cunningham, 1st Viscount Cunningham of Hyndhope|Andrew Cunningham]], intercepted and sank or severely damaged several ships of the Italian ''[[Regia Marina]]'' under [[Squadron vice-admiral|Squadron-Vice-Admiral]] [[Angelo Iachino]]. ||| ||| ||| +1 Battle of Cape Palos ||| Spanish Civil War ||| The '''Battle of Cape Palos''', also known as the '''Second Battle of Cape Palos''', was the biggest [[naval battle]] of the [[Spanish Civil War]], fought on the night of March 5–6, 1938, east of [[Cape Palos]] near [[Cartagena, Spain]]. ||| ||| ||| +1 Battle of Cape Passero (1940) ||| World War II ||| The '''Battle of Cape Passero''' (1940), was a [[World War II|Second World War]] naval engagement between the [[Royal Navy|British]] [[light cruiser]] {{HMS|Ajax|22|6}} and seven [[torpedo boat]]s and [[destroyer]]s of the ''[[Regia Marina]]'', southeast of [[Sicily]], in the early hours of 12 October 1940. It took place in the aftermath of a British [[Malta Convoys|supply operation]] to [[Malta]]. ||| ||| ||| +1 Battle of Cape St Vincent (1797) ||| French Revolutionary Wars ||| The '''Battle of Cape St Vincent''' (14 February 1797) was one of the opening battles of the [[Anglo-Spanish War (1796–1808)]], as part of the [[French Revolutionary Wars]], where a [[Royal Navy|British fleet]] under Admiral Sir [[John Jervis, 1st Earl of St Vincent|John Jervis]] defeated a larger Spanish fleet under Admiral Don [[José de Córdoba y Ramos]] near [[Cabo de São Vicente|Cape St. Vincent]], Portugal. ||| ||| ||| +1 Battle of Carillon ||| French and Indian War ||| The '''Battle of Carillon''', also known as the '''1758 Battle of Ticonderoga''', was fought on July 8, 1758, during the [[French and Indian War]] (which was part of the global [[Seven Years' War]]). It was fought near [[Fort Carillon]] (now known as [[Fort Ticonderoga]]) on the shore of [[Lake Champlain]] in the [[frontier]] area between the British colony of [[Province of New York|New York]] and the French colony of [[Canada, New France|Canada]]. ||| ||| ||| +1 Battle of Casaglia ||| Neapolitan War ||| The '''Battle of Casaglia''' was a battle in the [[Neapolitan War]] between an Austrian force under the command of [[Johann Freiherr von Mohr]] and a Neapolitan force under their king, [[Joachim Murat]]. The battle took place around the village of Casaglia, seven miles northwest of [[Ferrara]], and resulted in the Austrians recapturing the village from Murat. ||| ||| ||| +1 Battle of Caspe ||| Spanish Civil War ||| The '''Battle of Caspe''' took place during the [[Aragon Offensive]] of the [[Spanish Civil War]] in 16-17 March of 1938. ||| ||| ||| +1 Battle of Cassano (1705) ||| War of the Spanish Succession ||| The '''Battle of Cassano''', fought on 16 August 1705, was a battle in the Italian theatre of the [[War of the Spanish Succession]]. Both sides suffered serious casualties, but the French were victorious. ||| ||| ||| +1 Battle of Cassano (1799) ||| French Revolutionary Wars ||| The '''Battle of Cassano d'Adda''' was fought on 27 April 1799 near [[Cassano d'Adda]], about {{convert|28|km|mi|abbr=on}} ENE of [[Milan]]. It resulted in a victory for the [[Habsburg Monarchy|Austrians]] and [[Russian Empire|Russians]] under [[Alexander Suvorov]] over [[Jean Victor Marie Moreau|Jean Moreau's]] [[French First Republic|French]] army. The action took place during the [[War of the Second Coalition]] during the larger conflict known as the [[French Revolutionary Wars]]. ||| ||| ||| +1 Battle of Cassel (1677) ||| Franco-Dutch War ||| The '''Battle of Cassel''' was fought on April 11, 1677, as a part of the [[Franco-Dutch War]]. It resulted in a [[France|French]] victory under [[Philippe I, Duke of Orléans]], assisted by the [[Louis de Crevant, Duke of Humières|Duke of Humières]] and [[François-Henri de Montmorency, duc de Luxembourg|Marshal Luxembourg]], against the [[Netherlands|Dutch]] under [[William III of England|William III of Orange]], [[Stadtholder]] of the [[Netherlands]]. The battle took place near the city of [[Cassel, France|Cassel]], 30 km south of [[Dunkirk]] in present-day France. ||| ||| ||| +1 Battle of Castalla ||| Peninsular War ||| In the '''Battle of Castalla''' on 13 April 1813, an Anglo-Spanish-Sicilian force commanded by [[Lieutenant General]] [[Sir John Murray, 8th Baronet|Sir John Murray]] fought [[Marshal of France|Marshal]] [[Louis Gabriel Suchet]]'s French Army of Valencia and Aragon. Murray's troops successfully repelled a series of French attacks on their hilltop position, causing Suchet to retreat. The action took place during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Castalla]] is located 35 kilometers north-northwest of [[Alicante]], [[Spain]]. ||| ||| ||| +1 Battle of Castalla (1812) ||| Peninsular War ||| In the '''Battle of Castalla''' (21 July 1812) a small [[Kingdom of Spain|Spanish]] army commanded by [[Joseph O'Donnell (younger)|Joseph O'Donnell]] advanced to attack an [[First French Empire|Imperial French]] division under the leadership of [[Jean Isidore Harispe]]. O'Donnell's battle plan was poorly conceived and the outnumbered French smashed his center column before his right and left wings could intervene. The engagement occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. The battle was fought near [[Castalla]], {{convert|32|km|mi|0}} north-west of [[Alicante]], [[Spain]]. ||| ||| ||| +1 Battle of Castel di Sangro ||| Neapolitan War ||| The '''Battle of Castel di Sangro''' was a minor battle in the [[Neapolitan War]] that took place on 13 May 1815 in the town of [[Castel di Sangro]] in central Italy. The battle resulted in the Neapolitan force being routed. ||| ||| ||| +1 Battle of Castelfranco Veneto ||| War of the Third Coalition ||| In the '''Battle of Castelfranco Veneto''' (24 November 1805), two divisions of the [[Army of Italy (France)|French Army of Italy]] confronted an [[Austrian Empire|Austrian]] brigade led by Prince Louis Victor de Rohan-Guéméné. The Austrians had made a remarkable march from deep in the [[Alps]] to the plains of northern Italy. But, caught between the divisions of [[Jean Reynier]] and [[Laurent Gouvion Saint-Cyr]], Rohan surrendered his command after failing to fight his way out. The event occurred during the [[War of the Third Coalition]], part of the [[Napoleonic Wars]]. [[Castelfranco Veneto]] is located {{convert|40|km|mi|0}} northwest of [[Venice]]. ||| ||| ||| +1 Battle of Castellón ||| Peninsular War ||| The '''Battle of Castellón''' was an [[ambush]] delivered against a [[France|French]] [[First French Empire|Imperial]] detachment under [[Honoré Charles Reille|General Reille]] near [[Girona]] during the [[Peninsular War]] (1807–14). ||| ||| ||| +1 Battle of Castiglione (1706) ||| War of the Spanish Succession ||| The '''Battle of Castiglione''' took place on 8 September 1706 in the [[War of the Spanish Succession]]. A French army defeated a Hessian army besieging [[Castiglione delle Stiviere]]. ||| ||| ||| +1 Battle of Castlebar ||| Irish Rebellion of 1798 ||| The '''Battle of Castlebar''' occurred on 27 August 1798 near the town of [[Castlebar]], [[County Mayo]], during the [[Irish Rebellion of 1798|Irish Rebellion]] of that year. A combined force of 2,000 French troops and Irish rebels routed a force of 6,000 [[British army|British]] militia in what would later become known as the 'Castlebar Races' or 'Races of Castlebar'. ||| ||| ||| +1 Battle of Cañada Strongest ||| Chaco War ||| The '''Battle of Cañada Strongest''' was a battle fought from May 10–25, 1934, between the [[Bolivia]]n and [[Paraguay]]an armies during the [[Chaco War]]. The engagement is considered the greatest victory of the Bolivian army during the war, and actually took place some 60 km southwest of Cañada Strongest, near a dried riverbed called Cañada Esperanza. The battle was a Paraguayan attempt to outflank and eventually conquer Fort Ballivian, a large stronghold that was the keystone of Bolivian defenses along the border with [[Argentina]]. Paraguayans begun to open a new trail in the dry subtropical forests of the Chaco but were discovered by Bolivian aerial reconnaissance. The Paraguayans troops, unaware of having been discovered, were encircled by Bolivian forces who had sneaked up on the path and were waiting for a substantial number of Paraguayan troops to enter the pathway before they ambushed them. A 250-man Paraguayan detachment sent in to monitor the Bolivian movements was also surrounded and eventually captured on May 25 along Lóbrego Path, a route between the first Paraguayan lines and Cañada Esperanza. The Bolivian army took 1,500 prisoners and a good amount of weaponry, trucks and supplies, while almost 400 Paraguayan soldiers were killed. A whole Paraguayan division, however, managed to slip away, along with some scattered units. ||| ||| ||| +1 Battle of Cesenatico ||| Neapolitan War ||| The '''Battle of Cesenatico''' was a minor battle in the [[Neapolitan War]] that took place on 23 April 1815 in the town of [[Cesenatico]] on Adriatic coast. The main Neapolitan army, commanded by their king, [[Joachim Murat]], was retreating to their original headquarters in [[Ancona]] following a string a defeats in northern Italy. The Neapolitans were being pursued by an Austrian corps under the command of [[Adam Albert von Neipperg]]. During the evening of the 23 April, while a Neapolitan garrison of 3,000 men were stationed in the town, a small force of 600 Austrians [[hussar]]s and [[Jäger (military)|jägers]] rushed the single stone bridge into the town. In the ensuing fighting, the Austrians brought out 200 prisoners with only minor casualties while inflicting moderate casualties on the garrison. The following day, the rest of the Austrian advanced guard arrived at the town to find the Neapolitans had already left during the night. ||| ||| ||| +1 Battle of Cetate ||| Crimean War ||| The '''Battle of Cetate''' was fought during the [[Crimean War]]. In this battle an Ottoman force under [[Ahmed Muhtar Pasha|Ahmed Pasha]] attempted to capture the village of [[Cetate, Dolj|Cetate]] in [[Wallachia]], but were unsuccessful. ||| ||| ||| +1 Battle of Chacabuco ||| Chilean War of Independence ||| The '''Battle of Chacabuco''', fought during the [[Chilean War of Independence]], occurred on February 12, 1817. The [[Army of the Andes]] of the [[United Provinces of the Río de la Plata]] led by [[General]] [[Captain (land)|Captain]] [[José de San Martín]] defeated the Spanish force led by [[Rafael Maroto]]. It was a defeat for the [[Captaincy General of Chile]], the royalist government established after the division of the [[Viceroyalty of Peru]]. ||| ||| ||| +1 Battle of Chancellorsville ||| American Civil War ||| The '''Battle of Chancellorsville''' was a major battle of the [[American Civil War]], and the principal engagement of the '''Chancellorsville Campaign'''. It was fought from April 30 to May 6, 1863, in [[Spotsylvania County, Virginia]], near the village of [[Chancellorsville, Virginia|Chancellorsville]]. Two related battles were fought nearby on May 3 in the vicinity of [[Fredericksburg, Virginia|Fredericksburg]]. The campaign pitted [[Union Army]] [[Major general (United States)|Maj. Gen.]] [[Joseph Hooker]]'s [[Army of the Potomac]] against an army less than half its size, [[General (CSA)|Gen.]] [[Robert E. Lee]]'s [[Confederate States Army|Confederate]] [[Army of Northern Virginia]]. Chancellorsville is known as Lee's 'perfect battle' because his risky decision to divide his army in the presence of a much larger enemy force resulted in a significant Confederate victory. The victory, a product of Lee's audacity and Hooker's timid decision making, was tempered by heavy casualties and the mortal wounding of [[Lieutenant General (CSA)|Lt. Gen.]] [[Stonewall Jackson|Thomas J. 'Stonewall' Jackson]] by [[friendly fire]], a loss that Lee likened to 'losing my right arm.' ||| ||| ||| +1 Battle of Changsha (1939) ||| World War II ||| '''Battle of Changsha''' (September 17, 1939 – October 6, 1939) was the first of four attempts by Japan to take the city of [[Changsha]] ([[:zh:長沙市|長沙市]]), [[Hunan]] ([[:zh:湖南省|湖南省]]), during the [[second Sino-Japanese War]]. It was the first major battle of the war to fall within the time frame of what is widely considered [[World War II]]. ||| ||| ||| +1 Battle of Changsha (1944) ||| Second Sino-Japanese War ||| The '''Battle of Changsha''' (1944), (also known as the '''Battle of Hengyang''' or '''Campaign of Changsha-Hengyang''') was an invasion of the [[China|Chinese]] province of [[Hunan]] by [[Japan]]ese troops near the end of the [[Second Sino-Japanese War]]. As such, it encompasses three separate conflicts: an invasion of the city of [[Changsha]] and two invasions of [[Hengyang]]. ||| ||| ||| +1 Battle of Chawinda ||| Indo-Pakistani War of 1965 ||| The '''Battle of Chawinda''' was a part of the [[Sialkot]] Campaign in the [[Indo-Pakistani War of 1965]]. It was one of the largest [[tank]] battles in history since the [[Battle of Kursk]] in [[World War II]]. ||| ||| ||| +1 Battle of Cherbourg ||| Operation Overlord ||| The '''Battle of Cherbourg''' was part of the [[Operation Overlord|Battle of Normandy]] during [[World War II]]. It was fought immediately after the successful [[Allies of World War II|Allied]] [[Normandy landings|landings on June 6, 1944]]. Allied troops mainly [[United States Army|American]] isolated and captured the fortified port, which was considered vital to the [[Western Front (World War II)|campaign in Western Europe]], in a hard-fought, month-long campaign. ||| ||| ||| +1 Battle of Cherbourg ||| World War II ||| The '''Battle of Cherbourg''' was part of the [[Operation Overlord|Battle of Normandy]] during [[World War II]]. It was fought immediately after the successful [[Allies of World War II|Allied]] [[Normandy landings|landings on June 6, 1944]]. Allied troops mainly [[United States Army|American]] isolated and captured the fortified port, which was considered vital to the [[Western Front (World War II)|campaign in Western Europe]], in a hard-fought, month-long campaign. ||| ||| ||| +1 Battle of Cherbourg (1864) ||| American Civil War ||| The '''Battle of Cherbourg''', or sometimes the '''Battle off Cherbourg''' or the '''Sinking of CSS ''Alabama''''', was a [[single-ship action]] fought during the [[American Civil War]] between a [[United States]] [[U.S. Navy|Navy]] warship, the [[USS Kearsarge (1861)|USS ''Kearsarge'']], and a [[Confederate States of America|Confederate States]] [[Confederate States Navy|Navy]] warship, the [[CSS Alabama|CSS ''Alabama'']], on June 19, 1864, off [[Cherbourg]], [[France]]. ||| ||| ||| +1 Battle of Chiatung ||| Japanese invasion of Taiwan (1895) ||| The '''Battle of Chiatung''' (11 October 1895) was an important engagement fought during the [[Japanese invasion of Taiwan (1895)]]. The battle was a Japanese victory. ||| ||| ||| +1 Battle of Chickamauga ||| American Civil War ||| The '''Battle of Chickamauga''', fought September 19–20, 1863, marked the end of a [[Union Army|Union]] offensive in southeastern [[Tennessee]] and northwestern [[Georgia (U.S. state)|Georgia]] called the [[Chickamauga Campaign]]. The battle was the most significant Union defeat in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]] and involved the second highest number of casualties in the war following the [[Battle of Gettysburg]]. It was the first major battle of the war that was fought in [[Georgia (U.S. state)|Georgia]]. ||| ||| ||| +1 Battle of Chipana ||| War of the Pacific ||| The '''Battle of Chipana''' took place on April 12, 1879, during the [[War of the Pacific]] between [[Chile]] and [[Peru]]. It was the first naval engagement between both navies and it took place in front of [[Huanillos]], off the (then) Bolivian coast, as the Peruvian corvette ''[[Unión (ship)|Unión]]'' and gunboat ''[[Pilcomayo (ship)|Pilcomayo]]'' found the Chilean corvette ''Magallanes'' on its way to [[Iquique]]. After a two-hour running artillery duel, ''Unión'' suffered engine problems, the pursuit was called off and ''Magallanes'' escaped with minor damage. The ''Magallanes'' was able to complete part of its mission of delivering commissioned papers to Iquique, but unable to complete its [[reconnaissance]] mission of finding if there were any [[guano]] ships still making commerce in the zone. ||| ||| ||| +1 Battle of Chongju (1950) ||| Korean War ||| The '''Battle of Chongju''' (29–30 October 1950) took place during the [[United Nation]]s (UN) offensive towards the [[Yalu River]], which followed the [[North Korea]]n invasion of [[South Korea]] at the start of the [[Korean War]]. The battle was fought between Australian forces from [[3rd Battalion, Royal Australian Regiment]] (3 RAR) and the 17th Tank Brigade of the [[Korean People's Army]] for control of [[Chongju, North Korea]] and the surrounding area. After detecting a strong North Korean armoured force equipped with [[T-34 tank]]s and [[SU-76|SU-76 self-propelled gun]]s on a thickly wooded ridgeline astride the line of advance, the Australians launched a series of [[company (military)|company]] attacks with American [[M4 Sherman tank]]s and aircraft in support. Despite heavy resistance the North Koreans were forced to withdraw and the Australians captured their objectives after three hours of fighting. ||| ||| ||| +1 Battle of Chosin Reservoir ||| Korean War ||| The '''Battle of Chosin Reservoir''', also known as the '''Chosin Reservoir Campaign''' or the '''Changjin Lake Campaign''' ({{lang-ko|장진호 전투(長津湖戰鬪)}}; {{zh|s=长津湖战役|p=Cháng Jīn Hú Zhànyì}}),{{efn|name=name|Official Chinese sources refer to this battle as the Second Phase Campaign Eastern Sector (第二次战役东线). The Western Sector is the [[Battle of the Ch'ongch'on River]].}} was a decisive battle in the [[Korean War]]. 'Chosin' is the Japanese pronunciation of the Korean name, '[[Changjin]]'. The UN forces relied on Japanese language maps dating from their occupation of Korea which had only ended five years earlier at the conclusion of [[World War II]]. Shortly after the [[People's Republic of China]] entered the conflict, the [[People's Volunteer Army]] 9th Army{{efn|name=nomenclature|In Chinese military nomenclature, the term 'Army' (军) means [[Corps]], while the term 'Army Group' (集团军) means [[Field Army|Army]].}} infiltrated the northeastern part of [[North Korea]]. ||| ||| ||| +1 Battle of Chuam-ni ||| Korean War ||| The '''Battle of Chuam-ni''' was a battle fought between 14–17 February 1951, at [[Chuam-ni]], [[South Korea]], as part of the [[People's Republic of China|Chinese]] and [[North Korean]] offensive towards [[Wonju]] during the [[Korean War]]. The battle was for control of the supply line Route 24. ||| ||| ||| +1 Battle of Chuenpee ||| First Opium War ||| The '''First Battle of Chuenpee''' was fought between British and Chinese ships at the entrance of the [[Bocca Tigris]], China, on 3 November 1839 during the [[First Opium War]]. The British ''[[HMS Hyacinth (1829)|Hyacinth]]'' and ''[[HMS Volage (1825)|Volage]]'' opened fire on Chinese ships they perceived as being hostile. ||| ||| ||| +1 Battle of Chuncheon ||| Korean War ||| The '''Battle of Chuncheon''' was one of a series of coordinated attacks beginning on 25 June 1950 that marked the beginning of the [[Korean War]]. ||| ||| ||| +1 Battle of Château-Thierry (1918) ||| Second Battle of the Marne ||| The '''Battle of Château-Thierry''' was fought on July 18, 1918 and was one of the first actions of the [[American Expeditionary Forces]] (AEF) under [[John J. Pershing|General John J. 'Black Jack' Pershing]]. It was a battle in [[World War I]] as part of the [[Second Battle of the Marne]], initially prompted by a German offensive launched on 15 July against the AEF, the newest troops on the front. ||| ||| ||| +1 Battle of Ciudad Universitaria ||| Spanish Civil War ||| The '''Battle of Ciudad Universitaria''' took place around the [[campus university|campus]] of the [[Complutense University of Madrid]] between 15 and 23 November 1936, during the [[Spanish Civil War]]. ||| ||| ||| +1 Battle of Cloughleagh ||| Wars of the Three Kingdoms ||| The '''Battle of Cloghleagh''', '''Cloghlea''', '''Cloughleagh''' also known as the '''Battle of Funcheon Ford''' or the '''Battle of Manning Water''', was a battle fought between a Protestant Royalist force and a Confederate Catholic force during the [[Wars of the Three Kingdoms]]. It took place south of [[Kilworth]] and north of [[Fermoy]] between the river Funcheon and the river [[Munster Blackwater|Blackwater]] in [[County Cork]] on June 4, 1643. The result was a Catholic victory. ||| ||| ||| +1 Battle of Cobleskill ||| American Revolutionary War ||| The '''Battle of Cobleskill''' (also known as the '''Cobleskill massacre''') was an [[American Revolutionary War]] raid on the frontier settlement of [[Cobleskill (village), New York|Cobleskill, New York]] on May 30, 1778. The battle, having taken place in the modern-day village of Warnerville, NY near Cobleskill-Richmondville High School, marked the beginning of a phase in which [[Loyalist (American Revolution)|Loyalist]]s and [[Iroquois]], encouraged and supplied by British authorities in the [[Province of Quebec (1763-1791)|Province of Quebec]], raided and destroyed numerous villages on what was then the United States western frontier of [[New York]] and [[Pennsylvania]]. ||| ||| ||| +1 Battle of Cockpit Point ||| American Civil War ||| The '''Battle of Cockpit Point''', the '''Battle of Freestone Point''', or the '''Battle of Shipping Point''', took place on January 3, 1862, in [[Prince William County, Virginia]], as part of the blockade of the [[Potomac River]] during the [[American Civil War]]. ||| ||| ||| +1 Battle of Colberger Heide ||| Torstenson War ||| The naval '''Battle of Colberger Heide''' (also '''Kolberger Heide''' or '''Colberg Heath''') took place on 1 July 1644 during the [[Torstenson War]], off the coast of [[Duchy of Schleswig|Schleswig]]-[[Duchy of Holstein|Holstein]]. The battle was indecisive, but a minor success for the [[Denmark-Norway|Dano-Norwegian]] fleet commanded by [[Jørgen Vind]], assisted by Grabow and King [[Christian IV of Denmark|Christian IV]], over a [[Swedish Empire|Swedish]] fleet commanded by [[Clas Fleming (admiral)|Klas Fleming]], assisted by Ulfsparre and [[Klas Hansson Bjelkenstjerna|Bjelkenstjerna]]. ||| ||| ||| +1 Battle of Cold Harbor ||| American Civil War ||| The '''Battle of Cold Harbor''' was fought from May 31 to June 12, 1864, with the most significant fighting occurring on June 3. It was one of the final battles of [[Union Army|Union]] [[Lieutenant general (United States)|Lt. Gen.]] [[Ulysses S. Grant]]'s [[Overland Campaign]] during the [[American Civil War]], and is remembered as one of [[History of the United States|American history's]] bloodiest, most lopsided battles. Thousands of Union soldiers were killed or wounded in a hopeless frontal assault against the fortified positions of [[Confederate States Army|Confederate]] [[General (CSA)|Gen.]] [[Robert E. Lee]]'s army. ||| ||| ||| +1 Battle of Colenso ||| Second Boer War ||| The '''Battle of Colenso''' was the third and final battle fought during the [[Black Week]] of the [[Second Boer War]]. It was fought between British and [[Boer]] forces from the independent South African Republic and Orange Free State in and around [[Colenso, KwaZulu-Natal|Colenso]], Natal, South Africa on 15 December 1899. ||| ||| ||| +1 Battle of Columbus (1865) ||| American Civil War ||| Immediately after the victory at Columbus, Wilson led his raiders east to [[Macon, Georgia]] and occupied that city without resistance. Ten days after the Battle of Columbus, the last great army of the [[Confederate States of America|Confederacy]] under General [[Joseph E. Johnston]] surrendered at [[Bennett Place]], [[North Carolina]]. The [[American Civil War]] had come to an end, and the last major engagement had occurred on the banks of the Chattahoochee River in Columbus. In early May, in central Georgia, Wilson's men apprehended the two most wanted men in America: [[Jefferson Davis]], president of the [[Confederate States of America|Confederacy]]; and Captain [[Henry Wirz]], commandant of the Confederate prison at [[Andersonville National Historic Site|Andersonville]]. ||| On to Macon and the capture of America's most wanted men ||| ||| +1 Battle of Concepción ||| Texas Revolution ||| <!--NB—THE DATES IN THIS ARTICLE ARE NON-AUTOFORMATTED-->The '''Battle of Concepción''' was fought on October 28, 1835, between [[Centralist Republic of Mexico|Mexican]] troops under Colonel [[Domingo Ugartechea]] and [[Texian]] insurgents led by [[James Bowie]] and [[James Fannin]]. The 30-minute engagement, which historian J. R. Edmondson describes as 'the first major engagement of the [[Texas Revolution]]', occurred on the grounds of [[Mission Concepción]], {{convert|2|mi|km}} south of what is now [[Downtown San Antonio]] in the U.S. state of Texas. ||| ||| ||| +1 Battle of Connor ||| Bruce campaign in Ireland ||| ''Main Article:'' [[Bruce campaign in Ireland]] ||| Background ||| ||| +1 Battle of Cooch's Bridge ||| American Revolutionary War ||| After having successfully [[New York and New Jersey campaign|captured New York City]] in 1776, British military planners organized two expeditions to divide the [[Thirteen Colonies]] and, they hoped, decisively end [[American Revolutionary War|the rebellion]]. One expedition was to take control of the [[Hudson River]] by a descent from [[Province of Quebec (1763-1791)|Quebec]], while the other was targeted at the colonial capital, [[Philadelphia]]. ||| Background ||| ||| +1 Battle of Cook's Mills ||| War of 1812 ||| The '''Battle of Cook's Mills''' was the last engagement between U.S. and British armies in the [[Niagara Peninsula|Niagara]], and the penultimate engagement (followed by the [[Battle of Malcolm's Mills]]) on Canadian soil during the [[War of 1812]]. ||| ||| ||| +1 Battle of Cookes Canyon ||| Apache Wars ||| The '''Battle of Cookes Canyon''' was an engagement of the [[Apache Wars]] fought in the later part of August 1861, between [[settler]]s from [[Confederate Arizona]], and [[Chiricahua]] [[Apache]]s. It occurred about {{convert|40|mi}} northwest of [[Mesilla, New Mexico|Mesilla]], in [[Cookes Canyon]]. The exact date of the battle is unknown. ||| ||| ||| +1 Battle of Copenhagen (1801) ||| French Revolutionary Wars ||| The battle was the result of multiple failures of [[diplomacy]] in the latter half of the 18th century. At the beginning of 1801, during the [[French Revolutionary Wars]], [[Great Britain|Britain]]'s principal advantage over [[France]] was its naval superiority. The Royal Navy searched neutral ships trading with French ports, seizing their cargoes if they were deemed to be trading with France. It was in the British interest to guarantee its naval supremacy and all trade advantages that resulted from it. The Russian Tsar [[Paul I of Russia|Paul]], after having been a British ally, arranged a [[Second League of Armed Neutrality|League of Armed Neutrality]] comprising [[Denmark]], [[Sweden]], [[Prussia]], and [[Russia]], to enforce free trade with France. The British viewed the League to be very much in the French interest and a serious threat. The League was hostile to the British blockade and, according to the British, its existence threatened the supply of timber and naval stores from Scandinavia. ||| Background ||| ||| +1 Battle of Copenhagen (1807) ||| Gunboat War ||| On 21 October 1807, the British fleet left Copenhagen for the United Kingdom. However, the [[Gunboat War|war]] continued until 1814, when the [[Treaty of Kiel]] was signed. ||| Bombardment ||| ||| +1 Battle of Coral–Balmoral ||| Vietnam War ||| The '''Battle of Coral–Balmoral''' (12 May – 6 June 1968) was a series of actions fought during the [[Vietnam War]] between the [[1st Australian Task Force]] (1 ATF) and the [[People's Army of Vietnam|North Vietnamese]] [[7th Division (Vietnam)|7th Division]] and [[Viet Cong]], {{convert|40|km|mi}} north-east of [[Saigon]]. Following the defeat of the communist [[Tet Offensive|Tet offensive]] in January and February, in late April two Australian infantry [[battalion]]s—the [[1st Battalion, Royal Australian Regiment|1st]] and [[3rd Battalion, Royal Australian Regiment|3rd Battalions]] of the [[Royal Australian Regiment]] (RAR)—with supporting arms, were again deployed from their base at [[Nui Dat]] in [[Phuoc Tuy Province]] to positions astride infiltration routes leading to Saigon to interdict renewed movement against the capital. Part of the wider allied [[Operation Toan Thang I]], it was launched in response to intelligence reports of another impending communist offensive, yet the Australians experienced little fighting during this period. Meanwhile, the Viet Cong successfully penetrated the capital on 5 May, plunging Saigon into chaos during the [[May Offensive]] in an attempt to influence the upcoming [[Paris Peace Accords|Paris peace talks]] scheduled to begin on the 13th. During three days of intense fighting the attacks were repelled by US and [[ARVN|South Vietnamese]] forces, and although another attack was launched by the Viet Cong several days later, the offensive was again defeated with significant losses on both sides, causing extensive damage to Saigon and many civilian casualties. By 12 May the fighting was over, and the North Vietnamese and Viet Cong were forced to withdraw having suffered heavy casualties. US casualties were also heavy and it proved to be their most costly week of the war. ||| ||| ||| +1 Battle of Corregidor ||| Pacific War ||| Corregidor's defeat marked the fall of the Philippines and Asia, but Imperial Japan's timetable for the conquest of Australia and the rest of the Pacific was severely upset. Its advance was ultimately checked at the battle for [[New Guinea campaign|New Guinea]], and at [[Battle of Guadalcanal|Guadalcanal]], the turning point in the [[Pacific War]]. ||| Aftermath ||| ||| +1 Battle of Corregidor ||| World War II ||| The '''Battle of Corregidor''', fought May 5–6, 1942, was the culmination of the [[Empire of Japan|Japanese]] campaign for the conquest of the [[Commonwealth of the Philippines]] during [[World War II]]. ||| ||| ||| +1 Battle of Corrick's Ford ||| American Civil War ||| The '''Battle of Corrick's Ford''' took place on July 13, 1861, on the [[Cheat River]] in western Virginia (now the state of [[West Virginia]]) as part of the Operations in Western Virginia Campaign during the [[American Civil War]]. By later standards the battle was a minor skirmish. Often considered a final part of the [[Battle of Rich Mountain]], it was the end of a series of battles between the forces of [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]] and [[Confederate States Army|Confederate]] [[Brigadier General (CSA)|Brig. Gen.]] [[Robert S. Garnett]]. ||| ||| ||| +1 Battle of Corunna ||| Peninsular War ||| The '''Battle of Corunna''' (or ''A Coruña'', ''La Corunna'', ''La Coruña'', ''Elviña'' or ''La Corogne'') took place on 16 January 1809, when a French [[corps]] under [[Marshal of the Empire]] [[Nicolas Jean de Dieu Soult]] attacked a British army under [[Lieutenant-General]] [[John Moore (British soldier)|Sir John Moore]]. The battle took place amidst the [[Peninsular War]], which was a part of the wider [[Napoleonic Wars]]. It was a result of a French campaign, led by [[Napoleon]], which had defeated the Spanish armies and caused the British army to withdraw to the coast following an unsuccessful attempt by Moore to attack Soult's corps and divert the French army. ||| ||| ||| +1 Battle of Craney Island ||| War of 1812 ||| The '''Battle of Craney Island''' was a victory for the United States during the [[War of 1812]]. The battle saved the city of [[Norfolk, Virginia]], from [[British Empire|British]] invasion. ||| ||| ||| +1 Battle of Cremona ||| War of the Spanish Succession ||| The '''Battle of Cremona''' was a battle of the [[War of the Spanish Succession]] that took place on 1 February 1702 between France and Austria. ||| ||| ||| +1 Battle of Crooked Billet ||| American Revolutionary War ||| The '''Battle of Crooked Billet''' was a battle in the [[Philadelphia campaign]] of the [[American Revolutionary War]] fought on May 1, 1778 near the Crooked Billet Tavern (present-day [[Hatboro, Pennsylvania|Hatboro]], [[Pennsylvania]]). In the skirmish action, [[Kingdom of Great Britain|British]] forces under the command of [[Major]] [[John Graves Simcoe]] launched a surprise attack against [[Brigadier General]] [[John Lacey (general)|John Lacey]] and three regiments of Pennsylvania militia, who were literally caught sleeping. The British inflicted significant damage, and Lacey and his forces were forced to retreat into neighboring [[Bucks County, Pennsylvania|Bucks County]]. ||| ||| ||| +1 Battle of Cropredy Bridge ||| English Civil War ||| The '''Battle of [[Cropredy Bridge]]''' was a battle of the [[English Civil War]]s, fought on 29 June 1644 between a [[Roundhead|Parliamentarian]] army under Sir [[William Waller]] and the [[Cavalier|Royalist]] army of King [[Charles I of England|Charles]]. After a Parliamentarian attack on the Royalist rearguard was repulsed, Waller's army became demoralised and ineffective, allowing the King to retrieve the Royalists' fortunes after other defeats during the earlier part of the year. ||| ||| ||| +1 Battle of Crucifix Hill ||| World War II ||| The '''Battle of Crucifix Hill''' was a [[World War II]] battle that took place on 8 October 1944, on Crucifix Hill (Haarberg) ([[Hill 239]]), next to the village of [[Haaren (Aachen)|Haaren]] in Germany and was a part of the U.S. 1st Division's campaign to seize [[Aachen|Aachen, Germany]]. The [[Battle of Aachen]] was part of the [[Drive to the Siegfried Line]]. The hill was named after a large [[crucifix]] mounted on the top of the hill. The objective of the battle was to gain control of the hill, which was laced with a maze of [[Bunker#Pillbox|pillboxes]] and [[bunker]]s, so that the main objective of encircling Aachen could be completed. The hill was held by units of the [[Nazi Germany|German]] [[246th Volksgrenadier Division (Germany)|246. ''Volksgrenadierdivision'']]. ||| ||| ||| +1 Battle of Cuito Cuanavale ||| Angolan Civil War ||| The '''Battle of Cuito Cuanavale''' in 1987/88 was an important episode in the [[Angolan Civil War]] (1975 to 2002). Between 9 September and 7 October 1987, the [[Armed Forces for the Liberation of Angola]] (FAPLA), in an attempt to destroy the guerrillas of [[UNITA]] (the National Union for the Total Independence of Angola), advanced into southeastern Angola from Cuito Cuanavale to attack UNITA at [[Mavinga]]. The [[South African Defence Force]] (SADF), whose primary objective was to protect UNITA in southern Angola in order to prevent the South West African People's Organization ([[SWAPO]]) from using the region to launch attacks into South West Africa, once more intervened on UNITA's behalf. The Battle of Cuito Cuanavale, which took place over about six months, was at that time the biggest battle on African soil since [[World War II]]. ||| ||| ||| +1 Battle of Culloden ||| Jacobite rising of 1745 ||| The '''Battle of Culloden''' ({{lang-gd|Blàr Chùil Lodair}}) was the final confrontation of the [[Jacobite rising of 1745]] and part of a religious civil war in Britain. On 16 April 1746, the [[Jacobitism|Jacobite]] forces of [[Charles Edward Stuart]] fought loyalist troops commanded by [[Prince William, Duke of Cumberland|William Augustus, Duke of Cumberland]], near [[Inverness]] in the [[Scottish Highlands]]. ||| ||| ||| +1 Battle of Culpeper Court House ||| American Civil War ||| The '''Battle of Culpeper Court House''' was an [[American Civil War]] [[skirmish]] fought September 13, 1863, near [[Culpeper, Virginia]], between the [[cavalry]] of the [[Union Army|Union]] [[Army of the Potomac]] and that of the [[Confederate States Army|Confederate]] [[Army of Northern Virginia]]. The Union victory opened up the Culpeper region to Federal control, a prelude to the subsequent [[Bristoe Campaign]]. ||| ||| ||| +1 Battle of Cynthiana ||| American Civil War ||| The '''Second Battle of Cynthiana''' included three separate engagements during the [[American Civil War]] that were fought on June 11 and 12, 1864, in [[Harrison County, Kentucky]], in and near the town of [[Cynthiana, Kentucky|Cynthiana]]. This was part of [[Confederate States Army|Confederate]] [[Brigadier General (United States)|Brigadier General]] [[John Hunt Morgan]]'s 1864 Raid into Kentucky. The battle ultimately resulted in a victory by [[Union Army|Union]] forces over the raiders and ended Morgan's Last Kentucky Raid in defeat. Morgan's Raiders had previously captured the town in the First Battle of Cynthiana, July 17, 1862. ||| ||| ||| +1 Battle of Cyzicus ||| Peloponnesian War ||| The naval '''Battle of Cyzicus''' took place in 410 BC during the [[Peloponnesian War]]. In the battle, an [[Athens|Athenian]] fleet commanded by [[Alcibiades]], [[Thrasybulus]], and [[Theramenes]] routed and completely destroyed a [[Sparta]]n fleet commanded by [[Mindarus]]. The victory allowed Athens to recover control over a number of cities in the [[Hellespont]] over the next year. In the wake of their defeat, the Spartans made a peace offer, which the Athenians rejected. ||| ||| ||| +1 Battle of Czechoslovak Radio ||| World War II ||| The '''Battle for Czech Radio''' was a major part of the [[Prague uprising]] during [[World War II]]. Plans for the liberation of the radio station were prepared by Captain Valter in late April 1945. Captain Palička and Captain Valter grouped their forces so as to attack the building. The fierce battle resulted in a victory of the uprisers. ||| ||| ||| +1 Battle of Cēsis (1919) ||| Latvian War of Independence ||| The '''Battle of Cēsis''' ({{lang-lv|Cēsu kaujas}}; {{lang-et|Võnnu lahing}} '''Battle of Võnnu'''; {{lang-de|Schlacht von Wenden}}, '''Battle of Wenden''') fought near [[Cēsis]] (or Võnnu, Wenden) in June 1919 was a decisive battle in the [[Estonian War of Independence]] and the [[Latvian War of Independence]]. After heavy fighting Estonian forces repelled German attacks and went on full counter-attack. ||| ||| ||| +1 Battle of Dachen Archipelago ||| Chinese Civil War ||| The '''Battle of Dachen Archipelago''' ({{zh|t=大陳等島之戰|s=大陈等岛之战|hp=Dàchén Děng Dǎo Zhī Zhàn}}) was a struggle between the [[Kuomintang|Nationalists]] and the [[Communist Party of China|Communists]] for the control of several [[archipelagos]] just off the coast of [[Zhejiang]], [[China]] during the [[Chinese Civil War]] in the post-[[World War II]] era, and it was part of the [[First Taiwan Strait Crisis]]. The Communists targeted and eventually took the [[Dachen Archipelago]], and the other two smaller archipelagos from Nationalists: the Southern Muntjac Archipelago ({{zh|links=no|t=南麂山列島|s=南麂山列岛|hp=Nán Jǐshān Liè Dǎo}}) and the Southern Deer Mountain Archipelago ({{zh|links=no|t=南鹿山列島|s=南鹿山列岛|hp=Nán Lùshān Liè Dǎo}}). ||| ||| ||| +1 Battle of Dak To ||| Vietnam War ||| The '''Battle of Đắk Tô''' was a series of major engagements of the [[Vietnam War]] that took place between November 3 to 22, 1967, in Kon Tum Province, in the [[Central Highlands (Vietnam)|Central Highlands]] of the [[Republic of Vietnam]] (South Vietnam). The action at [[Dak To|Đắk Tô]] was one of a series of [[People's Army of Vietnam]] (PAVN) offensive initiatives that began during the second half of the year. North Vietnamese attacks at [[Lộc Ninh]] (in Bình Long Province), Song Be (in Phước Long Province), and at [[Con Thien]] and [[Khe Sanh]], (in [[Quảng Trị Province]]), were other actions which, combined with Đắk Tô, became known as 'the border battles.' The objective of the PAVN forces was to distract American and South Vietnamese forces away from cities towards the borders in preparation for the [[Tet Offensive]]. ||| ||| ||| +1 Battle of Damascus (1941) ||| World War II ||| The '''Battle of Damascus''' (18 – 21 June 1941) was the final action of the Allied advance on [[Damascus]] in [[Syria]] during the [[Syria-Lebanon campaign]] in [[World War II]]. ||| ||| ||| +1 Battle of Damour ||| World War II ||| The '''Battle of Damour''' (5–9 July 1941) was the final major operation of the Australian forces during the [[Syria-Lebanon Campaign]] of [[World War II]]. ||| ||| ||| +1 Battle of Dan-no-ura ||| Genpei War ||| The '''{{nihongo|battle of Dan-no-ura|壇ノ浦の戦い|Dan-no-ura no tatakai}}''' was a major sea battle of the [[Genpei War]], occurring at [[Shimonoseki, Yamaguchi|Dan-no-ura]], in the [[Shimonoseki Strait]] off the southern tip of [[Honshū]]. On April 25, 1185, the Genji ([[Minamoto]]) clan fleet, led by [[Minamoto no Yoshitsune]], defeated the Heike ([[Taira]]) clan fleet, during a half-day engagement. ||| ||| ||| +1 Battle of Dandridge ||| American Civil War ||| The '''Battle of Dandridge''', January 17, 1864, was a minor battle of the [[American Civil War]] that occurred in [[Jefferson County, Tennessee]]. ||| ||| ||| +1 Battle of Day's Gap ||| American Civil War ||| The '''Battle of Day's Gap''', fought on April 30, 1863, was the first in a series of [[American Civil War]] skirmishes in [[Cullman County]], [[Alabama]], that lasted until May 2, known as [[Streight's Raid]]. Commanding the [[Union Army|Union]] forces was [[Colonel (United States)|Col.]] [[Abel Streight]]; [[Brigadier General (CSA)|Brig. Gen.]] [[Nathan Bedford Forrest]] led the [[Confederate States of America|Confederate]] forces. ||| ||| ||| +1 Battle of Debaltseve ||| 2014 pro-Russian unrest in Ukraine ||| Debaltseve came under pro-Russian separatist control in April 2014, amidst [[2014 pro-Russian unrest in Ukraine|widespread unrest across eastern and southern Ukraine]] in the aftermath of the [[2014 Ukrainian revolution]]. Ukrainian forces managed to recapture the city on 28 July 2014, and continued to hold on to it firmly until January 2015. ||| Background ||| ||| +1 Battle of Debaltseve ||| War in Donbass ||| From mid-January 2015 during the [[War in Donbass|war in the Donbass region]] of [[Ukraine]], the separatist forces of the [[Donetsk People's Republic]] (DPR) sought to recapture the city of [[Debaltseve]] in [[Donetsk Oblast]], which had been under Ukrainian control since a counter-offensive by government forces in July 2014. The city lay in a '[[Salients, re-entrants and pockets|wedge]]' of Ukrainian-held territory bordered by the DPR on one side, and the [[Luhansk People's Republic]] (LPR) on the other, and is a vital road and railway junction. Separatists began a concerted effort to force Ukrainian troops out of the city on 16–17 January, sparking the '''Battle of Debaltseve'''. Heavy fighting went on until 18 February 2015, when Ukrainian forces were forced to withdraw. ||| ||| ||| +1 Battle of Debrecen ||| Eastern Front (World War II) ||| * [[Eastern Front (World War II)]] ||| See also ||| ||| +1 Battle of Debrecen ||| World War II ||| The '''Battle of Debrecen''', called by the Red Army the ''Debrecen Offensive Operation'', (6–29 October 1944) was conducted by the [[2nd Ukrainian Front]] on the [[Eastern Front (WWII)|Eastern Front]] of [[World War II]]. It was opposed by [[Army Group South Ukraine]]'s General [[Maximilian Fretter-Pico|Maximilian Fretter-Pico's]] [[6th Army (Wehrmacht)|Sixth Army]] (II formation) and allied Hungarian [[Third Army (Hungary)#Order Of Battle - Soviet Union - October 1944|VII Army Corps]] units which were forced to retreat some 160 kilometers, while opposing Marshal [[Rodion Malinovsky|Rodion Malinovsky's]] [[2nd Ukrainian Front]] which had [[Debrecen]], Hungary as its strategic objective. ||| ||| ||| +1 Battle of Delft ||| Sri Lankan Civil War ||| on December 25, 2007 and part of the [[Sri Lankan Civil War]]. The [[Sri Lankan Navy]] claimed that it received reports of a boat cluster moving off of [[Delft Island]]. After moving in to investigate clashes erupted and fierce sea battle ensued. Both sides claimed to have victory. The pro-[[LTTE|rebel]] [[Tamilnet]] claimed that the [[Sea Tigers]] sank one [[Sri Lankan Navy]] vessel and the Sri Lankan Navy suffered casualty. However, the Sri Lankan Defense ministry claimed that 6 Tiger boats were sunk and over 40 Tigers were killed. ||| ||| ||| +1 Battle of Dervenakia ||| Greek War of Independence ||| The '''Battle of Dervenakia''' ({{lang-el|Μάχη των Δερβενακίων}}) was the [[Greece|Greek]] victory over the [[Ottoman Empire|Ottoman forces]] on 26-28 July 1822, an important event in the [[Greek War of Independence]]. The destruction of Dramali Pasha's forces saved the heartland of the rebellion, the [[Morea]], and secured it for the Greeks until the arrival of [[Ibrahim Pasha of Egypt|Ibrahim Pasha]] in 1825. ||| ||| ||| +1 Battle of Dingle's Mill ||| American Civil War ||| The '''Battle of Dingle's Mill''' was an [[American Civil War]] battle that took place near [[Sumterville]], [[Sumter County, South Carolina|Sumter County]], [[South Carolina]]. ||| ||| ||| +1 Battle of Dinwiddie Court House ||| American Civil War ||| The '''Battle of Dinwiddie Court House''' was fought on March 31, 1865, during the [[American Civil War]] at the end of the [[Siege of Petersburg|Richmond-Petersburg Campaign]] and in the beginning stage of the [[Appomattox Campaign]]. Along with the [[Battle of White Oak Road]] which was fought simultaneously on March 31, the battle involved the last offensive action by [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] attempting to stop the progress of [[Lieutenant general|Lieutenant General]] [[Ulysses S. Grant|Ulysses S. Grant's]] [[Union Army]] ([[Army of the Potomac]], [[Union Army of the Shenandoah|Army of the Shenandoah]] and [[Army of the James]]). Grant's forces were moving to cut the remaining Confederate supply lines and to force the Confederates to extend their defensive lines at [[Siege of Petersburg|Petersburg, Virginia]] and [[Richmond in the Civil War|Richmond, Virginia]] to the breaking point, if not to force them into a decisive open field battle. ||| ||| ||| +1 Battle of Doliana ||| Greek War of Independence ||| The '''Battle of Doliana''' took place during the [[Greek War of Independence]] on 18 May 1821. ||| ||| ||| +1 Battle of Dong Dang (1979) ||| Battle of Lang Son (1979) ||| The '''Battle of Dong Dang''' was the initial phase of the [[Battle of Lang Son (1979)|Battle of Lang Son]] during the [[Sino-Vietnamese War]], taking place in the town of [[Đồng Đăng]] and vicinal positions between 17–23 February 1979. ||| ||| ||| +1 Battle of Dong Dang (1979) ||| Sino-Vietnamese War ||| The '''Battle of Dong Dang''' was the initial phase of the [[Battle of Lang Son (1979)|Battle of Lang Son]] during the [[Sino-Vietnamese War]], taking place in the town of [[Đồng Đăng]] and vicinal positions between 17–23 February 1979. ||| ||| ||| +1 Battle of Dong Xoai ||| Vietnam War ||| The '''Battle of Đồng Xoài''' ({{lang-vi|Trận Đồng Xoài|links=no}}) was a major battle fought during the [[Viet Cong|National Liberation Front]] Summer Offensive of 1965 as part of the [[Vietnam War]]. The battle took place in [[Phước Long Province]], [[South Vietnam]], between June 9 and 13, 1965. ||| ||| ||| +1 Battle of Dover (1863) ||| American Civil War ||| The '''Battle of Dover''', also known as the '''Second Battle of Fort Donelson''', was a battle of the [[American Civil War]], occurring on February 3, 1863, in [[Stewart County, Tennessee]]. ||| ||| ||| +1 Battle of Dranesville ||| American Civil War ||| The '''Battle of Dranesville''' was a small battle during the [[American Civil War]] that took place between [[Confederate States of America|Confederate]] forces under Brigadier General [[J. E. B. Stuart]] and Union forces under Brigadier General [[Edward O. C. Ord]] on December 20, 1861, in [[Fairfax County, Virginia]], as part of [[Major general (United States)|Major General]] [[George B. McClellan]]'s operations in northern Virginia. The two forces on similar winter-time patrols encountered and engaged one another in the crossroads village of [[Dranesville, Virginia|Dranesville]]. The battle resulted in a Union victory. ||| ||| ||| +1 Battle of Drewry's Bluff ||| American Civil War ||| The '''Battle of Drewry's Bluff''', also known as the '''Battle of Fort Darling''', or '''Fort Drewry''', took place on May 15, 1862, in [[Chesterfield County, Virginia]], as part of the [[Peninsula Campaign]] of the [[American Civil War]]. Five [[Union Navy]] warships, including the [[ironclad warship|ironclads]] {{USS|Monitor|1862|6}} and {{USS|Galena|1862|2}}, steamed up the [[James River (Virginia)|James River]] to test the defenses of [[Richmond, Virginia]], the [[Confederate States of America|Confederate]] capital. They encountered submerged obstacles and deadly accurate fire from the batteries of [[Fort Darling]] at [[Drewry's Bluff]], which inflicted severe damage on ''Galena''. The Union Navy was forced to turn back. ||| ||| ||| +1 Battle of Dry Wood Creek ||| American Civil War ||| The '''Battle of Dry Wood Creek''' (also known as the '''Battle of Big Dry Wood Creek''' or the '''Battle of the Mules''') was fought on September 2, 1861 in [[Vernon County, Missouri]] during the [[American Civil War]]. The [[Missouri State Guard]] troops were successful in their campaign to force the [[Union Army]] to abandon southwestern [[Missouri]] and to concentrate on holding the [[Missouri River Valley|Missouri Valley]]. ||| ||| ||| +1 Battle of Duc Lap ||| Vietnam War ||| The '''Battle of Duc Lap''' was a battle of the [[Vietnam War]] where North Vietnamese forces attempted to overrun the [[Civilian Irregular Defense Group]] (CIDG) [[Duc Lap Camp]] between August 22–24, 1968. ||| ||| ||| +1 Battle of Dungan's Hill ||| Wars of the Three Kingdoms ||| The '''Battle of Dungan's Hill''' took place in [[County Meath]], in eastern Ireland in August 1647. It was fought between the armies of [[Confederate Ireland]] and the [[English Parliament]] during the [[Wars of the Three Kingdoms]]. The Irish army was intercepted on a march towards [[Dublin]] and destroyed. Although it is a little-known event, even in Ireland, the battle was very bloody (with over 3000 deaths) and had important political repercussions. The Parliamentarian victory there destroyed the Irish Confederate forces' Leinster army and contributed to the collapse of the Confederate cause and the [[Cromwellian conquest of Ireland]] in 1649. ||| ||| ||| +1 Battle of Dunkirk ||| World War II ||| The '''Battle of Dunkirk''' was an important battle that took place in [[Dunkirk]], France, during the [[World War II|Second World War]] between the [[Allies of World War II|Allies]] and Germany. As part of the [[Battle of France]] on the [[Western Front (World War II)|Western Front]], the Battle of Dunkirk was the defence and evacuation of British and allied forces in Europe from 26 May–4 June 1940. ||| ||| ||| +1 Battle of Dynekilen ||| Great Northern War ||| The naval '''Battle of Dynekilen''' (''Slaget ved Dynekilen'') took place on 8 July 1716 during the [[Great Northern War]]. ||| ||| ||| +1 Battle of Dürenstein ||| War of the Third Coalition ||| The '''Battle of Dürenstein''' (also known as the '''Battle of Dürrenstein''', '''Battle of Dürnstein''' and '''Battle of Diernstein'''; {{lang-de|Gefecht bei Dürrenstein}}), on 11 November 1805, was an engagement in the [[Napoleonic Wars]] during the [[War of the Third Coalition]]. Dürenstein (modern [[Dürnstein]]) is located in the [[Wachau Valley]], on the [[River Danube]], {{convert|73|km|0|sp=us}} upstream from [[Vienna]], in [[Austria]]. The river makes a crescent-shaped curve between Dürnstein and nearby [[Krems an der Donau]] and the battle was fought in the flood plain between the river and the mountains. ||| ||| ||| +1 Battle of Dürenstein order of battle ||| War of the Third Coalition ||| The [[Russian Empire|Russian]] General [[Mikhail Kutuzov]] commanded the [[War of the Third Coalition|Allied]] Army of approximately 24,000. ||| Allied Order of Battle ||| ||| +1 Battle of Dōmyōji ||| Siege of Osaka ||| On June 3, 1615 the Eastern Army of [[Tokugawa Ieyasu]] and the Osaka Army of [[Toyotomi Hideyori]] clashed in '''[[battle]] at [[Dōmyōji]]''' (道明寺の戦い; Dōmyōji no tatakai), [[Osaka]]. This battle was one of Japan's major historical battles between [[samurai]] forces. This battle was one of a number of battles that took place during the Summer Campaign of the [[Siege of Osaka]] that led up to the fall of Osaka to the forces of Tokugawa and the death of [[Toyotomi]] Hideyori. ||| ||| ||| +1 Battle of Eckmühl ||| War of the Fifth Coalition ||| The '''Battle of Eckmühl''' (also known as 'Eggmühl') fought on 21 April - 22 April 1809, was the turning point of the 1809 Campaign, also known as the [[War of the Fifth Coalition]]. [[Napoleon I of France|Napoleon I]] had been unprepared for the start of hostilities on 10 April 1809, by the [[Austrian Empire|Austrians]] under the [[Archduke Charles of Austria]] and for the first time since assuming the [[Crown of Napoleon|French Imperial Crown]] had been forced to cede the strategic initiative to an opponent. Thanks to the dogged defense waged by the [[III Corps (Grande Armée)|III Corps]], commanded by [[Louis-Nicolas Davout|Marshal Davout]], and the Bavarian VII Corps, commanded by [[François Joseph Lefebvre|Marshal Lefebvre]], Napoleon was able to defeat the principal Austrian army and wrest the strategic initiative for the remainder of the war. ||| ||| ||| +1 Battle of Edgecote Moor ||| Wars of the Roses ||| The '''Battle of Edgecote Moor''' took place 6 miles northeast of [[Banbury]] ([[Oxfordshire]]), England on 26 July 1469 during the [[Wars of the Roses]]. The site of the battle was actually Danes Moor in [[Northamptonshire]], at a crossing of a tributary of the [[River Cherwell]]. The battle saw supporters of [[Richard Neville, 16th Earl of Warwick|Richard Neville, Earl of Warwick]], defeat the forces of [[Edward IV of England|King Edward IV]], leading to the king's capitulation soon afterwards. ||| ||| ||| +1 Battle of Edgehill ||| First English Civil War ||| The '''Battle of Edgehill''' (or '''Edge Hill''') was the first [[pitched battle]] of the [[First English Civil War]]. It was fought near [[Edge Hill, Warwickshire|Edge Hill]] and [[Kineton]] in southern [[Warwickshire]] on Sunday, 23 October 1642. ||| ||| ||| +1 Battle of El Guettar ||| World War II ||| The '''Battle of El Guettar''' was a [[World War II]] battle that took place during the [[Tunisia Campaign]], fought between elements of the [[Panzer Army Africa|Army Group Africa]] under General [[Hans-Jürgen von Arnim]], along with Italian forces under General [[Giovanni Messe]], and [[II Corps (United States)|U.S. II Corps]] under Lieutenant General [[George S. Patton]] in south-central [[Tunisia]]. It was the first battle in which U.S. forces were able to defeat the experienced German tank units, but the followup to the battle was inconclusive. ||| ||| ||| +1 Battle of El Herri ||| Zaian War ||| The '''Battle of El Herri''' (also known as '''Elhri''') was fought between [[France]] and the [[Berber people|Berber]] [[Zaian Confederation]] on 13 November 1914. It took place at the small settlement of [[El Herri]], near [[Khénifra]] in the [[French protectorate in Morocco]]. The battle was part of the [[Zaian War]], in which the confederation of tribes sought to oppose continued French expansion into the interior of [[Morocco]]. Having captured the strategic town of Khénifra earlier in the year, the French, under General [[Hubert Lyautey]], entered negotiations with [[Mouha ou Hammou Zayani]], who led the Zaian. Lyautey thought that peace could be achieved and ordered Lieutenant-Colonel [[René Laverdure]], who commanded the garrison in Khénifra, to not launch any offensives. ||| ||| ||| +1 Battle of El Mazuco ||| Spanish Civil War ||| The '''Battle of El Mazuco''' was fought between 6 and 22 September 1937, between the [[Second Spanish Republic|Republican]] and [[Spanish State|Nationalist]] armies during the [[Spanish Civil War]] as a part of the [[War in the North]] campaign. The Republican defence of [[El Mazuco]] and the surrounding mountains halted the Nationalist advance into eastern [[Asturias Offensive|Asturias]], despite their forces being outnumbered sevenfold. After weeks of intense fighting over extreme terrain the defenders were eventually overwhelmed, and the Nationalists were then able to link up with their forces advancing from [[Leon (province)|León]], leading to the fall of [[Gijon|Gijón]] and the abandonment of Asturias, the last Republican province in North-West Spain. ||| ||| ||| +1 Battle of El Toro ||| Chilean War of Independence ||| The '''Battle of El Toro''' (March 6, 1820) was a battle fought near [[Maullín]], [[Chile]] between Chilean patriots and Spanish royalists, during the [[Chilean War of Independence]]. ||| ||| ||| +1 Battle of Elands River (1901) ||| Second Boer War ||| The '''Battle of Elands River''' took place near the [[Elands River Poort]] mountain pass on 17 September 1901 during the [[Second Boer War]]. During the battle a [[Boer]] raiding force under [[Jan Smuts]] destroyed a British cavalry squadron led by Captain Sandeman, a cousin of [[Winston Churchill]], on the '''Modderfontein''' farm. This battle is therefore also known as the '''Battle of Modderfontein'''. ||| ||| ||| +1 Battle of Elandslaagte ||| Second Boer War ||| The '''Battle of Elandslaagte''' was a battle of the [[Second Boer War]], and one of the few clear-cut tactical victories won by the British during that conflict. However, the British force retreated afterwards, throwing away their advantage. ||| ||| ||| +1 Battle of Elizabeth City ||| American Civil War ||| The '''Battle of Elizabeth City''' of the [[American Civil War]] was fought in the immediate aftermath of the [[Battle of Roanoke Island]]. It took place on 10 February 1862, on the [[Pasquotank River]] near [[Elizabeth City, North Carolina]]. The participants were vessels of the [[U.S. Navy]]'s [[North Atlantic Blockading Squadron]], opposed by vessels of the Confederate Navy's [[Mosquito Fleet]]; the latter were supported by a shore-based battery of four guns at Cobb's Point (now called Cobb Point), near the southeastern border of the town. The battle was a part of the campaign in North Carolina that was led by [[Major general (United States)|Major General]] [[Ambrose E. Burnside]] and known as the [[Burnside Expedition]]. The result was a Union victory, with Elizabeth City and its nearby waters in their possession, and the Confederate fleet captured, sunk, or dispersed. ||| ||| ||| +1 Battle of Elli ||| Balkan Wars ||| The '''Battle of Elli''' ({{lang-el|Ναυμαχία της Έλλης}}, {{lang-tr|İmroz Deniz Muharebesi}}) took place near the mouth of the [[Dardanelles]] on {{OldStyleDate|16 December|1912|3 December}} as part of the [[First Balkan War]] between the fleets of the [[Kingdom of Greece]] and the [[Ottoman Empire]]. It was the largest sea battle of the [[Balkan Wars]]. ||| ||| ||| +1 Battle of Elsenborn Ridge ||| Battle of the Bulge ||| The '''Battle of Elsenborn Ridge''' was the only sector of the American front lines during the [[Battle of the Bulge]] where the Germans failed to advance. {{rp|259–271}} Capturing [[Monschau]] and the nearby village of Höfen, and the twin villages of Rocherath-Krinkelt just east of Elsenborn Ridge, were key to the success of the German plans, and Hitler committed his best armored units and infantry troops to the area, including the [[12th SS Panzer Division Hitlerjugend]]. ||| ||| ||| +1 Battle of Empress Augusta Bay ||| World War II ||| The '''Battle of [[Empress Augusta Bay]]''', on 1–2 November 1943—also known as the '''Battle of Gazelle Bay''', '''Operation Cherry Blossom''', and in Japanese sources as the '''Sea Battle off Bougainville Island''' (ブーゲンビル島沖海戦)—was a [[naval battle]] fought near the island of [[Bougainville Island|Bougainville]]. The naval battle was a result of Allied landings on nearby Bougainville in the first action in the [[Bougainville campaign (1943–45)|Bougainville campaign]] of [[World War II]] and may also be seen as part of the [[Solomon Islands campaign|Solomons]] and [[New Guinea campaign]]s. The battle was significant as part of a broader [[Allies of World War II|Allied]] strategy—known as [[Operation Cartwheel]]—aimed at isolating and surrounding the major Imperial base at [[Rabaul]]. The intention was to establish a [[beachhead]] on Bougainville, within which an airfield would be built. ||| ||| ||| +1 Battle of Eniwetok ||| Pacific War ||| The '''Battle of Eniwetok''' was a battle of the [[Pacific War|Pacific campaign]] of [[World War II]], fought between 17 February 1944 and 23 February 1944, on [[Eniwetok Atoll]] in the [[Marshall Islands]]. ||| ||| ||| +1 Battle of Ergeme ||| Livonian War ||| The '''Battle of Ergeme '''(also Battle of Ermes) ({{lang-et|Härgmäe lahing}}; {{lang-de|Schlacht bei Ermes}}; {{lang-ru|''сражение при Эрмесе''}}; {{lang-lv|Ērģemes kauja}}) was fought on 2 August 1560 in present-day [[Latvia]] (near [[Valga, Estonia|Valga]]) as part of the [[Livonian War]] between the forces of [[Ivan IV of Russia]] and the [[Livonian Confederation]]. It was the last battle fought by the German knights in Livonia and an important Russian victory. The knights were defeated so thoroughly that the order had to be dissolved. ||| ||| ||| +1 Battle of Eupatoria ||| Crimean War ||| The '''Battle of Eupatoria''' ([[Russian language|Russian]]: Штурм Евпатории (Storm of Eupatoria), [[Turkish language|Turkish]]: Gözleve Muharebesi) was the most important military engagement of the [[Crimean War]] on the Crimean theatre in 1855 outside [[Sevastopol]]. ||| ||| ||| +1 Battle of Fairfax Court House (June 1863) ||| American Civil War ||| The '''Battle of Fairfax Court House (June 1863)''' was fought during the [[Gettysburg Campaign]] of the [[American Civil War]] by a small [[Union Army]] [[cavalry]] detachment of two companies (87 troops) of the 11th Regiment New York Volunteer Cavalry and advance units of [[Confederate States Army|Confederate]] [[Major General (CSA)|Major General]] [[J.E.B. Stuart|J.E.B. Stuart's]] [[Cavalry Corps, Army of Northern Virginia]]. Stuart's lead unit on the day of the battle was the 1st North Carolina Cavalry Regiment (9th State Troops) of Major General [[Wade Hampton III|Wade Hampton's]] division of 2,000 men. ||| ||| ||| +1 Battle of Falkirk Muir ||| Jacobite rising of 1745 ||| During the [[Jacobite rising of 1745]], the '''Battle of Falkirk Muir''' ([[Scottish Gaelic]]: '''[[:gd:Blàr na h-Eaglaise Brice|Blàr na h-Eaglaise Brice]]''') was the last noteworthy [[Jacobitism|Jacobite]] success. The battlefield has been [[Inventory of Historic Battlefields in Scotland|inventoried]] and protected by [[Historic Scotland]] under the Historic Environment (Amendment) Act 2011. ||| ||| ||| +1 Battle of Fallen Timbers ||| Northwest Indian War ||| The '''Battle of Fallen Timbers''' (August 20, 1794) was the final battle of the [[Northwest Indian War]], a struggle between [[Native American]] tribes affiliated with the [[Western Confederacy]], including minor support from the British, against the [[United States]] for control of the [[Northwest Territory]] (an area north of the [[Ohio River]], east of the [[Mississippi River]], and southwest of the [[Great Lakes]]). The battle, which was a decisive victory for the United States, ended major hostilities in the region until [[Tecumseh's War]] and the [[Battle of Tippecanoe]] in 1811. ||| ||| ||| +1 Battle of Ferrybridge ||| Wars of the Roses ||| The '''Battle of Ferrybridge''', 28 March 1461, was a preliminary engagement between the houses of [[House of York|York]] and [[House of Lancaster|Lancaster]] before the larger [[battle of Towton]], during the period known as the [[Wars of the Roses]]. ||| ||| ||| +1 Battle of Festubert ||| Second Battle of Artois ||| '''The Battle of Festubert''' (15–25 May 1915) was an attack by the [[British army]] in the Artois region of [[France]] on the [[Western Front (World War I)|western front]] during [[World War I]]. The offensive formed part of a series of attacks by the French Tenth Army and the British First Army in the [[Second Battle of Artois]] {{nowrap|(3 May – 18 June 1915)}}. After the failure of the attempted breakthrough by the First Army in the attack at Aubers Ridge (9 May 1915) tactics of a short hurricane bombardment and an infantry advance with unlimited objectives, were replaced by the French practice of slow and deliberate artillery-fire intended to prepare the way for an infantry attack. A continuous three-day bombardment by the British heavy artillery was planned, to cut wire and demolish German machine-gun posts and infantry strong-points. The German defences were to be captured by a continuous attack, by one division from Rue du Bois to Chocolat Menier Corner and by a second division {{convert|600|yd|m}} north, which was to capture the German trenches to the left of Festubert village. The objectives were {{convert|1000|yd|m}} forward, rather than the {{convert|3000|yd|m}} depth of advance intended at Aubers Ridge. The battle was the first British attempt at attrition. ||| ||| ||| +1 Battle of Fishing Creek ||| American Revolutionary War ||| The '''Battle of Fishing Creek''', also called the '''Battle of Catawba Ford''', was an [[American Revolutionary War]] battle fought on August 18, 1780, between American and British forces including the [[71st Regiment of Foot, Fraser's Highlanders|71st Foot]]. It was fought near the junction of Fishing Creek and the [[Catawba River]] in [[South Carolina]]. British forces under [[Banastre Tarleton]] surprised the militia company of [[Thomas Sumter]], killing a significant number, taking about 300 captives, and very nearly capturing Sumter, who some say was asleep at the time of the attack. ||| ||| ||| +1 Battle of Fladstrand ||| Great Northern War ||| This inconclusive battle which took place on 11 April 1712 near [[Fladestrand]], [[Jylland]], between [[Sweden|Swedish]] and [[Denmark-Norway|Danish]] forces. It was part of the [[Great Northern War]]. ||| ||| ||| +1 Battle of Fort Anderson ||| American Civil War ||| The '''Battle of Fort Anderson''', also known as the '''Battle of Deep Gully''', took place March 13–15, 1863, in [[Craven County, North Carolina]], as part of [[Confederate States Army|Confederate]] [[Lieutenant General (CSA)|Lt. Gen.]] [[James Longstreet]]'s [[Tidewater region of Virginia|Tidewater]] operations during the [[American Civil War]]. ||| ||| ||| +1 Battle of Fort Anne ||| American Revolutionary War ||| The '''Battle of Fort Anne''', fought on July 8, 1777, was an engagement between [[Continental Army]] forces in retreat from [[Fort Ticonderoga]] and forward elements of [[John Burgoyne]]'s much larger [[British Army during the American War of Independence|British]] army that had [[Siege of Fort Ticonderoga (1777)|driven them from Ticonderoga]], early in the [[Saratoga campaign]] of the [[American Revolutionary War]]. ||| ||| ||| +1 Battle of Fort Brooke ||| American Civil War ||| The '''Battle of Fort Brooke''' was a minor engagement fought October 16-18, 1863, near [[Tampa, Florida]], during the [[American Civil War]]. ||| ||| ||| +1 Battle of Fort Bull ||| French and Indian War ||| The '''Battle of Fort Bull''' was a French attack on the [[Kingdom of Great Britain|British]]-held [[Fort Bull]] on 27 March 1756, early in the [[French and Indian War]]. The fort was built to defend a portion of the waterway connecting [[Albany, New York]] to [[Lake Ontario]] via the [[Mohawk River]]. ||| ||| ||| +1 Battle of Fort Donelson ||| American Civil War ||| The '''Battle of Fort Donelson''' was fought from February 11 to 16, 1862, in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]]. The [[Union Army|Union]] capture of the Confederate fort near the [[Tennessee]]-[[Kentucky]] border opened the [[Cumberland River]], an important avenue for the invasion of the [[Southern United States|South]]. The Union's success also elevated [[Brigadier general (United States)|Brig. Gen.]] [[Ulysses S. Grant]] from an obscure and largely unproven leader to the rank of [[Major general (United States)|major general]], and earned him the nickname of 'Unconditional Surrender' Grant. ||| ||| ||| +1 Battle of Fort Eben-Emael ||| Battle of Belgium ||| The '''Battle of Fort Eben-Emael''' was a battle between [[Belgium|Belgian]] and [[Nazi Germany|German]] forces that took place between 10 May and 11 May 1940, and was part of the [[Battle of Belgium]] and [[Battle of France|Fall Gelb]], the German invasion of the [[Low Countries]] and [[France]]. An assault force of German ''[[Fallschirmjäger]]'' was tasked with assaulting and capturing [[Fort Eben-Emael]], a Belgian fortress whose artillery pieces dominated several important bridges over the [[Albert Canal]] that German forces intended to use to advance into [[Belgium]]. As some of the German airborne troops assaulted the fortress and disabled the garrison and the artillery pieces inside it, others simultaneously captured three bridges over the Canal. Having disabled the fortress, the airborne troops were then ordered to protect the bridges against Belgian counter-attacks until they linked up with ground forces from the German [[18th Army (Wehrmacht)|18th Army]]. ||| ||| ||| +1 Battle of Fort George ||| War of 1812 ||| The '''Battle of Fort George''' was a battle fought during the [[War of 1812]], in which the Americans defeated a British force and captured the [[Fort George, Ontario|Fort George]] in [[Upper Canada]]. The troops of the [[United States Army]] and vessels of the [[United States Navy]] cooperated in a very successful [[amphibious assault]], although most of the opposing British force escaped encirclement. ||| ||| ||| +1 Battle of Fort Henry ||| American Civil War ||| The '''Battle of Fort Henry''' was fought on February 6, 1862, in western [[Middle Tennessee]], during the [[American Civil War]]. It was the first important victory for the [[Union (American Civil War)|Union]] and [[Brigadier general (United States)|Brig. Gen.]] [[Ulysses S. Grant]] in the [[Western Theater of the American Civil War|Western Theater]]. ||| ||| ||| +1 Battle of Fort Lahtzanit ||| Yom Kippur War ||| The '''Battle of Fort Lahtzanit''' took place on October 6, 1973, between the [[Egyptian Army]] and the [[Israel Defense Forces]] (IDF). Part of the Egyptian-initiated [[Operation Badr (1973)|Operation Badr]], the battle was one of the first of the [[Yom Kippur War]], fought in and around Fort Lahtzanit, a fortification of the [[Bar Lev Line]], located {{convert|19|km|mi}} south of [[Port Fouad]] in the [[Sinai Peninsula]]. ||| ||| ||| +1 Battle of Fort McAllister (1864) ||| American Civil War ||| The '''Second Battle of Fort McAllister''' took place December 13, 1864, during the final stages of [[Major General|Maj. Gen.]] [[William T. Sherman]]'s [[Sherman's March to the Sea|March to the Sea]] during the [[American Civil War]]. [[Union Army|Union]] forces overwhelmed a small [[Confederate States Army|Confederate]] force defending the strategically important [[Fort McAllister]] near [[Savannah, Georgia]], a major Federal objective. ||| ||| ||| +1 Battle of Fort Oswego (1756) ||| French and Indian War ||| The '''Battle of Fort Oswego''' was one in a series of early French victories in the [[French and Indian War|North American theatre]] of the [[Seven Years' War]] won in spite of [[New France|New France's]] military vulnerability. During the week of August 10, 1756, a force of regulars and [[Canada, New France|Canadien]] militia under [[Louis-Joseph de Montcalm|General Montcalm]] captured and occupied the British fortifications at [[Fort Oswego]], located at the site of present-day [[Oswego, New York]]. ||| ||| ||| +1 Battle of Fort Oswego (1814) ||| War of 1812 ||| The '''Battle of Fort Ontario''' was a partially successful [[United Kingdom of Great Britain and Ireland|British]] raid on [[Fort Ontario]] and the village of [[Oswego, New York]] on May 6, 1814 during the [[War of 1812]]. ||| ||| ||| +1 Battle of Fort Pillow ||| American Civil War ||| The '''Battle of Fort Pillow''', also known as the '''Fort Pillow massacre''', was fought on April 12, 1864, at [[Fort Pillow]] on the [[Mississippi River]] in [[Henning, Tennessee]], during the [[American Civil War]]. The battle ended with a [[massacre]] of [[Union Army|Union]] troops (most of them [[African American]] soldiers) attempting to surrender, by soldiers under the command of [[Confederate States Army|Confederate]] [[Major General (CSA)|Major General]] [[Nathan Bedford Forrest]]. Military historian David J. Eicher concluded, 'Fort Pillow marked one of the bleakest, saddest events of American military history.' ||| ||| ||| +1 Battle of Fort Stephenson ||| War of 1812 ||| The '''Battle of Fort Stephenson''' was an [[United States|American]] victory during the [[War of 1812]]. ||| ||| ||| +1 Battle of Forts Jackson and St. Philip ||| American Civil War ||| The '''Battle of Forts Jackson and St. Philip''' (April 18–28, 1862) was the decisive battle for possession of [[New Orleans]] in the [[American Civil War]]. The two [[Confederate States of America|Confederate]] forts on the [[Mississippi River]] south of the city were attacked by a [[Union Navy]] fleet. As long as the forts could keep the Federal forces from moving on the city, it was safe, but if they were negated, there were no fall-back positions to impede the enemy advance. ||| ||| ||| +1 Battle of Fraustadt ||| Great Northern War ||| The '''Battle of Fraustadt''' (or '''battle of Wschowa''') was fought on 2 February 1706 ([[Julian calendar|O.S.]]) / 3 February 1706 ([[Swedish calendar]]) / 13 February 1706 ([[Gregorian calendar|N.S.]]) between [[Swedish Empire|Sweden]] and [[Electorate of Saxony|Saxony]]-[[Polish-Lithuanian Commonwealth|Poland]] and their [[Russian Tsardom|Russia]]n allies near Fraustadt (present-day [[Wschowa]]) in Poland. During the Battle of Fraustadt on February 3, [[August II of Poland|August II]] was only 120 kilometers away with a cavalry force about 8,000 men strong. This was one of the main reasons Swedish General [[Carl Gustaf Rehnskiöld|Rehnskiöld]] hurried to engage [[Johann Matthias von der Schulenburg|Schulenburg]]. The battle is an example of successfully executed [[pincer movement]] and was one of Sweden's greatest victories in the [[Great Northern War]]. ||| ||| ||| +1 Battle of Fredericksburg ||| American Civil War ||| The '''Battle of Fredericksburg''' was fought December 11–15, 1862, in and around [[Fredericksburg, Virginia]], between General [[Robert E. Lee]]'s [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] and the [[Union Army|Union]] [[Army of the Potomac]], commanded by [[Major general (United States)|Major General]] [[Ambrose Burnside]]. The Union Army's futile frontal attacks on December 13 against entrenched Confederate defenders on the heights behind the city is remembered as one of the most one-sided battles of the [[American Civil War]], with Union casualties more than twice as heavy as those suffered by the Confederates. ||| ||| ||| +1 Battle of Frenchtown ||| War of 1812 ||| The '''Battle of Frenchtown''', also known as the '''Battle of the River Raisin''' or the '''River Raisin Massacre''', was a series of conflicts that took place from January 18–23, 1813 during the [[War of 1812]]. It was fought between the United States and a [[United Kingdom of Great Britain and Ireland|British]] and [[Indigenous peoples of the Americas|Native American]] alliance near the [[River Raisin]] in [[Frenchtown Charter Township, Michigan|Frenchtown]], [[Michigan Territory]] (present-day [[Monroe, Michigan|Monroe]], [[Michigan]]). The battle on January 22 had the highest number of fatalities of any battle during this war. ||| ||| ||| +1 Battle of Fromelles ||| Battle of the Somme ||| The '''Battle of Fromelles''' ({{IPA-fr|fʁɔmɛl}}; {{nowrap|19–20 July 1916),}} was a British military operation on the Western Front during World War I, subsidiary to the [[Battle of the Somme (1916)|Battle of the Somme]].{{efn|The battle is known by a number of names, including Action at Fromelles and Battle of Fleurbaix. ''Attack at Fromelles'' was chosen by the (British) Battles Nomenclature Committee in 1922. In German it is known as ''Schlacht von Fromelles'' ('Battle of Fromelles').{{sfn|James|1924|p=11}}}} General Headquarters (GHQ) of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF) had ordered the [[First Army (United Kingdom)|First Army]] and [[Second Army (United Kingdom)|Second Army]] to prepare attacks to support the [[Fourth Army (United Kingdom)|Fourth Army]] on the Somme {{convert|80|km|mi}} to the south, to exploit any weakening of the German defences opposite. The attack took place {{convert|16|km|mi}} from [[Lille]], between the Fauquissart–Trivelet road and Cordonnerie Farm, an area overlooked from Aubers Ridge to the south. The ground was low-lying and much of the defensive fortification of both sides consisted of [[Breastwork (fortification)|breastworks]], rather than trenches. ||| ||| ||| +1 Battle of Gainsborough ||| English Civil War ||| The '''Battle of Gainsborough''' was a battle in the [[English Civil War]], fought on 28 July 1643. ||| ||| ||| +1 Battle of Gandesa (1938) ||| Spanish Civil War ||| The '''Battle of Gandesa''' was an event that took place in April 1938 during the [[Spanish Civil War]]. ||| ||| ||| +1 Battle of Gang Toi ||| Vietnam War ||| The '''Battle of Gang Toi''' (8 November 1965) was fought during the [[Vietnam War]] between [[Australian Defence Force|Australian troops]] and the [[Viet Cong]]. The battle was one of the first engagements between the two forces during the war and occurred when A Company, [[1st Battalion, Royal Australian Regiment]] (1 RAR) struck a Viet Cong bunker system defended by Company 238 in the Gang Toi Hills, in northern Bien Hoa Province. It occurred during a major joint US-Australian operation codenamed [[Operation Hump]], involving the [[173rd Airborne Brigade Combat Team (United States)|US 173rd Airborne Brigade]], to which 1 RAR was attached. During the latter part of the operation an Australian rifle [[Company (military)|company]] clashed with an entrenched company-sized Viet Cong force in well-prepared defensive positions. Meanwhile, an American paratroop [[battalion]] was also heavily engaged in fighting on the other side of the [[Đồng Nai River|Song Dong Nai]]. ||| ||| ||| +1 Battle of Gangut ||| Great Northern War ||| The '''Battle of Gangut''' ({{lang-ru|Гангутское сражение}}, {{lang-fi|Riilahden taistelu}}, [[Finland Swedish]]:''Slaget vid Rilax'', {{lang-sv|Sjöslaget vid Hangöudd}}) took place on 27 July [[Julian calendar|Jul.]] [[Gregorian calendar|Greg.]] during the [[Great Northern War]] (1700-21), in the waters of Riilahti Bay, north of the [[Hanko Peninsula]], near the site of the modern-day city of [[Hanko]], [[Finland]], between the [[Swedish Navy]] and [[Imperial Russian Navy]]. It was the first important victory of the Russian fleet in its history. ||| ||| ||| +1 Battle of García Hernández ||| Peninsular War ||| In the '''Battle of García Hernández''' on 23 July 1812, two brigades of Anglo-German [[cavalry]] led by [[Major-General]] [[Eberhardt Otto George von Bock|Eberhardt von Bock]] defeated 4,000 French infantry led by Major-General [[Maximilien Foy]]. In what would otherwise have been an unremarkable [[Peninsular War]] skirmish, the German heavy [[dragoon]]s achieved the unusual feat of breaking three French [[square (formation)|square]]s, those of the 6th, 69th and 76th Line, routing the entire French force with heavy losses. ||| ||| ||| +1 Battle of Garnett's & Golding's Farm ||| American Civil War ||| The '''Battle of Garnett's and Golding's Farms''' took place June 27–28, 1862, in [[Henrico County, Virginia]], as part of the [[Seven Days Battles]] of the [[American Civil War]]'s [[Peninsula Campaign]]. While the [[Battle of Gaines's Mill|battle at Gaines's Mill]] raged north of the [[Chickahominy River]], the forces of [[Confederate States Army|Confederate]] general [[John B. Magruder]] conducted a reconnaissance in force that developed into a minor attack against the [[Union Army|Union]] line south of the river at Garnett's Farm. The Confederates attacked again near Golding's Farm on the morning of June 28 but in both cases were easily repulsed. The action at the Garnett and Golding farms accomplished little beyond convincing McClellan that he was being attacked from both sides of the Chickahominy. ||| ||| ||| +1 Battle of Garris ||| Peninsular War ||| In the '''Battle of Garris''' on February 15, 1814, an Allied force under the direct command of [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess Wellington]] defeated [[Major General|General of Division]] [[Jean Isidore Harispe|Jean Harispe]]'s French division during the [[Peninsular War]]. ||| ||| ||| +1 Battle of Gazala ||| Western Desert Campaign ||| The '''Battle of Gazala''' (near modern town of ''Ayn al Ghazālah'') was fought during the [[Western Desert Campaign]] of the [[World War II|Second World War]], around the port of [[Tobruk]] in [[Libya]] from 26 May to 21 June 1942. The combatants on the [[Axis Powers|Axis]] side were the [[German Panzer Army Afrika|''Panzerarmee Afrika'']] ([[Colonel-General]] [[Erwin Rommel]]), consisting of [[Nazi Germany|German]] and [[Kingdom of Italy (1861–1946)|Italian]] units and the [[Allies of World War II|Allied]] forces of the [[British Eighth Army|Eighth Army]] (Lieutenant-General [[Neil Ritchie]]) under the supervision of the Commander-in-Chief Middle East, General Sir [[Claude Auchinleck]]. The Axis distracted the British with a decoy attack in the north and made the main attack round the southern flank of the Gazala position. The advance succeeded but the defence of the French garrison of [[Bir Hakeim]] at the southern end of the line left the Axis with a long and vulnerable supply route behind the British line. ||| ||| ||| +1 Battle of Gdynia ||| Invasion of Poland ||| '''Battle of Gdynia''' was one of the major battles in northern [[Poland]] during the [[Invasion of Poland (1939)|Invasion of Poland]] of 1939. The [[Nazi Germany|Germans']] main push towards Gdynia began on 8 September and they captured Gdynia less than a week later on 14 September.<!--need more info on when and where Germans engaged the Polish forces around Gdynia--> ||| ||| ||| +1 Battle of Gefrees ||| War of the Fifth Coalition ||| The '''Battle of [[Gefrees]]''' was fought on 8 July 1809 during the [[War of the Fifth Coalition]] between a joint force of Austrians and Brunswickers under the command of [[Michael von Kienmayer|General Kienmayer]] and a French force under the command of [[Jean-Andoche Junot|General Junot]], Duke of Abrantès. The battle ended in victory for the Austrians who avoided being trapped by Junot and a force of Saxons and Westphalians led by [[Jérôme Bonaparte]], King of Westphalia. After Jérôme's troops were defeated at the '''Battle of [[Hof, Germany|Hof]]''', the Austrians effectively had control over all of [[Kingdom of Saxony|Saxony]]. However the victory was in vain, due to the major Austrian defeat at [[Battle of Wagram|Wagram]] and the [[Armistice of Znaim]]. ||| ||| ||| +1 Battle of Gembloux (1940) ||| World War II ||| The '''Battle of Gembloux''' (or Battle of the Gembloux Gap) was a battle fought between French and German forces in May 1940 during the [[World War II|Second World War]]. ||| ||| ||| +1 Battle of Gemmano ||| World War II ||| The '''Battle of Gemmano''' was fought between the [[Germany|German]] and [[Allies of World War II|Allied]] forces in [[World War II]]. It was part of the Allies' '''Operation Olive''', the offensive in August 1944 on the [[Gothic Line]], the German line of defence in the [[Apennine Mountains|Apennines]] in northern [[Italy]]. It consisted of a series of four [[Eighth Army (United Kingdom)|British]] attacks between 4 September to 15 September 1944, on the German defences in and around the village of [[Gemmano]]. The village itself was taken on 9 September during the second attack, two more actions being required to take the surrounding area. Fighting was heavy, and the Battle of Gemmano has been called the '[[Battle of Monte Cassino|Cassino]] of the Adriatic' by some historians. ||| ||| ||| +1 Battle of Gerona (1808) ||| Peninsular War ||| The '''Battle of Gerona''' on 20 and 21 June 1808 saw an [[First French Empire|Imperial French]] division led by [[Guillaume Philibert Duhesme]] try to overrun a [[Kingdom of Spain|Spanish]] garrison commanded by [[Lieutenant Colonel]]s O'Donovan and O'Daly. The French assault failed and the attackers withdrew. [[Girona]] (spelled 'Gerona' in [[Spanish_language|Castilian]]) is located about halfway between the Franco-Spanish border and [[Barcelona]] on the [[Autovía A-7]]. The action occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Ginchy ||| Battle of the Somme ||| The '''Battle of Ginchy''' took place on 9 September 1916 during the [[Battle of the Somme (1916)|Battle of the Somme]], when the [[16th (Irish) Division|16th Division]] captured the [[Germany|German]]-held village. [[Ginchy]] is {{convert|1.5|km|mi}} north-east of Guillemont, at the junction of six roads on a rise overlooking Combles, {{convert|4|km|mi}} to the south-east. After the conclusion of the [[Battle of Guillemont]] on 6 September, [[XIV Corps (United Kingdom)|XIV Corps]] and [[XV Corps (United Kingdom)|XV Corps]] were required to complete the advance to positions which would give observation over the German third position, ready for a general attack in mid-September, for which the Anglo-French armies had been preparing since early August. British attacks from the boundary between the [[Fourth Army (United Kingdom)|Fourth Army]] and the [[Sixth Army (France)|French Sixth Army]] from Leuze Wood north to Ginchy, had begun on 3 September when the 7th Division captured the village, before being forced out by a German counter-attack. Attacks on Leuze Wood and attempts to re-take Ginchy on 4 and 5 September were also defeated by German counter-attacks. The 7th Division was relieved by the 16th Division and 55th Division on the evening of 7 September and the 5th Division was replaced by the 56th Division on the right at the army boundary. ||| ||| ||| +1 Battle of Ginietyny ||| January Uprising ||| The '''Battle of Ginietyny''', one of many skirmishes of the [[January Uprising]], took place on April 21, 1863, near [[Lithuania]]n village of Ginietyny (Genėtiniai), located about {{convert|6|km}} west of [[Raguva]]. 300 Polish insurgents under Colonel [[Zygmunt Sierakowski]] clashed here with soldiers of the [[Imperial Russian Army]]. ||| ||| ||| +1 Battle of Glendale ||| American Civil War ||| The '''Battle of Glendale''', also known as the '''Battle of Frayser's Farm''', '''Frazier's Farm''', '''Nelson's Farm''', '''Charles City Crossroads''', '''New Market Road''', or '''Riddell's Shop''', took place on June 30, 1862, in [[Henrico County, Virginia]], on the sixth day of the [[Seven Days Battles]] ([[Peninsula Campaign]]) of the [[American Civil War]]. ||| ||| ||| +1 Battle of Glorieta Pass ||| American Civil War ||| The '''Battle of Glorieta Pass''', fought from March 26 to 28, 1862 in northern [[New Mexico Territory]], was the decisive [[battle]] of the [[New Mexico Campaign]] during the [[American Civil War]]. Dubbed the '[[Battle of Gettysburg|Gettysburg]] of the West' (a term that 'serves the novelist better than the historian' ) by some authors, it was intended as the killer blow by [[Confederate States of America|Confederate]] forces to break the [[Union (American Civil War)|Union]] possession of the West along the base of the [[Rocky Mountains]]. It was fought at [[Glorieta Pass]] in the [[Sangre de Cristo Mountains]] in what is now [[New Mexico]], and was an important event in the history of the [[New Mexico Territory in the American Civil War]]. ||| ||| ||| +1 Battle of Gloucester Point (1861) ||| American Civil War ||| The '''Battle of Gloucester Point, Virginia''' was an inconclusive exchange of cannon fire between a shore battery on the [[York River (Virginia)|York River]] which was manned by [[Virginia]] (soon to be [[Confederate States Army|Confederate]]) forces and the [[Union (American Civil War)|Union]] gunboat [[USS Yankee (1861)|USS ''Yankee'']]. The action occurred on May 7, 1861, three weeks after the start of the [[American Civil War]] (Civil War) at [[Battle of Fort Sumter|Fort Sumter]] in the harbor at [[Charleston, South Carolina]] on April 14, 1861. The Gloucester Point engagement is notable as the earliest exchange of gunfire between the [[Union Navy]] and organized Rebel (Confederate) forces after the U.S. Army surrendered Fort Sumter to the Confederates and as the earliest reported Civil War military engagement in Virginia. Like other early engagements between Union gunboats and Confederate shore batteries, the battle at Gloucester Point was part of the Union Navy effort to [[blockade]] the Southern States in general and the [[Chesapeake Bay]] in particular. The engagement also was part of the effort by Confederate forces to deny the use of rivers in [[Virginia]] to Union military and commercial traffic. ||| ||| ||| +1 Battle of Go Cong ||| Vietnam War ||| The '''Battle of Go Cong''' was a small battle during the [[Vietnam War]]. It took place on September 3, 1963, after the General Staff of the [[Viet Cong]] (NLF) called for 'another [[Battle of Ap Bac|Ap Bac]]' on [[South Vietnam]]ese forces. The intent of the operation was to drive out the rebels who had survived the earlier Ap Bac engagement. The battle was won by American and South Vietnamese forces, after inflicting heavy casualties on the Viet Cong, using artillery to slaughter rebel fighters fleeing American [[special operation]] troops who ambushed them with intense [[sniper]] fire. It was later discovered that the 91 of the captured NLF troops were new recruits, and did not have weapons. ||| ||| ||| +1 Battle of Gondra ||| Chaco War ||| The '''Battle of Gondra''' occurred during the [[Chaco War]] between the Bolivian 4th Division, 'The Brave Fourth', and the Paraguayan 1st Division, 'The Iron Division', stationed around Fort Gondra, from 11 to 15 July 1933, in the aftermath of the [[Second Battle of Nanawa]]. The 1st Division enveloped the Bolivian 4th after a series of assaults through the dense woods southwest of Gondra. The Bolivian 34th infantry and the 'Lanza' cavalry regiment, led by captain [[German Busch]], fought a rearguard action which allowed the encircled troops to withdraw northward, toward Campo 31, an open field leading to Alihuatá. Meanwhile, the 3rd 'Pérez' infantry regiment built up a new blocking position in the eastern part of Campo Vía, a dried bed six kilometers west of Gondra, which prevented any further Paraguayan advance. On 15 July, the Bolivian troops retreated unmolested from the pocket, carrying out all their heavy equipment with them. ||| ||| ||| +1 Battle of Goodenough Island ||| World War II ||| The '''Battle of Goodenough Island''' (22–27 October 1942), also known as Operation Drake, was a battle of the [[Pacific War|Pacific campaign]] of [[World War II]]. The [[Allies of World War II|Allies]] attacked the [[Special Naval Landing Forces|''Kaigun Rikusentai'']] (Special Naval Landing Force) stranded on [[Goodenough Island]], [[Territory of Papua|Papua]], during the [[Battle of Milne Bay]] to deny the Japanese the ability to use the island prior to the [[Buna campaign]]. 'Drake Force', consisting of the [[Australia]]n [[2/12th Battalion (Australia)|2/12th Battalion]] and attachments, landed on the southern tip of Goodenough Island at [[Mud Bay, Goodenough Island|Mud Bay]] and [[Taleba Bay]] on 22 October, and following a short but heavy fight, the Japanese forces withdrew to [[Fergusson Island]] on 27 October. After the battle, Goodenough Island was developed by the Allies and became a major base which they used for further operations later in the war. ||| ||| ||| +1 Battle of Gospić ||| Croatian War of Independence ||| '''Battle of Gospić''' ({{lang-hr|Bitka za Gospić}}) was fought in the environs of [[Gospić]], [[Croatia]], from 29 August until 22 September 1991 during the [[Croatian War of Independence]]. The battle pitted the [[Yugoslav People's Army]] (JNA), stationed in five barracks in the town, and paramilitary elements of the [[Serbian Guard (paramilitary)|Serbian Guard]] against the [[Croatian National Guard]] (ZNG), [[Croatian Police|police forces]] based in Gospić and police reinforcements from elsewhere in Croatia. Fighting in the eastern districts of Gospić, controlled by JNA forces with supporting artillery, was largely static but the balance shifted in favor of the Croatian forces following the [[Battle of the Barracks|capture of several JNA depots and barracks]] on 14 September. The remaining barracks were captured by 20 September leading to the expulsion of the JNA and Serbian Guard forces from the town ||| ||| ||| +1 Battle of Grand Gulf ||| American Civil War ||| The '''Battle of Grand Gulf''' was fought on April 29, 1863, during the [[American Civil War]]. In the [[Vicksburg Campaign]] of [[Major general (United States)|Maj. Gen.]] [[Ulysses S. Grant]], [[Union (American Civil War)|Union]] naval forces under Rear Adm. [[David Dixon Porter|David D. Porter]] led seven ironclads in an attack on the [[Confederate States Army|Confederate]] fortifications and batteries at Grand Gulf, downriver from [[Vicksburg, Mississippi]]. Although the Confederates withstood the Union bombardment and prevented infantry from landing against their fortification, the defeat was only a minor setback to Grant's plan to cross the [[Mississippi River]] and advance against Vicksburg. ||| ||| ||| +1 Battle of Grijó ||| Peninsular War ||| The '''Battle of Grijó''' ({{IPA-pt|ɡɾiˈʒɔ}}) (10–11 May 1809) was a battle that ended in victory for the [[Anglo-Portuguese Army]] commanded by [[Arthur Wellesley, 1st Duke of Wellington|Sir Arthur Wellesley]] (the future 1st [[Duke of Wellington (title)|Duke of Wellington]]) over the French army commanded by Marshal [[Nicolas Jean de Dieu Soult|Nicolas Soult]] during the second French invasion of Portugal in the [[Peninsular War]]. The next day, Wellesley drove Soult from Porto in the [[Second Battle of Porto]]. ||| ||| ||| +1 Battle of Grochowiska ||| January Uprising ||| The '''Battle of Grochowiska''' took place on 18 March 1863 at the village of [[Grochowiska, Świętokrzyskie Voivodeship|Grochowiska]] near [[Pińczów]], Poland during the Polish [[January Uprising]] against the [[Russian Empire]]. It involved a 3000 strong unit of Polish insurgents under the command of [[Marian Langiewicz]] which had been cornered by Russian forces numbering around 3500 soldiers and six artillery pieces. It was one of the most bloody, as well as one of the largest battles of the Uprising. ||| ||| ||| +1 Battle of Guadalajara ||| Spanish Civil War ||| The '''Battle of Guadalajara''' (March 8–23, 1937) saw the [[Spanish Republican Army|People's Republican Army]] (''Ejército Popular Republicano'', or EPR) defeat [[Kingdom of Italy (1861-1946)|Italian]] and Nationalist forces attempting to encircle [[Madrid]] during the [[Spanish Civil War]]. The Nationalist forces involved in the Battle of [[Guadalajara, Castile-La Mancha|Guadalajara]] were primarily the Italian [[Corpo Truppe Volontarie|Corps of Volunteer Troops]] (''Corpo Truppe Volontarie'', or CTV). ||| ||| ||| +1 Battle of Guadarrama ||| Spanish Civil War ||| The '''Battle of Guadarrama''' ({{lang-es|Batalla de Guadarrama}}, also known as ''Batalla de Somosierra'') was a battle involving troops loyal to the [[Second Spanish Republic]] in the [[Guadarrama Range]] at the beginning of the [[Spanish Civil War]]. ||| ||| ||| +1 Battle of Guam (1944) ||| Pacific War ||| The '''Second Battle of Guam''' (21 July – 10 August 1944) was the American capture of the [[Empire of Japan|Japanese]]-held [[island]] of [[Guam]], a [[United States]] [[Territory (country subdivision)|territory]] (in the [[Mariana Islands]]) during the [[Pacific War|Pacific campaign]] of [[World War II]]. ||| ||| ||| +1 Battle of Guam (1944) ||| World War II ||| The '''Second Battle of Guam''' (21 July – 10 August 1944) was the American capture of the [[Empire of Japan|Japanese]]-held [[island]] of [[Guam]], a [[United States]] [[Territory (country subdivision)|territory]] (in the [[Mariana Islands]]) during the [[Pacific War|Pacific campaign]] of [[World War II]]. ||| ||| ||| +1 Battle of Gujrat ||| Second Anglo-Sikh War ||| The '''Battle of Gujrat''' was a decisive battle in the [[Second Anglo-Sikh War]], fought on 21 February 1849, between the forces of the [[East India Company]], and a [[Sikh]] army in rebellion against the Company's control of the [[Sikh Empire]], represented by the child Maharaja [[Duleep Singh]] who was in British custody in [[Lahore]]. The Sikh army was defeated by the [[British Army|British]] regular and [[Bengal Army]] forces of the [[British East India Company]]. After it capitulated a few days later, the [[Punjab region|Punjab]] was annexed to the East India Company's territories and Duleep Singh was deposed. ||| ||| ||| +1 Battle of Gurun ||| World War II ||| The '''Battle of Gurun''' was a minor engagement between the Japanese and Commonwealth forces during the [[Malayan Campaign]] of the [[World War II|Second World War]]. The battle occurred when the [[Indian 11th Infantry Division|11th Indian Division]] attempted to slow down the Japanese advance after the disastrous [[Battle of Jitra]] at a position 3 miles north of the village of [[Gurun, Kedah|Gurun]]. ||| ||| ||| +1 Battle of Haman ||| Battle of Pusan Perimeter ||| The '''Battle of Haman''' was one engagement in the larger [[Battle of Pusan Perimeter]] between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from August 31 to September 19, 1950, in the vicinity of [[Haman County]] in [[South Korea]]. The engagement ended in a victory for the United Nations after large numbers of [[United States]] and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack on the town of Haman. ||| ||| ||| +1 Battle of Hampton Roads ||| American Civil War ||| '''The Battle of Hampton Roads''', often referred to as either the '''Battle of the ''Monitor'' and ''Merrimack''''' (or '''''Virginia''''') or the '''Battle of Ironclads''', was the most noted and arguably most important [[naval battle]] of the [[American Civil War]] from the standpoint of the development of navies. It was fought over two days, March 8–9, 1862, in [[Hampton Roads]], a [[roadstead]] in Virginia where the [[Elizabeth River (Virginia)|Elizabeth]] and [[Nansemond River|Nansemond]] rivers meet the [[James River (Virginia)|James River]] just before it enters [[Chesapeake Bay]] adjacent to the city of [[Norfolk, VA|Norfolk]]. The battle was a part of the effort of the [[Confederate States of America|Confederacy]] to break the Union blockade, which had cut off Virginia's largest cities, [[Norfolk, Virginia|Norfolk]] and [[Richmond, Virginia|Richmond]], from international trade. ||| ||| ||| +1 Battle of Hanoi ||| First Indochina War ||| On December 19, 1946 [[Vietnam]]ese Viet Minh soldiers detonated explosives in [[Hanoi]], and the ensuing battle, known as the '''Battle of Hanoi''' marked the opening salvo of the [[First Indochina War]]. The explosives, set off at 20:03 in the evening, had been smuggled past [[French Army]] guards into the city's power plant. The result explosion plunged Hanoi into darkness, and throughout the city the [[Viet-Minh]] began attacking French military positions and French homes. Surviving French troops, alerted by friendly spies, gradually gained a numerical superiority. French artillery shelled the city, and house to house searches were conducted searching for the Viet-Minh leadership. ||| ||| ||| +1 Battle of Harpers Ferry ||| American Civil War ||| The '''Battle of Harpers Ferry''' was fought September 12-15, 1862, as part of the [[Maryland Campaign]] of the [[American Civil War]]. As Gen. [[Robert E. Lee]]'s [[Confederate States Army|Confederate]] army invaded [[Maryland]], a portion of his army under [[Major General (CSA)|Maj. Gen.]] [[Stonewall Jackson|Thomas J. 'Stonewall' Jackson]] surrounded, bombarded, and captured the [[Union Army|Union]] garrison at [[Harpers Ferry, West Virginia|Harpers Ferry]], [[Virginia]] (now [[West Virginia]]), a major victory at relatively minor cost. ||| ||| ||| +1 Battle of Hartsville ||| American Civil War ||| The '''Battle of Hartsville''' was fought on December 7, 1862, in northern [[Tennessee]] at the opening of the [[Stones River Campaign]] the [[American Civil War]]. '''Hartsville Battlefield''' is listed on the [[National Register of Historic Places]]. ||| ||| ||| +1 Battle of Hartville ||| American Civil War ||| The '''Battle of Hartville''' was fought January 9-11, 1863, in [[Wright County, Missouri]], as part of [[John S. Marmaduke]]'s first expedition into [[Missouri]], during the [[American Civil War]]. ||| ||| ||| +1 Battle of Havana (1748) ||| War of the Austrian Succession ||| The '''Battle of Havana''' was an engagement between the [[Kingdom of Great Britain|British]] [[Caribbean]] squadron and a [[Spain|Spanish]] squadron based near [[Havana]]. The action unfolded with each side at once anxious to cover its own trade and to intercept that of the other. After a number of aborted attacks, the British succeeded in driving the Spanish back to their harbour after capturing the ''Conquistador'' and running the vice-admiral's ship ''Africa'' on shore, where she was blown up by her own crew after being totally dismasted and made helpless. Both commanders, [[Sir Charles Knowles, 1st Baronet|Charles Knowles]] and [[Don Andres Reggio]], were reprimanded by their respective commands for their conduct during the engagement, in Knowles' case for not bringing his full fleet to bear and achieving a total rout. Although the advantage had clearly been with Knowles, he failed to use this to deliver a decisive blow. It was the last major action in the [[War of Jenkin's Ear]] (1739–48), which had merged with the larger [[War of the Austrian Succession]] (1740–48). ||| ||| ||| +1 Battle of Heartbreak Ridge ||| Korean War ||| The '''Battle of Heartbreak Ridge''' ({{korean|hangul=단장의 능선 전투|hanja=斷腸의 稜線 戰鬪}}; {{lang-fr|Bataille de Crèvecœur}}), also known as the '''Battle of Wendengli''' ({{zh|s=文登里战斗|p=Wéndēnglǐ Zhàndòu}}), was a month-long battle in the [[Korean War]] which took place between September 13 and October 15, 1951. The Battle of Heartbreak Ridge was one of several major engagements in the hills of North Korea a few miles north of the [[38th parallel north|38th parallel]] (the pre-war boundary between [[North Korea|North]] and [[South Korea]]), near [[Chorwon]]. For the Chinese, this battle is often confused with [[Battle of Triangle Hill]], which occurred a year later. ||| ||| ||| +1 Battle of Heilsberg ||| War of the Fourth Coalition ||| Within two days, Napoleon ordered his 190,000-man army to close in on the 100,000 Russians and 15,000 Prussians. Detecting the approaching avalanche, Bennigsen ordered his troops to retreat on [[Lidzbark Warmiński|Lidzbark Warmiński (Heilsberg)]]. The Russian army took up strong defensive positions around the town, which stood on the [[Łyna River|Łyna (Alle) River]]. The French army, under Marshals Murat and Lannes, attacked on 10 June. Bennigsen repelled several attacks, resulting in huge French casualties, but had to withdraw towards Friedland the following day. Four days later, the decisive [[Battle of Friedland]] occurred, ending the [[War of the Fourth Coalition]] with the passing of the [[Treaty of Tilsit]]. ||| Overview ||| ||| +1 Battle of Hel ||| World War II ||| The '''Battle of Hel''' was one of the longest battles of the [[Invasion of Poland (1939)|Invasion of Poland]] during [[World War II]]. ||| ||| ||| +1 Battle of Heraklion ||| World War II ||| The '''Battle of Heraklion''' was a battle during [[World War II]] on the [[Greece|Greek]] island of [[Crete]]. It began on the morning of 20 May 1941, when [[Nazi Germany]] launched an [[Airborne forces|airborne invasion]] of Crete under the codename '''Unternehmen Merkur''' ('Operation Mercury'). [[United Kingdom|British]], [[Australia]]n and Greek forces defended the Heraklion port and [[Heraklion International Airport|airfield]]. ||| ||| ||| +1 Battle of Hill 60 (Gallipoli) ||| Gallipoli Campaign ||| The '''Battle of Hill 60''' was the last major assault of the [[Gallipoli Campaign]]. It was launched on 21 August 1915 to coincide with the attack on [[Scimitar Hill (battle)|Scimitar Hill]] made from the [[Landing at Suvla Bay|Suvla]] front by Major-General [[Beauvoir De Lisle|H. de B. De Lisle's]] [[IX Corps (United Kingdom)|British IX Corps]], Stopford having been replaced in the few days previous. Hill 60 was a low knoll at the northern end of the Sari Bair range which dominated the Suvla landing. Capturing this hill along with [[Scimitar Hill]] would have allowed the [[Anzac Cove|Anzac]] and Suvla landings to be securely linked. ||| ||| ||| +1 Battle of Hilli ||| Bangladesh Liberation War ||| The '''Battle of Hilli''' or the '''Battle of Bogra''' was a major battle fought in the [[Indo-Pakistani War of 1971]] and [[Bangladesh Liberation War]]. It is generally regarded as the most [[pitched battle]] that took place in [[East Pakistan]], now [[Bangladesh]]. The battle of Hilli took place between 23 November 1971 and 11 December 1971, although the final surrender took place on 18 December 1971. ||| ||| ||| +1 Battle of Hilli ||| Indo-Pakistani War of 1971 ||| The '''Battle of Hilli''' or the '''Battle of Bogra''' was a major battle fought in the [[Indo-Pakistani War of 1971]] and [[Bangladesh Liberation War]]. It is generally regarded as the most [[pitched battle]] that took place in [[East Pakistan]], now [[Bangladesh]]. The battle of Hilli took place between 23 November 1971 and 11 December 1971, although the final surrender took place on 18 December 1971. ||| ||| ||| +1 Battle of Hohenlinden ||| War of the Second Coalition ||| The '''Battle of Hohenlinden''' was fought on 3 December 1800 during the [[French Revolutionary Wars]]. A [[French First Republic|French]] army under [[Jean Victor Marie Moreau]] won a decisive victory over the [[Habsburg Monarchy|Austrians]] and [[Electorate of Bavaria|Bavarians]] led by [[Archduke John of Austria]]. After being forced into a disastrous retreat, the allies were compelled to request an armistice that effectively ended the [[War of the Second Coalition]]. [[Hohenlinden]] is 33 km east of [[Munich]] in modern Germany. ||| ||| ||| +1 Battle of Hoke's Run ||| American Civil War ||| The '''Battle of Hoke's Run''', also known as the '''Battle of [[Falling Waters, West Virginia|Falling Waters]]''' or '''[[Hainesville, Berkeley County, West Virginia|Hainesville]]''', took place on July 2, 1861, in [[Berkeley County, West Virginia|Berkeley County]], [[Virginia]] (now [[West Virginia]]) as part of the [[First Battle of Bull Run|Manassas Campaign]] of the [[American Civil War]]. Notable as an early engagement of Confederate [[Stonewall Jackson|Colonel Thomas J. Jackson]] and his Brigade of Virginia Volunteers, nineteen days before their famous nickname would originate, this brief skirmish was hailed by both sides as a stern lesson to the other. about how to operate in the face of superior numbers, Jackson's forces resisted [[Robert Patterson|General Robert Patterson's]] Union forces briefly and then slowly retreated over several miles. ||| ||| ||| +1 Battle of Holowczyn ||| Great Northern War ||| After dealing with [[Saxony]]-[[Poland]], Charles was ready to take on his remaining enemy in the [[Great Northern War]]: Russia. The best route into the Russian heartland was along the [[continental divide]] from [[Grodno]] to [[Minsk]] and [[Smolensk]]. From there, [[Moscow]] could be reached without having to cross any major [[river]]s. Charles chose instead a straighter - but more difficult - route, over the [[Berezina]] and [[Drut River|Drut]] rivers. The army was moved from its winter camp near [[Radoszkowice]] in June 1708; the movement was plagued by poor [[road]] conditions and [[weather]]. ||| Prelude ||| ||| +1 Battle of Hondschoote (1793) ||| French Revolutionary Wars ||| The '''Battle of Hondschoote''' took place during the [[Flanders Campaign]] of the [[French Revolutionary Wars: Campaigns of 1793|Campaign of 1793]] in the [[French Revolutionary Wars]]. It was fought during operations surrounding the [[Siege of Dunkirk (1793)|Siege of Dunkirk]] between 6 and 8 September 1793 at [[Hondschoote]], [[Nord (département)|Nord]], [[France]], and resulted in a French victory under General [[Jean Nicolas Houchard]] and General [[Jean-Baptiste Jourdan]] against the command of [[Heinrich Wilhelm von Freytag|Marshal Freytag]], part of the Anglo-Hanoverian corps of the [[Prince Frederick, Duke of York and Albany|Duke of York]]. ||| ||| ||| +1 Battle of Hong Kong ||| Pacific War ||| The '''Battle of Hong Kong''' (8–25 December 1941), also known as the '''Defence of Hong Kong''' and the '''Fall of Hong Kong''', was one of the first battles of the [[Pacific War|Pacific campaign]] of [[World War II]]. On the same morning as the [[attack on Pearl Harbor|attack on the U.S. naval base]] at [[Pearl Harbor]], forces of the [[Empire of Japan]] attacked [[British Hong Kong]]. The attack was in violation of international law as Japan had not declared war against the [[British Empire]]. Japan's unprovoked act of aggression was met with stiff resistance from Hong Kong's garrison, composed of local troops as well as [[British Army during the Second World War|British]], [[Military history of Canada during World War II|Canadian]] and [[Indian Army during World War II|Indian]] units. Within a week the defenders abandoned the mainland, and less than two weeks later, with their position on the island untenable, the colony surrendered. ||| ||| ||| +1 Battle of Hong Kong ||| World War II ||| The '''Battle of Hong Kong''' (8–25 December 1941), also known as the '''Defence of Hong Kong''' and the '''Fall of Hong Kong''', was one of the first battles of the [[Pacific War|Pacific campaign]] of [[World War II]]. On the same morning as the [[attack on Pearl Harbor|attack on the U.S. naval base]] at [[Pearl Harbor]], forces of the [[Empire of Japan]] attacked [[British Hong Kong]]. The attack was in violation of international law as Japan had not declared war against the [[British Empire]]. Japan's unprovoked act of aggression was met with stiff resistance from Hong Kong's garrison, composed of local troops as well as [[British Army during the Second World War|British]], [[Military history of Canada during World War II|Canadian]] and [[Indian Army during World War II|Indian]] units. Within a week the defenders abandoned the mainland, and less than two weeks later, with their position on the island untenable, the colony surrendered. ||| ||| ||| +1 Battle of Honkaniemi ||| Winter War ||| The '''Battle of Honkaniemi''' was fought between [[Finland|Finnish]] and [[Soviet Union|Soviet]] forces on 26 February 1940. This battle was fought by tanks, the only time they were used in combat by Finnish forces in the [[Winter War]]. ||| ||| ||| +1 Battle of Horlivka ||| 2014 pro-Russian unrest in Ukraine ||| Horlivka is a large city in [[Donetsk Oblast]], north of [[Donetsk]] city. Amidst [[2014 pro-Russian unrest in Ukraine|rising unrest]] across [[Eastern Ukraine|eastern]] and [[Southern Ukraine|southern]] Ukraine, armed men stormed and took control of a police station in Horlivka on 14 April. Soon after this, the men stormed the city administration, and gained effective control over the city for the breakaway [[Donetsk People's Republic]]. After DPR forces [[Siege of Sloviansk|withdrew from Sloviansk]] in northern Donetsk Oblast on 5 July, many travelled to Horlivka, which remained under DPR control. ||| Background ||| ||| +1 Battle of Horseshoe Bend (1814) ||| Creek War ||| The '''Battle of Horseshoe Bend''' (also known as ''Tehopeka'', ''Tohopeka'', ''Cholocco Litabixbee'', or ''The Horseshoe''), was fought during the [[War of 1812]] in the [[Mississippi Territory]], now central [[Alabama]]. On March 27, 1814, [[United States]] forces and [[Native Americans in the United States|Indian]] allies under Major General [[Andrew Jackson]] defeated the [[Red Sticks]], a part of the [[Creek people|Creek]] Indian tribe who opposed American expansion, effectively ending the [[Creek War]]. ||| ||| ||| +1 Battle of Hsimucheng ||| Russo-Japanese War ||| '''The Battle of Hsimucheng''' ({{nihongo|Sekijō-no-tatakai|析木城の戦い||}}, {{lang-ru|Бой у Симучена}}) was a minor land engagement of the [[Russo-Japanese War]]. It was fought on 31 July 1904 near Hsimucheng, a hamlet about {{convert|20|km|mi}} southeast of the strategic junction town of [[Haicheng, Liaoning|Haicheng]], on the main road connecting Haicheng with the coast between elements of the [[Imperial Japanese Army]] and the [[Imperial Russian Army]]. ||| ||| ||| +1 Battle of Huaiyin–Huai'an ||| Chinese Civil War ||| Battle of [[Huaiyin District, Huai'an|Huaiyin]]-[[Huai'an]] is also called by the Campaign to Defend [[Huaiyin District, Huai'an|Huaiyin]]-[[Huai'an]] (两淮保卫战) by the [[Communist Party of China]], and it was a struggle between the [[Kuomintang|nationalists]] and the communists for the control of [[Huaiyin District, Huai'an|Huaiyin]] and [[Huai'an]], the two richest cities in [[China]] during the [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[Kuomintang|nationalist]] victory. ||| ||| ||| +1 Battle of Hwanggan ||| Korean War ||| The '''Battle of Hwanggan''' was an engagement between [[United States]] and [[North Korean]] forces that took place on July 23–29, 1950, on a road north of the village of [[Hwanggan]] in southern [[South Korea]], early in the [[Korean War]]. The battle ended in a victory for the North Koreans after US troops were forced to withdraw south. ||| ||| ||| +1 Battle of Hòa Bình ||| First Indochina War ||| The '''Battle of Hòa Bình''' was fought during the [[First Indochina War]]. It occurred from 10 November 1951 to 25 February 1952, when [[French Union]] forces attempted to lure the [[Viet Minh|Việt Minh]] out into the open and to force it to fight on French terms. ||| ||| ||| +1 Battle of Hürtgen Forest ||| World War II ||| The '''Battle of Hürtgen Forest''' ({{lang-de|Schlacht im Hürtgenwald}}) was a series of fierce battles fought from 19 September 1944 to 10 February 1945 between U.S. and German forces during [[World War II]] in the [[Huertgen forest|Hürtgen Forest]] about {{convert|50|mi2|km2|abbr=on}} east of the Belgian–German border. It was the longest battle on German ground during World War II, and is the longest single battle the U.S. Army has ever fought. ||| ||| ||| +1 Battle of Ia Drang ||| Vietnam War ||| The '''Battle of Ia Drang''' was the first major battle between [[Regular army|regulars]] of the [[United States Army]] and regulars of the [[People's Army of Vietnam]] (PAVN/NVA) of [[North Vietnam]] during the [[Vietnam War]]. The two-part battle took place between November 14 and November 18, 1965, at two [[landing zones]] (LZs) west of Plei Me in the [[Central Highlands (Vietnam)|Central Highlands]] of [[South Vietnam]] (precisely at the footstep of Chu Pong massif, 25 kilometers west of [[Pleime]]) as part of the U.S. [[Air assault|airmobile]] offensive codenamed Operation Silver Bayonet I (November 9–18, 1965). ||| ||| ||| +1 Battle of Iganie ||| November Uprising ||| The '''Battle of Iganie''' was fought on 10 April 1831 between Russian and Polish forces. It was one of the last major battles of the [[November Uprising]] and the last major victory of the Poles. ||| ||| ||| +1 Battle of Ilovaisk ||| War in Donbass ||| The '''Battle of Ilovaisk''' was a key battle of the [[War in Donbass]] that led to signing of the [[Minsk Protocol]] by a trilateral group. ||| ||| ||| +1 Battle of Imphal ||| Burma Campaign ||| The '''Battle of Imphal''' took place in the region around the city of [[Imphal]], the capital of the state of [[Manipur]] in [[northeast India]] from March until July 1944. [[Empire of Japan|Japanese]] armies attempted to destroy the Allied forces at Imphal and invade [[India]], but were driven back into [[Burma]] with heavy losses. Together with the simultaneous [[Battle of Kohima]] on the road by which the encircled Allied forces at Imphal were relieved, the battle was the turning point of the [[Burma Campaign]], part of the [[South-East Asian Theatre of World War II|South-East Asian Theatre of the Second World War]]. The defeat at Kohima and Imphal was the largest defeat to that date in Japanese history. ||| ||| ||| +1 Battle of Ivry ||| French Wars of Religion ||| The '''Battle of Ivry''' was fought on 14 March 1590, during the [[French Wars of Religion]]. The battle was a decisive victory for [[Henry IV of France]], leading [[Huguenot]] forces against the [[Catholic League (French)|Catholic League]] forces led by the [[Charles of Lorraine, Duke of Mayenne|Duc de Mayenne]]. Henry's forces were victorious and he went on to lay siege to [[Paris]]. ||| ||| ||| +1 Battle of Jackson, Tennessee ||| American Civil War ||| The '''Battle of Jackson''', also known as the '''Battle of Salem Cemetery''', was fought on December 19, 1862, in [[Madison County, Tennessee]], during the [[American Civil War]]. ||| ||| ||| +1 Battle of Jaffa (1192) ||| Third Crusade ||| The '''Battle of Jaffa''' took place during the [[Crusades]], as one of a series of campaigns between the army of Sultan [[Saladin]] (Ṣalāḥ al-Dīn Yūsuf ibn Ayyūb) and the Crusader forces led by King [[Richard I of England]] (known as Richard the Lionheart). It was the final battle of the [[Third Crusade]], after which Saladin and King Richard were able to negotiate a truce. Although the Crusaders did not regain possession of Jerusalem, [[Christian]] pilgrims were permitted entry into the city, and the Crusaders were able to retain control of a sizable strip of land stretching from [[Beirut]] to Jaffa. ||| ||| ||| +1 Battle of Jarosław (1656) ||| Second Northern War ||| The '''Battle of Jarosław''' took place during the [[Deluge (history)|Deluge]] (part of the [[Second Northern War]]) in March 15, 1656. Polish-Lithuanian Commonwealth forces under the command of [[Stefan Czarniecki]] defeated the Swedish forces commanded by [[Charles X Gustav of Sweden]]. ||| ||| ||| +1 Battle of Java (1942) ||| Pacific War ||| The '''Battle of Java''' ('''Invasion of Java''', '''Operation J''') was a battle of the [[Pacific War|Pacific theatre]] of [[World War II]]. It occurred on the island of [[Java (island)|Java]] from 28 February-12 March 1942. It involved forces from the [[Empire of Japan]], which invaded on 28 February 1942, and [[Allies of World War II|Allied]] personnel. Allied commanders signed a formal surrender at Japanese headquarters at [[Bandung]] on 12 March. ||| ||| ||| +1 Battle of Jaworów ||| Invasion of Poland ||| The '''Battle of Jaworów''' ({{lang-pl|bitwa pod Jaworowem}}) was a fierce battle fought between the German forces and elements of the Polish [[Karpaty Army|Małopolska Army]] during the Nazi and Soviet [[Invasion of Poland]]. It took place from 14 to 16 September 1939 in the vicinity of the town of Jaworów. In the effect of a two-day assault, the Polish forces broke through the German line of defence on their way towards the city of [[Lviv|Lwów]] (modern Lviv). The engagement is best known for the almost total destruction of the SS-Germania regiment. ||| ||| ||| +1 Battle of Jemappes ||| French Revolutionary Wars ||| The '''Battle of Jemappes''' (6 November 1792) took place near the town of [[Jemappes]] in [[Hainaut (province)|Hainaut]], [[Belgium]], near [[Mons]] during the [[War of the First Coalition]], part of the [[French Revolutionary Wars]]. One of the first major offensive battles of the war, it was a victory for the armies of the infant French Republic, and saw the French Armée du Nord, which included a large number of inexperienced volunteers, defeat a substantially smaller regular Austrian army. ||| ||| ||| +1 Battle of Jumonville Glen ||| French and Indian War ||| The '''Battle of Jumonville Glen''', also known as the '''Jumonville affair''', was the opening battle of the [[French and Indian War]] fought on May 28, 1754 near what is present-day [[Uniontown, Pennsylvania|Uniontown]] in [[Fayette County, Pennsylvania|Fayette County]], [[Pennsylvania]]. A company of colonial militia from [[Colony of Virginia|Virginia]] under the command of Lieutenant Colonel [[George Washington]], and a small number of [[Mingo]] warriors led by [[Tanacharison]] (also known as 'Half King'), ambushed a force of 35 [[Canadien]]s under the command of [[Joseph Coulon de Villiers de Jumonville]]. ||| ||| ||| +1 Battle of Juncal ||| Cisplatine War ||| In the aftermath of the battle, the Third Division, the arm of the Brazilian fleet tasked with controlling the [[Uruguay River]] and thus disrupting communications with the Argentine army then operating in the [[Banda Oriental]], was completely destroyed. The result was the biggest naval victory for Argentina in the [[Cisplatine War]] ||| ||| ||| +1 Battle of Junín ||| Peruvian War of Independence ||| The '''Battle of Junín''' was a military engagement of the [[Peruvian War of Independence]], fought in the highlands of the [[Junín Region]] on August 6, 1824. The preceding February the royalists had regained control of Lima, and having regrouped in [[Trujillo, Peru|Trujillo]], [[Simón Bolívar]] in June led his rebel forces south to confront the Spanish under [[Field Marshal]] [[José de Canterac]]. The two armies met on the plains of Junín, northwest of the [[Jauja Valley]]. ||| ||| ||| +1 Battle of Ka-san ||| Korean War ||| The '''Battle of Ka-san''' was an engagement between [[United Nations]] (UN) and [[North Korean]] forces early in the [[Korean War]] from September 1 to September 15, 1950, in the vicinity of [[Ka-san]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Kalamata ||| Greek War of Independence ||| The '''Battle of Kalamata''' took place on 23 March 1821 between the Greek irregular revolutionary forces and the Ottoman forces of the city. It was one of the first events of the [[Greek War of Independence]]. The result was the capture of the city by the Greeks. [[Kalamata]] became the first city to be liberated. ||| ||| ||| +1 Battle of Kalbajar ||| Nagorno-Karabakh War ||| The '''Battle of Kelbajar''' took place in March and April 1993, during the [[Nagorno-Karabakh War]]. It resulted in the capture by [[Armenian people|Armenian]] military forces of the [[Kalbajar|Kelbajar]] region of [[Azerbaijan]]. ||| ||| ||| +1 Battle of Kambula ||| Anglo-Zulu War ||| '''Battle of Kambula''' took place in 1879, during the [[Anglo-Zulu War]] when a [[Zulu Kingdom|Zulu]] Army attacked the British camp at [[Kambula]]. It resulted in a decisive Zulu defeat and is considered to be the turning point of the Anglo-Zulu War. ||| ||| ||| +1 Battle of Kampot ||| Vietnam War ||| The '''Battle of Kampot''' was a major battle of the [[Vietnam War]], also a part of the [[Cambodian Civil War]]. From February 26 to April 2, 1974, Cambodian government troops battled [[Khmer Rouge]] guerillas for the control of [[Kampot (city)|Kampot]] city. ||| ||| ||| +1 Battle of Kankiryo Saddle ||| World War II ||| The '''Battle of Kankiryo Saddle''' was part of the [[Shaggy Ridge Campaign]], fought by Australian and Japanese troops in the [[Territory of New Guinea]] in [[World War II]]. ||| ||| ||| +1 Battle of Kapyong ||| Korean War ||| The '''Battle of Kapyong''' ({{lang-ko|가평전투}}, 22–25 April 1951), also known as the '''Battle of Jiaping''' ({{zh|s=加平战斗|p=Jiā Píng Zhàn Dòu}}), was fought during the [[Korean War]] between United Nations (UN) forces—primarily Australian and Canadian—and the Chinese communist [[People's Volunteer Army]]. The fighting occurred during the Chinese Spring Offensive and saw the [[27th British Commonwealth Brigade]] establish blocking positions in the Kapyong Valley, on a key route south to the capital, [[Seoul]]. The two forward battalions—[[3rd Battalion, Royal Australian Regiment]] (3 RAR) and [[Princess Patricia's Canadian Light Infantry|2nd Battalion, Princess Patricia's Canadian Light Infantry]] (2 PPCLI)—occupied positions astride the valley and hastily developed defences. As thousands of South Korean soldiers began to withdraw through the valley, the Chinese infiltrated the brigade position under the cover of darkness, and assaulted the Australians on Hill 504 during the evening and into the following day. ||| ||| ||| +1 Battle of Kashii ||| Siege of Osaka ||| The '''Battle of Kashii''' (樫井の戦い) was the very first battle of the Summer Campaign of the 1615 [[Siege of Osaka]], near the beginning of the [[Edo period]] in [[Japan]]. It took place on the 26th day of the 4th month of the [[Keichō]] era. ||| ||| ||| +1 Battle of Keelung ||| Japanese invasion of Taiwan (1895) ||| The '''Battle of Keelung''' was the first significant engagement of the [[Japanese invasion of Taiwan (1895)]] on 2–3 June 1895 when the short lived [[Republic of Formosa]] sought to repeal the Japanese military forces sent there to occupy the ceded territories, by China's [[Qing Dynasty]], of the [[Taiwan]] and the [[Penghu|Pescadores Islands]] to Japan under the April 1895 [[Treaty of Shimonoseki]]. The treaty was the result of the China's defeat in the [[First Sino-Japanese War]]. ||| ||| ||| +1 Battle of Kettle Creek ||| American Revolutionary War ||| The '''Battle of Kettle Creek''' (February 14, 1779) was a major encounter in the back country of [[Georgia (U.S. State)|Georgia]] during the [[American Revolutionary War]]. It was fought in [[Wilkes County, Georgia|Wilkes County]] about eight miles (13 km) from present-day [[Washington, Georgia]]. A [[militia]] force of [[Patriot (American Revolution)|Patriots]] decisively defeated and scattered a [[Loyalist (American Revolution)|Loyalist]] militia force that was on its way to British-controlled [[Augusta, Georgia|Augusta]]. ||| ||| ||| +1 Battle of Khafji ||| Gulf War ||| The '''Battle of Khafji''' was the first major ground engagement of the [[Gulf War|Persian Gulf War]]. It took place in and around the Saudi Arabian city of [[Khafji]], from 29 January to 1 February 1991 and marked the culmination of the [[Coalition of the Gulf War|Coalition]]'s [[Gulf War air campaign|air campaign]] over [[Kuwait]] and [[Iraq]], which had begun on 17 January 1991. ||| ||| ||| +1 Battle of Kham Duc ||| Vietnam War ||| The '''Battle of Kham Duc''' was a major battle of the [[Vietnam War]] (also known, in [[Vietnam]], as the 'American War'). The event occurred in Khâm Đức, now district capital of [[Phước Sơn District]], then in Quảng Tín Province (now part of [[Quang Nam Province|Quảng Nam Province, South Vietnam]]), between 10–12 May 1968. During the [[Tet Offensive]] of 1968, the [[Vietnam People's Army]] (PAVN) 2nd Division tried to capture [[Da Nang|Đà Nẵng]] but their attacks were quickly blunted by elements of the U.S. [[1st Marine Division]], the [[Americal Division]], and the Korean Brigade that were guarding the city. North Vietnamese General Chu Huy Mân decided to disengage from the fight in the outskirts of the city, and pull the 2nd Division into the mountains where they could rest, rebuild, and prepare for the next major operation. Khâm Đức, a small district in the north of Quảng Tín, was chosen as the next target for the PAVN 2nd Division. Following the defeat of the North Vietnamese in [[Da Nang|Đà Nẵng]], U.S. military intelligence agencies in [[I Corps Tactical Zone]] were confused by the movements of the North Vietnamese 2nd Division, because they could not track down the mysterious enemy unit. ||| ||| ||| +1 Battle of Khe Sanh ||| Vietnam War ||| The '''Battle of Khe Sanh''' was conducted in northwestern [[Quảng Trị Province]], [[South Vietnam|Republic of Vietnam]] (South Vietnam), between 21 January and 9 July 1968 during the [[Vietnam War]]. The belligerent parties were elements of the [[United States military]] [[III Marine Amphibious Force]] (III MAF), [[1st Cavalry Division (United States)|1st Cavalry Division]], the US [[Seventh Air Force]], 1st Battalion 9th Marine Regiment, minor elements of the [[South Vietnamese Army]] (ARVN) against two to three [[army division|division-size]] elements of the [[North Vietnamese Army|People's Army of Vietnam]] (generally referred to in Western sources as the North Vietnamese Army or NVA). ||| ||| ||| +1 Battle of Khunzakh ||| Caucasian War ||| The '''Battle of Khunzakh''' in 1830 was [[Ghazi Muhammad|Kazi Mulla]]'s failed attempt to capture the [[Avar Khanate]] based at [[Khunzakh]] during the [[Caucasian War]]. ||| ||| ||| +1 Battle of Khushab ||| Anglo-Persian War ||| '''The Battle of Khushab''' (Battle of [[Khvosh Ab, Bushehr|Khoosh-Ab]]) took place on 7 February 1857 and was the largest single engagement of the [[Anglo-Persian War]]. Having taken [[Borazjan]] without a fight, the British expeditionary army under [[Sir James Outram, 1st Baronet|Sir James Outram]] was in the process of withdrawing to [[Bushehr]] when it was ambushed by a far larger Persian force under [[Khanlar Mirza]], drawn up in battle order to its rear. ||| ||| ||| +1 Battle of Kiev (1943) ||| World War II ||| The '''Second Battle of Kiev''' describes three strategic operations (two offensive and one defensive) by the [[Soviet Red Army]], and one operational counterattack by the ''[[Wehrmacht]]'' which took place in the wake of the failed German offensive at [[Battle of Kursk|Kursk]] during [[World War II]]. These four operations took place between 3 October and 22 December 1943. ||| ||| ||| +1 Battle of Kilkis–Lahanas ||| Second Balkan War ||| The '''Battle of Kilkis–Lahanas''' took place during the [[Second Balkan War]] between Greece and [[Bulgaria]] for the town of [[Kilkis]] in Macedonia. The battle lasted three days from 19 to 21 June 1913 and ended with a Greek victory. ||| ||| ||| +1 Battle of Kilmallock ||| Irish Civil War ||| The '''Battle of Kilmallock''' took place between 25 July and 5 August 1922 in [[County Limerick]]. It was one of the largest engagements of the [[Irish Civil War]]. ||| ||| ||| +1 Battle of Kilometer 7 ||| Chaco War ||| The '''Battle of Kilometer 7''' occurred during the [[Chaco War]] between [[Bolivia]]n forces commanded by Lt Col [[Bernardino Bilbao Rioja]] defending Fort Saavedra and [[Paraguay]]an forces under Col [[José Félix Estigarribia]], from 7 November 1932 to February 1933, and ended with a Paraguayan retreat to the northeast towards [[Gondra]], later to be the site of the [[Battle of Campo Jordán]]. The Paraguayan initiative, which had belonged to the Paraguayans since the beginning of the [[battle of Boquerón|siege of Boquerón]] passed to the Bolivian army until the [[Second Battle of Nanawa]] in July. ||| ||| ||| +1 Battle of Kilsyth ||| Wars of the Three Kingdoms ||| The '''Battle of Kilsyth''' was an engagement of the [[Scotland in the Wars of the Three Kingdoms|Wars of the Three Kingdoms]] which took place on 15 August 1645 at [[Kilsyth]]. Despite a numerical disadvantage, the battle was another victory for the Royalist general [[James Graham, 1st Marquess of Montrose|Montrose]] over the [[Covenanter]]s, and marked the end of [[William Baillie (soldier)|William Baillie]]'s pursuit of the Royalist forces. ||| ||| ||| +1 Battle of Kinburn (1855) ||| Crimean War ||| The '''Battle of Kinburn''' (or '''Kil-Bouroun''') was a naval engagement during the final stage of the [[Crimean War]]. It took place on the tip of the [[Kinburn Peninsula]] (on the south shore of the [[Dnieper River]] estuary in today's [[Ukraine]]) on 17 October 1855. During the battle, a combined [[French Navy]] and British [[Royal Navy]] force engaged Russian forts on shore. ||| ||| ||| +1 Battle of Kirksville ||| American Civil War ||| The '''Battle of Kirksville''' was a battle in the [[American Civil War]], fought in the town of [[Kirksville, Missouri]], on August 6, 1862. The [[Union army|Union]] victory helped consolidate Federal control over northeastern Missouri. ||| ||| ||| +1 Battle of Kissoué ||| World War II ||| The '''Battle of Kissoué''' (17 June 1941) was part of the Allied advance on [[Damascus]] in [[Syria]] during the [[Syria-Lebanon campaign]] in [[World War II]]. The battle is noted for the confrontation between [[Vichy France|Vichy French]] and the [[Free French Forces]]. The Free French met with stiff resistance from the Vichy French. ||| ||| ||| +1 Battle of Knocknaclashy ||| Irish Confederate Wars ||| The '''battle of Knocknaclashy''', took place in [[County Cork]] in southern [[Ireland]] in 1651. In it, an [[Confederate Ireland|Irish Confederate]] force led by [[Donagh MacCarthy, Viscount Muskerry]] was defeated by an [[England|English]] [[Parliament of England|Parliamentarian]] force under [[Roger Boyle, 1st Earl of Orrery]]. It was the final pitched battle of the [[Irish Confederate Wars]] and one of the last of the [[Wars of the Three Kingdoms]]. ||| ||| ||| +1 Battle of Kobryń ||| Invasion of Poland ||| The '''Battle of Kobryń''' was one of the battles of the [[Invasion of Poland (1939)|Invasion of Poland]]. It was fought between September 14 and September 18, 1939, between the German XIX Panzer Corps of General [[Heinz Guderian]] and the improvised [[60th Infantry Division (Poland)|Polish 60. Infantry Division 'Kobryn']] of Colonel [[Adam Epler]]. It was fought concurrently with the [[Battle of Brzesc Litewski|Battle of Brześć Litewski]]. ||| ||| ||| +1 Battle of Kolombangara ||| Pacific War ||| The '''Battle of Kolombangara''' (Japanese: コロンバンガラ島沖海戦) (also known as the '''Second Battle of Kula Gulf''') was a [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]], fought on the night of 12/13 July 1943, off [[Kolombangara]] in the [[Solomon Islands]]. ||| ||| ||| +1 Battle of Kolombangara ||| World War II ||| The '''Battle of Kolombangara''' (Japanese: コロンバンガラ島沖海戦) (also known as the '''Second Battle of Kula Gulf''') was a [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]], fought on the night of 12/13 July 1943, off [[Kolombangara]] in the [[Solomon Islands]]. ||| ||| ||| +1 Battle of Komsomolskoye ||| Second Chechen War ||| The '''Battle of Komsomolskoye''' took place in March 2000 between Russian federal forces and [[Chechnya|Chechen]] separatists in the Chechen village of Komsomolskoye (Saadi-Kotar), Chechnya. It was the largest Russian victory during the [[Second Chechen War]]. Several hundred Chechen rebel fighters and civilians and more than 50 Russian servicemen were killed in the course of more than two weeks of siege warfare. The fighting resulted in the destruction of most of the forces of Chechen rebel field commander [[Ruslan Gelayev]]. Scores of Chechens were taken prisoner by the Russians, and only a few survived. A number of civilians died from torture, and the village was looted and completely destroyed. ||| ||| ||| +1 Battle of Kowloon ||| First Opium War ||| The '''Battle of Kowloon''' was fought between British and Chinese ships off [[Kowloon]], China, on 4 September 1839. It has been called 'the first shot of the [[First Opium War]]' and arose following a fight in which a local Chinese died at the hands of British troops. The Chinese did not consider the punishment meted out to the perpetrators sufficient and as a result suspended supplies of food to the British at the same time poisoning their water supplies. In retaliation the British summoned nearby warships in an attempt to force the Chinese to change their minds. ||| ||| ||| +1 Battle of Krasnobród ||| Invasion of Poland ||| The World War Two '''Battle of Krasnobród''' took place on 23 September 1939 near the town of [[Krasnobród]]. It was fought between the forces of the [[Polish Armed Forces|Polish Army]] and the [[Nazi Germany|German]] [[Wehrmacht]] during the [[Invasion of Poland (1939)|Invasion of Poland]]. It was one of the last battles in European warfare in which [[cavalry]] was used on both sides. ||| ||| ||| +1 Battle of Krasnobród ||| World War II ||| The German forces were caught completely by surprise and the first squadron successfully broke through their positions, while the German infantry started a chaotic retreat towards the centre of the town, followed by the Polish cavalry using sabres and lances. The second squadron under Lt. Tadeusz Gerlecki joined the charge towards the hill. A unit of [[organic (military)|organic cavalry]] from the German 8th Infantry Division counter-charged from the hill, but was repelled in what was one of the last cavalry battles in [[World War II]]. The Polish units started a pursuit after the fleeing enemy and entered the city. Although the Poles suffered heavy losses due to machine gun fire (with Gerlecki's squadron losing all but 30 men), the town was retaken and the Poles took the headquarters of the division, together with about 100 German soldiers (including the commanding officer: General [[Rudolf Koch-Erpach]]). Forty Polish combatants previously taken prisoner by the Germans were freed. ||| Battle ||| ||| +1 Battle of Krasnokutsk–Gorodnoye ||| Great Northern War ||| The '''Battle of Krasnokutsk–Gorodnoye''' took place on February 20–22, 1709 ([[Gregorian calendar]]), in the [[Charles XII invasion of Russia|Swedish campaign]] of [[Russia]] during the [[Great Northern War|Great Northern War 1700-1721]]. The [[Sweden|Swedish]] troops were directly led by [[Charles XII|Charles XII King of Sweden]] who persecuted a force of Russians commanded by [[Karl Evald von Rönne]] from the minor battle of [[Krasnokutsk]] to the town [[Gorodnoye]] where a new battle took place. The Swedes were [[victorious]] but cancelled their offensive when the night fell. ||| ||| ||| +1 Battle of Krasny Bor ||| Eastern Front (World War II) ||| In Spain, February 10 became known as 'Black Wednesday', due to the heavy losses of the Spanish Division, which lost over 70% of the men engaged in the action. It was the most costly battle for the Spanish volunteers during their time on the [[Eastern Front (World War II)|Eastern Front]]. ||| ||| ||| +1 Battle of Kraśnik ||| Eastern Front (World War I) ||| The battle took place soon after the commencement of hostilities on the [[Eastern Front (World War I)|Eastern Front]]. In the East, late August and early September 1914 were characterized by a series of small-scale engagements between the [[Central Powers]], Austria-Hungary and [[German Empire|Germany]], and the [[Allies of World War I|Allies]], [[Kingdom of Serbia|Serbia]] and Russia. Both sides rushed to mobilize their armies and thrust them headlong toward their frontiers in order to secure their borders and advance upon enemy territory as early as possible. Most of the early clashes tended to result in Russian and Serbian victories. By August 23, Russian forces had penetrated fifty miles into [[Kingdom of Prussia|Prussia]]. Austria-Hungary had made minimal advances into Russian Poland by occupying [[Miechów]], unopposed, on August 20. ||| Initial deployment ||| ||| +1 Battle of Kringen ||| Kalmar War ||| The '''Battle of Kringen''' ({{lang-no|Slaget i Kringom}}) involved an ambush by Norwegian peasant militia of Scottish [[mercenary]] soldiers who were on their way to enlist in the Swedish army for the [[Kalmar War]]. ||| ||| ||| +1 Battle of Kujin ||| Korean War ||| The '''Battle of Kujin''' (25–26 October 1950), also known as the Battle of the Broken Bridge, took place during the United Nations (UN) offensive towards the [[Yalu River]], which followed the [[North Korea]]n invasion of [[South Korea]] at the start of the [[Korean War]]. The battle was fought between Australian forces from [[3rd Battalion, Royal Australian Regiment]] (3 RAR) and elements of the 17th Tank Brigade of the [[Korean People's Army]] over a key bridge across the [[Taeryong River]] near Kujin, North Korea. On 25 October the [[27th British Commonwealth Brigade]] had resumed their advance towards [[Pakchon]] after crossing the [[Ch'ongch'on River|Chongchon River]], with 3 RAR as the lead [[battalion]]. Arriving at Kujin, the Australians discovered that the centre span of the {{convert|300|m|yd|adj=on}} concrete bridge had been demolished by North Korean engineers, blocking their passage across the river. A [[platoon]]-sized reconnaissance patrol crossed the river using debris from the destroyed span; however, it was soon forced to withdraw by North Koreans holding the high ground. Airstrikes and artillery fire were subsequently called-in at 17:15 by the Australians as they prepared to conduct an assault. ||| ||| ||| +1 Battle of Kula Gulf ||| World War II ||| The naval '''Battle of Kula Gulf''' (Japanese: クラ湾夜戦) took place in the early hours of 6 July 1943 during [[World War II]] and was between United States and Japanese ships off the coast of [[Kolombangara]] in the [[Solomon Islands]]. ||| ||| ||| +1 Battle of Kulm ||| War of the Sixth Coalition ||| The '''Battle of Kulm''' was a [[battle]] near the town [[Chlumec (Ústí nad Labem District)|Kulm]] (Chlumec) and the village [[Přestanov]] in northern [[Bohemia]]. It was fought on 29–30 August 1813, during the [[War of the Sixth Coalition]]. 32,000 [[First French Empire|French]] troops under [[Dominique Vandamme]] attacked an army of about 50-60,000 [[Austrian Empire|Austrians]], [[Russian Empire|Russians]] and [[Kingdom of Prussia|Prussians]] under [[Alexander Ivanovich Ostermann-Tolstoy|Alexander Ostermann-Tolstoy]], but were defeated with heavy losses on both sides. ||| ||| ||| +1 Battle of Kumsong ||| Korean War ||| The '''Battle of the Kumsong River''', also known as the '''Jincheng Campaign''' ({{zh|s=金城战役|p=Jīn Chéng Zhàn Yì}}), was one of the last battles of the [[Korean War]] as well as the last large-scale battle of the war. In July 1953, after the [[Republic of Korea]] (ROK) refused to participate in peace negotiations between the [[Communist]] and [[UN]] forces, the Chinese forces launched an attack on the Kumsong River Salient at the south of the town of [[Kumsong (North Korea)|Kumsong]], scoring a victory over the [[United Nations Command|UNC]] forces. ||| ||| ||| +1 Battle of Kupres (1992) ||| Bosnian War ||| The '''Battle of Kupres''' ([[Bosnian language|Bosnian]], [[Croatian language|Croatian]], [[Serbian language|Serbian]]: ''Bitka za Kupres'') was a battle of the [[Bosnian War]], fought between the [[Bosnian Croat]] [[Territorial Defense Forces (Yugoslavia)|Territorial Defence Force]] (''Teritorijalna obrana'' – TO) supported by the [[Croatian Army]] (''Hrvatska vojska'' – HV) troops on one side and the [[Yugoslav People's Army]] (''Jugoslovenska narodna armija'' – JNA), augmented by the [[Bosnian Serb]] TO on the other at the [[Kupres]] Plateau, on 3–11 April 1992. During the fighting on 8 April the Bosnian Croat TO was reorganised as the [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO). The objective of the battle was control of the strategic Kupres Plateau, controlling a major supply route. ||| ||| ||| +1 Battle of Kursk ||| Eastern Front (World War II) ||| The '''Battle of Kursk''' was a [[Second World War]] engagement between [[Nazi Germany|German]] and [[Soviet Union|Soviet]] forces on the [[Eastern Front (World War II)|Eastern Front]] near [[Kursk]] ({{convert|450|km|disp=or|sp=uk}} south-west of [[Moscow]]) in the Soviet Union during July and August 1943. The German offensive was code-named '''Operation Citadel''' ({{lang-de|Unternehmen Zitadelle}}) and led to one of the largest [[armored warfare|armoured clashes]] in history, the [[Battle of Prokhorovka]]. The German offensive was countered by two Soviet counter-offensives, [[Operation Polkovodets Rumyantsev]] ({{lang-ru|Полководец Румянцев}}) and [[Operation Kutuzov]] ({{lang-ru|Кутузов}}). For the Germans, the battle represented the final strategic offensive they were able to mount in the Eastern Front. For the Soviets, the victory gave the [[Red Army]] the strategic initiative for the rest of the war. ||| ||| ||| +1 Battle of Kusonje ||| Croatian War of Independence ||| The '''Battle of Kusonje''' was a two-day clash fought in the village of [[Kusonje]] near the town of [[Pakrac]] on 8–9 September 1991, during the [[Croatian War of Independence]]. The battle was initiated when a platoon of the [[Croatian National Guard]] ({{lang-hr|Zbor narodne garde}} – ZNG) was ambushed by [[Croatian Serb]] forces while conducting a reconnaissance patrol. The ZNG deployed reinforcements to extract the ambushed platoon, but failed to reach them. The surviving members of the platoon held out until they ran out of ammunition and surrendered only to be killed by their captors and buried in a [[mass grave]]. ||| ||| ||| +1 Battle of Kwajalein ||| Pacific War ||| The '''Battle of Kwajalein''' was fought as part of the [[Pacific War|Pacific campaign]] of [[World War II]]. It took place from 31 January-3 February 1944, on [[Kwajalein Atoll]] in the [[Marshall Islands]]. Employing the hard-learned lessons of the [[battle of Tarawa]], the United States launched a successful twin assault on the main islands of Kwajalein in the south and [[Roi-Namur]] in the north. The Japanese defenders put up stiff resistance, although outnumbered and under-prepared. The determined defense of Roi-Namur left only 51 survivors of an original garrison of 3,500. ||| ||| ||| +1 Battle of Kyongju ||| Battle of Pusan Perimeter ||| The '''Battle of Kyongju''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from August 31 to September 15, 1950, in the vicinity of [[Kyongju]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Kyongju ||| Korean War ||| The '''Battle of Kyongju''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from August 31 to September 15, 1950, in the vicinity of [[Kyongju]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Königgrätz ||| Austro-Prussian War ||| The '''Battle of Königgrätz''' ({{lang-de|Schlacht bei Königgrätz}}), also known as the '''Battle of Sadowa''', '''Sadová''', or '''Hradec Králové''', was the decisive [[battle]] of the [[Austro-Prussian War]], in which the [[Kingdom of Prussia]] defeated the [[Austrian Empire]]. Taking place near [[Hradec Králové|Königgrätz (Hradec Králové)]] and [[Sadová|Sadowa (Sadová)]] in [[Bohemia]] on 3 July 1866, it was an example of battlefield concentration, a convergence of multiple units at the same location to trap and/or destroy an enemy force between them. ||| ||| ||| +1 Battle of Køge Bay (1710) ||| Great Northern War ||| This indecisive battle took place on 4 October 1710, during the [[Great Northern War]], in [[Køge Bay]], just south of [[Copenhagen]]. Denmark had 26 ships of the line and 5 frigates with 1808 guns, and Sweden had 21 ships of the line and several frigates with 1512 guns. The Danish ship ''Dannebroge'' exploded and of and the 550-man crew only 9 survived. The Swedish ships ''Tre Kronor'' and ''Prinsessan Ulrika Eleonora'' ran aground. Because of the weather the battle could not continue. ||| ||| ||| +1 Battle of La Ciotat ||| World War II ||| The '''Battle of La Ciotat''' was a naval engagement in August 1944 during [[World War II]] as part of [[Operation Dragoon]]. [[Allies of World War II|Allied]] forces, engaged at the main landings in [[Vichy France]], ordered a small flotilla of [[United States|American]] and [[United Kingdom|British]] warships to make a feint against the port city of [[La Ciotat]] as a diversion. The Allies hoped to draw [[Nazi Germany|German]] forces away from the main landing zones at [[Cavalaire-sur-Mer]], [[Saint-Tropez]] and [[Saint-Raphaël, Var|Saint Raphaël]]. During the operation, two German warships attacked the Allied [[flotilla]]. ||| ||| ||| +1 Battle of La Concepción ||| War of the Pacific ||| The '''Battle of Concepción''' (Spanish: ''Batalla de Concepción'') was fought on July 9 and July 10, 1882, during the Sierra Campaign of the [[War of the Pacific]]. Heavily outnumbered, the Chilean detachment of 77 men under the command of Lieutenant [[Ignacio Carrera Pinto]] was annihilated by a 1.300 Peruvian force, many of them armed with [[spear]]s, commanded by Col. [[Juan Gasto]] and [[Ambrosio Salazar]] after a 27-hour fight in the small town of Concepción in the Peruvian Andes. ||| ||| ||| +1 Battle of La Guaira (1812) ||| War of 1812 ||| The '''Battle of La Guaira''' was a naval engagement fought in the [[Caribbean Sea]] on 11 December 1812 during the [[War of 1812|war]] between [[United Kingdom|Britain]] and the [[United States]]. An American [[privateer]] captured a British [[letter of marque]] at the [[Spain|Spanish]] port of [[La Guaira]] in [[Venezuela]]. ||| ||| ||| +1 Battle of Lacolle Mills (1814) ||| War of 1812 ||| The '''Battle of Lacolle Mill''' was fought on 30 March 1814 during the [[War of 1812]]. The small garrison of a British outpost position, aided by reinforcements, fought off a large American attack. ||| ||| ||| +1 Battle of Ladysmith ||| Second Boer War ||| The '''Battle of Ladysmith''' was one of the early engagements of the [[Second Boer War]]. A large British force which had concentrated at the garrison town of [[Ladysmith, KwaZulu-Natal|Ladysmith]] launched a sortie on 30 October 1899, against Boer armies which were slowly surrounding the town. The result was a disaster for the British. The main body was driven back into the town, and an isolated detachment of 800 men was forced to surrender to Commandant De Wet. The Boers did not follow up their advantage by proceeding towards the strategically important port of Durban, and instead began a [[Siege of Ladysmith]], which was relieved after 118 days. ||| ||| ||| +1 Battle of Laing's Nek ||| First Boer War ||| The '''Battle of Laing's Nek''' was a major battle fought at [[Laing's Nek]] during the [[First Boer War]] on 28 January 1881. ||| ||| ||| +1 Battle of Lake Borgne ||| War of 1812 ||| The '''Battle of Lake Borgne''' was a battle between the [[Royal Navy]] and [[Royal Marines]] on one side and the [[U.S. Navy]] and [[U.S. Marines]] on the other in the American South theatre of the [[War of 1812]]. It occurred on December 14, 1814 on [[Lake Borgne]], and allowed the British to assault New Orleans ten days later. ||| ||| ||| +1 Battle of Lang Son (1979) ||| Sino-Vietnamese War ||| The '''Battle of Lang Son''' was fought during the [[Sino-Vietnamese War]], days after the Chinese [[People's Liberation Army]] (PLA) advanced 15 to 20 kilometers deep into the northern provinces of [[Vietnam]]. The fighting occurred primarily at the city of [[Lạng Sơn]], a few kilometers from the Sino-Vietnamese border. Although the Chinese eventually occupied Lạng Sơn and its nearby vicinities during the battle, it proved during that time that the Chinese regular units invading northern Vietnam are no match against militia and irregular Vietnamese units tenaciously harassing the Chinese advance southwards towards [[Hanoi]], Vietnam's capital city, and eventually took the Chinese forces days to occupy the city and dislodge its defenders. ||| ||| ||| +1 Battle of Langensalza (1866) ||| Austro-Prussian War ||| After declaring that he felt “trapped, like a fox indoors… [with] no choice but to bite my way out,” [[Prussia]]'s King [[Wilhelm I]] initiated the [[Austro-Prussian War]] to conquer and unite a majority of the Germanic principalities. Many small German states existed prior to 1866, and, in anticipation of war, they allied themselves with either [[Austria]] or Prussia depending on their desires and goals. Most kingdoms surrounding Prussia allied with Austria in fear of losing their autonomy to the Prussian state. As a result, this geographically isolated Prussia, boxing it against the [[Baltic Sea]], and prompted the King to make the above '''“trapped fox”''' statement. King [[George V of Hanover]] believed he could negotiate independently with the Austrians and Prussians, wasting time when he could have strengthened his forces by joining other German states. When he finally attempted to do so, it was too late. In a show of the Hanoverian naïveté, George's Foreign Minister declared that [[Otto von Bismarck|Bismarck]] would never break federal law, which insisted on maintaining a six week interval before invading another land. On 15 June 1866, King Wilhelm ordered Hanover, [[Saxony]], and [[Kassel]] to disarm at once, effectively beginning the war with Austria's allies. On 16 June, Prussian forces began moving against all three German states, with those of General [[August Karl von Goeben]] approaching Hanover. ||| Background ||| ||| +1 Battle of Langside ||| Marian civil war ||| The '''Battle of Langside''', fought on 13 May 1568, was one of the more unusual contests in Scottish history, bearing a superficial resemblance to a grand family quarrel, in which a woman fought her brother who was defending the rights of her infant son. In 1567 [[Mary, Queen of Scots]]'s short period of personal rule ended in recrimination, intrigue and disaster when, after her capture at [[battle of Carberry Hill|Carberry Hill]], she was forced to [[Act Anent the demission of the Crown in favour of our Sovereign Lord, and his Majesty's Coronation 1567|abdicate]] in favour of [[James VI]], her infant son. Mary was imprisoned in [[Loch Leven Castle]], while her Protestant half-brother, [[James Stewart, 1st Earl of Moray|James Stewart, Earl of Moray]] was appointed [[Regent]] on behalf of his nephew. In early May 1568 Mary escaped, heading west to the country of the Hamiltons, high among her remaining supporters, and the safety of [[Dumbarton Castle]] with the determination to restore her rights as queen. Mary was defeated and went into exile and captivity in England. The battle can be regarded as the start of the [[Marian civil war]]. ||| ||| ||| +1 Battle of Lanzerath Ridge ||| Battle of the Bulge ||| The '''Battle of Lanzerath Ridge''' was fought on December 16, 1944, the first day of the [[Battle of the Bulge]], near the village of [[Lanzerath]], [[Belgium]], during World War II. It was fought between two squads of 18 men belonging to an American [[ISTAR|reconnaissance platoon]], four U.S. [[artillery observer|Forward Artillery Observers]], and a battalion of about 500 German paratroopers. During a day-long confrontation, the American reconnaissance men inflicted dozens of casualties on the Germans and bottled up the advance along a key route for the [[1st SS Division Leibstandarte SS Adolf Hitler|1st SS Panzer Division]], which had been selected to spearhead the advance of the entire German [[6th Panzer Army]]. ||| ||| ||| +1 Battle of Laon ||| War of the Sixth Coalition ||| An Allied coalition attempted to complete the destruction of Napoleon's [[First French Empire|French Empire]] in 1814. France had been [[Napoleon's invasion of Russia|defeated in Russia]] in 1812 and in [[War of the Sixth Coalition|Central Europe]] in 1813. Napoleon's French Empire was now fighting for its survival. ||| Prelude ||| ||| +1 Battle of Las Cruces (1928) ||| United States occupation of Nicaragua ||| The '''Second Battle of Las Cruces''', or the '''New Year's Day Battle''', was a major engagement during the [[United States|American]] [[United States occupation of Nicaragua|occupation]] of [[Nicaragua]]. It was fought on 1 January 1928, during an expedition to destroy a [[Sandinista]] [[fortress]]. A column of [[United States Marines]] and [[National Guard (Nicaragua)|Nicaraguan National Guard]]smen were attacked by a superior force of rebels entrenched on Las Cruises Hill and, after a long battle, the Americans and Nicaraguans routed the Sandinistas and captured their positions. ||| ||| ||| +1 Battle of Latakia ||| Yom Kippur War ||| The '''Battle of Latakia''' ({{lang-ar|معركة اللاذقية}}; {{lang-he|קרב לטקיה}}) was a small but revolutionary naval battle of the [[Yom Kippur War]], fought on 7 October 1973, between [[Israel]] and [[Syria]]. It was the first naval battle in history to see combat between [[surface-to-surface missile]]-equipped [[missile boat]]s and the use of [[Electronic warfare | electronic deception]]. ||| ||| ||| +1 Battle of Le Transloy ||| Battle of the Somme ||| The '''Battle of Le Transloy''' was the last offensive of the [[Fourth Army (United Kingdom)|Fourth Army]] of the [[British Expeditionary Force (World War I)|British Expeditionary Force]] (BEF) in the 1916 [[Battle of the Somme]] in France, during the [[World War I|First World War]]. The battle was fought in conjunction with attacks by the French Tenth and Sixth armies on the southern flank and the Reserve/5th Army on the northern flank, against {{lang|de|''Heeresgruppe Rupprecht''}} ([[field marshal|Field Marshal]] [[Rupprecht, Crown Prince of Bavaria|Rupprecht of Bavaria]]) created on 28 August, from the [[1st Army (German Empire)|1st]] and [[2nd Army (German Empire)|2nd]] armies of the dissolved {{lang|de|''armeegruppe Gallwitz-Somme''}} and the [[6th Army (German Empire)|6th]] and [[7th Army (German Empire)|7th]] armies. General [[Ferdinand Foch]] the commander of ''groupe des armées du nord'' (Northern Army Group) and co-ordinator of the armies on the Somme, was unable to continue the sequential attacks by the Anglo-French armies achieved in September because persistent rain, mist and fog grounded aircraft, turned the battlefield into a swamp and greatly increased the difficulty of transporting supplies to the front over the few roads in the area and the land devastated since July. ||| ||| ||| +1 Battle of Leliefontein ||| Second Boer War ||| The '''Battle of Leliefontein''' (also known as the '''Battle of Witkloof''') was an engagement between British/Canadian and [[Boer]] forces during the [[Second Boer War]] on 7 November 1900, at the Komati River {{convert|30|km|mi}} south of [[Belfast, Mpumalanga|Belfast]] at the present day Nooitgedacht Dam. ||| ||| ||| +1 Battle of Lemnos (1913) ||| First Balkan War ||| The '''Battle of Lemnos''' ({{lang-el|Ναυμαχία της Λήμνου}}, {{lang-tr|Mondros Deniz Muharebesi}}), fought on {{OldStyleDate|18 January|1913|5 January}}, was a [[naval battle]] during the [[First Balkan War]], which defeated the second and last attempt of the [[Ottoman Empire]] to break the Greek naval blockade of the [[Dardanelles]] and reclaim supremacy over the [[Aegean Sea]] from Greece. ||| ||| ||| +1 Battle of Lerida (1642) ||| Catalan Revolt ||| The '''Battle of Lerida''' was a battle fought on October 7, 1642 during the [[Catalan Revolt]]. ||| ||| ||| +1 Battle of Leuctra ||| Peloponnesian War ||| The '''Battle of Leuctra''' ({{lang-grc-gre|Λεῦκτρα}}, ''Leûktra'') was a battle fought on July 6, 371 BC, between the [[Boeotia]]ns led by [[Thebes (Greece)|Thebans]] and the [[History of Sparta|Sparta]]ns along with their allies amidst the post-[[Corinthian War]] conflict. The battle took place in the neighbourhood of [[Leuctra]], a village in [[Boeotia]] in the territory of [[Thespiae]]. The Theban victory shattered Sparta's immense influence over the Greek peninsula which Sparta had gained since its victory in the [[Peloponnesian War]]. ||| ||| ||| +1 Battle of Leyte ||| Pacific War ||| The '''Battle of Leyte''' in the [[Pacific War|Pacific campaign]] of World War II was the amphibious invasion of the Gulf of [[Leyte]] in the [[Philippines]] by [[Military history of the United States during World War II|American]] forces and [[Military history of the Philippines during World War II|Filipino]] [[guerrilla warfare|guerrilla]]s under the command of General [[Douglas MacArthur]], who fought against the [[Imperial Japanese Army]] in the Philippines led by General [[Tomoyuki Yamashita]] from 17 October - 26 December 1944. The operation code named ''King Two'' launched the [[Philippines campaign, 1944-45|Philippines campaign of 1944–45]] for the recapture and liberation of the entire Philippine Archipelago and to end almost three years of [[Second Philippine Republic|Japanese occupation]]. ||| ||| ||| +1 Battle of Leyte Gulf ||| World War II ||| The '''Battle of Leyte Gulf''', formerly known as the '''Second Battle of the Philippine Sea''', is generally considered to be the largest naval battle of [[World War II]] and, by some criteria, possibly the [[largest naval battle in history]] ||| ||| ||| +1 Battle of Liberty ||| American Civil War ||| The '''Battle of Liberty''' (also known as the '''Battle of Blue Mills Landing''' or the '''Battle of Blue Mills''') was a battle of the [[American Civil War]] that took place on 17 September 1861, in [[Clay County, Missouri]]. Union forces unsuccessfully attempted to prevent pro-Confederate [[Missouri State Guard]]s from northern [[Missouri]] from crossing the [[Missouri River]] near the confluence with the [[Blue River (Missouri)|Blue River]] to reinforce [[Sterling Price]] at [[Battle of Lexington I|Lexington]]. ||| ||| ||| +1 Battle of Lima Site 85 ||| Laotian Civil War ||| The '''Battle of Lima Site 85''', also called '''Battle of Phou Pha Thi''', was fought as part of a military campaign waged during the [[Vietnam War]] and [[Laotian Civil War]] by the [[Vietnam People's Army]] (VPA) (then known as NVA) and the [[Pathet Lao]], against airmen of the [[United States Air Force]] [[1st Combat Evaluation Group]], elements of the [[Royal Laos Army]], Royal Thai [[Border Patrol Police]], and the [[Central Intelligence Agency]]-led [[Hmong people|Hmong]] Clandestine Army. The battle was fought on Phou Pha Thi mountain in [[Houaphanh Province]], [[Laos]], on 10 March 1968, and derives its name from the mountaintop where it was fought or from the designation of a {{convert|700|ft|msp=us}} landing strip in the valley below, and was the largest single ground combat loss of United States Air Force members during the Vietnam War. ||| ||| ||| +1 Battle of Lima Site 85 ||| Vietnam War ||| The '''Battle of Lima Site 85''', also called '''Battle of Phou Pha Thi''', was fought as part of a military campaign waged during the [[Vietnam War]] and [[Laotian Civil War]] by the [[Vietnam People's Army]] (VPA) (then known as NVA) and the [[Pathet Lao]], against airmen of the [[United States Air Force]] [[1st Combat Evaluation Group]], elements of the [[Royal Laos Army]], Royal Thai [[Border Patrol Police]], and the [[Central Intelligence Agency]]-led [[Hmong people|Hmong]] Clandestine Army. The battle was fought on Phou Pha Thi mountain in [[Houaphanh Province]], [[Laos]], on 10 March 1968, and derives its name from the mountaintop where it was fought or from the designation of a {{convert|700|ft|msp=us}} landing strip in the valley below, and was the largest single ground combat loss of United States Air Force members during the Vietnam War. ||| ||| ||| +1 Battle of Lindley's Fort ||| American Revolutionary War ||| The '''Battle of Lindley's Fort''' (July 15, 1776) was part of a campaign by [[Loyalist (American Revolution)|Loyalist]] and [[Cherokee people|Cherokee]] forces to gain control over the [[South Carolina]] backcountry from [[Patriot (American Revolution)|Patriot]] forces early in the [[American Revolutionary War]]. The Cherokees were involved because ongoing encroachment of their territory in the area had led them to [[Cherokee–American wars|take up arms]]. These activities prompted settlers to seek refuge at [[Lindley's Fort Site|Lindley's Fort]] in present-day [[Laurens County, South Carolina|Laurens County]]. A joint force of Cherokee and Loyalists adorned with Indian warpaint descended on the fort one day after about 150 militiamen arrived at the stockade fort. The defenders repulsed the attackers, and when they withdrew, made a sortie and pursued them. Two Loyalists were killed and 13 taken prisoner. ||| ||| ||| +1 Battle of Lindley's Mill ||| American Revolutionary War ||| The '''Battle of Lindley's Mill''' (also known as the '''Battle of Cane Creek''') took place in [[Orange County, North Carolina]] (now in [[Alamance County, North Carolina|Alamance County]]), on September 13, 1781, during the [[American Revolutionary War]]. The battle took its name from a mill that sat at the site of the battle on Cane Creek, which sat along a road connecting what was then the temporary state capital, [[Hillsborough, North Carolina|Hillsborough]], with [[Wilmington, North Carolina]]. ||| ||| ||| +1 Battle of Lipany ||| Hussite Wars ||| The '''Battle of Lipany''' or '''Lipan''', also called the '''Battle of Český Brod''', was fought at Lipany 40 km east of [[Prague]] on 30 May 1434 and virtually ended the [[Hussite Wars]]. An army of [[Utraquist]] nobility and [[Roman Catholic Church|Catholics]], called the Bohemian League, defeated the radical [[Taborites]] and [[Sirotci|Orphans]] (or ''Sirotci'') led by [[Prokop the Great]], the overall commander, and by [[Jan Čapek ze Sán|Jan Čapek of Sány]], the cavalry commander. ||| ||| ||| +1 Battle of Lishi ||| Chinese Civil War ||| The '''Campaign''' of Wuhe (离石战斗) was a battle fought at the [[Lishi District|Lishi]], [[Shanxi]], China, and it was a clash between the communists and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after World War II. The battle was one of the [[Chinese Civil War]] in the immediate post World War II era, and resulted in [[Communist Party of China|communist]] victory. ||| ||| ||| +1 Battle of Ljubić ||| Second Serbian Uprising ||| The '''Battle of Ljubić''' was a [[pitched battle]] between the rebelling [[Serbs]] of [[Miloš Obrenović]] and the Ottoman Turks, commanded by [[Caja-paša]] on the Ljubić hill, near [[Čačak]]. It was the largest and most significant armed engagement of the [[Second Serbian Uprising]] ||| ||| ||| +1 Battle of Llanos de Santa Juana ||| Mexican War of Independence ||| * [[Mexican War of Independence]] ||| See also ||| ||| +1 Battle of Loc Ninh ||| Vietnam War ||| The '''Battle of Lộc Ninh''' was a major battle fought during the [[Easter Offensive]] during the [[Vietnam War]], which took place in [[Bình Long Province]], South Vietnam between 4–7 April 1972. Towards the end of 1971, North Vietnamese leaders decided to launch a major offensive against South Vietnam, with the objective of destroying [[Army of the Republic of Vietnam]] (ARVN) units and capturing as much territory as possible, in order to strengthen their bargaining position in the [[Paris Peace Accords]]. On 30 March 1972, two [[North Vietnamese Army]] divisions smashed through the [[Demilitarized Zone]], marking the commencement of the Easter Offensive. They quickly overwhelmed South Vietnamese units in the [[I Corps Tactical Zone]]. With the rapid collapse of South Vietnamese forces in the northern provinces of South Vietnam, North Vietnamese and [[Viet Cong|Việt Cộng]] forces began preparing for their next offensive, targeting Bình Long Province in the [[Mekong Delta]] region. On 4 April, the Việt Cộng's 5th Division opened their attack on [[Lộc Ninh]], defended by the ARVN 9th Infantry Regiment. After three days of fighting, the vastly outnumbered South Vietnamese forces, though well supported by American air power, were forced to abandon their positions in Lộc Ninh. ||| ||| ||| +1 Battle of Lode ||| Livonian War ||| '''Battle of Lode''' was a battle fought during the [[Livonian War]], between Sweden and Russia on January 23, 1573. The battle was won by the Swedes. ||| ||| ||| +1 Battle of Long Dinh ||| Vietnam War ||| The '''Battle of Long Dinh''' was a battle of the [[Vietnam War]] that involved the [[Viet Cong|People's Liberation Armed Forces]] (''Việt Cộng'') and the [[Army of the Republic of Vietnam]] (ARVN). U.S. [[helicopter]] survelliance had spotted a large group of [[Viet Cong]] fighters assembling in a forest glade near Long Dinh. General [[Nguyen Khanh|Nguyễn Khánh]] immediately rushed his [[heavy infantry]] forces there, using APCs. ||| ||| ||| +1 Battle of Long Island ||| American Revolutionary War ||| The '''Battle of Long Island''', also known as the '''Battle of Brooklyn''' or the '''Battle of Brooklyn Heights''', fought on August 27, 1776, was a defeat for the [[Continental Army]] under General George Washington and the beginning of a successful campaign that gave the British control of the strategically important [[New York City|city of New York]]. In the [[American Revolutionary War]] it was the first major battle to take place after the United States declared independence in July 4, 1776. In terms of troop deployment and fighting, it was the largest battle of the entire war. ||| ||| ||| +1 Battle of Long Khanh ||| Vietnam War ||| The '''Battle of Long Khanh''' (6–7 June 1971) was fought during the [[Vietnam War]] between elements of [[1st Australian Task Force]] (1 ATF) and the [[Viet Cong]] and [[North Vietnamese Army]] during Operation Overlord. The fighting saw Australian infantry from [[3rd Battalion, Royal Australian Regiment]] (3 RAR) attack a heavily fortified communist base camp in [[Long Khánh Province|Long Khanh Province]], while [[Centurion tank]]s providing close support crushed many bunkers and their occupants. Regardless, the Viet Cong fought hard to delay the Australian advance and although the bunker system was subsequently captured, along with a second system further south, the Australians suffered a number of casualties and the loss of a [[UH-1 Iroquois]] helicopter. With the Australians unable to concentrate sufficient combat power to achieve a decisive result, the bulk of the Viet Cong and North Vietnamese force successfully withdrew intact, although they likely sustained heavy casualties in the process. ||| ||| ||| +1 Battle of Longewala ||| Indo-Pakistani War of 1971 ||| The '''Battle of Longewala''' (4–7 December 1971) was one of the first major [[engagement (military)|engagements]] in the Western Sector during the [[Indo-Pakistani War of 1971]], fought between assaulting [[Pakistan Army|Pakistani]] forces and [[Indian army|Indian]] defenders at the [[Indian Army|Indian border post]] of [[Longewala]], in the [[Thar Desert]] of the Rajasthan [[States and territories of India|state]] in India. ||| ||| ||| +1 Battle of Longue-Pointe ||| American Revolutionary War ||| The '''Battle of Longue-Pointe''' was an attempt by [[Ethan Allen]] and a small force of American and Quebec militia to capture [[Montreal]] from British forces on September 25, 1775, early in the [[American Revolutionary War]]. Allen, who had been instructed only to raise militia forces among the local inhabitants, had long had thoughts of taking the lightly defended city. When he reached the southern shore of the [[St. Lawrence River]] with about 110 men, he seized the opportunity to try. Major [[John Brown of Pittsfield|John Brown]], who Allen claimed was supposed to provide additional forces, did not appear as they had planned, isolating Allen and his men on the north side of the river. ||| ||| ||| +1 Battle of Los Ángeles ||| War of the Pacific ||| The '''Battle of Los Ángeles''' was a military action fought on March 12, 1880 between the Chilean and Peruvian armies during the [[Tacna and Arica Campaign]] of the [[War of the Pacific]]. The Chilean forces under Commander in chief Manuel Baquedano assaulted and defeated the Allied stronghold guided by Andres Gamarra garrisoned at Los Angeles hill top. ||| ||| ||| +1 Battle of Losecoat Field ||| Wars of the Roses ||| The '''Battle of Losecoat Field''' (also known as the '''Battle of [[Empingham]]''') was fought on 12 March 1470, during the [[Wars of the Roses]]. Spellings of 'Losecoat' vary, with 'Losecote' and 'Loose-coat' also seen. ||| ||| ||| +1 Battle of Lostwithiel ||| First English Civil War ||| The '''Battles of Lostwithiel''' or '''Lostwithiel Campaign''', took place near [[Lostwithiel]] and [[Fowey]] in Cornwall during the [[First English Civil War]] in 1644. They resulted in victory for the Royalists commanded by [[Charles I of England|King Charles]] over the Parliamentarians commanded by the [[Robert Devereux, 3rd Earl of Essex|Earl of Essex]]. ||| ||| ||| +1 Battle of Loznica (1941) ||| World War II ||| The '''Battle of Loznica''' involved an attack on the [[German Army (Wehrmacht)|German]] garrison of that town by the [[Jadar Chetnik Detachment]] on 31 August 1941. Following the [[World War II]] [[Nazi Germany|German]]-led [[Axis powers|Axis]] [[invasion of Yugoslavia]] in April 1941, the [[Kingdom of Yugoslavia]] was partitioned. At the time, [[Loznica]] was part of the [[Territory of the Military Commander in Serbia|German-occupied territory of Serbia]], which included [[Serbia proper]], with the addition of the northern part of [[Kosovo]] (around [[Kosovska Mitrovica]]), and the [[Banat (1941–44)|Banat]]. ||| ||| ||| +1 Battle of Lođa ||| Kosovo War ||| The '''Battle of Lođa''' ({{lang-sr|Бој на лођи, ''Boj na Lođi''}}, {{lang-al|Beteja e Loxhes}}) was a battle that occurred in 1998, during the [[Kosovo War]]. The [[Kosovo Liberation Army]] (KLA) and the [[Armed Forces of the Republic of Kosova]] (FARK) fought the Yugoslav army and Serb security forces. ||| ||| ||| +1 Battle of Ludford Bridge ||| Wars of the Roses ||| The '''Battle of Ludford Bridge''' was a largely bloodless battle fought in the early years of the [[Wars of the Roses]]. It took place on 12 October 1459, and resulted in a setback for the [[Yorkists]]. Although this seemed to be a triumph for the rival [[House of Lancaster|Lancastrians]] at the time, they had thrown away their advantage within six months. ||| ||| ||| +1 Battle of Luzon ||| World War II ||| The '''Battle of Luzon''', fought 9 January – 15 August 1945, was a land battle of the [[Asiatic-Pacific Theater|Pacific Theater of Operations]] of [[World War II]] by the [[Allies of World War II|Allied forces]] of the U.S., its colony [[Philippines|the Philippines]], and allies against forces of the [[Empire of Japan]]. The battle resulted in a U.S. and Filipino victory. The Allies had taken control of all strategically and economically important locations of Luzon by March 1945, although pockets of Japanese resistance [[Japanese holdout|held out]] in the mountains until the [[Victory over Japan Day|unconditional surrender of Japan]]. While not the highest in US casualties, it is the highest net casualty battle US forces fought in World War II, with 192,000 to 205,000 Japanese combatants dead (mostly from starvation and disease), 10,000 American combatants killed, and between 120,000 to 140,000 Filipino civilians and combatants killed. ||| ||| ||| +1 Battle of Luzzara ||| War of the Spanish Succession ||| The '''Battle of Luzzara''' was a battle of the [[War of the Spanish Succession]], fought on 15 August 1702 near [[Luzzara]], Italy between forces of [[Kingdom of France|France]] under [[Louis Joseph, duc de Vendôme]], and forces of [[Habsburg Austria|Austria]] under [[Prince Eugene of Savoy]]. ||| ||| ||| +1 Battle of Lwów (1939) ||| World War II ||| The '''Battle of Lwów''' (sometimes called the ''Siege of Lwów'') was a [[World War II]] battle for the control over the [[Poland|Polish]] city of [[Lviv|Lwów]] (now Lviv, [[Ukraine]]) between the [[Polish Army]] and the invading [[Wehrmacht]] and the [[Red Army]]. The city was seen as the key to the so-called [[Romanian Bridgehead]] and was defended at all cost. ||| ||| ||| +1 Battle of Maastricht ||| World War II ||| The '''Battle of Maastricht''' was one of the first battles that took place during the German Campaign on the [[Western Front (World War II)|Western Front]] during [[World War II]]. [[Maastricht]] was a key city in order to capture the Belgian [[Fort Eben-Emael]] and split the allied armies in half. ||| ||| ||| +1 Battle of Machias ||| American Revolutionary War ||| The '''Battle of Machias''' (also known as the '''Battle of the ''Margaretta''''') was the second naval engagement of the [[American Revolutionary War]], the [[Battle off Fairhaven]] being the first. It took place on June 11–12, 1775, in and around the port of [[Machias, Maine|Machias]] in what is now eastern [[Maine]], and resulted in the capture by [[Patriot (American Revolution)|Patriot]] militia of a British schooner. ||| ||| ||| +1 Battle of Machias (1777) ||| American Revolutionary War ||| The '''Battle of Machias''' (August 13–14, 1777) was an amphibious assault on the [[Massachusetts]] town of [[Machias, Maine|Machias]] (in present-day eastern [[Maine]]) by [[Kingdom of Great Britain|British]] forces during the [[American Revolutionary War]]. Local militia aided by Indian allies successfully prevented British troops from landing. The raid, led by Commodore Sir [[George Collier]] was executed in an attempt to head off a planned second assault on [[Fort Cumberland (Canada)|Fort Cumberland]], which had [[Battle of Fort Cumberland|been besieged]] in November 1776. The British forces landed below Machias, seized a ship, and raided a storehouse. ||| ||| ||| +1 Battle of Mackinac Island (1814) ||| War of 1812 ||| The '''Battle of Mackinac Island''' (pronounced ''Mackinaw'') was a [[United Kingdom of Great Britain and Ireland|British]] victory in the [[War of 1812]]. Before the war, [[Fort Mackinac]] had been an important [[United States|American]] trading post in the [[Straits of Mackinac|straits]] between [[Lake Michigan]] and [[Lake Huron]]. It was important for its influence and control over the [[Native Americans in the United States|Native American]] tribes in the area, which was sometimes referred to in historical documents as '[[Michilimackinac]]'. ||| ||| ||| +1 Battle of Madonna dell'Olmo ||| War of the Austrian Succession ||| The '''Battle of Madonna dell'Olmo''' or '''Battle of Cuneo''' was fought on the outskirts of [[Cuneo]] on 30 September 1744, in the [[War of the Austrian Succession]]. The battle ended in a victory for the armies of [[Spain]] and [[France]] over the [[Kingdom of Sardinia]] but it did not advance the victors' campaign. ||| ||| ||| +1 Battle of Madras ||| War of the Austrian Succession ||| The '''Battle of Madras''' or '''Fall of Madras''' took place in September 1746 during the [[War of the Austrian Succession]] when a [[Early Modern France|French]] force attacked and captured the city of [[Chennai|Madras]] from its [[Kingdom of Great Britain|British]] garrison. ||| ||| ||| +1 Battle of Magersfontein ||| Second Boer War ||| Lord Methuen failed to perform adequate reconnaissance in preparation for the impending battle, and was unaware that Boer ''Veggeneraal'' (Combat General) [[De la Rey]] had entrenched his forces at the foot of the hills rather than the forward slopes as was the accepted practice. This allowed the Boers to survive the initial British artillery bombardment; when the British troops failed to deploy from a compact formation during their advance, the defenders were able to inflict heavy casualties. The [[Highland Brigade (Scottish)|Highland Brigade]] suffered the worst casualties, while on the Boer side, the Scandinavian Corps was destroyed. The Boers attained a tactical victory and succeeded in holding the British in their advance on Kimberley. The battle was the second of three battles during what became known as the [[Black Week#Second Boer War|Black Week]] of the [[Second Boer War]]. ||| ||| ||| +1 Battle of Maidstone ||| Second English Civil War ||| The '''Battle of Maidstone''' (1 June 1648) was fought in the [[Second English Civil War]] and was a victory for the attacking [[Roundhead|parliamentarian troops]] over the defending [[Cavalier|Royalist]] forces. ||| ||| ||| +1 Battle of Majadahonda ||| Peninsular War ||| In the '''Battle of Majadahonda ''' on 11 August 1812, a British-Portuguese cavalry force under Brigadier-General [[Benjamin d'Urban]] fought a French cavalry division led by [[General of Division]] [[Anne-François-Charles Trelliard]]. The French scored an initial success by routing a Portuguese cavalry brigade and seizing three artillery pieces. Later, the French withdrew when reinforcements arrived in this [[Peninsular War]] action. [[Majadahonda]] is located {{convert|16|km|mi|1}} and Las Rozas is {{convert|17|km|mi|1}} northwest of Madrid. ||| ||| ||| +1 Battle of Majuba Hill ||| First Boer War ||| The '''Battle of Majuba Hill''' (near [[Volksrust]], [[South Africa]]) on 27 February 1881 was the main and decisive battle of the [[First Boer War]]. It was a resounding victory for the [[Boers]]. Major-General Sir [[George Pomeroy Colley]] occupied the summit of the hill on the night of 26–27 February 1881. His motive for occupying the hill remains unclear. The Boers believed that he may have been attempting to outflank their positions at Laing's Nek. The hill was not considered scale-able by the Boers for military purposes and thus it may have been Colley's attempt to emphasize British power and strike fear into the Boer camp. ||| ||| ||| +1 Battle of Malakoff ||| Crimean War ||| The '''Battle of Malakoff''' was a major battle during the [[Crimean War]], fought between French-British forces against Russia on 8 September 1855 as a part of the [[Siege of Sevastopol (1854)|Siege of Sevastopol]]. The French army under [[Marie Edme Patrice Maurice de MacMahon|General MacMahon]] successfully stormed the Malakoff redoubt, whereas a simultaneous British attack on the Redan to the south of the Malakoff was repulsed. In one of the war's defining moments, the French ''[[zouave]]'' [[Eugène Libaut]] raised the French flag on the top of the Russian redoubt. The Battle of Malakoff resulted in the fall of [[Sevastopol]] on 9 September, bringing the 11-month siege to an end. ||| ||| ||| +1 Battle of Malcolm's Mills ||| War of 1812 ||| The '''Battle of Malcolm's Mills''' was a battle during the [[War of 1812]] in which a force of [[United States|American]] [[cavalry]] overran and scattered a force of [[Canada|Canadian]] and British [[militia]]. The battle was fought on November 6, 1814, near the village of Oakland in [[Brant, Ontario|Brant County]], Ontario, and was the last of a series of battles fought by American Brigadier General [[Duncan McArthur]] on an extended raid into [[Upper Canada]], known variously as McArthur's Raid or Dudley's Raid. ||| ||| ||| +1 Battle of Malvern Hill ||| American Civil War ||| The '''Battle of Malvern Hill''', also known as the '''Battle of Poindexter's Farm''', was fought on July 1, 1862 between the [[Confederate States of America|Confederate]] [[Army of Northern Virginia]], led by [[General (CSA)|Gen.]] [[Robert E. Lee]], and the [[Union (Civil War)|Union]] [[Army of the Potomac]] under [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]]. It was the final battle of the [[Seven Days Battles]] during the [[American Civil War]], taking place on a {{convert|130|ft|m|adj = on}} elevation of land known as [[Malvern Hill]], near the Confederate capital of [[Richmond, Virginia]] and just one mile (1.6 km) from the [[James River]]. More than fifty thousand soldiers from each side took part, using more than two hundred pieces of artillery and three warships. ||| ||| ||| +1 Battle of Manila (1896) ||| Philippine Revolution ||| The '''Battle of Manila of 1896''' occurred in [[Manila]] in then Spanish colony of the [[Philippines]] during the [[Philippine Revolution]]. [[Katipunan]] under [[Andres Bonifacio]] attempted to take the city but the attempt failed, and Bonifacio retreated to the city's outskirts. The [[Battle of San Juan del Monte]] was joined a day later when Bonifacio attempted to capture the San Juan's [[Gunpowder magazine|powder magazine]], but this too failed. ||| ||| ||| +1 Battle of Manila (1945) ||| Pacific War ||| The '''Battle of Manila''' ([[Tagalog Language|Tagalog]]: ''Laban ng Maynila ng 1945''), also known as the '''Liberation of Manila''', was a military conflict part of the [[Philippines Campaign (1944–45)|1945 Philippine campaign]] fought by the American and [[Commonwealth of the Philippines|Filipino]] forces against the [[Empire of Japan]] in Manila from 3 February - 3 March 1945. The one-month battle, which culminated in a terrible bloodbath and complete devastation of the city, was the scene of the worst [[urban warfare|urban fighting]] in the [[Pacific War|Pacific theater]], and ended almost three years of Japanese military occupation in the Philippines (1942–1945). The city's capture was marked as General [[Douglas MacArthur]]'s key to victory in the campaign of reconquest. ||| ||| ||| +1 Battle of Manresa (1810) ||| Peninsular War ||| The Spanish troops remained at large and fell upon the town of [[Manresa]] at the beginning of April. After several days of sparring they drove Schwarz and his German soldiers out of the town with heavy losses. Caro was wounded on 2 April and was replaced by Campoverde. The Spanish force included 2,000 regulars, 2,300 local [[miquelets]] (Catalan Militia), and [[Francesc Rovira i Sala]]'s band of 3,000 miquelets. This minor disaster caused [[Marshal of France|Marshal]] [[Pierre Augereau]] to call off Imperial troops which were threatening [[Tarragona]]. Schwarz's brigade belonged to [[Marie François Rouyer]]'s division while Caro's division was part of [[Henry O'Donnell, 1st Count of la Bisbal|Henry O'Donnell's]] Army of Catalonia. Manresa is located {{convert|40|km|mi|0}} northwest of Barcelona. The actions occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Mansilla ||| Peninsular War ||| In the '''Battle of Mansilla''' or '''Battle of Mansilla de las Mulas''' on 30 December 1808 an [[First French Empire|Imperial French]] corps led by [[Nicolas Soult]] caught up with a [[Kingdom of Spain|Spanish]] corps commanded by [[Pedro Caro, 3rd Marquis of la Romana]]. Soult's cavalry under [[Jean Baptiste Marie Franceschi-Delonne]] overran la Romana's [[rear guard]] led by General Martinengo. [[Mansilla de las Mulas]] is a town located {{convert|17|km|mi|0}} southeast of [[León, Spain]]. The combat occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Mantinea (418 BC) ||| Peloponnesian War ||| The '''Battle of Mantinea''' of 418 BC was a significant engagement in the [[Peloponnesian War]]. [[Sparta]] and its allies defeated an army led by [[Argos]] and [[Athens]]. ||| ||| ||| +1 Battle of Marash ||| Turkish War of Independence ||| The '''Battle of Marash''' ({{lang-tr|Maraş Muharebesi}}) was a battle that took place in the early winter of 1920 between the [[French Third Republic|French]] forces occupying the city of [[Kahramanmaraş|Maraş]] in the [[Ottoman Empire]] and the [[Turkish National Forces]] linked to [[Mustafa Kemal Atatürk]]. It was the first major battle of the [[Turkish War of Independence]], and the three-week-long engagement in the city ultimately forced the French to abandon and retreat from Marash and resulted in a Turkish massacre of [[Armenians|Armenian]] refugees who had just been repatriated to the city following the [[Armenian Genocide]]. The controversial retreat, along with the massacre that took place under French watch, was subsequently dubbed the 'Marash Affair.' ||| ||| ||| +1 Battle of Marathon ||| Greco-Persian Wars ||| The '''Battle of Marathon''' ([[Greek language|Greek]]: {{lang|grc|Μάχη τοῦ Μαραθῶνος}}, ''Machē tou Marathōnos'') took place in 490 BC, during the [[first Persian invasion of Greece]]. It was fought between the citizens of [[History of Athens|Athens]], aided by [[Plataea]], and a [[Achaemenid Empire|Persian]] force commanded by [[Datis]] and [[Artaphernes (son of Artaphernes)|Artaphernes]]. The battle was the culmination of the first attempt by Persia, under King [[Darius I of Persia|Darius I]], to subjugate [[Ancient Greece|Greece]]. The Greek army decisively defeated the more numerous Persians, marking a turning point in the [[Greco-Persian Wars]]. ||| ||| ||| +1 Battle of Marihueñu ||| Arauco War ||| '''Battle of Marihueñu''' was one of the early decisive battles of the [[Arauco War]] between the [[Mapuche]] leader [[Lautaro (toqui)|Lautaro]] and the Spanish general [[Francisco de Villagra]] on 23 February 1554. {{cite web|url=http://www.educarchile.cl/Portal.Base/Web/VerContenido.aspx?ID=132738|title=Lautaro: leyenda épica del sur ||| ||| ||| +1 Battle of María ||| Peninsular War ||| The '''Battle of María''' (15 June 1809) saw a small Spanish army led by [[Joaquín Blake y Joyes]] face an [[First French Empire|Imperial French]] corps under [[Louis Gabriel Suchet]]. After an inconclusive contest earlier in the day, Suchet's cavalry made a decisive charge that resulted in a French victory. Though the Spanish right wing was crushed, the rest of Blake's army got away in fairly good order after abandoning most of its artillery. [[María de Huerva]] is located {{convert|17|km|mi|1}} southwest of [[Zaragoza]], [[Spain]]. The action occurred during the [[Peninsular War]] which was part of the larger struggle known as the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Masan ||| Battle of Pusan Perimeter ||| The '''Battle of Masan''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces, which took place early in the [[Korean War]] between August 5 and September 19, 1950, in the vicinity of [[Masan]] and the [[Naktong River]] in [[South Korea]]. It was part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the UN after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops were able to repel the repeated attacks of two North Korean divisions. ||| ||| ||| +1 Battle of Masan ||| Korean War ||| The '''Battle of Masan''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces, which took place early in the [[Korean War]] between August 5 and September 19, 1950, in the vicinity of [[Masan]] and the [[Naktong River]] in [[South Korea]]. It was part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the UN after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops were able to repel the repeated attacks of two North Korean divisions. ||| ||| ||| +1 Battle of Maya ||| Peninsular War ||| The '''Battle of Maya''' (25 July 1813) was a battle between French and British forces during the [[Peninsular War]] (1808–1814). ||| ||| ||| +1 Battle of Mecca (1916) ||| Arab Revolt ||| The '''Battle of Mecca''' occurred in the [[Muslim]] holy city of [[Mecca]] in June and July 1916. On June 10, the [[Sharif of Mecca]], [[Hussein bin Ali, Sharif of Mecca|Hussein bin Ali]], the leader of the [[Banu Hashim]] clan started a revolt against the [[Ottoman Empire|Ottoman]] [[Caliphate]] from this city. The Battle of Mecca was part of the [[Arab Revolt]] of [[World War I]]. ||| ||| ||| +1 Battle of Medina de Rioseco ||| Peninsular War ||| The '''Battle of Medina de Rioseco''', also known as the '''Battle of Moclín''', was fought during the [[Peninsular War]] on 14 July 1808 when a combined body of [[Spain|Spanish]] militia and [[Regular army|regulars]] moved to rupture the French line of communications to [[Madrid]]. [[Joaquín Blake y Joyes|General Joaquín Blake's]] [[Army of Galicia]], under joint command with [[Gregorio de la Cuesta|General Gregorio de la Cuesta]], was routed by [[Jean-Baptiste Bessières|Marshal Bessières]] after a badly coordinated but stubborn fight against the French [[army corps|corps]] north of [[Valladolid]]. ||| ||| ||| +1 Battle of Meiktila and Mandalay ||| Burma Campaign ||| The concurrent '''Battle of Meiktila''' and '''Battle of Mandalay''' were decisive engagements near the end of the [[Burma Campaign]]. Collectively, they are sometimes referred to as the '''Battle of Central Burma'''. Despite logistical difficulties, the Allies were able to deploy large armoured and mechanised forces in Central Burma, and also possessed [[air supremacy]]. Most of the Japanese forces in Burma were destroyed during the battles, allowing the Allies to later recapture the capital, [[Yangon|Rangoon]], and reoccupy most of the country with little organised opposition. ||| ||| ||| +1 Battle of Merdjayoun ||| World War II ||| The '''Battle of Merdjayoun''' took place during the [[Syria-Lebanon Campaign]] of [[World War II]] from 19–24 June 1941. It involved Australian troops defending a position against Vichy French attackers at and around Merdjayoun. They held a pass which could have allowed the [[Vichy French]] forces into the [[British Mandate of Palestine]], with dire results. The [[Australian 7th Division|7th Australian Division]]—commanded by Major-General [[Arthur Samuel Allen|Arthur 'Tubby' Allen]]—was reinforced by units from the [[6th Australian Division]]. ||| ||| ||| +1 Battle of Merville Gun Battery ||| Normandy landings ||| The '''Battle of Merville Gun Battery''' occurred on 6 June 1944, as part of the [[Normandy landings]] during the [[World War II|Second World War]]. [[Allies of World War II|Allied]] intelligence believed the [[Merville Gun Battery]] was composed of heavy-[[caliber|calibre]] guns that could threaten the British landings at [[Sword Beach]], only {{convert|8|mi}} away. ||| ||| ||| +1 Battle of Merville Gun Battery ||| World War II ||| The '''Battle of Merville Gun Battery''' occurred on 6 June 1944, as part of the [[Normandy landings]] during the [[World War II|Second World War]]. [[Allies of World War II|Allied]] intelligence believed the [[Merville Gun Battery]] was composed of heavy-[[caliber|calibre]] guns that could threaten the British landings at [[Sword Beach]], only {{convert|8|mi}} away. ||| ||| ||| +1 Battle of Midtskogen ||| World War II ||| The '''Battle of Midtskogen''' was the battle fought on the night between 9 and 10 April 1940 during the [[World War II|Second World War]] between a [[Nazi Germany|German]] raiding party and an improvised Norwegian force. The site of the battle was Midtskogen farm, situated approximately {{convert|5|km|mi|abbr=on}} west of the town [[Elverum]] at the mouth of the [[Østerdalen|Østerdalen valley]] in southern [[Norway]]. The invading German troops were out on a raid to capture the [[List of Norwegian monarchs|Norwegian King]], [[Haakon VII of Norway|Haakon VII]], and [[Nygaardsvold's Cabinet|his cabinet]] and thereby forcing Norway into submission. After a short battle, the German force withdrew, having lost its commander in the fighting. ||| ||| ||| +1 Battle of Midway ||| Pacific War ||| The operation, like the earlier attack on Pearl Harbor, sought to eliminate the United States as a strategic power in the Pacific, thereby giving Japan a free hand in establishing its [[Greater East Asia Co-Prosperity Sphere]]. The Japanese hoped another demoralizing defeat would force the U.S. to capitulate in the [[Pacific War]] and thus ensure Japanese dominance in the Pacific. Luring the American [[aircraft carrier]]s into a trap and occupying Midway was part of an overall 'barrier' strategy to extend Japan's defensive perimeter, in response to the [[Doolittle Raid|Doolittle air raid]] on Tokyo. This operation was also considered preparatory for further attacks against [[Fiji]], [[Samoa]], and [[Hawaii]] itself. ||| ||| ||| +1 Battle of Midway ||| World War II ||| The {{nihongo|'''Battle of Midway'''}} was a crucial and decisive naval battle in the [[Pacific Ocean theater of World War II|Pacific Theater]] of [[World War II]]. ||| ||| ||| +1 Battle of Miechów ||| January Uprising ||| The '''Battle of Miechów''' took place on February 17, 1863, near [[Miechów]] in [[Małopolska]], Poland (at the time [[Congress Poland]]), during the [[January Uprising]]. ||| ||| ||| +1 Battle of Mikołów ||| Invasion of Poland ||| The '''Battle of Mikołów''' ({{lang-pl|Bitwa pod Mikolowem, Bitwa wyrska}}) refers to the border engement on September 1 and 2, 1939, that took place in the area of the town of Mikołów, which is located in the Polish part of [[Upper Silesia]], during the early stages of the [[Invasion of Poland (1939)|Invasion of Poland]] in the [[Second World War]]. ||| ||| ||| +1 Battle of Mile Hill ||| American Civil War ||| The '''Battle of Mile Hill''' was a [[cavalry]] [[skirmish]] during the [[American Civil War]], that took place just north of [[Leesburg, Virginia|Leesburg]], [[Virginia]], on September 2, 1862. It preceded the occupation of the town by the [[Army of Northern Virginia]] just prior to its crossing of the [[Potomac River]] starting the [[Maryland Campaign]]. ||| ||| ||| +1 Battle of Mileto ||| War of the Third Coalition ||| The '''Battle of Mileto''' was a battle of the [[War of the Third Coalition]]. It occurred on 28 May 1807 in [[Calabria]] during an attempt by the [[House of Bourbon|Bourbon]] [[Kingdom of Sicily]] to re-conquer its possessions in continental Italy, known as the [[Kingdom of Naples]]. The battle ended in a victory for French forces under general [[Jean Reynier]]. ||| ||| ||| +1 Battle of Mill ||| Battle of the Netherlands ||| The '''Battle of Mill''' was a day long struggle in and around the [[Netherlands|Dutch]] village of Mill on the first day of the [[Battle of the Netherlands|invasion of the Netherlands]]. Although the Germans eventually broke through, they had suffered heavy casualties and were delayed in their advance by one day. ||| ||| ||| +1 Battle of Mobile Bay ||| American Civil War ||| The '''Battle of Mobile Bay''' of August 5, 1864, was an engagement of the [[American Civil War]] in which a Federal fleet commanded by [[Rear Admiral (United States)|Rear Admiral]] [[David Farragut|David G. Farragut]], assisted by a contingent of soldiers, attacked a smaller Confederate fleet led by [[Admiral]] [[Franklin Buchanan]] and three forts that guarded the entrance to [[Mobile Bay]]. ||| ||| ||| +1 Battle of Modder River ||| Second Boer War ||| The '''Battle of Modder River''' (known in [[Afrikaans]] as ''Slag van die Twee Riviere'', which translates as 'Battle of the two rivers') was an engagement in the [[Second Boer War|Boer War]], fought at [[Modder River, Northern Cape|Modder River]], on 28 November 1899. A [[British Empire|British]] column under [[Paul Sanford Methuen, 3rd Baron Methuen|Lord Methuen]], that was attempting to relieve the [[Siege of Kimberley|besieged town of Kimberley]], forced Boers under General [[Piet Cronje]] to retreat to [[Battle of Magersfontein|Magersfontein]], but suffered heavy casualties themselves. ||| ||| ||| +1 Battle of Modena (1799) ||| French Revolutionary Wars ||| The '''Battle of Modena''' (12 June 1799) saw a [[First French Republic|Republican French]] army commanded by [[Jacques MacDonald]] attack a [[Habsburg Austria]]n covering force led by [[Prince Friedrich Franz Xaver of Hohenzollern-Hechingen]]. The outnumbered Austrians were defeated but in an accidental encounter, MacDonald was painfully wounded by two saber cuts. The action occurred during the [[War of the Second Coalition]], part of a larger conflict known as the [[French Revolutionary Wars]]. [[Modena]] is a city in northern Italy about {{convert|40|km|mi|0}} northwest of [[Bologna]]. ||| ||| ||| +1 Battle of Modena (1799) ||| War of the Second Coalition ||| The '''Battle of Modena''' (12 June 1799) saw a [[First French Republic|Republican French]] army commanded by [[Jacques MacDonald]] attack a [[Habsburg Austria]]n covering force led by [[Prince Friedrich Franz Xaver of Hohenzollern-Hechingen]]. The outnumbered Austrians were defeated but in an accidental encounter, MacDonald was painfully wounded by two saber cuts. The action occurred during the [[War of the Second Coalition]], part of a larger conflict known as the [[French Revolutionary Wars]]. [[Modena]] is a city in northern Italy about {{convert|40|km|mi|0}} northwest of [[Bologna]]. ||| ||| ||| +1 Battle of Mogadishu (1993) ||| Operation Gothic Serpent ||| The '''Battle of Mogadishu''' or '''Day of the Rangers''' ({{lang-so|''Maalintii Rangers''}}), was part of [[Operation Gothic Serpent]] and was fought on 3 and 4 October 1993, in [[Mogadishu]], [[Somalia]], between forces of the [[United States]] supported by [[United Nations Operation in Somalia II|UNOSOM II]], and Somali [[militia]]men loyal to the self-proclaimed president-to-be [[Mohamed Farrah Aidid]] who had support from armed civilian fighters. ||| ||| ||| +1 Battle of Mogadishu (1993) ||| Somali Civil War ||| In January 1991, [[President of Somalia|Somalian President]] [[Siad Barre|Mohammed Siad Barre]] was overthrown in the ensuing [[Somali Civil War|civil war]] by a coalition of opposing clans. which later divided into two armed factions: one led by Ali Mahdi Muhammad, who became president, and the other by Mohamed Farrah Aidid. In total, there were four opposition groups that competed for political control – the USC, [[Somali Salvation Democratic Front]] (SSDF), [[Somali Patriotic Movement]] (SPM) and [[Somali Democratic Movement]] (SDM). In June 1991, a ceasefire was agreed to, but failed to hold. A fifth group, the [[Somali National Movement]] (SNM), later declared independence in the Somalia's northwest portion in June. The SNM renamed the unrecognized territory [[Somaliland]], with its leader [[Abdirahman Ahmed Ali Tuur]] selected as president. ||| Background ||| ||| +1 Battle of Mogadishu (2009) ||| Somali Civil War ||| [[Sharif Ahmed|Sheikh Sharif Ahmed]] assumed the presidency on 31 January 2009, which marked the start of a [[War in Somalia (2009-)|new phase]] in the [[Somali Civil War]] as Islamist hardliners such al-Shabaab and newly created Hizbul Islam vowed to continue the war. ||| Prelude ||| ||| +1 Battle of Mohács (1687) ||| Great Turkish War ||| The [[Great Turkish War]] began in July 1683 with an attack on Vienna by the Ottoman army. The siege was broken by the [[Battle of Vienna]] on 12 September 1683, won by the combined forces of the [[Holy Roman Empire|Holy Roman Empire of the German Nations]] and the [[Polish–Lithuanian Commonwealth]], under the overall command of the King of Poland, [[John III Sobieski]], who led the Polish forces. From September 1683 the initiative passed to the imperial troops. In the following years, the Imperial Habsburg armies under Charles of Lorraine drove the Osmans back, conquering from them many fortresses (such as [[Esztergom]], [[Vác]], [[Pest, Hungary|Pest]]). After the [[Battle of Buda (1686)|Battle of Buda]] they laid siege to and took over the former Hungarian capital of Buda. At the end of 1686, the Ottomans made peace overtures; however, the Imperial Habsburgs now saw a chance to conquer the whole of Hungary and the peace overtures were rejected. ||| Background ||| ||| +1 Battle of Moiry Pass ||| Bruce campaign in Ireland ||| The '''Battle of Moiry Pass''' was a military engagement between a Scots-Irish army commanded by [[Edward Bruce]], brother of [[Robert I of Scotland|Robert Bruce]], king of Scotland and a [[Hiberno-Norman]] force. It was a battle of the [[First War of Scottish Independence]] and more precisely the [[Bruce campaign in Ireland|Irish Bruce Wars]]. Edward Bruce attacked a garrison of soldiers from the [[Lordship of Ireland]], as part of his attempt to revive the [[High Kingship of Ireland]]. Bruce considered the battle a great success but was one of the very few victories that he gained. ||| ||| ||| +1 Battle of Mollwitz ||| War of the Austrian Succession ||| The '''Battle of Mollwitz''' was fought by [[Kingdom of Prussia|Prussia]] and [[Habsburg Monarchy|Austria]] on 10 April 1741, during the early stages of the [[War of the Austrian Succession]]. It was the first battle of the new Prussian King [[Frederick II of Prussia|Frederick II]], in which both sides made numerous military blunders but Frederick the Great still managed to attain victory. This battle cemented his authority over the newly conquered territory of [[Silesia]] and gave him valuable military experience. ||| ||| ||| +1 Battle of Monte Castello ||| World War II ||| The '''Battle of Monte Castello''' (also called '''Operation Encore''') was an engagement which took place from 25 November 1944 to 21 February 1945 during the [[Italian Campaign (World War II)|Italian campaign]] of [[World War II]]. It was fought between the Allied forces advancing into northern Italy and dug-in German defenders. The battle marked the [[Brazilian Expeditionary Force]]'s entry into the land war in Europe. Starting in November 1944, fierce combat dragged on for three months, ending on 21 February 1945. Six Allied attacks were mounted against the German forces, four of which were strategic failures. Both sides sustained large casualties due to several factors, including the extremely low temperatures existing at that time. ||| ||| ||| +1 Battle of Monte Santiago ||| Cisplatine War ||| The naval '''Battle of Monte Santiago''' was a naval battle on 7–8 April 1827, between the [[Argentine Navy]] and [[Brazilian Navy|Brazilian Imperial Navy]], during the [[Cisplatine War]]. It was a decisive Brazilian victory, with the allied forces losing its best ships. The battle is highlighted by Argentine historians as one of the most courageous and ferocious naval encounters in the country's history. On that day, Sgt. Mayor Francis Drummond (engaged to [[William Brown (admiral)|Admiral Brown]]'s daughter Elisa) died on deck, firing his marooned ship's cannons instead of retreating. ||| ||| ||| +1 Battle of Montgomery's Tavern ||| Upper Canada Rebellion ||| The '''Battle of Montgomery's Tavern''' was an incident in the [[Upper Canada Rebellion]]. The abortive revolutionary insurrection inspired by [[William Lyon Mackenzie]] was crushed by [[United Kingdom of Great Britain and Ireland|British]] authorities and [[Canada|Canadian]] volunteer units near a tavern on [[Yonge Street]], [[Toronto]]. ||| ||| ||| +1 Battle of Montmeló ||| Catalan Revolt ||| The '''Battle of Montmeló''' took place on 28 March 1642 in [[Montmeló]], [[Catalonia]] during the [[Catalan Revolt]]. A Franco-Catalan army under the command of [[Philippe de La Mothe-Houdancourt]] fought and defeated a smaller [[Kingdom of Spain|Spanish]] force under [[Gerolamo Caracciolo]]. ||| ||| ||| +1 Battle of Moore's Mill ||| American Civil War ||| The '''Battle of Moore's Mill''' was an [[American Civil War]] [[battle]] that took place in Central [[Missouri]] on July 28, 1862 along Auxvasse Creek near modern day [[Calwood Township, Callaway County, Missouri|Calwood]]. This engagement, the [[Battle of Kirksville]] a week later, and the [[Battle of Compton's Ferry]] would drive the main Southern recruiters from northern Missouri. ||| ||| ||| +1 Battle of Moorefield ||| American Civil War ||| The '''Battle of Moorefield''' was a [[cavalry]] battle in the [[American Civil War]], which took place on August 7, 1864, at [[Moorefield, West Virginia]], as part of the [[Valley Campaigns of 1864]]. [[Brigadier General#United States|Brig. Gen.]] [[William W. Averell]] led Union troops to a victory over Brig. Gen. [[John McCausland]] and his Confederate troops in [[Hardy County, West Virginia]]. ||| ||| ||| +1 Battle of Morotai ||| Pacific War ||| The '''Battle of Morotai''', part of the [[Pacific War]], began on 15 September 1944, and continued until the end of the war in August 1945. The fighting started when United States and Australian forces landed on the southwest corner of [[Morotai]], a small island in the [[Dutch East Indies|Netherlands East Indies]] (NEI), which the [[Allies of World War II|Allies]] needed as a base to support the [[Philippines campaign (1944–45)|liberation of the Philippines]] later that year. The invading forces greatly outnumbered the island's [[Empire of Japan|Japanese]] defenders and secured their objectives in two weeks. Japanese reinforcements landed on the island between September and November, but lacked the supplies needed to effectively attack the Allied defensive perimeter. Intermittent fighting continued until the end of the war, with the Japanese troops suffering heavy loss of life from disease and starvation. ||| ||| ||| +1 Battle of Moscow ||| World War II ||| The '''Battle of Moscow''' ({{lang-ru|Битва за Москву}}) is the name given by Soviet historians to two periods of strategically significant fighting on a {{convert|600|km|mi|abbr=on}} sector of the [[Eastern Front (World War II)|Eastern Front]] during [[World War II]]. It took place between October 1941 and January 1942. The Soviet defensive effort frustrated [[Adolf Hitler|Hitler]]'s attack on [[Moscow]], capital of the [[Union of Soviet Socialist Republics]] (USSR) and the largest Soviet city. Moscow was one of the primary [[Strategic goal (military)|military]] and political objectives for [[Axis forces]] in their [[Operation Barbarossa|invasion of the Soviet Union]]. ||| ||| ||| +1 Battle of Mosul (2004) ||| Iraq War ||| The '''Battle for Mosul''' was a battle fought during the [[Iraq War]] in 2004 for the capital of the [[Ninawa Governorate]] in northern [[Iraq]] that occurred concurrently to fighting in [[Fallujah]]. ||| ||| ||| +1 Battle of Mouquet Farm ||| Battle of the Somme ||| The '''Battle of Mouquet Farm''', also known as the '''Fighting for Mouquet Farm''' was part of the [[Battle of the Somme (1916)|Battle of the Somme]] and took place as part of the [[Battle of Pozières]] {{nowrap|(23 July – 3 September).}} The Fighting for Mouquet Farm began on 10 August with attacks by the [[I Anzac Corps]] and it was captured by the [[3rd Canadian Division]] of the [[Canadian Corps]] on 16 September. The farm was lost to a German counter-attack, before being re-captured on 26 September, during an attack by the [[11th (Northern) Division]] as part of the [[Battle of Thiepval Ridge]] {{nowrap|(26–28 September),}} in which No. 16 Section of the 6th [[East Yorkshire Regiment|East Yorkshire]] (Pioneers), smoked out the last German defenders. ||| ||| ||| +1 Battle of Mukden ||| Russo-Japanese War ||| The {{nihongo|'''Battle of Mukden'''|奉天会戦 |Hōten kaisen}}, one of the largest [[land battle]]s to be fought before [[World War I]] and the last and the most decisive major land [[battle]] of the [[Russo-Japanese War]], was fought from 20 February to 10 March 1905 between Japan and Russia near [[Mukden]] in [[Manchuria]]. The city is now called [[Shenyang]], the capital of [[Liaoning]] [[Provinces of China|province]] in [[China]]. ||| ||| ||| +1 Battle of Munda Point ||| Pacific War ||| The '''Battle of Munda Point''' was a battle, from 22 July-4 August 1943, between primarily [[United States Army]] and [[Imperial Japanese Army]] forces during the [[Battle of New Georgia|New Georgia Campaign]] in the [[Solomon Islands]] in the [[Pacific War]]. In the battle, U.S. forces captured a Japanese airfield constructed at Munda Point on [[New Georgia]]. ||| ||| ||| +1 Battle of Málaga (1704) ||| War of the Spanish Succession ||| The '''Battle of Málaga''' (or '''Vélez-Málaga''') was the largest naval battle in the [[War of the Spanish Succession]]. It took place on 24 August 1704, south of Málaga, Spain. ||| ||| ||| +1 Battle of Mạo Khê ||| First Indochina War ||| The '''Battle of Mạo Khê''' ({{lang-vi|Mạo Khê}}), occurring from March 23 to March 28, 1951, was a significant engagement in the [[First Indochina War]] between the [[French Union]] and the [[Viet Minh|Việt Minh]]. The French Union forces, led by [[World War II]] hero [[Jean de Lattre de Tassigny]], inflicted a defeat on Việt Minh forces, which were commanded by General [[Võ Nguyên Giáp]]. The French Union victory, however, was not decisive and the Việt Minh would attack again shortly afterwards. ||| ||| ||| +1 Battle of Naas ||| Irish Rebellion of 1798 ||| One of the first engagements of the [[Irish Rebellion of 1798|1798 rebellion]], a force of over 1,000 rebels, led by [[Michael Reynolds (United Irishmen)|Michael Reynolds]] attacked [[Naas]], the strongest Crown garrison in [[County Kildare]], following the successful mobilisation of [[United Irishmen]], [[Defenders (Ireland)|Defenders]] and rebels throughout county Kildare on the night of 23 May. The garrison at Naas numbered approximately 250 men, supplemented by a number of local [[yeomen]], some of whom had already deserted to the rebels. Importantly, the defenders had some cannon. ||| Background ||| ||| +1 Battle of Nalapani ||| Anglo-Nepalese War ||| The '''Battle of Nalapani''' was the first battle of the [[Anglo-Nepalese War]] of 1814–1816, fought between the forces of the British [[East India Company]] and [[Nepal]], then ruled by the [[Gorkha Kingdom|House of Gorkha]]. The battle took place around the Nalapani fort, near [[Dehradun]], which was placed under siege by the British between 31 October and 30 November 1814. The fort's garrison was commanded by Captain [[Balbhadra Kunwar]], while Major-General [[Rollo Gillespie]], who had previously fought in the [[Invasion of Java (1811)|Battle of Java]], was in charge of the attacking British troops. Gillespie was killed on the first day of the siege while rallying his men and despite considerable odds, both in terms of numbers and firepower, Balbhadra and his 600-strong garrison successfully held out against more than 3,000 British troops for over a month. ||| ||| ||| +1 Battle of Nan'ao Island ||| Chinese Civil War ||| The '''Battle of Nan'ao island''' (Nan'ao Dao, 南澳岛) was a battle fought between the [[Kuomintang|nationalists]] (Kuomintang) and the [[communist]]s during the [[Chinese Civil War]] and communists emerged as the victors. [[Nan'ao Island]] (Nan'ao Dao, 南澳岛) of [[Shantou|Swatow]] (now known as Shantou) remained in the [[Kuomintang|nationalist]] hands after [[Guangdong]] fell into communist hands. On March 3, 1950, the 121st [[Division (military)|division]] of the 41st Army of the [[People's Liberation Army]] attacked the island. Faced with such overwhelming enemy, the defenders stood no chance and after eight hours of fighting, the communists succeeded in wiping out the entire nationalist garrison and thus taking the island. 27 nationalist troops were killed, and 1348 were captured, including the [[Kuomintang|nationalist]] local commander, the deputy commander-in-chief of the 1st Cantonese Column Wu Qijun (吴起骏), and the deputy commander of the nationalist 58th [[Division (military)|division]] Guo Mengxiong (郭梦熊). A total of 1304 pieces of firearms were also captured. ||| ||| ||| +1 Battle of Nanchang ||| Second Sino-Japanese War ||| The '''Battle of Nanchang''' ({{zh|t=南昌會戰,|s=南昌会战)}} was a major battle between the Chinese [[National Revolutionary Army]] and the Japanese [[Imperial Japanese Army]] in the [[Second Sino-Japanese War]]. It was the first major conflict to occur following the [[Battle of Wuhan]]. ||| ||| ||| +1 Battle of Nancy (1944) ||| World War II ||| The '''Battle of Nancy''' in September 1944 was a 10-day battle on the [[Western Front (World War II)|Western Front]] of [[World War II]] in which the [[U.S. Third Army|U.S. 3rd Army]] defeated [[Nazi Germany|German]] forces defending the approaches to [[Nancy, France]] and crossings over the [[Moselle River]] to the north and south of the city. The battle resulted in U.S. forces fighting their way across the Moselle and liberating Nancy. ||| ||| ||| +1 Battle of Nanking ||| Second Sino-Japanese War ||| The '''Battle of Nanking''' or '''Battle of Nanjing''' was fought in early December 1937 during the [[Second Sino-Japanese War]] between the [[National Revolutionary Army]] of China and the [[Imperial Japanese Army]] for control of [[Nanking]], the capital of the [[Republic of China (1912–49)|Republic of China]]. ||| ||| ||| +1 Battle of Nanpéng Island ||| Chinese Civil War ||| '''Battle of Nanpéng Island''' (南鹏岛战斗) was a battle fought between the [[Kuomintang|nationalists]] and the [[communist]]s during the [[Chinese Civil War]] and resulted in the [[communist]] victory. After [[Guangdong]] fell into [[communist]] hands, a detachment of the [[Kuomintang|nationalist]] troops held out on Nanpéng Island (南鹏岛) of [[Yangjiang]]. This remnant of the [[Kuomintang|nationalist]] force proved to be a major headache the [[communist]]s because the island is strategically located between the Pearl River mouth and the [[Qiongzhou Strait]], controlling the shipping line that was vital to the local economy. ||| ||| ||| +1 Battle of Narva (1944) ||| Eastern Front (World War II) ||| The campaign took place in the northern section of the [[Eastern Front (World War II)|Eastern Front]] and consisted of two major phases: the [[Battle for Narva Bridgehead]] (February to July 1944) A number of foreign volunteers and local [[20 SS|Estonian conscripts]] participated in the battle as part of the German forces. By giving its support to the [[Hague Conventions (1899 and 1907)|illegal]] German conscription call, the [[National Committee of the Republic of Estonia|Estonian resistance movement]] had hoped to recreate a national army and restore the independence of the country. ||| ||| ||| +1 Battle of Narva (1944) ||| World War II ||| The '''Battle of Narva'''{{refn|Estonian: ''Narva lahing''; German: ''Schlacht bei Narva''; Russian: ''Битва за Нарву''|group=nb}} was a military campaign between the German Army Detachment 'Narwa' and the Soviet [[Leningrad Front]] fought for possession of the strategically important [[Ida-Viru|Narva Isthmus]] on 2 February – 10 August 1944 during [[World War II]]. ||| ||| ||| +1 Battle of Nasiriyah ||| 2003 invasion of Iraq ||| The '''Battle of Nasiriyah''' was fought between the US [[2nd Marine Expeditionary Brigade]] and [[Iraqi Army|Iraqi forces]] from 23 March to 2 April 2003 during the US-led [[2003 invasion of Iraq|invasion of Iraq]]. [[Nasiriyah]] is a city which lies along the banks of the [[Euphrates River]] in [[Dhi Qar Province]], about {{convert|225|mi|km|abbr=on|sp=us}} southeast of [[Baghdad]]. Its population is made up almost entirely of [[Shiite Muslim]]s. On the night of 24–25 March, the bulk of the Marines of [[Regimental Combat Team 1]] passed through the city over the bridges and attacked north towards Baghdad. However fighting continued in the city until 1 April when Iraqi resistance in the city was defeated. ||| ||| ||| +1 Battle of Nasiriyah ||| Iraq War ||| * Much of playwright and [[Iraq War]] veteran [[Sean Huze]]'s play [[The Sandstorm]] draws on his experiences and those of his comrades during and immediately following their unit's ([[2nd LAR]]) involvement in the Battle of Nasiriyah. ||| In popular culture ||| ||| +1 Battle of Nassau ||| American Revolutionary War ||| The '''Battle of Nassau''' (March 3–4, 1776) was a naval action and [[Amphibious warfare|amphibious assault]] by [[United States|American]] forces against the [[Kingdom of Great Britain|British]] port of [[Nassau, Bahamas]], during the [[American Revolutionary War]] (also known as the American War of Independence). It is considered the first cruise and one of the first engagements of the newly established [[Continental Navy]] and the [[Continental Marines]], the progenitors of the [[United States Navy]] and [[United States Marine Corps|Marine Corps]]. The action was also the Marines' first amphibious landing. It is sometimes known as the '''Raid of Nassau'''. ||| ||| ||| +1 Battle of Nauplia (1822) ||| Greek War of Independence ||| The '''Battle of Nauplia''' was a series of naval engagements lasting from 8 to 13 September ([[Old Style and New Style dates|O.S.]]) 1822 in the [[Argolic Gulf|Gulf of Nauplia]] (Argolic Gulf) between the [[Greek Fleet]] and the [[Ottoman Fleet]] during the [[Greek War of Independence]]. ||| ||| ||| +1 Battle of Neuburg (1800) ||| War of the Second Coalition ||| The '''Battle of Neuburg''' occurred on 27 June 1800 in the south [[Holy Roman Empire|German]] state of [[Electorate of Bavaria|Bavaria]], on the southern bank of the [[Danube river]]. Neuburg is located on the Danube between [[Ingolstadt]] and [[Donauwörth]]. This battle occurred late in the [[War of the Second Coalition]] (1798–1802), the second war between [[French First Republic|Revolutionary France]] and the conservative European monarchies, which included at one time or another [[Great Britain|Britain]], [[Habsburg Austria]], [[Russia]] (until late 1799), the [[Ottoman Empire]] (Turkey), [[Portugal]] and [[Naples]]. After a series of reverses, several of the allies withdrew from the Coalition. By 1800, Napoleon's military victories in northern Italy challenged Habsburg supremacy there. French victories in the upper Danubian territories opened a route along that river to Vienna. ||| ||| ||| +1 Battle of Neuwied (1797) ||| French Revolutionary Wars ||| The '''Battle of Neuwied''' (18 April 1797) saw [[Lazare Hoche]] lead part of the French [[Army of Sambre-et-Meuse]] against [[Franz von Werneck]]'s Austrian army. The French attack surprised their enemies and broke through their lines. Aside from 1,000 men killed and wounded, Austrian losses included at least 3,000 prisoners, 24 artillery pieces, 60 vehicles, and five [[Colours, standards and guidons|colors]]. For their part, the French lost 2,000 men killed, wounded, and captured. The losses were in vain because [[Napoleon Bonaparte]] signed the [[Preliminaries of Leoben]] with Austria the same day. The armistice halted the fighting so that both sides could negotiate a peace. The action occurred during the [[War of the First Coalition]], part of the [[French Revolutionary Wars]]. ||| ||| ||| +1 Battle of Nevel ||| Livonian War ||| The '''Battle of Nevel''' was fought during the [[Livonian War]] between the [[Kingdom of Poland (1385–1569) |Kingdom of Poland]] and the [[Tsardom of Russia]] on August 19, 1562. ||| ||| ||| +1 Battle of New Bern ||| American Civil War ||| The '''Battle of New Bern''' (also known as the '''Battle of New Berne''') was fought on 14 March 1862, near the city of [[New Bern, North Carolina|New Bern]], [[North Carolina]], as part of the [[Burnside's North Carolina Expedition|Burnside Expedition]] of the [[American Civil War]]. The US Army's Coast Division, led by Brigadier General [[Ambrose E. Burnside]] and accompanied by armed vessels from the [[North Atlantic Blockading Squadron]], were opposed by an undermanned and badly trained Confederate force of North Carolina soldiers and militia led by Brigadier General [[Lawrence O'B. Branch]]. Although the defenders fought behind breastworks that had been set up before the battle, their line had a weak spot in its center that was exploited by the attacking Federal soldiers. When the center of the line was penetrated, many of the militia broke, forcing a general retreat of the entire Confederate force. General Branch was unable to regain control of his troops until they had retreated to [[Kinston, North Carolina|Kinston]], more than 30 miles (about 50 km) away. New Bern came under Federal control, and remained so for the rest of the war. ||| ||| ||| +1 Battle of New Bern (1864) ||| American Civil War ||| The '''Battle of New Bern''' was fought during the [[American Civil War]] from February 1–3, 1864. The battle resulted in a failure to Confederate forces trying to recapture the coastal town of [[New Bern, North Carolina|New Bern]] which had been [[Battle of New Bern|lost to the Union Army]] in 1862. ||| ||| ||| +1 Battle of New Market ||| American Civil War ||| The '''Battle of New Market''' was a [[battle]] fought on May 15, 1864, in [[Virginia]] during [[Valley Campaigns of 1864]] in the [[American Civil War]]. A makeshift Confederate army of 4100 men, which included cadets from the [[Virginia Military Institute]] (VMI), forced [[Union army|Union]] Major General [[Franz Sigel]] and his army out of the [[Shenandoah Valley]]. ||| ||| ||| +1 Battle of Newtownbutler ||| Williamite War in Ireland ||| The '''Battle of Newtownbutler''' took place near [[Enniskillen]] in [[County Fermanagh]], [[Ireland]], in 1689 and was part of the [[Williamite War in Ireland]] between the forces of [[William and Mary]] and [[Jacobitism|those of King James II]]. ||| ||| ||| +1 Battle of Nghĩa Lộ ||| First Indochina War ||| The '''Battle of Nghia Lo''' (Vietnamese: '''Nghĩa Lô'''), was fought between the [[French army]] and the [[Viet Minh]] during the [[First Indochina War]]. On 3 October, the Viet Minh launched an attack on French forces in the town of Nghia Lo. The attack was repelled, after a week of fighting. A year later on 17 October, the Viet Minh launched another attack on Nghia Lo and suceceded in driving out the remaining French from the area. ||| ||| ||| +1 Battle of Noemfoor ||| World War II ||| The '''Battle of Noemfoor''' was a battle of [[World War II]] that took place on the island of [[Noemfoor]], in [[Dutch New Guinea]], between 2 July and 31 August 1944. United States and Australian forces attacked to capture [[Empire of Japan|Japanese]] bases on the island. ||| ||| ||| +1 Battle of North Borneo ||| World War II ||| The '''Battle of North Borneo''' took place during the [[World War II|Second World War]] between [[Allies of World War II|Allied]] and Japanese forces. Part of the wider [[Borneo Campaign (1945)|Borneo campaign]] of the [[Pacific War]], it was fought between 10 June and 15 August 1945 in [[North Borneo]] (later known as [[Sabah]]). The battle involved a series of amphibious landings by Australian forces on various points on the mainland around [[Brunei Bay]] and upon islands situated around the bay. Japanese opposition to the landings was sporadic initially, although as the campaign progressed a number of considerable clashes occurred and both sides suffered relatively significant casualties. Ultimately, however, the Australians were successful in seizing control of the region, although to a large extent the strategic gains that possession of North Borneo provided the Allies with were ultimately negated by the sudden conclusion of the war in August 1945. ||| ||| ||| +1 Battle of Novoazovsk ||| War in Donbass ||| Insurgents affiliated with the [[Donetsk People's Republic]] (DPR), backed by [[2014 Russian military intervention in Ukraine|Russian troops]], opened a new front in the [[War in Donbass]] on 25 August 2014, when they attacked the Ukrainian government-controlled city of [[Novoazovsk]] in southern [[Donetsk Oblast|Donetsk]]. Government forces were forced to retreat from Novoazovsk to the city of [[Mariupol]], leaving DPR forces in control. ||| ||| ||| +1 Battle of Nykarleby ||| Finnish War ||| The '''Battle of Nykarleby''' was fought between [[Sweden]] and the [[Russian Empire]] during the [[Finnish War]] of 1808–1809. ||| ||| ||| +1 Battle of Nà Sản ||| First Indochina War ||| The '''Battle of Nà Sản''' was fought between [[French Union]] forces and the Nationalist forces of the [[Việt Minh]] at Nà Sản, [[Sơn La Province]], during the [[First Indochina War]] for control of the [[T'ai|T'ai]] region (Northwest territory). ||| ||| ||| +1 Battle of Núi Bop ||| Sino-French War ||| The '''Battle of Nui Bop''' (3–4 January 1885) was a French victory during the [[Sino-French War]]. The battle was fought to clear Chinese forces away from the French forward base at Chu, and was an essential preliminary to the [[Lang Son Campaign]] in February 1885. ||| ||| ||| +1 Battle of Ocaña ||| Peninsular War ||| The '''Battle of Ocaña''' was fought on 19 November 1809 between [[France|French]] forces under Marshal [[Nicolas Jean de Dieu Soult]], Duke of Dalmatia and King Joseph Bonaparte and the [[Army of Spain (Peninsular War)|Spanish army]] under Juan Carlos de Aréizaga, which suffered its greatest single defeat in the [[Peninsular War]]. General [[Juan Carlos de Aréizaga]]'s [[Kingdom of Spain|Spanish]] army of 51,000 lost nearly 19,000 killed, wounded, prisoners and deserters, mostly due to the French use of their cavalry. The strategic consequences were also devastating, as it destroyed the only force capable of defending southern Spain; the area was overrun over the winter in the Andalusia campaign. ||| ||| ||| +1 Battle of Occhiobello ||| Neapolitan War ||| The '''Battle of Occhiobello''' was fought on 8 April – 9 April 1815 and was the turning point of the [[Neapolitan War]]. [[Joachim Murat]], King of [[Kingdom of Naples|Naples]] was repulsed by an [[Austrian Empire|Austrian]] force under the command of [[Johann Maria Philipp Frimont|Johann Frimont]] whilst trying to cross the bridge over the [[Po River]] at [[Occhiobello]]. Following the battle, the Austrians would not lose an engagement for the remainder of the war. ||| ||| ||| +1 Battle of Ogdensburg ||| War of 1812 ||| The '''Battle of Ogdensburg''' was a battle of the [[War of 1812]]. The [[United Kingdom of Great Britain and Ireland|British]] gained a victory over the [[United States|Americans]] and captured the village of [[Ogdensburg, New York]]. Although small in scale, it removed the American threat to British supply lines for the remainder of the war. ||| ||| ||| +1 Battle of Olszynka Grochowska ||| November Uprising ||| The '''battle of Olszynka Grochowska''' was the largest battle of the [[November Uprising]] and biggest in Europe since the [[battle of Waterloo]].{{Citation needed|date=February 2007}} It was fought between the armies of Poland and Russia on 25 February in the woods near [[Grochów]], at the eastern outskirts of [[Warsaw]]. ||| ||| ||| +1 Battle of Oravais ||| Finnish War ||| The '''Battle of Oravais''' ([[Finnish language|Finnish]]: ''Oravaisten taistelu'', [[Swedish language|Swedish]]: ''Slaget vid Oravais'') is sometimes regarded as the turning point of the [[Finnish War]]: the last chance for [[Sweden]] to turn the war to her advantage. It was the bloodiest battle of the conflict, which some historians attribute to the [[exhaustion]], [[resignation]] and [[despair (emotion)|desperation]] of the [[Swedish army]]: it was losing the war. ||| ||| ||| +1 Battle of Ormoc Bay ||| Pacific War ||| The '''Battle of Ormoc Bay''' was a series of air-sea battles between [[Imperial Japan]] and the United States in the [[Camotes Sea]] in the [[Philippines]] from 11 November-21 December 1944, part of the [[Battle of Leyte]] in the [[Pacific War|Pacific campaign]] of [[World War II]]. The battles resulted from Japanese operations to reinforce and resupply their forces on [[Leyte (island)|Leyte]] and U.S. attempts to interdict them. ||| ||| ||| +1 Battle of Orthez ||| Peninsular War ||| The '''Battle of Orthez''' (27 February 1814) saw the [[Anglo-Portuguese Army]] under Field Marshal [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Marquess of Wellington]] defeat a [[First French Empire|French]] army led by Marshal [[Nicolas Jean de Dieu Soult|Nicolas Soult]] in southern France near the end of the [[Peninsular War]]. ||| ||| ||| +1 Battle of Orthez 1569 ||| French Wars of Religion ||| '''The Battle of Orthez''' was fought during the [[French Wars of Religion]], at [[Orthez]] on Wednesday August 24, 1569. [[Huguenot]] forces under the leadership of [[Gabriel, comte de Montgomery|Gabriel de Montgomery]] defeated Royalist forces under General [[Terride]] in [[Kingdom of Navarre|French Navarre]]. Following the battle, Huguenot forces killed many of their Catholic prisoners. ||| ||| ||| +1 Battle of Osijek ||| Croatian War of Independence ||| The '''Battle of Osijek''' ({{lang-hr|Bitka za Osijek}}) was the artillery bombardment of the [[Croatia]]n city of [[Osijek]] by the [[Yugoslav People's Army]] (JNA) which took place from August 1991 to June 1992 during the [[Croatian War of Independence]]. Shelling peaked in late November and December 1991, then diminished in 1992 after the [[Vance plan]] was accepted by the combatants. [[Airstrike]]s and attacks by JNA infantry and armored units against targets in the city accompanied the bombardment, which caused approximately 800 deaths and resulted in a large portion of the city's population leaving. Croatian sources estimated that 6,000 artillery shells were fired against Osijek over the period. ||| ||| ||| +1 Battle of Ostrach ||| War of the Second Coalition ||| The '''Battle of Ostrach''', also called the '''Battle by Ostrach''', occurred on 20–21 March 1799. It was the first battle of the [[War of the Second Coalition]]. The battle resulted in the victory of the Austrian forces, under the command of [[Archduke Charles, Duke of Teschen|Archduke Charles]], over the French forces, commanded by [[Jean Baptiste Jourdan]]. ||| ||| ||| +1 Battle of Ostrołęka (1807) ||| War of the Fourth Coalition ||| The '''Battle of Ostrołęka''' was fought on 16 February 1807 between [[First French Empire]] troops under [[General of Division]] [[Anne Jean Marie René Savary]] and Russian soldiers under [[Lieutenant General]] [[Ivan Essen]]. Weather conditions caused both sides to go into winter quarters immediately after the battle, which occurred during the [[War of the Fourth Coalition]], part of the [[Napoleonic Wars]]. [[Ostrołęka]] is located in the northeast part of modern [[Poland]], but in 1807 it belonged to the [[Kingdom of Prussia]]. ||| ||| ||| +1 Battle of Oudenarde ||| War of the Spanish Succession ||| The '''Battle of Oudenarde''' (or '''Oudenaarde''') was a key battle in the [[War of the Spanish Succession]] fought on 11 July 1708 between the forces of Great Britain, the Dutch Republic and the Holy Roman Empire on the one side and those of France on the other. It took place at [[Oudenaarde]] (now in Belgium) and was a decisive victory for the allies. ||| ||| ||| +1 Battle of P'ohang-dong ||| Korean War ||| The '''Battle of P'ohang-dong''' was an engagement between [[United Nations]] and [[North Korean]] forces early in the [[Korean War]], with fighting continuing from 5–20 August 1950 around the town of [[P'ohang-dong]], [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after their forces were able to drive off an attempted offensive by three North Korean divisions in the mountainous eastern coast of the country. ||| ||| ||| +1 Battle of Palembang ||| Pacific War ||| The '''Battle of Palembang''' was a battle of the [[Pacific War|Pacific theatre]] of [[World War II]]. It occurred near [[Palembang]], on [[Sumatra]], on 13–15 February 1942. The [[Royal Dutch Shell]] oil refineries at nearby [[Pladju]] (or Pladjoe) were the major objectives for the [[Empire of Japan]] in the Pacific War, because of an oil [[embargo]] imposed on Japan by the United States, the Netherlands, and the United Kingdom. With the area's abundant fuel supply and airfield, Palembang offered significant potential as a military base to both the [[Allies of World War II|Allies]] and the Japanese. ||| ||| ||| +1 Battle of Palembang ||| World War II ||| The '''Battle of Palembang''' was a battle of the [[Pacific War|Pacific theatre]] of [[World War II]]. It occurred near [[Palembang]], on [[Sumatra]], on 13–15 February 1942. The [[Royal Dutch Shell]] oil refineries at nearby [[Pladju]] (or Pladjoe) were the major objectives for the [[Empire of Japan]] in the Pacific War, because of an oil [[embargo]] imposed on Japan by the United States, the Netherlands, and the United Kingdom. With the area's abundant fuel supply and airfield, Palembang offered significant potential as a military base to both the [[Allies of World War II|Allies]] and the Japanese. ||| ||| ||| +1 Battle of Palermo ||| Franco-Dutch War ||| The naval '''Battle of Palermo''' took place on 2 June 1676 during the [[Franco-Dutch War]], between a [[France|French]] force led by [[Abraham Duquesne]], sent to support a revolt in the city of [[Messina]] against the Spanish rule in [[Sicily]], and a Spanish force supported by a Dutch maritime expedition force. Largely because the Dutch and Spanish ships were at bay making repairs from an earlier battle, the French fleet destroyed four Spanish and three Dutch ships with [[fireship]]s. The French victory, however, achieved little, and the French forces in Sicily were recalled on 1 January, 1678. ||| ||| ||| +1 Battle of Paris (1814) ||| War of the Sixth Coalition ||| The '''Battle of Paris''' was fought on March 30–31, 1814 between the Sixth Coalition—consisting of [[Russian Empire|Russia]], [[Austrian Empire|Austria]], and [[Kingdom of Prussia|Prussia]]—and the [[First French Empire|French Empire]]. After a day of fighting in the suburbs of [[Paris]], the French surrendered on March 31, ending the [[War of the Sixth Coalition]] and forcing [[Emperor of the French|Emperor]] [[Napoleon]] to abdicate and go into exile. ||| ||| ||| +1 Battle of Pasir Panjang ||| Battle of Singapore ||| The '''Battle of Pasir Panjang''', which took place between 13 and 14 February 1942, was part of the final stage of the [[Empire of Japan]]'s [[Battle of Singapore|invasion]] of Singapore during [[World War II]]. The battle was initiated upon the advancement of elite [[Imperial Japanese Army]] forces towards [[Pasir Panjang]] at Pasir Panjang Ridge on 13 February. ||| ||| ||| +1 Battle of Pasir Panjang ||| World War II ||| The '''Battle of Pasir Panjang''', which took place between 13 and 14 February 1942, was part of the final stage of the [[Empire of Japan]]'s [[Battle of Singapore|invasion]] of Singapore during [[World War II]]. The battle was initiated upon the advancement of elite [[Imperial Japanese Army]] forces towards [[Pasir Panjang]] at Pasir Panjang Ridge on 13 February. ||| ||| ||| +1 Battle of Passchendaele ||| Western Front (World War I) ||| The '''Battle of Passchendaele''', also known as the '''Third Battle of Ypres''', was a campaign of the [[World War I|First World War]], fought by the [[Allies of World War I|Allies]] against the [[German Empire]].{{refn|''Passchendaele'' {{IPAc-en|ˈ|p|æ|ʃ|ən|d|eɪ|l}} is the common English title. The British ''Battle Nomenclature Committee'' called the Flanders offensives of 1917, The Battle of Messines 1917 {{nowrap|(7–14 June)}} and The Battles of Ypres 1917 {{nowrap|(31 July – 10 November).}}{{sfn|Edmonds|1948|p=iii}} The German Official History used the term Third Flanders Battle ({{lang|de|''Dritte Flandernschlacht''}}) and the French the Second Battle of Flanders ({{lang|fr|''2ème Bataille des Flandres''}}).{{sfn|Terraine|1977|p=301}}|group='Note'}} The battle took place on the [[Western Front (World War I)|Western Front]], from July to November 1917, for control of the ridges south and east of the [[Belgium|Belgian]] city of [[Ypres]] in [[West Flanders]], as part of a strategy decided by the Allies at conferences in November 1916 and May 1917. [[Passendale|Passchendaele]] lay on the last ridge east of Ypres, {{convert|5|mi|km}} from a railway junction at [[Roeselare|Roulers]], which was vital to the supply system of the [[4th Army (German Empire)|German 4th Army]].{{refn|The series of battles are known to the British as The Battle of Messines 1917 {{nowrap|(7–14 June),}} The Battle of Pilckem Ridge {{nowrap|(31 July – 2 August),}} the Battle of Langemarck {{nowrap|(16–18 August),}} The Battle of Menin Road Ridge {{nowrap|(20–25 September),}} the Battle of Polygon Wood {{nowrap|(26 September – 3 October)}} the Battle of Broodseinde (4 October), the Battle of Poelcappelle (9 October), the First Battle of Passchendaele (12 October) and the Second Battle of Passchendaele {{nowrap|(26 October – 10 November)}} and referred to in German works as ({{lang|de|''Kampf um den Wijtschatebogen''}}) (The Battle of the Wijtschate Salient) and the ({{lang|de|''Flandernschlacht''}}) (Battle of Flanders) in five periods, First Battle of Flanders {{nowrap|(31 July – 9 August),}} Second Battle of Flanders {{nowrap|(9–25 August),}} Third Battle of Flanders {{nowrap|(20 September – 8 October)}} Fourth Battle of Flanders {{nowrap|(9–21 October)}} and Fifth Battle of Flanders {{nowrap|(22 October – 5 December).}}{{sfn|Edmonds|1948|p=iii}}{{sfn|Sheldon|2007|p=xiv}}|group='Note'}} The next stage of the Allied plan was an advance to [[Torhout|Thourout]]–[[Koekelare|Couckelaere]], to close the German-controlled railway running through Roulers and Thourout. ||| ||| ||| +1 Battle of Patay ||| Loire Campaign (1429) ||| The '''Battle of Patay''' (18 June 1429) was the culminating engagement of the [[Loire Campaign (1429)|Loire Campaign]] of the [[Hundred Years' War]] between the French and English in north-central France. It was a decisive victory for the French and turned the tide of the war. This victory was to the French what Agincourt was to the English. Although credited to [[Joan of Arc]], most of the fighting took place at the vanguard of the French army and the battle was over before the main body could arrive. ||| ||| ||| +1 Battle of Peachtree Creek ||| American Civil War ||| '''The Battle of Peachtree Creek''' was fought in [[Georgia (U.S. state)|Georgia]] on July 20, 1864, as part of the [[Atlanta Campaign]] in the [[American Civil War]]. It was the first major attack by [[Lieutenant General|Lt. Gen.]] [[John Bell Hood]] since taking command of the [[Confederate States Army|Confederate]] [[Confederate Army of Tennessee|Army of Tennessee]]. The attack was against [[Major General#United States|Maj. Gen.]] [[William T. Sherman]]'s [[Union Army|Union]] army which was perched on the doorstep of [[Atlanta, Georgia|Atlanta]]. The main armies in the conflict were the Union [[Army of the Cumberland]], commanded by Maj. Gen. [[George Henry Thomas]], and two corps of the [[Confederate States Army|Confederate]] [[Confederate Army of Tennessee|Army of Tennessee]], commanded by [[Lieutenant General|Lt. Gen.]] [[John B. Hood]]. The battle of [[Peachtree Creek]] was the first battle fought by Hood as commander of the Army of Tennessee. ||| ||| ||| +1 Battle of Peebles's Farm ||| American Civil War ||| The '''Battle of Peebles's Farm''' (or '''Poplar Springs Church''') was the western part of a simultaneous [[Union Army|Union]] offensive against the [[Confederate States Army|Confederate]] works guarding [[Petersburg, Virginia|Petersburg]] and [[Richmond, Virginia]], during the [[Siege of Petersburg]] in the [[American Civil War]]. ||| ||| ||| +1 Battle of Pegu ||| World War II ||| The '''Battle of Pegu''' was an engagement in the [[Burma campaign]] in the [[World War II|Second World War]]. Fought from 3–7 March 1942, it concerned the defence of Rangoon (now [[Yangon]]) in Burma (now [[Myanmar]]). [[Empire of Japan|Japanese]] forces closed in on the [[Indian Army (1895–1947)|British Indian Army]] who were deployed near Pegu (now [[Bago, Burma|Bago]]). ||| ||| ||| +1 Battle of Pehuajó ||| Paraguayan War ||| The Battle of Pehuajó, also known as '''Battle of Corrales''' or '''Battle of Itati''' was fought during the [[Paraguayan War]] in January 31, 1866. ||| ||| ||| +1 Battle of Pente Pigadia ||| First Balkan War ||| The '''Battle of Pente Pigadia''' or '''Battle of Beshpinar''' ({{lang-el|Μάχη των Πέντε Πηγαδιών}}, {{lang-tr|Beşpınar Muharebesi}}) was fought during the [[First Balkan War]] between the [[Ottoman Empire|Ottomans]] and the [[Kingdom of Greece]]. ||| ||| ||| +1 Battle of Perryville ||| American Civil War ||| The '''Battle of Perryville''', also known as the '''Battle of Chaplin Hills''', was fought on October 8, 1862, in the Chaplin Hills west of [[Perryville, Kentucky]], as the culmination of the [[Confederate Heartland Offensive]] (Kentucky Campaign) during the [[American Civil War]]. [[Confederate States Army|Confederate]] [[General (CSA)|Gen.]] [[Braxton Bragg]]'s [[Army of Mississippi]] won a tactical victory against primarily a single corps of [[Major General#United States|Maj. Gen.]] [[Don Carlos Buell]]'s [[Union Army|Union]] [[Army of the Ohio]]. The battle is considered a strategic Union victory, sometimes called the '''Battle for Kentucky''', since Bragg withdrew to [[Tennessee]] soon thereafter. The Union retained control of the critical [[border state (Civil War)|border state]] of [[Kentucky in the American Civil War|Kentucky]] for the remainder of the war. ||| ||| ||| +1 Battle of Pesaro ||| Neapolitan War ||| The '''Battle of Pesaro''' was a minor battle in the [[Neapolitan War]] that took place on 28 April 1815 in the town of [[Pesaro]]. The main Neapolitan army, commanded by their king, [[Joachim Murat]], was retreating to their original headquarters in [[Ancona]] following a string a defeats in northern Italy. The Neapolitans were being pursued by an Austrian corps under the command of [[Adam Albert von Neipperg]]. Just like at the [[Battle of Cesenatico]], a vastly outnumbered Austrian raiding party of [[hussar]]s and [[Jäger (military)|jägers]] once again successfully attacked a Neapolitan garrison of 3,000 men during the night. The Austrians brought out 250 prisoners with only minor casualties whilst inflicting moderate casualties on the garrison, forcing them to flee during the night. ||| ||| ||| +1 Battle of Petra ||| Greek War of Independence ||| The '''Battle of Petra''' was the final battle fought in the [[Greek War of Independence]]. ||| ||| ||| +1 Battle of Philippi (West Virginia) ||| American Civil War ||| The '''Battle of Philippi''' formed part of the [[Western Virginia Campaign]] of the [[American Civil War]], and was fought in and around [[Philippi, West Virginia|Philippi]], [[Virginia]] (now [[West Virginia]]) on June 3, 1861. A decisive Union victory, it was the first organized land action of the war, though generally viewed as a skirmish rather than a battle. However, the Northern press celebrated it as an epic triumph, and this encouraged Congress to call for the drive on Richmond that ended with the Union defeat at [[First Battle of Bull Run|First Bull Run]] in July. It brought overnight fame to [[Major General (United States)|Maj. Gen.]] [[George B. McClellan]], and was notable for the first battlefield amputations. It also encouraged the western counties of Virginia to form their own Union state. ||| ||| ||| +1 Battle of Piacenza ||| War of the Austrian Succession ||| The '''Battle of Piacenza''' was a [[pitched battle]] between a Franco-Spanish army and [[Habsburg Monarchy|Austrian]] army near [[Piacenza]] on June 16, 1746. It formed part of later operations in the [[War of the Austrian Succession]]. The result was a victory for the Austrian forces, led by [[Josef Wenzel, Prince of Liechtenstein|Prince Josef Wenzel]]. ||| ||| ||| +1 Battle of Picacho Pass ||| American Civil War ||| The '''Battle of Picacho Pass''' or the '''Battle of Picacho Peak''' was an engagement of the [[American Civil War]] on April 15, 1862. The action occurred all around [[Picacho Peak State Park|Picacho Peak]], {{convert|50|mi|km}} northwest of [[Tucson, Arizona|Tucson]], [[Arizona]]. It was fought between a [[Union (American Civil War)|Union]] [[cavalry]] patrol from [[California]] and a party of [[Confederate States of America|Confederate]] [[Picket (military)|pickets]] from Tucson, and marks the westernmost battle of the [[American Civil War]]. ||| ||| ||| +1 Battle of Pickett's Mill ||| American Civil War ||| The '''Battle of Pickett's Mill''' was fought on May 27, 1864, in [[Paulding County, Georgia]], during the [[American Civil War]] between [[Union (American Civil War)|Union]] and [[Confederate States of America|Confederate]] forces. Union [[Major general (United States)|Maj. Gen.]] [[William Tecumseh Sherman]] attempted an attack on the right flank of Confederate [[General (CSA)|Gen.]] [[Joseph E. Johnston]]. ||| ||| ||| +1 Battle of Pig Point ||| American Civil War ||| The '''Battle of Pig Point, Virginia''' was an engagement between the [[Union (American Civil War)|Union]] gunboat [[USRC Harriet Lane (1857)|USRC ''Harriet Lane'']] and a shore battery and rifle company of the [[Confederate Army]] on June 5, 1861 in the third month of the [[American Civil War]]. Pig Point is located in [[Portsmouth, Virginia]] at the mouth of the [[Nansemond River]] near [[Hampton Roads, Virginia]]. This location is about {{convert|5|mi|km}} from [[Newport News, Virginia]]. The engagement occurred before any significant battles, other than the opening [[Battle of Fort Sumter]], had taken place and received some notoriety at the time. The action was essentially inconclusive, but the Confederates repulsed the Union gunboat's attack and the defenders' gunfire wounded five of its crew. Like other early engagements between Union gunboats and Confederate shore batteries, the battle at Pig Point was an early Civil War military action in connection with the blockade by the [[Union Navy]] of the Southern States in general and the [[Chesapeake Bay]] in particular. Correspondingly, it was part of the effort by Confederate forces to deny the use of rivers in [[Virginia]] to Union military and commercial traffic. ||| ||| ||| +1 Battle of Pirajá ||| War of Independence of Brazil ||| The '''Battle of Pirajá''' was part of the [[War of Independence of Brazil]], and was fought in the province of [[Bahia]] on November 8, 1822. ||| ||| ||| +1 Battle of Pirot ||| Serbo-Bulgarian War ||| The '''Battle of Pirot''' ({{lang-bg|Битка при Пирот}} or ''Пиротско сражение'') was a battle between the [[Bulgaria]]n Western Corps and the Serbian Nišava Army during the [[Serbo-Bulgarian War]]. The battle was fought between the 26th and the 27th of November, 1885{{Ref_label|a|a|none}} and ended with a Bulgarian victory. ||| ||| ||| +1 Battle of Pleasant Hill ||| American Civil War ||| The '''Battle of Pleasant Hill''', Louisiana (9 April 1864), formed part of the [[Red River Campaign]] during the [[American Civil War]], when Union forces were aiming to occupy the state capital Shreveport. ||| ||| ||| +1 Battle of Plymouth (1864) ||| American Civil War ||| The '''Battle of Plymouth''' was an engagement during the [[American Civil War]] that was fought from April 17 through April 20, 1864, in [[Washington County, North Carolina]]. ||| ||| ||| +1 Battle of Pocotaligo ||| American Civil War ||| The '''Second Battle of Pocotaligo''', or '''Battle of Pocotaligo Bridge''', or '''Battle of Yemassee''', often referred to as simply the '''Battle of Pocotaligo''', was a battle in the [[American Civil War]] on October 22, 1862 near [[Yemassee, South Carolina|Yemassee]], [[South Carolina]]. The Union objective was to sever the [[Charleston and Savannah Railroad]] and thus isolate [[Charleston, South Carolina]]. ||| ||| ||| +1 Battle of Point Judith ||| World War II ||| The '''Battle of Point Judith''' is the popular name for a naval engagement fought between the [[United States]] and [[Nazi Germany]] during [[World War II]]. On May 5 and 6, 1945 American [[surface combatant]]s and two [[blimp]]s sank a German [[U-boat]] off [[Point Judith, Rhode Island|Point Judith]], [[Rhode Island]] in one of the last actions of the [[Battle of the Atlantic (1939–1945)|Battle of the Atlantic]]. ||| ||| ||| +1 Battle of Poison Spring ||| American Civil War ||| The '''Battle of Poison Spring''' (April 18, 1864) was fought in [[Ouachita County, Arkansas]] as part of the [[Camden Expedition]], during the [[American Civil War]]. The battle is infamous for the Confederates' slaughter and mutilation of black U.S. soldiers of the [[1st Kansas Colored Infantry]]. ||| ||| ||| +1 Battle of Poplar Grove ||| Second Boer War ||| The '''Battle of Poplar Grove''' on 7 March 1900 followed on from the [[Siege of Kimberley|Relief of Kimberley]] during the [[Second Boer War]] as the British army moved to take the [[Boer]] capital of [[Bloemfontein]]. The Boers were demoralised following the surrender of [[Piet Cronjé]] at the [[Battle of Paardeberg]]. [[John French, 1st Earl of Ypres|General Sir John French]]'s cavalry did not get into position on time as planned, so the Boer army mostly just fled. ||| ||| ||| +1 Battle of Port Cros ||| World War II ||| The '''Battle of Port Cros''' was a battle of [[World War II]] fought off the [[French Riviera]] in the [[Mediterranean Sea]] on the island of [[Port-Cros]]. The battle began when a [[United States]] [[United States Navy|Navy]] warship encountered two [[Nazi Germany|German]] warships in August 1944 while supporting the [[Allies of World War II|Allied]] [[Operation Dragoon]]. It was one of the few surface engagements fought between the [[United States Navy]] and the [[Nazi Germany|German]] ''[[Kriegsmarine]]''. Later that day, the combined American and [[Canada|Canadian]] [[1st Special Service Force|Devil's Brigade]] was dropped on the main island and captured the German held positions. ||| ||| ||| +1 Battle of Port Gibson ||| American Civil War ||| The '''Battle of Port Gibson''' was fought near [[Port Gibson, Mississippi]], on May 1, 1863, between [[Union Army|Union]] and [[Confederate States Army|Confederate]] forces during the [[Vicksburg Campaign]] of the [[American Civil War]]. The Union Army was led by [[Major General#United States|Maj. Gen.]] [[Ulysses S. Grant]], and they were victorious. ||| ||| ||| +1 Battle of Port Royal ||| American Civil War ||| The '''Battle of Port Royal''' was one of the earliest amphibious operations of the [[American Civil War]], in which a [[United States Navy]] fleet and [[United States Army]] expeditionary force captured [[Port Royal Sound]], [[South Carolina]], between [[Savannah, Georgia]] and [[Charleston, South Carolina]], on November 7, 1861. The sound was guarded by two forts on opposite sides of the entrance, Fort Walker on [[Hilton Head Island, South Carolina|Hilton Head Island]] to the south and Fort Beauregard on Phillip's Island to the north. A small force of four [[gunboat]]s supported the forts, but did not materially affect the battle. ||| ||| ||| +1 Battle of Porton Plantation ||| World War II ||| The '''Battle of Porton Plantation''' (8–10 June 1945) took place at Porton Plantation,{{#tag:ref|The Japanese name for this was 'Moton'. |group=Note}} near the village of [[Soraken]] on [[Bougainville Island]], in the [[Solomon Islands (archipelago)|Solomon Islands archipelago]] during [[World War II]]. Involving forces from [[Australia]], [[New Zealand]] and [[Japan]], the battle was part of the wider [[Bougainville campaign]], which had begun in late 1943 and lasted until the end of the war in August 1945. ||| ||| ||| +1 Battle of Poznań (1704) ||| Great Northern War ||| The '''Battle of Poznań''' was a [[battle]] that took place on August 9, 1704 in [[Poznań]], [[Poland]] during the [[Great Northern War]]. ||| ||| ||| +1 Battle of Prairie Grove ||| American Civil War ||| The '''Battle of Prairie Grove''' was a battle of the [[American Civil War]] fought on December 7, 1862, that resulted in a tactical stalemate but essentially secured northwest [[Arkansas]] for the [[Union (American Civil War)|Union]]. ||| ||| ||| +1 Battle of Prosperous ||| Irish Rebellion of 1798 ||| The '''Battle of Prosperous''' is the name given to a military engagement between the forces of the British Crown and the [[United Irishmen]] during the 1798 rebellion. [[Prosperous, County Kildare]], a recently founded (1780) cotton-manufacturing town, was attacked shortly after the outbreak of the [[Irish Rebellion of 1798|1798 rebellion]] at 2 a.m on 24 May 1798 by a rebel force about 60 strong which targeted the British garrison consisting of Cork [[militia]] and a detachment of a Welsh regiment, the '''Ancient Britons'''. ||| ||| ||| +1 Battle of Puente Sanpayo ||| Peninsular War ||| The '''Battle of Puente Sanpayo''' or '''Battle of San Payo''' (''[[Galician language|Galician]]: Ponte Sampaio'') took place at [[Ponte Sampaio]], [[Pontevedra]], between 7–9 June, 1809 during the [[Peninsular War]]. The Spanish forces commanded by Colonel [[Pablo Morillo]] defeated the French forces of Marshall [[Michel Ney]]. Ney and his forces were forced to retreat and the French offensive to re-capture the cities of [[Vigo]] and [[Pontevedra]] was a failure. The battle marked the final evacuation of [[Galicia (Spain)|Galicia]] by the French army and the creation of a new front. ||| ||| ||| +1 Battle of Puerto de Baños ||| Peninsular War ||| The '''Battle of Puerto de Baños''' (12 August 1809) saw a Portuguese-Spanish column led by [[Robert Thomas Wilson]] attempt to defend a mountain pass against [[Marshal of France|Marshal]] [[Michel Ney]]'s [[VI Corps (Grande Armée)|VI Corps]]. After a nine-hour combat, Wilson's force broke up and scattered into the mountains. [[Baños de Montemayor]] is located about {{convert|45|km|mi|0}} northeast of [[Plasencia]], Spain. The clash occurred during the [[Peninsular War]], part of a larger struggle known as the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Pusan Perimeter ||| Korean War ||| The '''Battle of Pusan Perimeter''' was a large-scale battle between [[United Nations Command (Korea)|United Nations]] and [[North Korean]] forces lasting from August 4 to September 18, 1950. It was one of the first major engagements of the [[Korean War]]. An army of 140,000 UN troops, having been pushed to the brink of defeat, were rallied to make a final stand against the invading [[Korean People's Army|North Korean army]], 98,000 men strong. ||| ||| ||| +1 Battle of Pułtusk ||| War of the Fourth Coalition ||| The '''Battle of Pułtusk''' took place on 26 December 1806 during the [[War of the Fourth Coalition]] near [[Pułtusk]], [[Poland]]. Approximately 50,000 [[Imperial Russia|Russian]] soldiers with 128 guns under General [[Levin August, Count von Bennigsen]] resisted the attacks of 23,000 [[First French Empire]] soldiers under [[Marshal of France|Marshal]] [[Jean Lannes]]. The Russians withdrew the day after this [[Napoleonic Wars]] action. Pułtusk is located on the west bank of the River [[Narew]] approximately {{convert|50|km|mi|0}} north of [[Warsaw]]. ||| ||| ||| +1 Battle of Pydna (148 BC) ||| Fourth Macedonian War ||| The '''Battle of Pydna''' was fought in 148 BC between Rome and the forces of the Macedonian leader [[Andriscus]]. The Roman force was led by [[Quintus Caecilius Metellus Macedonicus|Quintus Caecilius Metellus]], and was the winner of this engagement. The result of the battle played an important role in deciding the outcome of the [[Fourth Macedonian War]]. This battle annihilated the last military-political force of Macedon. ||| ||| ||| +1 Battle of Pyongtaek ||| Korean War ||| The '''Battle of Pyongtaek''' was the second engagement between [[United States]] and [[North Korean]] forces during the [[Korean War]], occurring on July 6, 1950 in the village of [[Pyongtaek]] in western [[South Korea]]. The fight ended in a North Korean victory following unsuccessful attempts by American forces to inflict significant damage or delays on advancing North Korean units, despite several opportunities to do so. ||| ||| ||| +1 Battle of Párkány ||| Great Turkish War ||| The '''Battle of Párkány''' ({{lang-tr|Ciğerdelen savaşı}}) (October 7–9, 1683) was fought in the town of [[Párkány]] (today: [[Štúrovo]]), in the [[Ottoman Empire]], and the area surrounding it as part of the [[Polish–Ottoman War (1683-1699)|Polish-Ottoman War]] and the [[Great Turkish War]]. The battle was fought in two stages. In the first stage the Polish-Lithuanian troops under [[John III Sobieski]] were defeated by the [[Ottoman Empire|Ottoman]] army, under Kara Mehmed Pasha on October 7, 1683. In the second stage of the battle John III Sobieski, supported by [[Habsburg Monarchy|Austrian]] forces under [[Charles V, Duke of Lorraine]] defeated the Ottoman forces, which were supported by the troops of [[Imre Thököly]], and gained control of [[Párkány]] on October 9, 1683. After the defeat, Austrians would siege [[Esztergom]] and captured after short siege at end of 1683. ||| ||| ||| +1 Battle of Pälkäne ||| Great Northern War ||| The '''Battle of Pälkäne''', sometimes called the '''Battle at Kostianvirta''' or '''Battle on the Pialkiane River''' ({{lang-ru|link=no|Битва на реке Пялькяне}}) was fought between the [[Russia]]n army under [[Admiral]] [[Fyodor Apraksin]] and the defending [[Finland|Finnish]] army of [[Sweden]] under General [[Carl Gustaf Armfeldt]] on 17 October 1713, as part of the [[Great Northern War]]. It resulted in a Russian tactical victory, although General Armfeldt was able to withdraw his army in good order. ||| ||| ||| +1 Battle of Quebec (1775) ||| American Revolutionary War ||| The '''Battle of Quebec''' ([[French language|French]]: ''Bataille de Québec'') was fought on December 31, 1775, between American [[Continental Army]] forces and the British defenders of [[Quebec City]] early in the [[American Revolutionary War]]. The battle was the first major defeat of the war for the Americans, and it came with heavy losses. General [[Richard Montgomery]] was killed, [[Benedict Arnold]] was wounded, and [[Daniel Morgan]] and more than 400 men were taken prisoner. The city's garrison, a motley assortment of regular troops and militia led by [[Province of Quebec (1763–1791)|Quebec]]'s provincial governor, General [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]], suffered a small number of casualties. ||| ||| ||| +1 Battle of Queenston Heights ||| War of 1812 ||| The '''Battle of Queenston Heights''' was the first major battle in the [[War of 1812]] and resulted in a [[United Kingdom of Great Britain and Ireland|British]] victory. It took place on 13 October 1812, near [[Queenston, Ontario|Queenston]], in the present-day province of [[Ontario]]. It was fought between United States regulars and New York militia forces led by Major General [[Stephen Van Rensselaer]], and British regulars, [[2nd Regiment of York Militia|York volunteers]] and [[Mohawk nation|Mohawks]] led by Major General [[Isaac Brock]], and Major General [[Roger Hale Sheaffe]], who took command when Brock was killed. ||| ||| ||| +1 Battle of Quifangondo ||| Angolan Civil War ||| The '''Battle of Quifangondo''' occurred on 10 November 1975, the day before the People's Movement for the Liberation of Angola ([[MPLA]]) declared [[Angola]]'s independence from [[Portugal]]. It can be considered as the decisive battle in the Angolan decolonisation conflict 1974/75 and as the first battle in the [[Angolan Civil War]] (1975–2002). ||| ||| ||| +1 Battle of Qurna (Iraq War) ||| Iraq War ||| '''Battle of Qurna''' was a battle during the [[Iraq War]] between the [[Multinational force in Iraq]] and Iraqi insurgents. The battle took part in [[Al-Qurna]]. In the battle, the insurgents tried to take the control of the city from the allies, mainly [[Denmark|Danish]], [[Lithuania]]n and [[United Kingdom|British]] soldiers. The insurgents were later forced to retreat. ||| ||| ||| +1 Battle of Radom ||| Invasion of Poland ||| The '''Battle of Radom,''' also known as the '''Battle of Iłża,''' was part of the [[Invasion of Poland (1939)|Invasion of Poland]] during the [[Second World War]]. It lasted from 8 September 1939 to 9 September 1939. Polish troops of the [[Prusy Army]], under General [[:pl:Stanisław Skwarczyński|Stanisław Skwarczyński]], defended the city of Iłża and the road from Sandomierz to Radom. The Poles were not ready to meet head on overwhelming German [[XV Army Corps (Wehrmacht)|XV Army Corps]] (General [[Hermann Hoth]]), and were easily defeated after two days of fighting. [[Prusy Army]], in the aftermath of the battle, ceased to exist. Some of the army's units joined other tactical groupings of the Polish armed forces. ||| ||| ||| +1 Battle of Ramillies ||| War of the Spanish Succession ||| The '''Battle of Ramillies''' {{IPAc-en|ˈ|r|æ|m|ɪ|l|iː|z}}, fought on 23 May 1706, was a major engagement of the [[War of the Spanish Succession]]. For the [[Grand Alliance (League of Augsburg)|Grand Alliance]] – Austria, England, and the Dutch Republic – the battle had followed an indecisive campaign against the [[House of Bourbon|Bourbon]] armies of King [[Louis XIV of France]] in 1705. Although the Allies had [[Siege of Barcelona (1705)|captured Barcelona]] that year, they had been forced to abandon their campaign on the [[Moselle River|Moselle]], had stalled in the [[Spanish Netherlands]], and suffered defeat in northern Italy. Yet despite his opponents' setbacks Louis XIV was desirous of peace – but he wanted it on reasonable terms. For this end, and in order to maintain their momentum, the French and their allies would swing over to the offensive in 1706. ||| ||| ||| +1 Battle of Ramnagar ||| Second Anglo-Sikh War ||| The '''Battle of Ramnagar''' was fought on 22 November 1848 between British and Sikh forces during the [[Second Anglo-Sikh War]]. The British were led by [[Hugh Gough, 1st Viscount Gough|Sir Hugh Gough]], while the Sikhs were led by [[Sher Singh Attariwalla]]. ||| ||| ||| +1 Battle of Rayy ||| Fourth Fitna ||| This '''Battle of Rayy''' ([[Ray, Iran, as a military objective|one among many]]) was fought on May 1, 811 CE as part of an [[Abbasid]] [[civil war]] (the '[[Fourth Fitna]]') between the two half-brothers, [[al-Amin]] and [[al-Ma'mun]] ||| ||| ||| +1 Battle of Reims (1814) ||| War of the Sixth Coalition ||| * [[War of the Sixth Coalition]] ||| See also ||| ||| +1 Battle of Remagen ||| Western Allied invasion of Germany ||| The '''Battle of Remagen''' during the [[Western Allied invasion of Germany|Allied invasion of Germany]] resulted in the unexpected capture of the [[Ludendorff Bridge]] over the [[Rhine]] and possibly shortened [[World War II]] in Europe. After capturing the [[Siegfried Line]], the [[9th Armored Division (United States)|9th Armored Division]] of the [[First Army (United States)|U.S. First Army]] had advanced unexpectedly quickly towards the Rhine. They were very surprised to see the last bridge across the Rhine still standing. The Germans had wired the bridge with about {{convert|2800|kg|sp=us}} of demolition charges. When they tried to blow it up, only a portion of the explosives detonated. U.S. forces captured the bridge and rapidly expanded their first bridgehead across the Rhine, two weeks before [[Operation Plunder]]. The GIs' actions prevented the Germans from regrouping east of the Rhine and consolidating their positions. ||| ||| ||| +1 Battle of Remagen ||| World War II ||| The '''Battle of Remagen''' during the [[Western Allied invasion of Germany|Allied invasion of Germany]] resulted in the unexpected capture of the [[Ludendorff Bridge]] over the [[Rhine]] and possibly shortened [[World War II]] in Europe. After capturing the [[Siegfried Line]], the [[9th Armored Division (United States)|9th Armored Division]] of the [[First Army (United States)|U.S. First Army]] had advanced unexpectedly quickly towards the Rhine. They were very surprised to see the last bridge across the Rhine still standing. The Germans had wired the bridge with about {{convert|2800|kg|sp=us}} of demolition charges. When they tried to blow it up, only a portion of the explosives detonated. U.S. forces captured the bridge and rapidly expanded their first bridgehead across the Rhine, two weeks before [[Operation Plunder]]. The GIs' actions prevented the Germans from regrouping east of the Rhine and consolidating their positions. ||| ||| ||| +1 Battle of Restigouche ||| French and Indian War ||| The '''Battle of Restigouche''' was a naval battle fought during the [[French and Indian War]] (the North American theatre of the [[Seven Years' War]]) on the [[Restigouche River]] between the British [[Royal Navy]] and the small flotilla of vessels of the [[French Navy]], [[Military history of the Acadians|Acadian militia]] and [[Military history of the Mi'kmaq People|Mi'kmaq militias]]. The French vessels had been sent to relieve [[New France]] after the fall of [[Battle of the Plains of Abraham|Quebec]]. Supplies were extraordinarily important because France ran their colonies such that the colonies were wholly dependent on products and manufacturing of the motherland. The loss of the Battle of Restigouche and the consequent inability to supply the troops, marked the end of any serious attempt by France to keep hold of their colonies in North America, and it severely curtailed any hopes for a lengthy resistance to the British by the French forces that remained. The battle was the last major engagement of the Mi'kmaq and Acadian militias before the [[Burying the Hatchet ceremony (Nova Scotia)|Burying of the Hatchet Ceremony]] between the Mi'kmaq and the British. ||| ||| ||| +1 Battle of Rich Mountain ||| American Civil War ||| The '''Battle of Rich Mountain''' took place on July 11, 1861, in [[Randolph County, West Virginia|Randolph County, Virginia]] (now [[West Virginia]]) as part of the Operations in Western Virginia Campaign during the [[American Civil War]]. ||| ||| ||| +1 Battle of Rio Hill ||| American Civil War ||| The '''Battle of Rio Hill''' was a [[skirmish]] in the [[American Civil War]] in which [[Union Army|Union]] [[cavalry]] raided a [[Confederate States Army|Confederate]] camp in [[Albemarle County, Virginia]]. ||| ||| ||| +1 Battle of Roncesvalles (1813) ||| Peninsular War ||| The '''Battle of Roncesvalles''' ({{lang-fr|Roncevaux}}) (25 July 1813) was a battle between French and [[Anglo-Portuguese Army|Anglo-Portuguese forces]] during the [[Peninsular War]] (1808–1814). ||| ||| ||| +1 Battle of Ronco ||| Neapolitan War ||| The '''Battle of Ronco''' was a battle in the [[Neapolitan War]] the took place on 21 April 1815 in the village of Ronco, just south of [[Forlì]]. The main Neapolitan army, retreating following the disaster at the [[Battle of Occhiobello]], was being pursued by an Austrian corps under the command of [[Adam Albert von Neipperg]]. The Neapolitans, commanded by their king, [[Joachim Murat]], turned to check the Austrians at the [[Ronco River]]. The Neapolitans rear guard was defeated by a smaller advanced Austrian force, compelling Murat to retreat further south to the [[Savio (river)|Savio River]]. The Austrians suffered light casualties, whereas nearly 1,000 Neapolitans were killed or wounded and more deserted Murat altogether. ||| ||| ||| +1 Battle of Rooiwal ||| Second Boer War ||| '''The Battle of Rooiwal''' was an engagement of the [[Second Boer War]]. It took place on 11 April 1902 and resulted in a victory by a British force commanded by Colonel [[Robert Kekewich]] over a Boer commando led by Generals [[Ferdinandus Jacobus Potgieter]] and [[Jan Kemp (South African)|Jan Kemp]]. ||| ||| ||| +1 Battle of Rostov (1941) ||| World War II ||| The '''Battle of Rostov''' (1941) was a battle of the [[Eastern Front (WWII)|Eastern Front]] of [[World War II]], fought around [[Rostov-on-Don]] between the [[Nazi Germany|German]] [[Army Group South]], commanded by General [[Gerd von Rundstedt]] and the [[Soviet Union|Soviet]] Southern Front commanded by General [[Yakov Timofeyevich Cherevichenko]]. ||| ||| ||| +1 Battle of Roundway Down ||| English Civil War ||| The '''Battle of Roundway Down''' was fought on 13 July 1643, during the First [[English Civil War]]. A [[Cavalier|Royalist]] cavalry force under [[Henry Wilmot, 1st Earl of Rochester|Lord Wilmot]] won a crushing victory over the [[Roundhead|Parliamentarians]] under Sir [[William Waller]] who were besieging [[Devizes]] in central [[Wiltshire]], which was defended by [[Ralph Hopton|Lord Hopton]]. Roundway Down and Oliver's Castle are about {{convert|1.5|km|mi|abbr=on}} north of Devizes and now form part of the North Wessex [[Area of Outstanding Natural Beauty]]. ||| ||| ||| +1 Battle of Route Coloniale 4 ||| First Indochina War ||| The '''Battle of Route Coloniale 4''' (called '''Chiến dịch Biên giới''' [''Operation Border Zone''] in Vietnam) was a battle of the [[First Indochina War]]. It took place along Route Coloniale 4 (RC4, also known as Highway 4), a road which was used to supply the French military base at [[Cao Bang]]. French military traffic along the road had previously been subject to [[Battle of Cao Bang|an ongoing series of ambushes]] during 1947-1949. ||| ||| ||| +1 Battle of Rowton Heath ||| English Civil War ||| The '''Battle of Rowton Heath''', also known as the '''Battle of Rowton Moor''', occurred on 24 September 1645 during the [[English Civil War]]. Fought by the [[Roundhead|Parliamentarians]], commanded by [[Sydnam Poyntz]], and the [[Cavalier|Royalist]]s under the personal command of [[Charles I of England|King Charles I]], it was a significant defeat for the Royalists, with heavy losses and Charles prevented from relieving the [[Siege of Chester]]. ||| ||| ||| +1 Battle of Réunion ||| World War II ||| The '''Battle of Réunion''' or '''Liberation of Réunion''' ({{lang-fr|Bataille de La Réunion ''or'' Libération de La Réunion}}) was an amphibious landing and uprising which brought the island of [[Réunion]] onto the [[Allies of World War II|Allied]] side during the [[World War II|Second World War]]. The invasion was performed by the [[Free French Naval Forces]] (FNFL) destroyer [[French destroyer Léopard|''Léopard'']] on 28 November 1942, which toppled the administration loyal to the [[Vichy France|Vichy French regime]] and replaced it with a [[Free France|Free French]] administration. ||| ||| ||| +1 Battle of Saguntum ||| Peninsular War ||| The '''Battle of Saguntum''' on 25 October 1811 saw the [[First French Empire|French]] Army of Aragon under [[Marshal of France|Marshal]] [[Louis Gabriel Suchet]] fighting a [[Spain|Spanish]] army led by [[Lieutenant General]] [[Joaquín Blake y Joyes]]. The Spanish attempt to raise the siege of the castle of [[Sagunto|Sagunto (Saguntum)]] failed when the French, Italians, and Poles drove their troops off the battlefield in rout. The action took place during the [[Peninsular War]], part of the [[Napoleonic Wars]]. The city lies a short distance from the east coast of Spain, about {{convert|30|km|mi|0}} north of [[Valencia, Spain|Valencia]]. ||| ||| ||| +1 Battle of Sahagún ||| Peninsular War ||| The '''Battle of Sahagún''' (21 December 1808) was a cavalry clash at [[Sahagún]], Spain, in which the British [[15th Hussars|15th Light Dragoons (Hussars)]] defeated two regiments of French cavalry during the [[Battle of Corunna|Corunna Campaign]] of the [[Peninsular War]]. Losses to one of the French regiments were so heavy that it was subsequently disbanded. The action marked the final phase of the British army's advance into the interior of Spain, before they began their harrowing retreat to the coast and ultimate evacuation by sea. ||| ||| ||| +1 Battle of Saint Charles ||| American Civil War ||| The '''Battle of St. Charles''' was a naval engagement and infantry battle during the [[American Civil War]]. It was fought on June 17, 1862, between eight Union ships, including the [[USS Mound City|USS ''Mound City'']], and several Confederate shore guns. A Confederate gun hit the Mound City's steam drum, causing an explosion which resulted in heavy casualties[http://www.history.navy.mil/photos/sh-usn/usnsh-m/md-cty-k.htm]: 105 of the 175-man crew were killed. The USS ''Mound City'' was then towed back to [[Memphis, Tennessee]], and repaired. ||| ||| ||| +1 Battle of Saint-Denis (1837) ||| Lower Canada Rebellion ||| *[[Lower Canada Rebellion]] ||| See also ||| ||| +1 Battle of Saint-Dizier ||| War of the Sixth Coalition ||| The '''Battle of Saint-Dizier''' was a battle during the [[War of the Sixth Coalition]], fought on 26 March 1814, and is notable as [[Napoleon]]'s last victory before he abdicated. ||| ||| ||| +1 Battle of Saipan ||| Pacific War ||| The '''Battle of Saipan''' was a battle of the [[Pacific War|Pacific campaign]] of World War II, fought on the island of [[Saipan]] in the [[Mariana Islands]] from 15 June–9 July 1944. The Allied invasion fleet embarking the expeditionary forces left [[Pearl Harbor]] on 5 June 1944, the day before [[Operation Overlord]] in Europe was launched. The U.S. [[2nd Marine Division (United States)|2nd Marine Division]], [[4th Marine Division (United States)|4th Marine Division]], and the Army's [[27th Infantry Division (United States)|27th Infantry Division]], commanded by [[Lieutenant general (United States)|Lieutenant General]] [[Holland Smith]], defeated the 43rd Division of the [[Imperial Japanese Army]], commanded by Lieutenant General [[Yoshitsugu Saito]]. ||| ||| ||| +1 Battle of Saipan ||| World War II ||| When his battalion came under attack from a much larger enemy force on 7 July, [[Lieutenant Colonel]] [[William J. O'Brien (Medal of Honor)|William O'Brien]] refused to leave the front lines even after being wounded, and continued to lead his men until being overrun and killed. He was posthumously awarded the Medal of Honor on 9 May 1945, for his actions throughout the battle for Saipan. The U.S. Army ship [[USAT Col. William J. O'Brien|USAT ''Col. William J. O'Brien'']], which served in the [[Pacific Ocean]] at the end of [[World War II]], was named in his honor. ||| American military awards ||| ||| +1 Battle of Salem Church ||| American Civil War ||| The '''Battle of Salem Church''', also known as the '''Battle of Banks' Ford''', took place on May 3 and 4, 1863, in [[Spotsylvania County, Virginia]], as part of the [[Chancellorsville, Virginia|Chancellorsville]] Campaign of the [[American Civil War]]. ||| ||| ||| +1 Battle of Salla (1939) ||| Winter War ||| The '''Battle of Salla''' was fought between [[Finland|Finnish]] and [[Soviet Union|Soviet]] troops near [[Salla]] in northern Finland during the [[Winter War]]. The Soviets had orders to advance through Salla to [[Kemijärvi]] and [[Sodankylä]], and from there to [[Rovaniemi]] in just two weeks. From there they were to advance to [[Tornio]] and cut Finland in two. The Finnish troops managed to stop the Soviet advance just east of Kemijärvi. During the last days of February 1940 the Finnish troops were replaced with the Swedish, Norwegian and Danish volunteers of the [[Stridsgruppen SFK]]. ||| ||| ||| +1 Battle of Samos (1824) ||| Greek War of Independence ||| The '''Battle of Samos''' ({{lang-el|Ναυμαχία της Σάμου}}) was a naval battle fought on August 5/17, 1824 off the [[Greece|Greek]] island of [[Samos]] during the [[Greek War of Independence]]. ||| ||| ||| +1 Battle of San Germano ||| Neapolitan War ||| The '''Battle of San Germano''' (or the '''Battle of Mignano''') was the final battle in the [[Neapolitan War]] between an [[Austrian Empire|Austrian]] force commanded by [[Laval Nugent von Westmeath]] and the King of [[Kingdom of Naples|Naples]], [[Joachim Murat]]. The battle started on 15 May 1815 and ended on 17 May, after the remaining Neapolitan force was routed at [[Mignano Monte Lungo|Mignano]]. ||| ||| ||| +1 Battle of San Jacinto ||| Texas Revolution ||| | title = [[Texas Revolution]] ||| ||| ||| +1 Battle of San Juan and Chorrillos ||| War of the Pacific ||| The '''Battle of San Juan''', also known as the ''Battle of San Juan and Chorrillos'', was the first of two battles in the [[Occupation of Lima|Lima Campaign]] during the [[War of the Pacific]], and was fought on January 13, 1881. This battle is really a group of smaller, yet fierce confrontations at the defensive strongholds of Villa, [[Chorrillos District|Chorrillos]], [[Santiago de Surco]], [[San Juan de Miraflores]], Santa Teresa and [[Morro Solar]]. The Chilean army led by Gen. [[Manuel Baquedano]] inflicted a harsh defeat on the Peruvian army commanded by the Supreme Chief [[Nicolás de Piérola]]. The Chilean triumph eliminated the first defensive line guarding [[Lima]], and almost obliterated the Peruvian army defending it. ||| ||| ||| +1 Battle of Sandwich (1460) ||| Wars of the Roses ||| The '''Battle of Sandwich''' was a naval skirmish off the town of [[Sandwich, Kent|Sandwich]] in January 1460 during the [[Wars of the Roses]]. In it, Sir John Denham and the [[Richard Neville, 16th Earl of Warwick|Earl of Warwick]], [[Captain of Calais]], now on the Yorkist side, defeated a Lancastrian fleet and captured several of its ships. Little evidence and few details of the battle survive. ||| ||| ||| +1 Battle of Sangju (1950) ||| Korean War ||| The '''Battle of Sangju''' ({{lang-ko|'''상주 전투'''}}) was an engagement between the [[United Nations]] and [[North Korean]] forces, occurring on July 20–31, 1950, in the village of [[Sangju]] in southern [[South Korea]], early in the [[Korean War]]. It ended in a victory for the North Korean forces after they were able to push troops of the [[United States]] and South Korea out of the area. ||| ||| ||| +1 Battle of Santa Clara ||| Cuban Revolution ||| The '''Battle of Santa Clara''' was a series of events in late December 1958 that led to the capture of the Cuban city of [[Santa Clara, Cuba|Santa Clara]] by [[Cuban Revolution|revolutionaries]] under the command of [[Che Guevara]]. The battle was a decisive victory for the rebels fighting against the regime of General [[Fulgencio Batista]]: within 12 hours of the city's capture Batista fled [[Cuba]] and [[Fidel Castro]]'s forces claimed overall victory. It features prominently on the back of the three [[convertible peso]] bill. ||| ||| ||| +1 Battle of Santa Clara (1927) ||| United States occupation of Nicaragua ||| The '''Battle of Santa Clara''' took place on July 27, 1927, during the [[United States occupation of Nicaragua|American occupation of Nicaragua]] of 1926-1933. After being [[ambush]]ed by [[Augusto César Sandino|Sandinista]] forces at the [[Battle of San Fernando]], Major [[Oliver Floyd]]'s expedition of [[United States Marine Corps|American Marines]] and [[National Guard (Nicaragua)|Nicaraguan Provisional Guardsmen]] continued its advance into enemy-held territory in northern [[Nicaragua]]. ||| ||| ||| +1 Battle of Saragarhi ||| Tirah Campaign ||| '''The Battle of Saragarhi''' was fought before the [[Tirah Campaign]] on 12 September 1897 between twenty-one [[Sikh]]s of the [[36th Sikhs]] (now the 4th Battalion of the [[Sikh Regiment]]) of British [[India]], defending an army post, and 10,000 [[Pashtun people|Afghan]] and [[Orakzai]] tribesmen. The battle occurred in the [[North-West Frontier Province (1901–1955)|North-West Frontier Province]], which formed part of [[British India]]. It is now named the [[Khyber Pakhtunkhwa|Khyber-Pakhtunkhwa]] and is part of [[Pakistan]]. ||| ||| ||| +1 Battle of Saragossa ||| War of the Spanish Succession ||| The '''Battle of Saragossa''' ({{lang-es|Zaragoza}}) took place on 20 August 1710 between the Spanish-Bourbon army commanded by the [[Marquis de Bay]] and a multinational army led by the Austrian commander [[Guido Starhemberg]] during the [[War of the Spanish Succession]]. ||| ||| ||| +1 Battle of Sarantaporo ||| First Balkan War ||| The '''Battle of Sarantaporo''', variously also transliterated as '''Sarantaporon''' or '''Sarandaporon''' ({{lang-el|Μάχη του Σαρανταπόρου}}) took place on October 9-10 (O.S.), 1912. It was the first major battle fought between the Greek and Ottoman armies in the [[First Balkan War]], and resulted in a Greek victory. ||| ||| ||| +1 Battle of Sardarabad ||| Caucasus Campaign ||| In January 1918, two months after the [[Bolshevik]] seizure of power in Russia, the [[Sovnarkom]], the highest government authority under the Bolshevik system, issued a decree which called for the withdrawal of Russian troops from the [[Caucasus Campaign|Caucasus Front]]. This move threw the Armenian leadership in the [[South Caucasus|Transcaucasia]] into a panic, since it removed from the region the only force capable of protecting the Armenian people from the [[Ottoman Empire]], which had effectively [[Armenian Genocide|exterminated its Armenian population]] through systematic massacres and deportations. The Armenians refused to recognize the authority of the Bolsheviks and attempted to form military units to defend the front as the Ottoman armies prepared to expand eastward. {{cite book|last=Hovannisian|first=Richard G.|authorlink=Richard G. Hovannisian|title=Armenia on the Road to Independence, 1918|publisher=University of California Press ||| Background ||| ||| +1 Battle of Savo Island ||| Pacific War ||| The '''Battle of Savo Island''', also known as the '''First Battle of Savo Island''' and, in Japanese sources, as the {{nihongo|'''First Battle of the Solomon Sea'''|第一次ソロモン海戦|Dai-ichi-ji Soromon Kaisen}}, and colloquially among Allied Guadalcanal veterans as '''The Battle of the Five Sitting Ducks''', was a [[naval battle]] of the [[Pacific War|Pacific Campaign]] of [[World War II]], between the [[Imperial Japanese Navy]] and [[Allies of World War II|Allied]] naval forces. The battle took place on August 8–9, 1942 and was the first major naval engagement of the [[Guadalcanal campaign]], and the first of several naval battles in the straits later named [[Ironbottom Sound]], near the island of [[Guadalcanal]]. ||| ||| ||| +1 Battle of Scarrifholis ||| Wars of the Three Kingdoms ||| The '''Battle of Scarrifholis''' was fought in [[County Donegal]] in the north-west of Ireland on 21 June 1650, during the [[Irish Confederate Wars]] – part of the [[Wars of the Three Kingdoms]] ([[Irish language|Irish]]: ''Cogadh na dTrí Ríocht''). It was fought between the Ulster Army (Catholic), commanded by [[Heber MacMahon]], [[Roman Catholic Bishop of Clogher]], and an English [[Parliament of England|Parliamentarian]] army commanded by [[Charles Coote, 1st Earl of Mountrath]] and composed of troops from the [[New Model Army]] and local Ulster [[Protestant]] settlers. The battle resulted in the annihilation of the Ulster army and the loss of most of its weapons and supplies. This secured the north of Ireland for the English Parliament and contributed greatly to the [[Cromwellian conquest of Ireland]]. ||| ||| ||| +1 Battle of Schliengen ||| French Revolutionary Wars ||| During the [[French Revolutionary Wars]], Schliengen was a strategically important location for the armies of both [[First French Republic|Republican France]] and [[Habsburg Austria]]. Control of the area gave either combatant access to southwestern German states and important [[Rhine river]] crossings. On 20 October Moreau retreated from [[Freiburg im Breisgau]] and established his army along a ridge of hills. The severe condition of the roads prevented Archduke Charles from flanking the French right wing. The French left wing lay too close to the Rhine to outflank, and the French center, positioned in a {{convert|7|mi|km|adj=on|sp=us}} semi-circle on heights that commanded the terrain below, was unassailable. Instead, he attacked the French flanks directly, and in force, which increased casualties for both sides. ||| ||| ||| +1 Battle of Schuinshoogte ||| First Boer War ||| '''Battle of Schuinshoogte''', also known as '''Battle of Ingogo''', was fought north of [[Newcastle, KwaZulu-Natal]], on 8 February 1881 during the [[First Boer War]]. General Sir [[George Pomeroy Colley]]'s communications with Newcastle were under constant harassment by mounted Boer patrols under Commander [[J D Weilbach]] after the [[Battle of Laing's Nek]] (another British defeat) and as a result he planned to clear a path along the Newcastle-Mount Prospect road to better protect the British supply line, and receive fresh reinforcements he needed to bolster his ranks. ||| ||| ||| +1 Battle of Schöngrabern ||| War of the Third Coalition ||| The '''Battle of Schöngrabern''' (also known as the ''Battle of Hollabrunn'') was an engagement in the [[Napoleonic Wars]] during the [[War of the Third Coalition]], fought on 16 November 1805 near [[Hollabrunn]] in [[Lower Austria]], four weeks after the [[Battle of Ulm]] and two weeks before the [[Battle of Austerlitz]] ([[Slavkov]], [[Moravia]] - now [[Czech Republic]]). ||| ||| ||| +1 Battle of Seacroft Moor ||| First English Civil War ||| The '''Battle of Seacroft Moor''', on 30 March 1643, was a decisive loss for the Parliamentary forces during the [[First English Civil War]]. It took place near [[Seacroft]], north east of [[Leeds]], [[West Yorkshire]], England. The battle reportedly turned the [[Cock Beck]], which ran through the battlefield, red with the casualties' blood for several days. ||| ||| ||| +1 Battle of Sedgemoor ||| Monmouth Rebellion ||| It was the final battle of the [[Monmouth Rebellion]] and followed a series of skirmishes around south west England between the forces of [[James Scott, 1st Duke of Monmouth]] and troops loyal to [[James II of England|James II]]. Victory went to the royalists and about 500 prisoners fell into their hands. Monmouth escaped from the battlefield but was later captured and taken to London for trial and execution. ||| ||| ||| +1 Battle of Selby ||| English Civil War ||| The '''Battle of Selby''' occurred in April 1644 during the [[English Civil War]]. It was a Parliamentarian victory over the Royalists. ||| ||| ||| +1 Battle of Seseña ||| Spanish Civil War ||| The '''Battle of Seseña''' was an ill-fated [[Second Spanish Republic|Republican]] assault on the Nationalist stronghold of [[Seseña]], near [[Province of Toledo|Toledo]], 30 km south of [[Madrid]] in October 1936 during the [[Spanish Civil War]]. After the fall of Talavera de la Reina and Toledo in September 1936, the Nationalist troops pushed towards Madrid and in October they were 30 km from Madrid. Then the Republican government which had received new Russian weapons decided to launch a counteroffensive in order to stop the Nationalist offensive at Seseña. The attack failed and the Nationalists resumed their advance towards Madrid. The battle is notable for being the first time that tank warfare was seen in the Spanish war and for the use by Nationalist troops of [[Molotov cocktail]]s against [[Soviet Union|Soviet]] [[T-26 tank]]s. ||| ||| ||| +1 Battle of Seven Pines ||| American Civil War ||| The '''Battle of Seven Pines''', also known as the '''Battle of Fair Oaks''' or '''Fair Oaks Station''', took place on May 31 and June 1, 1862, in [[Henrico County, Virginia]], as part of the [[Peninsula Campaign]] of the [[American Civil War]]. It was the culmination of an offensive up the [[Virginia Peninsula]] by [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]], in which the [[Army of the Potomac]] reached the outskirts of [[Richmond, Virginia|Richmond]]. ||| ||| ||| +1 Battle of Sewell's Point ||| American Civil War ||| The '''Battle of Sewell's Point''' was an inconclusive exchange of cannon fire between the [[Union (American Civil War)|Union]] [[gunboat]] [[USS Monticello (1859)|USS ''Monticello'']], supported by the [[USS Thomas Freeborn|USS ''Thomas Freeborn'']], and [[Confederate States of America|Confederate]] [[Artillery battery|batteries]] on [[Sewell's Point]] that took place on May 18, 19 and 21, 1861, in [[Norfolk County, Virginia]] in the early days of the [[American Civil War]]. Little damage was done to either side. By the end of April 1861, [[USS Cumberland (1842)|USS ''Cumberland'']] and a small number of supporting ships were enforcing the [[Union blockade]] of the southeastern Virginia ports at the southern end of the [[Chesapeake Bay]] and had captured several ships which attempted to pass the blockade. USS ''Monticello's'' bombardment of the Sewell's Point battery was one of the earliest [[Union Navy]] actions against Confederate forces during the Civil War. {{#tag:ref|This otherwise minor incident at Sewell's Point was called a battle at the time simply because it occurred soon after the fall of [[Battle of Fort Sumter|Fort Sumter]] and before any significant military actions had occurred in the war. The U. S. National Park Service includes this engagement in its list of 384 principal battles of the American Civil War. ||| ||| ||| +1 Battle of Shanggao ||| Second Sino-Japanese War ||| The '''Battle of Shanggao''' ({{zh|t=上高會戰|s=上高会战|p=Shànggāo Huìzhàn}}) was one of the 22 major engagements between the [[National Revolutionary Army]] and [[Imperial Japanese Army]] during the [[Second Sino-Japanese War]]. ||| ||| ||| +1 Battle of Shanghai ||| Second Sino-Japanese War ||| The '''Battle of Shanghai''' was the first of the twenty-two major engagements fought between the [[National Revolutionary Army]] (NRA) of the [[Republic of China (1912–1949)|Republic of China]] (ROC) and the [[Imperial Japanese Army]] (IJA) of the [[Empire of Japan]] during the [[Second Sino-Japanese War]]. It was one of the largest and bloodiest battles of the entire war, described by Peter Harmsen as [[Battle of Stalingrad|Stalingrad]] on the [[Yangtze]]. ||| ||| ||| +1 Battle of Sheriffmuir ||| Jacobite rising of 1715 ||| The '''Battle of Sheriffmuir''' ([[Scottish Gaelic]]: 'Blàr Sliabh an t-Siorraim') was an engagement in 1715 at the height of the [[Jacobite rising of 1715|Jacobite rebellion]] in [[England]] and [[Scotland]]. The battlefield has been included in the [[Inventory of Historic Battlefields in Scotland]] and protected by [[Historic Scotland]] under the Scottish Historical Environment Policy of 2009. ||| ||| ||| +1 Battle of Shicun ||| Chinese Civil War ||| The '''Battle of Shicun''' (时村战斗) was a battle fought at the Time Village (Shicun, 时村) of Xiu (宿) County in [[Anhui]], and it was a clash between the [[communist]]s and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after [[World War II]]. The battle was one of the [[Chinese Civil War]] in the immediate post [[World War II]] era. ||| ||| ||| +1 Battle of Shigino ||| Siege of Osaka ||| The '''Battle of Shigino''', fought in the final months of 1614, was one battle during the [[Siege of Osaka]], a campaign by the [[Tokugawa shogunate]] to destroy or subjugate the last resistance to its power, the [[Toyotomi]] clan. ||| ||| ||| +1 Battle of Shiloh ||| American Civil War ||| The '''Battle of Shiloh''', also known as the '''Battle of Pittsburg Landing''', was a major battle in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]], fought April 6–7, 1862, in southwestern [[Tennessee]]. A [[Union Army|Union]] army under [[Major general (United States)|Major General]] [[Ulysses S. Grant]] had moved via the [[Tennessee River]] deep into Tennessee and was encamped principally at [[Pittsburg Landing, Tennessee]] on the west bank of the river, where [[Confederate States Army|Confederate]] forces under [[General (CSA)|Generals]] [[Albert Sidney Johnston]] and [[Pierre G. T. Beauregard]] launched a surprise attack on Grant's army. Johnston was killed in action during the fighting; Beauregard, who thus succeeded to command of the army, decided against pressing the attack late in the evening. Overnight Grant received considerable reinforcements from another Union army under Maj. Gen. [[Don Carlos Buell]], allowing him to launch an unexpected counterattack the next morning which completely reversed the Confederate gains of the previous day. ||| ||| ||| +1 Battle of Shipu ||| Sino-French War ||| The '''Battle of Shipu''' (Chinese:石浦沉船事件) was a French naval victory during the [[Sino-French War]] (August 1884–April 1885). The battle took place on the night of 14 February 1885 in Shipu Bay (石浦灣), near [[Ningbo]], [[China]]. ||| ||| ||| +1 Battle of Shumshu ||| World War II ||| The '''Battle of Shumshu''', the Soviet invasion of [[Shumshu]] in the [[Kuril Islands]], was the first stage of the Soviet [[invasion of the Kuril Islands]] in August–September 1945 during [[World War II]]. It took place from 18 to 23 August 1945, and was the only major battle of the Soviet campaign in the Kuril Islands and one of the last battles of the war. ||| ||| ||| +1 Battle of Siikajoki ||| Finnish War ||| The '''Battle of Siikajoki''' ({{lang-fi|Siikajoen taistelu}}) was fought between [[Sweden|Swedish]] and [[Russia]]n troops on April 18, 1808 at [[Siikajoki]], near [[Oulu]], [[Finland]]. During the first stage of the [[Finnish War]] the Swedish commander [[Wilhelm Mauritz Klingspor]] had decided to retreat from southern Finland, so that the Swedes would gain time, and more troops could be moved to Finland via [[Tornio]]. The move was also made in case the Danes would take the opportunity to attack Sweden. ||| ||| ||| +1 Battle of Singapore ||| World War II ||| The '''Battle of Singapore''', also known as the '''Fall of Singapore''', was fought in the [[South-East Asian theatre of World War II|South-East Asian theatre]] of the [[World War II|Second World War]] when the [[Empire of Japan]] invaded the British stronghold of [[Singapore in the Straits Settlements|Singapore]]. Singapore was the major [[United Kingdom|British]] military base in [[Southeast Asia|South-East Asia]] and nicknamed the 'Gibraltar of the East'. The fighting in Singapore lasted from 8 to 15 February 1942. ||| ||| ||| +1 Battle of Sinoia ||| Rhodesian Bush War ||| The '''Battle of Sinoia''' was a military engagement near [[Chinhoyi|Sinoia]] (today Chinhoyi) between nationalist [[ZAPU]] and [[ZANU]] guerrillas and the [[Rhodesia]]n government on 28 April 1966, during the [[Rhodesian Bush War]] (also called the Second ''Chimurenga''). {{cite book ||| ||| ||| +1 Battle of Sinop ||| Crimean War ||| The '''Battle of Sinop''', or the '''Battle of Sinope''', took place on 30 November 1853 at [[Sinop, Turkey|Sinop]], a [[sea port]] in northern [[Anatolia]], when a [[squadron (naval)|squadron]] of [[Imperial Russia]]n warships struck and annihilated a squadron of [[Ottoman Empire|Ottoman]] ships anchored in the harbor. The battle was part of the [[Crimean War]], and a contributory factor in bringing [[France]] and [[United Kingdom|Britain]] into the conflict. This was the last major battle between fleets of [[sailing ship]]s. The battle is commemorated in Russia as a [[Days of Military Honour|Day of Military Honour]]. ||| ||| ||| +1 Battle of Sinsheim ||| Franco-Dutch War ||| The '''Battle of Sinsheim''' was a victory of the [[Henri de la Tour d'Auvergne, Vicomte de Turenne|Vicomte de Turenne]], over forces from the [[Holy Roman Empire]] on 16 June 1674, during the [[Franco-Dutch War]]. ||| ||| ||| +1 Battle of Siping ||| Chinese Civil War ||| The '''Battle of [[Siping (city)|Siping]]''' (四平战斗), also called the '''Battle to Liberate [[Siping (city)|Siping]]''' (四平解放战) by the [[communists]] was a battle fought between the Communist Forces and the [[Kuomintang|Nationalist]] Forces in [[Jilin]], [[China]] for the control of [[Siping (city)]] during the [[Chinese Civil War]]. It took place immediately after the [[Red Army]] withdrew from Siping in March 1946, and resulted in a communist victory. ||| ||| ||| +1 Battle of Sittang Bridge ||| World War II ||| The '''Battle of Sittang Bridge''' was part of the [[Burma campaign]] during the [[World War II|Second World War]]. Fought between 19 February and 23 February 1942, the battle was a decisive victory for [[Empire of Japan|Japan]], with heavy losses for the [[Indian Army (1895–1947)|British Indian Army]], which was forced to retreat in disarray. [[Brigadier (United Kingdom)|Brigadier]] [[Sir John Smyth, 1st Baronet|Sir John George Smyth, V.C.]]—who commanded the British Indian Army at Sittang Bridge—called it 'the Sittang disaster'. ||| ||| ||| +1 Battle of Slivnitsa ||| Serbo-Bulgarian War ||| Called by [[historian]]s the 'Battle of the captains ''vs'' the generals,' referring to the young [[Bulgaria]]n army, whose highest rank went up to a captain, the '''Battle of [[Slivnitsa]]''' ({{lang-bg|Битка при Сливница}},{{lang-sr|Битка на Сливници}}) was a decisive factor in the victory of the Bulgarian army over the [[Serbia]]ns on November 17-19, 1885 in the [[Serbo-Bulgarian War]]. It solidified the [[Unification of Bulgaria|unification]] between the kingdom of Bulgaria and [[Eastern Rumelia]]. ||| ||| ||| +1 Battle of Sobral ||| Peninsular War ||| The '''Battle of Sobral''' (13–14 October 1810) saw an [[First French Empire|Imperial French]] army led by [[Marshal of France|Marshal]] [[André Masséna]] probe the [[Lines of Torres Vedras]] defended by [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Viscount Wellington]]'s [[Anglo-Portuguese Army]]. The clash occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Sobral de Monte Agraço Municipality]] is located about {{convert|13|km|mi|0}} southeast of [[Torres Vedras]] and {{convert|33|km|mi|0}} north of [[Lisbon]], [[Portugal]]. ||| ||| ||| +1 Battle of Sobraon ||| First Anglo-Sikh War ||| The '''Battle of Sobraon''' was fought on 10 February 1846, between the forces of the [[East India Company]] and the [[Sikh Khalsa Army]], the army of the [[Sikh Empire]] of the [[Punjab region|Punjab]]. The Sikhs were completely defeated, making this the decisive battle of the [[First Anglo-Sikh War]]. ||| ||| ||| +1 Battle of Solferino ||| Second Italian War of Independence ||| The Battle of Solferino was a decisive engagement in the [[Second Italian War of Independence]], a crucial step in the Italian [[Risorgimento]]. The war's geopolitical context was the nationalist struggle to unify Italy, long divided among France, Austria, Spain and numerous independent Italian states. The battle took place near the villages of [[Solferino]] and [[San Martino della Battaglia|San Martino]], Italy, south of [[Lake Garda]] between [[Milan]] and [[Verona, Italy|Verona]]. ||| The Battle ||| ||| +1 Battle of Somerset ||| American Civil War ||| The '''battle of Somerset''' (or '''Dutton's Hill''') was a battle fought on March 31, 1863 during the [[American Civil War]]. General [[John Pegram (general)|John Pegram]] led a Confederate cavalry raid into central Kentucky which was defeated by Union forces under General [[Quincy A. Gillmore]]. ||| ||| ||| +1 Battle of Sorovich ||| First Balkan War ||| The '''Battle of Sorovich'''{{Citation needed|date=July 2011}} ({{lang-el|Μάχη του Σόροβιτς}}{{Citation needed|date=July 2011}}, {{lang-tr|Soroviç Muharebesi }} ) took place between 22-24 October 1912 (O.S.), during the [[First Balkan War]]. It was one of the few Ottoman successes of the war. ||| ||| ||| +1 Battle of South Henan ||| Second Sino-Japanese War ||| The '''Battle of South Henan''' ({{zh|t=豫南會戰|s=豫南会战|p=Yùnán Huìzhàn}}), was one of the 22 major engagements between the [[National Revolutionary Army]] (NRA) and [[Imperial Japanese Army]] during the [[Second Sino-Japanese War]]. This battle was the first time the NRA engaged the Japanese in southern [[Henan]]. ||| ||| ||| +1 Battle of Speyerbach ||| War of the Spanish Succession ||| The '''Battle of Speyerbach''' took place on 15 November 1703 in the [[War of the Spanish Succession]]. A French army besieging [[Landau]] surprised and defeated a German relief army near [[Speyer]]. ||| ||| ||| +1 Battle of Spion Kop ||| Second Boer War ||| The '''Battle of Spion Kop''' ({{lang-nl| Slag bij Spionkop}}; {{lang-af|Slag van Spioenkop}}) was fought about {{convert|38|km|mi|abbr=on}} west-south-west of [[Ladysmith, South Africa|Ladysmith]] on the hilltop of [[Spion Kop (hill)|Spioenkop]] [[#Note about the name|(1)]] along the [[Tugela River]], [[KwaZulu-Natal Province|Natal]] in [[South Africa]] from 23–24 January 1900. It was fought between the [[South African Republic]] and the [[Orange Free State]] on the one hand and [[United Kingdom of Great Britain and Ireland|British]] forces during the [[Second Boer War]] during the campaign to [[Relief of Ladysmith|relieve Ladysmith]]. It was a British defeat. ||| ||| ||| +1 Battle of Springfield (1780) ||| American Revolutionary War ||| The '''Battle of Springfield''' was fought during the [[American Revolutionary War]] on June 23, 1780. After the [[Battle of Connecticut Farms]], on June 7, 1780, had foiled [[Lieutenant General]] [[Wilhelm von Knyphausen|Wilhelm, Baron von Knyphausen]]'s expedition to attack [[General]] [[George Washington]]'s army at [[Morristown, New Jersey]], Knyphausen and Lieutenant General Sir [[Henry Clinton (1730–1795)|Henry Clinton]], [[Kingdom of Great Britain|British]] commander-in-chief in North America, decided upon a second attempt. Although the British were initially able to advance, they were ultimately forced to withdraw in the face of newly arriving colonial forces, resulting in a Continental victory. ||| ||| ||| +1 Battle of St. Johns Bluff ||| American Civil War ||| The '''Battle of St. John's Bluff''' was fought from October 1–3, 1862, between [[Union Army|Union]] and [[Confederate States Army|Confederate]] forces in [[Duval County, Florida]], during the [[American Civil War]]. The battle resulted in a significant Union victory, helping secure their control of the [[Jacksonville]] area. ||| ||| ||| +1 Battle of St. Quentin Canal ||| Hundred Days Offensive ||| After the German [[Spring Offensive]], British, Commonwealth, French and American counterattacks during the [[Hundred Days Offensive]] brought the Allies back up against the outposts of the Hindenburg Line close to the village of [[Bellicourt]] by the Autumn of 1918 where the [[Battle of Épehy]] was fought on 18 September 1918. ||| Prelude ||| ||| +1 Battle of Staten Island ||| American Revolutionary War ||| The '''Battle of Staten Island''' was a raid by [[Continental Army]] troops under Major General [[John Sullivan (general)|John Sullivan]] against British forces on [[Staten Island]] on August 22, 1777, during the [[American Revolutionary War]]. After British Lieutenant General [[William Howe, 5th Viscount Howe|William Howe]] sailed with most of his army from New York in July, the Americans recognized that the British position on Staten Island was vulnerable, and planned an attack. ||| ||| ||| +1 Battle of Staunton River Bridge ||| American Civil War ||| The '''Battle of Staunton River Bridge''' was an engagement on June 25, 1864, between [[Union Army|Union]] and [[Confederate States Army|Confederate]] forces during [[Wilson-Kautz Raid]] of the [[American Civil War]]. The battle took place around the Staunton River Bridge, over the [[Staunton River]], in Halifax and Charlotte counties, [[Virginia]]. ||| ||| ||| +1 Battle of Stoczek ||| November Uprising ||| '''Battle of Stoczek''' was the first major battle of the [[November Uprising]] in [[Poland]]. It took place on 14 February 1831 near the town of [[Stoczek Łukowski]], on the [[Brest, Belarus|Brest]]-[[Warsaw]] road. ||| ||| ||| +1 Battle of Stones River ||| American Civil War ||| The '''Battle of Stones River''' or '''Second Battle of Murfreesboro''' (in the [[Southern United States|South]], simply the '''Battle of Murfreesboro'''), was fought from December 31, 1862, to January 2, 1863, in [[Middle Tennessee]], as the culmination of the '''Stones River Campaign''' in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]]. Of the major battles of the Civil War, Stones River had the highest percentage of casualties on both sides. Although the battle itself was inconclusive, the [[Union Army]]'s repulse of two [[Confederate States Army|Confederate]] attacks and the subsequent Confederate withdrawal were a much-needed boost to Union morale after the defeat at the [[Battle of Fredericksburg]], and it dashed Confederate aspirations for control of [[Middle Tennessee]]. ||| ||| ||| +1 Battle of Stoney Creek ||| War of 1812 ||| The '''Battle of Stoney Creek''' was fought on 6 June 1813 during the [[War of 1812]] near present day [[Stoney Creek, Ontario]]. [[United Kingdom of Great Britain and Ireland|British]] units made a night attack on an American encampment. Due in large part to the capture of the two senior officers of the American force, and an overestimation of British strength by the Americans, the battle was a victory for the British, and a turning point in the defence of [[Upper Canada]]. ||| ||| ||| +1 Battle of Storkyro ||| Great Northern War ||| The '''Battle of Isokyro (Swedish Storkyro)''' was fought on February 19, 1714 ([[Julian calendar|O.S.]]) / March 2, 1714 ([[Gregorian calendar|N.S.]]) at the villages of Napue and Laurola in Isokyro parish (N62 58.96 E22 21.84 WGS84), [[Ostrobothnia (historical province)|Ostrobothnia]], [[Swedish Empire]] (present day [[Finland]]) between the [[Sweden|Swedish]] and the [[Russia]]n army, as part of the [[Great Northern War]]. ||| ||| ||| +1 Battle of Stow-on-the-Wold ||| English Civil War ||| The '''Battle of Stow-on-the-Wold''' took place during the [[English Civil War]]. In the Spring of 1646, King [[Charles I of England]] was getting ever more desperate to hold the Royalist cause together whilst waiting for the long promised relief forces from Ireland, Scotland and France. [[Sir Jacob Astley]] took command of the Royalist forces in the west and began to gather up the remnants from the handful of Royalist garrisons still left in the west. At this point in the war, Royalist morale was low. However, Astley, a stalwart of the Royalist commanders and an experienced soldier, was able to cobble together a force of 3,000. ||| ||| ||| +1 Battle of Stromboli ||| Franco-Dutch War ||| The naval '''Battle of Stromboli''' took place on 8 January 1676 during the [[Franco-Dutch War]] between a French fleet of 20 ships under [[Abraham Duquesne]] and a combined fleet of 19 Dutch and one Spanish ship under Lieutenant-Admiral-General [[Michiel de Ruyter]] that lasted eight hours and ended inconclusively. The fleets fought again at the [[Battle of Augusta]]. ||| ||| ||| +1 Battle of Strömstad ||| Great Northern War ||| The '''Battle of Strömstad''' took place on July 19, 1717 at [[Strömstad]] during the [[Great Northern War]]. The [[Sweden|Swedish]] army of about 1,800 men under the command of [[Johan Giertta]] defeated the [[Denmark|Danish]] fleet of several larger vessels and perhaps 4,000 men under [[Peder Tordenskjold]]. Peter tried to destroy the stocks of supplies Sweden had gathered for the upcoming [[Great Northern War and Norway|invasion of Norway]]. In the battle about 200 Swedes were either dead or wounded and about 350 Danes. ||| ||| ||| +1 Battle of Sudoměř ||| Hussite Wars ||| The '''Battle of Sudomĕř''' was fought on 25 March, 1420, between Catholic and Hussite forces. The Hussites were led by Břeněk of Švihov - who was killed in battle - and [[Jan Žižka]], whose forces proved victorious. This was the second major battle of the [[Hussite Wars]]; the first battle, the [[Battle of Nekmíř]], was more of a Hussite [[withdrawal (military)|retreat]] than a true fight. ||| ||| ||| +1 Battle of Suixian–Zaoyang ||| Second Sino-Japanese War ||| The '''Battle of Suixian–Zaoyang''' ({{zh|t=隨棗會戰|s=随枣会战|p=Suízǎo Huìzhàn}}), also known as the '''Battle of Suizao''' was one of the 22 major engagements between the [[National Revolutionary Army]] (NRA) and [[Imperial Japanese Army]] (IJA) during the [[Second Sino-Japanese War]]. ||| ||| ||| +1 Battle of Sulphur Creek Trestle ||| American Civil War ||| The '''Battle of Sulphur Creek Trestle''', also known as the '''Battle of Athens''', was fought near [[Athens, Alabama]] ([[Limestone County, Alabama]]), from September 23 to 25, 1864 as part of the [[American Civil War]]. ||| ||| ||| +1 Battle of Summa ||| Winter War ||| The '''Battle of Summa''' was fought between the [[Soviet Union]] and [[Finland]], in two phases, first in December 1939 and then in February 1940. It was part of the [[Winter War]] and was fought near the village of Summa (now Soldatskoye) along the main road leading from Leningrad to Viipuri. ||| ||| ||| +1 Battle of Sunda Strait ||| World War II ||| The '''Battle of [[Sunda Strait]]''' was a [[naval battle]] which occurred during [[World War II]]. On the night of 28 February – 1 March 1942, the [[Royal Australian Navy|Australian]] [[light cruiser]] {{HMAS|Perth|1934|6}} and the [[United States Navy|American]] [[heavy cruiser]] {{USS|Houston|CA-30|6}} faced a major [[Imperial Japanese Navy]] (IJN) task force. After a fierce battle of several hours duration, both [[Allies of World War II|Allied]] ships were sunk. Five Japanese ships were sunk by [[friendly fire]], of which two were refloated. ||| ||| ||| +1 Battle of Suomenlinna ||| Crimean War ||| The '''Battle of Suomenlinna''' (also known as the Battle of Viapori or the Bombardment of Sweaborg) was fought on 7-8 August 1855 between [[Russia|Russian]] defenders and a joint [[United Kingdom|British]]/[[France|French]] fleet. It was a part of the [[Crimean War]]. ||| ||| ||| +1 Battle of Suomussalmi ||| Winter War ||| The '''Battle of Suomussalmi''' was a battle fought between [[Finland|Finnish]] and [[Soviet Union|Soviet]] forces in the [[Winter War]]. The action took place from around December 7, 1939 to January 8, 1940. The outcome was a Finnish victory against superior forces. Suomussalmi is considered the clearest, most important, and most significant Finnish victory in the northern half of Finland. {{cite book ||| ||| ||| +1 Battle of Sutherland's Station ||| American Civil War ||| The '''Battle of Sutherland's Station''' was an [[American Civil War]] conflict fought on April 2, 1865, in [[Dinwiddie, Virginia]] during the [[Appomattox Campaign]]. ||| ||| ||| +1 Battle of Suthul ||| Jugurthine War ||| The '''Battle of Suthul''' was an episode of the [[Jugurthine War]]. The battle was fought in 110 BC between the [[ancient Rome|Roman]] force led by the [[praetor]] [[Aulus Postimius Albinus (propraetor 110 BC)|Aulus Postumus Albinus]] and the army of [[Numidia]], led by King [[Jugurtha]]. In 110 BC, the [[consul]] [[Spurius Postumius Albinus (consul 110 BC)|Spurius Postumus Albinus]] invaded Numidia, but left soon after to prepare elections in Rome. His brother Aulus Postumus Albinus got the leadership of the Roman army, but was easily tricked by Jugurtha, who trapped the Romans near the town of [[Suthul]]. ||| ||| ||| +1 Battle of Swift Creek ||| American Civil War ||| The '''Battle of Swift Creek''' was fought on May 9, 1864, between [[Union Army|Union]] and [[Confederate States Army|Confederate]] forces during the [[American Civil War]]. Union forces were only partially successful: they inflicted damage on the local railroad, but further advance was halted. ||| ||| ||| +1 Battle of Sybota ||| Peloponnesian War ||| The '''Battle of Sybota''' took place in 433 BC between [[Corfu|Corcyra]] (modern [[Corfu]]) and [[Corinth, Greece|Corinth]], and was, according to [[Thucydides]], the largest naval battle between Greek city states until that time. It was one of the immediate catalysts for the [[Peloponnesian War]]. ||| ||| ||| +1 Battle of Szack ||| Invasion of Poland ||| * [[Invasion of Poland (1939)|Invasion of Poland]] ||| See also ||| ||| +1 Battle of Tabu-dong ||| Battle of Pusan Perimeter ||| The '''Battle of Tabu-dong''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from September 1 to September 18, 1950, in the vicinity of Tabu-dong, north of [[Taegu]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Taegu ||| Battle of Pusan Perimeter ||| The '''Battle of Taegu''' was an engagement between UN and [[North Korea]]n forces early in the [[Korean War]], with fighting continuing from August 5–20, 1950 around the city of [[Taegu]], South Korea. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after their forces were able to drive off an offensive by North Korean divisions attempting to cross the [[Naktong River]] and assault the city. ||| ||| ||| +1 Battle of Taegu ||| Korean War ||| The '''Battle of Taegu''' was an engagement between UN and [[North Korea]]n forces early in the [[Korean War]], with fighting continuing from August 5–20, 1950 around the city of [[Taegu]], South Korea. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after their forces were able to drive off an offensive by North Korean divisions attempting to cross the [[Naktong River]] and assault the city. ||| ||| ||| +1 Battle of Taierzhuang ||| Second Sino-Japanese War ||| The '''Battle of Tai'erzhuang''' ({{zh|t={{linktext|臺|兒|莊|會|戰}}|s={{linktext|台|儿|庄|会|战}}|p=Tái'érzhūang Huìzhàn}}) was a battle of the [[Second Sino-Japanese War]] in 1938, between armies of the [[Republic of China]] and [[Japan]]. The battle was the first major Chinese victory of the war. It humiliated the Japanese military and its reputation as an invincible force; for the Chinese it represented a tremendous morale boost. ||| ||| ||| +1 Battle of Talavera ||| Peninsular War ||| The '''Battle of Talavera''' (27-28 July 1809) was fought just outside the town of [[Talavera de la Reina]], [[Spain]] some {{convert|120|km}} southwest of [[Madrid]], during the [[Peninsular War]]. At Talavera an Anglo-Spanish army under [[Arthur Wellesley, 1st Duke of Wellington|Sir Arthur Wellesley]] combined with a [[Army of Spain (Peninsular War)|Spanish army]] under General [[Gregorio García de la Cuesta|Cuesta]] in operations against French-occupied Madrid. After fierce fighting, the [[Grande Armée]]'s attacks were repulsed several times; during the overnight lull in action it withdrew from the field. ||| ||| ||| +1 Battle of Talavera de la Reina (1936) ||| Spanish Civil War ||| The '''Battle of Talavera de la Reina''' was fought on September 3, 1936 in the [[Spanish Civil War]]. The [[Second Spanish Republic|Republicans]], attempting to bar the road to [[Madrid]] at [[Talavera de la Reina (Toledo)|Talavera de la Reina]], were defeated by the professional army of the [[Francoist Spain|Nationalists]], with heavy casualties on both sides. ||| ||| ||| +1 Battle of Talladega ||| Creek War ||| The '''Battle of Talladega''' was a battle fought between the [[Tennessee]] [[Militia (United States)|Militia]] and the [[Red Stick]] [[Muscogee people|Creek Indians]] during the [[Creek War]], in the vicinity of the present-day county and city of [[Talladega, Alabama|Talladega]], [[Alabama]], in the [[United States]]. ||| ||| ||| +1 Battle of Tallushatchee ||| Creek War ||| The '''Battle of Tallushatchee''' was a battle fought during the [[Creek War]] on November 3, 1813, in [[Alabama]]. Between [[Red Stick]] [[Creek people|Creeks]] native Americans and United States dragoons. ||| ||| ||| +1 Battle of Tamames ||| Peninsular War ||| The '''Battle of Tamames''' was a sharp reversal suffered by part of Marshal [[Michel Ney]]'s [[France|French]] army under Major-General [[Jean Gabriel Marchand|Jean Marchand]] in the [[Peninsular War]]. The French, advancing out of [[Salamanca]], were met and defeated in battle by a [[Spain|Spanish]] army on October 18, 1809. ||| ||| ||| +1 Battle of Tanagra (457 BC) ||| First Peloponnesian War ||| The '''Battle of Tanagra''' took place in 457 BC between [[Athens]] and [[Sparta]] during the [[First Peloponnesian War]]. ||| ||| ||| +1 Battle of Tannenberg Line ||| Eastern Front (World War II) ||| The '''Battle of Tannenberg Line''' ({{lang-de|Die Schlacht um die Tannenbergstellung}}; {{lang-et|Sinimägede lahing}}; {{lang-ru|Битва за линию «Танненберг»}}) was a military engagement between the [[Nazi Germany|German]] [[Battle of Narva (1944)#Formation of Army Detachment 'Narwa'|Army Detachment '''Narwa''']] and the [[Soviet Armed Forces|Soviet]] [[Leningrad Front]]. They fought for the strategically important [[Ida-Viru|Narva Isthmus]] from 25 July to 10 August 1944. The battle was fought on the [[Eastern Front (World War II)|Eastern Front]] during World War II. The strategic aim of the Soviet Estonian Operation was to reoccupy Estonia as a favourable base for the invasions of Finland and [[East Prussia]]. Several Western scholars refer to it as the ''Battle of the European SS'' for the 24 volunteer infantry battalions from [[11th SS Volunteer Panzergrenadier Division Nordland|Denmark]], East Prussia, [[6th SS Volunteer Sturmbrigade Langemarck|Flanders]], [[4th SS Volunteer Panzergrenadier Brigade Netherlands|Holland]], [[11th SS Volunteer Panzergrenadier Division Nordland|Norway]], and [[5th SS Volunteer Sturmbrigade Wallonien|Wallonia]] within the ''[[Waffen-SS]]''. Roughly half of the infantry consisted of local [[20 SS|Estonian conscripts]] motivated to resist the looming [[Estonian SSR|Soviet re-occupation]]. The German force of 22,250 men held off 136,830 Soviet troops. As the Soviet forces were constantly reinforced, the casualties of the battle were 150,000–200,000 dead and wounded Soviet troops and 157–164 tanks. ||| ||| ||| +1 Battle of Taranto ||| World War II ||| The '''Battle of Taranto''' took place on the night of 11–12 November 1940 during the [[World War II|Second World War]] between British naval forces, under Admiral [[Andrew Cunningham, 1st Viscount Cunningham of Hyndhope|Andrew Cunningham]], and Italian naval forces, under Admiral [[Inigo Campioni]]. The [[Royal Navy]] launched the first all-aircraft ship-to-ship naval attack in history, employing a small number of obsolete [[Fairey Swordfish]] biplane [[torpedo bomber]]s from the [[aircraft carrier]] {{HMS|Illustrious|R87}} in the [[Mediterranean Sea]]. The attack struck the battle fleet of the ''[[Regia Marina]]'' at anchor in the harbour of [[Taranto]] using [[aerial torpedo]]es despite the shallow depth of the water. The devastation wrought by the British carrier-launched aircraft on the large Italian warships was the beginning of the ascendancy of [[naval aviation]] over the big guns of battleships. According to Admiral Cunningham, 'Taranto, and the night of November 11–12, 1940, should be remembered for ever as having shown once and for all that in the Fleet Air Arm the Navy has its most devastating weapon.' ||| ||| ||| +1 Battle of Tarawa ||| Pacific War ||| The '''Battle of Tarawa''' was a battle in the [[Pacific War|Pacific Theater]] of [[World War II]] that was fought from November 20 to November 23, 1943. It took place at the [[Tarawa|Tarawa Atoll]] in the [[Gilbert Islands]]. ||| ||| ||| +1 Battle of Tarawa ||| World War II ||| The '''Battle of Tarawa''' was a battle in the [[Pacific War|Pacific Theater]] of [[World War II]] that was fought from November 20 to November 23, 1943. It took place at the [[Tarawa|Tarawa Atoll]] in the [[Gilbert Islands]]. ||| ||| ||| +1 Battle of Tashihchiao ||| Russo-Japanese War ||| The {{nihongo|'''Battle of Tashihchiao'''|大石橋の戦い|Taisekihashi no Tatakai}} was a land engagement fought on 24–25 July 1904, during the [[Imperial Japanese Army]]'s advance toward [[Liaoyang]] in first stage of the [[Russo-Japanese War]]. Tashihchiao (modern [[Dashiqiao]]) is located about {{convert|25|km|mi}} southwest of the city of [[Haicheng, Liaoning|Haicheng]], in present-day [[Liaoning Province]], [[China]]. The town of Tashihchiao was of strategic importance in the Russo-Japanese War, as it was a railroad junction between the main line on the [[South Manchurian Railway]] and a spur which led to the old treaty port of [[Yingkou]] (Newchwang). Control of both was essential for further advances by Japanese forces towards Liaoyang and [[Mukden]]. ||| ||| ||| +1 Battle of Tecroghan ||| Wars of the Three Kingdoms ||| The '''Battle of Tecroghan''' took place near [[Trim, County Meath|Trim]], in west [[Leinster]], Ireland in June 1650. It was fought between the armies of [[Confederate Ireland]] and the [[English Parliament]] during the [[Wars of the Three Kingdoms]]. An English force under Hewson and Reynolds had surrounded the formidable castle of Tecroghan. The castle was defended by a force led by Sir Robert Talbot and Lady Fitzgerald and contained a considerable number of cannon. Clanricarde and Castlehaven felt it was of enough strategic importance to warrant combining their forces and coming to the relief of the Castle. ||| ||| ||| +1 Battle of Tewkesbury ||| Wars of the Roses ||| The '''Battle of Tewkesbury''', which took place on 4 May 1471, was one of the decisive battles of the [[Wars of the Roses]]. The forces loyal to the [[House of Lancaster]] were completely defeated by those of the rival [[House of York]] under their monarch, [[Edward IV of England|King Edward IV]]. The Lancastrian heir to the throne, [[Edward of Westminster, Prince of Wales|Edward, Prince of Wales]], and many prominent Lancastrian nobles were killed during the battle or were dragged from sanctuary two days later and immediately executed. The Lancastrian king, [[Henry VI of England|Henry VI]], who was a prisoner in the [[Tower of London]], died or was murdered shortly after the battle. Tewkesbury restored political stability to England until the death of Edward IV in 1483. ||| ||| ||| +1 Battle of Texel ||| Franco-Dutch War ||| The naval '''Battle of [[Texel]]''' or '''Battle of [[Kijkduin]]''' took place on 21 August 1673 (11 August [[Old Style|O.S.]]) between the [[Netherlands|Dutch]] and the combined [[England|English]] and [[France|French]] fleets and was the last major battle of the [[Third Anglo-Dutch War]], which was itself part of the [[Franco-Dutch War]] (1672-1678), during which [[Louis XIV of France]] invaded the Republic and sought to establish control over the [[Spanish Netherlands]]. English involvement came about because of the [[Treaty of Dover]], secretly concluded by [[Charles II of England]], and which was highly unpopular with the English Parliament. ||| ||| ||| +1 Battle of Tillieangus ||| Marian civil war ||| The '''Battle of Tillieangus''' was fought on 10 October 1571 between the [[Clan Gordon]] and the [[Clan Forbes]] near White Hill of Tillyangus, [[Aberdeenshire]], [[Scotland]]. It was part of the [[Marian civil war]] in which the Gordons supported [[Mary, Queen of Scots]] and the Forbeses supported her son, [[James VI of Scotland]]. ||| ||| ||| +1 Battle of Tippermuir ||| Wars of the Three Kingdoms ||| The '''Battle of Tippermuir''' (1 September 1644) was the first battle [[James Graham, 1st Marquis of Montrose]] fought for [[Charles I of England|the king]] during the [[Scotland in the Wars of the Three Kingdoms|Wars of the Three Kingdoms]]. The battlefield is currently under research to be inventoried and protected by [[Historic Scotland]] under the [[Scottish Historical Environment Policy]] of 2009. ||| ||| ||| +1 Battle of Tolentino ||| Neapolitan War ||| The '''Battle of Tolentino''' was fought on 2 – 3 May 1815 near [[Tolentino]], Kingdom of Naples in what is now [[Marche]], [[Italy]]: it was the decisive battle in the [[Neapolitan War]], fought by the Napoleonic [[Kingdom of Naples|King of Naples]] [[Joachim Murat]] to keep the throne after the [[Congress of Vienna]]. The battle itself shares many parallels with the [[Battle of Waterloo]]. Both occurred during the [[Hundred Days]] following Napoleon's return from exile and resulted in a decisive victory for the Seventh Coalition leading to the restoration of a [[House of Bourbon|Bourbon]] king. ||| ||| ||| +1 Battle of Tolosa (1813) ||| Peninsular War ||| The '''Battle of Tolosa''' (25 June 1813) saw a British-Portuguese-Spanish column led by [[Thomas Graham, 1st Baron Lynedoch|Thomas Graham]] attempt to cut off a retreating Franco-Italian force under [[Maximilien Sebastien Foy]]. Assisted by [[Antoine Louis Popon de Maucune]]'s division, which fortuitously appeared, the French parried Graham's initial attacks then slipped away when threatened with envelopment. The town of [[Tolosa, Spain|Tolosa]] is located about {{convert|20|km|mi|0}} south of [[San Sebastián]]. The clash occurred during the [[Peninsular War]], part of the wider [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Tolvajärvi ||| Winter War ||| The '''Battle of Tolvajärvi''' ['tol.va.jær.vi] was fought on 12 December 1939 between [[Finland]] and the [[Soviet Union]]. It was the first large offensive victory for the Finns in the [[Winter War]]. ||| ||| ||| +1 Battle of Tomaszów Mazowiecki ||| Invasion of Poland ||| '''Battle of Tomaszów Mazowiecki''' ({{lang-pl|Bitwa pod Tomaszowem Mazowieckim}}) refers to the battle on 6 September 1939 near the town of [[Tomaszów Mazowiecki]], [[Second Polish Republic]], during the [[Invasion of Poland (1939)|Invasion of Poland]]. ||| ||| ||| +1 Battle of Topáter ||| War of the Pacific ||| The '''Battle of Topáter''' was fought on March 23, 1879 between [[Chile]] and [[Bolivia]], and was the first battle of the [[War of the Pacific]]. ||| ||| ||| +1 Battle of Torrington ||| First English Civil War ||| The '''Battle of Torrington''' (16 February 1646) was a decisive battle of the south-western campaign of the [[First English Civil War]] and marked the end of Royalist resistance in the West Country. It took place in [[Great Torrington|Torrington]], Devon. ||| ||| ||| +1 Battle of Tory Island ||| French Revolutionary Wars ||| <!--NB—THE DATES IN THIS ARTICLE ARE NON-AUTOFORMATTED-->The '''Battle of Tory Island''' (sometimes called the '''Battle of Donegal''', '''Battle of Lough Swilly''' or '''Warren's Action''') was a naval action of the [[French Revolutionary Wars]], fought on 12 October 1798 between [[French First Republic|French]] and [[Kingdom of Great Britain|British]] squadrons off the northwest coast of [[County Donegal]], then in the [[Kingdom of Ireland]]. The last action of the [[Irish Rebellion of 1798]], the Battle of Tory Island ended the final attempt by the [[French Navy]] to land substantial numbers of soldiers in Ireland during the war. ||| ||| ||| +1 Battle of Tory Island ||| Irish Rebellion of 1798 ||| <!--NB—THE DATES IN THIS ARTICLE ARE NON-AUTOFORMATTED-->The '''Battle of Tory Island''' (sometimes called the '''Battle of Donegal''', '''Battle of Lough Swilly''' or '''Warren's Action''') was a naval action of the [[French Revolutionary Wars]], fought on 12 October 1798 between [[French First Republic|French]] and [[Kingdom of Great Britain|British]] squadrons off the northwest coast of [[County Donegal]], then in the [[Kingdom of Ireland]]. The last action of the [[Irish Rebellion of 1798]], the Battle of Tory Island ended the final attempt by the [[French Navy]] to land substantial numbers of soldiers in Ireland during the war. ||| ||| ||| +1 Battle of Toulon (1707) ||| War of the Spanish Succession ||| The '''Battle of Toulon''' was fought from 29 July to 21 August 1707 at [[Toulon]], France during the [[War of the Spanish Succession]]. During the battle, a French and Spanish force defeated one from Austria, the Dutch Republic, Savoy and Great Britain. ||| ||| ||| +1 Battle of Toulon (1744) ||| War of the Austrian Succession ||| The outbreak of war with Spain and the imminent threat of war with France during the early stages of the [[War of the Austrian Succession]] led to Mathews' return to active service after seven years of effective retirement, with a promotion directly to vice-admiral of the red on 13 March 1741. ||| Engagement ||| ||| +1 Battle of Towton ||| Wars of the Roses ||| The '''Battle of Towton''' was fought during the English [[Wars of the Roses]] on 29 March 1461, near the village of [[Towton]] in [[Yorkshire]]. It brought about a change of monarchs in England, with the victor, the [[House of York|Yorkist]] [[Edward IV of England|Edward, Duke of York]]{{mdash}}who became King Edward IV (1461–1483) having displaced the [[House of Lancaster|Lancastrian]] King [[Henry VI of England|Henry VI]] (1422–1461) as king, and thus drove the head of the Lancastrians and his key supporters out of the country. ||| ||| ||| +1 Battle of Trenton ||| American Revolutionary War ||| The '''Battle of Trenton''' was a small but pivotal battle during the [[American Revolutionary War]] which took place on the morning of December 26, 1776, in [[Trenton, New Jersey|Trenton]], [[New Jersey]]. After General [[George Washington]]'s [[George Washington's crossing of the Delaware River|crossing of the Delaware River]] north of Trenton the previous night, Washington led the main body of the [[Continental Army]] against [[Hessian (soldiers)|Hessian]] soldiers garrisoned at Trenton. After a brief battle, nearly the entire Hessian force was captured, with negligible losses to the Americans. The battle significantly boosted the Continental Army's flagging morale, and inspired re-enlistments. ||| ||| ||| +1 Battle of Triangle Hill ||| Korean War ||| By mid-1951 the [[Korean War]] had entered a period of relative stalemate. ||| Background ||| ||| +1 Battle of Trois-Rivières ||| American Revolutionary War ||| The '''Battle of Trois-Rivières''' ('''Three Rivers''' in English) was fought on June 8, 1776, during the [[American Revolutionary War]]. A [[British Army during the American War of Independence|British army]] under [[Province of Quebec (1763-1791)|Quebec]] Governor [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]] defeated an attempt by units from the [[Continental Army]] under the command of Brigadier General [[William Thompson (general)|William Thompson]] to stop a British advance up the [[Saint Lawrence River]] valley. The battle occurred as a part of the American colonists' [[Invasion of Canada (1775)|invasion of Quebec]], which had begun in September 1775 with the goal of removing the province from British rule. ||| ||| ||| +1 Battle of Tskhinvali ||| Russo-Georgian War ||| The '''Battle of Tskhinvali''' ({{lang-ru|link=no|Бои за Цхинвал}}, {{lang-ka|ცხინვალის ბრძოლა}}) was a fight for the city of [[Tskhinvali]], capital of [[South Ossetia]]. It was the only major battle in the [[Russo-Georgian War]]. Georgian ground troops entered the city on early 8 August 2008, after an artillery assault. Their advance was stopped by South Ossetian militia and members of the [[Joint Control Commission for Georgian–Ossetian Conflict Resolution|Russian peacekeeping force]] stationed in the city. Russian combat troops began entering South Ossetia through the [[Roki tunnel]]. After being initially forced to withdraw, the Georgian troops made several attempts to retake the city. Due to the difficult logistics of the terrain, the arrival of Russian reinforcements was slow. After fierce fighting, Georgian troops were finally forced to withdraw from the city on the evening of 10 August. On 11 August, all Georgian troops left South Ossetia. Parts of Tskhinvali were devastated in the three-day fighting. ||| ||| ||| +1 Battle of Tuberneering ||| Irish Rebellion of 1798 ||| The '''Battle of Tuberneering''' was fought on 4 June 1798, during the [[Irish Rebellion of 1798]]. It was fought between British troops and insurgents mobilised by the revolutionary organisation named the [[United Irishmen]]. The crown forces were ambushed at Tuberneering in northern [[county Wexford]] in south eastern Ireland and routed. ||| ||| ||| +1 Battle of Tudela ||| Peninsular War ||| The '''Battle of Tudela''' (23 November 1808) saw an [[First French Empire|Imperial French]] army led by [[Marshal of France|Marshal]] [[Jean Lannes]] attack a [[Kingdom of Spain|Spanish]] army under [[Francisco Javier Castaños, 1st Duke of Bailén|General Castaños]]. The battle resulted in the complete victory of the Imperial forces over their adversaries. The combat occurred near [[Tudela, Navarre|Tudela in Navarre]], [[Spain]] during the [[Peninsular War]], part of a wider conflict known as the [[Napoleonic Wars]]. ||| ||| ||| +1 Battle of Tulagi and Gavutu–Tanambogo ||| Pacific War ||| The '''Battle of Tulagi and Gavutu–Tanambogo''' was a land battle of the [[Pacific War|Pacific campaign]] of [[World War II]], between the forces of the [[Imperial Japanese Navy]] and [[Allies of World War II|Allied]] (mainly [[United States Marine Corps|United States (U.S.) Marine]]) ground forces. It took place from 7–9 August 1942 on the [[Solomon Islands]], during the initial Allied landings in the [[Guadalcanal campaign]]. ||| ||| ||| +1 Battle of Tulagi and Gavutu–Tanambogo ||| World War II ||| The '''Battle of Tulagi and Gavutu–Tanambogo''' was a land battle of the [[Pacific War|Pacific campaign]] of [[World War II]], between the forces of the [[Imperial Japanese Navy]] and [[Allies of World War II|Allied]] (mainly [[United States Marine Corps|United States (U.S.) Marine]]) ground forces. It took place from 7–9 August 1942 on the [[Solomon Islands]], during the initial Allied landings in the [[Guadalcanal campaign]]. ||| ||| ||| +1 Battle of Turckheim ||| Franco-Dutch War ||| The '''Battle of Turckheim''' was a confrontation during the [[Franco-Dutch War]] fought on 5 January 1675 between the towns of [[Colmar]] and [[Turckheim]] in [[Alsace]]. The French army, commanded by the [[Henri de la Tour d'Auvergne, Vicomte de Turenne|Viscount of Turenne]], fought against the armies of [[Austria]] and [[Brandenburg]], led by [[Frederick William, Elector of Brandenburg]]. ||| ||| ||| +1 Battle of Turnham Green ||| First English Civil War ||| The '''Battle of Turnham Green''' occurred 13 November 1642 near the village of [[Turnham Green]], at the end of the first campaigning season of the [[First English Civil War]]. The battle resulted in a standoff between the forces of King [[Charles I of England|Charles I]] and the much larger [[Roundhead|Parliamentarian]] army under the command of the [[Robert Devereux, 3rd Earl of Essex|Earl of Essex]]. In blocking the Royalist army's way to London, however, the Parliamentarians gained an important strategic victory as the standoff forced Charles and his army to retreat to Oxford for secure winter quarters. ||| ||| ||| +1 Battle of Tuyutí ||| Paraguayan War ||| The '''Battle of Tuyutí''' was a [[Paraguay]]an offensive in the [[Paraguayan War]]. The [[Treaty of the Triple Alliance|allied]] victory added to the Paraguayan troubles that began with earlier failed offensives and the loss of its fleet in the [[Battle of Riachuelo]]. [[Second Battle of Tuyutí|Another attack]] on the allied camp was made in November 1867. ||| ||| ||| +1 Battle of Ulm ||| Ulm Campaign ||| The '''Battle of Ulm''' on 16-19 October 1805 was a series of skirmishes, at the end of the [[Ulm Campaign]], which allowed [[Napoleon I]] to trap an entire Austrian army under the command of [[Karl Freiherr Mack von Leiberich]] with minimal losses and to force its surrender near [[Ulm]] in the [[Electorate of Bavaria]]. ||| ||| ||| +1 Battle of Uman ||| World War II ||| The '''Battle of Uman''' (15 July – 8 August 1941) was the German and allied encirclement of the [[6th Army (Soviet Union)|6th]] and [[12th Army (Soviet Union)|12th Soviet Armies]]—under the command of Lieutenant General I. N. Muzyrchenko and Major General P. G. Ponedelin, respectively—south of the city of [[Uman]] during the initial offensive operations of [[Nazi Germany|German]] [[Army Group South]], commanded by [[Field Marshal (Germany)|''Generalfeldmarshall'']] [[Gerd von Rundstedt]], as part of [[Operation Barbarossa]] on the [[Eastern Front (WWII)|Eastern Front]] during [[World War II]]. ||| ||| ||| +1 Battle of Umm Qasr ||| Iraq War ||| The '''Battle of Umm Qasr''' was the first military confrontation in the [[Iraq War]]. At the start of the war, one of the first objectives was the [[Umm Qasr Port|port]] of [[Umm Qasr]]. On March 21, 2003, as allied forces advanced across Southern Iraq, an amphibious landing force captured the new port area of Umm Qasr. The assault was spearheaded by [[Royal Marines]] of the British [[3 Commando Brigade]], augmented by [[U.S. Marines]] of the American [[15th Marine Expeditionary Unit|15th MEU]] and [[Poland|Polish]] [[GROM]] troops. Iraqi forces in the old town of Umm Qasr put up unexpectedly strong resistance, requiring several days' fighting before the area was cleared of defenders. The port was finally declared safe and reopened on March 25, 2003. ||| ||| ||| +1 Battle of Unsan ||| Korean War ||| The '''Battle of Unsan''' ({{korean|hangul=운산전투|hanja=雲山戰鬪|rr=Unsan jeontu|mr=Unsan chŏnt'u}}), also known as the '''Battle of Yunshan''' ({{zh|s=云山战斗|p=Yún Shān Zhàn Dòu}}), was a series of engagements of the [[Korean War]] that took place from 25 October to 4 November 1950 near [[Unsan]], [[North Pyongan]] province in present-day [[North Korea]]. As part of the Chinese First Phase Campaign, the People's Republic of China's [[People's Volunteer Army]] made repeated attacks against the [[1st Infantry Division (South Korea)|Republic of Korea 1st Infantry Division]] near Unsan beginning on 25 October, in an attempt to take advancing United Nations forces by surprise. In an accidental first encounter with the United States military during the Korean War, the Chinese [[39th Army (People's Republic of China)|39th Corps]] attacked the unprepared US [[8th Cavalry Regiment (United States)|8th Cavalry Regiment]] in Unsan on 1 November, resulting in one of the most devastating US losses of the Korean War. ||| ||| ||| +1 Battle of Usagre ||| Peninsular War ||| In the '''Battle of Usagre''' on 25 May 1811, Anglo-Allied cavalry commanded by Major-General [[William Lumley]] routed a French cavalry force led by Major-General [[Marie Victor de Fay, marquis de Latour-Maubourg|Marie Victor Latour-Maubourg]] at the village of Usagre in the [[Peninsular War]]. ||| ||| ||| +1 Battle of Valencia (1808) ||| Peninsular War ||| The First '''Battle of Valencia''' was an attack on the Spanish city of [[Valencia, Spain|Valencia]] on 26 June 1808, early in the [[Peninsular War]]. [[Bon Adrien Jeannot de Moncey|Marshal Moncey]]'s French [[Grande Armée|Imperial]] troops failed to take the city by storm and retreated upon [[Madrid]], leaving much of eastern Spain unconquered and beyond the reach of [[Napoleon]]. ||| ||| ||| +1 Battle of Valvasone (1797) ||| French Revolutionary Wars ||| The '''Battle of Valvasone''' (16 March 1797) saw a [[First French Republic]] army led by [[Napoleon Bonaparte]] attack a [[Habsburg Monarchy|Habsburg Austrian]] army led by [[Archduke Charles, Duke of Teschen]]. The Austrian army fought a [[rear guard]] action at the crossing of the [[Tagliamento River]] but was defeated and withdrew to the northeast. The next day, a French division cut off and captured an Austrian column in the '''Capitulation of Gradisca'''. The actions occurred during the [[War of the First Coalition]], part of the [[French Revolutionary Wars]]. [[Valvasone]] is located on the west bank of the Tagliamento {{convert|20|km|mi|0}} southwest of [[Udine]], Italy. [[Gradisca d'Isonzo]] lies on the [[Isonzo River]] {{convert|14|km|mi|0}} southwest of [[Gorizia]], Italy. ||| ||| ||| +1 Battle of Van Buren ||| American Civil War ||| The '''Battle of Van Buren''' was a battle of the [[American Civil War]] fought on December 28, 1862, that resulted in a Union victory that secured northwest [[Arkansas]] for the [[Union (American Civil War)|Union]]. ||| ||| ||| +1 Battle of Vauchamps ||| War of the Sixth Coalition ||| The '''Battle of Vauchamps''', the final major engagement of the [[Six Days Campaign]] of the [[War of the Sixth Coalition]], was fought on 14 February 1814. It resulted in a part of the [[Grande Armée]] under [[Napoleon I]] defeating a superior [[Kingdom of Prussia|Prussia]]n and [[Russian Empire|Russia]]n force of the 'Army of [[Silesia]]', under Field-marshal [[Gebhard Leberecht von Blücher]]. ||| ||| ||| +1 Battle of Vella Gulf ||| World War II ||| The {{nihongo|'''Battle of Vella Gulf'''|ベラ湾夜戦|Berawan yasen}} was a [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]] fought on the night of 6–7 August 1943, in [[Vella Gulf]] between [[Vella Lavella]] Island and [[Kolombangara]] Island in the [[Solomon Islands]] of the Southwest Pacific. ||| ||| ||| +1 Battle of Verdun ||| Western Front (World War I) ||| The '''Battle of Verdun''' ({{lang|fr|''Bataille de Verdun'',}} {{IPA-fr|bataj də vɛʁdœ̃|IPA}}, {{lang|de|''Schlacht um Verdun'',}} {{IPA-de|ʃlaxt ˀʊm ˈvɛɐdœŋ|IPA}}) was fought from 21 February – 18 December 1916 during the [[World War I|First World War]] on the [[Western Front (World War I)|Western Front]] between the [[German Army (German Empire)|German]] and [[French Army|French]] armies, on hills north of [[Verdun]]-sur-Meuse in north-eastern France. The German [[5th Army (German Empire)|Fifth Army]] attacked the defences of the {{lang|fr|''Région Fortifiée de Verdun''}} (RFV) and those of the [[Second Army (France)|Second Army]] garrisons on the right bank of the [[Meuse (river)|Meuse]], intending to rapidly capture the {{lang|fr|''Côtes de Meuse''}} (Meuse Heights), from which Verdun could be overlooked and bombarded with observed artillery-fire. The German strategy intended to provoke the French into counter-attacks and counter-offensives to drive the Germans off the heights. French attacks would be relatively easy to repel with massed artillery-fire, from the large number of medium, heavy and super-heavy guns in the area, supplied with large amounts of ammunition on excellent pre-war railways, which were within {{convert|24|km|mi}} of the front line. ||| ||| ||| +1 Battle of Vertières ||| Haitian Revolution ||| The '''Battle of Vertières''' (in [[Haitian Creole language|Haitian Creole]] ''Batay Vètyè'') was a major battle of the [[Second War of Haitian Independence]], and the final part of the [[Haitian Revolution]] under [[François Capois]]. It was fought between Haitian rebels and French expeditionary forces on 18 November 1803 at Vertières. Vertières is situated just south of Cap-Haïtien (known then as Cap-Français), in the Départment du Nord, Haiti. By the end of October 1803, Haitian rebels had already taken over all the territory from France. The only places left to France were Mole St. Nicolas, held by Noailles, and Cap-Français, where, with 5000 troops, Rochambeau was at bay. ||| ||| ||| +1 Battle of Vianden ||| World War II ||| The '''Battle of Vianden''' (occasionally called the '''Battle for Vianden Castle''') took place November 19, 1944 in the small town of [[Vianden]] in northern [[Luxembourg]], and was one of the most important battles of the [[German occupation of Luxembourg in World War II#The Resistance|Luxembourgish resistance]] against [[Nazi Germany]] during [[World War II]]. The Battle of Vianden remains notable for the heavy losses of the 250 [[Waffen-SS]] (23 killed), with only light casualties (1 dead, 6 wounded) of the 30 Luxembourgish militia members that defended the town. ||| ||| ||| +1 Battle of Vic ||| Peninsular War ||| The '''Battle of Vich''' or '''Battle of Vic''' on 20 February 1810 saw a [[Kingdom of Spain|Spanish]] force under [[Henry O'Donnell, 1st Count of la Bisbal|Henry O'Donnell]] suddenly attack a 5,500-man [[First French Empire|Imperial French]] division led by [[Joseph Souham]]. After bitter fighting the French prevailed, forcing O'Donnell's men to retreat. The engagement occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Vic]] is located {{convert|60|km|mi|0}} north of [[Barcelona]] in the province of [[Catalonia]]. ||| ||| ||| +1 Battle of Vienna, Virginia ||| American Civil War ||| '''The Battle of Vienna, Virginia''' was an engagement on June 17, 1861 between a [[Union Army]] force of 271 men of the [[1st Ohio Infantry]] and a [[Confederate States Army]] force of about 750 men, including about 575 men of the 1st South Carolina Infantry, two companies of cavalry and one company of artillery in the village of [[Vienna, Virginia]] in [[Fairfax County, Virginia]], during the early days of the [[American Civil War]]. ||| ||| ||| +1 Battle of Villafranca (1809) ||| Peninsular War ||| The '''Battle of Villafranca del Bierzo''' took place on 17 March 1809, during the [[France|French]] [[military occupation|occupation]] of [[León (province)|León]] in the [[Peninsular War]]. After a bloody four-hour siege the small and isolated French garrison at Villafranca surrendered to [[Spain|Spanish]] regulars under [[Brigadier]] [[José de Mendizábal]] and General [[Pedro Caro, 3rd Marquis of la Romana]]. ||| ||| ||| +1 Battle of Vimeiro ||| Peninsular War ||| In the '''Battle of Vimeiro''' (August 21, 1808) the [[United Kingdom|British]] under General [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley]] (later known as the Duke of Wellington) defeated the [[Military of France|French]] under Major-General [[Jean-Andoche Junot]] near the village of [[Vimeiro]] ({{IPA-pt|viˈmɐjɾu}}), near [[Lisbon]], [[Portugal]] during the [[Peninsular War]]. This battle put an end to the first French invasion of Portugal. ||| ||| ||| +1 Battle of Vimy Ridge ||| Battle of Arras (1917) ||| The '''Battle of Vimy Ridge''' was a military engagement fought primarily as part of the [[Battle of Arras (1917)|Battle of Arras]], in the [[Nord-Pas-de-Calais]] region of [[France]], during the [[World War I|First World War]]. The main combatants were the [[Canadian Corps]], of four divisions, against three divisions of the [[6th Army (German Empire)|German Sixth Army]]. The battle, which took place from 9 to 12 April 1917, was part of the opening phase of the British-led Battle of Arras, a diversionary attack for the French [[Nivelle Offensive]]. ||| ||| ||| +1 Battle of Vinegar Hill ||| Irish Rebellion of 1798 ||| The '''Battle of Vinegar Hill''' (''[[Irish language|Irish]]'': '''''Cath Chnoc Fhíodh na gCaor'''''), was an engagement during the [[Irish Rebellion of 1798]] on 21 June 1798 when over 15,000 British soldiers launched an attack on Vinegar Hill outside [[Enniscorthy]], [[County Wexford]], the largest camp and headquarters of the Wexford [[United Irishmen|United Irish]] rebels. It marked a turning point in the rebellion, as it was the last attempt by the rebels to hold and defend ground against the British military. The battle was actually fought in two locations: on Vinegar Hill itself and in the streets of nearby Enniscorthy. ||| ||| ||| +1 Battle of Vittorio Veneto ||| Italian Front (World War I) ||| The '''Battle of Vittorio Veneto''' was fought from 24 October to 3 November 1918 near [[Vittorio Veneto]] on the [[Italian Front (World War I)|Italian Front]] during [[World War I]]. The [[Kingdom of Italy (1861-1946)|Italian]] victory ||| ||| ||| +1 Battle of Voronezh (1942) ||| World War II ||| The '''Battle of Voronezh''', or '''First Battle of Voronezh''', was a battle on the [[Eastern Front (WWII)|Eastern Front]] of [[World War II]], fought in and around the strategically important city of [[Voronezh]] on the [[Don River, Russia|Don]] river, {{convert|450|km|mi|abbr=on}} south of Moscow, from 28 June-24 July 1942, as opening move of the [[Case Blue|German summer offensive in 1942]]. ||| ||| ||| +1 Battle of Vítkov Hill ||| Hussite Wars ||| The '''Battle of Vítkov Hill''' was a part of the [[Hussite Wars]]. The battle pitted the forces of Emperor [[Sigismund, Holy Roman Emperor]] against [[Hussite]] forces under command of [[Jan Žižka]] (in English, John Zizka). Vítkov Hill was located on the edge of the city of [[Prague]] and the battle occurred in a vineyard established by Sigismund's father, [[Charles IV, Holy Roman Emperor|Charles IV]]. The battle ended by a decisive Hussite victory. ||| ||| ||| +1 Battle of Wadi Musa ||| Arab Revolt ||| The '''Battle of Wadi Musa''' was a battle fought between the [[Arab Army]] and the [[Ottoman Empire]] during the [[Arab Revolt]] of 1916-1918. ||| ||| ||| +1 Battle of Wagram ||| War of the Fifth Coalition ||| *{{note label|Lannes|Note 3|3}}Lannes had been commanding II Corps. After his death, he was replaced by ''Général de Division'' [[Nicolas Oudinot]], who had held the command of the Corps at the very beginning of the [[War of the Fifth Coalition]]. ||| Footnotes ||| ||| +1 Battle of Wakde ||| World War II ||| The '''Battle of Wakde''' ''('''Operation Straight Line''')'' was part of the [[New Guinea campaign]] of [[World War II]]. It was fought between the [[United States]] and [[Japan]] from 15 May 1944 to 18 May 1944. ||| ||| ||| +1 Battle of Wakefield ||| Wars of the Roses ||| The '''Battle of Wakefield''' took place in [[Sandal Magna]] near [[Wakefield]], in [[West Yorkshire]] in [[Northern England]], on 30 December 1460. It was a major battle of the [[Wars of the Roses]]. The opposing forces were an army led by nobles loyal to the captive King [[Henry VI of England|Henry VI]] of the [[House of Lancaster]], his Queen [[Margaret of Anjou]] and their seven-year-old son [[Edward of Westminster|Edward, Prince of Wales]] on one side, and the army of [[Richard of York, 3rd Duke of York|Richard, Duke of York]], the rival claimant to the throne, on the other. The Duke of York was killed and his army was destroyed. ||| ||| ||| +1 Battle of Walkerton ||| American Civil War ||| The '''Battle of Walkerton''' was an engagement of the [[American Civil War]]. It occurred March 2, 1864, in [[Walkerton, Virginia|Walkerton]], [[King and Queen County, Virginia|King and Queen County]], [[Virginia]] during the campaign known as the '''Kilpatrick-Dahlgren Raid''' or the '''[[Dahlgren Affair]]'''. ||| ||| ||| +1 Battle of Wana ||| War in North-West Pakistan ||| By 23 March 23, 2004, the last fortified area was taken over by the army troops after a week of combat. The Battle of Wana also led to the unannounced [[War in North-West Pakistan]]. ||| Aftermath ||| ||| +1 Battle of Ware Bottom Church ||| American Civil War ||| The '''Battle of Ware Bottom Church''' was fought on May 20, 1864, between [[Union Army|Union]] and [[Confederate States Army|Confederate]] forces during the [[American Civil War]]. The Union troops were led by [[Benjamin Franklin Butler (politician)|Benjamin Butler]], while the Confederates were led by [[P.G.T. Beauregard]]. The Confederates were victorious, and Butler's forces remained in their [[Bermuda Hundred]] defenses. Following the battle, the Confederates began digging a critical set of defensive earthworks that became known as the [[Howlett Line]]. ||| ||| ||| +1 Battle of Waterloo ||| Hundred Days ||| Upon Napoleon's return to power in March 1815, many states that had opposed him formed the Seventh Coalition and began to mobilize armies. Wellington and Blücher's armies were [[canton (military)|canton]]ed close to the north-eastern border of France. Napoleon chose to attack them in the hope of destroying them before they could join in a coordinated invasion of France with other members of the coalition. Waterloo was the decisive engagement of the [[Waterloo Campaign]] and Napoleon's last. According to Wellington, the battle was 'the nearest-run thing you ever saw in your life'. The defeat at Waterloo ended Napoleon's rule as [[Emperor of the French]], and marked the end of his [[Hundred Days]] return from exile. [[Abdication of Napoleon (1815)|Napoleon abdicated]] 4 days later, and on the 7 July coalition forces entered Paris. ||| ||| ||| +1 Battle of Waynesboro, Georgia ||| American Civil War ||| The '''Battle of Waynesboro''' was an [[American Civil War]] battle fought on December 4, 1864, towards the end of [[Sherman's March to the Sea]]. [[Union Army|Union]] [[cavalry]] forces under [[Brigadier General|Brig. Gen.]] [[Judson Kilpatrick]] defeated Confederate cavalry led by Maj. Gen. [[Joseph Wheeler]], opening the way for [[William T. Sherman]]'s armies to approach their objective, [[Savannah, Georgia|Savannah]]. ||| ||| ||| +1 Battle of Waynesboro, Virginia ||| American Civil War ||| The '''Battle of Waynesboro''' was fought on March 2, 1865, at [[Waynesboro, Virginia|Waynesboro]] in [[Augusta County, Virginia]], during the [[American Civil War]]. It was the final battle for [[Confederate States of America|Confederate]] [[Lieutenant General (CSA)|Lt. Gen.]] [[Jubal Early]], whose force was destroyed. ||| ||| ||| +1 Battle of Westport ||| American Civil War ||| The '''Battle of Westport''', sometimes referred to as the ''''Gettysburg of the West,'''' was fought on October 23, 1864, in modern [[Kansas City, Missouri]], during the [[American Civil War]]. [[Union Army|Union]] forces under [[Major General (United States)|Major General]] [[Samuel R. Curtis]] decisively defeated an outnumbered [[Confederate States Army|Confederate]] force under Major General [[Sterling Price]]. This engagement was the turning point of [[Price's Raid|Price's Missouri Expedition]], forcing his army to retreat and ending the last significant Confederate operation west of the [[Mississippi River]]. This battle was one of the largest to be fought west of the [[Mississippi River]], with over 30,000 men engaged. ||| ||| ||| +1 Battle of White Marsh ||| American Revolutionary War ||| '''The Battle of White Marsh''' or '''Battle of Edge Hill''' was a battle of the [[Philadelphia campaign]] of the [[American Revolutionary War]] fought December 5–8, 1777, in the area surrounding [[Whitemarsh Township, Pennsylvania]]. The battle, which took the form of a series of skirmish actions, was the last major engagement of 1777 between [[Kingdom of Great Britain|British]] and [[Thirteen Colonies|American]] forces. ||| ||| ||| +1 Battle of White Oak Road ||| American Civil War ||| The '''Battle of White Oak Road''', also known as '''The Battle of Hatcher's Run, Gravelly Run, Boydton Plank Road, White Oak Ridge''' was fought on March 31, 1865, during the [[American Civil War]] at the end of the [[Siege of Petersburg|Richmond-Petersburg Campaign]] and in the beginning stage of the [[Appomattox Campaign]]. Along with the [[Battle of Dinwiddie Court House]] which was fought simultaneously on March 31, the battle involved the last offensive action by [[General (CSA)|General]] [[Robert E. Lee|Robert E. Lee's]] [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] to stop the progress of [[Lieutenant general|Lieutenant General]] [[Ulysses S. Grant|Ulysses S. Grant's]] [[Union Army]] ([[Army of the Potomac]], [[Union Army of the Shenandoah|Army of the Shenandoah]] and [[Army of the James]]). Grant's forces were moving to cut the remaining Confederate supply lines and to force the Confederates to extend their defensive lines at [[Siege of Petersburg|Petersburg, Virginia]] and [[Richmond in the Civil War|Richmond, Virginia]] to the breaking point, if not to force them into a decisive open field battle. ||| ||| ||| +1 Battle of Wijnendale ||| War of the Spanish Succession ||| The '''Battle of Wijnendale''' was a battle in the [[War of the Spanish Succession]] fought on 28 September 1708 near [[Wijnendale]], [[Flanders]], between an allied force protecting a convoy for the [[Siege of Lille (1708)]] and forces of Bourbon France and Spain. It ended in a victory for the allies, leading to the taking of Lille. ||| ||| ||| +1 Battle of Wilson's Creek ||| American Civil War ||| The '''Battle of Wilson's Creek''', also known as the '''Battle of Oak Hills''', was the first major battle of the [[Trans-Mississippi Theater of the American Civil War|Trans-Mississippi Theater]] of the [[American Civil War]]. Fought on August 10, 1861, near [[Springfield, Missouri|Springfield]], [[Missouri]], between [[Union Army|Federal]] forces and the [[Missouri State Guard]], it is sometimes called the '[[First Battle of Bull Run|Bull Run]] of the West.' ||| ||| ||| +1 Battle of Winterthur (1799) ||| French Revolutionary Wars ||| The '''Battle of Winterthur''' (27 May 1799) was an important action between elements of the [[Army of the Danube]] and elements of the Habsburg army, commanded by [[Friedrich Freiherr von Hotze]], during the [[War of the Second Coalition]], part of the [[French Revolutionary Wars]]. The small town of [[Winterthur]] lies {{convert|18|km|0}} northeast of [[Zürich]], in Switzerland. Because of its position at the junction of seven cross-roads, the army that held the town controlled access to most of Switzerland and points crossing the Rhine into southern Germany. Although the forces involved were small, the ability of the Austrians to sustain their 11-hour assault on the French line resulted in the consolidation of three Austrian forces on the plateau north of Zürich, leading to the French [[First Battle of Zürich|defeat]] a few days later. ||| ||| ||| +1 Battle of Wizna ||| Invasion of Poland ||| The '''Battle of Wizna''' was fought between September 7 and September 10, 1939, between the forces of [[Second_Polish_Republic|Poland]] and [[Nazi_Germany|Germany]] during the initial stages of [[Invasion of Poland (1939)|Invasion of Poland]]. According to Polish historian [[Leszek Moczulski]], between 350 and 720 Poles defended a fortified line for three days against more than 40,000 Germans. ||| ||| ||| +1 Battle of Worcester ||| English Civil War ||| The '''Battle of Worcester''' took place on 3 September 1651 at [[Worcester, England]], and was the final battle of the [[English Civil War]]. [[Oliver Cromwell]] and the [[Roundhead|Parliamentarians]] defeated the [[Cavalier|Royalist]], predominantly [[Kingdom of Scotland|Scottish]], forces of King [[Charles II of England|Charles II]]. The 16,000 Royalist forces, of whom the vast majority were from Scottish regiments,{{sfn|Cone|2003|}} were overwhelmed by the 28,000 strong '[[New Model Army]]' of Cromwell. ||| ||| ||| +1 Battle of Worksop ||| Wars of the Roses ||| '''Battle of Worksop''' was a skirmish during the [[Wars of the Roses]], near the town of [[Worksop]], [[Nottinghamshire]] on 16 December 1460, part of the campaign which led to the [[Battle of Wakefield]] on 30 December. ||| ||| ||| +1 Battle of Wyoming ||| American Revolutionary War ||| The '''Battle of Wyoming''' (also known as the '''Wyoming Massacre''') was an encounter during the [[American Revolutionary War]] between [[Patriot (American Revolution)|American Patriots]] and [[Loyalist (American Revolution)|Loyalists]] accompanied by [[Iroquois]] raiders that took place in the [[Wyoming Valley]] of [[Pennsylvania]] on July 3, 1778. More than three hundred Patriots were killed in the battle. ||| ||| ||| +1 Battle of Wólka Węglowa ||| Invasion of Poland ||| '''Battle of Wólka Węglowa''' ({{lang-pl|Bitwa pod Wólką Węglową}}) refers to the battle on September 19, 1939, that took place near Wólka Węglowa (near [[Warsaw]]), during the last stages of the Polish counteroffensive ([[Battle of the Bzura]]) of the [[Invasion of Poland (1939)|Invasion of Poland]]. ||| ||| ||| +1 Battle of Węgierska Górka ||| Invasion of Poland ||| The '''Battle of Węgierska Górka''' was a two-day-long defence of a [[Poland|Polish]] fortified area in south of [[Silesia]] during the opening stages of the [[Invasion of Poland]] of 1939. ||| ||| ||| +1 Battle of Xinfeng ||| Second Sino-Japanese War ||| The '''Battle of Xinfeng''' was an offensive during the [[Second Sino-Japanese War]]. ||| ||| ||| +1 Battle of Yenangyaung ||| Burma Campaign ||| The '''Battle of Yenangyaung''' ({{zh|c={{linktext|仁|安|羌|大|捷}}|p={{linktext|Rén|ān|qiāng |Dà|jié}}|l=Great Victory at Yenangyaung}}) was fought in [[Burma]], now [[Myanmar]], during the [[Burma Campaign]] in [[World War II]]. The battle of Yenaungyaung was fought in the vicinity of [[Yenangyaung]] and its oil fields. ||| ||| ||| +1 Battle of Yenidje ||| First Balkan War ||| The '''Battle of Yenidje''' or '''Yenice''' or '''Battle of Giannitsa''', was a battle between the [[Greek Army]] and the [[Ottoman Army]] on October 19–20/1912, during the [[First Balkan War]]. The Greek Army defeated the Ottomans, opening the way towards [[Thessaloniki]] and capturing [[Giannitsa|Yenidje]] (now [[Giannitsa]]). ||| ||| ||| +1 Battle of Yongdong ||| Korean War ||| The '''Battle of Yongdong''' was an engagement between United States and [[North Korean]] forces early in the [[Korean War]]. It occurred on July 22–25, 1950, in the village of [[Yongdong]] in southern [[South Korea]]. The newly arrived [[US Army]]'s [[1st Cavalry Division (United States)|1st Cavalry Division]] was ordered there to cover the retreat of the [[US 24th Infantry Division]] after the [[Battle of Taejon]]. The 1st Cavalry Division soldiers, however, were untried in combat, and the [[North Korean People's Army]]'s [[NK 3rd Division|3rd Division]] (NK 3rd Division) was able to outmaneuver them and force them back. ||| ||| ||| +1 Battle of Yongjiazhen ||| Chinese Civil War ||| The '''Battle of Yongjiazhen''' (雍家镇战斗) was fought during the aftermath of [[Pacific War|World War II]] in the Yongjiazhen (雍家镇) region of central [[Anhui]], [[China]] between Communist forces and [[Kuomintang]] forces who had allied with the Japanese. The battle was part of the [[Chinese Civil War]], resulting in a victory for the [[People's Liberation Army]]. ||| ||| ||| +1 Battle of Yongju ||| Korean War ||| The '''Battle of Yongju''' (21–22 October 1950), also known as the Battle of the Apple Orchard, took place as part of the [[United Nations]] (UN) offensive towards the [[Yalu River]], against the [[North Korean]] forces which had invaded [[South Korea]] during the [[Korean War]]. The battle was fought between the [[27th British Commonwealth Brigade]] and the North Korean 239th Regiment which was encircled east of Yongju, where it was attacking the [[187th Infantry Regiment|US 187th Airborne Regimental Combat Team]] (US 187 RCT). On 20 October US 187 RCT had parachuted ahead of the advancing UN spearheads into drop zones in [[Sukchon]] and [[Sunchon, North Korea|Sunchon]], {{convert|40|km|mi}} north of the capital [[Pyongyang]], with the objectives of cutting off the retreating North Korean forces that were withdrawing up the west coast of the [[Korean Peninsula]] and releasing American and South Korean [[prisoners of war]]. Although the airborne drop itself was a success, the operation came too late to intercept any significant North Korean elements and the American landings initially met little resistance. However, on 21 October as US 187 RCT began to advance south to the clear the Sukchon to Yongju road towards Pyongyang the Americans came under heavy attack from the North Korean 239th Regiment, and requested assistance. ||| ||| ||| +1 Battle of Yongsan ||| Battle of Pusan Perimeter ||| The '''Battle of Yongsan''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from September 1–5, 1950, at [[Yongsan]] in [[South Korea]]. It was part of the [[Battle of Pusan Perimeter]] and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and South Korean troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Yongsan ||| Korean War ||| The '''Battle of Yongsan''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from September 1–5, 1950, at [[Yongsan]] in [[South Korea]]. It was part of the [[Battle of Pusan Perimeter]] and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and South Korean troops repelled a strong North Korean attack. ||| ||| ||| +1 Battle of Young's Point ||| American Civil War ||| The '''Battle of Young's Point''' was an engagement in the [[American Civil War]] that took place in [[Madison Parish, Louisiana]], on June 7, 1863. It had an observable influence on the direction and conduct of the [[Vicksburg Campaign]]. The inability of the [[Confederate States Army|Confederates]] to destroy the vital [[Union Army|Union]] supply depot at Young's Point and thus force [[Major general (United States)|Maj. Gen.]] [[Ulysses S. Grant]] to loosen his grip on [[Vicksburg, Mississippi|Vicksburg]] contributed to the ultimate surrender of the city on July 4. ||| ||| ||| +1 Battle of Zacatecas (1811) ||| Mexican War of Independence ||| The '''Battle of Zacatecas''' was a military action of the [[Mexican War of Independence]] fought on 15 April, 1811 at [[Zacatecas, Zacatecas|Zacatecas]], [[Zacatecas]]. The battle was fought between the [[Royalist (Spanish American Revolution)|royalist forces]] loyal to the Spanish crown and the [[Patriot (Spanish American Revolution)|Mexican rebels]] fighting for independence from the [[Spanish Empire]]. The Mexican insurgents were commanded by General [[Ignacio López Rayón]] and the Spanish by [[José Manuel de Ochoa]]. The battle resulted in a victory for rebel forces. ||| ||| ||| +1 Battle of Zadar ||| Croatian War of Independence ||| The '''Battle of Zadar''' ({{lang-hr|Bitka za Zadar}}) was a military engagement between the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'', or JNA), supported by the [[Croatian Serb]] [[Serbian Autonomous Oblast of Krajina]] (SAO Krajina), and the [[Croatian National Guard]] (''Zbor Narodne Garde'', or ZNG), supported by the [[Croatian Police]]. The battle was fought north and east of the city of [[Zadar]], [[Croatia]], in the second half of September and early October 1991 during the [[Croatian War of Independence]]. Although the JNA's initial orders were to lift the Croatian [[Battle of the Barracks|siege]] of the JNA's barracks in the city and isolate the region of [[Dalmatia]] from the rest of Croatia, the orders were amended during the battle to include capturing the Port of Zadar in the city centre. The JNA's advance was supported by the [[Yugoslav Air Force]] and [[Yugoslav Navy|Navy]]. ||| ||| ||| +1 Battle of Zborov (1917) ||| Eastern Front (World War I) ||| The '''Battle of Zborov''' (''Зборовское сражение'' in [[Russian language|Russian]], ''Schlacht bei Zborów'' in [[German language|German]], ''bitva u Zborova'' in [[Czech language|Czech]], ''bitka pri Zborove'' in [[Slovak language|Slovak]]) was a small part of the [[Kerensky Offensive]], (the last [[Russian Empire|Russian]] offensive in [[World War I]], taking place in July 1917). The battle was the first significant action of the [[Czechoslovak Legions]] (volunteers fighting against the [[Central Powers]]) on the [[Eastern Front (World War I)|Eastern Front]] and the only successful action of the failed offensive in Ukraine. ||| ||| ||| +1 Battle of Zealand Point ||| English Wars (Scandinavia) ||| The '''Battle of Zealand Point''' was a naval battle of the [[English Wars (Scandinavia)|English Wars]] and the [[Gunboat War]]. It was fought off [[Zealand Point]] by ships of the Danish and British navies on 22 March 1808 and was a British victory. ||| ||| ||| +1 Battle of Zealand Point ||| Gunboat War ||| The '''Battle of Zealand Point''' was a naval battle of the [[English Wars (Scandinavia)|English Wars]] and the [[Gunboat War]]. It was fought off [[Zealand Point]] by ships of the Danish and British navies on 22 March 1808 and was a British victory. ||| ||| ||| +1 Battle of Zeeland ||| Western Front (World War II) ||| The '''Battle of Zeeland''' was a little-known struggle on the [[Western Front (World War II)|Western Front]] during the early stages of the [[Nazi Germany|German]] [[Battle of France|assault]] on [[France]] and the [[Low Countries]] during [[World War II]]. Several [[Netherlands|Dutch]] and [[France|French]] units attempted to hold off the German onslaught by making a determined defense of the Dutch province of [[Zeeland]]. The battle lasted eight days and was a disappointing defeat for the French and Dutch forces defending the province. ||| ||| ||| +1 Battle of Zhenhai ||| Sino-French War ||| The '''Battle of Zhenhai''' ({{zh|c=镇海之役}}) was a minor confrontation that took place on 1{{nbsp}}March 1885 between Admiral [[Amédée Courbet]]'s [[Far East Squadron]] (''escadre de l'extrême-Orient'') and Chinese warships and shore batteries near the coastal city of [[Zhenhai]], {{convert|12|mi}} downstream from [[Ningbo]], China during the [[Sino-French War]] (August 1884{{spaced ndash}}April 1885). French and Chinese sources disagree sharply as to what happened; French sources treat the encounter as a minor incident, while Chinese sources consider it a striking defensive victory. The Battle of Zhenhai is still commemorated in China as an important Chinese victory in the Sino-French War. ||| ||| ||| +1 Battle of Zinjibar ||| Yemeni Revolution ||| The '''Battle of Zinjibar''' was a battle during the [[Yemeni Revolution]] between forces loyal to [[Yemen]]i leader [[Ali Abdullah Saleh]] and Islamist militant forces, possibly including elements of [[al-Qaeda in the Arabian Peninsula]] (AQAP), for control of the town of [[Zinjibar]] and its surroundings as part of the wider insurgency in the self-declared [[Abyan Governorate|Islamic Emirate of Abyan]]. Many of the Islamist forces operating in [[Abyan]] province refer to themselves as [[Ansar al-Sharia (Yemen)|Ansar al-Sharia]] ('Partisans of [[Sharia]]'). ||| ||| ||| +1 Battle of the Alamo ||| Texas Revolution ||| The '''Battle of the Alamo''' (February 23 – March 6, 1836) was a pivotal event in the [[Texas Revolution]]. Following a [[siege of the Alamo|13-day siege]], Mexican troops under [[president of Mexico|President]] [[Antonio López de Santa Anna|General Antonio López de Santa Anna]] launched an assault on the [[Alamo Mission in San Antonio|Alamo Mission]] near [[San Antonio de Béxar]] (modern-day San Antonio, [[Texas]], [[United States]]), killing all of the [[Texian]] defenders. Santa Anna's cruelty during the battle inspired many Texians—both Texas settlers and adventurers from the United States—to join the Texian Army. Buoyed by a desire for revenge, the Texians defeated the Mexican Army at the [[Battle of San Jacinto]], on April 21, 1836, ending the revolution. ||| ||| ||| +1 Battle of the Ancre ||| Battle of the Somme ||| The '''Battle of the Ancre''' {{nowrap|(13–18 November),}} was the final large British attack of the [[Battle of the Somme (1916)|Battle of the Somme]] in 1916. After the Battle of Flers–Courcelette on 22 September, the Anglo-French armies tried to press their advantage with several smaller attacks in quick succession, rather than pause to regroup and give the German armies time to recover. Subsequent writers gave discrete dates for the Anglo-French battles but there were considerable overlaps and continuities of operations, until the weather and supply difficulties in mid-November ended the battle until the new year. It was fought by the [[British Fifth Army|Fifth Army]] (the [[Reserve Army (United Kingdom)|Reserve Army]] had been renamed on 30 October) under the command of [[Lieutenant General|Lieutenant-General]] [[Hubert Gough]], against the [[1st Army (German Empire)|German 1st Army]] (General [[Fritz von Below]]). ||| ||| ||| +1 Battle of the Barracks ||| Croatian War of Independence ||| The ZNG and the police captured small, isolated JNA posts, and a number of large weapons depots and barracks{{mdash}}including the entire 32nd ([[Varaždin]]) Corps of the JNA. The move provided the Croatian forces with a sizable stock of weapons{{mdash}}including 250 tanks, hundreds of artillery pieces and a large supply of [[small arms]] and ammunition{{mdash}}which proved crucial in defending against JNA advances in the early stage of the [[Croatian War of Independence]]. Some of the JNA facilities surrendered without fighting, while others put up armed resistance to the takeover. In some places, this caused civilian casualties because the barracks were situated in urban areas. Legal charges of abuse of or killing captured JNA personnel, and charges of war crimes against civilian populations were filed in Croatia, but most defendants remain at large. ||| ||| ||| +1 Battle of the Beaufort (1982) ||| 1982 Lebanon War ||| The '''Battle of the Beaufort''' was fought between the [[Israel Defense Forces]] (IDF) and the [[Palestine Liberation Organization]] (PLO) on June 6, 1982 over [[Beaufort Castle, Lebanon]]. It was one of the first clashes of the [[1982 Lebanon War]], and resulted in the IDF capturing the castle. ||| ||| ||| +1 Battle of the Bogside ||| 1969 Northern Ireland riots ||| The rioting erupted at the end of an [[Apprentice Boys of Derry|Apprentice Boys]] parade which was passing along the [[Derry#City walls|city wall]]s, past the Catholic Bogside. Fierce rioting broke out between local unionists and the police on one side and Catholics on the other. Rioting between police and Bogside residents continued for three days. The police were unable to enter the area and eventually the [[British Army]] was deployed to restore order. The riot, which sparked [[1969 Northern Ireland riots|widespread violence elsewhere]] in Northern Ireland, is commonly seen as one of the first major confrontations in the conflict known as [[the Troubles]]. ||| ||| ||| +1 Battle of the Bogue ||| First Opium War ||| The '''Battle of the Bogue''' was fought between British and Chinese forces at the [[Bocca Tigris]], China, on 23–26 February 1841 during the [[First Opium War]]. As a result, the British captured the forts on the islands of Anunghoy and North Wangtong. ||| ||| ||| +1 Battle of the Bowling Alley ||| Battle of Pusan Perimeter ||| In the '''Battle of the Bowling Alley ''' (August 12–25, 1950), [[United Nations]] (UN) forces defeated [[North Korean]] (NK) forces early in the [[Korean War]] near the city of [[Taegu]], [[South Korea]]. The battle took place in a narrow valley, dubbed the 'Bowling Alley', which was north of Taegu. It followed a week of fighting between the [[North Korean People's Army]] [[NK 13th Division|13th Division]] and the [[Republic of Korea Army]]'s (ROK) [[ROK 1st Division|1st Division]] along the latter's last defensible line in the hills north of the city. Reinforcements, including the [[US Army]]'s [[US 27th Infantry|27th]] and [[US 23rd Infantry|23rd Infantry Regiment]]s were committed to bolster the South Koreans' defenses. This battle and several others were smaller engagements of the [[Battle of Pusan Perimeter]]. ||| ||| ||| +1 Battle of the Brick Church ||| American Civil War ||| The '''Battle of the Brick Church''' was the first land engagement in Northeast Florida between the [[Union Army]] and [[Confederate Army]] of the [[American Civil War]]. It was fought on March 24, 1862 and resulted in the first [[Confederate States of America|Confederate]] victory in [[Florida]]. ||| ||| ||| +1 Battle of the Bulge ||| World War II ||| The '''Battle of the Bulge''' (16 December 1944 – 25 January 1945) was a major German [[military offensive|offensive]] [[military campaign|campaign]] launched through the densely forested [[Ardennes]] region of [[Wallonia]] in Belgium, France, and [[Luxembourg]] on the [[Western Front (World War II)|Western Front]] toward the end of [[World War II]] in Europe. The surprise attack caught the [[Allies (WWII)|Allied]] forces completely off guard. United States forces bore the brunt of the attack and incurred their highest casualties for any operation during the war. The battle also severely depleted Germany's armored forces on the western front, and Germany was largely unable to replace them. German personnel, and later Luftwaffe aircraft (in [[Operation Bodenplatte|the concluding stages of the engagement]]), also sustained heavy losses. ||| ||| ||| +1 Battle of the Caucasus ||| Eastern Front (World War II) ||| The '''Battle of the Caucasus''' is a name given to a series of Axis and Soviet operations in the [[Caucasus]] area on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]]. ||| ||| ||| +1 Battle of the Caucasus ||| World War II ||| The '''Battle of the Caucasus''' is a name given to a series of Axis and Soviet operations in the [[Caucasus]] area on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]]. ||| ||| ||| +1 Battle of the Chateauguay ||| War of 1812 ||| The '''Battle of the Chateauguay''' was an engagement of the [[War of 1812]]. On 26 October 1813, a [[British North America|British]] force consisting of 1,630 regulars, volunteers and militia from [[Lower Canada]] and [[Mohawk nation|Mohawk]] warriors, commanded by [[Charles de Salaberry]], repelled an [[United States|American]] force of about 4,000, including 2,600 regulars, attempting to invade Lower Canada and ultimately attack [[Montreal]]. ||| ||| ||| +1 Battle of the Coral Sea ||| Pacific War ||| The '''Battle of the Coral Sea''', fought during 4–8 May 1942, was a major [[naval battle]] in the [[Pacific War|Pacific Theater]] of World War II between the [[Imperial Japanese Navy]] and naval and air forces from the United States and Australia. The battle was the first action in which [[aircraft carrier]]s engaged each other, as well as the first in which neither side's ships sighted or fired directly upon the other. ||| ||| ||| +1 Battle of the Crater ||| American Civil War ||| The '''Battle of the Crater''' was a battle of the [[American Civil War]], part of the [[Siege of Petersburg]]. It took place on July 30, 1864, between the [[Confederate States Army|Confederate]] [[Army of Northern Virginia]], commanded by [[General (CSA)|General]] [[Robert E. Lee]] and the [[Union Army|Union]] [[Army of the Potomac]], commanded by [[Major general (United States)|Maj. Gen.]] [[George G. Meade]] (under the direct supervision of the general-in-chief, [[Lieutenant General (United States)|Lt. Gen.]] [[Ulysses S. Grant]]). ||| ||| ||| +1 Battle of the Cumberland Gap (June 1862) ||| American Civil War ||| The June 1862 '''capture of the Cumberland Gap''' was a [[Union Army|Union]] victory during the [[American Civil War]] leading to Union occupation of the [[Cumberland Gap]] for three months. ||| ||| ||| +1 Battle of the Dalmatian Channels ||| Croatian War of Independence ||| The '''Battle of the Dalmatian Channels''' was a three-day confrontation between three tactical groups of [[Yugoslav Navy]] ships and [[coastal artillery]], and a detachment of naval commandos of the [[Croatian Navy]] fought on 14–16 November 1991 during the [[Croatian War of Independence]]. On 14 November, the commandos torpedoed a ''Mirna''-class patrol boat PČ-176 ''Mukos'' close to the island of [[Brač]] in the [[Split Channel]] of the [[Adriatic Sea]], prompting a Yugoslav naval bombardment of Brač and [[Šolta|Šolta Island]] the same day. The drifting ''Mukos'' was salvaged by Croatian civilian boats and was beached at [[Nečujam]] bay. ||| ||| ||| +1 Battle of the Great Redan ||| Crimean War ||| The '''Battle of the Great Redan''' was a major battle during the [[Crimean War]], fought between British forces against Russia on 18 June and 8 September 1855 as a part of the [[Siege of Sevastopol (1854)|Siege of Sevastopol]]. The French army successfully stormed the Malakoff redoubt, whereas a simultaneous British attack on the Great Redan to the south of the Malakoff was repulsed. Contemporary commentators have suggested that, although the Redan became so important to the Victorians, it was probably not vital to the taking of Sebastopol. The fort at Malakhov was much more important and it was in the French sphere of influence. It was when the French stormed it after an eleven-month siege that the final, somewhat unnecessary attack on the Redan was made. ||| ||| ||| +1 Battle of the Grebbeberg ||| Battle of the Netherlands ||| The '''Battle of the Grebbeberg''' ({{lang-nl|Slag om de Grebbeberg}}) was a major engagement during the [[Battle of the Netherlands]], which was a part of the [[World War II]] Operation ''[[Fall Gelb]]'' in 1940. ||| ||| ||| +1 Battle of the Grebbeberg ||| World War II ||| The '''Battle of the Grebbeberg''' ({{lang-nl|Slag om de Grebbeberg}}) was a major engagement during the [[Battle of the Netherlands]], which was a part of the [[World War II]] Operation ''[[Fall Gelb]]'' in 1940. ||| ||| ||| +1 Battle of the Göhrde ||| War of the Sixth Coalition ||| The '''battle of the Göhrde''' was a battle of the [[War of the Sixth Coalition]] on 18 September 1813 between French and Coalition troops at Göhrde in Germany. The French troops were defeated and withdrew to [[Hamburg]]. ||| ||| ||| +1 Battle of the Hongorai River ||| Pacific War ||| The '''Battle of the Hongorai River''' took place during the [[Second World War]] and involved [[Australia]]n, [[New Zealand]] and [[Japan]]ese forces. Part of the wider [[Bougainville Campaign]] of the [[Pacific War|Pacific theatre]], the battle was fought in the southern sector of [[Bougainville Island]] and occurred in two distinct periods between 17 April and 22 May 1945, as elements of the Australian [[15th Brigade (Australia)|15th Brigade]] advanced along the Buin Road towards the [[Hongorai River]] and then forced their way across it. Following the end of the initial fighting, the Australian advance towards the main Japanese concentration at [[Buin, Papua New Guinea|Buin]] continued until torrential rain and flooding brought it to a halt, washing away many bridges and roads upon which they relied for supplies. With hostilities coming to a close the Japanese began harassing the Australian [[line of communication]]s, and as the rain stopped and the flooding subsided in late-July and into August, preparations to resume the advance continued. Ultimately, the war came to an end before the final Australian advance began. ||| ||| ||| +1 Battle of the Hook ||| Korean War ||| The '''Third Battle of the Hook''' ({{zh|s=坪村南山战斗}}) was a battle of the [[Korean War]] that took place between a [[United Nations]] force, consisting mostly of [[United Kingdom|British]] troops, supported on their flanks by [[United States|American]] and [[Turkey|Turkish]] units against a predominantly [[China|Chinese]] force. ||| ||| ||| +1 Battle of the Imjin River ||| Korean War ||| The '''Battle of the Imjin River''', also known as the '''Battles of Solma-ri''' ({{lang-ko|설마리 전투}}) or '''Battle of Gloster Hill''' ({{lang|ko|글로스터 고지 전투}}) in [[South Korea]], or as '''Battle of Xuemali''' ({{zh |s=雪马里战斗|p=Xuě Mǎ Lǐ Zhàn Dòu}}) in [[People's Republic of China|China]], took place 22–25 April 1951 during the [[Korean War]]. Troops from the Chinese [[People's Volunteer Army]] attacked [[United Nations]] (UN) positions on the lower [[Imjin River]] in an attempt to achieve a breakthrough and recapture the South Korean capital [[Seoul]]. The attack was part of the Chinese Fifth Phase Campaign, also known as the [[Chinese Spring Offensive]], the aim of which was to regain the initiative on the battlefield after a successful UN counter-offensive in March 1951 had allowed UN forces to establish themselves beyond the [[38th parallel north|38th parallel]] at Line Kansas. ||| ||| ||| +1 Battle of the Java Sea ||| Pacific War ||| The '''Battle of the Java Sea''' was a decisive [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]]. ||| ||| ||| +1 Battle of the Java Sea ||| World War II ||| The '''Battle of the Java Sea''' was a decisive [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]]. ||| ||| ||| +1 Battle of the Ligurian Sea ||| World War II ||| The '''Battle of the Ligurian Sea''' was a naval surface battle that was fought on 18 March 1945 in the [[Gulf of Genoa]] in the [[Mediterranean Sea]]. A German ''[[Kriegsmarine]]'' force, consisting of two torpedo boats and one destroyer, was engaged in an offensive [[Minelayer|mine laying]] operation and was intercepted by a British [[Royal Navy]] force. In this action, the British destroyers {{HMS|Lookout|G32|6}} and {{HMS|Meteor|G73|2}} sank two of the German ships and severely damaged the third. This was Germany's last surface naval battle of the [[World War II|Second World War]]. ||| ||| ||| +1 Battle of the Lycus ||| Third Mithridatic War ||| The '''Battle of the Lycus''' was fought in 66 BC between the [[Roman Republic]] army of [[Pompey]] and the forces of [[Mithridates VI of Pontus]]. The Romans easily won the battle with few losses. Mithridates later committed suicide, finally ending the [[Third Mithridatic War]]. ||| ||| ||| +1 Battle of the Lys (1940) ||| Battle of Belgium ||| The '''Battle of the Lys''' ({{lang-fr|Bataille de la Lys}}, {{lang-nl|Leieslag}}) was a major battle between [[Belgium|Belgian]] and [[Wehrmacht|German forces]] during the [[Battle of Belgium|German Invasion of Belgium]] of 1940. The battle was named after the river [[Leie]] (known as Lys in French), where the battlefield was situated (in Belgium and in [[Nord-Pas-de-Calais]]). ||| ||| ||| +1 Battle of the Malta Convoy (1800) ||| French Revolutionary Wars ||| The '''Battle of the Malta Convoy''' was a naval engagement of the [[French Revolutionary Wars]] fought on 18 February 1800 during the [[Siege of Malta (1798-1800)|Siege of Malta]]. The French garrison at the city of [[Valletta]] in [[Malta]] had been under siege for eighteen months, blockaded on the landward side by a combined force of British, Portuguese and irregular Maltese forces and from the sea by a Royal Navy squadron under the overall command of [[Horatio Nelson|Lord Nelson]] from his base at [[Palermo]] on [[Sicily]]. In February 1800, the Neapolitan government replaced the Portuguese troops with their own forces and the soldiers were convoyed to Malta by Nelson and [[George Elphinstone, 1st Viscount Keith|Lord Keith]], arriving on the 17 February. The French garrison was by early 1800 suffering from severe food shortages, and in a desperate effort to retain the garrison's effectiveness a convoy was arranged at [[Toulon]], carrying food, armaments and reinforcements for Valletta under [[Contre-amiral]] [[Jean-Baptiste Perrée]]. On 17 February, the French convoy approached Malta from the southeast, hoping to pass along the shoreline and evade the British blockade squadron. ||| ||| ||| +1 Battle of the Menin Road Ridge ||| Battle of Passchendaele ||| The '''Battle of the Menin Road Ridge''', sometimes called 'Battle of the Menin Road', was the third British general attack of the [[Battle of Passchendaele|Third Battle of Ypres]] in the First World War. The battle took place from {{nowrap|20–25 September}} 1917, in the Ypres Salient in Flanders on the Western Front. During the pause in Allied general attacks between late August and 20 September, the British changed some infantry tactics, by adopting the 'leap-frog' method of advance, when waves of infantry stopped once they reached their objective then consolidated the ground, while other waves passed through the objective to attack the next one and the earlier waves became the tactical reserve. General adoption of the method was made possible when more artillery was brought into the salient and by increasing the number of aircraft involved in close air support of the attackers and by specialising the tasks of air defence, contact-patrol, counter-attack patrol, artillery observation and ground-attack. ||| ||| ||| +1 Battle of the Miljevci Plateau ||| Croatian War of Independence ||| The '''Battle of the Miljevci Plateau''' was a clash of the [[Croatian Army]] (''Hrvatska vojska'' - HV) and forces of the [[Republic of Serbian Krajina]] (RSK), fought on 21–23 June 1992, during the [[Croatian War of Independence]]. The battle represented the culmination of a series of skirmishes between the HV and the RSK forces in Northern [[Dalmatia]], after the implementation of the [[Vance plan]] and deployment of the [[United Nations Protection Force]] (UNPROFOR) began. The skirmishes occurred in the pink zones—areas under control of the RSK, but outside the [[United Nations Protected Area (UNPROFOR)|UN Protected Areas]] established by the Vance plan. ||| ||| ||| +1 Battle of the Mincio River (1814) ||| War of the Sixth Coalition ||| In the [[War of the Sixth Coalition]], the '''Battle of the Mincio River''' was fought on 8 February 1814 and resulted in an inconclusive engagement between the French under [[Eugène de Beauharnais]] and the [[Austrian Empire|Austrians]] under Field Marshal [[Heinrich von Bellegarde]]. The battle was not as decisive as Eugène hoped, and in the end it had little significant impact upon the major campaign being waged in France. ||| ||| ||| +1 Battle of the Netherlands ||| Battle of France ||| The '''Battle of the Netherlands''' ({{lang-nl|Slag om Nederland}}) was part of [[Battle of France|Case Yellow]] ({{lang-de|Fall Gelb}}), the [[Nazi Germany|German]] invasion of the [[Low Countries]] (Belgium, Luxembourg, and the Netherlands) and France during [[World War II]]. ||| ||| ||| +1 Battle of the Nile ||| French Revolutionary Wars ||| [[Napoleon|Napoleon Bonaparte]] sought to invade Egypt as the first step in a campaign against [[British India]] in an effort to drive Britain out of the [[French Revolutionary Wars]]. As Bonaparte's fleet crossed the Mediterranean, it was pursued by a British force under Nelson, who had been sent from the British fleet in the [[Tagus]] to learn the purpose of the French expedition and defeat it. For more than two months, he chased the French, on several occasions only missing them by a matter of hours. Bonaparte, aware of Nelson's pursuit, enforced absolute secrecy about his destination and was able to capture [[Malta]] and then land in Egypt without interception by the British naval forces. ||| ||| ||| +1 Battle of the Panaro ||| Neapolitan War ||| The '''Battle of the Panaro''' (or '''Modena''' or '''Castelfranco''') was a victory for King [[Joachim Murat]]'s [[Napoleonic Kingdom of Naples|Neapolitan]] forces over a smaller [[Austria]]n force under [[Frederick Bianchi, Duke of Casalanza|Frederick Bianchi]] on 3 April 1815 early in the [[Neapolitan War]]. This defeat on the banks on the [[Panaro (river)|Panaro]] River, just south of [[Modena]] forced the Austrians to retreat behind the [[Po River]]. ||| ||| ||| +1 Battle of the Piave River ||| Italian Front (World War I) ||| With the exit of [[Russian Empire|Russia]] from the war in 1917, [[Austria-Hungary]] was now able to devote significant forces to the [[Italian Front (World War I)|Italian Front]] and to receive reinforcements from their [[German Empire|German allies]]. The Austro-Hungarian emperor [[Charles I of Austria|Karl]] had reached an agreement with the Germans to undertake a new offensive against Italy, a move supported by both the chief of the general staff [[Arthur Arz von Straußenburg]] and the commander of the South Tyrolean Army Group [[Count Franz Conrad von Hötzendorf|Conrad von Hötzendorf]]. In the autumn of 1917 at the [[Battle of Caporetto|Battles of Caporetto and Longarone]], the Germans and Austrians had defeated the Italians who fell back to the [[Piave (river)|Piave]]. ||| Background ||| ||| +1 Battle of the Raz de Sein ||| French Revolutionary Wars ||| The '''Battle of the Raz de Sein''' was a naval engagement of the [[blockade]] of [[Brest, France|Brest]] during the [[French Revolutionary Wars]] between a [[French Navy|French]] and [[Royal Navy]] [[ships of the line]] on 21 April 1798. The British blockade fleet under Admiral [[Alexander Hood, 1st Viscount Bridport|Lord Bridport]] had sailed from [[St Helens, Isle of Wight|St Helens]] on 12 April and on the morning of 21 April was crossing the [[Iroise Passage]] when sails were spotted to the east. Three ships were detached in pursuit, led by the 74-gun ship of the line [[HMS Mars (1794)|HMS ''Mars'']] under Captain [[Alexander Hood (Royal Navy officer)|Alexander Hood]]. As the British ships approached their quarry a third sail was sighted to the southeast close to the coastline and moving north towards Brest. ||| ||| ||| +1 Battle of the Samichon River ||| Korean War ||| The '''Battle of the Samichon River''' (24–26 July 1953) was fought during the final days of the [[Korean War]] between [[United Nations Command|United Nations]] (UN) forces—primarily Australian and American—and the Chinese communist [[People's Volunteer Army]]. The fighting took place on a key position on the [[Jamestown Line]] known as The Hook and saw the defending UN troops, including the [[2nd Battalion, Royal Australian Regiment]] (2 RAR) from the [[28th British Commonwealth Brigade]] and the [[7th Marine Regiment (United States)|US 7th Marine Regiment]], fight off numerous assaults by the Chinese 137th Division during two concerted night attacks, inflicting numerous casualties on the Chinese with [[artillery|heavy artillery]] and [[small arms]] fire. The action was part of a larger, [[division (military)|division]]al-sized Chinese attack against the [[1st Marine Division (United States)|US 1st Marine Division]], with diversionary assaults mounted against the Australians. With the peace talks in [[Panmunjom]] reaching a conclusion, the Chinese had been eager to gain a last-minute victory over the UN forces and the battle was one of the last of the war. ||| ||| ||| +1 Battle of the Segre ||| Spanish Civil War ||| The '''Battle of Segre''' is the collective name of a series of battles that took place along the [[Segre River]] between 4 April 1938 and the 3 January 1939, during the [[Spanish Civil War]] after the Nationalist Faction had broken the lines of the [[Spanish Republican Army]] in the [[Aragon Offensive]]. ||| ||| ||| +1 Battle of the Severn ||| English Civil War ||| The three part [[English Civil War]], starting in 1642 and ending in 1651, had a direct effect on Maryland. The war itself was fought between the supporters of Charles I and the supporters of the [[English Parliament]]. The civil war was followed by a period of time known as the [[English Interregnum]]. During this time the [[English monarchy]] was abolished, the [[Commonwealth of England]] was proclaimed, and England was ruled by [[Oliver Cromwell]], its [[Lord Protector]]. The conflict did not finally resolve itself until 1661 with the coronation of [[Charles II of England|Charles II]], an act known as the [[English Restoration]]. ||| Background ||| The Plundering Time ||| +1 Battle of the Sittang Bend ||| Burma Campaign ||| The '''Battle of the Sittang Bend''' and the '''Japanese Breakout across Pegu Yomas''' were linked Japanese military operations during the [[Burma Campaign]], which took place nearly at the end of [[World War II]]. Surviving elements of the [[Imperial Japanese Army]] who had been driven into the Pegu Yoma attempted to break out eastwards, to join other Japanese troops retreating from British forces. The break-out was the objective of the Japanese [[Twenty-Eighth Army (Japan)|Twenty-Eighth Army]] with support at first from the [[Thirty-Third Army (Japan)|Thirty-third Army]] and later the [[Fifteenth Army (Japan)|Fifteenth Army]]. As a preliminary, the Japanese Thirty-third Army attacked Allied positions in the Sittang Bend, near the mouth of the river, to distract the Allies. However, the British had been alerted to the break-out attempt and it ended in almost complete catastrophe, with heavy losses and some formations being wiped out. ||| ||| ||| +1 Battle of the Sittang Bend ||| World War II ||| The '''Battle of the Sittang Bend''' and the '''Japanese Breakout across Pegu Yomas''' were linked Japanese military operations during the [[Burma Campaign]], which took place nearly at the end of [[World War II]]. Surviving elements of the [[Imperial Japanese Army]] who had been driven into the Pegu Yoma attempted to break out eastwards, to join other Japanese troops retreating from British forces. The break-out was the objective of the Japanese [[Twenty-Eighth Army (Japan)|Twenty-Eighth Army]] with support at first from the [[Thirty-Third Army (Japan)|Thirty-third Army]] and later the [[Fifteenth Army (Japan)|Fifteenth Army]]. As a preliminary, the Japanese Thirty-third Army attacked Allied positions in the Sittang Bend, near the mouth of the river, to distract the Allies. However, the British had been alerted to the break-out attempt and it ended in almost complete catastrophe, with heavy losses and some formations being wiped out. ||| ||| ||| +1 Battle of the Strait of Otranto (1940) ||| Battle of the Mediterranean ||| The '''Battle of the Strait of Otranto''' (12 November 1940) was a minor naval action during the [[Battle of the Mediterranean]] in [[World War II]]. It took place in the [[Strait of Otranto]] in the [[Adriatic Sea]], between [[Italy]] and [[Albania]]. ||| ||| ||| +1 Battle of the Strait of Otranto (1940) ||| World War II ||| The '''Battle of the Strait of Otranto''' (12 November 1940) was a minor naval action during the [[Battle of the Mediterranean]] in [[World War II]]. It took place in the [[Strait of Otranto]] in the [[Adriatic Sea]], between [[Italy]] and [[Albania]]. ||| ||| ||| +1 Battle of the Tagus ||| Liberal Wars ||| The accession of King [[Miguel I of Portugal|Miguel I]] to the throne of Portugal and abolition of the [[Charter of 1826|Constitutional Charter]] had put the country under the rule of an absolutist monarch. Liberals challenged this usurpation, and the struggle of the [[Liberal Wars]] ensued. The government of Miguel I was hostile to France, and became even more so when the popular insurrection of the [[July Revolution]] deposited the absolutist Bourbon king [[Charles X of France|Charles X]], and established a [[constitutional monarchy]] in which [[Louis-Philippe of France|Louis-Philippe]] had become 'King of the French'. Miguel Refused to recognise the [[Monarchy of July]], government recognised his. ||| Background ||| ||| +1 Battle of the Tennis Court ||| Burma Campaign ||| This battle was ultimately to prove to be the turning point of the Battle of Kohima which was the turning point of the [[Burma Campaign]]. Earl [[Louis Mountbatten, 1st Earl Mountbatten of Burma|Louis Mountbatten]], the [[South East Asia Command|Supreme Allied Commander]] in the theatre, described Kohima as ||| Aftermath ||| ||| +1 Battle of the Three Mountains ||| Italian Front (World War I) ||| The '''Battle of Three Mountrains''' was the biggest battle of field artillery of the First World War and one of the largest in the world military history. It was fought from January 28 to 31, 1918, and in June 30, 1918 on the [[Italian Front (World War I)|Italian Front]] during [[World War I]]. Was a series of very heavy historical victories battle of the [[Kingdom of Italy (1861-1946)|Italian]] for the conquest of three strategical mountains positions, the ''three mountains'' of: col del Rosso, col d'Ecchele and the monte Valbella, on the plateau of [[Sette Comuni]], in the [[Province of Vicenza]]. ||| ||| ||| +1 Battle of the Tugela Heights ||| Second Boer War ||| The '''Battle of Tugela (or Thukela) Heights''', consisted of a series of military actions lasting from 14 February through 27 February 1900 in which General Sir [[Redvers Buller]]'s British army forced [[Louis Botha]]'s Boer army to lift the [[Siege of Ladysmith]] during the [[Second Boer War]]. ||| ||| ||| +1 Battle of the Twin Tunnels ||| Korean War ||| The '''Battle of the Twin Tunnels''' ({{lang-fr|Bataille de Twin-Tunnels}}) took place during the [[Korean War]]. In which the 1st Battalion 23rd Infantry Regiment 3rd Brigade Combat Team 2nd Infantry Division and elements of the 21st Infantry Regiment 24th Infantry Division inflicted heavy casualties for the [[People's Volunteer Army]]. ||| ||| ||| +1 Battle of the Wilderness ||| American Civil War ||| The '''Battle of the Wilderness''', fought May 5-7, 1864, was the first battle of [[Lieutenant general (United States)|Lt. Gen.]] [[Ulysses S. Grant]]'s 1864 Virginia [[Overland Campaign]] against [[General (CSA)|Gen.]] [[Robert E. Lee]] and the [[Confederate States Army|Confederate]] [[Army of Northern Virginia]] in the [[American Civil War]]. Both armies suffered heavy casualties, a harbinger of a bloody [[Attrition warfare|war of attrition]] by Grant against Lee's army and, eventually, the Confederate capital, [[Richmond in the American Civil War|Richmond, Virginia]]. The battle was [[Military tactics|tactically]] inconclusive, as Grant disengaged and continued his offensive. ||| ||| ||| +1 Battle of the Yser ||| Race to the Sea ||| The German army failed to defeat the Belgian army and the retention of the last corner of Belgium ended the [[Race to the Sea]] and the period of open warfare. The stabilized front line along the Yser river became known as the [[Yser Front]] and continued to be held by Belgian forces until 1918 with little movement. ||| Aftermath ||| Analysis ||| +1 Battle of Ölper (1809) ||| War of the Fifth Coalition ||| The '''Battle of Ölper''' is a battle that took place on 1 August 1809 in Ölper, currently a district of the town of [[Braunschweig|Brunswick]], as part of the [[War of the Fifth Coalition]]. It pitched troops of the [[Kingdom of Westphalia]] against the [[Black Brunswickers]] under [[Frederick William, Duke of Brunswick-Wolfenbüttel]], but ended in a tactical draw. ||| ||| ||| +1 Battle of Đông Khê ||| First Indochina War ||| The '''Battle of Dong Khe''' (September 1950) was a major battle of the [[First Indochina War]] fought at [[Đông Khê]]. ||| ||| ||| +1 Battle of Şarköy ||| First Balkan War ||| The '''Battle of Şarköy''' or '''Sarkoy operation''' ({{lang-bg|Битка при Шаркьой}}, {{lang-tr|Şarköy Çıkarması}}) took place between 9 and 11 February 1913 during the [[First Balkan War]] between [[Bulgaria]] and the [[Ottoman Empire]]. The Ottomans attempted a counter-attack, but were defeated by the [[Bulgarians]] at the Battles of [[Battle of Bulair|Bulair]] and Şarköy. ||| ||| ||| +1 Battle of Šibenik ||| Croatian War of Independence ||| The '''Battle of Šibenik''' ({{lang-hr|Bitka za Šibenik}}), also known as the '''September War''' (''Rujanski rat''), was an armed conflict fought between the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA), supported by the [[Croatian Serb]]-established [[Serbian Autonomous Oblast of Krajina]] (SAO Krajina), and the [[Croatian National Guard]] (''Zbor Narodne Garde'' – ZNG), supported by the [[Croatian Police]]. The battle was fought to the north and west of the city of [[Šibenik]], [[Croatia]] on 16-22 September 1991, during the [[Croatian War of Independence]]. The JNA's initial orders were to relieve Croatian [[Battle of the Barracks|siege of their barracks]] in the city and isolate the region of [[Dalmatia]] from the rest of Croatia. The JNA's advance was supported by the [[Yugoslav Air Force]] and the [[Yugoslav Navy]]. ||| ||| ||| +1 Battle off Horaniu ||| World War II ||| The '''Battle off Horaniu''' (Japanese: 第一次ベララベラ海戦) was a minor [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]] fought on the night of 17 August 1943 near the island of [[Vella Lavella]] in the [[Solomon Islands]] ||| ||| ||| +1 Battle off Samar ||| Battle of Leyte Gulf ||| The '''Battle off Samar''' was the centermost action of the [[Battle of Leyte Gulf]], one of the [[largest naval battle in history|largest naval battles in history]], which took place in the [[Philippine Sea]] off [[Samar (island)|Samar]] Island, in the Philippines on October 25, 1944. As the only major action in the larger battle where the Americans were largely unprepared against the opposing forces, it has been cited by historians as one of the greatest military mismatches in naval history. ||| ||| ||| +1 Battle off Ulsan ||| Russo-Japanese War ||| The naval '''Battle off Ulsan''' (Japanese: 蔚山沖海戦 ''Urusan'oki kaisen''; Russian: Бой в Корейском проливе, ''Boi v Koreiskom prolive''), also known as the '''Battle of the Japanese Sea''' or '''Battle of the Korean Strait''', took place on 14 August 1904 between cruiser squadrons of the [[Imperial Russian Navy]] and the [[Imperial Japanese Navy]] during the [[Russo-Japanese War]], four days after the [[Battle of the Yellow Sea]]. ||| ||| ||| +1 Battle off Zuwarah ||| World War II ||| The '''Battle off Zuwarah''' was a [[World War II]] [[naval battle]] which took place on the night of 19 January 1943 in [[British Military Administration (Libya)|Libyan]] waters between [[United Kingdom|British]] and [[Kingdom of Italy (1861–1946)|Italian]] forces. The battle ended with the complete destruction of an Italian flotilla of small minesweepers and auxiliary vessels. ||| ||| ||| +1 Battle off the coast of Abkhazia ||| Russo-Georgian War ||| The '''Battle off the coast of Abkhazia''' was a naval engagement between warships of the Russian [[Black Sea Fleet]] and Georgian patrol boats during the [[Russo-Georgian War]]. ||| ||| ||| +1 Battle on Snowshoes (1757) ||| French and Indian War ||| The '''1757 Battle on Snowshoes''' was a skirmish fought between [[Rogers' Rangers]] and [[France|French]] and Indian troops during the [[French and Indian War]] on January 21, 1757. The battle was given this name because the British combatants were wearing [[snowshoes]]. ||| ||| ||| +1 Battles of Fort Budapest ||| Yom Kippur War ||| The '''Battles of Fort Budapest''' ({{lang-he|מעוז בודפשט}}) refer to two attempts by the [[Egyptian Army]] to capture Fort Budapest, part of the [[Bar Lev Line]] during the [[Yom Kippur War]]. The first attempt took place at noon on October 6, 1973 with the start of [[Operation Badr (1973)|Operation Badr]], but failed due to [[Israeli Air Force]] intervention. The second attempt took place on October 15, at the onset of [[Operation Abiray-Lev]], the Israeli military operation to cross the [[Suez Canal]]. Despite significant setbacks caused by poor sea conditions, the second attack was on the verge of success when the Israeli Air Force once again intervened, and this, coupled with Israeli reinforcements, repelled the Egyptian attack. ||| ||| ||| +1 Battles of Narvik ||| World War II ||| The '''Battles of Narvik''' were fought from 9 April to 8 June 1940 as a naval battle in the [[Ofotfjord]] and as a land battle in the mountains surrounding the north Norwegian city of [[Narvik]] as part of the [[Norwegian Campaign]] of the [[World War II|Second World War]]. ||| ||| ||| +1 Battles of Saratoga ||| American Revolutionary War ||| The '''Battles of Saratoga''' (September 19 and October 7, 1777) marked the climax of the [[Saratoga campaign]] giving a decisive victory to the Americans over the British in the [[American Revolutionary War]]. British General [[John Burgoyne]] led a large invasion army up the Champlain Valley from Canada, hoping to meet a similar force marching northward from New York City; the southern force never arrived, and Burgoyne was surrounded by American forces in upstate New York. Burgoyne fought two small battles to break out. They took place eighteen days apart on the same ground, {{convert|9|mi|km}} south of [[Saratoga, New York]]. They both failed. Trapped by superior American forces, with no relief in sight, Burgoyne surrendered his entire army on October 17. His surrender, says historian [[Edmund Morgan (historian)|Edmund Morgan]], 'was a great turning point of the war, because it won for Americans the foreign assistance which was the last element needed for victory. ||| ||| ||| +1 Battles of Wenden (1577–78) ||| Livonian War ||| The '''Battles of Wenden''' were a series of battles for control of the stronghold of [[Cēsis|Wenden]] (Cēsis, Kiesia, Võnnu), in present-day [[Latvia]], fought during the [[Livonian War]] in 1577 and 1578. [[Magnus, Duke of Holstein|Magnus of Livonia]] besieged the town in August 1577, but was deposed and replaced by Russian forces under tsar [[Ivan IV of Russia|Ivan IV]] who eventually sacked the town and [[Cēsis Castle|castle]] in what became a symbolic victory. Polish forces however re-captured the stronghold in November, and beat back a Russian counter-attack in February 1578. ||| ||| ||| +1 Beersheba bus bombings ||| Second Intifada ||| During the [[Second Intifada]] in the early 2000s (decade), at the time which was characterized by an [[List of Palestinian suicide attacks|intensified period of suicide attacks were carried out in Israel]] by the Palestinian militant organizations in Israel, Be'er Sheva was considered a relatively safe place, as it did not experience any terror attacks. ||| Background ||| ||| +1 Belostock Offensive ||| Operation Bagration ||| The '''Belostock Offensive''' ({{lang-ru|Белостокская наступательная операция}}) was part of the third and final phase of the Belorussian Strategic Offensive of the [[Red Army]] in summer 1944, commonly known as [[Operation Bagration]]. ||| ||| ||| +1 Big Sandy Expedition ||| American Civil War ||| | part of = [[American Civil War]] ||| ||| ||| +1 Bijeljina massacre ||| Bosnian War ||| The '''Bijeljina massacre''' was the mass killing of mostly [[Bosniaks]] (or Bosnian Muslims) in the town of [[Bijeljina]] on 1–2 April 1992, during the [[Bosnian War]]. The dead included members of other ethnicities, such as Serbs deemed unloyal by the local authorities. The killing was committed by a local paramilitary group known as Mirko's [[Chetniks]] and by the [[Serb Volunteer Guard]] (SDG), a [[Republic of Serbia (1990-2006)|Serbian]]-based [[paramilitary]] group under the command of the [[Yugoslav People's Army]] (JNA) that was controlled by [[President of Serbia|Serbian President]] [[Slobodan Milošević]]. ||| ||| ||| +1 Bird's invasion of Kentucky ||| American Revolutionary War ||| '''Bird's invasion of Kentucky''' during the [[American Revolutionary War]] was one phase of an extensive planned series of operations planned by the [[Kingdom of Great Britain|British]] in 1780, whereby the entire West, from [[Province of Quebec (1763-1791)|Quebec]] to the [[Gulf of Mexico]], was to be swept clear of both Spanish and colonial resistance. ||| ||| ||| +1 Biscay Campaign ||| Spanish Civil War ||| The '''Biscay Campaign''' ({{lang-es|Campaña de Vizcaya}}) was an offensive of the [[Spanish Civil War]] which lasted from 31 March to 1 July 1937. 50,000 men of the [[Eusko Gudarostea]] met 65,000 men of the insurgent forces. After heavy combats the Nationalist forces with a crushing material superiority managed to occupy the city of Bilbao and the Biscay province. ||| ||| ||| +1 Black Friday (1978) ||| Iranian Revolution ||| '''Black Friday''' ([[Persian language|Persian]]: جمعه سیاه ''Jom'e-ye Siyāh'') is the name given to 8 September 1978 (17 Shahrivar 1357 [[Iranian calendar]]) and the shootings in Jaleh Square ([[Persian language|Persian]]: میدان ژاله ''Meydān-e Jāleh'') in [[Tehran]], [[Iran]]. The deaths and the reaction to them has been described as a pivotal event in the [[Iranian Revolution]] when any 'hope for compromise' between the protest movement and the Shah's regime was extinguished. ||| ||| ||| +1 Black Saturday (Lebanon) ||| Lebanese Civil War ||| '''Black Saturday''' was a series of [[Wiktionary:massacre|massacres]] and armed clashes in [[Beirut]], that occurred in the first stages of the [[Lebanese Civil War]]. ||| ||| ||| +1 Black Sea campaigns (1941–44) ||| World War II ||| The '''Black Sea Campaigns''' are the operations of the Axis and Soviet naval forces in the [[Black Sea]] and its coastal regions during [[World War II]] between 1941 and 1944, including in support of the land forces, and non-combat operations. ||| ||| ||| +1 Blockade of Almeida ||| Peninsular War ||| In the '''Blockade of Almeida''' (14 April – 10 May 1811) a French garrison under [[Antoine François Brenier de Montmorand]] was surrounded by approximately 13,000 Anglo-Allied soldiers led by Generals [[Sir Alexander Campbell, 1st Baronet]] and [[Sir William Erskine, 2nd Baronet]]. After a French relief attempt failed, Brenier and his troops broke out at night after blowing up portions of the fortress. To the fury of the British army commander [[Arthur Wellesley, 1st Duke of Wellington|Arthur Wellesley, Viscount Wellington]], most of the French escaped due to their commander's single-minded determination, British fumbling, and remarkably good luck. The action took place during the [[Peninsular War]] portion of the [[Napoleonic Wars]]. [[Almeida, Portugal]] is located near the Spanish border about {{convert|300|km|mi|0}} northeast of [[Lisbon]]. The town was originally captured from a Portuguese garrison during the [[Siege of Almeida (1810)|1810 Siege of Almeida]]. ||| ||| ||| +1 Blockade of Iquique ||| War of the Pacific ||| Once war was declared by Chile upon Peru on Saturday, April 5, 1879, the first Chilean naval action for the [[War of the Pacific]] was set in motion. The plan was to block the Peruvian port of [[Iquique]] the same day the declaration of war was made. The first phase of the blockade ended on May 21, 1879, after the clashes between the Peruvian ships Huascar and Independencia versus the Chilean ships Esmeralda and Covadonga. ||| ||| ||| +1 Bloody Sunday (1900) ||| Second Boer War ||| '''Bloody Sunday''' of February 18, 1900, was a day of high Imperial casualties in the [[Second Boer War]]. ||| ||| ||| +1 Bloody Sunday (1921) ||| Irish War of Independence ||| '''Bloody Sunday''' or '''Belfast's Bloody Sunday''' was a day of violence in [[Belfast]], [[Northern Ireland]], on 10 July 1921, during the [[Irish War of Independence]]. Over a four-day period, 22 people were killed, 16 of them on 10 July itself. Another 70 people were badly wounded and 200 houses were destroyed. ||| ||| ||| +1 Bombardment of Ellwood ||| World War II ||| The '''Bombardment of Ellwood''' during [[World War II]] was a naval attack by a [[Empire of Japan|Japanese]] submarine against [[United States]] coastal targets near [[Santa Barbara, California]]. Though damage was minimal, the event was key in triggering the [[West Coast of the United States|West Coast]] invasion scare and influenced the decision to [[Japanese American internment|intern]] [[Japanese-American]]s. The event also marked the first shelling of the [[North America]]n mainland during the conflict. ||| ||| ||| +1 Bombing of Alicante ||| Spanish Civil War ||| The bombing of [[Alicante, Spain|Alicante]] was an aerial attack against the Spanish city of Alicante on 25 May 1938. It was one of the deadliest aerial bombings of the [[Spanish Civil War]]. ||| ||| ||| +1 Bombing of Banski dvori ||| Croatian War of Independence ||| The '''bombing of Banski dvori''' ({{lang-hr|bombardiranje Banskih dvora}}) was a [[Yugoslav Air Force]] strike on the [[Banski dvori]] in [[Zagreb]]&mdash;the [[official residence]] of the [[President of Croatia]] at the time of the [[Croatian War of Independence]]. The bombing occurred on 7 October 1991, as a part of a Yugoslav Air Force attack on a number of targets in the Croatian capital city. One civilian was reported killed by [[strafing]] of the [[Tuškanac]] city district and four were injured. ||| ||| ||| +1 Bombing of Cabra ||| Spanish Civil War ||| The '''Bombing of Cabra''' was a [[Second Spanish Republic|Republican]] airstrike which took place in [[Cabra, Spain|Cabra]], [[Córdoba (Spanish province)|Córdoba]], [[Andalusia]] on 7 November 1938, during the [[Spanish Civil War]]. The air raid left 109 people killed, and more than 200 wounded. ||| ||| ||| +1 Bombing of Darwin ||| Pacific War ||| Following the outbreak of the [[Pacific War]] in early December 1941, Darwin's defences were strengthened. In line with plans developed before the war, several [[Australian Army]] and RAAF units stationed in the town were sent to the [[Dutch East Indies]] (DEI) to strengthen the defences of the islands of [[Ambon Island|Ambon]] and [[Timor]]. ||| Background ||| ||| +1 Bombing of Durango ||| Spanish Civil War ||| The '''Bombing of Durango''' took place on 31 March 1937, during the [[Spanish Civil War]]. On 31 March 1937 the Nationalists started their offensive against the Republican held province of Biscay. The same day the ''Legion Condor'' and the ''Aviazione Legionaria'' bombed the town of Durango. Around 250 civilians died, among them one priest and fourteen nuns. Durango was the first defenseless European city bombed. The Nationalists never acknowledged their guilt. ||| ||| ||| +1 Bombing of Tan Son Nhut Air Base ||| Fall of Saigon ||| The '''bombing of Tan Son Nhut Air Base''' occurred on April 28, 1975, just two days before the [[Fall of Saigon]]. The bombing operation was carried out by the [[Vietnam People's Air Force]] (VPAF) Quyet Thang Squadron, using captured [[Vietnam Air Force|Republic of Vietnam Air Force]] (RVNAF) [[Cessna A-37 Dragonfly|A-37]] aircraft flown by VPAF pilots and RVNAF defectors led by Nguyen Thanh Trung who had bombed the [[Reunification Palace|Presidential Palace]] in [[Saigon]], less than one month earlier. ||| ||| ||| +1 Bombing of Tokyo ||| Pacific War ||| The {{nihongo|'''Bombing of Tokyo'''|東京大空襲|Tōkyōdaikūshū}}, often referred to as a series of [[firebombing]] raids, was conducted as part of the [[air raids on Japan]] by the [[United States Army Air Forces]] during the [[Pacific War|Pacific campaigns]] of World War II. The US first mounted [[Doolittle Raid|a small-scale raid on Tokyo]] in April 1942. [[Strategic bombing]] and urban [[area bombing]] began in 1944 after the long-range [[B-29 Superfortress]] [[bomber]] entered service, first deployed from [[China]] and thereafter the [[Mariana Islands]]. B-29 raids from those islands began on 17 November 1944, and lasted until 15 August 1945, the day Japan capitulated. ||| ||| ||| +1 Bophuthatswana conflict (1994) ||| South African general election, 1994 ||| The '''1994 Bophuthatswana conflict''' was a popular uprising against, and subsequent removal of, [[Lucas Mangope]]'s regime in [[Bophuthatswana]], a [[South Africa]]n [[bantustan]] created during [[apartheid]]. The conflict - which was formally suppressed by the [[South African Defence Force]] on March 12 - resulted from wildcat strikes, a wave of support for the [[African National Congress]] then sweeping the territory, mutiny in the armed services, and Mangope's refusal to participate in [[South African general election, 1994|general elections]]. It has been remembered largely for the public shooting of three right-wing [[Afrikaner]] extremists by a black officer of the Bophuthatswana Police. This proved to be a public relations disaster for the far right and demoralised [[Afrikaner Weerstandsbeweging]] militants hoping to preserve [[White South African|white]] [[minority rule]]. ||| ||| ||| +1 Bosnian Genocide ||| Bosnian War ||| The term '''Bosnian Genocide''' refers to either genocide at [[Srebrenica]] and [[Žepa]] that took place during the 1992–1995 [[war in Bosnia and Herzegovina|Bosnian War]]. ||| ||| ||| +1 Bougainville Campaign ||| Pacific War ||| The '''Bougainville Campaign''' ('''Operation Cherry Blossom''') was a series of land and naval battles of the [[Pacific War|Pacific campaign]] of [[World War II]] between Allied forces and the [[Empire of Japan]]. It was part of [[Operation Cartwheel]], the [[Allies of World War II|Allied]] [[grand strategy]] in the [[Pacific Ocean|South Pacific]]. The campaign took place in the [[North Solomon Islands|Northern Solomons]] in two phases: the first phase, in which American troops invaded and held the Perimeter around the beachhead, lasted from November 1943 through November 1944; the second phase, in which British Commonwealth troops attempted to mop up pockets of starving, isolated but still-determined Japanese, lasted from November 1944 until August 1945, when the last Japanese on the island surrendered. ||| ||| ||| +1 Bougainville Campaign ||| World War II ||| The '''Bougainville Campaign''' ('''Operation Cherry Blossom''') was a series of land and naval battles of the [[Pacific War|Pacific campaign]] of [[World War II]] between Allied forces and the [[Empire of Japan]]. It was part of [[Operation Cartwheel]], the [[Allies of World War II|Allied]] [[grand strategy]] in the [[Pacific Ocean|South Pacific]]. The campaign took place in the [[North Solomon Islands|Northern Solomons]] in two phases: the first phase, in which American troops invaded and held the Perimeter around the beachhead, lasted from November 1943 through November 1944; the second phase, in which British Commonwealth troops attempted to mop up pockets of starving, isolated but still-determined Japanese, lasted from November 1944 until August 1945, when the last Japanese on the island surrendered. ||| ||| ||| +1 Brusilov Offensive ||| Eastern Front (World War I) ||| The offensive involved a major Russian attack against the armies of the [[Central Powers]] on the [[Eastern Front (World War I)|Eastern Front]], launched on June 4, 1916, and lasting until late September. It took place in an area of present-day western [[Ukraine]], in the general vicinity of the towns of [[Lviv]], [[Kovel]], and [[Lutsk]]. The offensive was named after the commander in charge of the [[Southwestern Front (Russian Empire) | Southwestern]] [[Front (military formation) | Front]] of the [[Imperial Russian Army]], [[General]] [[Aleksei Brusilov]]. ||| ||| ||| +1 Burning of Washington ||| War of 1812 ||| The '''Burning of Washington ''' in 1814 was an attack during the [[War of 1812]] between [[United Kingdom of Great Britain and Ireland|British]] forces and those of the [[United States of America]]. On August 24, 1814, after defeating the Americans at the [[Battle of Bladensburg]], a British force led by Major General [[Robert Ross (British army officer)|Robert Ross]] occupied [[Washington, D.C.]] and set fire to many public buildings, including the [[White House]] (known as the ''Presidential Mansion'' at the time), and the [[U.S. Capitol|Capitol]], as well as other facilities of the [[United States government|U.S. government]]. ||| ||| ||| +1 Cambodian Campaign ||| Vietnam War ||| The '''Cambodian Campaign''' (also known as the '''Cambodian Incursion''' and the '''Cambodian Invasion''') was a series of military operations conducted in eastern [[Cambodia]] during mid-1970 by the United States and the [[Republic of Vietnam]] (South Vietnam) during the [[Vietnam War]]. These invasions were a result of the policy of President [[Richard Nixon]]. A total of 13 major operations were conducted by the Army of the Republic of Vietnam (ARVN) between 29 April and 22 July and by US forces between 1 May and 30 June. ||| ||| ||| +1 Campaign of Grodno ||| Great Northern War ||| The '''Campaign of Grodno''' was a plan developed by [[Johann Patkul]] and [[Otto Arnold von Paykull]] during the [[Charles XII invasion of Poland|Swedish invasion of the Polish–Lithuanian Commonwealth]], a part of the [[Great Northern War]]. Its purpose was to crush [[Charles XII|Charles XII's]] army with overwhelming force in a combined offensive of Russian and Saxon troops. The campaign, executed by [[Peter the Great|Peter I of Russia]] and [[Augustus II the Strong|Augustus II of Saxony]], began in July 1705 and lasted almost a year. In divided areas the allies would jointly strike the Swedish troops occupied in Poland, in order to neutralize the influence the Swedes had in the Polish politics. However, the Swedish forces under Charles XII successfully outmaneuvered the allies, installed a Polish king in favor of their own and finally won two decisive victories at [[Battle of Grodno (1706)|Grodno]] and [[Battle of Fraustadt|Fraustadt]] in 1706. This resulted in the [[Treaty of Altranstädt (1706)]] in which Augustus renounced his claims to the Polish throne, broke off his alliance with Russia, and established peace between Sweden and Saxony. ||| ||| ||| +1 Campaign to Suppress Bandits in Northern China ||| Chinese Civil War ||| The '''Campaign to Suppress Bandits in [[North China|Northern China]]''' (华北剿匪) was a counter-guerrilla / counterinsurgency campaign the [[Communist Party of China|communists]] fought against the [[Kuomintang|nationalist]] guerrilla that mostly consisted of bandits and nationalist regular troops left behind after the nationalist government withdrew from mainland China. The campaign was fought during the [[Chinese Civil War]] in the post-World War II era, and resulted in [[communist]] victory. ||| ||| ||| +1 Campaign to Suppress Bandits in Northwestern China ||| Chinese Civil War ||| The '''Campaign to Suppress Bandits in [[Northwestern China]]''' (西北剿匪) was a counter-[[Guerrilla warfare|guerrilla]]/[[counter-insurgency]] campaign the [[Communist Party of China|communists]] fought against the [[Kuomintang|nationalist]] guerrilla force that mostly consisted of bandits and [[National Revolutionary Army|nationalist regular troops]] left behind after the nationalist government withdrew from mainland China. The campaign was fought during the [[Chinese Civil War]] in the post-[[World War II]] era in the northwestern China, and resulted in communist victory. ||| ||| ||| +1 Canada's Hundred Days ||| Western Front (World War I) ||| '''Canada's Hundred Days''' was a series of attacks made along the [[Western Front (World War I)|Western Front]] by the [[Canadian Corps]] during the [[Hundred Days Offensive]] of World War I. Reference to this period as Canada's Hundred Days is due to the substantial role the [[Canadian Corps]] of the [[British First Army]] played in causing the defeat and/or retreat of the [[German Army (German Empire)|German Army]] in a series of major battles from [[Amiens]] to [[Mons]] which along with other Allied offensives ultimately led to Germany's final defeat and surrender. During this time, the [[Canadian Corps]] fought at [[Battle of Amiens (1918)|Amiens]], [[Second Battle of the Somme (1918)|Arras]], the [[Hindenburg Line]], the [[Battle of the Canal du Nord|Canal du Nord]], [[Bourlon Wood Memorial|Bourlon Wood]], [[Battle of Cambrai (1918)|Cambrai]], [[Denain]], [[Valenciennes]] and finally at [[Mons]], on the final day of the First World War. In terms of numbers, during those 96 days the Canadian Corps' four over-strength or 'heavy' [[Division (military)|divisions]] of roughly 100 000 men, engaged and defeated or put to flight elements of forty seven German divisions, which represented one quarter of the German forces faced by the Allied Powers fighting on the Western Front. ||| ||| ||| +1 Canton Operation ||| Second Sino-Japanese War ||| The '''Canton Operation''' was part of a campaign by [[Japan]] during the [[Second Sino-Japanese War]] to blockade [[China]] to prevent it from communicating with the outside world and importing needed arms and materials. Control of Canton and the [[Pearl River Delta]] would provide a base to make the blockade of [[Guangdong]] province more effective by seizing southern China's major port and isolate the British port of [[Hong Kong]]. ||| ||| ||| +1 Capture of Chusan ||| First Opium War ||| The '''first capture of Chusan''' by British forces in China occurred on 5–6 July 1840 during the [[First Opium War]]. The British captured [[Zhoushan Island|Chusan]], the largest island of an archipelago of that name. ||| ||| ||| +1 Capture of Combles ||| Battle of the Somme ||| '''Combles''' lies {{convert|30|mi|km}} north-east of [[Amiens]] and {{convert|10|mi|km}} east of [[Albert, Somme|Albert]], on the D 20 Rancourt–Guillemont road, {{convert|8|mi|km}} south of Bapaume, in the Combles valley a hollow between outcrops of Bazentin Ridge, between Morval to the north, Ginchy to the north-west and Falfemont Farm to the west. North of the village the valley widens into a basin, which forks north-east around the Morval Spur. In late September 1914, military operations took place in the vicinity, when the [[II Royal Bavarian Corps|II Bavarian Corps]] was engaged by French Territorial divisions in an encounter battle. The French divisions were forced back and the two divisions of the II Bavarian Corps, advanced westwards on the north side of the Somme, eventually being stopped around Maricourt, Montauban and Fricourt. Combles became a backwater until the [[Battle of the Somme]] in 1916, when it was used as a shelter for reserves, supplies and engineer stores and as a staging area reinforcements. {{lang|de|''Gallwitz Riegel''}} the German third defensive position being built as the battle began, ran close behind the village. ||| ||| ||| +1 Capture of Eilean Donan Castle ||| War of the Quadruple Alliance ||| The '''Capture of Eilean Donan Castle''' was an land-based naval engagement that took place in 1719 during the [[Jacobite Rising]] of that year, and the [[War of the Quadruple Alliance]]. A British naval [[reconnaissance]] force of three ships attacked the castle of [[Eilean Donan]] on the west coast of Scotland, which was held by Spanish troops. After a naval bombardment, the British government forces stormed the castle, and the defenders surrendered. The castle was subsequently destroyed with gunpowder. ||| ||| ||| +1 Capture of HMS Savage ||| American Revolutionary War ||| The '''Capture of HMS ''Savage''''' refers to a naval battle of the [[American Revolutionary War|Revolutionary War]] involving the [[United States|American]] [[privateer]] ''Congress'' and the [[Kingdom of Great Britain|British]] [[sloop-of-war]] {{HMS|Savage|1778|6}}. It occurred in September 1781 off [[South Carolina]] and is considered one of the hardest fought [[single ship action]]s of the war. ||| ||| ||| +1 Capture of Kufra ||| Western Desert Campaign ||| The '''Capture of Kufra/{{lang|fr|''Prise de Koufra''}}''' ('''Koufra''', '''Cufra''') was part of the [[World War II]] Allies [[Western Desert Campaign]] in the colony of [[Italian Libya]], in the [[Libyan Desert]] of present-day south-eastern [[Libya]]. The battle resulted in the 1941 capture of the important but isolated [[oasis]] of [[Kufra]] by [[Free France|Free French Forces]] and the British [[Long Range Desert Group]] from the Italian garrison. ||| ||| ||| +1 Capture of Kufra ||| World War II ||| The '''Capture of Kufra/{{lang|fr|''Prise de Koufra''}}''' ('''Koufra''', '''Cufra''') was part of the [[World War II]] Allies [[Western Desert Campaign]] in the colony of [[Italian Libya]], in the [[Libyan Desert]] of present-day south-eastern [[Libya]]. The battle resulted in the 1941 capture of the important but isolated [[oasis]] of [[Kufra]] by [[Free France|Free French Forces]] and the British [[Long Range Desert Group]] from the Italian garrison. ||| ||| ||| +1 Capture of Le Quesnoy (1918) ||| Battle of the Sambre (1918) ||| The '''Capture of Le Quesnoy''' was an engagement of the [[First World War]] that took place on 4 November 1918 as part of the [[Battle of the Sambre (1918)|Battle of the Sambre]].{{sfn|James|1924|p=40}} Elements of the [[New Zealand Division]] [[Escalade|scaled]] the fortified walls of the French town of [[Le Quesnoy]] and captured it from the defending German garrison ||| ||| ||| +1 Capture of Le Sars ||| Battle of the Somme ||| Military operations began in the area in September 1914 during the [[Race to the Sea]], when the divisions of the [[II Royal Bavarian Corps|II Bavarian Corps]] advanced westwards on the north bank of the Somme, passing through Le Sars towards Albert and Amiens. The village became a backwater until 1916, when the British and French began the [[Battle of the Somme]] {{nowrap|(1 July – 13 November)}} and was the site of several air operations by the [[Royal Flying Corps]], which attacked German supply dumps in the vicinity. During the [[Battle of Flers–Courcelette]] {{nowrap|(15–22 September),}} the British Fourth Army advanced close to the village and operations to capture it began on 1 October. The village was overrun by the [[23rd Division (United Kingdom)|23rd Division]] on 7 October, during the [[Battle of Le Transloy]] {{nowrap|(1 October – 5 November),}} several hundred prisoners being taken from the [[4th Ersatz Division (German Empire)|4th ''Ersatz'' Division]]. ||| ||| ||| +1 Capture of New Orleans ||| American Civil War ||| The '''capture of New Orleans''' (April 25 – May 1, 1862) during the [[American Civil War]] was an important event for the Union. Having fought past [[Battle of Forts Jackson and St. Philip|Forts Jackson and St. Philip]], the [[Union (American Civil War)|Union]] was unopposed in its capture of the city itself, which was spared the destruction suffered by many other [[Southern United States|Southern]] cities. However, the controversial and confrontational administration of the city by its U.S Army military governor caused lasting resentment. This capture of the largest [[Confederate States of America|Confederate]] city was a major [[Turning point of the American Civil War|turning point]] and an incident of international importance. ||| ||| ||| +1 Capture of Regina Trench ||| Battle of the Somme ||| '''Regina Trench''' ({{lang|de|''Staufen Riegel''}}) was a [[Germany|German]] [[trench]] dug along the north-facing slope of a ridge running from north-west of the village of [[Le Sars]], south-westwards to Stuff Redoubt ({{lang|de|''Staufenfeste''}}), close to the German fortifications at [[Thiepval]] on the [[Battle of the Somme|Somme battlefield]]. It was the longest such trench on the German front during the [[World War I|First World War]]. Attacked several times by the [[Canadian Corps]] during the [[Battle of the Ancre Heights]], the [[2nd Canadian Division|5th Canadian Brigade]] briefly controlled a section of the trench on 1 October but was repulsed by counter-attacks of the German [[Naval Corps (German Empire)|Marine Brigade]] (equivalent to an army division), which had been brought from the Belgian coast. An attack on 8 October, by the [[1st Canadian Division]] and the [[3rd Canadian Division]] on Regina Trench also failed. ||| ||| ||| +1 Capture of Savannah ||| American Revolutionary War ||| The '''Capture of Savannah''', or sometimes the '''First Battle of Savannah''' (because of a [[Siege of Savannah|siege]] in 1779), was an [[American Revolutionary War]] battle fought on December 29, 1778 between local [[U.S.|American]] [[Patriot (American Revolution)|Patriot]] [[militia]] and [[Continental Army]] units holding the city and a [[Kingdom of Great Britain|British]] invasion force under the command of [[Lieutenant Colonel]] [[Archibald Campbell (British Army officer)|Archibald Campbell]]. It was the opening move in the British [[Southern theater of the American Revolutionary War|southern strategy]] to regain control of the rebellious southern provinces by appealing to the strong [[Loyalist (American Revolution)|Loyalist]] sentiment believed to be there. ||| ||| ||| +1 Capture of Schwaben Redoubt ||| Western Front (World War I) ||| The '''Schwaben Redoubt''' ({{lang|de|''Schwaben-Feste''}}) was a [[Imperial Germany|German]] [[strongpoint|strong point]] {{convert|500|–|600|yd|m}} long and {{convert|200|yd|m}} wide, built in stages since 1915, near the village of [[Thiepval]], overlooking the [[River Ancre]]. It formed part of the German defensive system in the [[Somme (department)|Somme]] sector of the [[Western Front (World War I)|Western Front]] during the [[First World War]] and consisting of a mass of machine-gun emplacements, trenches and dug-outs. The redoubt was defended by the [[26th Reserve Division (German Empire)|26th Reserve Division]], from [[Swabia]] in south-west Germany, which had arrived in the area during the [[Battle of Albert (1914)|First Battle of Albert]] in 1914. British troops of the [[36th (Ulster) Division]] captured the redoubt on 1 July 1916, until forced out by German bombardments and counter-attacks after night had fallen. ||| ||| ||| +1 Capture of Shusha ||| Nagorno-Karabakh War ||| The '''Capture of Shusha''', referred to as the '''Liberation of Shushi''' by Armenians ({{Lang-hy|Շուշիի ազատագրումը}} ''Shushii azatagrumë'') and '''Occupation of Shusha''' by Azerbaijanis ({{lang-az|Şuşanın işğalı}}) was the first significant military victory by [[Armenians|Armenian]] forces during the [[Nagorno-Karabakh War]]. The battle took place in the strategically important mountain town of [[Shusha]] (known as ''Shushi'' to Armenians) on the evening of May 8, 1992, and fighting swiftly concluded the next day after Armenian forces captured it and drove out the defending [[Azerbaijani people|Azeris]]. Armenian military commanders based in Nagorno-Karabakh's capital of [[Stepanakert]] had been contemplating the capture of the town after a hail of Azeri military bombardment had begun shelling Stepanakert. ||| ||| ||| +1 Capture of USS Chesapeake ||| War of 1812 ||| The '''Capture of USS ''Chesapeake''''', or the '''Battle of Boston Harbor''', was fought on 1 June 1813, between the Royal Navy's [[frigate]] [[HMS Shannon (1806)|HMS ''Shannon'']] and American frigate [[USS Chesapeake (1799)|USS ''Chesapeake'']], as part of the [[War of 1812]] between the United States and Great Britain. The ''Chesapeake'' was captured in a brief but intense action in which over 80 men were killed. This was the only frigate action of the war in which there was no preponderance of force on either side. ||| ||| ||| +1 Capture of USS President ||| War of 1812 ||| | name = Post-treaty ratification battles of the [[War of 1812]] ||| ||| ||| +1 Capture of Valdivia ||| Chilean War of Independence ||| The '''Capture of Valdivia''' was a battle in the [[Chilean War of Independence]] between [[Spanish Empire|Spanish]] forces commanded by [[Colonel]] Manuel Montoya and the [[Chile]]an forces under the command of [[Thomas Cochrane, 10th Earl of Dundonald|Lord Cochrane]], held on 3 and 4 February 1820. ||| ||| ||| +1 Capture of Wurst Farm ||| Battle of Passchendaele ||| The '''Capture of Wurst Farm''' was an attack by the British [[58th (2/1st London) Division]] (58th Division) against the German [[36th Division (German Empire)|36th Division]] on 20 September 1917, near [[Ypres]], Belgium, during the [[Battle of the Menin Road Ridge]], part of the [[Battle of Passchendaele|Third Battle of Ypres]] (Battle of Passchendaele). Wurst Farm was at the lower end of Gravenstafel Ridge and several British attacks in the area since 31 July had been repulsed by the Germans. The British began a desultory bombardment on 31 August and the shelling became intense from 13 September, to 'soften' the German defences, except in the area of the [[Fifth Army (United Kingdom)|Fifth Army]] (General [[Hubert Gough]]), where the slow bombardment continued until the last {{nowrap|24 hours,}} before a hurricane bombardment was fired, to gain surprise. ||| ||| ||| +1 Caribbean theater of the American Revolutionary War ||| American Revolutionary War ||| Britain's numerous island colonies in the [[West Indies]] were politically divided with respect to the issues that eventually drove the [[Thirteen Colonies]] in North America to revolution. Some colonial assemblies expressed sympathy for the rebel movement, but the outbreak of the [[American Revolutionary War]] in April 1775 did not result in similar mobilizations in the Caribbean. [[Kingdom of Great Britain|British]] military authorities, in fact, drew resources from there to support their activities against the rebel colonies in the early years of the war. ||| Background ||| ||| +1 Carolinas Campaign ||| American Civil War ||| The '''Carolinas Campaign''' was the final campaign in the [[Western Theater of the American Civil War|Western Theater]] of the [[American Civil War]]. In January 1865, [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[William Tecumseh Sherman]] advanced north from [[Savannah, Georgia]], through [[the Carolinas]], with the intention of linking up with Union forces in [[Virginia]]. The defeat of [[Confederate States Army|Confederate]] [[General (CSA)|Gen.]] [[Joseph E. Johnston]]'s army at the [[Battle of Bentonville]] in March, and its surrender in April, represented the loss of the final major army of the Confederacy. ||| ||| ||| +1 Case White ||| World War II ||| '''Case White''' ({{lang-de|Fall Weiss}}), also known as the '''Fourth Enemy Offensive''' ({{lang-sh-Latn|Četvrta neprijateljska ofenziva/ofanziva}}) was a combined [[Axis Powers|Axis]] strategic offensive launched against the [[Yugoslav Partisans]] throughout occupied [[Democratic Federal Yugoslavia|Yugoslavia]] during [[World War II]]. It was one of the most significant confrontations of [[World War II in Yugoslavia]]. The offensive took place in early 1943, between 20 January{{sfn|Milazzo|1975|p=116}}{{sfn|Roberts|1973|p=100}} and mid-to-late March.{{sfn|Roberts|1973|p=132}} The Axis operation prompted the Partisan Supreme Command to enact its plans to drive toward eastern Herzegovina, [[Sandžak]] and Montenegro.{{sfn|Terzić|Savković|1965|p=23}} In order to do this, Tito formed the so-called Main Operational Group, which eventually succeeded in forcing its way across the Neretva in mid-March 1943, after a series of battles with various hostile formations. Other Partisan formations, the 1st Croatian and 1st Bosnian Corps, managed to evade Axis blows and, despite significant losses, reclaim most of the territory they had held before the beginning of the operation. ||| ||| ||| +1 Case White ||| World War II in Yugoslavia ||| '''Case White''' ({{lang-de|Fall Weiss}}), also known as the '''Fourth Enemy Offensive''' ({{lang-sh-Latn|Četvrta neprijateljska ofenziva/ofanziva}}) was a combined [[Axis Powers|Axis]] strategic offensive launched against the [[Yugoslav Partisans]] throughout occupied [[Democratic Federal Yugoslavia|Yugoslavia]] during [[World War II]]. It was one of the most significant confrontations of [[World War II in Yugoslavia]]. The offensive took place in early 1943, between 20 January{{sfn|Milazzo|1975|p=116}}{{sfn|Roberts|1973|p=100}} and mid-to-late March.{{sfn|Roberts|1973|p=132}} The Axis operation prompted the Partisan Supreme Command to enact its plans to drive toward eastern Herzegovina, [[Sandžak]] and Montenegro.{{sfn|Terzić|Savković|1965|p=23}} In order to do this, Tito formed the so-called Main Operational Group, which eventually succeeded in forcing its way across the Neretva in mid-March 1943, after a series of battles with various hostile formations. Other Partisan formations, the 1st Croatian and 1st Bosnian Corps, managed to evade Axis blows and, despite significant losses, reclaim most of the territory they had held before the beginning of the operation. ||| ||| ||| +1 Caucasus Campaign ||| Middle Eastern theatre of World War I ||| The '''Caucasus Campaign''' comprised armed conflicts between the [[Ottoman Empire]] and the [[Russian Empire]], later including [[Azerbaijan Democratic Republic|Azerbaijan]], [[First Republic of Armenia|Armenia]], the [[Central Caspian Dictatorship]] and the [[British Empire]] as part of the [[Middle Eastern theatre of World War I|Middle Eastern theatre]] during [[World War I]]. The Caucasus Campaign extended from the [[South Caucasus]] to the [[Armenian Highlands]] region, reaching as far as [[Trabzon]], [[Bitlis]], [[Muş|Mush]] and [[Van, Turkey|Van]]. The land warfare was accompanied by the Russian navy in the [[Black Sea Region, Turkey|Black Sea Region]] of the [[Ottoman Empire]]. ||| ||| ||| +1 Centralia Massacre (Missouri) ||| American Civil War ||| The '''Centralia Massacre''' was an incident during the [[American Civil War]] in which twenty-four unarmed [[Union Army|Union]] soldiers were captured and executed at [[Centralia, Missouri]] on September 27, 1864 by the pro-Confederate guerrilla leader [[William T. Anderson]]. Future outlaw [[Jesse James]] was among the guerrillas. ||| ||| ||| +1 Chadian Intervention in Northern Mali ||| Northern Mali conflict ||| On 18 January, the [[Republic of Chad]] announced its intent to deploy 2,000 troops: one infantry regiment with 1,200 soldiers and two support battalions with 800 soldiers, into [[Mali]] as part of the [[Northern Mali conflict|international campaign]] against [[Islamism|Islamist]] insurgents. The Chadian forces were not part of the [[African-led International Support Mission to Mali]] but integrated into an existing French command structure. The same day the arrival of the Chadian army in [[Niamey]] was confirmed. ||| ||| ||| +1 Chambersburg Raid ||| American Civil War ||| The '''Chambersburg Raid,''' often identified as '''J.E.B. Stuart's Chambersburg Raid''', was a [[Confederate States Army]] cavalry raid into Maryland and Pennsylvania on October 10-12, 1862 during the [[American Civil War]] (Civil War). It became known as Stuart's 'second ride around McClellan' because it duplicated Stuart's reconnaissance ride completely around the [[Union Army|Union]] [[Army of the Potomac]] under [[Major general (United States)|Major General]] [[George B. McClellan]] during the [[Peninsula Campaign]]. ||| ||| ||| +1 Charge of the Light Brigade ||| Crimean War ||| The '''Charge of the Light Brigade''' was a [[charge (warfare)|charge]] of British [[light cavalry]] led by [[James Brudenell, 7th Earl of Cardigan|Lord Cardigan]] against Russian forces during the [[Battle of Balaclava]] on 25 October 1854, in the [[Crimean War]]. [[FitzRoy Somerset, 1st Baron Raglan|Lord Raglan]], overall commander of the British forces, had intended to send the Light Brigade to pursue and harry a retreating Russian [[artillery battery]], a task well-suited to light cavalry. However, due to miscommunication in the [[chain of command]], the Light Brigade was instead sent on a [[frontal assault]] against a different artillery battery, one well-prepared with excellent fields of defensive fire. ||| ||| ||| +1 Chattanooga Campaign ||| American Civil War ||| The '''Chattanooga Campaign''' was a series of maneuvers and battles in October and November 1863, during the [[American Civil War]]. Following the defeat of [[Major general (United States)|Maj. Gen.]] [[William S. Rosecrans]]' [[Union Army|Union]] [[Army of the Cumberland]] at the [[Battle of Chickamauga]] in September, the [[Confederate States Army|Confederate]] [[Army of Tennessee]] under [[General (CSA)|Gen.]] [[Braxton Bragg]] besieged Rosecrans and his men by occupying key high terrain around [[Chattanooga, Tennessee]]. Maj. Gen. [[Ulysses S. Grant]] was given command of Union forces in the [[Western Theater of the American Civil War|West]] and significant reinforcements began to arrive with him in Chattanooga from Mississippi and the [[Eastern Theater of the American Civil War|Eastern Theater]]. ||| ||| ||| +1 Cherry Valley massacre ||| American Revolutionary War ||| The '''Cherry Valley massacre''' was an attack by [[Kingdom of Great Britain|British]] and [[Iroquois]] forces on a fort and the village of [[Cherry Valley (town), New York|Cherry Valley]] in eastern New York on November 11, 1778, during the [[American Revolutionary War]]. It has been described as one of the most horrific frontier massacres of the war. A mixed force of [[Loyalist (American Revolution)|Loyalist]]s, British soldiers, [[Seneca people|Seneca]] and [[Mohawk nation|Mohawks]] descended on Cherry Valley, whose defenders, despite warnings, were unprepared for the attack. During the raid, the Seneca in particular targeted non-combatants, and reports state that 30 such individuals were slain, in addition to a number of armed defenders. ||| ||| ||| +1 Chesapeake Affair ||| American Civil War ||| The '''Chesapeake Affair''' was an international diplomatic incident that occurred during the [[American Civil War]]. On December 7, 1863 [[Confederate States of America|Confederate]] sympathizers from Canada's [[Maritimes|Maritime Provinces]] captured the American steamer ''Chesapeake'' off the coast of [[Cape Cod]]. The expedition was planned and led by Vernon Guyon Locke of [[Nova Scotia]] and John Clibbon Braine. Instead, the captors experienced difficulties at Saint John, which required them to move further north and re-coal in [[Halifax Regional Municipality|Halifax, Nova Scotia]]. American forces violated British sovereignty by trying to arrest the captors in Nova Scotian waters, which further escalated the affair. Wade and others were able to escape through the assistance of prominent Nova Scotian and Confederate sympathiser [[William Johnston Almon]]. ||| ||| ||| +1 Chesapeake–Leopard Affair ||| War of 1812 ||| The event raised tensions between the two countries and, while possibly not a direct cause, was one of the events leading up to the [[War of 1812]]. In fact, many Americans demanded war because of the attack, but President Jefferson turned to diplomacy and economic pressure in the form of the ill-fated [[Embargo Act of 1807]]. ||| Aftermath ||| ||| +1 Chilean War of Independence ||| Spanish American wars of independence ||| The Chilean War of Independence was part of the more aroused [[Spanish American wars of independence]]. Independence did not have unanimous support among Chileans, who were divided between independentists and royalists. What started as a political movement among elites against the colonial power, ended as a full-fledged [[civil war]]. Traditionally, the process is divided into three stages: the ''[[Patria Vieja]]'', 1810–1814; the ''[[Reconquista (Chile)|Reconquista]]'', 1814–1817; and the ''[[Patria Nueva (Chile)|Patria Nueva]]'', 1817–1823. ||| ||| ||| +1 Cocos Islands mutiny ||| World War II ||| The '''Cocos Islands mutiny''' was a failed [[mutiny]] by [[Ceylon]]ese (Sri Lankan) soldiers against [[United Kingdom|British]] officers, on the [[Cocos (Keeling) Islands]] on May 8, 1942, during the [[World War II|Second World War]]. ||| ||| ||| +1 Combat Skyspot ||| Vietnam War ||| '''Combat Skyspot''' was the [[ground-directed bombing]] (GDB) operation of the [[Vietnam War]] by the [[United States Air Force]] using Bomb Directing Centrals and by the [[United States Marine Corps]] using Course Directing Centrals ('[[Reeves AN/MSQ-77 Bomb Directing Central|MSQ-77]] and [[AN/TPQ-10|TPQ-10]] ground radars').{{r|Rowley}} Combat Skyspot's [[command guidance]] of B-52s and tactical fighters and bombers ||| ||| ||| +1 Combat of the Côa ||| Peninsular War ||| The '''Combat of the Côa''' (July 24, 1810) was a skirmish occurred during the [[Peninsular War]] period of the [[Napoleonic Wars]]. It took place in the valley of the [[Côa]] River and it was the first significant battle for the new army of 65,000 men controlled by Marshal [[André Masséna]], as the French prepared for their third invasion of Portugal. ||| ||| ||| +1 Communist Insurgency War ||| Malayan Emergency ||| The '''Communist Insurgency War''', also known as the '''Second Malayan Emergency''', ''(Malay: '''Perang Insurgensi Melawan Pengganas Komunis''' or '''Perang Insurgensi Komunis''' and '''Darurat Kedua''')'' occurred in [[Malaysia]] from 1968 to 1989, involving the [[Malayan Communist Party]] (MCP) and Malaysian Government security forces. Following the end of the [[Malayan Emergency]] in 1960, the predominantly [[Malaysian Chinese|ethnic Chinese]] [[Malayan National Liberation Army]], the armed wing of the MCP, had retreated to the Malaysian-Thailand border where it had regrouped and retrained for future offensives against the Malaysian government. The Communist Insurgency War officially began when the MCP ambushed security forces in [[Kroh|Kroh–Betong]], in the northern part of [[Peninsular Malaysia]], on 17 June 1968. The conflict also coincided with renewed tensions between ethnic [[Malay people|Malays]] and Chinese in peninsular Malaysia and the [[Vietnam War]]. ||| ||| ||| +1 Convoy Faith ||| World War II ||| '''Convoy Faith''' was a small, fast [[Allies of World War II|Allied]] [[convoy]] of July 1943, during [[World War II]]; it suffered heavy casualties when attacked by [[Nazi Germany|German]] [[Focke-Wulf Fw 200|Focke-Wulf Fw 200 Condor]] long-range bombers while en route from Britain to West Africa. The convoy comprised two large [[troopship]]s and a [[cargo ship|freighter]], later joined by two [[destroyer]]s and two [[frigate]]s as escorts at various dates after it sailed on 7 July 1943. The two troopships, [[SS California (1923)|SS ''California'']] and [[SS Duchess of York (1928)|SS ''Duchess of York'']], both former [[Ocean liner|liner]]s, were carrying military personnel to West Africa, where locally recruited troops were to be embarked as reinforcements for the Allied forces in Burma and the Middle East. The freighter [[MV Port Fairy|MV ''Port Fairy'']], carrying ammunition, was ultimately bound for Australia and New Zealand via the [[Panama canal]]. ||| ||| ||| +1 Convoy HG 76 ||| World War II ||| '''HG 76''' was an [[Allies of World War II|Allied]] [[convoy]] of the HG (Homeward from [[Gibraltar]]) series during [[World War II]]. ||| ||| ||| +1 Convoy de la victoria ||| Spanish Civil War ||| The '''Convoy de la victoria''' (English: 'convoy of victory') is the name given by the [[Francoist Spain|Spanish Nationalist]]s to a naval battle which took place on 5 August 1936 in the [[Strait of Gibraltar]] during the [[Spanish Civil War]] between the escort of a Nationalist convoy and the [[Second Spanish Republic|Republican]] destroyer [[Churruca class destroyer|''Alcalá Galiano'']]. ||| ||| ||| +1 Creek War ||| American Indian Wars ||| The Creek War is part of the four-century long [[American Indian Wars|Indian Wars]]. It is also usually considered part of the [[War of 1812]] because of its connection to [[Tecumseh's War]] in the [[Old Northwest]], because it is concurrent with the American-British war and involves many of the same actors, and because the Red Sticks sought support from the British and later aided [[Alexander Cochrane|Admiral Cochrane's]] advance towards New Orleans. ||| ||| ||| +1 Crossbarry Ambush ||| Irish War of Independence ||| The '''Crossbarry Ambush''' occurred on 19 March 1921 and was one of the largest engagements of the [[Irish War of Independence]]. It took place at the rural crossroads of [[Crossbarry]] in [[County Cork]], about 20 km south-west of [[Cork (city)|Cork]] city. About a hundred [[Irish Republican Army]] (IRA) volunteers escaped an attempt by more than 1,300 [[British Army|British troops]] to encircle them. During the hour-long battle, between 10 and 40 British troops and three to six IRA volunteers were killed. ||| ||| ||| +1 Córdoba offensive ||| Spanish Civil War ||| The '''Córdoba offensive''' was a failed [[Second Spanish Republic|Republican]] offensive against the Nationalist held city of Cordoba. It took place from 19 to 22 August 1936 during the [[Spanish Civil War]]. ||| ||| ||| +1 Dawson's Field hijackings ||| Black September in Jordan ||| The PFLP's exploitation of Jordanian territory in the drama was another instance of the increasingly autonomous Arab Palestinian activity within the [[Kingdom of Jordan]] – a serious challenge to the [[Hashemite]] monarchy of [[King Hussein]]. Hussein declared [[martial law]] on 16 September and from 17 to 27 September his forces deployed into Palestinian-controlled areas in what became known as [[Black September in Jordan|Black September]] in Jordan, nearly triggering a regional war involving [[Syria]], [[Iraq]], and [[Israel]] with potentially [[Arab-Israeli conflict|global consequences]]. ||| ||| ||| +1 Defense of Sihang Warehouse ||| Battle of Shanghai ||| The '''defense of Sihang Warehouse''' ({{zh|t=四行倉庫|p=Sìháng Cāngkù}}) took place from October 26 to November 1, 1937, and marked the beginning of the end of the three-month [[Battle of Shanghai]] in the opening phase of the [[Second Sino-Japanese War]]. Defenders of the warehouse held out against numerous waves of [[Imperial Japanese Army|Japanese forces]] and covered [[National Revolutionary Army|Chinese forces]] retreating west during the Battle of Shanghai. ||| ||| ||| +1 Defense of Van (1915) ||| Armenian Genocide ||| The assessment of witness reports maintained that the Armenian posture at Van was defensive and an act of resistance to massacre.{{Sfn | Akçam | 2007 | p = 201}} Based mostly in the [[Van, Turkey|city of Van]], it was one of the few instances during the [[Armenian Genocide]] when Armenians fought against the [[Ottoman Empire]]'s armed forces. ||| ||| ||| +1 Defense of the Adzhimushkay quarry ||| Eastern Front (World War II) ||| The '''Defense of the Adzhimushkay Quarry''' ({{lang-ru| Оборона Аджимушкайских каменоломен}}) was a [[Guerrilla warfare|guerrilla]] campaign on the [[Eastern Front (World War II)|Eastern Front]] in [[World War II]] fought between May and October 1942 in the Adzhimushkay suburb of [[Kerch]] during the [[Nazi Germany|Nazi]] occupation of the [[Crimea]]. ||| ||| ||| +1 Defense of the Adzhimushkay quarry ||| World War II ||| The '''Defense of the Adzhimushkay Quarry''' ({{lang-ru| Оборона Аджимушкайских каменоломен}}) was a [[Guerrilla warfare|guerrilla]] campaign on the [[Eastern Front (World War II)|Eastern Front]] in [[World War II]] fought between May and October 1942 in the Adzhimushkay suburb of [[Kerch]] during the [[Nazi Germany|Nazi]] occupation of the [[Crimea]]. ||| ||| ||| +1 Deluge (history) ||| Second Northern War ||| The term '''Deluge''' ({{lang-pl|Роtор}}, {{lang-lt|Tvanas}}) denotes a series of mid-17th-century campaigns in the [[Polish–Lithuanian Commonwealth]]. In a wider sense it applies to the period between the [[Khmelnytsky Uprising|Khmelnytsky (Chmielnicki) Uprising]] of 1648 and the [[Truce of Andrusovo]] in 1667, thus comprising the Polish theatres of the [[Russo-Polish War (1654–67)|Russo-Polish]] and [[Second Northern War]]s. and the term deluge (or ''potop'' in Polish) was popularized by [[Henryk Sienkiewicz]], in his 1886 book ''[[The Deluge (novel)|The Deluge]]''. ||| ||| ||| +1 Deportation of Armenian intellectuals on 24 April 1915 ||| Armenian Genocide ||| The '''deportation of Armenian intellectuals''', sometimes known as '''Red Sunday''' ([[Western Armenian|Western]] {{lang-hy|Կարմիր կիրակի}} ''Garmir giragi''), was an event during the [[Armenian Genocide]] in which leaders of the Armenian community of the [[Ottoman Empire|Ottoman]] capital, [[Constantinople]] (today [[Istanbul]]), and later other locations were arrested and moved to two holding centers near [[Ankara]]. The [[s:Circular on April 24, 1915|order]] to do so was given by Minister of the Interior [[Talaat Pasha]] on 24 April 1915, the day before the [[Gallipoli Campaign|Allied landings at Gallipoli]]. On that night, the first wave of 235 to 270 Armenian intellectuals of Constantinople were arrested. Eventually, the total number of arrests and deportations amounted to 2,345. With the adoption of the [[Tehcir Law]] on 29 May 1915, these detainees were later relocated within the [[Ottoman Empire]]; most of them were ultimately killed. A few, such as [[Vrtanes Papazian]] and [[Komitas]], were saved through intervention. ||| ||| ||| +1 Dongshan Island Campaign ||| Chinese Civil War ||| '''Dongshan Island Campaign''' ({{zh|t=東山島戰役|s=东山岛战役|p=Dōngshān Dǎo Zhànyì|first=t}}) was a series of battles fought on the Dongshan Island, [[Fujian]] between the [[Kuomintang|Nationalists]] and the [[Chinese Communist|Communist]]s during the [[Chinese Civil War]] when the nationalists unsuccessfully attempted to retake the island from the Communists. The campaign was the last and largest battle between two sides since the Nationalists withdrew to [[Taiwan]]. After this defeat, the nationalists realized that it was never practical to launch any large scale counterattack against the mainland on a similar scale again. Instead, the nationalist strikes against the mainland were reduced to limited infiltration and skirmishes. ||| ||| ||| +1 East Cape War ||| New Zealand Wars ||| The '''East Cape War''', sometimes also called the ''East Coast War'', was a series of conflicts fought in the [[North Island]] of [[New Zealand]] from April 1865 to October 1866 between colonial and [[Māori people|Māori]] military forces. At least five separate campaigns were fought in the area during a period of relative peace in the long-running 19th century [[New Zealand Wars|New Zealand wars]]. ||| ||| ||| +1 Eastern Front (World War II) ||| World War II ||| The '''Eastern Front''' of [[World War II]] was a [[Theater (warfare)|theatre]] of conflict between the European [[Axis powers]] and [[Co-belligerence|co-belligerent]] [[Finland]] against the [[Soviet Union]], [[Poland]] and other [[Allies of World War II|allies]], which encompassed [[Northern Europe|Northern]], [[Southern Europe|Southern]] and [[Central and Eastern Europe]] from 22 June 1941 to 9 May 1945. It has been known as the '''Great Patriotic War''' ({{lang-ru|Великая Отечественная Война}}, ''Velikaya Otechestvennaya Voyna'') in the former Soviet Union and in modern Russia, while in Germany it was called the '''Eastern Front''' ({{lang-de|die Ostfront}}), ||| ||| ||| +1 Eleventh Battle of the Isonzo ||| Italian Front (World War I) ||| The '''Eleventh Battle of the Isonzo''' was a [[World War I]] battle fought by the [[Kingdom of Italy (1861-1946)|Italian]] and [[Austria-Hungary|Austro-Hungarian]] Armies on the [[Italian Front (World War I)|Italian Front]] between 18 August and 12 September 1917. ||| ||| ||| +1 English Civil War ||| Wars of the Three Kingdoms ||| The term 'English Civil War' appears most often in the singular form, although historians often divide the conflict into two or three separate wars. Nor were these wars restricted to England. Wales was then a part of the Kingdom of England, and was affected accordingly; from the outset, moreover, the conflicts involved wars with and civil wars within both Scotland and Ireland (see [[Wars of the Three Kingdoms]] for an overview). ||| Terminology ||| ||| +1 Ethnic violence in South Sudan (2011–present) ||| Sudanese nomadic conflicts ||| '''Ethnic violence in South Sudan''' began as part of the [[Sudanese nomadic conflicts]], continuing since January 2011. ||| ||| ||| +1 Expedition of the Thousand ||| Italian unification ||| The sea venture was the only desired action that was jointly decided by the 'four fathers of the nation' [[Giuseppe Mazzini]], Giuseppe Garibaldi, [[Victor Emmanuel II]], and [[Camillo Cavour]], pursuing divergent goals. However, the Expedition was instigated by [[Francesco Crispi]], that utilized his political influences to succeeded the [[Italian unification]]'s project. ||| ||| ||| +1 Expédition d'Irlande ||| French Revolutionary Wars ||| The '''''Expédition d'Irlande''''' ('Expedition to Ireland') was an unsuccessful attempt by the [[First French Republic]] during the [[French Revolutionary Wars]] to assist the outlawed [[Society of United Irishmen]], a popular rebel [[Irish Republicanism|Irish republican]] group, in their planned rebellion against British rule. The French intended to land a large expeditionary force in Ireland during the winter of 1796–1797 which would join with the United Irishmen and drive the British out of Ireland. The French anticipated that this would be a major blow to British morale, prestige and military effectiveness, and was also intended to possibly be the first stage of an eventual invasion of Britain itself. To this end, the [[French Directory]] gathered a force of approximately 15,000 soldiers at [[Brest, France|Brest]] under General [[Lazare Hoche]] during late 1796, in readiness for a major landing at [[Bantry Bay]] in December. ||| ||| ||| +1 Fall of Saigon ||| Vietnam War ||| The '''Fall of Saigon''' was the capture of [[Ho Chi Minh City|Saigon]], the capital of [[South Vietnam]], by the [[People's Army of Vietnam|People's Army of Vietnam]] and the [[Viet Cong|National Liberation Front of South Vietnam]] (also known as the [[Viet Cong|Việt Cộng]]) on April 30, 1975. The event marked the end of the [[Vietnam War]] and the start of a transition period to the formal [[reunification of Vietnam]] under the [[Socialist Republic of Vietnam|Socialist Republic]]. ||| ||| ||| +1 Federalist Riograndense Revolution ||| Revolta da Armada ||| The Federalists won mood in the same year. In the national capital, eclodia the [[Revolta da Armada|Revolt of the Navy]], under the leadership of Admiral Custodio de Melo, who also fought Florian. After some exchange of gunfire with the army, the rebels went to the South. Landed in present Florianópolis, called Exile, and proclaimed the city as a new capital. Interests meant that the two revolts came to join, especially by Custódio de Melo. ||| The War ||| ||| +1 Fight at Aldie ||| American Civil War ||| The '''Fight at Aldie''' was a small [[cavalry]] [[skirmish]] between [[Confederate States of America|Confederate]] forces under Major [[John S. Mosby]] and [[Union Army|Union]] forces under Major Joseph Gilmore and Captain Franklin T. Huntoon in [[Aldie, Virginia]], on March 2, 1863, as part of Mosby's Operations in Northern Virginia during the [[American Civil War]]. The fight which resulted in a Confederate victory was significant in that it was the first action of [[43rd Battalion Virginia Cavalry|Mosby's Rangers]] within their operating territory in the central [[Loudoun Valley]]. In the fight Mosby and his men displayed many characteristics that would become their hallmark including the attack on numerically superior force while inflicting disproportionate casualties to those received. ||| ||| ||| +1 First Barbary War ||| Barbary Wars ||| The '''First Barbary War''' (1801–1805), also known as the '''Tripolitanian War''' and the '''Barbary Coast War''', was the first of two [[Barbary Wars]] between the United States and the four North African Muslim states known collectively as the '[[Barbary Coast|Barbary States]]'. Three of these were nominal provinces of the [[Ottoman Empire]], but in practice autonomous: [[Ottoman Tripolitania|Tripoli]], [[Ottoman Algeria|Algiers]], and [[Beylik of Tunis|Tunis]]. The fourth was the independent [[Sultanate of Morocco]]. The cause of the war was pirates from the Barbary States seizing American merchant ships and holding the crews for ransom, demanding the U.S. pay tribute to the Barbary rulers. United States President [[Thomas Jefferson]] refused to pay this tribute. ||| ||| ||| +1 First Battle of Artois ||| Western Front (World War I) ||| The '''First Battle of Artois''' (17 December 1914 – 13 January 1915) was a battle fought during [[World War I]]. The battle was the first offensive move on the [[Western Front (World War I)|Western Front]] by either side after the [[First Battle of Ypres]] ended in November 1914. The French assault failed to break the stalemate.{{sfn|Tucker|Roberts|2005|p=140}}{{sfn|Nolan|2002|p=1,863}}{{sfn|Sheffield|2007|p=55}}{{sfn|Sumner|2009|p=6}} During what became known as the [[Race to the Sea]] the [[Battle of Arras (1914)|Battle of Arras]] had been fought from {{nowrap|1–4 October}} after which local operations, particularly on the Lorette Spur, continued during the First Battle of Flanders to the north. In May 1915 the French Tenth Army conducted an offensive known as the [[Second Battle of Artois]]. The [[Third Battle of Artois]], sometimes called the Artois–Loos Offensive, took place from {{nowrap|25 September – 15 October 1915}}. ||| ||| ||| +1 First Battle of Bud Dajo ||| Moro Rebellion ||| The '''First Battle of Bud Dajo''', also known as the '''Bud Dajo Massacre''', was a [[counter insurgency]] action fought by the [[United States Army]] against [[Moro people|Moros]] in March 1906, during the [[Moro Rebellion]] phase of the [[Philippine–American War]]. While fighting was limited to ground action on [[Jolo Island]] in the [[Sulu Archipelago]], use of naval gunfire contributed significantly to the overwhelming firepower brought to bear against the [[Muslim]] [[insurgent]]s, who were mostly armed with melee weapons. The description of the engagement as a battle is disputed because of both the overwhelming firepower of the attackers and the lopsided casualties. The conflict, especially the final phase of the battle, is also known as the [[Moro Crater Massacre]]. ||| ||| ||| +1 First Battle of Bull Run ||| American Civil War ||| The '''First Battle of Bull Run''', also known as '''First Manassas''' (the name used by Confederate forces), was fought on July 21, 1861, in [[Prince William County, Virginia]], near the city of [[Manassas, Virginia|Manassas]], not far from the city of [[Washington, D.C.]] It was the first major battle of the [[American Civil War]]. The [[Union Army|Union]]'s forces were slow in positioning themselves, allowing [[Confederate States Army|Confederate]] reinforcements time to arrive by rail. Each side had about 18,000 poorly trained and poorly led troops in their first battle. It was a Confederate victory followed by a disorganized retreat of the Union forces. ||| ||| ||| +1 First Battle of El Alamein ||| Western Desert Campaign ||| The '''First Battle of El Alamein''' (1–27 July 1942) was a battle of the [[Western Desert Campaign]] of the [[World War II|Second World War]], fought on the northern coast of [[Egypt]] between [[Axis powers of World War II|Axis forces]] (Germany and Italy) of the [[Panzer Army Africa]] (''Panzerarmee Afrika'') (also known as the Africa Corps) commanded by Field Marshal (''[[Field Marshal (Germany)|Generalfeldmarschall]]'') [[Erwin Rommel]] nicknamed 'The Desert Fox' and [[Allies of World War II|Allied]] (specifically British Imperial) forces (Britain, British India, Australia, South Africa and New Zealand) of the [[Eighth Army (United Kingdom)|Eighth Army]], commanded by [[General (United Kingdom)|General]] [[Claude Auchinleck]]. The British prevented a second advance by the Axis forces into Egypt. ||| ||| ||| +1 First Battle of El Alamein ||| World War II ||| The '''First Battle of El Alamein''' (1–27 July 1942) was a battle of the [[Western Desert Campaign]] of the [[World War II|Second World War]], fought on the northern coast of [[Egypt]] between [[Axis powers of World War II|Axis forces]] (Germany and Italy) of the [[Panzer Army Africa]] (''Panzerarmee Afrika'') (also known as the Africa Corps) commanded by Field Marshal (''[[Field Marshal (Germany)|Generalfeldmarschall]]'') [[Erwin Rommel]] nicknamed 'The Desert Fox' and [[Allies of World War II|Allied]] (specifically British Imperial) forces (Britain, British India, Australia, South Africa and New Zealand) of the [[Eighth Army (United Kingdom)|Eighth Army]], commanded by [[General (United Kingdom)|General]] [[Claude Auchinleck]]. The British prevented a second advance by the Axis forces into Egypt. ||| ||| ||| +1 First Battle of Lexington ||| American Civil War ||| The '''First Battle of Lexington''', also known as the '''Battle of the Hemp Bales''' or the '''Siege of Lexington''', was an engagement of the [[American Civil War]], occurring from September 12 to September 20, 1861, between the [[Union Army]] and the pro-Confederate [[Missouri State Guard]], in [[Lexington, Missouri|Lexington]], the [[county seat]] of [[Lafayette County, Missouri]]. The State Guard's victory in this battle bolstered the already-considerable Southern sentiment in the area, and briefly consolidated Missouri State Guard control of the [[Missouri River Valley]] in western Missouri. ||| ||| ||| +1 First Battle of Loc Ninh ||| Vietnam War ||| The '''first battle of Lộc Ninh''' was a battle during the [[Vietnam War]] that occurred between 29 October and 10 December 1967, fought by the [[Viet Cong|Việt Cộng]] and the [[Civilian Irregular Defense Group]] (CIDG), and ended when [[Army of the Republic of Vietnam]] (ARVN) and United States forces came to the camp. On October 27, a North Vietnamese regiment engaged the command post of a largely outnumbered ARVN battalion in [[Sông Bé]] in [[Phước Long Province]], but were forced to retreat from well dug-in South Vietnamese defenses. Two days later, in the South Vietnamese-Cambodian border town of Lộc Ninh, a Việt Cộng force of uncertain numbers of the 273rd Division launched an offensive on the American camp at this town. Opposing them were members of the First Infantry Division composed of two combat battalions and a pair of [[field artillery]] batteries by the morning of October 30. Several days later, two more American battalions entered the heat of battle at Lộc Ninh and eventually overwhelmed the NVA and VC. In spite of their rugged Soviet-manufactured equipment consisting of [[flamethrower]]s, heavy machine guns, and mortars, the Vietcong and North Vietnamese sustained heavy casualties in which hundreds of their men were killed. Although the communists claimed they had lost 852 casualties,{{citation needed|date=June 2012}} most American commanders believed that the genuine numbers of communist casualties sustained were well over 1,000 dead or wounded.{{citation needed|date=June 2012}} Either way, the first battle of Lộc Ninh resulted in perhaps the most lopsided–and clearly definable–U.S. victory of the Vietnam War. ||| ||| ||| +1 First Battle of Mount Hermon ||| Yom Kippur War ||| The '''First Battle of Mount Hermon''' was fought at the outset of the [[Yom Kippur War]] between the [[Syrian Army]] and the [[Israel Defense Forces]] (IDF). On [[Yom Kippur]], October 6, 1973, [[Syria]]n commandos attacked and captured the IDF outpost on [[Mount Hermon]]. Two days later, the Syrians repelled an Israeli counterattack in the [[Second Battle of Mount Hermon]]. It was eventually recaptured by Israel on October 21 in the [[Third Battle of Mount Hermon|Third battle]]. {{Cite news ||| ||| ||| +1 First Battle of Murfreesboro ||| American Civil War ||| The '''First Battle of Murfreesboro''' was fought on July 13, 1862, in [[Rutherford County, Tennessee]], as part of the [[American Civil War]]. Troops under [[Confederate States Army | Confederate]] cavalry commander [[Brigadier General (CSA) | Brig. Gen.]] [[Nathan Bedford Forrest]] surprised and quickly overran a Federal hospital, the camps of several small Union units, and the jail and courthouse in [[Murfreesboro, Tennessee]]. All of the Union units surrendered to Forrest, and the Confederates destroyed much of the Union's supplies and destroyed railroad track in the area. The primary consequence of the raid was the diversion of Union forces from a drive on [[Chattanooga, Tennessee | Chattanooga]]. ||| ||| ||| +1 First Battle of Newtonia ||| American Civil War ||| The '''First Battle of Newtonia''' was fought as part of the [[American Civil War]], on September 30, 1862 in [[Newton County, Missouri]]. ||| ||| ||| +1 First Battle of Quảng Trị ||| Vietnam War ||| The '''First Battle of Quảng Trị''' resulted in the first major victory for the [[North Vietnamese Army]] during the [[Easter Offensive]] of 1972. The province of [[Quảng Trị]] was a major battle ground for the opposing forces during the [[Vietnam War]]. As [[South Vietnam]]ese soldiers were gradually replacing their American counterparts, [[North Vietnam]]'s General [[Văn Tiến Dũng]] was preparing to engage three of his divisions in the province. Just months before the battle, the [[Army of the Republic of Vietnam]] deployed its newly formed [[3rd Division (South Vietnam)|3rd Division]] to the areas along the [[Vietnamese Demilitarized Zone]] to take over former US bases. North Vietnamese forces deployed against the inexperienced ARVN 3rd Division included the [[People's Army of Vietnam]] (PAVN) [[304th Division (Vietnam)|304th]], [[308 Division (Vietnam)|308th]] and [[324th Division (Vietnam)|324B]] Divisions. ||| ||| ||| +1 First Battle of Sacket's Harbor ||| War of 1812 ||| [[Sackets Harbor, New York|Sacket's Harbor]] is located on [[Lake Ontario]] in Northern New York State. It was the chief shipbuilding yard for the United States during the [[War of 1812]]. It had a good strategic position on the lake, with abundant resources, and an excellent natural harbor which became the center of military and naval operations for the war's northern theater. Following the first battle, the town and harbor became a large and centralized military complex, with a fortification served by thousands of troops. ||| Background ||| ||| +1 First Battle of Sirte ||| Battle of the Mediterranean ||| The '''First Battle of Sirte''' was fought between the British [[Royal Navy]] and the ''[[Regia Marina]]'' (Italian Royal Navy) during the [[Battle of the Mediterranean|Mediterranean campaign]] of the [[Second World War]]. The engagement took place on 17 December 1941, southeast of [[Malta]], in the [[Gulf of Sidra|Gulf of Sirte]]. The battle itself was relatively uneventful, but has come to describe a week of clashes and naval operations which well illustrate the cut and thrust of naval warfare in the Mediterranean at the time. ||| ||| ||| +1 First Battle of Villers-Bretonneux ||| Western Front (World War I) ||| The '''First Battle of Villers-Bretonneux''' (30 March – 5 April 1918), was part of the wider [[Operation Michael|First Battle of the Somme (1918)]], which took place amidst a strong German offensive on the [[Western Front (World War I)|Western Front]] in the final year of the war. Falling initially against the British troops in the Somme, throughout the month the German offensive had pushed the Allies back towards Paris. The capture of [[Villers-Bretonneux]], being close to the strategic centre of [[Amiens]], would have meant that the Germans could have used artillery there to shell the city. In late March, Australian troops were brought south from Belgium as reinforcements to help shore up the line and in early April the Germans launched an attack to capture the town. Heavy fighting followed which saw the Germans slowly gain the upper hand before a counter-attack by British and Australian troops late in the afternoon of 4 April broke up the attack. ||| ||| ||| +1 First Battle of Zurich ||| French Revolutionary Wars ||| The [[Helvetic Republic]] in 1798 became a battlefield of the [[French Revolutionary Wars]]. In the '''First Battle of Zurich''' on 4 – 7 June 1799, French general [[André Masséna]] was forced to yield the city to the Austrians under [[Archduke Charles of Austria|Archduke Charles]] and retreat beyond the [[Limmat]], where he managed to fortify his positions, resulting in a stalemate. ||| ||| ||| +1 First Battle of the Isonzo ||| Italian Front (World War I) ||| The '''First Battle of the Isonzo''' was fought between the Armies of [[Kingdom of Italy (1861-1946)|Italy]] and [[Austria-Hungary]] on the [[Italian Front (World War I)|Italian Front]] in [[World War I]], between 23 June and 7 July 1915. ||| ||| ||| +1 First Bombardment of Midway ||| Pacific War ||| The '''First Bombardment of Midway''', or the '''First Bombardment of Sand Island''', or '''Attack on Midway''', was a small land and sea engagement of [[World War II]]. It occurred on the very first day of the [[Pacific War]], 7 December 1941, not long after the major [[attack on Pearl Harbor]]. Two [[Empire of Japan|Imperial Japanese]] [[destroyer]]s bombarded Sand Island of [[Midway Atoll]]. The Japanese successfully damaged the [[United States Marine Corps|U.S. Marine]] base before being engaged by American [[shore battery|shore batteries]] and forced to flee. ||| ||| ||| +1 First Bombardment of Midway ||| World War II ||| The '''First Bombardment of Midway''', or the '''First Bombardment of Sand Island''', or '''Attack on Midway''', was a small land and sea engagement of [[World War II]]. It occurred on the very first day of the [[Pacific War]], 7 December 1941, not long after the major [[attack on Pearl Harbor]]. Two [[Empire of Japan|Imperial Japanese]] [[destroyer]]s bombarded Sand Island of [[Midway Atoll]]. The Japanese successfully damaged the [[United States Marine Corps|U.S. Marine]] base before being engaged by American [[shore battery|shore batteries]] and forced to flee. ||| ||| ||| +1 First Congo War ||| Rwandan Genocide ||| The '''First Congo War''' (1996–1997) was a foreign invasion of [[Zaire]] led by [[Rwanda]] that replaced dictator [[Mobutu Sésé Seko]] with the rebel leader [[Laurent-Désiré Kabila]]. Destabilization in eastern Zaire resulting from the [[Rwandan Genocide]] was the final factor that caused numerous internal and external factors to align against the corrupt and inept government in the capital, [[Kinshasa]]. ||| ||| ||| +1 First English Civil War ||| Wars of the Three Kingdoms ||| During this time, the [[Irish Confederate Wars]] (another civil war), continued in Ireland, starting with the [[Irish Rebellion of 1641]] and ending with the [[Cromwellian conquest of Ireland]]. Its incidents had little or no direct connection with those of Civil War, but the wars were mixed with, and formed part of, a linked series of conflicts and civil wars between 1639 and 1652 in the kingdoms of England, [[Scotland]], and Ireland, which at that time shared a monarch, but were distinct states in political organisation. These linked conflicts are also known as the [[Wars of the Three Kingdoms]] by some recent historians, aiming to have a unified overview, rather than treating parts of the other conflicts as a background to the English Civil War. ||| Overview ||| ||| +1 First German phosgene attack on British troops ||| Western Front (World War I) ||| '''The First German phosgene attack on British troops''' took place on 19 December 1915, during [[World War I]], at [[Wieltje]] north-east of [[Ypres]] in Belgian Flanders. German gas attacks on allied troops had begun on 22 April 1915, during the [[Second Battle of Ypres]] using [[chlorine|chlorine gas]], against French and Canadian units. The surprise led to the capture of much of the [[Ypres Salient]], after which the effectiveness of gas as a weapon diminished, as the French and British produced anti-gas helmets. The German [[Walther Nernst|Nernst]]-[[Carl Duisberg|Duisberg]]-Commission investigated the feasibility of adding the much more lethal [[phosgene]] to chlorine gas. Mixed chlorine and phosgene gas was used at the end of May 1915, in attacks against French troops on the [[Western Front (World War I)|Western Front]] and on the [[Eastern Front (World War I)|Eastern Front]] against the Russian army. ||| ||| ||| +1 First Sahrawi Intifada ||| Western Sahara conflict ||| The '''First Sahrawi Intifada''' began in 1999 and lasted until 2004, transforming into the [[Independence Intifada (Western Sahara)|Independence Intifada]] in 2005. First Sahrawi Intifada forms a part of the wider and still ongoing [[Western Sahara conflict]]. ||| ||| ||| +1 First Siege of Missolonghi ||| Greek War of Independence ||| The '''First Siege of Missolonghi''' was an attempt by [[Ottoman Empire|Ottoman]] forces to capture the strategically located port town of [[Missolonghi]] during the early stages of the [[Greek War of Independence]]. ||| ||| ||| +1 First and Second Battles of Wonju ||| Korean War ||| The '''First and Second Battles of Wonju''' ({{lang-fr|Bataille de Wonju}}), also known as the '''Wonju Campaign''' or the '''Third Phase Campaign Eastern Sector''' ({{zh|s=第三次战役东线|p=Dì Sān Cì Zhàn Yì Dōng Xiàn}}), was a series of engagements between [[North Korean]] and [[United Nations Command (Korea)|United Nations]] (UN) forces during the [[Korean War]]. The battle took place from December 31, 1950 to January 20, 1951 around the South Korean town of [[Wonju]]. In coordination with the Chinese [[Third Battle of Seoul|capture of Seoul]] on the western front, the [[North Korean People's Army]] attempted to capture Wonju in an effort to destabilize the UN defenses along the central and the eastern fronts. ||| ||| ||| +1 Fort Bowyer ||| War of 1812 ||| '''Fort Bowyer''' was a short-lived earthen and [[stockade]] fortification that the [[United States Army]] erected in 1813 on [[Mobile Point]], near the mouth of [[Mobile Bay]] in [[Baldwin County, Alabama]]. The British twice attacked the fort during the [[War of 1812]]. The first, unsuccessful attack, took place in September 1814 and led to the British changing their strategy and attacking [[New Orleans]]. The second attack, following their defeat at the [[Battle of New Orleans]], was successful. However, it took place in February 1815, after the [[Treaty of Ghent]] had been signed but before the news had reached that part of America. ||| ||| ||| +1 Four Four Bravo ||| Sri Lankan Civil War ||| '''Four Four Bravo''' was the [[call sign]] of a fifteen-man [[Sri Lankan Army]] patrol, deployed in the [[Jaffna Peninsula]] on July 23, 1983. The patrol was ambushed and thirteen of its members were killed by the [[LTTE]]. This incident sparked the [[Black July|Black July riots]] and is considered to be the start of the [[Sri Lankan Civil War]]. ||| ||| ||| +1 Four days of Naples ||| World War II ||| The '''Four days of Naples''' (Italian: ''Quattro giornate di Napoli'') refers to the popular uprising in the Italian city of [[Naples]] between 27 and 30 September 1943 against the [[Nazi Germany|German]] forces occupying the city during [[World War II]]. The occupiers were forced out by the townsfolk and the [[Italian Resistance]] before the [[Allied invasion of Italy#Further Allied advances|arrival of the first Allied forces]] in Naples on 1 October, and for these actions the city was awarded the [[Gold Medal of Military Valor]]. ||| ||| ||| +1 Fourth Battle of the Isonzo ||| Italian Front (World War I) ||| The '''Fourth Battle of the Isonzo''' was fought between the armies of [[Kingdom of Italy (1861–1946)|Kingdom of Italy]] and those of [[Austria-Hungary]] on the [[Italian Front (World War I)|Italian Front]] in [[World War I]], between November 10 and December 2, 1915. ||| ||| ||| +1 Franco-Thai War ||| World War II ||| Negotiations with France shortly before [[World War II]] had shown that the French government was willing to make appropriate changes in the boundaries between Thailand and French Indochina, but only slightly. Following the [[Fall of France]] in 1940, Major-General [[Plaek Pibulsonggram]] (popularly known as 'Phibun'), the prime minister of Thailand, decided that France's defeat gave the Thais an even better chance to regain the territories they had lost during King [[Chulalongkorn]]'s reign. ||| ||| ||| +1 Franco-Turkish War ||| Turkish War of Independence ||| The '''Franco-Turkish War''', known as the '''Cilicia Campaign''' ({{lang-fr|La campagne de Cilicie}}) in [[France]] and as the '''Southern Front''' ({{lang-tr|Güney Cephesi}}) of the [[Turkish War of Independence]] in [[Turkey]], was a series of conflicts fought between France (the [[French Colonial Forces]] and the [[French Armenian Legion]]) and the [[Government of the Grand National Assembly|Turkish provisional government]] (the [[Kuva-yi Milliye|Turkish National Forces]]) from May 1920 to October 1921 in the [[aftermath of World War I]]. French interest in the region resulted from the [[Sykes-Picot Agreement]] and the subsequent [[French-Armenian Agreement (1916)]] that led to the establishment of Armenian forces under the French Army. ||| ||| ||| +1 French campaign in Egypt and Syria ||| Mediterranean campaign of 1798 ||| The '''French Campaign in Egypt and Syria''' (1798–1801) was [[Napoleon|Napoleon Bonaparte]]'s campaign in [[the Orient]], ostensibly to protect [[France|French]] trade interests, undermine [[Kingdom of Great Britain|Britain]]'s access to [[India]], and to establish scientific enterprise in the region. It was the primary purpose of the [[Mediterranean campaign of 1798]], a series of naval engagements that included the capture of [[Malta]]. ||| ||| ||| +1 Frigate action of 29 May 1794 ||| French Revolutionary Wars ||| The '''frigate action of 29 May 1794'''—not to be confused with the much larger [[fleet action of 29 May 1794]] that took place in the same waters at the same time—was a minor naval engagement of the [[French Revolutionary Wars]] between a [[Royal Navy]] [[frigate]] and a [[French Navy]] frigate. The action formed a minor part of the [[Atlantic campaign of May 1794]], a campaign which culminated in the battle of the [[Glorious First of June]], and was unusual in that the French ship [[HMS Castor (1785)|''Castor'']] had only been in French hands for a few days at the time of the engagement. ''Castor'' had previously been a British ship, seized on 19 May by a French battle squadron in the [[Bay of Biscay]] and converted to French service while still at sea. While the main fleets manoeuvered around one another, ''Castor'' was detached in pursuit of a Dutch merchant ship and on 29 May encountered the smaller independently cruising British frigate [[HMS Carysfort (1766)|HMS ''Carysfort'']]. ||| ||| ||| +1 Gas attacks at Wulverghem ||| Western Front (World War I) ||| The gas attacks at Wulverghem were part of the sporadic fighting, which took place between battles in the [[Ypres Salient]] on the [[Western Front (World War I)|Western Front]]. The British [[Second Army (United Kingdom)|Second Army]] held the ground from [[Mesen|Messines]] Ridge north to Steenstraat. British divisions opposite the German [[XXIII Reserve Corps (German Empire)|XXIII Reserve Corps]], had received warnings of a gas attack in the ten days beforehand. From {{nowrap|21–23 April,}} British artillery-fire exploded several gas cylinders in the German lines around Spanbroekmolen, which released greenish-yellow clouds of gas. A gas alert was given on 25 April, when the wind began to blow from the north-east and routine work was suspended; on 29 April, two German soldiers deserted and warned that an attack was imminent. Just after midnight on 30 April, the German attack began and a gas cloud moved on the wind through no man's land, into the British defences and then south-west towards Bailleul. ||| ||| ||| +1 Gaselee Expedition ||| Boxer Rebellion ||| The '''Gaselee Expedition''' was a successful relief by a multi-national military force to march to [[Beijing]] and protect the diplomatic legations and foreign nationals in the city from attacks in 1900. The expedition was part of the war of the [[Boxer Rebellion]]. ||| ||| ||| +1 General Sherman incident ||| United States expedition to Korea ||| Concern over this incident was one reason why the U.S. Navy conducted the [[United States expedition to Korea|1871 Korea Campaign]], which resulted in the death of about 300 Korean soldiers and three Americans. Five years later Korea was forced to sign a trade [[treaty]] with Japan in a separate incident, and in 1882 finally signed a treaty with the United States promising to abide by international norms regarding the treatment of prisoners. These treaties ended several centuries of isolationism. ||| Incident ||| ||| +1 German attacks on Nauru ||| World War II ||| The two attacks on [[Nauru]] were the most effective operations conducted by German raiders in the [[Pacific Ocean]] during [[World War II]]. They disrupted supplies of phosphate to Australia, New Zealand and Japan, which reduced agricultural production in these countries. In response, Allied naval vessels were deployed to protect Nauru and nearby [[Banaba Island|Ocean Island]] and escort shipping in the South Pacific. Small garrisons were also established to protect the two islands. ||| ||| ||| +1 Gnadenhutten massacre ||| American Revolutionary War ||| The '''Gnadenhutten massacre''', also known as the '''Moravian massacre''', was the killing of 96 [[Christian Munsee|Christian]] [[Lenape]] (Delaware) by colonial American [[militia (United States)|militia]] from [[Pennsylvania]] on March 8, 1782 at the [[Moravian Church|Moravian]] [[missionary]] village of [[Gnadenhütten, Ohio]] during the [[American Revolutionary War]]. ||| ||| ||| +1 Gold Beach ||| Normandy landings ||| '''Gold''', commonly known as '''Gold Beach''', was the [[code name]] for one of the five areas of the [[Allies of World War II|Allied]] invasion of [[German military administration in occupied France during World War II|German-occupied France]] in the [[Normandy landings]] on 6 June 1944, during the [[World War II|Second World War]]. Gold, the central of the five areas, was located between [[Port-en-Bessin-Huppain|Port-en-Bessin]] on the west and [[La Rivière-Saint-Sauveur|La Rivière]] on the east. High cliffs at the western end of the zone meant that the landings took place on the flat section between [[Asnelles|Le Hamel]] and La Rivière, in the sectors code-named Jig and King. Amphibious landings at Gold were undertaken by the British [[50th (Northumbrian) Infantry Division]], commanded by Major-General [[D.A.H. Graham]], with sea transport and [[naval artillery]] support provided by the [[Royal Navy]]. The [[8th Armoured Brigade (United Kingdom)|8th Armoured Brigade]] provided armour support. ||| ||| ||| +1 Gold Beach ||| World War II ||| '''Gold''', commonly known as '''Gold Beach''', was the [[code name]] for one of the five areas of the [[Allies of World War II|Allied]] invasion of [[German military administration in occupied France during World War II|German-occupied France]] in the [[Normandy landings]] on 6 June 1944, during the [[World War II|Second World War]]. Gold, the central of the five areas, was located between [[Port-en-Bessin-Huppain|Port-en-Bessin]] on the west and [[La Rivière-Saint-Sauveur|La Rivière]] on the east. High cliffs at the western end of the zone meant that the landings took place on the flat section between [[Asnelles|Le Hamel]] and La Rivière, in the sectors code-named Jig and King. Amphibious landings at Gold were undertaken by the British [[50th (Northumbrian) Infantry Division]], commanded by Major-General [[D.A.H. Graham]], with sea transport and [[naval artillery]] support provided by the [[Royal Navy]]. The [[8th Armoured Brigade (United Kingdom)|8th Armoured Brigade]] provided armour support. ||| ||| ||| +1 Gorlice–Tarnów Offensive ||| Eastern Front (World War I) ||| The '''Gorlice–Tarnów Offensive''' during [[World War I]] was initially conceived as a minor [[German Empire|German]] offensive to relieve [[Russian Empire|Russian]] pressure on the [[Austria-Hungary|Austro-Hungarian]]s to their south on the [[Eastern Front (World War I)|Eastern Front]], but resulted in the Central Powers' chief offensive effort of 1915, causing the total collapse of the Russian lines and their retreat far into Russia. The continued series of actions lasted the majority of the campaigning season for 1915, starting in early May and only ending due to bad weather in October. ||| ||| ||| +1 Great Siege of Gibraltar ||| American Revolutionary War ||| The '''Great Siege of Gibraltar''' was an unsuccessful attempt by Spain and France to capture [[Gibraltar]] from the [[Kingdom of Great Britain|British]] during the [[American Revolutionary War|American War of Independence]]. This was the largest action fought during the war in terms of numbers, particularly the ''Grand Assault'' of 18 September 1782. At three years and seven months, it is the longest [[siege]] endured by the [[British Armed Forces]]. ||| ||| ||| +1 Greater Poland Uprising (1806) ||| War of the Fourth Coalition ||| The [[War of the Fourth Coalition]] between Napoleonic [[France]] and [[Kingdom of Prussia]] gave hope to the Polish inhabitants of [[Greater Poland]] of recovering their independence and ending oppressive Prussian rule. ||| Historical background ||| ||| +1 Greco-Turkish War (1919–22) ||| Turkish War of Independence ||| The '''Greco-Turkish War of 1919–1922''', known as the '''Western Front''' ({{lang-tr |{{italics correction |Batı Cephesi}}}}) of the [[Turkish War of Independence]] in [[Turkey]] and the '''Asia Minor Campaign''' ({{lang-el |Μικρασιατική Εκστρατεία}}) or the '''Asia Minor Catastrophe''' ({{lang-el |Μικρασιατική Καταστροφή}}) in [[Greece]], was fought between [[Kingdom of Greece|Greece]] and the [[Turkish National Movement]] during the [[partitioning of the Ottoman Empire]] after [[World War I]] between May 1919 and October 1922. ||| ||| ||| +1 Greek civil wars of 1824–25 ||| Greek War of Independence ||| The '''[[Greek War of Independence]]''' was marked by two '''civil wars''', which took place in 1824-1825. The conflict had both political and regional dimensions, as it pitted the Roumeliotes (the people of [[Continental Greece]]) and the Islanders (the shipowners, especially from [[Hydra (island)|Hydra]] island), against the [[Peloponnese|Peloponnesians]] or [[Morea|Moreotes]]. It divided the young nation, and seriously weakened the military preparedness of the [[Greeks|Greek]] forces in the face of the oncoming [[History of Ottoman Egypt|Egyptian]] intervention in the conflict. ||| ||| ||| +1 Guadalcanal Campaign ||| Pacific War ||| The '''Guadalcanal Campaign''', also known as the '''Battle of Guadalcanal''' and [[code-name]]d '''Operation Watchtower''', originally applying only to an operation to take the island of [[Tulagi]], by [[Allies of World War II|Allied]] forces, was a military campaign fought between 7 August 1942 and 9 February 1943 on and around the island of [[Guadalcanal]] in the [[Pacific War|Pacific theater]] of [[World War II]]. It was the first major offensive by [[Allies of World War II|Allied]] forces against the [[Empire of Japan]]. ||| ||| ||| +1 Gunboat War ||| English Wars (Scandinavia) ||| The '''Gunboat War''' (1807–1814) was the naval conflict between [[Denmark–Norway]] and the [[Royal Navy|British Navy]] during the [[Napoleonic Wars]]. The war's name is derived from the Danish tactic of employing small [[gunboat]]s against the conventional Royal Navy. In Scandinavia it is seen as the later stage of the [[English Wars (Scandinavia)|English Wars]], whose commencement is accounted as the [[Battle of Copenhagen (1801)|First Battle of Copenhagen]] in 1801. ||| ||| ||| +1 Hadži Prodan's Revolt ||| Serbian Revolution ||| '''Hadži-Prodan's Revolt''' ({{lang-sr|Хаџи-Проданова буна/Hadži-Prodanova buna}}) was an interphase between the [[First Serbian Uprising]] and Second Serbian Uprising of the [[Serbian Revolution]] against the [[Ottoman Empire]]. Despite the collapse of the First Uprising in 1813, the tensions in the [[Pashaluk of Belgrade]] nevertheless persisted. In mid–September 1814 a revolt was launched by veteran '''[[Hadži-Prodan]]''' (1760–1825) in the [[Požega, Serbia|Požega]] ''[[nahija]]''. He knew the Ottomans would arrest him, so he thought it would be the best to resist them; [[Miloš Obrenović]], another veteran, felt the time was not right for an uprising and did not provide assistance. The revolt soon failed and he fled to [[Austrian Empire|Austria]]. After the failure of the revolt, the Ottomans inflicted more persecution against the Serbs, such as high taxation and forced labour. In March 1815, Serbs had several meetings and decided upon a new revolt, the [[Second Serbian Uprising]]. ||| ||| ||| +1 Hawthorn Ridge Redoubt ||| Battle of the Somme ||| '''Hawthorn Ridge Redoubt''' was a [[Germany|German]] front-line fortification, west of the village of [[Beaumont Hamel]] on the [[Somme River|Somme]]. Since the end of the [[Battle of Albert (1914)|Battle of Albert]] in 1914 the Germans had begun building fortifications along the Western Front, which were elaborated several times before the [[Battle of the Somme]] as French and British attacks became more formidable. During the [[Second Battle of Artois]] in early 1915, a supporting attack was conducted by the French [[11th Army Corps (France)|XI Corps]] from Hébuterne to Serre, which advanced the front line on a {{convert|1|mi|km|adj=on}} front and left a German salient the {{lang|de|''Heidenkopf''}} (the Quadrilateral), north of the Hawthorn Ridge Redoubt. Mine warfare had begun on the Somme front soon after September 1914 and was continued by the British when they took over the area in mid-1915. ||| ||| ||| +1 Hitachi Maru Incident ||| Russo-Japanese War ||| The {{nihongo|'''''Hitachi Maru'' Incident'''|常陸丸事件|Hitachi-maru jiken}} was a maritime incident which occurred during the [[Russo-Japanese War]] of 1904-1905, in which three Japanese transports were sunk in a Russian [[commerce raiding]] sortie by a [[Vladivostok]]-based [[armored cruiser]] squadron of the [[Imperial Russian Navy]]. ||| ||| ||| +1 Huaihai Campaign ||| Chinese Civil War ||| '''Huaihai Campaign''' ({{zh|c={{linktext|淮|海|戰|役}}|p={{linktext|Huái|hǎi| Zhàn|yì}}}}) or '''Battle of Hsupeng''' ({{zh|s={{linktext|徐|蚌|会|战}}|t={{linktext|徐|蚌|會|戰}}|p={{linktext|Xú|bèng| Huì|zhàn}}}}, also '''Battle of Xu-Beng''') was a military action during 1948 and 1949 that was the decisive battle of the [[Chinese Civil War]]. It was one of the few [[conventional warfare|conventional battles]] of the war. 550,000 troops of the [[Republic of China]] (led by [[Kuomintang]]) were surrounded in [[Xuzhou]] (Hsuchow) and destroyed by the [[Communist Party of China|communist]] [[People's Liberation Army]] (PLA). This campaign is one of the three campaigns that marked the end of Nationalist dominance in northern [[China]], the other two campaigns being [[Liaoshen Campaign|Liaoshen]] and [[Pingjin Campaign|Pingjin]]. ||| ||| ||| +1 Hudson Bay expedition ||| American Revolutionary War ||| The '''Hudson Bay expedition''' of [[Jean-François de Galaup, comte de La Pérouse]] was a series of military raids on the lucrative [[fur trading]] posts and [[fortifications]] of the [[Hudson's Bay Company]] on the shores of [[Hudson Bay]] by a squadron of the [[French Navy|French Royal Navy]]. Setting sail from [[Cap-Français]] in 1782, the expedition was part of a [[Naval operations in the American Revolutionary War|global naval war]] between France and [[Kingdom of Great Britain|Great Britain]] during the [[American Revolutionary War]]. ||| ||| ||| +1 Huesca Offensive ||| Spanish Civil War ||| The '''Huesca Offensive''' was an ill-fated [[Second Spanish Republic|Republican]] army thrust toward [[Huesca]] between 12 and 19 June 1937, during the [[Spanish Civil War]]. Hungarian writer and communist commander [[Máté Zalka]] was killed in the course of the battle. ||| ||| ||| +1 Hue–Da Nang Campaign ||| Vietnam War ||| The '''Hue–Da Nang Campaign''' was a series of military actions conducted by the [[Vietnam People's Army]] (VPA) and the [[Viet Cong]] against the [[Army of the Republic of Vietnam]] (ARVN) during the [[Vietnam War]], also known in [[Vietnam]] as the '''American War'''. The campaign was centred on the cities of [[Huế]] ([[Thừa Thiên-Huế Province]]) and [[Da Nang]] ([[Quảng Nam Province]]), with secondary fronts in the provinces of [[Quảng Trị Province|Quảng Trị]] and [[Quảng Ngãi Province|Quảng Ngãi]]. The campaign began on March 5 and concluded on April 2, 1975. ||| ||| ||| +1 Hundred Days Offensive ||| Western Front (World War I) ||| The '''Hundred Days Offensive''' was the final period of the [[World War I|First World War]], during which the [[Allies of World War I|Allies]] launched a series of offensives against the [[Central Powers]] on the [[Western Front (World War I)|Western Front]] from 8 August to 11 November 1918, beginning with the [[Battle of Amiens (1918)|Battle of Amiens]]. The offensive essentially pushed the Germans out of France, forcing them to retreat beyond the [[Hindenburg Line]], and was followed by [[Armistice with Germany (Compiègne)|an armistice]]. The term 'Hundred Days Offensive' does not refer to a specific battle or unified strategy, but rather the rapid series of Allied victories starting with the Battle of Amiens. ||| ||| ||| +1 Indo-Pakistani War of 1971 ||| Bangladesh Liberation War ||| The '''Indo-Pakistani War of 1971''' was the direct military confrontation between [[India]] and [[Pakistan]] during the [[Bangladesh Liberation War]] in 1971. Indian, Bangladeshi and international sources consider the beginning of the war to have been [[Operation Chengiz Khan]], when Pakistan launched pre-emptive air strikes on 11 Indian airbases on 3 December 1971, leading to India's entry into the [[war of independence]] in [[East Pakistan]] on the side of Bangladeshi nationalist forces, and the commencement of hostilities with [[West Pakistan]]. ||| ||| ||| +1 International Force for East Timor ||| Indonesian invasion of East Timor ||| [[Indonesian invasion of East Timor|Indonesia invaded East Timor in 1975]] and annexed the former Portuguese colony. The annexation was recognised by few nations (including Australia and the United States at that time) and was resisted by many East Timorese. [[Cold War]] security concerns were emphasised,{{sfn|Gunderson|2015|p=15}} while foreign powers also placed high importance on good relations with Indonesia and were largely reluctant to assist a push for independence as a result. However, following [[Fall of Suharto|the fall of long-serving Indonesian President Suharto]] the new president, [[B. J. Habibie]], was prepared to grant special autonomy for East Timor.<ref name='abc.net.au'>{{cite web|url= ||| Background ||| ||| +1 Invasion of Buka and Bougainville ||| World War II ||| Between 9 March and 5 April 1942 during [[World War II]], forces of the [[Empire of Japan]] '''occupied the islands of [[Buka Island|Buka]] and [[Bougainville Island|Bougainville]]''' in the [[Oceania|South Pacific]]. At that time these islands were part of the Australian-administered [[Territory of New Guinea]]. A platoon of Australian commandos from the [[1st Independent Company (Australia)|1st Independent Company]] was located at [[Buka Airfield]] when the Japanese landed but did not contest the invasion. ||| ||| ||| +1 Invasion of Canada (1775) ||| American Revolutionary War ||| The '''Invasion of Canada''' in 1775 was the first major military initiative by the newly formed [[Continental Army]] during the [[American Revolutionary War]]. The objective of the campaign was to gain military control of the British [[Province of Quebec (1763-1791)|Province of Quebec]] (modern day Canada), and convince the French-speaking [[Canadien]]s to join the revolution on the side of the [[Thirteen Colonies]]. One expedition left [[Fort Ticonderoga]] under [[Richard Montgomery]], besieged and captured [[Fort Saint-Jean (Quebec)|Fort St. Johns]], and very nearly captured British General [[Guy Carleton, 1st Baron Dorchester|Guy Carleton]] when taking [[Montreal]]. The other expedition left [[Cambridge, Massachusetts]] under [[Benedict Arnold]], and traveled with great difficulty through the wilderness of [[Maine]] to [[Quebec City]]. The two forces joined there, but were defeated at the [[Battle of Quebec (1775)|Battle of Quebec]] in December 1775. ||| ||| ||| +1 Invasion of Iceland ||| World War II ||| The '''invasion of Iceland''', codenamed '''Operation Fork''', was a [[Military history of the United Kingdom|British]] [[military operation]] conducted by the [[Royal Navy]] and [[Royal Marines]] during [[World War II]]. The [[invasion]] began in the early morning of 10 May 1940 with British troops disembarking in [[Reykjavík]], capital of [[Neutrality (international relations)|neutral]] [[Kingdom of Iceland|Iceland]]. Meeting no resistance, the troops moved quickly to disable communication networks, secure strategic locations, and arrest German citizens. Requisitioning local means of transportation, the troops moved to [[Hvalfjörður]], [[Kaldaðarnes]], [[Sandskeið]], and [[Akranes]] to secure landing areas against the possibility of a [[Nazi Germany|German]] counterattack. In the following days air defence equipment was deployed in Reykjavík and a detachment of troops was sent to [[Akureyri]]. ||| ||| ||| +1 Invasion of Kuwait ||| Gulf War ||| The '''Invasion of Kuwait''', also known as the '''Iraq–Kuwait War''', was a major conflict between [[History of Iraq under Ba'athist rule|Ba'athist Iraq]] and the [[Emirate]] of [[Kuwait]], which resulted in the seven-month-long Iraqi occupation of Kuwait, and subsequently led to direct military intervention by US-led forces in the [[Gulf War]] and the [[Kuwaiti oil fires|setting alight by Iraq of 600 Kuwaiti oil wells]]. ||| ||| ||| +1 Invasion of Poland ||| European theatre of World War II ||| The '''Invasion of Poland''', also known as the '''September Campaign''', or the 1939 Defensive War in [[Second Polish Republic|Poland]] ({{lang-pl|Kampania wrześniowa}} or ''Wojna obronna 1939 roku''), and alternatively the Poland Campaign ({{lang-de|Polenfeldzug}}) or ''[[Fall Weiss (1939)|Fall Weiss]]'' in [[Germany]] (Case White), was a joint invasion of Poland by [[Nazi Germany]], the [[Soviet Union]], and a small [[Slovak invasion of Poland (1939)|Slovak]] contingent, that marked the beginning of [[European theatre of World War II|World War II in Europe]]. The German invasion began on 1 September 1939, one week after the signing of the [[Molotov–Ribbentrop Pact]], while the [[Soviet invasion of Poland|Soviet invasion]] commenced on 17 September following the [[Vyacheslav Molotov|Molotov]]-[[Shigenori Tōgō|Tōgō]] agreement that terminated the Russian and Japanese [[Battles of Khalkhin Gol|hostilities]] in the east on 16 September. The campaign ended on 6 October with Germany and the Soviet Union dividing and annexing the whole of Poland under the terms of the [[German-Soviet Frontier Treaty]]. ||| ||| ||| +1 Invasion of Sakhalin ||| Russo-Japanese War ||| The '''Invasion of Sakhalin''', {{lang-ja|樺太の戦い}} (Karafuto no tatakai), {{lang-ru|Японское вторжение на Сахалин}} was the last land battle of the [[Russo-Japanese War]] of 1904-1905. ||| ||| ||| +1 Invasion of Salamaua–Lae ||| Pacific War ||| The '''Invasion of Lae-Salamaua''', called ''Operation SR'' by the Japanese, was an operation by [[Empire of Japan|Imperial Japanese]] forces to occupy the [[Salamaua]]-[[Lae]] area in the [[Territory of New Guinea]] 8–13 March 1942 during the [[Pacific War|Pacific campaign]] of [[World War II]]. The Japanese invaded and occupied the location in order to construct an airfield and establish a base to cover and support the advance of Japanese forces into the eastern New Guinea and [[Coral Sea]] areas. The small Australian garrison in the area withdrew as the Japanese landed and did not contest the invasion. ||| ||| ||| +1 Invasion of Salamaua–Lae ||| World War II ||| The '''Invasion of Lae-Salamaua''', called ''Operation SR'' by the Japanese, was an operation by [[Empire of Japan|Imperial Japanese]] forces to occupy the [[Salamaua]]-[[Lae]] area in the [[Territory of New Guinea]] 8–13 March 1942 during the [[Pacific War|Pacific campaign]] of [[World War II]]. The Japanese invaded and occupied the location in order to construct an airfield and establish a base to cover and support the advance of Japanese forces into the eastern New Guinea and [[Coral Sea]] areas. The small Australian garrison in the area withdrew as the Japanese landed and did not contest the invasion. ||| ||| ||| +1 Invasion of Sumatra (1942) ||| Pacific War ||| The '''Invasion of Sumatra''' was the assault by [[Imperial Japanese]] forces on the [[Dutch East Indies]] that took place from 14 February to 28 March 1942. The invasion was part of the [[Pacific War]] in [[South-East Asia]] during [[World War II]] and led to the capture of the island. The invasion of [[Sumatra]] was planned to occur prior to the [[Battle of Java|invasion of Java]] to destroy the west flank of the allies and to give access to Java. ||| ||| ||| +1 Invasion of Sumatra (1942) ||| World War II ||| The '''Invasion of Sumatra''' was the assault by [[Imperial Japanese]] forces on the [[Dutch East Indies]] that took place from 14 February to 28 March 1942. The invasion was part of the [[Pacific War]] in [[South-East Asia]] during [[World War II]] and led to the capture of the island. The invasion of [[Sumatra]] was planned to occur prior to the [[Battle of Java|invasion of Java]] to destroy the west flank of the allies and to give access to Java. ||| ||| ||| +1 Invasion of Umuahia ||| Nigerian Civil War ||| The '''Invasion of Umuahia''' (December 20-December 24, 1969) was a military conflict during the [[Nigerian Civil War]] between Nigerian and Biafran soldiers. The Invasion of Umuahia occurred during the final stages of the Civil War and happened within 15 days of Biafran surrender. ||| ||| ||| +1 Invasion of the Cape Colony (1795) ||| French Revolutionary Wars ||| The '''Invasion of the Cape Colony''' was a British military expedition launched in 1795 against the [[Dutch Cape Colony]] at the [[Cape of Good Hope]], the southern tip of [[Southern Africa]]. The Dutch colony at the Cape, established in the seventeenth century, was at the time the only viable South African port for ships making the journey from Europe to the European colonies in the East Indies. It therefore held vital strategic importance, although it was otherwise economically insignificant. In the winter of 1794, during the [[French Revolutionary Wars]], [[First French Republic|French]] troops captured the [[Dutch Republic]], which was reformed into the [[client state]] of the [[Batavian Republic]]. In response, [[Kingdom of Great Britain|Great Britain]] launched operations against the [[Dutch Empire]] to prevent the use of its facilities by the [[French Navy]]. ||| ||| ||| +1 Invasion of the Kuril Islands ||| World War II ||| The '''Invasion of the Kuril Islands''', also called '''Kuril Islands Landing Operation''' (''Курильская десантная операция'' in [[Russian language|Russian]]) was the [[World War II]] [[Soviet Union|Soviet]] military operation to capture the [[Kuril Islands]] from [[Japan]] in 1945. It was part of the [[Manchurian Strategic Offensive Operation]], and was decided on when plans to land on [[Hokkaido]] were abandoned. The successful military operations of the [[Soviet Army]] in [[Manchuria]] and South [[Sakhalin]] created the necessary prerequisites for invasion of the Kuril Islands. ||| ||| ||| +1 Iraq War in Anbar Province ||| Iraq War ||| The '''Iraq War in Anbar Province''', also known as the '''Al Anbar campaign''', consisted of fighting between the [[United States Armed Forces|United States military]], together with [[Federal government of Iraq|Iraqi Government]] forces, and [[Iraqi insurgency (Iraq War)|Sunni insurgents]] in the western [[Iraq]]i province of [[Anbar Province|Al Anbar]]. The [[Iraq War]] lasted from 2003 to 2011, but the majority of the fighting and [[counter-insurgency|counterinsurgency]] campaign in Anbar took place between April 2004 and September 2007. Although the fighting initially featured heavy [[urban warfare]] primarily between insurgents and [[United States Marine Corps|U.S. Marines]], insurgents in later years focused on ambushing the American and Iraqi security forces with [[improvised explosive device]]s (IEDs). Almost 9,000 Iraqis and 1,335 Americans were killed in the campaign, many in the [[Sunni Triangle]] around the cities of [[Fallujah]] and [[Ramadi]]. ||| ||| ||| +1 Iraqi insurgency (2003–11) ||| Iraq War ||| <!-- Bolding not necessary per [[WP:SBE]] !-->An insurgency began in Iraq after the [[2003 invasion of Iraq|2003 invasion]], and lasted throughout the ensuing [[Iraq War]] (2003–2011). ||| ||| ||| +1 Irish Confederate Wars ||| Wars of the Three Kingdoms ||| The '''Irish Confederate Wars''', also called the '''Eleven Years' War''' (derived from the [[Irish language]] name ''Cogadh na hAon Bhliana Déag''), took place in [[Ireland]] between 1641 and 1653. It was the Irish theatre of the [[Wars of the Three Kingdoms]] – a series of civil wars in the kingdoms of Ireland, England and Scotland (all ruled by [[Charles I of England|Charles I]]). The conflict in Ireland essentially started by pitting the native Irish [[Roman Catholic Church|Catholics]] against [[English people|English]] and [[Scottish people|Scottish]] [[Protestantism|Protestant]] colonists and their supporters, and ended with Royalists, Irish Catholics and Scottish Presbyterians fighting the ultimate winners, the English Parliament. It was both a religious and an ethnic conflict – fought over who would govern Ireland, whether it would be governed from England, which ethnic and religious group would own most of the land, and which religion would predominate in the country. It was the most destructive conflict in Irish history. ||| ||| ||| +1 Italian invasion of France ||| Battle of France ||| The '''Italian invasion of France''', also called the '''Battle of the Alps'''{{efn|This is a translation of the French term ''Bataille des Alpes''. In Italian, it is called the ''Battaglia delle Alpi Occidentali'', the 'Battle of the Western Alps'.}} (10–25 June 1940), was the first major [[Kingdom of Italy|Italian]] engagement of [[World War II]] and the last major engagement of the [[Battle of France]]. ||| ||| ||| +1 Italian invasion of France ||| World War II ||| The '''Italian invasion of France''', also called the '''Battle of the Alps'''{{efn|This is a translation of the French term ''Bataille des Alpes''. In Italian, it is called the ''Battaglia delle Alpi Occidentali'', the 'Battle of the Western Alps'.}} (10–25 June 1940), was the first major [[Kingdom of Italy|Italian]] engagement of [[World War II]] and the last major engagement of the [[Battle of France]]. ||| ||| ||| +1 Ituri conflict ||| Rwandan Genocide ||| The Lendu FNI and [[Union of Congolese Patriots]] militias murdered nine [[Bangladesh]]i MONUC peacekeepers near the town of [[Kafe]] on 25 February 2005, the largest single UN loss since the [[Rwandan Genocide]]. In response, MONUC forces assaulted a FNI stronghold, killing 50 militiamen. [[Thomas Lubanga Dyilo]], the leader of the [[Union of Congolese Patriots]], and other militia leaders were arrested by Congolese authorities and imprisoned in [[Makala]], Kinshasa. Lubanga was accused of having ordered the killing of the peacekeepers in February 2005 and of being behind continuous insecurity in the area. On February 10, 2006, the [[International Criminal Court]] issued an arrest warrant for Lubanga for the [[war crime]] of 'conscripting and enlisting children under the age of fifteen years and using them to participate actively in hostilities'. Congolese authorities transferred Lubanga to ICC custody on 17 March 2006. [http://news.bbc.co.uk/2/hi/africa/4815966.stm] Lubanga was found guilty and is sentenced to a total period of 14 years imprisonment in 2012. ||| Peacekeeping operations (2003–2006) ||| ||| +1 Ituri conflict ||| Second Congo War ||| The conflict was complicated by the presence of various armed groups (many of which had participated in the [[Second Congo War]]), the large quantities of small arms in the region, the area's abundant natural resources and wealth, and the existing ethnic tensions throughout the region. The Lendu ethnicity was largely represented by the [[Nationalist and Integrationist Front]] (FNI) while the [[Union of Congolese Patriots]] (UPC) claimed to be fighting for the Hema. ||| ||| ||| +1 Japanese invasion of French Indochina ||| World War II ||| In September 1940, the {{nihongo|'''Japanese invaded Vichy French Indochina'''|仏印進駐|Futsu-in shinchū}} to prevent the [[Republic of China (1912-1949)|Republic of China]] from importing arms and fuel through [[French Indochina]] along the [[Sino-Vietnamese Railway]], from the port of [[Haiphong]] through [[Hanoi]] to [[Kunming]] in [[Yunnan]]. The fighting, which lasted several days before the [[Vichy France|French authorities]] reached an agreement with the Japanese, took place in the context of the ongoing [[Second Sino-Japanese War|Sino-Japanese War]] and [[World War II]]. Japan was able to occupy [[Tonkin]] in northern Indochina, tightening the blockade of China and making a continuation of the drawn-out [[Battle of South Guangxi]] unnecessary. ||| ||| ||| +1 Japanese occupation of Attu ||| World War II ||| The '''Japanese occupation of Attu''' was the result of an invasion of the [[Aleutian Islands]] during [[World War II]]. [[Imperial Japan]]ese [[Imperial Japanese Army|Army]] troops landed on 6 June 1942 at the same time as the [[Japanese occupation of Kiska|invasion]] of [[Kiska]]. The occupation ended with the [[Allies of World War II|Allied]] victory in the [[Battle of Attu]] on 30 May 1943. ||| ||| ||| +1 Japanese occupation of Kiska ||| American Theater (World War II) ||| The '''Japanese occupation of Kiska''' took place between 6 June 1942 and 28 July 1943 during the [[Aleutian Islands Campaign]] of the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] of [[World War II]]. The Japanese occupied [[Kiska]] and nearby [[Attu Island]] in order to protect the northern flank of the [[Empire of Japan|Japanese Empire]]. ||| ||| ||| +1 Japanese occupation of Kiska ||| Pacific War ||| The '''Japanese occupation of Kiska''' took place between 6 June 1942 and 28 July 1943 during the [[Aleutian Islands Campaign]] of the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] of [[World War II]]. The Japanese occupied [[Kiska]] and nearby [[Attu Island]] in order to protect the northern flank of the [[Empire of Japan|Japanese Empire]]. ||| ||| ||| +1 Japanese occupation of Kiska ||| World War II ||| The '''Japanese occupation of Kiska''' took place between 6 June 1942 and 28 July 1943 during the [[Aleutian Islands Campaign]] of the [[American Theater (World War II)|American Theater]] and the [[Pacific War|Pacific Theater]] of [[World War II]]. The Japanese occupied [[Kiska]] and nearby [[Attu Island]] in order to protect the northern flank of the [[Empire of Japan|Japanese Empire]]. ||| ||| ||| +1 Jiangqiao Campaign ||| Second Sino-Japanese War ||| The '''Jiangqiao Campaign''' was a series of battles and skirmishes occurring after the [[Mukden Incident]], during the [[Japanese invasion of Manchuria|invasion of Manchuria]] by the [[Imperial Japanese Army]], prior to the [[Second Sino-Japanese War]]. ||| ||| ||| +1 Jinzhou Operation ||| Second Sino-Japanese War ||| The '''Jinzhou (Chinchow) Operation''' was an operation in 1931 during the [[Japanese invasion of Manchuria]], which was a preliminary, contributing factor to the outbreak of the [[Second Sino-Japanese War]] in 1937. ||| ||| ||| +1 Jordanian protests (2011–12) ||| Arab Spring ||| The [[2010-2011 Tunisian Revolution]] and the [[2011 Egyptian Revolution]] also raised hopes for political change in the region. Together with unrest elsewhere in the Middle East and North Africa, including the disturbances in Syria and Yemen, they were part of the [[Arab Spring]]. ||| ||| ||| +1 July 1936 military uprising in Melilla ||| Spanish Civil War ||| The '''July 1936 military uprising in Melilla''' was a military uprising in [[Melilla]], [[Spain]], that occurred July 17-18, 1936, at the start of the [[Spanish Civil War]]. The rebels seized the main garrisons of the Spanish Army in Africa and by July 18 had crushed the resistance of the army officers loyal to the Republican government. The supporters of the [[Second Spanish Republic]] were detained or shot. ||| ||| ||| +1 July 1936 military uprising in Seville ||| Spanish Civil War ||| The '''July 1936 military uprising in Seville''' was a military uprising in [[Seville]], [[Spain]] on 18 July 1936, which contributed to the start of the [[Spanish Civil War]]. The 17–18 July coup failed in the Andalusian cities of Malaga, Jaen and Huelva, but succeeded in Cordoba, Granada, Cadiz and in the capital city, Seville. The city's garrison, led by Queipo de Llano, occupied the city and carried out a bloody repression. In August 1936, the Nationalists started their advance towards Madrid from Seville. ||| ||| ||| +1 June 1941 uprising in eastern Herzegovina ||| World War II ||| In June 1941, [[Serbs]] in eastern [[Herzegovina]] rebelled against the authorities of the [[Independent State of Croatia]] ({{lang-hr|Nezavisna Država Hrvatska}}, NDH), an [[Axis powers|Axis]] [[puppet state]] established during [[World War II]] on the territory of the defeated [[Kingdom of Yugoslavia]]. As the NDH imposed its authority, members of the fascist [[Ustaše]] ruling party began a campaign of persecution against Serbs throughout the country. In eastern Herzegovina, the Ustaše perpetrated a series of massacres and attacks against the majority Serb population commencing in the first week of June. Between 3 and 22 June 1941, spontaneous clashes occurred between NDH authorities and groups of Serbs in the region. ||| ||| ||| +1 Kachin conflict ||| Internal conflict in Myanmar ||| The '''Kachin conflict''' or '''Kachin War''' is one of multiple conflicts collectively referred to as the [[Internal conflict in Myanmar]]. ||| ||| ||| +1 Kamenets-Podolsky pocket ||| Eastern Front (World War II) ||| The '''Battle of the [[Kamianets-Podilskyi]] pocket''' (or Battle of Tarnopol) was a Soviet effort to surround and destroy the [[Wehrmacht]]'s [[1st Panzer Army]] of [[Army Group South]]. The envelopment occurred in March 1944 on the [[Eastern Front (World War II)|Eastern Front]] during the [[World War II|Second World War]]. The [[Red Army]] successfully created the pocket, trapping some 200,000 German soldiers inside. Under the command of Generaloberst [[Hans-Valentin Hube]] and with the direction of Fieldmarshal [[Erich von Manstein]], the German forces in the pocket were able to fight their way out and escape by mid-April. This event is sometimes referred to as '''Hube's Pocket'''. ||| ||| ||| +1 Kanalkampf ||| Battle of Britain ||| The '''''Kanalkampf''''' ('Canal Struggle') was the German name given to a series of air battles between the [[Germany|German]] ''[[Luftwaffe]]'' and [[United Kingdom|British]] [[Royal Air Force]] (RAF) over the [[English Channel]] which marked the beginning of the [[Battle of Britain]] in July 1940, during the early phases of the [[World War II|Second World War]]. ||| ||| ||| +1 Kanalkampf ||| World War II ||| The '''''Kanalkampf''''' ('Canal Struggle') was the German name given to a series of air battles between the [[Germany|German]] ''[[Luftwaffe]]'' and [[United Kingdom|British]] [[Royal Air Force]] (RAF) over the [[English Channel]] which marked the beginning of the [[Battle of Britain]] in July 1940, during the early phases of the [[World War II|Second World War]]. ||| ||| ||| +1 Kaunas Offensive ||| Operation Bagration ||| The '''Kaunas Offensive''' ({{lang-ru|Каунасская наступательная}}) was part of the third phase of the [[Operation Bagration|Belorussian Strategic Offensive]] of the [[Red Army]] in summer 1944, commonly known as [[Operation Bagration]]. The Kaunas offensive was executed by the 3rd Belorussian Front on July 28 – August 28, 1944, with the aim of destroying the German concentration on the western bank of the [[Neman river]], the liberation of [[Kaunas]], and reaching the boundaries of [[East Prussia]]. ||| ||| ||| +1 Khojaly Massacre ||| Nagorno-Karabakh War ||| | isbn = 0-8014-8736-6 }} In 1988 the town had 2,135 inhabitants. Due to the [[Nagorno-Karabakh War]] and the population exchanges between Armenia and Azerbaijan, and [[Meskhetian Turks|Meskhetian Turk]] refugees leaving Central Asia and subsequently settling in Khojaly, this number had grown to about 6,000 by 1991. ||| Background ||| ||| +1 Kholm Pocket ||| World War II ||| The '''Kholm Pocket''' ({{lang-de|Kessel von Cholm}}; {{lang-ru|Холмский котёл}}) was the name given for the encirclement of [[Wehrmacht|German troops]] by the [[Red Army]] around [[Kholm, Kholmsky District, Novgorod Oblast|Kholm]] south of [[Saint Petersburg|Leningrad]], during [[World War II]] on the Eastern Front, from 23 January 1942 until 5 May 1942. A much larger pocket was simultaneously [[Demyansk Pocket|surrounded]] in [[Demyansk]], about {{convert|100|km|mi|abbr=on}} to the northeast. These were the results of German retreat following their defeat during the [[Battle of Moscow]]. ||| ||| ||| +1 Kilbrittain Barracks Attack ||| Irish War of Independence ||| The '''Kilbrittain Barracks Attack''' refers to an attempt made by 28 members of the [[Third West Cork Brigade]] of the [[Irish Republican Army]] to destroy the barracks of the [[Black and Tans]] in [[Kilbrittain]], [[County Cork]] during the [[Irish War of Independence]]. ||| ||| ||| +1 Kivu conflict ||| Second Congo War ||| Laurent Nkunda was an officer in the rebel [[Rally for Congolese Democracy]] (RCD), [[Goma]] faction, in the [[Second Congo War]] (1998–2002). In 2003, with the official end of that war, Nkunda joined the new integrated national army of the [[Transitional Government of the Democratic Republic of the Congo|transitional government]] as a [[colonel]] and was promoted to general in 2004. He soon rejected the authority of the government and retreated with some of [[RCD-Goma]] troops to the [[Masisi]] forests in [[Nord Kivu]]. ||| Background ||| ||| +1 Kokoda Track campaign ||| Pacific War ||| The '''Kokoda Track campaign''' or '''Kokoda Trail campaign''' was part of the [[Pacific War]] of [[World War II]]. The campaign consisted of a series of battles fought between July and November 1942 between [[Military history of Japan#Showa Period - World War II|Japanese]] and [[Allies of World War II|Allied]]—primarily Australian—forces in what was then the Australian territory of [[Papua (Australian territory)|Papua]]. Following a landing near Gona, on the north coast of [[New Guinea]], on the night of 21/22 July, Japanese forces attempted to advance south overland through the mountains of the [[Owen Stanley Range]] to seize [[Port Moresby]] as part of a strategy of isolating Australia from the United States. Initially only limited Australian forces were available to oppose them; and, after making rapid progress, the Japanese [[South Seas Force]] under Major General [[Tomitaro Horii]] clashed with under-strength Australian forces from the [[Papuan Infantry Battalion]] and the Australian [[39th Battalion (Australia)|39th Battalion]] on 23 July at Awala, forcing them back to Kokoda. Following a confused night battle on 28/29 July, the Australians were again forced to withdraw. The Australians attempted to recapture Kokoda on 8 August without success, which resulted in heavy casualties on both sides; and the 39th Battalion was subsequently forced back to Deniki. A number of Japanese attacks were subsequently fought off by the Australian [[Australian Army Reserve|Militia]] over the following week; yet, by 14 August, they began to withdraw over the Owen Stanley Range, down the [[Kokoda Track]] towards Isurava. ||| ||| ||| +1 Korićani Cliffs massacre ||| Bosnian War ||| The '''Korićani Cliffs massacre''' was the [[mass murder]] of more than 200 [[Bosniaks|Bosniak]] and [[Croats|Croat]] men on 21 August 1992, during the [[Bosnian War]], at the Korićani Cliffs ([[Bosnian language|Bosnian]], [[Croatian language|Croatian]], and [[Serbian language|Serbian]]: ''Korićanske stijene'') on [[Vlašić (mountain)|Mount Vlašić]] in central [[Bosnia and Herzegovina]]. ||| ||| ||| +1 Kozara Offensive ||| World War II ||| The '''Kozara Offensive''', also known as '''''Operation West-Bosnien''''' by the Axis, was fought in 1942 on and around the mountain of [[Kozara]] in [[Bosanska Krajina|northwestern Bosnia]]. It was an important battle of the [[Yugoslav Partisan]] resistance movement in [[World War II]]. It later became an integral part of [[Socialist Federal Republic of Yugoslavia|Yugoslav]] post-war mythology, which celebrated the courage and martyrdom of outnumbered and outgunned Partisans and civilians. Certain sources mistakenly identify the Kozara Offensive as part of [[Operation Trio]]. ||| ||| ||| +1 Krzysztof Radziwiłł's raid to Moscow ||| Livonian War ||| '''Krzysztof Radziwiłł raid on Moscow''' was a military raid on the [[Grand Duchy of Moscow]] led by [[Krzysztof Mikołaj 'the Thunderbolt' Radziwiłł]], [[Hetmans of the Polish–Lithuanian Commonwealth|Field Hetman]] of the [[Grand Duchy of Lithuania]], during the final stages of the [[Livonian War]] (1558–1583). The raid started in conjunction with the preparation for the [[Siege of Pskov]]. It was a diversionary measure to protect the main Polish–Lithuanian forces at Pskov from a Russian attack. Radziwiłł's cavalry raided deep into the Grand Duchy of Moscow, reaching [[Upper Volga]]. That made the raid one of the most distant Lithuanian raids. The raid was successful: Radziwiłł's men gained much loot, protected the main Polish–Lithuanian forces, and contributed to Tsar [[Ivan IV]] agreeing to negotiate the [[Truce of Jam Zapolski]]. ||| ||| ||| +1 Kuwaiti protests (2011–2012) ||| Arab Spring ||| The '''Kuwaiti protests''' refers to the series of 2011-2012 demonstrations for government reforms in the state of [[Kuwait]]. In November 2011, the [[government of Kuwait]] resigned in response to the protests, making Kuwait one of several countries affected by the [[Arab Spring]] to experience major governmental changes due to unrest. The protests began with [[Bedoon|stateless people (Bedoon)]]. ||| ||| ||| +1 Landing Operation on Hainan Island ||| Chinese Civil War ||| The '''Landing Operation on [[Hainan]] Island''' ({{zh|c=海南岛登陆战役|p=Hǎinándǎo Dēnglù Zhànyì}}), also known as the '''Hainan Island Campaign''' ({{zh|c=海南岛战役|labels=no}}) or the '''Hainan Campaign''' ({{zh|c=海南战役|labels=no}}) for short, was a series of battles fought between the [[Kuomintang|Kuomintang (Nationalists)]] (National Revolutionary Army, NRA) and the [[People's Liberation Army]] (PLA) during the [[Chinese Civil War]] in the post-[[World War II]] period, and resulted in a PLA victory. ||| ||| ||| +1 Landing at Anzac Cove ||| Gallipoli Campaign ||| The '''landing at Anzac Cove''' on Sunday, 25 April 1915, also known as the '''landing at Gaba Tepe''', and to the [[Turkish people|Turks]] as the '''Arıburnu Battle''', was part of the [[Amphibious warfare|amphibious invasion]] of the [[Gallipoli Peninsula]] by the forces of the [[British Empire]], which began the land phase of the [[Gallipoli Campaign]] of the [[First World War]]. ||| ||| ||| +1 Landing at Nadzab ||| World War II ||| The '''Landing at Nadzab''' was an [[airborne forces|airborne landing]] on 5 September 1943 during the [[New Guinea campaign]] of [[World War II]] in conjunction with the [[landing at Lae]]. The Nadzab action began with a parachute drop at [[Lae Nadzab Airport]], combined with an overland force. ||| ||| ||| +1 Landing on Humlebæk ||| Great Northern War ||| The '''Landing on Humlebæk''' took place on August 4, 1700 ([[Gregorian calendar]]), in the Swedish invasion of [[Denmark]] during the [[Great Northern War|Great Northern War 1700-1721]]. This was the first offensive during the war by the Swedish army, and it was directly led by [[Charles XII of Sweden]] commanding the right flank and [[Arvid Horn]] together with [[Carl Gustav Rehnskiöld]] at the left. The Swedes were victorious and utterly routed the Danish forces led by Jens Rostgaard. ||| ||| ||| +1 Laotian Civil War ||| Vietnam War ||| The [[Kingdom of Laos]] was a [[covert]] [[Theatre (warfare)|theatre]] for other belligerents during the [[Vietnam War]]. The Franco–Lao Treaty of Amity and Association, signed 22 October 1953, transferred remaining French powers – except control of military affairs – to the Royal Lao Government, establishing Laos as an independent member of the [[French Union]]. However, this government did not include representatives from the [[Lao Issara]] anti-colonial armed nationalist movement. {{cite web |url=http://www.ucdp.uu.se/gpdatabase/gpcountry.php?id=90&regionSelect=7-Eastern_Asia |title=Laos |author=Uppsala Conflict Data Program |date=2 November 2011 |publisher= Uppsala University Department of Peace and Conflict Research |accessdate=11 November 2002 ||| ||| ||| +1 Leningrad Strategic Defensive ||| Eastern Front (World War II) ||| '''Leningrad Strategic Defensive Operation''' is the name Soviet [[historiography]] for the defensive operations of the [[Red Army]] and [[Soviet Navy]] during [[Eastern Front (World War II)|World War II]] from 10 July to 30 September 1941. The following operations are considered as part of the strategic operation: ||| ||| ||| +1 Leningrad Strategic Defensive ||| World War II ||| '''Leningrad Strategic Defensive Operation''' is the name Soviet [[historiography]] for the defensive operations of the [[Red Army]] and [[Soviet Navy]] during [[Eastern Front (World War II)|World War II]] from 10 July to 30 September 1941. The following operations are considered as part of the strategic operation: ||| ||| ||| +1 Liberation of Paris ||| World War II ||| The '''Liberation of Paris''' (also known as the '''Battle for Paris''') was a military combat that took place during [[World War II]] from 19 August 1944 until the German garrison surrendered the French capital on 25 August 1944. [[Paris]] had been ruled by [[Nazi Germany]] since the signing of the [[Armistice with France (Second Compiègne)|Second Compiègne Armistice]] on 22 June 1940, after which the ''[[Wehrmacht]]'' [[Nazi occupation of France|occupied northern and western France]]. ||| ||| ||| +1 Libyan Civil War (2011) ||| Arab Spring ||| The protests would lead to an uprising and civil war, as part of the wider [[Arab Spring]], ||| Anti-Gaddafi movement ||| Beginnings of protests ||| +1 Linfen–Fushan Campaign ||| Chinese Civil War ||| The '''Linfen–Fushan Campaign''' (临浮战役) was a series battles fought in regions between [[Linfen]] and Floating Mountain (Fushan, 浮山) in [[Shanxi]], [[China]] between the [[Kuomintang|nationalists]] and the [[communist]]s during the [[Chinese Civil War]] and resulted in [[communist]] victory. ||| ||| ||| +1 Linyi Campaign ||| Chinese Civil War ||| The '''[[Linyi]] Campaign''' (临沂战役) was a campaign fought in [[Shandong]], and it was a clash between the [[communist]]s and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after [[World War II]]. The battle was one of that of the [[Chinese Civil War]] in the immediate post [[World War II]] era, and resulted in [[Communist Party of China|communist]] victory. ||| ||| ||| +1 Loss of the Kink Salient ||| Western Front (World War I) ||| '''The Loss of the Kink Salient''' occurred during a local attack on 11 May 1916, by the [[3rd Royal Bavarian Division|3rd Bavarian Division]] on the positions of the [[15th (Scottish) Infantry Division|15th (Scottish) Division]] at the west end of the {{lang|de|''Hohenzollern''}} Redoubt near Loos, on the [[Western Front (World War I)|Western Front]]. An unprecedented bombardment demolished the British front line, specially-trained German assault units rushed the survivors and captured the British front line and the second line of defence, trapped British tunnellers in their galleries and took them prisoner. Hasty counter-attacks by the British were repulsed amidst darkness, smoke and dust, which left British artillery observers unable to see the front line. The British guns continued to fire on the German front line, for long after the German raiders had crossed no man's land but an organised counter-attack at {{nowrap|9:30 p.m.}} was conducted with artillery support. The counter-attack made some progress at Hussar Horn but was abandoned in the early hours of 12 May. A final attempt to recapture the lost ground on 14 May was defeated and the British consolidated a new line further back, on ground less exposed than the Kink. ||| ||| ||| +1 Lower Canada Rebellion ||| Rebellions of 1837 ||| The '''Lower Canada Rebellion''' ([[French language|French]]: ''La rébellion du Bas-Canada''), commonly referred to as the '''Patriots' War''' (French: ''la Guerre des patriotes'') by Quebecers, is the name given to the armed conflict in 1837-38 between the rebels of [[Lower Canada]] (now [[Quebec]]) and the [[United Kingdom|British]] colonial power of that province. Together with the simultaneous [[Upper Canada Rebellion]] in the neighbouring colony of [[Upper Canada]] (now [[Ontario]]), it formed the [[Rebellions of 1837]]. The rebellion of Lower Canada continued in 1838 and in Quebec is often called ''Les rébellions de 1837–38.'' ||| ||| ||| +1 M23 rebellion ||| Second Congo War ||| The '''M23 rebellion''' was fighting that occurred between the [[March 23 Movement]] and the government in [[North Kivu]], [[Democratic Republic of the Congo]] (DRC) since the formal end of the [[Second Congo War]] in 2003. ||| ||| ||| +1 Macau Incident (1799) ||| French Revolutionary Wars ||| The '''Macau Incident''' was an inconclusive encounter between a powerful squadron of [[First French Republic|French]] and [[Enlightenment in Spain|Spanish]] warships and a British [[Royal Navy]] escort squadron in the [[Wanshan Archipelago]] (or Ladrones Archipelago) off [[Portuguese Macau|Macau]] on 27 January 1799. The incident took place in the context of the East Indies campaign of the [[French Revolutionary Wars]], the allied squadron attempting to disrupt a valuable British merchant convoy due to sail from [[Qing Dynasty]] [[China]]. This was the second such attempt in three years; at the [[Bali Strait Incident]] of 1797 a French frigate squadron had been driven off during an attack on that year's China convoy. By early 1799 the French squadron had dispersed, with two remaining ships deployed to the [[Spanish Philippines]]. There the frigates had united with the Spanish [[Manila]] squadron and sailed to attack the British China convoy gathering at Macau. ||| ||| ||| +1 March 1966 Mizo National Front uprising ||| Insurgency in Northeast India ||| * [[Insurgency in Northeast India]] ||| See also ||| ||| +1 Mariana and Palau Islands campaign ||| Pacific War ||| The '''Mariana and Palau Islands campaign''', also known as '''Operation Forager''', was an offensive launched by [[United States]] forces against [[Empire of Japan|Imperial Japanese]] forces in the [[Mariana Islands]] and [[Palau]] in the [[Pacific Ocean]] between June and November, 1944 during the [[Pacific War]]. The United States offensive, under the overall command of [[Chester Nimitz]], followed the [[Gilbert and Marshall Islands campaign]] and was intended to neutralize Japanese bases in the central Pacific, support the [[Allies of World War II|Allied]] drive to retake the [[Philippines]], and provide bases for a strategic bombing campaign against Japan. ||| ||| ||| +1 May Days ||| Spanish Civil War ||| The '''May Days''' of 1937, sometimes also called '''May Events''', refer to a series of clashes between 3 and 8 May 1937 were a period of civil violence in [[Catalonia]], when factions on the Republican side of the Spanish Civil War engaged each other in street battles in various parts of Catalonia, and centered on the city of [[Barcelona]], in the context of the [[Spanish Civil War]]. ||| ||| ||| +1 Meigs Raid ||| American Revolutionary War ||| The '''Meigs Raid''' (also known as the '''Battle of Sag Harbor''') was a military raid by American [[Continental Army]] forces, under the command of [[Connecticut]] Colonel [[Return J. Meigs, Sr.|Return Jonathan Meigs]], on a British [[Loyalist (American Revolution)|Loyalist]] foraging party at [[Sag Harbor, New York]] on May 24, 1777 during the [[American Revolutionary War]]. Six Loyalists were killed and 90 captured while the Americans suffered no casualties. The raid was made in response to a successful British raid on [[Danbury, Connecticut]] in late April that was opposed by American forces in the [[Battle of Ridgefield]]. ||| ||| ||| +1 Moncada Barracks ||| Cuban Revolution ||| The '''Moncada Barracks''' was a military [[barracks]] in [[Santiago de Cuba]], named after General [[Guillermón Moncada]], a hero of the [[Cuban War of Independence|War of Independence]]. On July 26, 1953, the barracks was the site of an armed attack by a small group of revolutionaries led by [[Fidel Castro]]. This armed attack is widely accepted as the beginning of the [[Cuban Revolution]]. The date on which the attack took place, July 26, was adopted by Castro as the name for his [[26th of July Movement|revolutionary movement]] (''Movimiento 26 Julio'' or ''M 26-7'') which eventually toppled the dictatorship of [[Fulgencio Batista]] in 1959. ||| ||| ||| +1 Morgan's Raid ||| American Civil War ||| '''Morgan's Raid''' was a highly publicized incursion by [[Confederate States Army|Confederate]] [[cavalry]] into the [[Northern United States|Northern]] states of [[Indiana]] and [[Ohio]] during the [[American Civil War]]. The raid took place from June 11-July 26, 1863, and is named for the commander of the Confederates, [[Brigadier general|Brig. Gen.]] [[John Hunt Morgan]]. ||| ||| ||| +1 Moro Conflict ||| North Borneo dispute ||| The '''Moro Conflict''' The Moro Insurgency was triggered by the [[Jabidah massacre]], which saw the killing of 60 Filipino Muslim commandos on a planned operation to [[North Borneo dispute|reclaim]] the eastern part of the Malaysian state of [[Sabah]]. In response, the [[University of the Philippines]] professor Nur Misuari established the [[Moro National Liberation Front]] (MNLF), an armed insurgent group that was committed to establishing an independent [[Mindanao]]. Over the successive years, the MNLF splintered into several different groups including the [[Moro Islamic Liberation Front]] (MILF), which wanted to establish an Islamic state within the Philippines. The Moro Insurgency is rooted in a [[Moro Rebellion|long history of resistance]] by the Bangsamoro people against foreign rule, dating back to the American annexation of the Philippines in 1899. Since then, Moro resistance has persisted against the Philippines central government in [[Manila]]. ||| ||| ||| +1 Moro Conflict ||| War on Terror ||| Since 2001, the [[Philippines]] and the [[United States]] have been on a campaign to battle this insurgency, known as [[War on Terror]]. To combat the insurgency, the [[United States]] and the [[Philippines]] conducted the [[Operation Enduring Freedom – Philippines]], a part of the worldwide campaign against terrorism known as [[Operation Enduring Freedom]]. ||| History ||| Estrada and Arroyo (1998–2010) ||| +1 Mount Hope Bay raids ||| American Revolutionary War ||| The '''Mount Hope Bay raids''' were a series of military raids conducted by British troops during the [[American Revolutionary War]] against communities on the shores of [[Mount Hope Bay]] on May 25 and 30, 1778. The towns of [[Bristol, Rhode Island|Bristol]] and [[Warren, Rhode Island]] were significantly damaged, and [[Freetown, Massachusetts]] (present-day [[Fall River, Massachusetts|Fall River]]) was also attacked, although its militia resisted British activities. The British destroyed military defenses in the area, including supplies that had been cached by the [[Continental Army]] in anticipation of an assault on British-occupied [[Newport, Rhode Island]]. Homes as well as municipal and religious buildings were also destroyed in the raids. ||| ||| ||| +1 Mozambican War of Independence ||| Portuguese Colonial War ||| There were several Portuguese special forces units that were unique to either the Mozambican conflict or the [[Portuguese Colonial War]] as a whole: ||| Conflict ||| Continuing war (1969–74) ||| +1 Mukden Incident ||| Japanese invasion of Manchuria ||| The '''Mukden Incident''', or '''Manchurian Incident''', was a staged event engineered by rogue Japanese military personnel as a pretext for the [[Japanese invasion of Manchuria|Japanese invasion in 1931 of northeastern China]], known as [[Manchuria]]. ||| ||| ||| +1 Muslim conquest of Transoxiana ||| Muslim conquests ||| The '''Muslim conquest of Transoxiana''' or the '''Arab conquest of Transoxiana''' was the conquest of [[Transoxiana]], a part of [[Central Asia]] that includes all or parts of modern-day [[Uzbekistan]], [[Tajikistan]], [[Kazakhstan]], and [[Kyrgyzstan]], by the [[Muslim]] [[Arab people|Arabs]] as part of the [[Muslim conquests]] of the 7th and 8th centuries. ||| ||| ||| +1 NATO bombing of Yugoslavia ||| Kosovo War ||| The '''NATO bombing of Yugoslavia''' was the [[North Atlantic Treaty Organisation]]'s (NATO) military operation against the [[Federal Republic of Yugoslavia]] during the [[Kosovo War]]. According to NATO, the operation sought to stop human rights abuses in Kosovo, while in Yugoslavia the operation was incorrectly called 'Merciful Angel' ({{lang-sr-Cyrl|Милосрдни анђео}}), as a result of a misunderstanding or mistranslation. ||| ||| ||| +1 Namibian War of Independence ||| South African Border War ||| The '''Namibian War of Independence''', which lasted from 1966 to 1990, was a [[guerrilla warfare|guerrilla war]] which the nationalist [[SWAPO|South-West Africa People's Organization]] (SWAPO) and others fought against [[South Africa under apartheid|the apartheid government of South Africa]]. It was closely intertwined with the [[South African Border War]]. ||| ||| ||| +1 Naroda Patiya massacre ||| 2002 Gujarat riots ||| The '''Naroda Patiya massacre'''{{efn|Since most of the killings were done in Naroda Patiya, the incident was termed Naroda Patiya massacre instead of Naroda massacre.}} took place on 28 February 2002 at [[Naroda]],{{efn|The town Naroda consists of Naroda Patiya and Naroda Gaon, located 1 km away from each other.}} in [[Ahmedabad]], India, during the [[2002 Gujarat riots]]. 97 [[Muslim]]s were killed by a mob of approximately 5,000 people, organized by the [[Bajrang Dal]], a militant wing of the [[Vishva Hindu Parishad]], and supported by the [[Bharatiya Janata Party]] which was in power in the [[Government of Gujarat|Gujarat State Government]].{{efn|{{harvnb|Human Rights Watch|2002 a}}, {{harvnb|Tehelka|2007 b}}, {{harvnb|Tehelka|2007 c}}, {{harvnb|Indian Express|2007 a}}, {{harvnb|The Hindu|2012 a}}, {{harvnb|Hindustan Times|2012 e}}}} The massacre at Naroda occurred during the [[bandh]] (strike protest) called by [[Vishwa Hindu Parishad]]; a day after the [[Godhra train burning]]. During the post-Godhra rioting,{{efn|[[Godhra train burning]] incident was considered one of the root causes for the riots that began from 28 February. Thus the following incidents were collectively termed to be a part of 'post-Godhra riots'}} which lasted over 10 hours, during which the mob looted, stabbed, sexually assaulted, gang-raped and burnt people individually and in groups. After the conflict, a curfew was imposed in the state and army troops were called in to contain further violence. ||| ||| ||| +1 Narva Offensive (July 1944) ||| Eastern Front (World War II) ||| The Soviet [[Operation Bagration|breakthrough in Belorussia]] made the German [[Army Group North]] withdraw a large portion of their troops from Narva to the central part of the [[Eastern Front (World War II)|Eastern Front]] and to [[Fourth Strategic Offensive|Finland]]. As there were no more sufficient forces for the defence of the former front line at Narva in July, the army group began preparations for the withdrawal of their forces to the [[Battle of Tannenberg Line|Tannenberg defence line]] at the [[Sinimäed Hills]] 16 kilometres from Narva. While the command of the Soviet Leningrad Front was unaware of the preparations, they designed the Narva Offensive. Shock troops from the Finnish front were concentrated near Narva, giving the Leningrad Front a 4:1 superiority both in manpower and equipment. Before the German forces had implemented the plan, the Soviet [[8th Army (Soviet Union)|8th Army]] launched the offensive with an [[Battle of Auvere|assault at Auvere]] Railway Station. The Waffen Grenadier Regiment der SS 45 ''Estland'' ([[20th Waffen Grenadier Division of the SS (1st Estonian)|1st Estonian]]) and the 44th Infantry Regiment (which consisted in personnel from [[East Prussia]]) repulsed the attack, inflicting heavy losses to the 8th Army. The [[11th SS Volunteer Panzergrenadier Division Nordland]] and [[23rd SS Volunteer Panzer Grenadier Division Nederland|4th SS Volunteer Panzergrenadier Brigade Nederland]] stationed in [[Ivangorod]] left their positions quietly on the night before 25 July. The evacuation was carried out according to [[Obergruppenführer]] [[Felix Steiner]]'s plans until the [[2nd Shock Army]] resumed the offensive in the morning of 25 July. Supported by 280,000 shells and grenades from 1,360 assault guns, the army crossed the river north of the town. The II.Battalion, Waffen Grenadier Regiment der SS 46 (2nd Estonian) and II.Battalion, Waffen-Grenadier Regiment der SS 47 (3rd Estonian) kept the 2nd Shock Army from capturing the highway behind the retreating ''Nordland'' and ''Nederland'' detachments. The defensive cost the loss of the SS Volunteer Panzergrenadier Regiment 48 due to their tactical errors. The Soviet forces captured Narva on 26 July. ||| ||| ||| +1 Naval Battle of Vella Lavella ||| Pacific War ||| The {{nihongo|'''Battle of Vella Lavella'''|第二次ベララベラ海戦|Dainiji Berarabera kaisen}} was a [[naval battle]] of the [[Pacific War|Pacific campaign]] of [[World War II]] fought on the night of 6 October 1943, near the island of [[Vella Lavella]] in the [[Solomon Islands]]. ||| ||| ||| +1 Naval operations in the American Revolutionary War ||| American Revolutionary War ||| The '''naval operations of the [[American Revolutionary War]]''' (also, mostly in British usage, ''American War of Independence''), were divided into two periods. The first was from 1771 through the winter of 1779, when the [[Royal Navy]] fought with troops employed against the [[Patriot (American Revolution)|American revolutionaries]], on the coasts, rivers and lakes of [[North America]], or in endeavouring to protect British commerce against the enterprise of American [[privateer]]s. During the second period, the successive interventions of [[France]], [[Spain]], and the [[Netherlands]] extended the naval war until it ranged from the [[West Indies]] to the [[Bay of Bengal]]. This second period lasted from the summer of 1778 to the middle of 1783, and it included operations already been in progress in America or for the protection of commerce, and naval campaigns on a great scale carried out by the fleets of the maritime powers. ||| ||| ||| +1 Naval operations in the Dardanelles Campaign ||| Gallipoli Campaign ||| The '''naval operations in the Dardanelles Campaign''' of the [[World War I|First World War]] were mainly carried out by the [[Royal Navy]] with substantial support from the [[French Third Republic|French]] and minor contributions from [[Russian Empire|Russia]] and [[Australia]]. The [[Dardanelles Campaign]] began as a purely [[naval]] operation. When that failed to overcome Ottoman defences, an [[Gallipoli Campaign|invasion]] of the [[Gallipoli]] [[peninsula]] was launched in which naval forces were heavily involved. Throughout the campaign, attempts were made by [[submarine]]s to pass through the [[Dardanelles]] and disrupt [[Ottoman Empire]] shipping in the [[Sea of Marmara]]. ||| ||| ||| +1 Neapolitan War ||| Hundred Days ||| The '''Neapolitan War''' was a conflict between the Napoleonic [[Kingdom of Naples]] and the [[Austrian Empire]]. It started on 15 March 1815 when [[Joachim Murat]] declared war on Austria and ended on 20 May 1815 with the signing of the [[Treaty of Casalanza]]. The war occurred during the [[Hundred Days]] between [[Napoleon I of France|Napoleon's]] return from exile and before he left Paris to be decisively defeated at the [[Battle of Waterloo]]. The war was triggered by a pro-Napoleon uprising in Naples, and ended after a decisive Austrian victory at the [[Battle of Tolentino]] and [[Ferdinand I of the Two Sicilies|Ferdinand IV]] was reinstated as King of Naples and Sicily. However, the intervention by Austria caused resentment in Italy, which further spurred on the drive towards [[Italian unification]]. ||| ||| ||| +1 New Britain campaign ||| World War II ||| The '''New Britain Campaign''' was a [[World War II]] campaign by the [[Allies of World War II|Allies]], between December 1943 and the end of the war in August 1945, to contain [[Empire of Japan|Japanese]] forces concentrated in [[Rabaul]], the capital of [[New Britain]], the major Japanese base for the [[New Guinea campaign|New Guinea]] and [[Solomon Islands campaign|Solomons campaigns]]. ||| ||| ||| +1 New Georgia Campaign ||| Pacific War ||| The '''New Georgia Campaign''' was a series of land and naval battles of the [[Pacific War|Pacific campaign]] of [[World War II]] between Allied forces and the [[Empire of Japan]]. It was part of [[Operation Cartwheel]], the [[Allies of World War II|Allied]] [[strategy]] in the [[Pacific Ocean|South Pacific]]. The campaign took place in the [[New Georgia Islands|New Georgia]] group of islands, in the central [[Solomon Islands]] from 20 June through 7 October 1943. ||| ||| ||| +1 New Georgia Campaign ||| World War II ||| The '''New Georgia Campaign''' was a series of land and naval battles of the [[Pacific War|Pacific campaign]] of [[World War II]] between Allied forces and the [[Empire of Japan]]. It was part of [[Operation Cartwheel]], the [[Allies of World War II|Allied]] [[strategy]] in the [[Pacific Ocean|South Pacific]]. The campaign took place in the [[New Georgia Islands|New Georgia]] group of islands, in the central [[Solomon Islands]] from 20 June through 7 October 1943. ||| ||| ||| +1 New Guinea campaign ||| Pacific War ||| The '''New Guinea campaign''' of the [[Pacific War]] lasted from January 1942 until the end of the war in August 1945. During the initial phase in early 1942, the [[Empire of Japan]] invaded the [[Australia]]n-administered territories of the [[Territory of New Guinea|New Guinea Mandate]] (23 January) and [[Territory of Papua|Papua]] (8 March) and overran [[Dutch New Guinea|western New Guinea]] (beginning 29/30 March), which was a part of the [[Netherlands East Indies]]. During the second phase, lasting from late 1942 until the Japanese surrender, the [[Allies of World War II|Allies]] cleared the Japanese first from Papua, then the Mandate and finally from the Dutch colony. ||| ||| ||| +1 New Year's Day Battle of 1968 ||| Vietnam War ||| The '''New Year's Day Battle of 1968''' was a military engagement during the [[Vietnam War]] that began on the evening of January 1, 1968. It involved units attached to the American [[25th Infantry Division (United States)|25th Infantry Division]] and a [[regiment]] of the [[Vietnam People's Army|North Vietnamese Army (NVA)]]. ||| ||| ||| +1 New Zealand in the Vietnam War ||| Vietnam War ||| '''New Zealand's involvement in the [[Vietnam War]]''' was highly controversial, sparking widespread protest at home from anti-Vietnam War movements modelled on their American counterparts. This conflict was also the first in which New Zealand did not fight alongside the United Kingdom, instead following the loyalties of the [[ANZUS Pact]]. ||| ||| ||| +1 Ninth Battle of the Isonzo ||| Italian Front (World War I) ||| The '''Ninth Battle of the Isonzo''' was an [[Italian Front (World War I)|Italian offensive]] against [[Austria-Hungary]] in the course [[World War I]]. Including a triumvirate of battles launched after the [[Kingdom of Italy (1861–1946)|Italians]]' successful seizure of [[Gorizia]] in August 1916 to extend their bridgehead to the left of the town, it ended in further failure for the [[Italian Chief of Staff]] [[Luigi Cadorna]]. ||| ||| ||| +1 Nivelle Offensive ||| Western Front (World War I) ||| The '''Nivelle Offensive''' in 1917, was a Franco-British offensive on the [[Western Front (World War I)|Western Front]] in the [[First World War]]. The French part of the offensive was intended to be strategically decisive, by breaking through the German defences on the Aisne within {{nowrap|48 hours,}} with casualties expected to be around {{nowrap|10,000 men.}} A preliminary attack was to be made by the French [[Third Army (France)|Third Army]] at St. Quentin and the British [[First Army (United Kingdom)|First]], [[Third Army (United Kingdom)|Third]] and [[Fifth Army (United Kingdom)|Fifth]] armies at Arras, to capture high ground and divert German reserves from the French fronts on the Aisne and in Champagne. The main offensive was to be delivered by the French on the [[Chemin des Dames]] ridge (the [[Second Battle of the Aisne]] {{lang|fr|''La bataille du Chemin des Dames''}} or {{lang|fr|''Seconde bataille de l'Aisne''}}), with a subsidiary attack by the Fourth Army (the Third Battle of Champagne, the [[Battle of the Hills]] or 'Battle of the Hills of Champagne'). The final stage of the offensive was to follow the meeting of the British and French armies, having broken through the German lines, with a pursuit of the defeated German armies towards the German frontier. ||| ||| ||| +1 Normandy landings ||| Operation Overlord ||| The '''Normandy landings''' (codenamed '''Operation Neptune''') were the [[landing operation]]s on Tuesday, 6 June 1944 (termed '''[[D-Day (military term)|D-Day]]''') of the [[Allies of World War II|Allied]] [[invasion of Normandy]] in [[Operation Overlord]] during [[World War II]]. The largest seaborne invasion in history, the operation began the liberation of German-occupied northwestern Europe from [[Nazi Germany|Nazi]] control, and contributed to the Allied victory on the [[Western Front (World War II)|Western Front]]. ||| ||| ||| +1 Normandy landings ||| Western Front (World War II) ||| The '''Normandy landings''' (codenamed '''Operation Neptune''') were the [[landing operation]]s on Tuesday, 6 June 1944 (termed '''[[D-Day (military term)|D-Day]]''') of the [[Allies of World War II|Allied]] [[invasion of Normandy]] in [[Operation Overlord]] during [[World War II]]. The largest seaborne invasion in history, the operation began the liberation of German-occupied northwestern Europe from [[Nazi Germany|Nazi]] control, and contributed to the Allied victory on the [[Western Front (World War II)|Western Front]]. ||| ||| ||| +1 Normandy landings ||| World War II ||| The '''Normandy landings''' (codenamed '''Operation Neptune''') were the [[landing operation]]s on Tuesday, 6 June 1944 (termed '''[[D-Day (military term)|D-Day]]''') of the [[Allies of World War II|Allied]] [[invasion of Normandy]] in [[Operation Overlord]] during [[World War II]]. The largest seaborne invasion in history, the operation began the liberation of German-occupied northwestern Europe from [[Nazi Germany|Nazi]] control, and contributed to the Allied victory on the [[Western Front (World War II)|Western Front]]. ||| ||| ||| +1 Northern Cheyenne Exodus ||| American Indian Wars ||| | partof = the [[American Indian Wars]] ||| ||| ||| +1 Northern Expedition ||| Chinese Civil War ||| The wars between these new warlords claimed more lives than ever in the 1930s. This would prove to be a major problem for the KMT all the way through [[World War II]] and the following [[Chinese Civil War|civil war]]. Chiang gained the greatest benefit from the expedition, however, for the victory achieved his personal goal of becoming paramount leader. Furthermore, he made the military command superior to KMT party leadership, which resulted in his dictatorship later. ||| Outcome ||| ||| +1 Northern theater of the American Revolutionary War after Saratoga ||| American Revolutionary War ||| The '''Northern theater of the American Revolutionary War after [[Saratoga campaign|Saratoga]]''' consisted of a series of battles between American revolutionaries and British forces, from 1778 to 1782 during the [[American Revolutionary War]]. It is characterized by two primary areas of activity. The first set of activities was based around the British base of operations in [[New York City]], where each side made probes and counterprobes against the other's positions that sometimes resulted in notable actions. The second was essentially a frontier war in [[Upstate New York]] and rural northern [[Pennsylvania]] that was largely fought by state militia companies and some Indian allies on the American side, and Loyalist companies supported by Indians, British Indian agents, and occasionally British [[regular army|regulars]]. The notable exception to significant [[Continental Army]] participation on the frontier was the 1779 [[Sullivan Expedition]], in which General [[John Sullivan (general)|John Sullivan]] led an army expedition that drove the Iroquois out of New York. The warfare amongst the splinters of the [[Iroquois|Iroquois Six Nations]] were particularly brutal, turning much of the Indian population into refugees. ||| ||| ||| +1 November 2012 Jordanian protests ||| Arab Spring ||| [[Food inflation]] and salaries have been causes for resentment in the country, having led to [[2011-2012 Jordanian protests|protests]] the year before. The [[Tunisian Revolution]] and the [[Egyptian Revolution of 2011|Egyptian Revolution]] also raised hopes for political change in the region. Together with unrest elsewhere in the Middle East and North Africa, including the disturbances in Syria and Yemen, they were part of the [[Arab Spring]]. ||| Background ||| ||| +1 Occupation of Constantinople ||| Turkish War of Independence ||| The [[Armistice of Mudros]], which defined the end of World War I for the Ottoman Empire, mentions the occupation of [[Bosphorous fort]] and [[Dardanelles Fortified Area Command|Dardanelles fort]]. On October 30, 1918, [[Somerset Arthur Gough-Calthorpe]], the British signatory (British enforcer during the [[Turkish War of Independence]]) stated the Triple Entente's position that they had no intention to dismantle the government or place it under [[military occupation]] by 'occupying Constantinople'. ||| Background ||| Legality of the occupation ||| +1 Occupation of Gori ||| Russo-Georgian War ||| The '''Occupation of Gori''' was the military occupation of [[Gori, Georgia|Gori]] and its surrounding areas by [[Armed Forces of the Russian Federation|Russian military forces]], which started on 13 August 2008 as part of the [[Russo-Georgian War]], and ended with the withdrawal of [[Russia]]n units from the city on 22 August 2008. ||| ||| ||| +1 Occupation of Poti ||| Russo-Georgian War ||| The '''Raid on Poti''' was a series of Russian strikes against the Georgian [[port]] of [[Poti]] during the [[Russo-Georgian War]] in August 2008. The city was later occupied by Russian troops, who remained for some time before eventually withdrawing. ||| ||| ||| +1 Occupy Canada ||| Occupy movement ||| On October 6, 2011 an opinions story sparking local interest in the [[Occupy movement]]. ||| Canadian participation in the Global Day of Action ||| Occupy Calgary ||| +1 Occupy Central (2011–12) ||| Occupy movement ||| '''Occupy Central''' was an [[Occupation (protest)|occupation protest]], which took place in [[Central, Hong Kong|Central]], Hong Kong and lasted from 15 October 2011 to 11 September 2012. The camp was set up at a plaza beneath the [[HSBC Main Building, Hong Kong|HSBC headquarters]]. On 13 August 2012, the [[High Court (Hong Kong)|High Court]] granted an [[injunction]] against the continuation of the protest, and ordered the occupants to leave by 9 p.m. on 27 August. But protesters defied the order and remained in place until 15 days after the deadline, when court bailiffs were sent to evict the occupants. Ended on 11 September, the movement remained one of the lengthiest [[Occupy movement]]s in the world. ||| ||| ||| +1 Occupy London ||| Occupy movement ||| '''Occupy London''' was an anti-capitalist protest in London, England, and an offshoot of the [[Occupy movement]]. Due to a pre-emptive injunction, the protesters were prevented from their original aim to camp outside the [[London Stock Exchange]]. Instead, a camp was set up nearby next to [[St Paul's Cathedral]]. On 18 January 2012 Mr [[Keith Lindblom|Justice Lindblom]] granted an injunction against continuation of the protest and just past midnight on 28 February bailiffs supported by [[City of London police]] began to remove the tents. {{cite news ||| ||| ||| +1 Occupy Portland ||| Occupy movement ||| The vigil continued uninterrupted for 600 days, making this one of the only active encampments in the [[Occupy movement]] that survived well into the second year. ||| Post-eviction activities ||| 24/7 Prayer Vigil to Lift the Camping Ban ||| +1 Occupy St. Louis ||| Occupy movement ||| '''Occupy St. Louis''' (OccupySTL) was a [[postpartisan]] people's [[Social movement|movement]] that began on October 1, 2011 as a [[Nonviolent resistance|peaceful protest]] against corporate greed, its influence over the economy, its corruption of government, and ensuing inequality. Although people possess differing viewpoints and diversity of views is a central tenet, commonly held themes seek an equal playing field in the economy with more equal opportunities for all people as well as accountability for corporate and financial malfeasance. Many of those in the movement argue that structural, systemic change is necessary and that incremental reform is insufficient and in any case not possible without popular [[countervailing power]] to the power of moneyed interests. Occupy St. Louis is in solidarity with the [[Occupy Wall Street]] [[Occupy movement|movement]]. It is located at Kiener Plaza in downtown [[St. Louis, Missouri|St. Louis]] near an area which includes many financial institutions such as commercial banks and the [[Federal Reserve Bank of St. Louis]]. ||| ||| ||| +1 Occupy Toronto ||| Occupy movement ||| It is part of the international [[Occupy movement]], which protests against [[economic inequality]], [[corporate greed]], and the influence of corporations and [[lobbyists]] on government. ||| ||| ||| +1 October 22 Scud missile attack ||| Yom Kippur War ||| The '''October 22 Scud missile attack''', which took place in the midst of the 1973 [[Yom Kippur War]], was the first operational use of [[Scud]] missiles in the world. It witnessed Egypt launch three Scud missiles against Israeli targets. One of the missiles was fired at [[Arish]] and the others at the Israeli bridgehead on the western bank of the [[Suez Canal]], near [[Deversoir Air Base|Deversoir]]. ||| ||| ||| +1 Ofira Air Battle ||| Yom Kippur War ||| The '''Ofira Air Battle''' was one of the first air battles of the [[Yom Kippur War]]. On 6 October 1973, Egypt launched a massive surprise attack on Israel that included over 200 Egyptian aircraft participating in an opening airstrike. In one of the first engagements near [[Israeli Air Force]] Base Ofir at [[Sharm el-Sheikh]], on the southern tip of the [[Sinai Peninsula]], two [[Israel]]i [[F-4 Phantom II|Phantoms]] reportedly engaged 20 [[Egyptian Air Force]] [[MiG-17]]s and their eight [[MiG-21]] escorts on their way to attack Israeli positions in the area. By the end of the brief six-minute battle, seven MiGs were confirmed to have been shot down according to Israeli account. ||| ||| ||| +1 Omaha Beach ||| Normandy landings ||| '''Omaha Beach''' was the [[code name]] for one of the five sectors of the [[Allies of World War II|Allied]] invasion of [[German occupation of France during World War II|German-occupied France]] in the [[Normandy landings]] on 6 June 1944, during [[World War II]]. Omaha is located on the coast of Normandy, France, facing the [[English Channel]], and is {{convert|5|mi|km|0|disp=flip}} long, from east of [[Sainte-Honorine-des-Pertes]] to west of [[Vierville-sur-Mer]] on the right bank of the [[Douve River]] [[estuary]]. Landings here were necessary in order to link up the British landings to the east at [[Gold Beach|Gold]] with the American landing to the west at [[Utah Beach|Utah]], thus providing a continuous [[lodgement]] on the Normandy coast of the [[Bay of the Seine]]. Taking Omaha was to be the responsibility of [[United States Army]] troops, with sea transport and naval artillery support provided by the [[U.S. Navy]] and elements of the British [[Royal Navy]]. ||| ||| ||| +1 Omaha Beach ||| World War II ||| '''Omaha Beach''' was the [[code name]] for one of the five sectors of the [[Allies of World War II|Allied]] invasion of [[German occupation of France during World War II|German-occupied France]] in the [[Normandy landings]] on 6 June 1944, during [[World War II]]. Omaha is located on the coast of Normandy, France, facing the [[English Channel]], and is {{convert|5|mi|km|0|disp=flip}} long, from east of [[Sainte-Honorine-des-Pertes]] to west of [[Vierville-sur-Mer]] on the right bank of the [[Douve River]] [[estuary]]. Landings here were necessary in order to link up the British landings to the east at [[Gold Beach|Gold]] with the American landing to the west at [[Utah Beach|Utah]], thus providing a continuous [[lodgement]] on the Normandy coast of the [[Bay of the Seine]]. Taking Omaha was to be the responsibility of [[United States Army]] troops, with sea transport and naval artillery support provided by the [[U.S. Navy]] and elements of the British [[Royal Navy]]. ||| ||| ||| +1 Operation Alljah ||| Operation Phantom Thunder ||| '''Operation Alljah''' was an operation launched by [[Multinational force in Iraq|Coalition forces in Iraq]], mainly U.S. Marines, in June 2007 to secure the neighborhoods of Fallujah. The strategy of the operation was somewhat based on a successful operation in [[Ramadi]] conducted in 2006. Insurgents in the town of [[Karma, Iraq|Karma]] nearby were also targeted during the operation, which was part of the overall operation [[Operation Phantom Thunder|Phantom Thunder]]. ||| ||| ||| +1 Operation Amherst ||| World War II ||| '''Operation Amherst''' was a [[Free French Forces|Free French]] and [[British Army during the Second World War|British]] [[Special Air Service|SAS]] attack designed to capture intact Dutch canals, bridges and airfields during [[World War II]]. It was led by [[Brigadier]] [[Mike Calvert]] of [[Chindit]] fame. ||| ||| ||| +1 Operation Archery ||| World War II ||| '''Operation ''Archery''''', also known as the '''Måløy Raid''', was a [[Combined Operations (United Kingdom)|British Combined Operations]] raid during [[World War II]] against [[Nazi Germany|German]] positions on the island of [[Vågsøy]], Norway, on 27 December 1941. ||| ||| ||| +1 Operation Ardennes ||| Iraq War ||| '''Operation Ardennes''' was part of the [[Iraq War]]. ||| ||| ||| +1 Operation Artemis ||| Ituri conflict ||| '''Operation Artemis''' was a short-term [[European Union]]-led [[United Nations|UN]]-authorised military mission to the [[Democratic Republic of the Congo]] during the [[Ituri conflict]]. The deployment of [[EUFOR]] troops quickly decreased the conflict's intensity. It marked the first autonomous EU military mission outside Europe and an important milestone in development of the [[European Security and Defence Policy]]. ||| ||| ||| +1 Operation Artemis ||| Second Congo War ||| During the [[Second Congo War]], the [[Ituri conflict]] occurred in the [[Ituri Region]] alongside [[Lake Albert (Africa)|Lake Albert]] and the [[Uganda]]n border. The Ituri conflict was fought between two non-governmental informally organised ethnic groups, the [[Lendu]] and [[Hema people|Hema]], that had caused the deaths of thousands of people by 2003. ||| Background ||| ||| +1 Operation Attleboro ||| Vietnam War ||| '''Operation Attleboro''' was a [[Vietnam War]] [[search and destroy]] operation by the [[196th Light Infantry Brigade (United States)|196th Light Infantry Brigade]]. The operation was named after [[Attleboro, Massachusetts|Attleboro]], [[Massachusetts]], where the brigade had been formed. Operation Attleboro turned out to be the largest series of air mobile operations to that time, involving all or elements of the 196th Light Infantry Brigade, 25th Division, 1st Infantry Division, and a brigade of the 4th Division, as well as numerous [[Army of the Republic of Vietnam]] and [[South Vietnamese Regional Force|Regional Forces/Popular Forces]] and [[Nùng people|Nungs]]. In the end, the operation became a corps operation commanded by II Field Forces. ||| ||| ||| +1 Operation Backstop ||| Croatian War of Independence ||| '''Operation Backstop''' was a [[United Nations Protection Force]] (UNPROFOR) military plan designed to guard a portion of the [[United Nations Protected Area (UNPROFOR)|United Nations Protected Areas]] (UNPAs) against attack by the [[Croatian Army]] (''Hrvatska vojska'' – HV) during the [[Croatian War of Independence]]. The operation, developed by the UNPROFOR staff in charge of the UNPA Western Slavonia (Sector West) in 1992, was scheduled to be implemented by two mechanised companies of the [[Princess Patricia's Canadian Light Infantry]] (PPCLI) battalion deployed in the area. ||| ||| ||| +1 Operation Badlands ||| Iraq War ||| '''Operation Badlands''' was part of the [[Iraq War]] that began in 2003. Operation Badlands began on 12 April 2005, [[Iraqi Security Force]]s (ISF) and [[United States Marines]] with [[1st Battalion 6th Marines|1st Battalion, 6th Marine Regiment]], together with supporting mechanized elements from [[Regimental Combat Team]]-8, moved to secure the town of [[Saqlawiyah]], 5 miles northwest of the city of [[Fallujah]], and establish a base of operations there. As part of the operation, ISF personnel and Marines from Company A, conducted security and stability operations designed to root out insurgent activity and illegal weapons caches. The troops also worked with civil affairs Marines to help rebuild the community, determining what facilities, such as water pumps and power stations, need to be replaced or restored. No US or Iraqi casualties or deaths were reported during the operation. ||| ||| ||| +1 Operation Badr (1973) ||| Yom Kippur War ||| |partof=the [[Yom Kippur War]]/October War ||| ||| ||| +1 Operation Barbarossa ||| Eastern Front (World War II) ||| Operationally, the Germans won resounding victories and occupied some of the most important economic areas of the Soviet Union, mainly in [[Ukrainian Soviet Socialist Republic|Ukraine]], both inflicting and sustaining heavy casualties. Despite their successes, the German offensive [[Battle of Moscow|stalled]] on the outskirts of [[Moscow]] and was subsequently pushed back by a Soviet [[Battle of Moscow#Soviet counteroffensive|counteroffensive]]. The [[Red Army]] repelled the [[Wehrmacht]]'s strongest blows and forced Germany into a [[Attrition warfare|war of attrition]] for which it was unprepared. The Germans would never again mount a simultaneous offensive along the entire strategic [[Eastern Front (World War II)|Soviet-Axis front]]. The failure of the operation drove Hitler to demand further operations inside the [[USSR]], all of which eventually failed, such as [[Operation Nordlicht (1942)|Operation Nordlicht]], [[Case Blue]], and [[Operation Citadel]]. ||| ||| ||| +1 Operation Barbarossa ||| World War II ||| '''Operation Barbarossa''' (German: ''Unternehmen Barbarossa'') was the [[code name]] for [[Nazi Germany]]'s invasion of the [[Soviet Union]] during [[World War II]], which began on 22 June 1941. The operation was driven by [[Adolf Hitler]]'s ideological desire to conquer the Soviet territories as outlined in his 1925 manifesto ''[[Mein Kampf]]'' ('My Struggle'). ||| ||| ||| +1 Operation Baytown ||| World War II ||| '''Operation Baytown''' on 3 September 1943 was part of the [[Allied invasion of Italy]], itself part of the [[Italian Campaign (World War II)|Italian Campaign]], during the [[World War II|Second World War]]. ||| ||| ||| +1 Operation Birmingham ||| Vietnam War ||| '''Operation Birmingham''' was a military operation of the [[Vietnam War]] in [[War Zone C]], north of [[Saigon]]. The US [[1st Infantry Division (United States)|1st Infantry Division]] and the [[ARVN]] [[5th Division (South Vietnam)|5th Division]] conducted operations on the eastern flank of War Zone C. The goals were opening [[National Route 13 (Vietnam)|Route 13]] from [[Saigon]] to the north and engaging the [[Viet Cong]] [[9th Division (Vietnam)|9th Division]]. The Viet Cong successfully managed to withdraw beyond the [[Cambodia]]n border, after having only 100 soldiers killed by US and South Vietnamese forces; along with that are 500 tons of weapons, ordnance, rice, salt and other foods seized by anti-communist forces. ||| ||| ||| +1 Operation Biting ||| World War II ||| '''Operation ''Biting''''', also known as the '''Bruneval Raid''', was the [[code name]] given to a British [[Combined Operations (United Kingdom)|Combined Operations]] [[Raid (military)|raid]] on a German [[radar]] installation at [[Bruneval]] in northern [[France]], which took place on the night of 27–28 February 1942 during [[World War II]]. ||| ||| ||| +1 Operation Bluecoat ||| Operation Overlord ||| '''Operation Bluecoat''' was an attack by the [[British Army]] during the [[Operation Overlord|Battle of Normandy]], lasting from 30 July until 7 August 1944, during the [[World War II|Second World War]]. The geographical objectives of the attack, launched by [[VIII Corps (United Kingdom)|VIII Corps]] and [[XXX Corps (United Kingdom)|XXX Corps]] of the [[Second Army (United Kingdom)|British Second Army]], were to secure the road junction of [[Vire]] and the high ground of [[Mont Pinçon]]. Operationally, the attack was made to support the success of [[Operation Cobra]] by the [[First United States Army|first US Army]] as it broke out on the western flank of the Normandy beachhead and tactically to exploit the withdrawal of the [[2nd Panzer Division (Wehrmacht)|2nd Panzer Division]] from a quiet area for [[Operation Lüttich]] a counter-offensive against the Americans. ||| ||| ||| +1 Operation Brevity ||| Western Desert Campaign ||| '''Operation Brevity''' was a limited offensive conducted in mid-May 1941, during the [[Western Desert Campaign]] of the [[World War II|Second World War]]. Conceived by the commander-in-chief of the British [[Middle East Command]], General [[Archibald Wavell]], Brevity was intended to be a rapid blow against weak [[Axis powers|Axis]] front-line forces in the [[Sallum|Sollum]]–[[Fort Capuzzo|Capuzzo]]–[[Bardia, Libya|Bardia]] area of the border between Egypt and Libya. Although the operation got off to a promising start, throwing the Axis high command into confusion, most of its early gains were lost to local counter-attacks, and with German reinforcements being rushed to the front the operation was called off after one day. ||| ||| ||| +1 Operation Camargue ||| First Indochina War ||| '''Operation Camargue''' was one of the largest operations by the [[French Far East Expeditionary Corps]] and [[Vietnamese National Army]] in the [[First Indochina War]]. It took place from 28 July until 10 August 1953. French [[Tank|armored platoons]], [[paratrooper|airborne units]] and troops delivered by [[landing craft]] to the coast of central [[Annam (French protectorate)|Annam]], modern-day [[Vietnam]], attempted to sweep forces of the [[communism|communist]] [[Viet Minh]] from the critical [[National Route 1A (Vietnam)|Route One]]. ||| ||| ||| +1 Operation Candytuft ||| World War II ||| During [[World War II]], '''Operation Candytuft''' was a [[United Kingdom|British]] raid by 2nd [[Special Air Service]] launched on 27 October 1943. ||| ||| ||| +1 Operation Castor ||| First Indochina War ||| '''Opération Castor''' was a French airborne operation in the [[First Indochina War]]. The operation established a fortified airhead in [[Điện Biên Province]], in the north-west corner of Vietnam. Commanded by Brigadier General [[Jean Gilles (Soldier)|Jean Gilles]], Castor was the largest airborne operation since World War II. The Operation began at 10:35 on 20 November 1953, with reinforcements dropped over the following two days. With all its objectives achieved, the operation ended on 22 November. ||| ||| ||| +1 Operation Charnwood ||| Battle for Caen ||| '''Operation Charnwood''' was an offensive by [[British Army|British]] and [[Canadian Army|Canadian troops]] that took place from 8 to 9 July 1944, during the [[Battle for Caen]] in the [[World War II|Second World War]]. The operation was intended to at least partially capture the German-occupied French city of [[Caen]] ({{IPA-fr|kɑ̃}}), which was an important objective for the [[Allies of World War II|Allies]] during the opening stages of [[Operation Overlord]], the codename for the Battle of Normandy. It was also hoped that the attack would forestall the transfer of German [[Panzer division|armoured units]] from the Anglo-Canadian sector to the lightly screened American sector, where a major American offensive was being planned. The British and Canadians advanced on a broad front and by the evening of the second day had taken Caen up to the [[Orne River|Orne]] and [[River Odon|Odon]] rivers. ||| ||| ||| +1 Operation Charnwood ||| Operation Overlord ||| '''Operation Charnwood''' was an offensive by [[British Army|British]] and [[Canadian Army|Canadian troops]] that took place from 8 to 9 July 1944, during the [[Battle for Caen]] in the [[World War II|Second World War]]. The operation was intended to at least partially capture the German-occupied French city of [[Caen]] ({{IPA-fr|kɑ̃}}), which was an important objective for the [[Allies of World War II|Allies]] during the opening stages of [[Operation Overlord]], the codename for the Battle of Normandy. It was also hoped that the attack would forestall the transfer of German [[Panzer division|armoured units]] from the Anglo-Canadian sector to the lightly screened American sector, where a major American offensive was being planned. The British and Canadians advanced on a broad front and by the evening of the second day had taken Caen up to the [[Orne River|Orne]] and [[River Odon|Odon]] rivers. ||| ||| ||| +1 Operation Chenla I ||| Vietnam War ||| '''Operation Chenla I''' was an operation of the [[Vietnam War]]. The Cambodian armed forces launched the operation during late August 1970 with limited air support from the South Vietnamese [[Army of the Republic of Vietnam|army]] and [[Vietnam Air Force|air force]]. The objective of the operation was to reconnect Skoun and [[Kampong Cham (city)|Kampong Cham]] along Route 7, which was repeatedly attacked by Communist forces. The operation was terminated in February 1971, after the Cambodian High Command made a decision to withdraw some units from Tang Kauk to protect [[Phnom Penh]] after [[Pochentong]] airbase was attacked. ||| ||| ||| +1 Operation Chenla II ||| Cambodian Civil War ||| '''Operation Chenla II''' was a major military operation conducted by the [[Cambodia]]n military (then known as FANK) during the [[Cambodian Civil War]]. It began on August 20 and lasted until December 3, 1971. ||| ||| ||| +1 Operation Chestnut ||| World War II ||| During [[World War II]], '''Operation Chestnut''' was a failed British raid by 2 [[Special Air Service]], conducted in support of the Allied [[Operation Husky|invasion of Sicily]]. ||| ||| ||| +1 Operation Clipper ||| World War II ||| During the [[World War II|Second World War]], '''Operation Clipper''' was an Allied offensive by [[XXX Corps (United Kingdom)|British XXX Corps]] (which included the [[84th Division (United States)|U.S. 84th Infantry Division]]) to reduce the [[Geilenkirchen]] [[Salients, re-entrants and pockets|salient]] in mid-November 1944. ''Clipper'' was a part of a wider Allied operation, named [[Operation Queen]] to gain control of the [[Roer]] valley and the [[Battle of Hürtgen Forest|Hürtgen Forest]]. ||| ||| ||| +1 Operation Cobra ||| Western Front (World War II) ||| Meanwhile, Marshal von Kluge—commanding all German forces on the [[Western Front (World War II)|Western Front]] (''[[OB West|Oberbefehlshaber West]]'')—was mustering reinforcements, and elements of the [[2nd Panzer Division (Wehrmacht)|2nd]] and [[116th Panzer Division (Wehrmacht)|116th Panzer Divisions]] were approaching the battlefield. The U.S. XIX Corps—led by Major General [[Charles H. Corlett]]—entered the battle on 28 July on the left of VII Corps, and between 28 and 31 July became embroiled with these reinforcements in the fiercest fighting since Cobra began. ||| Allied offensive ||| Breakout and advance 28–31 July ||| +1 Operation Cobra ||| World War II ||| '''Operation Cobra''' was the codename for an offensive launched by the [[First United States Army]] seven weeks after the [[D-Day]] landings, during the [[Invasion of Normandy|Normandy Campaign]] of [[World War II]]. American Lieutenant General [[Omar Bradley]]'s intention was to take advantage of the German preoccupation with British and Canadian activity around the town of [[Caen]], in [[Operation Goodwood]], and immediately punch through the German defenses that were penning in his troops while the Germans were distracted and unbalanced. Once a corridor had been created, the First Army would then be able to advance into [[Brittany]], rolling up the German flanks and releasing itself of the constraints imposed by operating in the Norman [[bocage]] countryside. After a slow start the offensive gathered momentum, and German resistance collapsed as scattered remnants of broken units fought to escape to the [[Seine]]. Lacking the resources to cope with the situation, the German response was ineffectual, and the entire Normandy front soon collapsed. Operation Cobra, together with concurrent offensives by the [[Second Army (United Kingdom)|Second British]] and [[First Canadian Army|First Canadian]] Armies, was decisive in securing an Allied victory in the Normandy Campaign. ||| ||| ||| +1 Operation Coburg ||| Vietnam War ||| '''Operation Coburg''' (24 January − 1 March 1968) was an Australian and New Zealand military action during the [[Vietnam War]]. The operation saw heavy fighting between the [[1st Australian Task Force]] (1 ATF) and [[Vietnam People's Army|North Vietnamese Army]] and [[Viet Cong]] during the wider fighting around [[Long Binh]] and [[Bien Hoa]]. American and South Vietnamese intelligence reports had indicated that an imminent communist offensive during the [[Tết|Tet New Year festival]] was likely, and in response the Australians and New Zealanders were deployed away from their base in [[Phuoc Tuy Province]] to bolster American and South Vietnamese forces defending the Long Binh–Bien Hoa complex north-east of [[Saigon]]. 1 ATF deliberately established [[fire support base]]s astride the communist [[lines of communication]] in the vicinity of the village of [[Trang Bom]], expecting that they would attempt to destroy them. The Australians subsequently clashed with the Viet Cong during early patrols in [[Area of operations|Area of Operations]] (AO) Columbus, while later Fire Support Base (FSB) Andersen was repeatedly subjected to major ground assaults. ||| ||| ||| +1 Operation Colossus ||| World War II ||| '''Operation Colossus''' was the codename given to the first [[airborne forces|airborne]] operation undertaken by the British military, which occurred on 10 February 1941 during [[World War II]]. The British airborne establishment was formed in June 1940 by the order of the British [[Prime Minister of the United Kingdom|Prime Minister]], [[Winston Churchill]], in response to the successful airborne operations conducted by the German military during the [[Battle of France]]. Training began immediately, but a shortage of proper equipment and training facilities, as well as bureaucratic difficulties, meant that only a small number of volunteers could immediately be trained as parachute troops. The first airborne unit to be formed was actually a re-trained [[British Commandos|Commando]] unit, [[No. 2 Commando]], which was subsequently renamed as No. 11 Special Air Service Battalion and numbered approximately 350 officers and other ranks by September 1940. The battalion finished its training in December 1940, and in February 1941 thirty-eight members of the battalion, known as X Troop, were selected to conduct an airborne operation, which was intended to test the capability of the airborne troops and their equipment, as well as the ability of the [[Royal Air Force]] to accurately deliver them. ||| ||| ||| +1 Operation Commando Hunt ||| Vietnam War ||| '''Operation Commando Hunt''' was a covert U.S. [[Seventh Air Force]] and [[U.S. Navy]] [[Task Force 77 (U.S. Navy)|Task Force 77]] aerial interdiction campaign that took place during the [[Vietnam War]]. The operation began on 11 November 1968 and ended on 29 March 1972. The objective of the campaign was to prevent the transit of [[People's Army of Vietnam]] (PAVN) personnel and supplies on the logistical corridor known as the [[Ho Chi Minh Trail]] (the Truong Son Road to the North Vietnamese) that ran from the southwestern [[Democratic Republic of Vietnam]] (North Vietnam) through the southeastern portion of the [[Kingdom of Laos]] and into the [[Republic of Vietnam]] (South Vietnam). ||| ||| ||| +1 Operation Compass ||| Western Desert Campaign ||| '''Operation Compass''' was the first big [[Allies of World War II|Allied]] military operation of the [[Western Desert Campaign]] (1940–1943) during [[World War II]]. [[United Kingdom|British]] and other [[Commonwealth of Nations|Commonwealth]] forces attacked [[Kingdom of Italy|Italian]] forces in western [[Kingdom of Egypt|Egypt]] and [[Cyrenaica]], the eastern province of [[Italian Libya|Libya]], from December 1940 to February 1941, with great success. The [[Western Desert Force]] (Lieutenant-General Sir Richard O'Connor) with about {{nowrap|30,000 men,}} advanced from [[Mersa Matruh]] in Egypt on a five-day raid against the Italian positions of the [[Tenth Army (Italy)|10th Army]] (Marshal Rodolfo Graziani), which had about {{nowrap|150,000 men}} in fortified posts around [[Sidi Barrani]] and in Cyrenaica. ||| ||| ||| +1 Operation Compass ||| World War II ||| '''Operation Compass''' was the first big [[Allies of World War II|Allied]] military operation of the [[Western Desert Campaign]] (1940–1943) during [[World War II]]. [[United Kingdom|British]] and other [[Commonwealth of Nations|Commonwealth]] forces attacked [[Kingdom of Italy|Italian]] forces in western [[Kingdom of Egypt|Egypt]] and [[Cyrenaica]], the eastern province of [[Italian Libya|Libya]], from December 1940 to February 1941, with great success. The [[Western Desert Force]] (Lieutenant-General Sir Richard O'Connor) with about {{nowrap|30,000 men,}} advanced from [[Mersa Matruh]] in Egypt on a five-day raid against the Italian positions of the [[Tenth Army (Italy)|10th Army]] (Marshal Rodolfo Graziani), which had about {{nowrap|150,000 men}} in fortified posts around [[Sidi Barrani]] and in Cyrenaica. ||| ||| ||| +1 Operation Cooney ||| Operation Overlord ||| These men were to disrupt enemy communications between West Brittany and the remainder of France, and in all 58 Free French soldiers were dropped on no fewer than 18 undefended drop zones between [[St. Malo]] and [[Vannes]]. Their goal was to impair the German Army's response to the unfolding invasion of Normandy, [[Operation Overlord]]. ||| ||| ||| +1 Operation Corridor 92 ||| Bosnian War ||| '''Operation Corridor 92''' ({{lang-sr|Операција Коридор 92, ''Operacija Koridor 92''}}) was an operation conducted during the [[Bosnian War]] by the [[Army of Republika Srpska]] (VRS) against the forces of the [[Croatian Defence Council]] (HVO) and the [[Croatian Army]] (HV) in northern Bosnia and Herzegovina between 24 June and 6 October 1992. The objective of the offensive was to re-establish a road link between the city of [[Banja Luka]] in the west of the country and the eastern parts of the territory controlled by the [[Bosnian Serb]]s. The offensive was prompted by the capture of [[Derventa]] by the HV and the HVO – a move that blocked the single overland road between the VRS-controlled territories. ||| ||| ||| +1 Operation Crimp ||| Vietnam War ||| '''Operation Crimp''' (8–14 January 1966), also known as the Battle of the [[Ho Bo Woods]], was a joint US-Australian military operation during the [[Vietnam War]], which took place {{convert|20|km|mi}} north of [[Cu Chi]] in [[Binh Duong Province]], [[South Vietnam]]. The operation targeted a key [[Viet Cong]] headquarters that was believed to be concealed underground, and involved two [[brigades]] under the command of the [[US 1st Infantry Division]], including the [[1st Battalion, Royal Australian Regiment]] (1 RAR) which was attached to the [[173rd Airborne Brigade Combat Team (United States)|US 173rd Airborne Brigade]]. Heavy fighting resulted in significant casualties on both sides, but the combined American and Australian force was able to uncover an extensive tunnel network covering more than {{convert|200|km|mi}}. ||| ||| ||| +1 Operation Cycle ||| Battle of France ||| '''Operation Cycle''' was the name of the evacuation of [[Allies of World War II|Allied]] troops from [[Le Havre]], in the [[Pays de Caux]] of Upper Normandy from {{nowrap|10–13 June}} 1940, towards the end of the [[Battle of France]], during [[World War II]]. The operation was preceded by the better known rescue of {{nowrap|338,226 British}} and French soldiers from [[Dunkirk]] in [[Operation Dynamo]] {{nowrap|(26 May – 4 June).}} On 20 May the Germans had captured [[Abbeville]] at the mouth of the Somme and cut off the main Allied armies in the north. South of the river, the Allies improvised defences and made local counter-attacks, to dislodge the Germans from bridgeheads on the south bank and re-capture river crossings for an advance northwards, to regain contact with the armies in northern France and Flanders. ||| ||| ||| +1 Operation Cycle ||| World War II ||| '''Operation Cycle''' was the name of the evacuation of [[Allies of World War II|Allied]] troops from [[Le Havre]], in the [[Pays de Caux]] of Upper Normandy from {{nowrap|10–13 June}} 1940, towards the end of the [[Battle of France]], during [[World War II]]. The operation was preceded by the better known rescue of {{nowrap|338,226 British}} and French soldiers from [[Dunkirk]] in [[Operation Dynamo]] {{nowrap|(26 May – 4 June).}} On 20 May the Germans had captured [[Abbeville]] at the mouth of the Somme and cut off the main Allied armies in the north. South of the river, the Allies improvised defences and made local counter-attacks, to dislodge the Germans from bridgeheads on the south bank and re-capture river crossings for an advance northwards, to regain contact with the armies in northern France and Flanders. ||| ||| ||| +1 Operation Deadstick ||| Normandy landings ||| '''Operation Deadstick''' was the codename for an operation by [[airborne forces]] of the [[British Army]] that took place on 6 June 1944 as part of the [[Normandy landings]]. The objective was to capture intact two road bridges in Normandy across the [[River Orne]] and the [[Caen Canal]] providing the only exit eastwards, for British forces from their landing on [[Sword Beach]]. Intelligence reports said both bridges were heavily defended by the Germans and wired for demolition. Once captured, the bridges had to be held against any counter-attack until the assault force was relieved by [[British Commandos|commandos]] and infantry advancing from the British landing zone. ||| ||| ||| +1 Operation Delaware ||| Vietnam War ||| '''Operation Delaware''' was a joint military operation launched during the [[Vietnam War]]. It began on Friday, April 19, 1968, with troops from the United States and the [[Army of the Republic of Vietnam]] (ARVN) moving into the [[A Shau Valley]]. The A Shau Valley was a vital corridor for moving military supplies coming from the [[Ho Chi Minh Trail]] and was used by the [[People's Army of Vietnam]] (PAVN) as a staging area for numerous attacks in northern [[I Corps (South Vietnam)|I Corps]]. Other than small, special operations reconnaissance patrols, American and South Vietnamese forces had not been present in the region since the [[Battle of A Shau]] in 1966, when a U.S. Special Forces camp located there was overrun. ||| ||| ||| +1 Operation Diadem ||| World War II ||| '''Operation Diadem''', also referred to as the '''[[Battle of Monte Cassino#Fourth and final battle|Fourth Battle of Monte Cassino]]''' or, in [[Canada]], the '''Battle of the Liri Valley''', was an offensive operation undertaken by the [[Allies of World War II]] ([[United States Army North|U.S. Fifth Army]] and [[Eighth Army (United Kingdom)|British Eighth Army]] in May 1944, as part of the [[Italian Campaign (World War II)|Italian Campaign]] of [[World War II]]. ''Diadem'' was supported by air attacks called [[Operation Strangle]]. The opposing force was the [[10th Army (Wehrmacht)|German Tenth Army]]. ||| ||| ||| +1 Operation Downfall ||| World War II ||| '''Operation Downfall''' was the codename for the [[Allies of World War II|Allied]] plan for the invasion of [[Empire of Japan|Japan]] near the end of [[World War II]]. The planned operation was abandoned when [[Surrender of Japan|Japan surrendered]] following the [[Atomic bombings of Hiroshima and Nagasaki|atomic bombings]] of [[Hiroshima]] and [[Nagasaki]] and the [[Soviet invasion of Manchuria|Soviet declaration of war]]. ||| ||| ||| +1 Operation Dragon Rouge ||| Simba Rebellion ||| By 1964, the Léopoldville government, supported by Western powers, was gaining a foothold in its fight to suppress the communist-backed [[Simba Rebellion|Simba rebellion]]. Fearing an inevitable defeat, the rebels resorted to taking hostages of the local white population in areas under their control. Several hundred hostages were taken to Stanleyville and placed under guard in the Victoria Hotel. ||| Background and operation ||| ||| +1 Operation Dragoon ||| World War II ||| '''Operation Dragoon''' was the [[Allies of World War II|Allied]] invasion of southern France on 15 August 1944, during [[World War II]]. The invasion was initiated via a parachute drop by the [[1st Airborne Task Force]], followed by an amphibious assault by elements of the [[United States Seventh Army]], followed a day later by a force made up primarily of the [[First Army (France)|French First Army]]. ||| ||| ||| +1 Operation Eagle ||| Sinai insurgency ||| '''Operation Eagle''' ({{Lang-ar|عملية نسر}}) was an [[Egypt]]ian military campaign in the [[Sinai Peninsula]], that was launched in August 2011 to confront the [[Sinai insurgency]]. The campaign was aimed against [[Islamism|Islamist]] insurgents, who had been attacking the Egyptian security forces in the Sinai and using the area as a base from which to attack [[Israel]] since early 2011. Successive Egyptian operation against insurgents in 2012, named [[Operation Sinai (2012)|Operation Sinai]], was initially referred as the second part of Operation Eagle. ||| ||| ||| +1 Operation Ellamy ||| 2011 military intervention in Libya ||| The [[2011 military intervention in Libya|no-fly zone]] was proposed during the [[2011 Libyan Civil War|Libyan Civil War]] to prevent government forces loyal to [[Muammar Gaddafi]] from carrying out air attacks on [[anti-Gaddafi forces]]. Several countries prepared to take immediate military action at a conference in Paris on 19 March 2011. ||| ||| ||| +1 Operation Enduring Freedom ||| War on Terror ||| '''Operation Enduring Freedom''' ('''OEF''') is the official name used by the [[Federal government of the United States|government]] of the [[United States|United States of America]] to describe the [[War on Terror|Global War on Terrorism]]. ||| ||| ||| +1 Operation Flaming Dart ||| Vietnam War ||| '''Operation Flaming Dart''' was a U.S. and (South) [[Vietnam Air Force]] military operation, conducted in two parts, during the [[Vietnam War]]. ||| ||| ||| +1 Operation Frequent Wind ||| Fall of Saigon ||| '''Operation Frequent Wind''' was the final phase in the evacuation of American civilians and 'at-risk' Vietnamese from [[Saigon]], [[South Vietnam]] prior to the takeover of the city by the [[North Vietnamese Army]] (PAVN) in the [[Fall of Saigon]]. It was carried out on 29–30 April 1975, during the last days of the [[Vietnam War]]. More than 7,000 people were evacuated by helicopter from various points in Saigon. The airlift resulted in a number of enduring images. ||| ||| ||| +1 Operation Fustian ||| Allied invasion of Sicily ||| '''Operation Fustian''' was an [[airborne forces]] operation undertaken during the [[Allied invasion of Sicily]] in the [[World War II|Second World War]]. The operation was carried out by the [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]], part of the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]]. Their objective was the Primosole Bridge across the [[Simeto|Simeto River]]. The intention was for the brigade, with glider-borne forces in support, to land on both sides of the river. They would then capture the bridge and secure the surrounding area until relieved by the advance of [[XIII Corps (United Kingdom)|XIII Corps]], which had landed on the south eastern coast three days previously. Because the bridge was the only crossing on the river and would give the [[Eighth Army (United Kingdom)|British Eighth Army]] access to the [[Catania]] plain, its capture was expected to speed the advance and lead to the defeat of the [[Axis powers|Axis forces]] in Sicily. ||| ||| ||| +1 Operation Fustian ||| World War II ||| '''Operation Fustian''' was an [[airborne forces]] operation undertaken during the [[Allied invasion of Sicily]] in the [[World War II|Second World War]]. The operation was carried out by the [[1st Parachute Brigade (United Kingdom)|1st Parachute Brigade]], part of the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]]. Their objective was the Primosole Bridge across the [[Simeto|Simeto River]]. The intention was for the brigade, with glider-borne forces in support, to land on both sides of the river. They would then capture the bridge and secure the surrounding area until relieved by the advance of [[XIII Corps (United Kingdom)|XIII Corps]], which had landed on the south eastern coast three days previously. Because the bridge was the only crossing on the river and would give the [[Eighth Army (United Kingdom)|British Eighth Army]] access to the [[Catania]] plain, its capture was expected to speed the advance and lead to the defeat of the [[Axis powers|Axis forces]] in Sicily. ||| ||| ||| +1 Operation Gauntlet ||| World War II ||| During [[World War II]], '''Operation Gauntlet''' was a [[Combined Operations (United Kingdom)|Combined Operations]] raid by [[Canada|Canadian]] troops, with British Army logistics support and [[Free Norwegian Forces]] servicemen on the Norwegian island of [[Spitsbergen]], 600 miles south of the [[North Pole]], from 25 August to 3 September 1941. ||| ||| ||| +1 Operation Gisela ||| Defence of the Reich ||| '''Operation Gisela''' ({{Lang-de|link=no|Unternehmen Gisela}}) was the [[codename]] for a German [[operation (military)|military operation]] of the [[Second World War]]. ''Gisela'' was designed as an aerial intruder operation to support the German air defence system in its night battles with [[RAF Bomber Command]] during the [[Defence of the Reich]] campaign. It was the last major operation launched by the ''[[Luftwaffe]]'' ''Nachtjagdgeschwader'' (Night Fighter Wings) during the conflict. ||| ||| ||| +1 Operation Gordian Knot ||| Portuguese Colonial War ||| The '''Operation Gordian Knot''' (''Operação Nó Górdio'') was the largest and most expensive [[Portugal|Portuguese]] military campaign in the Portuguese overseas province of [[Portuguese East Africa|Mozambique]], [[East Africa]]. It was performed in 1970, during the [[Portuguese Colonial War]] (1961–1974). The objectives of the campaign were to seal off the independentist guerrillas' infiltration routes across the [[Tanzania]]n border and to destroy permanent guerrilla bases in Mozambique. Gordian Knot was a seven-month campaign employing ultimately thirty-five thousand men, and was almost successful since it destroyed most guerrilla camps located in northern Mozambique's countryside and captured large numbers of rebels and armament, forcing the [[FRELIMO]] insurgents to retreat from their outposts in the territory. ||| ||| ||| +1 Operation Grenade ||| World War II ||| During [[World War II]], '''Operation Grenade''' was the crossing of the Roer ([[Rur]]) river between [[Roermond]] and [[Düren]] by the [[Ninth United States Army|U.S. 9th Army]] in February 1945. ||| ||| ||| +1 Operation Gritrock ||| Ebola virus epidemic in West Africa ||| '''Operation Gritrock''' was the [[code name]] given to the [[United Kingdom|British]] participation in the fight against the [[Ebola virus epidemic in West Africa]]. In November 2015, Sierra Leone was officially declared Ebola free. ||| ||| ||| +1 Operation Harpoon (1942) ||| Battle of the Mediterranean ||| * [[Battle of the Mediterranean]] ||| See also ||| ||| +1 Operation Herring ||| World War II ||| '''Operation Herring''' (Herring 1) was the last [[World War II]] [[Airborne forces|airborne]] combat drop in Europe. ||| ||| ||| +1 Operation Hurricane-91 ||| Croatian War of Independence ||| '''Operation Hurricane-91''' ({{lang-hr|Operacija Orkan-91}}) was a military offensive undertaken by the [[Croatian Army]] (''Hrvatska vojska'' – HV) against the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) and [[SAO Western Slavonia]] [[Territorial Defense Forces (Yugoslavia)|Territorial Defense Forces]] in the [[Sava]] River valley, in the region of Western [[Slavonia]] during the [[Croatian War of Independence]]. The operation began on 29 October 1991 and ended on 3 January 1992 when a nationwide ceasefire was signed to implement the [[Vance plan]]. The offensive was aimed at recapturing the region, in conjunction with [[Operation Swath-10|two other HV offensives]] launched against SAO Western Slavonia in the north of the region within days. ||| ||| ||| +1 Operation Igloo White ||| Vietnam War ||| '''Operation Igloo White''' was a covert United States joint military electronic warfare operation conducted from late January 1968 until February 1973, during the [[Vietnam War]]. These missions were carried out by the [[553rd Reconnaissance Wing]], a [[U.S. Air Force]] unit flying modified [[Lockheed EC-121 Warning Star|EC-121R Warning Star]] aircraft, and [[VO-67]], a specialized [[U.S. Navy]] unit flying highly modified [[Lockheed P-2 Neptune|OP-2E Neptune]] ||| ||| ||| +1 Operation Infatuate ||| Battle of the Scheldt ||| '''Operation Infatuate''' was the [[codename]] given to an Anglo-Canadian operation during the [[Second World War]] to open the port of [[Antwerp]] to shipping and relieve logistical constraints. The operation was part of the wider [[Battle of the Scheldt]] and involved two assault landings from the sea by the [[4th Special Service Brigade]] and the [[52nd (Lowland) Division]]. At the same time the [[2nd Canadian Infantry Division]] would force a crossing of the Walcheren causeway. ||| ||| ||| +1 Operation Iron Hammer (Iraq 2005) ||| Iraq War ||| '''Operation Iron Hammer''', also called '''Operation Matraqa Hadidia''', was a military undertaking by the [[United States Armed Forces]], and the [[New Iraqi Army]], which was conducted east of [[Hīt]], [[Iraq]], from 30 November, to 3 January 2006, during the [[Iraq War]], against the [[Iraqi insurgency (Iraq War)|Iraqi insurgency]]. ||| ||| ||| +1 Operation Iskra ||| World War II ||| '''Operation Iskra''' ({{lang-ru|операция «Искра»}}, ''operatsiya Iskra''; {{lang-en|Operation Spark}}) was a [[Soviet Union|Soviet]] military operation during [[World War II]], designed to break the [[Nazi Germany|German]] [[Wehrmacht]]'s [[Siege of Leningrad]]. Planning for the operation began shortly after the failure of the [[Sinyavino Offensive (1942)|Sinyavino Offensive]]. The German defeat in the [[Battle of Stalingrad]] in late 1942 had weakened the German front. By January 1943, Soviet forces were planning or conducting offensive operations across the entire German-Soviet front, especially in southern Russia, Iskra being the northern part of the wider Soviet 1942–1943 winter counter offensive. ||| ||| ||| +1 Operation Jackal ||| Bosnian War ||| '''Operation Jackal''' ({{lang-hr|Operacija Čagalj}}), also known as '''Operation June Dawns''' (Croatian: ''Operacija Lipanjske Zore''), was an offensive of the [[Bosnian War]] fought between a combined [[Croatian Army]] (HV) and [[Croatian Defence Council]] (HVO) army against the [[Army of Republika Srpska]] (VRS) from 7-26 June 1992. The offensive was a [[Croatia]]n pre-emptive strike against the VRS, a [[Bosnian Serb]] military formed in May 1992 from JNA units that were stationed in [[Bosnia and Herzegovina]]. The HV concluded that the [[Yugoslav People's Army]] (JNA) offensive operations of April and May 1992, resulting in the [[Battle of Kupres (1992)|capture of Kupres]] and much of the [[Neretva]] River valley south of [[Mostar]], were aimed at capturing or threatening the Croatian [[Port of Ploče]] and possibly [[Split, Croatia|Split]]. To counter this threat, the Croatian leadership deployed the HV, under the command of [[General]] [[Janko Bobetko]], to the 'Southern Front' including the area in which Operation Jackal was to be conducted. ||| ||| ||| +1 Operation Jackpot ||| Bangladesh Liberation War ||| '''Operation Jackpot''' was the codename for several military operations during the [[Bangladesh Liberation War]] in 1971. Indian Army Eastern Command initiated the original 'Operation Jackpot', an integrated logistical and training operation for the [[Mukti Bahini]] on May 15, 1971 ||| ||| ||| +1 Operation Jumelles ||| Algerian War ||| '''Operation Jumelles''' ({{lang-en|Operation Binoculars}}) was a [[military operation]] which was part of the [[Algerian War]] in the [[Tizi Ouzou Province]], [[Algeria]]. It lasted from 22 July 1959 to March 1960. It was fought between the [[National Liberation Front (Algeria)|FLN]] and the [[French Army]]. ||| ||| ||| +1 Operation Jupiter (1944) ||| Operation Overlord ||| '''Operation Jupiter''' was an offensive launched by [[VIII Corps (United Kingdom)|VIII Corps]] of the [[Second Army (United Kingdom)|British Second Army]] on 10 July 1944 during the [[Operation Overlord|Battle of Normandy]] of [[World War II]]. The objective of the [[43rd (Wessex) Infantry Division]] was to capture the villages of [[Baron-sur-Odon]], [[Fontaine-Étoupefour]], Chateau de Fontaine and recapture Hill 112. An attached brigade of the [[15th (Scottish) Infantry Division]] would take [[Éterville]], Maltot and the ground up to the [[River Orne]] and then the tanks of the [[4th Infantry Brigade and Headquarters North East|4th Armoured Brigade]], supported by infantry, would advance through the captured ground and secure several villages to the west of the River Orne. It was hoped that the initial objectives could be captured by {{nowrap|9:00 a.m.,}} after which the 4th Armoured Brigade would begin the exploitation phase. ||| ||| ||| +1 Operation Jupiter (1944) ||| World War II ||| '''Operation Jupiter''' was an offensive launched by [[VIII Corps (United Kingdom)|VIII Corps]] of the [[Second Army (United Kingdom)|British Second Army]] on 10 July 1944 during the [[Operation Overlord|Battle of Normandy]] of [[World War II]]. The objective of the [[43rd (Wessex) Infantry Division]] was to capture the villages of [[Baron-sur-Odon]], [[Fontaine-Étoupefour]], Chateau de Fontaine and recapture Hill 112. An attached brigade of the [[15th (Scottish) Infantry Division]] would take [[Éterville]], Maltot and the ground up to the [[River Orne]] and then the tanks of the [[4th Infantry Brigade and Headquarters North East|4th Armoured Brigade]], supported by infantry, would advance through the captured ground and secure several villages to the west of the River Orne. It was hoped that the initial objectives could be captured by {{nowrap|9:00 a.m.,}} after which the 4th Armoured Brigade would begin the exploitation phase. ||| ||| ||| +1 Operation Kheibar ||| Battle of the Marshes ||| '''Operation Kheibar''' was an Iranian offensive in the [[Iran-Iraq War]]. It was part of the [[Battle of the Marshes]]. ||| ||| ||| +1 Operation Killer ||| Korean War ||| '''Operation Killer''' was the start of the second major counter offensive launched by [[United Nations]] forces against the Chinese Communist [[People's Volunteer Army]] and the [[North Korean Army]] during the [[Korean War]] between 20 February and 6 March 1951. The offensive was formulated by [[General]] [[Matthew Ridgway]] with the goal of annihilating enemy forces below the [[Arizona Line]] and was immediately followed by [[Operation Ripper]]. ||| ||| ||| +1 Operation Kugelblitz ||| World War II in Yugoslavia ||| '''Operation ''Kugelblitz''''' ('[[ball lightning]]') was a major anti-[[Yugoslav Partisan|Partisan]] offensive conducted by [[Germany|German]] forces in December 1943 during [[World War II in Yugoslavia]]. The Germans attacked [[Josip Broz Tito]]'s Partisan forces in the eastern parts of the [[Independent State of Croatia]] in an attempt to [[encirclement|encircle and destroy]] them, thereby preventing the Partisans from entering the [[Territory of the Military Commander in Serbia]]. Operation ''Kugelblitz'' was followed up immediately by Operation ''Schneesturm'' (Blizzard) which sought to capitalise on the initial success of Operation ''Kugelblitz''. Both operations are associated with the '''Sixth Enemy Offensive''' ({{lang-sh|Šesta neprijateljska ofenziva/ofanziva}}) in [[Yugoslav Partisan]] historiography. ||| ||| ||| +1 Operation Ladbroke ||| World War II ||| '''Operation ''Ladbroke''''' was a [[Military glider|glider]] landing by [[British Army|British]] [[airborne forces|airborne troops]] during the [[World War II|Second World War]] near [[Syracuse, Italy|Syracuse]], [[Sicily]], that began on 9 July 1943 as part of the [[Allied invasion of Sicily|Allied invasion of the island]]. The first Allied mission using large numbers of the aircraft, the operation was carried out from [[Tunisia]] by [[glider infantry]] of the [[1st Airlanding Brigade (United Kingdom)|British 1st Airlanding Brigade]], with a force of 136 [[Waco CG-4|Wacos]] and eight [[Airspeed Horsa|Horsas]]. The objective was to establish a large invasion force on the ground near the town of Syracuse, secure the Ponte Grande Bridge and ultimately take control of the city itself with its strategically vital docks, as a prelude to the full-scale invasion of Sicily. ||| ||| ||| +1 Operation Linebacker ||| Vietnam War ||| '''Operation ''Linebacker''''' was the title of a U.S. [[Seventh Air Force]] and [[U.S. Navy]] [[Task Force 77 (U.S. Navy)|Task Force 77]] [[air interdiction]] campaign conducted against the [[Democratic Republic of Vietnam]] (North Vietnam) from 9 May to 23 October 1972, during the [[Vietnam War]]. ||| ||| ||| +1 Operation Little Saturn ||| Battle of Stalingrad ||| Operation Uranus was the codename of the [[Soviet Union|Soviet]] strategic operation in World War II which led to the encirclement of the German [[6th Army (Wehrmacht)|Sixth Army]], [[Romanian Armies in the Battle of Stalingrad|Third and Fourth Romanian]] armies, and portions of the German [[4th Panzer Army|Fourth Panzer Army]]. The operation formed part of the ongoing [[Battle of Stalingrad]], and was aimed at destroying German forces in and around Stalingrad. Planning for Operation ''Uranus'' had commenced as early as September 1942, and was developed simultaneously with plans to envelop and destroy German [[Army Group Centre|Army Group Center]] and German forces in the Caucasus. The Red Army took advantage of the fact that German forces in the southern Soviet Union were overstretched around [[Stalingrad]], using weaker Romanian armies to guard their flanks; the offensive's starting points were established along the section of the front directly opposite Romanian forces. These Axis armies were deployed in open positions on the steppe and lacked heavy equipment to deal with Soviet armor. ||| Background ||| Operation Uranus ||| +1 Operation Mars ||| World War II ||| '''Operation Mars''', also known as '''Second Rzhev-Sychevka Offensive Operation''' (Russian: Вторая Ржевско-Сычёвская наступательная операция), was the codename for an offensive launched by [[Soviet Union|Soviet]] forces against [[Nazi Germany|German]] forces during [[World War II]]. It took place between 25 November and 20 December 1942 around the [[Rzhev]] [[Salients, re-entrants and pockets|salient]] in the vicinity of [[Moscow]]. ||| ||| ||| +1 Operation Menu ||| Vietnam War ||| '''Operation Menu''' was the codename of a [[covert operation|covert]] [[United States]] [[Strategic Air Command]] (SAC) bombing campaign conducted in eastern [[Cambodia]] and [[Laos]] from 18 March 1969 until 26 May 1970, during the [[Vietnam War]]. The targets of these attacks were sanctuaries and Base Areas of the [[People's Army of Vietnam]] (PAVN) and forces of the [[Viet Cong]], which utilized them for resupply, training, and resting between campaigns across the border in the [[Republic of Vietnam]] (South Vietnam). The impact of the bombing campaign on the [[Khmer Rouge]] guerrillas, the PAVN, and Cambodian civilians in the bombed areas is disputed by historians. ||| ||| ||| +1 Operation Mihailovic ||| World War II ||| '''Operation ''Mihailovic''''' was the codename for the final [[World War II]] German anti-guerrilla offensive to suppress the Serbian [[Chetniks|Chetnik detachments of the Yugoslav Army]], headed by Colonel [[Dragoljub Mihailović]]. The offensive took place from 4 to 9 December 1941 near [[Šumadija]], in the [[Territory of the Military Commander in Serbia]]. ||| ||| ||| +1 Operation München ||| World War II ||| '''Operation München''' (''Operaţiunea München'') was the Romanian codename of a joint [[Nazi Germany|German]]-[[Romania]]n offensive during the [[Operation Barbarossa|German invasion of the Soviet Union]] in [[World War II]], with the primary objective of recapturing [[Bessarabia]] and [[Northern Bukovina]], ceded by Romania to the [[Soviet Union]] a year before ([[Soviet occupation of Bessarabia and Northern Bukovina]]). ||| ||| ||| +1 Operation Niagara ||| Vietnam War ||| '''Operation ''Niagara''''' was a U.S. [[Seventh Air Force]] close air support campaign carried out from January through March 1968, during the [[Vietnam War]]. Its purpose was to serve as an aerial umbrella for the defense of the [[U.S. Marine Corps]] Combat Base on the [[Khe Sanh]] Plateau, in western Quang Tri Province of the [[Republic of Vietnam]]. The base was under siege by an estimated three-divisional force of the [[People's Army of Vietnam]] (PAVN). ||| ||| ||| +1 Operation Nimble Archer ||| Operation Earnest Will ||| '''Operation Nimble Archer''' was the 19 October 1987, attack on two [[Iran]]ian oil platforms in the [[Persian Gulf]] by [[United States Navy]] forces. The attack was a response to Iran's missile attack three days earlier on {{ship|MV|Sea Isle City||6}}, a reflagged [[Kuwait]]i [[oil tanker]] at anchor off Kuwait. The action occurred during [[Operation Earnest Will]], the effort to protect Kuwaiti shipping amid the [[Iran-Iraq War]]. ||| ||| ||| +1 Operation Nordwind ||| Western Front (World War II) ||| '''Operation North Wind''' (''Unternehmen Nordwind'') was the last major [[Nazi Germany|German]] offensive of [[World War II]] on the [[Western Front (World War II)|Western Front]]. It began on 31 December 1944 in [[Alsace]] and [[Lorraine (province)|Lorraine]] in northeastern France, and it ended on 25 January. ||| ||| ||| +1 Operation Nordwind ||| World War II ||| '''Operation North Wind''' (''Unternehmen Nordwind'') was the last major [[Nazi Germany|German]] offensive of [[World War II]] on the [[Western Front (World War II)|Western Front]]. It began on 31 December 1944 in [[Alsace]] and [[Lorraine (province)|Lorraine]] in northeastern France, and it ended on 25 January. ||| ||| ||| +1 Operation Northern Delay ||| 2003 invasion of Iraq ||| On 26 March 2003, during [[2003 invasion of Iraq|Operation Iraqi Freedom]], [[C-17 Globemaster III|C-17]]s of the [[62d Airlift Wing]], [[315th Airlift Wing]], [[437th Airlift Wing]], and [[446th Airlift Wing]] dropped [[SETAF]]'s [[173rd Airborne Brigade]] into Northern [[Iraq]]. 996 [[paratrooper]]s jumped into [[Bashur Airfield]]. The operation forced the [[Iraqi Army]] to maintain approximately six divisions in the area to protect its northern flank, providing strategic relief for Coalition Forces advancing on [[Baghdad]] from the south. ||| ||| ||| +1 Operation Ostra Brama ||| World War II ||| '''Operation [[Ostra Brama]]''' (lit. Operation ''Gate of Dawn'') was an armed conflict during [[World War II]] between the [[Armia Krajowa|Polish Home Army]] and the [[Nazi German]] occupiers of [[Vilnius]] (Polish: ''Wilno''). It began on 7 July 1944, as part of a Polish national uprising, [[Operation Tempest]], and lasted until 14 July 1944. Though the Germans were defeated, the following day the Soviet [[Red Army]] entered the city and the Soviet [[NKVD]] proceeded to [[intern]] Polish soldiers and to arrest their officers. Several days later, the remains of the Polish Home Army retreated into the forests, and the Soviets were in control of the city. ||| ||| ||| +1 Operation Overlord ||| Western Front (World War II) ||| '''Operation Overlord''' was the code name for the '''Battle of Normandy''', the [[Allies of World War II|Allied]] operation that launched the successful invasion of German-occupied [[Western Front (World War II)|western Europe]] during World War II. The operation commenced on 6 June 1944 with the [[Normandy landings]] ('''Operation Neptune''', commonly known as '''D-Day'''). A 1,200-plane [[Airborne forces|airborne assault]] preceded an [[amphibious warfare|amphibious assault]] involving more than 5,000 vessels. Nearly 160,000 troops crossed the [[English Channel]] on 6 June, and more than three million Allied troops were in France by the end of August. ||| ||| ||| +1 Operation Pamphlet ||| World War II ||| '''Operation Pamphlet''', also called '''Convoy Pamphlet''', was a [[convoy]] operation of [[World War II]] conducted during January and February 1943 to transport the [[Australian Army]]'s [[9th Division (Australia)|9th Division]] home from Egypt. The convoy involved five transports, which were protected from Japanese warships during their trip across the [[Indian Ocean]] and along the Australian coastline by several Allied naval task forces. The 9th Division boarded the ships during late January 1943, and the convoy operation began on 4 February. No contact was made between Allied and Japanese ships, and the 9th Division arrived in Australian ports during late February with no losses from enemy action. ||| ||| ||| +1 Operation Patio ||| Vietnam War ||| '''Operation ''Patio''''' was a covert aerial interdiction effort conducted by the U.S. [[Seventh Air Force]] in Cambodia from 24–29 April 1970 during the [[Vietnam War]]. It served as a tactical adjunct to the heavier [[B-52 Stratofortress]] bombing missions being carried out in [[Operation Menu]]. ||| ||| ||| +1 Operation Perch ||| Operation Overlord ||| '''Operation Perch''' was a British offensive of the [[World War II|Second World War]] which took place from {{nowrap|7–14 June 1944,}} during the [[Invasion of Normandy|Battle of Normandy]]. The operation was intended to encircle and seize the [[Nazi Germany|German]] occupied city of [[Caen]], which was an Allied D-Day objective in the early stages of the [[Operation Overlord]]. Operation Perch was to begin immediately after the British beach landings with an advance to the south-east of Caen by [[XXX Corps (United Kingdom)|XXX Corps]]. Three days after the invasion the city was still in German hands and the operation was amended. The operation was expanded to include [[I Corps (United Kingdom)|I Corps]] for a [[Pincer movement|pincer attack]] on Caen. ||| ||| ||| +1 Operation Pierce Arrow ||| Vietnam War ||| '''Operation Pierce Arrow''' was a U.S. bombing campaign at the beginning of the [[Vietnam War]]. ||| ||| ||| +1 Operation Product ||| Indonesian National Revolution ||| '''''Operation Product''''', was the first of two major [[Netherlands|Dutch]] military offensives against the Republic of [[Indonesia]] during the [[Indonesian National Revolution]]. It took place between 21 July and 4 August 1947. ||| ||| ||| +1 Operation Python ||| Indo-Pakistani War of 1971 ||| '''Operation Python''', a follow-up to [[Operation Trident (Indo-Pakistani War)|Operation Trident]], was a code name of a naval attack launched on West Pakistan's port city of [[Karachi]] by the [[Indian Navy]] during the [[Indo-Pakistani War of 1971]]. After the first attack during [[Operation Trident (1971)|Operation Trident]] on Karachi port, Pakistan stepped up aerial surveillance of its coast and the presence of large Indian Navy ships gave the impression that another attack was being planned. ||| ||| ||| +1 Operation Queen ||| World War II ||| '''Operation ''Queen''''' was an American operation during [[World War II]] at the [[Western Front (World War II)|Western Front]] at the German [[Siegfried Line]]. ||| ||| ||| +1 Operation Rimau ||| World War II ||| '''Operation Rimau''' was an attack on [[Empire of Japan|Japanese]] shipping in Singapore Harbour, carried out by an [[Allies of World War II|Allied]] [[commando]] unit [[Z Special Unit]], during [[World War II]] using Australian built MKIII [[folboat]]s. It was a follow-up to the successful ''[[Operation Jaywick]]'', which had taken place in 1943, and ''Rimau'', a shortened version of the word Harimau (which is [[Malay language|Malay]] for tiger). It was again led by Lieutenant Colonel [[Ivan Lyon]] of the Gordon Highlanders. ||| ||| ||| +1 Operation Rimon 20 ||| War of Attrition ||| '''Rimon 20''' ({{lang-he|רימון 20}}, ''Pomegranate 20'') was the code name of a planned aerial battle which pitted the [[Israeli Air Force]] against [[Soviet Union|Soviet]] fighter pilots stationed in [[Egypt]] during the [[War of Attrition]]. In the engagement, which took place on July 30, 1970, five Soviet flown [[MiG-21]]s were downed by Israeli [[F-4 Phantom]]s and [[Mirage III]]s. Contributing to the conclusion of a ceasefire, it was one of the final engagements of the War of Attrition. ||| ||| ||| +1 Operation Ring ||| Nagorno-Karabakh War ||| Armenia fiercely contested the legality of the operation and within two months declared its independence and seceded from the Soviet Union. Within several months, the fighting between Azerbaijan and Armenia worsened and precipitated the open-phased segment of the [[Nagorno-Karabakh War]]. ||| Aftermath ||| ||| +1 Operation Rolling Thunder ||| Vietnam War ||| '''Operation Rolling Thunder''' was the title of a gradual and sustained aerial bombardment campaign conducted by the US [[2nd Air Division]] (later [[Seventh Air Force]]), [[US Navy]], and [[Republic of Vietnam Air Force]] (VNAF) against the [[Democratic Republic of Vietnam]] (North Vietnam) from 2 March 1965 until 2 November 1968, during the [[Vietnam War]]. ||| ||| ||| +1 Operation Rooster 53 ||| War of Attrition ||| '''Operation Rooster 53''' was an [[Israel]]i [[Israel Defense Forces|military]] operation during the [[War of Attrition]] to capture an [[Egypt]]ian [[P-12 radar]] system. Often referred to as merely '''Operation Rooster''', it was carried out on December 26 and 27, 1969. Participating forces including the [[Nahal|Nahal Brigade]]'s 50th battalion, the elite paratrooper reconnaissance unit [[Sayeret Tzanhanim]], and the [[Israeli Air Force]]. ||| ||| ||| +1 Operation Roundup (1951) ||| Korean War ||| '''Operation Roundup''' was an attack launched on 5 February 1951, during the [[Korean War]]. The attack was launched by the [[X Corps (United States)|United States X Corps]] toward [[Hongch'on]] and [[P'yonch'ang]]. ||| ||| ||| +1 Operation Rösselsprung (1944) ||| World War II ||| '''Operation ''Rösselsprung''''' ([[knight (chess)|Knight's move]]) was a combined airborne and ground assault by the [[Nazi Germany|German]] [[XV Mountain Corps (Germany)|XV Mountain Corps]] and their allies on the Supreme Headquarters of the [[Yugoslav Partisans]] located at the town of [[Drvar]] in the western [[Independent State of Croatia]] (of which modern-day [[Bosnia and Herzegovina]] was a part) during [[World War II]]. The operation was launched on 25 May 1944, and was aimed at capturing or killing Marshal [[Josip Broz Tito]] and destroying the headquarters, support facilities and co-located [[Allies of World War II|Allied]] military missions. It is associated with the '''Seventh Enemy Offensive''' ({{lang-sh-Latn|Sedma neprijateljska ofenziva}}) in [[Socialist Federal Republic of Yugoslavia|Yugoslav]] history. The airborne assault itself is also known as the '''Raid on Drvar''' ({{lang-sh-Latn|Desant na Drvar|links=no}}). ||| ||| ||| +1 Operation Sana ||| Bosnian War ||| '''Operation Sana''' ({{lang-bs|Operacija Sana}}) was a military offensive undertaken by the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH) in western [[Bosnia and Herzegovina]] during the [[Bosnian War]]. It was launched from the area of [[Bihać]] on 13 September 1995, against the [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS), and involved advances towards [[Bosanski Petrovac]], [[Sanski Most]] and [[Bosanska Krupa]]. At the same time, the [[Croatian Army]] (''Hrvatska vojska'' – HV) and the [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) were engaging the VRS in [[Operation Mistral 2|Operation Maestral 2]] further to the southeast. After an initial {{convert|70|km|adj=on}} advance, VRS reinforcements managed to stop the ARBiH short of Sanski Most and [[Novi Grad, Bosnia and Herzegovina|Novi Grad]], and reversed some of the ARBiH's territorial gains in a [[counterattack]]. After a part of the [[V Corps (Bosnia and Herzegovina)|ARBiH 5th Corps]] was threatened with defeat around the town of [[Ključ, Una-Sana Canton|Ključ]], the ARBiH requested assistance from the HV. ||| ||| ||| +1 Operation Shurta Nasir ||| Iraq War ||| Hīt was home to 80,000 people at the time of the [[Iraq War]]. The [[Al-Qaeda]] took the town, and have been being a preadator on it, implanting [[Improvised explosive device|IED]]s all over the highways that led to Hīt. U.S. troops had been trying to capture Hīt for a long time, but the Al-Qaeda have been unstoppable. The [[Sheikh]] Hikat, the leader of Hīt, was very mad about the monkey business that was afoot. He met with Sergeant Martin Moore of the [[5th Special Forces Group]] and Moore came up with an idea called Operation Shurta Nasir, or 'Operation Police Victory' named for the Iraqi SWAT teams that would help the U.S. take over the town. ||| The trouble with Hīt ||| ||| +1 Operation Slapstick ||| World War II ||| '''Operation Slapstick''' was the [[code name]] for a British landing from the sea at the Italian [[port of Taranto]] during the [[World War II|Second World War]]. The operation, one of three landings during the [[Allied invasion of Italy]] in September 1943, was undertaken by [[British Army|British]] [[Airborne forces|airborne troops]] of the [[1st Airborne Division (United Kingdom)|British 1st Airborne Division]]. ||| ||| ||| +1 Operation Sledgehammer (2007) ||| Iraq War ||| '''Operation Sledgehammer''' (2007) was a military search operation during the [[Iraq War|2003 Iraq war]]. The search was carried out in an attempt to disrupt militia influence and violence in the town of [[Jabella]], [[Iraq]] 22 June 2007. ||| ||| ||| +1 Operation Sonnenblume ||| North African Campaign ||| '''Operation ''Sonnenblume''''' (''Unternehmen Sonnenblume''/Operation Sunflower) was the name given to the dispatch of German troops to [[North African Campaign|North Africa]] in February 1941, during the [[World War II|Second World War]]. German troops reinforced the remaining Italian forces in [[Libya]], after the Italian [[Tenth Army (Italy)|10th Army]] was destroyed by British attacks during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941).}} The first units departed Naples for Africa and arrived on 11 February. On 14 February, the first units of the [[21st Panzer Division (Wehrmacht)|5th Light ''Afrika'' Division]] (later renamed the 21st Panzer Division), {{lang|de|''Aufklärungsbataillon''}} 3 (Reconnaissance Battalion 3) and {{lang|de|''Panzerjägerabteilung''}} 39 (Tankhunter Detachment 39) arrived in [[Tripoli]], Libya and were sent immediately to the front line at [[Sirte]]. ||| ||| ||| +1 Operation Sonnenblume ||| World War II ||| '''Operation ''Sonnenblume''''' (''Unternehmen Sonnenblume''/Operation Sunflower) was the name given to the dispatch of German troops to [[North African Campaign|North Africa]] in February 1941, during the [[World War II|Second World War]]. German troops reinforced the remaining Italian forces in [[Libya]], after the Italian [[Tenth Army (Italy)|10th Army]] was destroyed by British attacks during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941).}} The first units departed Naples for Africa and arrived on 11 February. On 14 February, the first units of the [[21st Panzer Division (Wehrmacht)|5th Light ''Afrika'' Division]] (later renamed the 21st Panzer Division), {{lang|de|''Aufklärungsbataillon''}} 3 (Reconnaissance Battalion 3) and {{lang|de|''Panzerjägerabteilung''}} 39 (Tankhunter Detachment 39) arrived in [[Tripoli]], Libya and were sent immediately to the front line at [[Sirte]]. ||| ||| ||| +1 Operation Southeast Croatia ||| World War II ||| '''Operation Southeast Croatia''' ({{lang-de|Unternehmen Südost Kroatien}}) was a large-scale [[Nazi Germany|German]]-led [[counter-insurgency]] operation conducted in the southeastern parts of the [[Independent State of Croatia]] ({{lang-hr|Nezavisna Država Hrvatska}}, NDH), (modern-day [[Bosnia and Herzegovina]]) during [[World War II]]. It was the first of two German-led operations targeting mainly [[Yugoslav Partisans]] in eastern [[Bosnia (region)|Bosnia]] between 15 January and 4 February 1942. Several days after the conclusion of Operation Southeast Croatia, a follow-up operation known as Operation Ozren was carried out between the [[Bosna (river)|Bosna]] and [[Spreča]] rivers. Both operations also involved [[Croatian Home Guard (Independent State of Croatia)|Croatian Home Guard]] and [[Royal Italian Army|Italian]] troops and are associated with what is known as the '''Second Enemy Offensive''' ({{lang-sh-Latn|Druga neprijateljska ofenziva}}) in [[Socialist Federal Republic of Yugoslavia|Yugoslav]] historiography. ||| ||| ||| +1 Operation Southern Move ||| Bosnian War ||| '''Operation Southern Move''' ({{lang-hr|Operacija južni potez}}) was the final [[Croatian Army]] (''Hrvatska vojska'' – HV) and [[Croatian Defence Council]] (''Hrvatsko vijeće obrane'' – HVO) offensive of the [[Bosnian War]]. It took place in western [[Bosnia and Herzegovina]] on 8–11 October 1995. Its goal was to help the [[Army of the Republic of Bosnia and Herzegovina]] (''Armija Republike Bosne i Hercegovine'' – ARBiH) whose positions around the town of [[Ključ, Una-Sana Canton|Ključ]], captured by them during [[Operation Sana]], were endangered by a counteroffensive by the [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS). The objectives of Operation Southern Move included the capture of the town of [[Mrkonjić Grad]] and positions on the [[Manjača]] Mountain which would allow the HV and the HVO to directly threaten [[Banja Luka]], the largest [[Bosnian Serb]] city. Finally, the offensive was also aimed at capturing the [[Bočac Hydroelectric Power Station]], the last significant source of electricity under VRS control in western Bosnia and Herzegovina. The combined HV and HVO forces were under the overall command of HV [[Major General]] [[Ante Gotovina]]. ||| ||| ||| +1 Operation Spring Awakening ||| Eastern Front (World War II) ||| '''Operation Frühlingserwachen''' (''''Spring Awakening'''') (6 – 16 March 1945) was the last major German offensive of [[World War II]]. The offensive was launched in [[Hungary]] on the [[Eastern Front (World War II)|Eastern Front]]. This offensive was also known in German as the '''Plattensee Offensive''', in Russian as the '''Balaton Defensive Operation''' (6 – 15 March 1945), and in English as the '''Lake Balaton Offensive'''. ||| ||| ||| +1 Operation Spring Awakening ||| World War II ||| '''Operation Frühlingserwachen''' (''''Spring Awakening'''') (6 – 16 March 1945) was the last major German offensive of [[World War II]]. The offensive was launched in [[Hungary]] on the [[Eastern Front (World War II)|Eastern Front]]. This offensive was also known in German as the '''Plattensee Offensive''', in Russian as the '''Balaton Defensive Operation''' (6 – 15 March 1945), and in English as the '''Lake Balaton Offensive'''. ||| ||| ||| +1 Operation Starlite ||| Vietnam War ||| '''Operation Starlite''' (also known in Vietnam as '''Battle of Van Tuong''') was the first major offensive regimental size action conducted by a purely [[United States|U.S.]] military unit during the [[Vietnam War]]. The operation was launched based on intelligence provided by [[Major General]] [[Nguyen Chanh Thi]], the commander of the [[South Vietnam]]ese forces in northern I Corps area. [[Lieutenant General]] [[Lewis W. Walt]] devised a plan to launch a pre-emptive strike against the [[Viet Cong]] regiment to nullify the threat on the vital [[Chu Lai Air Base]] and [[Chu Lai Base Area|Base Area]] and ensure its powerful [[communication]] tower remained intact. ||| ||| ||| +1 Operation Stinger ||| Croatian War of Independence ||| '''Operation Stinger''' ({{lang-hr|Operacija Žalac}}; {{lang-sr|''Operacija Žaoka''}}) was an offensive undertaken by the forces of the [[SAO Krajina]], an unrecognized [[Serbs of Croatia|Croatian Serb]] region opposing the [[Republic of Croatia]], against positions held by the Croatian police in the region of [[Banovina (region)|Banovina]] on 26–27 July 1991, during the [[Croatian War of Independence]]. It was primarily aimed at police stations in [[Glina, Croatia|Glina]] and [[Kozibrod]], as well as police-held positions in a string of villages between the town of [[Dvor, Croatia|Dvor]] and Kozibrod. In addition to Glina and Kozibrod, heavy fighting took place in the village of [[Struga Banska|Struga]], north of Dvor, where Croatian Serb forces employed a [[human shield]] consisting of Croat civilians taken from their homes in Struga and the nearby village of [[Zamlača]]. ||| ||| ||| +1 Operation Stone Age ||| World War II ||| During the [[World War II|Second World War]], '''Operation ''Stone Age''''' or '''''Stoneage''''' was the passage of MW13, the [[Malta Convoys|convoy]] of four merchant ships that reached [[Malta]] from Egypt on 20 November 1942 from [[Alexandria]]. Its arrival is considered to have broken the siege of that island. However, a coordinated convoy from [[Gibraltar]] was cancelled as Axis forces still held [[Tunisia]] and would have been too great a threat. ||| ||| ||| +1 Operation Storm ||| Bosnian War ||| '''Operation Storm''' ({{lang-hr|Operacija Oluja}}) was the last major battle of the [[Croatian War of Independence]] and a major decisive factor in the outcome of the [[Bosnian War]]. It was a [[decisive victory]] for the [[Croatian Army]] (HV), which attacked across a {{convert|630|km|adj=on}} front against the [[Republic of Serbian Krajina]] (RSK), and a [[strategic victory]] for the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH). The HV was supported by the [[Croatian special police order of battle in 1991–95|Croatian special police]] advancing from the [[Velebit]] Mountain, and the ARBiH located in the [[Bihać pocket]], in the [[Army of the Republic of Serb Krajina]]'s (ARSK) rear. The battle, launched to restore [[Croatia]]n control of {{convert|10400|km2|abbr=off}} of territory, representing 18.4% of the territory it claimed, and Bosnian control of [[Autonomous Province of Western Bosnia|Western Bosnia]], was the largest European land battle since the [[World War II|Second World War]]. Operation Storm commenced at dawn on 4 August 1995 and was declared complete on the evening of 7 August, despite significant mopping-up operations against pockets of resistance lasting until 14 August. ||| ||| ||| +1 Operation Storm ||| Croatian War of Independence ||| '''Operation Storm''' ({{lang-hr|Operacija Oluja}}) was the last major battle of the [[Croatian War of Independence]] and a major decisive factor in the outcome of the [[Bosnian War]]. It was a [[decisive victory]] for the [[Croatian Army]] (HV), which attacked across a {{convert|630|km|adj=on}} front against the [[Republic of Serbian Krajina]] (RSK), and a [[strategic victory]] for the [[Army of the Republic of Bosnia and Herzegovina]] (ARBiH). The HV was supported by the [[Croatian special police order of battle in 1991–95|Croatian special police]] advancing from the [[Velebit]] Mountain, and the ARBiH located in the [[Bihać pocket]], in the [[Army of the Republic of Serb Krajina]]'s (ARSK) rear. The battle, launched to restore [[Croatia]]n control of {{convert|10400|km2|abbr=off}} of territory, representing 18.4% of the territory it claimed, and Bosnian control of [[Autonomous Province of Western Bosnia|Western Bosnia]], was the largest European land battle since the [[World War II|Second World War]]. Operation Storm commenced at dawn on 4 August 1995 and was declared complete on the evening of 7 August, despite significant mopping-up operations against pockets of resistance lasting until 14 August. ||| ||| ||| +1 Operation Summer '95 ||| Bosnian War ||| '''Operation Summer '95''' ([[Bosnian language|Bosnian]], {{lang-hr|Operacija Ljeto '95}}) was a joint military offensive of the [[Croatian Army]] (HV) and the [[Croatian Defence Council]] (HVO) that took place north-west of the [[Livanjsko field]], and around [[Bosansko Grahovo]] and [[Glamoč]] in western [[Bosnia and Herzegovina]]. The operation was carried out between 25 and 29 July 1995, during the [[Croatian War of Independence]] and the [[Bosnian War]]. The attacking force of 8,500 troops commanded by HV's Lieutenant General [[Ante Gotovina]] initially encountered strong resistance from the 5,500-strong [[Army of Republika Srpska]] (VRS) 2nd Krajina Corps. The HV/HVO pushed the VRS back, capturing about {{convert|1600|km2|abbr=off}} of territory and consequently intercepting the [[Knin]]{{mdash}}[[Drvar]] road{{mdash}}a critical supply route of the self-declared [[Republic of Serbian Krajina]] (RSK). The operation failed to achieve its declared primary goal of drawing VRS units away from the [[Siege of Bihać|besieged city of Bihać]], but it placed the HV in position to capture the RSK's capital Knin in [[Operation Storm]] days later. ||| ||| ||| +1 Operation Summer '95 ||| Croatian War of Independence ||| '''Operation Summer '95''' ([[Bosnian language|Bosnian]], {{lang-hr|Operacija Ljeto '95}}) was a joint military offensive of the [[Croatian Army]] (HV) and the [[Croatian Defence Council]] (HVO) that took place north-west of the [[Livanjsko field]], and around [[Bosansko Grahovo]] and [[Glamoč]] in western [[Bosnia and Herzegovina]]. The operation was carried out between 25 and 29 July 1995, during the [[Croatian War of Independence]] and the [[Bosnian War]]. The attacking force of 8,500 troops commanded by HV's Lieutenant General [[Ante Gotovina]] initially encountered strong resistance from the 5,500-strong [[Army of Republika Srpska]] (VRS) 2nd Krajina Corps. The HV/HVO pushed the VRS back, capturing about {{convert|1600|km2|abbr=off}} of territory and consequently intercepting the [[Knin]]{{mdash}}[[Drvar]] road{{mdash}}a critical supply route of the self-declared [[Republic of Serbian Krajina]] (RSK). The operation failed to achieve its declared primary goal of drawing VRS units away from the [[Siege of Bihać|besieged city of Bihać]], but it placed the HV in position to capture the RSK's capital Knin in [[Operation Storm]] days later. ||| ||| ||| +1 Operation Sunrise (Vietnam War) ||| Vietnam War ||| '''Operation Sunrise''' was the first phase of a long range [[South Vietnam]]ese counter-offensive against the [[Viet Cong]] during the [[Vietnam War]]. It was launched in the [[Ben Cat]] region of the [[Binh Duong]] Province (35 miles from [[Saigon]]). It began the Strategic Hamlet resettlement program in which scattered rural populations in South Vietnam were uprooted from their ancestral farmlands and resettled into fortified villages defended by local militias. However, over 50 of the hamlets were soon infiltrated and easily taken over by Viet Cong who killed or intimidated village leaders. ||| ||| ||| +1 Operation Tagar ||| Yom Kippur War ||| '''Operation Tagar''' ({{lang-he|תגר}}, Quarrel) is the name of an [[Israeli Air Force]] operation which took place over [[Egypt]] on the October 7, 1973, the second day of the [[Yom Kippur War]]. ||| ||| ||| +1 Operation Tannenbaum ||| World War II ||| '''Operation ''Tannenbaum''''' ([[English language|English]]: Operation ''[[Fir Tree]]'' or ''Christmas Tree''), known earlier as '''Operation ''Green''''' ({{lang-de|Unternehmen Grün}}), was a planned but cancelled invasion of [[Switzerland]] by [[Nazi Germany]] during [[World War II]]. ||| ||| ||| +1 Operation Tarnegol ||| Suez Crisis ||| '''Operation Tarnegol''' ({{lang-he|תרנגול}}, Rooster) was an [[Israeli Air Force]] operation carried out on the eve of the 1956 [[Suez Crisis]]. It witnessed an Israeli [[Gloster Meteor]] NF.13 intercept and destroy an Egyptian [[Ilyushin Il-14]] carrying high-ranking members of the Egyptian General Staff en route from Syria to Egypt. ||| ||| ||| +1 Operation Thunderbolt (1951) ||| Korean War ||| '''Operation Thunderbolt''', also known in China as the '''Defensive Battle of the Han River Southern Bank''' ({{zh|s=汉江南岸防御战|p=Hàn Jiāng Nán Àn Fáng Yù Zhàn}}), was a US offensive during the [[Korean War]]. ||| ||| ||| +1 Operation Tidal Wave ||| World War II ||| '''Operation Tidal Wave''' was an air attack by bombers of the [[United States Army Air Forces]] (USAAF) based in Libya and Southern Italy on nine [[Oil refinery|oil refineries]] around [[Ploiești]], [[Romania]] on 1 August 1943, during [[World War II]]. It was a [[Strategic bombing during World War II|strategic bombing mission]] and part of the '[[Oil Campaign of World War II|oil campaign]]' to deny [[petroleum]]-based fuel to the [[Axis powers|Axis]]. ||| ||| ||| +1 Operation Tiderace ||| World War II ||| Japan's defeat in [[World War II]] had caught the Japanese Command in Singapore by surprise. Many were unwilling to surrender and had vowed to fight to the death. Itagaki had initially balked at the order to surrender and instead ordered the 25th Army (the component of the 7th Area Army defending Singapore) to resist when the Allies arrived. ||| Return to Singapore ||| ||| +1 Operation Tiger Hound ||| Vietnam War ||| '''Operation ''Tiger Hound''''' was a covert U.S. [[2nd Air Division]], later [[Seventh Air Force]] and [[U.S. Navy]] [[Task Force 77 (U.S. Navy)|Task Force 77]] aerial interdiction campaign conducted in southeastern [[Laos]] from 5 December 1965 till 11 November 1968, during the [[Vietnam War]]. The purpose of the operation was to interdict the flow of [[People's Army of Vietnam]] (PAVN) supplies on the [[Ho Chi Minh Trail]] (the Truong Son Strategic Supply Route to the North Vietnamese) from the [[North Vietnam|Democratic Republic of Vietnam]] (North Vietnam), through southeastern Laos, and into the northern provinces of the [[South Vietnam|Republic of Vietnam]] (South Vietnam). The missions were originally controlled by the 2d Air Division until that headquarters was superseded by the Seventh Air Force on 1 April 1966. ||| ||| ||| +1 Operation Tonga ||| Normandy landings ||| '''Operation Tonga''' was the codename given to the [[airborne forces|airborne operation]] undertaken by the [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] between 5 June and 7 June 1944 as a part of [[Operation Overlord]] and the [[Normandy landings|D-Day landings]] during the [[World War II|Second World War]]. ||| ||| ||| +1 Operation Tonga ||| Operation Overlord ||| '''Operation Tonga''' was the codename given to the [[airborne forces|airborne operation]] undertaken by the [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] between 5 June and 7 June 1944 as a part of [[Operation Overlord]] and the [[Normandy landings|D-Day landings]] during the [[World War II|Second World War]]. ||| ||| ||| +1 Operation Tonga ||| Western Front (World War II) ||| Operation Tonga originated in the planning of [[Operation Overlord]], the plan for the eventual invasion of France and the opening of a [[Western Front (World War II)|Second Front]] in [[North-Western Europe]]. Planning for the invasion of Europe by the [[Allies of World War II|Allies]] had begun in May 1943 when [[President of the United States]] [[Franklin Delano Roosevelt]] and [[British Prime Minister]] [[Winston Churchill]] had met at the [[Washington Conference (1943)|Washington Conference]]. Planning then began for the invasion of Europe, and even early plans for Overlord called for the commitment of [[airborne forces]] to support the ground forces and protect their landing areas. Operation Skyscraper, for example, called for the deployment of two airborne divisions to land near [[Caen]] on the east coast of the [[Cotentin Peninsula]] in support of an invasion of Normandy by five divisions, whose objective would be the capture of [[Cherbourg]] and then breaking out to the east of Normandy. ||| Background ||| ||| +1 Operation Tonga ||| World War II ||| '''Operation Tonga''' was the codename given to the [[airborne forces|airborne operation]] undertaken by the [[6th Airborne Division (United Kingdom)|British 6th Airborne Division]] between 5 June and 7 June 1944 as a part of [[Operation Overlord]] and the [[Normandy landings|D-Day landings]] during the [[World War II|Second World War]]. ||| ||| ||| +1 Operation Torch ||| North African Campaign ||| '''Operation Torch''' (initially called '''Operation Gymnast''') was the [[United Kingdom|British]]-[[United States|American]] invasion of [[French North Africa]] during the [[North African Campaign]] of the [[World War II|Second World War]] which started on 8 November 1942. ||| ||| ||| +1 Operation Torch ||| World War II ||| '''Operation Torch''' (initially called '''Operation Gymnast''') was the [[United Kingdom|British]]-[[United States|American]] invasion of [[French North Africa]] during the [[North African Campaign]] of the [[World War II|Second World War]] which started on 8 November 1942. ||| ||| ||| +1 Operation Totalize ||| Operation Overlord ||| '''Operation Totalize''' (also spelled ''''Operation Totalise'''' in some more recent British sources{{#tag:ref|Although contemporary documents, including the official records of the [[British 21st Army Group]] held in the [[The National Archives (United Kingdom)|British National Archive]] in [[Kew]], invariably [http://www.nationalarchives.gov.uk/catalogue/displaycataloguedetails.asp?CATLN=6&CATID=4009640 refer to 'Totalize']. While there was no rule that names of operations had to be real words, the [[Concise Oxford Dictionary]] lists the word, meaning to collect into a total, with a 'z'|group=nb}}) was an offensive launched by Allied troops of the [[First Canadian Army]] during the later stages of [[Operation Overlord]], from 8 to 13 August 1944. The intention was to break through the [[Nazi Germany|German]] defences south of [[Caen]] on the eastern flank of the Allied positions in Normandy and exploit success by driving south to capture the high ground north of the city of [[Falaise, Calvados|Falaise]]. The overall goal was to precipitate the collapse of the entire German front, and cut off the retreat of German forces fighting American and British armies further west. The battle is considered the inaugural operation of the First Canadian Army, which had been formally activated on 23 July. ||| ||| ||| +1 Operation Trident (1971) ||| Indo-Pakistani War of 1971 ||| '''Operation Trident''' and its follow-up [[Operation Python]] were naval offensive operations launched on [[Pakistan]]'s port city of [[Karachi]] by the [[Indian Navy]] during the [[Indo-Pakistani War of 1971]]. Operation Trident resulted in the first use of [[anti-ship missile]]s in combat in the region, India celebrates its [[Navy Day]] annually on 4 December to mark this operation. ||| ||| ||| +1 Operation Trio ||| World War II ||| '''Operation Trio''' ({{lang-sh-Latn|Operacija Trio}}) was the first large-scale joint [[Nazi Germany|German]]-[[Kingdom of Italy|Italian]] [[counter-insurgency]] operation of [[World War II]] conducted in the [[Independent State of Croatia]] (NDH), which included modern-day [[Bosnia and Herzegovina]]. It was carried out in two phases within eastern [[Bosnia (region)|Bosnia]] from 20 April to 13 May 1942, with [[Ustaše militia]] and [[Croatian Home Guard (Independent State of Croatia)|Croatian Home Guard]] forces taking part on the [[Axis powers|Axis]] side. The aim of the operation was to target all [[Insurgency|insurgents]] between [[Sarajevo]] and the [[Drina]] river in eastern Bosnia. These included groups led by [[League of Communists of Yugoslavia|communists]] and [[Serb]]-[[Chauvinism|chauvinist]] [[Chetniks]]. Differentiating between the [[wikt:rank and file|rank and file]] of the two insurgent factions was difficult, as even the communist-led insurgent groups consisted mainly of Serb peasants who had little understanding of the political aims of their leaders. ||| ||| ||| +1 Operation Una ||| Bosnian War ||| '''Operation Una''' ({{lang-hr|Operacija Una}}) was a military offensive conducted by the [[Croatian Army]] (''Hrvatska vojska'' – HV) against the [[Army of Republika Srpska]] (''Vojska Republike Srpske'' – VRS) in western [[Bosnia and Herzegovina]] on 18–19 September 1995, during the [[Bosnian War]]. The operation entailed a crossing of the [[Una (Sava)|Una]] and [[Sava]] rivers to establish bridgeheads at [[Novi Grad, Bosnia and Herzegovina|Novi Grad]], [[Bosanska Dubica]], [[Bosanska Kostajnica]] and opposite [[Jasenovac, Sisak-Moslavina County|Jasenovac]] to allow for a subsequent advance towards [[Prijedor]] and [[Banja Luka]]. ||| ||| ||| +1 Operation Undertone ||| World War II ||| '''Operation Undertone''' was a large assault by the [[Seventh United States Army|U.S. Seventh]] and [[First Army (France)|French 1st]] Armies of the U.S. [[Sixth United States Army Group|Sixth Army Group]] as part of the Allied invasion of [[Germany]] in March 1945 during [[World War II]]. ||| ||| ||| +1 Operation Vengeance ||| World War II ||| '''Operation ''Vengeance''''' was the [[American military]] operation to kill Admiral [[Isoroku Yamamoto]] of the [[Imperial Japanese Navy]] on April 18, 1943, during the [[Solomon Islands campaign]] in the [[Pacific Ocean theater of World War II|Pacific Theater]] of [[World War II]] and exactly one year following the United States' most direct previous blow to Japan with the [[Doolittle Raid]]. Isoroku Yamamoto, commander of the Combined Fleet of the [[Imperial Japanese Navy]], was killed on [[Bougainville Island]] when his transport [[bomber]] [[aircraft]] was shot down by [[United States Army Air Forces]] [[fighter aircraft]] operating from [[Kukum Field]] on [[Guadalcanal]]. ||| ||| ||| +1 Operation Veritable ||| World War II ||| '''Operation ''Veritable''''' (also known as the Battle of the Reichswald) was the northern part of an [[Allies of World War II|Allied]] [[pincer movement]] conducted by [[British Army|British]] [[Field marshal (United Kingdom)|Field Marshal]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]]'s [[21st Army Group]], primarily consisting of the [[First Canadian Army]] under [[Harry Crerar]] and the [[XXX Corps (United Kingdom)|British XXX Corps]] under [[Brian Horrocks]]. The operation took place during the [[World War II|Second World War]] between 8 February and 11 March 1945, with the objective to clear German forces from the area between the [[Rhine]] and [[Meuse (river)|Maas]] rivers, east of the German/Dutch frontier, in the [[Rhineland]]. It was part of General [[Dwight Eisenhower]]'s 'broad front' strategy to occupy the entire west bank of the Rhine before its crossing. ''Veritable'' (originally called ''Valediction'') had been planned for execution in early January, 1945 when the ground had been frozen and thus more advantageous to the Allies. The Allied expectation was that the northern end of the [[Siegfried Line]] was less well defended than elsewhere and an outflanking movement around the line was possible and would allow an early assault against the industrial [[Ruhr]] region. ||| ||| ||| +1 Operation Vigorous ||| World War II ||| '''Operation Vigorous''' was a [[World War II|Second World War]] Allied operation to deliver a supply convoy (MW-11) that sailed from [[Haifa]] and [[Port Said]] on 12 June 1942 to [[Malta]]. The convoy encountered heavy Axis air and sea opposition and returned to [[Alexandria]] on 16 June. ||| ||| ||| +1 Operation Wheeler/Wallowa ||| Vietnam War ||| '''Operation Wheeler/Wallowa''' was a U.S. offensive operation during the [[Vietnam War]], launched on 11 September 1967 and concluding in February 1968. ||| ||| ||| +1 Operation Winter '94 ||| Bosnian War ||| '''Operation Winter '94''' ({{lang-hr|Operacija Zima '94}}) was a joint military offensive of the [[Croatian Army]] (HV) and the [[Croatian Defence Council]] (HVO) fought in southwestern [[Bosnia and Herzegovina]] between 29 November and 24 December 1994. The operation formed part of the [[Croatian War of Independence]] and the [[Bosnian War]] fought between Bosnia and Herzegovina, [[Croatia]] and two unrecognized para-states proclaimed by [[Croatian Serbs]] and [[Bosnian Serbs]]. Both para-states were supported by the [[Yugoslav People's Army]] (JNA) and [[Republic of Serbia (1990-2006)|Serbia]]. The JNA pulled out in 1992, but transferred much of its equipment to the Bosnian Serb and Croatian Serb forces as it withdrew. ||| ||| ||| +1 Operation Winter '94 ||| Croatian War of Independence ||| '''Operation Winter '94''' ({{lang-hr|Operacija Zima '94}}) was a joint military offensive of the [[Croatian Army]] (HV) and the [[Croatian Defence Council]] (HVO) fought in southwestern [[Bosnia and Herzegovina]] between 29 November and 24 December 1994. The operation formed part of the [[Croatian War of Independence]] and the [[Bosnian War]] fought between Bosnia and Herzegovina, [[Croatia]] and two unrecognized para-states proclaimed by [[Croatian Serbs]] and [[Bosnian Serbs]]. Both para-states were supported by the [[Yugoslav People's Army]] (JNA) and [[Republic of Serbia (1990-2006)|Serbia]]. The JNA pulled out in 1992, but transferred much of its equipment to the Bosnian Serb and Croatian Serb forces as it withdrew. ||| ||| ||| +1 Operation Winter Storm ||| Battle of Stalingrad ||| '''Operation ''Winter Storm''''' ({{lang-de|Unternehmen Wintergewitter}}) was a [[Nazi Germany|German]] [[Offensive (military)|offensive]] in [[World War II]] in which the German [[4th Panzer Army]] unsuccessfully attempted to break the Soviet [[encirclement]] of the German [[6th Army (Wehrmacht)|6th Army]] during the [[Battle of Stalingrad]]. ||| ||| ||| +1 Orakzai and Kurram offensive ||| War in North-West Pakistan ||| The '''Orakzai and Kurram offensive''' also known as ''Operation Khwakh Ba De Sham'' ({{lang-en|I will teach you a lesson}}) It is part of the ongoing [[War in North-West Pakistan]]. ||| ||| ||| +1 Order of battle at the Battle of Stockach (1799) ||| French Revolutionary Wars ||| In the broader military context, this battle comprises a keystone in the first campaign in southwestern Germany during the Wars of the [[Second Coalition]], part of the [[French Revolutionary Wars]]. For an explanation of the types of forces, please see [[Types of military forces in the Napoleonic Wars]]. ||| ||| ||| +1 Osovets Offensive ||| Operation Bagration ||| The '''Osovets Offensive''' ({{lang-ru|Осовецкая наступательная операция}}) was part of the third and final phase of [[Operation Bagration]], the Belorussian Strategic Offensive of the [[Red Army]] in summer 1944. ||| ||| ||| +1 Outpost Snipe ||| Second Battle of El Alamein ||| The defence of '''Outpost Snipe''' in [[Egypt]] took place in the [[Second Battle of El Alamein]], part of the [[Western Desert Campaign]] during the [[World War II|Second World War]]. On the night of {{nowrap|26/27 October}} 1942, the 2nd [[Battalion]] of the [[Rifle Brigade (Prince Consort's Own)|Rifle Brigade]] (part of the [[18th Infantry Brigade (United Kingdom)|7th Motor Brigade]]), with 13 × [[Ordnance QF 6 pounder|6-pounder]] anti-tank guns and the 239th Battery, 76th Anti-Tank Regiment RA, with six more 6-pounders, was ordered to occupy a desert feature known as ''Snipe'', a small depression in the landscape suitable for an outpost. Once consolidated it could be used as a jumping-off point for an advance by the [[24th Armoured Brigade]]. ||| ||| ||| +1 Outpost Snipe ||| Western Desert Campaign ||| The defence of '''Outpost Snipe''' in [[Egypt]] took place in the [[Second Battle of El Alamein]], part of the [[Western Desert Campaign]] during the [[World War II|Second World War]]. On the night of {{nowrap|26/27 October}} 1942, the 2nd [[Battalion]] of the [[Rifle Brigade (Prince Consort's Own)|Rifle Brigade]] (part of the [[18th Infantry Brigade (United Kingdom)|7th Motor Brigade]]), with 13 × [[Ordnance QF 6 pounder|6-pounder]] anti-tank guns and the 239th Battery, 76th Anti-Tank Regiment RA, with six more 6-pounders, was ordered to occupy a desert feature known as ''Snipe'', a small depression in the landscape suitable for an outpost. Once consolidated it could be used as a jumping-off point for an advance by the [[24th Armoured Brigade]]. ||| ||| ||| +1 Pacification of Manchukuo ||| Second Sino-Japanese War ||| The '''Pacification of Manchukuo''' was a campaign to pacify the resistance to the newly established [[puppet state]] of [[Manchukuo]] between the [[Anti-Japanese Volunteer Armies]] of [[Manchuria]] and later the [[Chinese Communist Party|Communist]] [[Northeast Anti-Japanese United Army]] and the [[Imperial Japanese Army]] and the forces of the Manchukuo government during the [[Second Sino-Japanese War]] which took place from March 1932 until 1941, which resulted in a Japanese victory. ||| ||| ||| +1 Paknam incident ||| Franco-Siamese War ||| The '''Paknam Incident''' was a military engagement fought during the [[Franco-Siamese War]] in July 1893. While sailing off [[Samut_Prakan_Province#Geography|Paknam]] through [[Siam]]'s [[Chao Phraya River]], three French ships were fired on by a Siamese [[fort]] and force of [[gunboat]]s. In the ensuing battle, France won and proceeded to [[blockade]] [[Bangkok]] which ended the war. ||| ||| ||| +1 Pakrac clash ||| Croatian War of Independence ||| The '''Pakrac clash''', known in [[Croatia]] as the '''Battle of Pakrac''' ({{lang-hr|Bitka za Pakrac}}), was a bloodless skirmish that took place in the Croatian town of [[Pakrac]] in March 1991. The clash was a result of deteriorating ethnic tensions in Croatia during the [[breakup of Yugoslavia]]. It was one of the first serious outbreaks of violence in what became the [[Croatian War of Independence]]. ||| ||| ||| +1 Paris massacre of 1961 ||| Algerian War ||| The '''Paris massacre of 1961''' was a [[massacre]] in Paris on 17 October 1961, during the [[Algerian War]] (1954–62). Under orders from the [[Prefecture of Police|head of the Parisian police]], [[Maurice Papon]], the [[French National Police]] attacked a [[demonstration (people)|demonstration]] of some 30,000 pro-[[National Liberation Front (Algeria)|National Liberation Front]] (FLN) Algerians. Two months before, the FLN had decided to increase its bombing in France and to resume the campaign against both pro-France Algerians and the rival [[Algerian nationalist]] organization, the [[Algerian National Movement]] in France. After 37 years of denial, in 1998 the French government acknowledged 40 deaths, although there are estimates of over 200. ||| ||| ||| +1 Peasants' War (1798) ||| French Revolutionary Wars ||| The '''Peasants' War''' ({{lang-lb|Klëppelkrich}}, {{lang-fr|link=no|Guerre des Paysans}}, {{lang-de|link=no|Klöppelkrieg}}, {{lang-nl|Boerenkrijg}}) was a [[peasant revolt]] in 1798 against the [[First French Republic|French]] occupation of the [[Southern Netherlands]] following the [[Treaty of Campo Formio]]. The area included modern Belgium, Luxembourg, and parts of Germany. This war is one of the [[French Revolutionary Wars]]. ||| ||| ||| +1 Peninsula Campaign ||| American Civil War ||| The '''Peninsula Campaign''' (also known as the '''Peninsular Campaign''') of the [[American Civil War]] was a major [[Union (American Civil War)|Union]] operation launched in southeastern [[Virginia]] from March through July 1862, the first large-scale offensive in the [[Eastern Theater of the American Civil War|Eastern Theater]]. The operation, commanded by [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]], was an amphibious [[turning movement]] against the [[Confederate States Army]] in [[Northern Virginia]], intended to capture the [[Confederate States of America|Confederate]] capital of [[Richmond, Virginia|Richmond]]. McClellan was initially successful against the equally cautious General [[Joseph E. Johnston]], but the emergence of the aggressive General [[Robert E. Lee]] turned the subsequent [[Seven Days Battles]] into a humiliating Union defeat. ||| ||| ||| +1 Persian Campaign ||| Middle Eastern theatre of World War I ||| The '''Persian Campaign''' or '''Invasion of Persia''' also known as '''Invasion of Iran''' ({{lang-fa|اشغال ایران در جنگ جهانی اول}}) was a series of engagements at northern [[Persian Azerbaijan]] and western [[Qajar dynasty|Persia]] between the [[British Empire]], [[Russian Empire]] and [[Armenia]]n and [[Assyrian people|Assyrian]] forces against the [[Ottoman Empire]], beginning in December 1914 and ending with the [[Armistice of Mudros]] on October 30, 1918 as part of [[Middle Eastern theatre of World War I]]. The Russian operations were halted by the [[Russian Revolution of 1917|Russian Revolution]] on February 23, 1917 when the [[Russian Caucasus Army (World War I)|Russian Caucasus Army]] was replaced with Armenian units and an Allied force named [[Dunsterforce]]. ||| ||| ||| +1 Phoney War ||| Western Front (World War II) ||| The '''Phoney War''' refers to the relatively quiet eight-month period at the start of [[World War II]] between the declaration of war by the [[Western Allies]] ([[United Kingdom]] and [[France]]) against [[Nazi Germany]] on {{date|1939-9-3}} just after the [[Invasion of Poland]] and the German [[Blitzkrieg]] in May 1940, that was marked by a lack of major military land operations by the Allies on Germany's [[Western Front (World War II)|Western Front]]. ||| ||| ||| +1 Point 175 ||| Western Desert Campaign ||| '''Point 175''' is a small rise just south of a desert track, the Trigh Capuzzo east of Sidi Rezegh and south of Zaafran with a good view of the vicinity. In early November 1941, the feature was held by German infantry of the ''Division z.b.V. Afrika'' (later named the [[90th Light Infantry Division (Wehrmacht)|90th Light ''Afrika'' Division]]). The New Zealanders and [[Infantry tanks]] of the [[1st Army Tank Brigade (United Kingdom)|1st Army Tank Brigade]] attacked and captured Point 175 on 23 November, during the Battle of Sidi Rezegh, which was part of [[Operation Crusader]] in the [[Western Desert Campaign]] of the [[World War II|Second World War]]. The New Zealand troops then attacked westwards and made contact with the Tobruk garrison, which had broken out to meet them. From 29 November – 1 December, the New Zealanders defended the point and the area to the west against Axis counter-attacks, intended to sever the link with the Tobruk garrison and regain control of the roads in the area. The new [[132nd Armoured Division Ariete|132nd Armoured Division ''Ariete'']] re-captured Point 175 late on 29 November. ||| ||| ||| +1 Queen Anne's War ||| War of the Spanish Succession ||| '''Queen Anne's War''' (1702–1713), as the [[North America]]n [[theater (warfare)|theater]] of the [[War of the Spanish Succession]] was known in the [[British colonization of the Americas|British colonies]], was the second in a series of [[French and Indian Wars]] fought between [[Early modern France|France]] and [[Kingdom of England|England]], later [[Kingdom of Great Britain|Great Britain]], ||| ||| ||| +1 ROKS Cheonan sinking ||| Korean War ||| | partof = Post-Armistice [[Korean War|Korean conflict]] ||| ||| ||| +1 Race to the Sea ||| Western Front (World War I) ||| Over the winter lull, the French army established the theoretical basis of offensive trench warfare and originated many of the methods which became standard for the rest of the war. [[Infiltration tactics]] in which dispersed formations of infantry were followed by {{lang|fr|''nettoyeurs de tranchée''}} ('trench cleaners'), to capture strong-points which had been by-passed, artillery observation from aircraft and [[Barrage (artillery)|creeping barrages]], were first used systematically in the [[Second Battle of Artois]] {{nowrap|(9 May – 18 June 1915).}} Falkenhayn issued memoranda on {{nowrap|7 and 25 January}} 1915, to govern defensive battle on the [[Western Front (World War I)|Western Front]], in which the existing front line was to be fortified, so that it could be held indefinitely with small numbers of troops, to enable more divisions to be sent to the Eastern Front. New defences were be built behind the front line to contain a breakthrough, before the position was restored by counter-attacks. The {{lang|de|''Westheer''}} began the huge task of building fortifications, which were not completed until the autumn of 1915. ||| ||| ||| +1 Raid at Combahee Ferry ||| American Civil War ||| The '''Raid at Combahee Ferry''' was a military operation during the [[American Civil War]] conducted on June 1 and June 2, 1863 by elements of the [[Union Army]] along the [[Combahee River]] in [[Beaufort County, South Carolina|Beaufort]] and [[Colleton County, South Carolina|Colleton]] counties in southeast [[South Carolina]]''. ||| ||| ||| +1 Raid at Paombong ||| Philippine Revolution ||| The ''''Raid at Paombong'''' was organized and executed on August 31, 1897, It is often described as one of the famous assaults during [[Philippine Revolution]]. Shortly thereafter, Philippine President [[Emilio Aguinaldo]] raised Gregorio del Pilar to the rank of Lieutenant Colonel. ||| ||| ||| +1 Raid on Alexandria ||| War of 1812 ||| The '''Raid on Alexandria''' was a [[United Kingdom of Great Britain and Ireland|British]] victory during the [[War of 1812]], which gained much plunder at little cost but may have contributed to the later British repulse at [[Battle of Baltimore|Baltimore]] by delaying their main forces. ||| ||| ||| +1 Raid on Darwin (2 May 1943) ||| World War II ||| The '''Japanese raid on Darwin of 2 May 1943''' was a significant battle in the [[North Western Area Campaign]] of [[World War II]]. During the raid a force of over 20 [[Japan]]ese [[bomber aircraft|bombers]] and [[Mitsubishi A6M Zero|Zero]] [[fighter aircraft|fighters]] attacked the [[Australia]]n town of [[Darwin, Northern Territory]], inflicting little damage on the ground. This attack was the 54th Japanese airstrike over Australia. The [[Royal Australian Air Force]] (RAAF) unit responsible for protecting the town, [[No. 1 Wing RAAF]], intercepted the Japanese force after it had completed its attack, and suffered heavy losses from the Japanese fighters, aggravated by fuel shortages. The results of the battle led to public concern, and No. 1 Wing adopted new fighting tactics which proved successful in countering later raids. ||| ||| ||| +1 Raid on Genoa ||| French Revolutionary Wars ||| The '''Raid on Genoa''' was a minor naval engagement fought in the harbour of the Italian city of [[Genoa]] during the first year of the [[French Revolutionary Wars]]. French Republican forces in the Mediterranean, under pressure from Austrian and Spanish armies, Royalist uprisings and British [[blockade]] had suffered the loss of their principal naval base and the fleet stationed there when British forces under [[Samuel Hood, 1st Viscount Hood|Lord Hood]] seized [[Toulon]] at the invitation of the city's Royalist faction. The survivors of the French fleet were scattered across the Mediterranean, several sheltering in neutral Italian harbours, including the [[frigates]] [[French frigate Modeste (1786)|''Modeste'']] at Genoa and [[HMS Imperieuse (1793)|''Impérieuse'']] at [[Livorno|Leghorn]]. ||| ||| ||| +1 Raid on Lorient ||| War of the Austrian Succession ||| The '''Raid on Lorient''' was a British [[amphibious operation]] in the region around the town of [[Lorient]] from 29 September to 10 October 1746 during the [[War of the Austrian Succession]]. It was planned as an attempt to force the French to withdraw their forces from [[Flanders]] to reinforce their own coast. ||| ||| ||| +1 Raid on Lunenburg, Nova Scotia (1756) ||| French and Indian War ||| The '''Raid on Lunenburg''' occurred during the [[French and Indian War]] when a militia of the [[Wabanaki Confederacy]] ([[Mi'kmaw]]) attacked a British settlement at [[Lunenburg, Nova Scotia]] on May 8, 1756. The Maliseet killed twenty settlers and took five prisoners. This raid was the first of nine the Natives and Acadians would conduct against the peninsula over a three-year period during the war. The Wabanaki Confederacy took John and Lewis Payzant prisoner, both of whom recorded one of the few [[Captivity narrative]]s that exist from Nova Scotia/ Acadia. ||| ||| ||| +1 Raid on Manila (1798) ||| French Revolutionary Wars ||| The '''Raid on Manila''' of January 1798 was a [[Royal Navy]] [[false flag]] military operation during the [[French Revolutionary Wars]] intended to scout the strength of the defences of [[Manila]], capital of the [[Spanish Philippines]], capture a [[Manila galleon]] and assess the condition of the [[Spanish Navy]] squadron maintained in the port. [[Enlightenment in Spain|Spain]] had transformed from an ally of [[Kingdom of Great Britain|Great Britain]] in the [[War of the First Coalition]] into an enemy in 1796. Thus the presence of a powerful Spanish squadron at Manila posed a threat to the China Fleet, an annual convoy of [[East Indiaman]] merchant ships from [[Macau]] in [[Qing Dynasty]] [[China]] to Britain, which was of vital economic importance to Britain. So severe was this threat that a major invasion of the Spanish Philippines had been planned from [[British India]] during 1797, but had been called off following the [[Treaty of Campo Formio]] in Europe and the possibility of a major war in India between the British [[East India Company]] and the [[Kingdom of Mysore]]. ||| ||| ||| +1 Raid on Nassau ||| War of the Spanish Succession ||| The '''Raid on Nassau''' was a privately raised Franco-Spanish expedition during the [[War of the Spanish Succession]] led by Blas Moreno Mondragón and Clause Le Chesnaye. The joint [[House of Bourbon|bourbon]] invaders attacked [[Nassau, Bahamas|Nassau]], the [[Capital city|capital]] of the [[Crown colony|English]] [[The Bahamas|Bahamas]] at the time and an important base of privateering for English corsairs aiming to end privateering actions in the [[Cuba]]n and [[Saint-Domingue|Saint Domingue's]] [[Caribbean]] seas. The town of Nassau was quickly taken One year later the new English governor Sir Edward Birch landing in Nassau found the island so abandoned that he was forced to ship back home. ||| ||| ||| +1 Raid on Taipei ||| World War II ||| The '''Raid on Taipei''' ({{zh|t=臺北大空襲/台北大空襲|s=台北大空袭|p=Táiběi Dà Kōngxí}}) that took place on 31 May 1945 was the largest [[Allies of World War II|Allied]] [[strategic bombing|air raid]] on the city of [[Taipei]] (known as Taihoku at the time) during [[World War II]]. Despite efforts by Allied planners to minimize [[civilian casualties]], many residents were killed in the raid and tens of thousands wounded or displaced. ||| ||| ||| +1 Raid on the Medway ||| Second Anglo-Dutch War ||| The '''Raid on the Medway''', sometimes called the '''Battle of the Medway''', '''Raid on Chatham''' or the '''Battle of Chatham''', was a successful [[Dutch Republic|Dutch]] attack on the largest English naval ships, laid up in the dockyards of their main naval base [[Chatham, Kent|Chatham]], that took place in June 1667 during the [[Second Anglo-Dutch War]]. The Dutch, under nominal command of Lieutenant-Admiral [[Michiel de Ruyter]], bombarded and then captured the town of [[Sheerness]], sailed up the [[River Thames]] to [[Gravesend, Kent|Gravesend]], then up the [[River Medway]] to Chatham, where they burned three [[capital ships]] and ten lesser naval vessels and towed away the [[HMS Unity (1665)|''Unity'']] and the [[HMS Royal Charles (1655)|''Royal Charles'']], pride and normal [[flagship]] of the English fleet. The raid led to a quick end to the war and a favourable peace for the Dutch. It was one of the worst defeats in the [[Royal Navy]]'s history, and one of the worst suffered by the British military. ||| ||| ||| +1 Relief of Ladysmith ||| Second Boer War ||| When the [[Second Boer War]] broke out on 11 October 1899, the [[Boers]] had a numeric superiority within Southern Africa. They quickly invaded the British territory and laid siege to [[Ladysmith, KwaZulu-Natal|Ladysmith]], [[Kimberley, Northern Cape|Kimberley]] and [[Mafeking]]. Britain meanwhile transported thousands of troops both from the United Kingdom itself and from elsewhere in the [[British Empire|Empire]] and by the time the [[siege of Ladysmith]] had been lifted, had a huge numeric superiority. ||| ||| ||| +1 Renegade period of the Apache Wars ||| Apache Wars ||| The '''Renegade period''' of the [[Apache Wars]] refers to the conflicts between the [[United States]] and [[Mexico]] and the [[Apache]] people who left the [[Indian reservation|reservation]] system between 1879 and 1886, and renegade Apaches who lived in northern [[Mexico]] into the 1920s. ||| ||| ||| +1 Retreat to Montalban ||| Philippine Revolution ||| The '''Retreat to Montalban''' occurred during the [[Philippine Revolution]] after the 1897 Battle of [[Naic, Cavite|Naic]] south west of [[Cavite]] when Philippine General [[Emilio Aguinaldo]]'s and his forces retreated to Puray, [[Rodriguez, Rizal|Montalban]] where they made a last stand on 3{{nbsp}}May 1897. They then retreated towards the caves of Biak-na-bato, where Aguinaldo negotiated the peace pact known as the [[Pact of Biak-na-Bato]]. ||| ||| ||| +1 Revolt of 1 Prairial Year III ||| French Revolution ||| The '''insurrection of 1 Prairial Year III''' was a popular revolt in [[Paris]] on 20 May 1795 against the policies of the [[National Convention#Thermidorian Convention|Thermidorian Convention]]. It was the last and one of the most remarkable and stubborn popular revolts of the [[French Revolution]]. After their defeat in Prairial, the ''[[sans-culottes]]'' ceased to play any effective part until the next round of revolutions in the early nineteenth century. To a lesser extent, these movements are also important in that they mark the final attempt of the remnants of [[the Mountain]] and the [[Jacobins]] to recapture their political ascendancy in the Convention and the Paris Sections; this time, though they gave some political direction to the popular movement which arose in the first place in protest against worsening economic conditions, their intervention was timorous and halfhearted and doomed the movement to failure. ||| ||| ||| +1 Riga Offensive (1944) ||| World War II ||| The '''Riga Offensive''' (known in ({{lang-ru|Рижская наступательная операция}}, the '''Riga Offensive Operation''' &mdash; its formal Soviet title) was part of the larger [[Baltic Offensive]] on the [[Eastern Front (WWII)|Eastern Front]] during [[World War II]]. It took place late in 1944, and drove German forces from the city of [[Riga]]. ||| ||| ||| +1 Romanian Revolution ||| Revolutions of 1989 ||| The '''Romanian Revolution''' ({{lang-ro|Revoluția Română}}) was a period of [[revolution|violent civil unrest]] in [[Romania]] in December 1989 and part of the [[Revolutions of 1989]] that occurred in several countries. The Romanian Revolution started in the city of [[Timișoara]] and soon spread throughout the country, ultimately culminating in the [[Trial of Nicolae and Elena Ceaușescu|show trial]] and execution of longtime Communist leader [[Nicolae Ceaușescu]], and the end of [[Socialist Republic of Romania|42 years of Communist rule]] in Romania. It was also the last removal of a Communist regime in a Warsaw Pact country during the events of 1989, and the only one that violently overthrew a country's government and executed its leader. ||| ||| ||| +1 Rotterdam Blitz ||| Battle of the Netherlands ||| The '''Rotterdam Blitz''' was the [[aerial bombing of cities|aerial bombardment]] of [[Rotterdam]] by the ''[[Luftwaffe]]'' (German air force) on 14 May 1940, during the [[Battle of the Netherlands|German invasion of the Netherlands]] in [[World War II]]. The objective was to support the German troops fighting in the city, break Dutch resistance and force the Dutch to surrender. Even though preceding negotiations resulted in a ceasefire, the bombardment took place nonetheless, in conditions which remain controversial, and destroyed almost the entire historic city centre, killing nearly 900 people and making 85,000 others homeless. ||| ||| ||| +1 Rotterdam Blitz ||| World War II ||| The '''Rotterdam Blitz''' was the [[aerial bombing of cities|aerial bombardment]] of [[Rotterdam]] by the ''[[Luftwaffe]]'' (German air force) on 14 May 1940, during the [[Battle of the Netherlands|German invasion of the Netherlands]] in [[World War II]]. The objective was to support the German troops fighting in the city, break Dutch resistance and force the Dutch to surrender. Even though preceding negotiations resulted in a ceasefire, the bombardment took place nonetheless, in conditions which remain controversial, and destroyed almost the entire historic city centre, killing nearly 900 people and making 85,000 others homeless. ||| ||| ||| +1 Royalton Raid ||| American Revolutionary War ||| The '''Royalton Raid''' was a British-led [[Native Americans in the United States|Indian]] raid in 1780 against various towns along the [[White River (Vermont)|White River]] Valley in the [[Vermont Republic]], and was part of the [[American Revolutionary War]]. It was the last major Indian raid in [[New England]]. ||| ||| ||| +1 Russian invasion of East Prussia (1914) ||| Eastern Front (World War I) ||| The '''Russian invasion of East Prussia''' occurred during the [[First World War]], lasting from August to September 1914. As well as being the natural course for the Russians to take upon the declaration of war with Germany, it was also an attempt to focus German military eyes on the [[Eastern Front (World War I)|Eastern Front]], as opposed to the [[Western Front (World War I)|Western Front]]. Despite having an overwhelming superiority over the Germans in numbers, the Russian Army was spread out and suffered a defeat. ||| ||| ||| +1 Russian invasion of Manchuria ||| Boxer Rebellion ||| With the building of the [[South Manchuria Railway]], Mukden (now known as [[Shenyang]]) became a Russian stronghold, which occupied it after the [[Boxer Rebellion]]. As with all other major powers in China, Russia demanded [[Unequal treaties|concessions]] along with the railroad. ||| ||| ||| +1 Russo-Circassian War ||| Caucasian War ||| The '''Russo-Circassian War''' (1763–1864) refers to a series of battles and wars in [[Circassia]], the northwestern part of the Caucasus, which were part of the [[Russian Empire]]'s conquest of the [[Caucasus]] lasting approximately 101 years, starting under the reign of Tsar [[Peter the Great]] and being completed in 1864. Although the conquest of the Caucasus started at least as early as the [[Russo-Persian Wars]], the term [[Caucasian War]] commonly refers only to the period 1817–1864. Those who use the term Russian–Circassian War take its starting date as 1763, when the Russians began establishing forts, including at [[Mozdok]], to be used as springboards for conquest. ||| ||| ||| +1 Rákóczi's War of Independence ||| War of the Spanish Succession ||| Three years later, the [[War of the Spanish Succession]] caused a large part of the Austrian forces in the Kingdom of Hungary to temporarily leave the country. Taking advantage of the situation, [[Kurucs|kuruc]] forces began a new uprising in Munkács, and Rákóczi was asked to head it. He decided to invest his energies in a war of national liberation, and accepted the request. On 15 June 1703, another group of about 3000 armed men headed by [[Tamás Esze]] joined him near the Polish city of Lawoczne. Bercsényi also arrived, with French funds and 600 Polish mercenaries. ||| Fight for independence ||| ||| +1 Sabra and Shatila massacre ||| Lebanese Civil War ||| From 1975 to 1990, groups in competing alliances with neighboring countries fought against each other in the [[Lebanese Civil War]]. Infighting and massacres between these groups claimed several thousand victims. Examples: the Syrian-backed [[Karantina massacre]] (January 1976) by the Kataeb and its allies against [[Kurds in Lebanon|Kurds]], [[Syrians in Lebanon|Syrians]] and [[Palestinians in Lebanon|Palestinians]] in this predominantly Muslim slum district of Beirut, [[Damour massacre|Damour]] (January 1976) by the PLO against Christian [[Maronite Christianity in Lebanon|Maronites]], including the family and fiancée of the Lebanese Forces intelligence chief [[Elie Hobeika]]; and [[Tel al-Zaatar massacre|Tel al-Zaatar]] (August 1976) by Phalangists and their allies against Palestinian refugees living in a camp administered by [[United Nations Relief and Works Agency for Palestine Refugees in the Near East|UNRWA]]. The total death toll in Lebanon for the whole civil war period was around 150,000 victims. ||| Background ||| ||| +1 Sack of Cashel ||| Irish Confederate Wars ||| The '''Sack of Cashel''' (also known as the '''Massacre of Cashel''' ) was a notorious atrocity which occurred in the Irish County of [[Tipperary]] in the year 1647, during the [[Irish Confederate Wars]], part of the [[Wars of the Three Kingdoms]]. The town of Cashel was held by the Irish Catholic [[Confederate Ireland|Confederate's]] Munster army and was besieged and taken by an English Protestant [[Roundhead|Parliamentarian]] army under [[Murrough O'Brien, 1st Earl of Inchiquin|Murrough O'Brien the Baron of Inchiquin]]. The attack and subsequent sack of Cashel was one of the more brutal incidents of the wars of the 1640s in Ireland. ||| ||| ||| +1 Sack of Cashel ||| Wars of the Three Kingdoms ||| The '''Sack of Cashel''' (also known as the '''Massacre of Cashel''' ) was a notorious atrocity which occurred in the Irish County of [[Tipperary]] in the year 1647, during the [[Irish Confederate Wars]], part of the [[Wars of the Three Kingdoms]]. The town of Cashel was held by the Irish Catholic [[Confederate Ireland|Confederate's]] Munster army and was besieged and taken by an English Protestant [[Roundhead|Parliamentarian]] army under [[Murrough O'Brien, 1st Earl of Inchiquin|Murrough O'Brien the Baron of Inchiquin]]. The attack and subsequent sack of Cashel was one of the more brutal incidents of the wars of the 1640s in Ireland. ||| ||| ||| +1 Sanna's Post ||| Second Boer War ||| '''Sanna's Post''' (aka '''Korn Spruit''') was an engagement fought during the [[Second Boer War]] (1899-1902) between the [[British Empire]] and the [[Boer]]s of the two independent republics of [[Orange Free State]] and [[South African Republic]]. ||| ||| ||| +1 Second Anglo-Dutch War ||| Anglo-Dutch Wars ||| The '''Second Anglo-Dutch War''' (4 March 1665 – 31 July 1667) was a conflict fought between [[Kingdom of England|England]] and the [[Dutch Republic|United Provinces]] in the 17th centuries for control over the seas and trade routes, where England tried to end the Dutch domination of world trade during a period of intense European commercial rivalry. After initial English successes, the war ended in a Dutch victory. It was part of a series of four [[Anglo-Dutch Wars]] fought between the English (later British) and the Dutch in the 17th and 18th centuries. ||| ||| ||| +1 Second Battle of Amba Alagi ||| World War II ||| The '''Battle of Amba Alagi''' was fought in May 1941, during [[World War II]], part of the [[East African Campaign (World War II)|East African Campaign]]. ||| ||| ||| +1 Second Battle of Artois ||| Western Front (World War I) ||| The '''Second Battle of Artois''' '''({{lang|fr|''Deuxième bataille de l'Artois''}}''' or '''{{lang|de|''Lorettoschlacht''}}''') from {{nowrap|9 May – 18 June 1915}} was a battle on the [[Western Front (World War I)|Western Front]] during the [[World War I|First World War]].{{efn|The province of Artois had been abolished during the French revolution and was replaced by the Départments of Somme and Pas de Calais but the name had been retained in French and British army nomenclature.{{sfn|Edmonds|Wynne|1927|p=68}}}} A German-held salient from Rheims to Amiens had been formed in 1914, which menaced communications between Paris and northern France. A reciprocal French advance eastwards in Artois could cut the rail lines supplying the German armies between Arras and Rheims. French operations in Artois, Champagne and Alsace from November–December 1914, led General [[Joseph Joffre]], [[Generalissimo]] ([[Commander in Chief]]) and head of [[Grand Quartier Général (1914–1919)|Grand Quartier Général]] (GQG), to continue the offensive in Champagne against the German southern rail supply route and to plan an offensive in Artois, against the lines supplying the German armies from the north. ||| ||| ||| +1 Second Battle of Auburn ||| American Civil War ||| The '''Second Battle of Auburn''' was fought on October 14, 1863, in [[Fauquier County, Virginia|Fauquier County]], [[Virginia]], between [[Union Army | Union]] and [[Confederate States Army | Confederate]] forces in the [[American Civil War]]. Confederate forces led by [[Lieutenant General (CSA) | Lt. Gen.]] [[Richard S. Ewell]] led a sortie to extricate [[Major General (CSA) | Maj. Gen.]] [[J.E.B. Stuart]]'s cavalry command, trapped between two Union columns and clashed with the rearguard of the Federal [[II Corps (Union Army) | II Corps]] under [[Brigadier general (United States) | Brig. Gen.]] [[Gouverneur K. Warren]]. Stuart was successfully extricated but the Federal wagon train avoided Confederate capture in the inconclusive fight. ||| ||| ||| +1 Second Battle of Cape Finisterre (1747) ||| War of the Austrian Succession ||| The '''Second Battle of Cape Finisterre''' was a [[naval battle]] which took place on 25 October 1747 (14 October 1747 in the [[Julian calendar]] then in use in Britain) during the [[War of the Austrian Succession]]. A [[Kingdom of Great Britain|British]] fleet of fourteen ships of the line commanded by Rear-Admiral Sir [[Edward Hawke]] intercepted a [[France|French]] convoy protected by eight French [[ships of the line]] commanded by Admiral [[Henri-François des Herbiers, Marquis de l'Estenduère|Desherbiers de l'Etenduère]]. ||| ||| ||| +1 Second Battle of Deep Bottom ||| American Civil War ||| The '''Second Battle of Deep Bottom''', also known as '''Fussell's Mill''' (particularly in the [[Southern United States|South]]), '''New Market Road''', '''Bailey's Creek''', '''Charles City Road''', or '''White's Tavern''' was fought August 14–20 1864, at Deep Bottom in [[Henrico County]], [[Virginia]], during the [[Richmond-Petersburg Campaign]] (Siege of Petersburg) of the [[American Civil War]]. ||| ||| ||| +1 Second Battle of El Alamein ||| Western Desert Campaign ||| The '''Second Battle of El Alamein''' (23 October – 11 November 1942) took place near the [[Egypt]]ian railway halt of [[El Alamein]]. With the Allies victorious, it marked a major turning point in the [[Western Desert Campaign]] of the Second World War. It followed the [[First Battle of El Alamein]], which had stalled the [[Axis Powers|Axis]] advance into Egypt, after which, in August 1942, [[Lieutenant General (United Kingdom)|Lieutenant-General]] [[Bernard Montgomery, 1st Viscount Montgomery of Alamein|Bernard Montgomery]] had taken command of the British [[Eighth Army (United Kingdom)|Eighth Army]] from General [[Claude Auchinleck]]. This victory turned the tide in the [[North African Campaign]] and ended the Axis threat to [[Egypt]], the [[Suez Canal]], and of gaining access to the Middle Eastern and Persian oil fields via North Africa. From a psychological perspective, Second El Alamein revived the morale of the Allies, being the first major offensive against the Axis since the start of the European war in 1939 in which the Western Allies had achieved a decisive victory. The battle coincided with the Allied invasion of [[French North Africa]] in [[Operation Torch]], which started 8 November. ||| ||| ||| +1 Second Battle of Fallujah ||| Iraq War ||| This operation was the second major operation in Fallujah. Earlier, in April 2004, coalition forces fought the [[First Battle of Fallujah]] in order to capture or kill insurgent elements considered responsible for the deaths of a [[Blackwater Worldwide|Blackwater Security]] team. When coalition forces fought into the center of the city, the Iraqi government requested that the city's control be transferred to an Iraqi-run local security force, which then began stockpiling weapons and building complex defenses across the city through mid-2004. The second battle was the bloodiest battle of the entire [[Iraq War]], and is notable for being the first major engagement of the Iraq War fought solely against insurgents rather than the forces of the former [[History of Iraq under Ba'athist rule|Ba'athist Iraqi]] government, which was deposed in 2003. ||| ||| ||| +1 Second Battle of Kernstown ||| American Civil War ||| The '''Second Battle of Kernstown''' was fought on July 24, 1864, at [[Kernstown, Virginia]], outside [[Winchester, Virginia]], as part of the [[Valley Campaigns of 1864]] in the [[American Civil War]]. The [[Confederate States Army|confederate]] [[Army of the Valley]] under [[Lieutenant General (CSA)|Lt. Gen.]] [[Jubal A. Early]] soundly defeated the [[Union Army|Union]] [[Army of West Virginia]] under [[Brigadier general (United States)|Brig. Gen.]] [[George Crook]] and drove it from the [[Shenandoah Valley]] back over the [[Potomac River]] into [[Maryland]]. As a result, Early was able to launch the Confederacy's last major raid into northern territory, attacking the [[Baltimore and Ohio Railroad]] in Maryland and [[West Virginia]] and burning [[Chambersburg, Pennsylvania]], in retaliation for the burning of some civilian houses and farms earlier in the campaign. ||| ||| ||| +1 Second Battle of Mesilla ||| American Civil War ||| The '''Second Battle of Mesilla''' was an unusual engagement of the [[American Civil War]]. It was fought on July 1, 1862, and was the last engagement between [[Union (American Civil War)|Union]] and [[Confederate States of America|Confederate]] forces in the [[Arizona Territory (Confederate States of America)|Arizona Territory]]. A skirmish outside of Confederate Arizona's capital of [[Mesilla, New Mexico|Mesilla]] between a confederate party and local pro-[[Union Army|Union]] [[New Mexico|New Mexican]] [[guerrilla]]s resisting the Confederate foraging expedition, resulted in a United States victory. Various accounts report from seven to twelve confederates killed including their commander Capt. Cleaver of the 7th Texas Infantry and as many as 40 of the local guerrillas. ||| ||| ||| +1 Second Battle of Naktong Bulge ||| Battle of Pusan Perimeter ||| The '''Second Battle of Naktong Bulge''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from September 1 to September 15, 1950, along the [[Naktong River]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Second Battle of Naktong Bulge ||| Korean War ||| The '''Second Battle of Naktong Bulge''' was an engagement between [[United Nations]] (UN) and [[North Korean]] (NK) forces early in the [[Korean War]] from September 1 to September 15, 1950, along the [[Naktong River]] in [[South Korea]]. It was a part of the [[Battle of Pusan Perimeter]], and was one of several large engagements fought simultaneously. The battle ended in a victory for the United Nations after large numbers of [[United States]] (US) and [[Republic of Korea]] (ROK) troops repelled a strong North Korean attack. ||| ||| ||| +1 Second Battle of Newbury ||| English Civil War ||| The '''Second Battle of Newbury''' was a battle of the [[English Civil War]] fought on 27 October 1644, in [[Speen, Berkshire|Speen]], adjoining [[Newbury, Berkshire|Newbury]] in Berkshire. The battle was fought close to the site of the [[First Battle of Newbury]], which took place in late September the previous year. ||| ||| ||| +1 Second Battle of Sabine Pass ||| American Civil War ||| The '''Second Battle of Sabine Pass''' took place on September 8, 1863, the result of a failed [[Union Army]] attempt to invade the [[Confederate States of America|Confederate]] state of [[Texas]] during the [[American Civil War]]. It has often been credited as the most one-sided Confederate victory during the War. ||| ||| ||| +1 Second Battle of Sacket's Harbor ||| War of 1812 ||| The '''Second Battle of Sacket's Harbor''' or simply the '''Battle of Sacket's Harbor''', took place on 29 May 1813, during the [[War of 1812]]. A [[United Kingdom of Great Britain and Ireland|British]] force was transported across [[Lake Ontario]] and attempted to capture the town, which was the principal dockyard and base for the [[United States|American]] naval squadron on the lake. They were repulsed by American [[Regular Army|regulars]] and [[militia]]. ||| ||| ||| +1 Second Battle of Springfield ||| American Civil War ||| The '''Second Battle of Springfield''' was a [[List of American Civil War battles|battle]] in the [[American Civil War]] fought January 8, 1863, in [[Springfield, Missouri]]. It is sometimes known as '''The Battle of Springfield'''. (The [[Battle of Springfield I|First Battle of Springfield]] was fought on October 25, 1861, and there was also the better-known [[Battle of Wilson's Creek]], fought nearby on August 10, 1861.) Fighting was urban and house-to-house, which was rare in the war. ||| ||| ||| +1 Second Battle of Tripoli Harbor ||| First Barbary War ||| The '''Second Battle of Tripoli Harbor''', was a naval action during a naval [[blockade]] which took place in [[Tripoli Harbor]] in 1804. The battle is part of the [[First Barbary War]] between forces of the [[United States]] and the forces of [[Tripoli]]. ||| ||| ||| +1 Second Battle of Winchester ||| American Civil War ||| The '''Second Battle of Winchester''' was fought between June 13 and June 15, 1863 in [[Frederick County, Virginia|Frederick County]] and [[Winchester, Virginia]] as part of the [[Gettysburg Campaign]] during the [[American Civil War]]. As [[Confederate States Army|Confederate]] [[Lieutenant General (United States)|Lieutenant General]] [[Richard S. Ewell]] moved down the [[Shenandoah Valley]] in the direction of [[Pennsylvania]], his corps defeated the [[Union Army]] garrison commanded by [[Major General (United States)|Major General]] [[Robert H. Milroy]], capturing Winchester and numerous Union prisoners. ||| ||| ||| +1 Second Battle of Ypres ||| Western Front (World War I) ||| During [[World War I]], the '''Second Battle of Ypres''' was fought from {{nowrap|22 April – 25 May 1915}} for control of the strategic [[Flemish]] town of [[Ypres]] in western [[Belgium]] after the [[First Battle of Ypres]] the previous autumn. It was the first mass use by Germany of [[Chemical weapon|poison gas]] on the [[Western Front (World War I)|Western Front]]. For the first time, a former colonial force (the [[1st Canadian Division]]) defeated that of a European power (the [[German Empire]]) on European soil (in the battles of St. Julien and [[Battle of Kitcheners' Wood|Kitcheners' Wood]], engagements during the battle). ||| ||| ||| +1 Second Battle of the Isonzo ||| Italian Front (World War I) ||| The '''Second Battle of the Isonzo''' was fought between the armies of the [[Kingdom of Italy (1861–1946)|Kingdom of Italy]] and of [[Austria-Hungary]] in the [[Italian Front (World War I)|Italian Front]] in World War I, between 18 July and 3 August 1915. ||| ||| ||| +1 Second Battle of the Masurian Lakes ||| Eastern Front (World War I) ||| The '''Second Battle of the Masurian Lakes''', also known as the '''Winter Battle of the Masurian Lakes''', was the northern part of the [[Central Powers]]' offensive on the [[Eastern Front (World War I)|Eastern Front]] in the winter of 1915. The offensive was intended to advance beyond the [[Vistula River]] and perhaps knock [[Russian Empire|Russia]] out of the war. ||| ||| ||| +1 Second Battle of the Somme (1918) ||| Western Front (World War I) ||| The '''Second Battle of the Somme''' of 1918 was fought during the [[World War I|First World War]] on the [[Western Front (World War I)|Western Front]] from the end of the summer, in the [[drainage basin|basin]] of the [[River Somme]]. It was part of a series of successful counter-offensives in response to the [[German Army (German Empire)|German]] [[Spring Offensive]], after a pause for redeployment and supply. ||| ||| ||| +1 Second Congo War ||| Rwandan Genocide ||| The [[First Congo War]] began in 1996 as [[Rwanda]] grew increasingly concerned that members of [[Rassemblement Démocratique pour le Rwanda]] Hutu militias, who were carrying out cross-border raids from [[Zaire]], were planning an invasion of Rwanda.{{cn|date=October 2015}} The militias, mostly [[Hutu]], had entrenched themselves in [[refugee camp]]s in eastern Zaire, where many had fled to escape the [[Tutsi]]-dominated [[Rwandan Patriotic Front]] (RPF) in the aftermath of the [[Rwandan Genocide]] of 1994. ||| Background ||| Kabila's march to Kinshasa ||| +1 Second Desmond Rebellion ||| Desmond Rebellions ||| The '''Second Desmond rebellion''' (1579–1583) was the more widespread and bloody of the two [[Desmond Rebellions]] launched by the [[FitzGerald]] dynasty of [[County Desmond|Desmond]] in [[Munster]], Ireland, against English rule in Ireland. The second rebellion began in July 1579 when [[James FitzMaurice FitzGerald]], landed in Ireland with a force of [[Papal]] troops, triggering an insurrection across the south of Ireland on the part of the Desmond dynasty, their allies and others who were dissatisfied for various reasons with English government of the country. The rebellion ended with the 1583 death of [[Gerald FitzGerald, 15th Earl of Desmond]] and the defeat of the rebels. ||| ||| ||| +1 Second Siege of Gerona ||| Peninsular War ||| The '''Second Siege of Gerona''' was the second unsuccessful French attempt to capture the city of [[Girona]] (spelled 'Gerona' in [[Spanish_language|Castilian]]) during the [[Peninsular War]], part of the [[Napoleonic Wars]]. [[Girona]] is located near the present-day [[Autovía A-7]], about halfway between the Franco-Spanish border and [[Barcelona]]. ||| ||| ||| +1 Second Siege of Missolonghi ||| Greek War of Independence ||| The '''Second Siege of Missolonghi''' was a second attempt by [[Ottoman Empire|Ottoman]] forces to capture the strategically located port town of [[Missolonghi]] during the third year of the [[Greek War of Independence]] (1823). The second siege is usually ignored however, and the name is often applied to the greater [[Third Siege of Missolonghi|siege of 1825–1826]]. ||| ||| ||| +1 Second Siege of Zaragoza ||| Peninsular War ||| The '''Second Siege of Zaragoza''' was the French capture of the [[Spain|Spanish]] city of [[Zaragoza]] (also known as Saragossa) during the [[Peninsular War]]. It was particularly noted for its brutality. ||| ||| ||| +1 Second Sino-Japanese War ||| Pacific War ||| China fought Japan, with some economic help from Germany (see [[Sino-German cooperation until 1941]]), the [[Soviet Volunteer Group|Soviet Union]], the [[British Empire]] and the [[American Volunteer Group|United States]]. After the [[Attack on Pearl Harbor|Japanese attack on Pearl Harbor]] in 1941, the war would merge into the greater conflict of [[World War II]] as a major front of what is broadly known as the [[Pacific War]]. The Second Sino-Japanese War was the largest Asian war in the 20th century. It accounted for the majority of civilian and military casualties in the [[Pacific War]], with anywhere between 10 and 25 million Chinese civilians and over 4 million Chinese and Japanese military personnel dying from war-related violence, famine, and other causes (see [[World War II casualties]]). ||| ||| ||| +1 Seven Days Battles ||| American Civil War ||| The '''Seven Days Battles''' were a series of six major battles over the seven days from June 25 to July 1, 1862, near [[Richmond, Virginia]], during the [[American Civil War]]. [[Confederate States Army|Confederate]] General [[Robert E. Lee]] drove the invading [[Union Army|Union]] [[Army of the Potomac]], commanded by [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]], away from Richmond and into a retreat down the [[Virginia Peninsula]]. The series of battles is sometimes known erroneously as the '''Seven Days Campaign''', but it was actually the culmination of the [[Peninsula Campaign]], not a separate campaign in its own right. ||| ||| ||| +1 Shanghai Campaign ||| Chinese Civil War ||| The '''Shanghai Campaign''' ({{zh|s=上海战役}}) was a series of battles fought between the [[Kuomintang|nationalists]] and the [[communist]]s for the control of [[Shanghai]], the largest city in [[China]] in the latter stage of the [[Chinese Civil War]], and resulted in the city being taken over by the communists who enjoyed the numerical superiority. ||| ||| ||| +1 Shell House massacre ||| South African general election, 1994 ||| The '''Shell House massacre''' refers to a 1994 shooting incident that took place at the headquarters of the [[African National Congress]] (ANC), in central [[Johannesburg]], [[South Africa]] in the lead up to the [[South African general election, 1994|1994 elections]]. ||| ||| ||| +1 Shelling of Donetsk, Russia ||| 2014 pro-Russian unrest in Ukraine ||| [[2014 pro-Russian unrest in Ukraine|Pro-Russian protests]] began in the neighboring [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] regions of Ukraine in February 2014 and eventually escalated into an [[2014 insurgency in Donbass|anti-government armed insurgency]] by April. The Ukrainian government launched counterattacks, and by July 2014, had retaken significant territory from the anti-government rebels. ||| Background ||| ||| +1 Sherman's March to the Sea ||| American Civil War ||| '''Sherman's March to the Sea''' is the name commonly given to the [[Military campaign|military]] '''Savannah Campaign''' in the [[American Civil War]], conducted through [[Georgia (U.S. state)|Georgia]] from November 15 to December 21, 1864 by [[Major general (United States)|Maj. Gen.]] [[William Tecumseh Sherman]] of the [[Union Army]]. The campaign began with Sherman's troops leaving the [[Battle of Atlanta|captured]] city of [[Atlanta, Georgia]], on November 15 and ended with the capture of the port of [[Savannah, Georgia|Savannah]] on December 21. His forces destroyed military targets as well as industry, infrastructure, and civilian property and disrupted the Confederacy's economy and its transportation networks. Sherman's bold move of operating deep within enemy territory and without supply lines is considered to be revolutionary in the annals of war. ||| ||| ||| +1 Shuangduiji Campaign ||| Chinese Civil War ||| The '''Battle of Shuangduiji''' (双堆集战役) was a major campaign fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during the [[Chinese Civil War]] in the post-[[World War II]] era, resulting in a [[communist]] victory. The campaign was part of the [[Huaihai Campaign]]. ||| ||| ||| +1 Siege of Adrianople (1912–13) ||| First Balkan War ||| The '''Battle''' or '''Siege of Adrianople''' ({{lang-bg|Битка при Одрин}}, {{lang-sr|Опсада Једрена}}, {{lang-tr|Edirne Kuşatması}}) was fought during the [[First Balkan War]], beginning in mid-November 1912 and ending on 26 March 1913 with the capture of [[Edirne]] (Adrianople) by the Bulgarian 2nd Army. ||| ||| ||| +1 Siege of Alexandria ||| French Revolutionary Wars ||| The '''Siege of Alexandria''' was fought between 17 August and 2 September 1801, during the [[French Revolutionary Wars]], between French and British forces and was the last action of the Egyptian Campaign. The French had occupied [[Alexandria]], a major fortified harbour city on the [[Nile]] Delta in northern [[Egypt]], since 2 July 1798, and the garrison there surrendered on 2 September 1801. ||| ||| ||| +1 Siege of Almeida (1810) ||| Peninsular War ||| In the '''Siege of Almeida''', the French corps of [[Marshal]] [[Michel Ney]] captured the [[Castle Fortress of Almeida|border fortress]] from [[Brigadier General]] [[William Cox (British general)|William Cox]]'s Portuguese garrison. This action was fought in the summer of 1810 during the [[Peninsular War]] portion of the [[Napoleonic Wars]]. [[Almeida, Portugal|Almeida]] is located in eastern Portugal, near the border with Spain. ||| ||| ||| +1 Siege of Astorga (1812) ||| Peninsular War ||| The '''Siege of Astorga of 1812''' took place between 29 June and 19 August 1812, at [[Astorga, Spain|Astorga]], [[Province of León|León]], [[Castile-León]], [[Spain]], during the [[Peninsular War]]. On 29 June, the Spanish troops of Lieutenant-General [[Francisco Gómez de Terán y Negrete, Marquess of Portago]], started the operations, and laid siege to [[Astorga, Spain|Astorga]]. The siege was part of the Allied offensive in the summer of 1812. The ''Spanish VI Army'' led by General [[José María Francisco Silvestre Santocildes y de Llanos|José María Santocildes]], by order of General [[Francisco Javier Castaños, 1st Duke of Bailén|Francisco Castaños]], take the measures necessary for the recovery of Astorga. On 18 August, after a hard resistance, the French garrison surrendered to the Spaniards. ||| ||| ||| +1 Siege of Badajoz (1658) ||| Portuguese Restoration War ||| The '''4th Siege of Badajoz''' took place from July to October 1658 during the [[Portuguese Restoration War]]. It was an attempt by a huge Portuguese army under the command of Joanne Mendes de Vasconcelos, governor of [[Alentejo]], to capture the Spanish city of [[Badajoz]], which was the headquarters of the Spanish Army of Extremadura. The fortifications of Badajoz were essentially medieval and considered vulnerable by the Portuguese, and had already been attacked by them three times during this war. ||| ||| ||| +1 Siege of Barcelona (1651) ||| Catalan Revolt ||| The '''Siege of Barcelona''' took place between July 1651 and October 1652 during the [[Catalan Revolt]] when a large [[Kingdom of Spain|Spanish]] army descended on [[Barcelona]] and besieged the garrison made up of [[Catalan people|Catalans]] and [[France|French]] troops under [[Philippe de La Mothe-Houdancourt]]. ||| ||| ||| +1 Siege of Barcelona (1705) ||| War of the Spanish Succession ||| '''The Siege of Barcelona''' took place between 14 September and 19 October 1705 during the [[War of the Spanish Succession]] when a multinational Grand Alliance army led by [[Lord Peterborough]], supporting the Habsburg pretender to the Spanish throne, captured the city of [[Barcelona]] from its Franco-Spanish Bourbonic defenders. ||| ||| ||| +1 Siege of Bastogne ||| Battle of the Bulge ||| A rarity in the World War II era American Army, the 333rd Battalion was a combat unit composed entirely of [[African American]] soldiers, led by white officers. At the start of the [[Battle of the Bulge]], the 333rd was attached to the [[106th Infantry Division (United States)|106th Infantry Division]]. Prior to the German offensive, the 106th division was tasked with holding a 26-mile (41.8 kilometers) long length of the front, despite the Army Field manual stating that a single infantry division could hold no more than 5 miles (8 kilometers) of front. The vestiges of the 333rd were attached to its sister unit the [[969th Artillery Battalion (United States)|969th Battalion]]. ||| Battle ||| 333rd Field Artillery Battalion – The Black Battalion ||| +1 Siege of Belgrade (1688) ||| Great Turkish War ||| The '''Siege of Belgrade''' in 1688 was the fourth siege of that city, taking place during the [[Great Turkish War]]. ||| ||| ||| +1 Siege of Bihać ||| Bosnian War ||| The '''Siege of Bihać''' was a three-year-long siege of the northwestern [[Bosnia and Herzegovina|Bosnian]] town of [[Bihać]] by the [[Army of the Republika Srpska]], the [[Army of the Republic of Serbian Krajina]] and [[Autonomous Province of Western Bosnia|Bosniak dissenters]] led by the [[Bosniak]] politician [[Fikret Abdić]] during the 1992-95 [[Bosnian War]]. The siege lasted for three years, from June 1992 until 4–5 August 1995, when [[Operation Storm]] ended it after the [[Croatian Army]] (HV) overran the rebel Serbs in Croatia and northwest of the besieged town. ||| ||| ||| +1 Siege of Bjelovar Barracks ||| Croatian War of Independence ||| The '''Siege of Bjelovar Barracks''', also known by the [[codename]] '''Operation Bilogora''' ({{lang-hr|Operacija Bilogora}}), was the blockade and capture of the [[Yugoslav People's Army]] (JNA) barracks and other facilities in and around the city of [[Bjelovar]], a part of the JNA 32nd ([[Varaždin]]) Corps, during the [[Croatian War of Independence]]. A general blockade of the JNA facilities in Croatia was ordered on 14 September 1991, and it continued until 29 September when the JNA garrison was captured by Croatian forces. Its capture occurred one week after the [[Siege of Varaždin Barracks|bulk of the 32nd Corps surrendered]]. It was part of the [[Battle of the Barracks]]—an effort by Croatian armed forces to isolate JNA units based at barracks in Croatia, or capture the barracks to provide arms for Croatia's nascent army. ||| ||| ||| +1 Siege of Bonn (1673) ||| Franco-Dutch War ||| The '''Siege of Bonn''' took place from November 3 - 12, 1673, in [[Bonn]], [[Germany]], during the [[Franco-Dutch War]]. Having forced the armies of [[Louis XIV of France|Louis XIV]] to retreat, the Dutch in 1673 went on the offensive. At Bonn, a garrison consisting of troops from [[Kingdom of France|France]] and the [[Electorate of Cologne]] was besieged by a force from the [[Dutch Republic]] (commanded by stadtholder [[William III of England|William III]]), [[Spain]], and the [[Holy Roman Empire]] (commanded by [[Raimondo Montecuccoli]]). The allied forces captured the garrison following a nine-day siege. ||| ||| ||| +1 Siege of Boston ||| American Revolutionary War ||| The '''Siege of Boston''' (April 19, 1775 – March 17, 1776) was the opening phase of the [[American Revolutionary War]]. [[New England]] militiamen prevented the movement by land of the [[British Army]] [[garrison]]ed in what was then the [[peninsula]]r city of [[Boston]], [[Massachusetts]]. Both sides had to deal with resource supply and personnel issues over the course of the siege. British resupply and reinforcement activities were limited to sea access. After eleven months of siege the British abandoned Boston by sailing to [[Nova Scotia]]. ||| ||| ||| +1 Siege of Bouchain ||| War of the Spanish Succession ||| The '''Siege of Bouchain''' (9 August – 12 September 1711), following the '''Passage of the Lines of ''Ne Plus Ultra''''' (5 August 1711), was a siege of the [[War of the Spanish Succession]], and the last major victory of [[John Churchill, 1st Duke of Marlborough]]. Marlborough broke through the French defensive lines and took Bouchain after a siege of 34 days. Its capture left [[Cambrai]] the only French-held fortress between the allied army and Paris. ||| ||| ||| +1 Siege of Breslau ||| World War II ||| On 6 May, after 82 days of siege and shortly before the [[End of World War II in Europe|unconditional surrender of Germany]] in [[World War II]], General Niehoff relinquished ''Festung Breslau'' to the Soviets. During the siege, Soviet forces inflicted approximately 30,000 civilian and military casualties and took more than 40,000 prisoners, while suffering 60,000 total casualties. Breslau was the last major city in Germany to surrender, only two days before the end of the war in Europe. Gauleiter Hanke had fled to [[Prague]] by the time of the city's surrender. ||| Surrender ||| ||| +1 Siege of Brussels ||| War of the Austrian Succession ||| The '''Siege of Brussels''' took place between January and February 1746 during the [[War of the Austrian Succession]]. A [[Kingdom of France|French]] army under the overall command of [[Maurice de Saxe]], in a bold and innovative winter campaign besieged and captured the city of [[Brussels]], which was then the capital of the [[Austrian Netherlands]], from its [[Austria]]n garrison. ||| ||| ||| +1 Siege of Budapest ||| World War II ||| The '''Siege of Budapest''' or the '''Battle of Budapest''' was the 50-day-long encirclement of the Hungarian [[capital (political)|capital]] of [[Budapest]] by [[Soviet Union|Soviet forces]] near the end of [[World War II]]. Part of the broader [[Budapest Offensive]], the siege began when Budapest, defended by [[Military of Hungary|Hungarian]] and [[Germany|German]] troops, was first encircled on 26 December 1944 by the [[Red Army]] and the [[Romanian Army]]. During the siege, about 38,000 civilians died from starvation and military action. The city unconditionally surrendered on 13 February 1945. It was a strategic victory for the Allies in their push towards Berlin. ||| ||| ||| +1 Siege of Calais (1596) ||| French Wars of Religion ||| The '''Siege of Calais of 1596''', also known as the '''Spanish conquest of Calais''', took place at the strategic port-city of [[Calais]] (present-day [[Nord-Pas-de-Calais]], [[France]]), between April 8-24, 1596, as part of the [[Franco-Spanish War (1595-1598)]], in the context of the [[French Wars of Religion]], the [[Anglo-Spanish War (1585–1604)]], and the [[Eighty Years' War]]. ||| ||| ||| +1 Siege of Carrigafoyle Castle ||| Second Desmond Rebellion ||| The '''Siege of Carrigafoyle Castle''' took place at Easter in 1580 near modern-day [[Ballylongford]], [[County Kerry]], [[Ireland]] on the southern bank of the [[River Shannon|Shannon estuary]]. The engagement was part of the English crown's campaign against the forces of [[Gerald Fitzgerald, 15th Earl of Desmond]] during the [[Second Desmond Rebellion]]. The castle was held by rebel troops in the service of Desmond and some Catholic troops from continental Europe. ||| ||| ||| +1 Siege of Colchester ||| English Civil War ||| The '''siege of Colchester''' occurred in the summer of 1648 when the [[English Civil War]] reignited in several areas of Britain. [[Colchester]] found itself in the thick of the unrest when a [[Cavalier|Royalist]] army on its way through [[East Anglia]] to raise support for the King, was attacked by Lord-General [[Thomas Fairfax, 3rd Lord Fairfax of Cameron|Thomas Fairfax]] at the head of a Parliamentary force. The initial Parliamentary attack forced the Royalist army to retreat behind the town's walls but was unable to bring about victory, so settled down to a siege. Despite the horrors of the siege, the Royalists resisted for eleven weeks and only surrendered following the defeat of the Royalist army in the North of England at the [[Battle of Preston (1648)]]. ||| ||| ||| +1 Siege of Corinth ||| American Civil War ||| The '''Siege of Corinth''' (also known as the '''First Battle of Corinth''') was an [[American Civil War]] battle fought from April 29 to May 30, 1862, in [[Corinth, Mississippi]]. The town was a strategic point at the junction of two vital railroad lines, the [[Mobile and Ohio Railroad]] and the [[Memphis and Charleston Railroad]]. The siege ended as the Confederates withdrew. The Union forces under [[Ulysses S. Grant]] took control and made it the base for his operations to seize control of the [[Mississippi River Valley]], and especially the Confederate stronghold of [[Vicksburg, Mississippi]]. ||| ||| ||| +1 Siege of Cuartel de Loyola ||| Spanish Civil War ||| The '''Siege of Cuartel de Loyola''' was a siege and uprising in [[San Sebastián]], [[Spain]], on 21 July 1936, at the start of the [[Spanish Civil War]]. A group of soldiers attempted to form a [[coup]] against the [[Second Spanish Republic]]. ||| ||| ||| +1 Siege of Cuautla ||| Mexican War of Independence ||| On 16 September 1810, [[Miguel Hidalgo y Costilla]] rose in rebellion, rallying the town of [[Dolores Hidalgo|Dolores]] to fight for independence from the [[Spanish crown]]. This series of events triggered the [[Mexican War of Independence]] and various cities began to fall to the rebel cause. On 28 September of the same year, the rebel forces took over [[Guanajuato]], on 17 October and 25 respectively, the rebels captured [[Valladolid, Yucatán|Valladolid]] and [[Toluca]]. On 30 October, they routed a loyalist army at the [[Battle of Monte de las Cruces]], and two days later they were at the gates of Mexico City where they were eventually pushed back to the area around Bajío. Loyalist soldiers under the command of [[Félix María Calleja]] defeated Hidalgo's army for the first time at the [[Battle of Aculco]], splitting the insurgents into different groups. Hidalgo's army marched towards [[Valladolid, Yucatán|Valladolid]] where various atrocities were committed against the local Spanish population. On 19 November, Hidalgo arrived at [[Guadalajara, Mexico|Guadalajara]], which had been re-taken the same day as the Battle of Aculco by Spanish forces under [[José Antonio Torres]], where he again took control of the city and massacred the Spanish inhabitants. On 26 November, Calleja took Guanajuato back from the rebels, forcing the rebel forces under [[Ignacio José de Allende y Unzaga]] and [[Juan Aldama]] to retire to Guadalajuara where they again conducted purges of the Spanish population. By January 17, 1811, Calleja had once again defeated rebel forces at the [[Battle of the Puente de Calderón]], after which rebel forces fled to [[Coahuila]]. On 21 March, [[Ignacio Elizondo]], captured many of these fleeing rebels at Las Norias de Acatita de Baján. After being tried, Allende, Aldama and [[José Mariano Jiménez]], alongside other noteworthy rebel leaders were executed on 26 June at [[Chihuahua (state)|Chihuahua]]. For his part, Hidalgo himself was caught and executed on 30 July. ||| Context ||| ||| +1 Siege of Dubrovnik ||| Croatian War of Independence ||| The '''Siege of Dubrovnik''' ({{lang-hr|Opsada Dubrovnika}}, {{lang-sr-Latn|Blokada Dubrovnika}}) was a military engagement fought between the [[Yugoslav People's Army]] (JNA) and [[Croatia]]n forces defending the city of [[Dubrovnik]] and its surroundings during the [[Croatian War of Independence]]. The JNA started its advance on 1 October 1991 and by late October had captured virtually all of the territory between the [[Pelješac]] and [[Prevlaka]] peninsulas on the coast of the [[Adriatic Sea]]{{mdash}}except for Dubrovnik itself. The JNA attacks and bombardment of Dubrovnik, including the Old Town&mdash;a [[UNESCO]] [[World Heritage Site]]&mdash;culminated on 6 December 1991. The bombardment provoked strong international condemnation of the JNA and became a public relations disaster for [[Republic of Serbia (1990–2006)|Serbia]] and [[Socialist Republic of Montenegro|Montenegro]], contributing to their diplomatic and economic isolation and the international recognition of the [[independence of Croatia]]. In May 1992, the JNA pulled back from Dubrovnik to [[Bosnia and Herzegovina]], less than {{convert|1|km|abbr=off}} from the coast in some places, and east of the city to hand over its equipment to the newly formed [[Army of Republika Srpska]] (VRS). During this time, the [[Croatian Army]] (HV) attacked from the west and pushed back the JNA/VRS from the areas west of Dubrovnik, both in Croatia and in Bosnia and Herzegovina, and by the end of May linked up with the HV unit defending the city. Fighting between the HV and the Yugoslav troops east of Dubrovnik gradually died down. ||| ||| ||| +1 Siege of Fort Gaines ||| American Civil War ||| The '''Siege of Fort Gaines''' occurred between August 3 and 8, 1864, during the [[American Civil War]]. It took place in the Mobile Bay area of [[Alabama in the American Civil War|Alabama]] as part of the larger [[battle of Mobile Bay]], and resulted in the surrender of the fort and its defenders. ||| ||| ||| +1 Siege of Fort Harrison ||| War of 1812 ||| The '''Siege of Fort Harrison''' was an engagement that lasted from September 4 to 15, 1812. The first American land victory during the [[War of 1812]], it was won by an outnumbered [[United States]] force garrisoned inside the fort against a combined [[Native Americans in the United States|Native American]] force near modern [[Terre Haute, Indiana]]. ||| ||| ||| +1 Siege of Fort Morgan ||| American Civil War ||| The '''Siege of Fort Morgan''' occurred during the [[American Civil War]] as part of the [[Battle of Mobile Bay|battle for Mobile Bay]] in 1864. Union ground forces led by General [[Gordon Granger]] conducted a short siege of the Confederate garrison at the mouth of Mobile Bay under the command of General [[Richard L. Page]]. The Confederate surrender helped shut down Mobile as an effective Confederate port city. ||| ||| ||| +1 Siege of Fort Wayne ||| War of 1812 ||| The '''Siege of Fort Wayne''' took place during the [[War of 1812]], between [[United States]] and [[Native Americans in the United States|American Indian]] forces in the wake of the successful [[United Kingdom of Great Britain and Ireland|British]] campaigns of 1812. ||| ||| ||| +1 Siege of Fredriksten ||| Great Northern War ||| King [[Charles XII of Sweden]] made several campaigns into the city during the [[Great Northern War]] during his campaign to capture [[Denmark–Norway]]. At the close of the [[Great Northern War and Norway|Great Northern War]], the Norwegian Army had been weakened in early 1716 by withdrawal of 5000 of the best troops to Denmark. When rumors reached Christiania that [[Charles XII of Sweden|Charles XII]] was preparing to invade, all remaining troops in [[Østerdal]] and [[Gudbrandsdal]] were ordered to the border at Halden and Fredrikstad. The Norwegians expected the Swedes to invade at [[Kongsvinger]], [[Basmo Fortress|Basmo]] and/or Halden. It was at Basmo where Charles XII struck, crossing the border March 8, 1716. The Norwegian [[scorched earth]] policy and [[guerrilla]] raid interdiction of supply chains by the residents of Bohuslen deprived Charles of supplies, while the fortresses still held by the Norwegians behind his lines threatened his supply chain and his retreat if seriously weakened in combat. Charles took Christiania (now Oslo), but without heavy siege artillery, was unable to take [[Akershus Fortress|Akershus]]. ||| Background ||| ||| +1 Siege of Fukuryūji ||| Genpei War ||| The '''siege of the Fukuryūji''' took place in 1183, and was a battle of the [[Genpei War]], the great 12th-century Japanese civil war between the [[Taira clan]] and the [[Minamoto clan]]. Fukuryūji (福隆寺) was a fortress belonging to [[Senoo Kaneyasu]], a Taira partisan. [[Imai Kanehira]] led his men across muddy ricefields, under heavy archer fire, to take the fortress. The attackers were victorious, and Kaneyasu was killed. ||| ||| ||| +1 Siege of Gaeta (1806) ||| War of the Third Coalition ||| By the late summer of 1805, the [[War of the Third Coalition]] was about to break out. Emperor [[Napoleon]] deployed 94,000 men to defend his possessions in Italy. Marshal [[André Masséna]] had 68,000 men in the main army, the satellite [[Kingdom of Italy (Napoleonic)|Kingdom of Italy]] added 8,000, and an observation corps of 18,000 kept an eye on the [[Kingdom of Naples]]. ||| Background ||| ||| +1 Siege of Gaeta (1815) ||| Neapolitan War ||| The '''Siege of Gaeta''' of 1815 was a three-month siege of the city of [[Gaeta]] by [[Austrian Empire|Austrian]] forces during the [[Neapolitan War]]. On August 8, 1815 the city capitulated. ||| ||| ||| +1 Siege of Galway ||| Irish Confederate Wars ||| The English Parliamentarians were commanded by [[Charles Coote, 1st Earl of Mountrath|Charles Coote]], an English settler who had commanded Parliamentarian forces in the northwest of Ireland throughout the [[Irish Confederate Wars]]. Galway was garrisoned by [[Confederate Ireland|Irish Confederate]] soldiers under [[Thomas Preston, 1st Viscount Tara]], many of whom had reached the city after an unsuccessful defence of [[Waterford]]. ||| ||| ||| +1 Siege of Gandesa (1938) ||| Spanish Civil War ||| The '''Siege of [[Gandesa]]''' took place between July and November 1938 during the [[Spanish Civil War]], a few months after a battle in the same town. ||| ||| ||| +1 Siege of Genoa (1746) ||| War of the Austrian Succession ||| The '''Siege of Genoa''' took place in 1746 during the [[War of the Austrian Succession]] when an Allied force of [[Austrians]], [[Sardinians]] soldiers and [[United Kingdom|British]] sailors besieged the capital of the [[Republic of Genoa]]. The city ultimately surrendered to commander [[Antoniotto Botta Adorno]], after being abandoned by its principal allies [[France]] and [[Spain]]. ||| ||| ||| +1 Siege of Giarabub ||| Western Desert Campaign ||| The '''Siege of Giarabub''' (now [[Jaghbub, Libya|Jaghbub]]) in [[Libya]], was an engagement between [[Commonwealth of Nations|Commonwealth]] and [[Fascist Italy (1922–43)|Italian]] forces, in the [[Western Desert Campaign|Western Desert]] during [[World War II]]. In the aftermath of {{lang|it|''Operazione E''}}, the invasion of Libya by the Italian [[Tenth Army (Italy)|10th Army]] {{nowrap|(9–16 September 1940),}} [[Operation Compass]] {{nowrap|(9–16 December)}} by the [[Western Desert Force]] (WDF), the [[Battle of Sidi Barrani]] and the pursuit of the 10th Army into Cyrenaica {{nowrap|(16 December 1940 – 9 February 1941),}} the fortified Italian position at the [[Al Jaghbub Oasis]] was besieged by parts of the [[6th Division (Australia)|6th Australian Division]]. ||| ||| ||| +1 Siege of Godesberg ||| Cologne War ||| The '''Siege of Godesberg''', 18 November – 17 December 1583, was the first major siege of the [[Cologne War]] (1583–1589). Seeking to wrest control of an important fortification, Bavarian and mercenary soldiers surrounded the Godesberg ('''Wotan's Mountain'''), and the village then of the same name, now [[Bad Godesberg]] ('''Wotan's Mountain Spa'''), located at its foot. On top of the mountain sat a formidable fortress, similarly named [[Godesburg]] ('''Wotan's Castle'''), built in the early 13th century during a contest over the election of two competing archbishops. ||| ||| ||| +1 Siege of Hull (1643) ||| First English Civil War ||| The unsuccessful second '''Siege of Hull''' by the Royalist [[William Cavendish, 1st Duke of Newcastle-upon-Tyne|Earl of Newcastle]] in 1643 was a victory for [[Roundhead|Parliament]] at the high point of the [[Cavalier|Royalist]] campaign in the [[First English Civil War]]. It led to the abandonment of Newcastle's campaign in [[Lincolnshire]] and the re-establishment of Parliament's presence in [[Yorkshire]]. ||| ||| ||| +1 Siege of Hüningen (1796–97) ||| French Revolutionary Wars ||| The siege occurred within the [[French Revolutionary Wars]] during which Revolutionary France ranged itself against a [[First Coalition|Coalition]] that included most of the states with which it shared land or water borders. In particular, France was at odds with the European monarchies, who initially feared for the safety of [[Louis XVI]] and his wife, who was the sister of the [[Holy Roman Emperor]]. Fighting, which began in 1792, had been inconclusive. Fighting in 1795 had largely favored the Coalition; the Campaign in the Rhineland in 1796, though, had pushed the Coalition forces far into the German states; the Coalition forces had pushed back and, at the end of the summer's fighting in 1796, the Austrian force under command of [[Archduke Charles, Duke of Teschen|Archduke Charles]] had succeeded in pushing the French back to the Rhine. ||| ||| ||| +1 Siege of Jasna Góra ||| Second Northern War ||| The '''Siege of Jasna Góra''' (also known less accurately as the ''Battle of Częstochowa'', {{lang-pl | Oblężenie Jasnej Góry}}) took place in the winter of 1655 during the [[Second Northern War]] / [[The Deluge (Polish history)|The Deluge]] — as [[Sweden|Swedish]] [[invasion]] of the [[Polish-Lithuanian Commonwealth]] is known. The Swedes were attempting to capture the [[Jasna Góra]] [[monastery]] in [[Częstochowa]]. Their month-long [[siege]] however, was ineffective, as a small force consisting of [[monk]]s from the Jasna Góra monastery led by their [[Prior]] and supported by local volunteers, mostly from the ''[[szlachta]]'' (Polish [[nobility]]), fought off the numerically superior Germans (who were hired by Sweden), saved their sacred icon, the [[Black Madonna of Częstochowa]] and, according to some accounts, turned the course of the war. ||| ||| ||| +1 Siege of Jerusalem (1099) ||| First Crusade ||| The '''Siege of Jerusalem''' took place from June 7 to July 15, 1099 during the [[First Crusade]]. The climax of the First Crusade, the successful siege saw the Crusaders seize the city from the [[Fatimid Caliphate]] and laid the foundations for the [[Kingdom of Jerusalem]]. ||| ||| ||| +1 Siege of Kehl (1703) ||| War of the Spanish Succession ||| The 1703 '''Siege of Kehl''' was a military action of the [[War of the Spanish Succession]], in which [[France|French]] and [[Spain|Spanish]] forces under the command of the [[Claude Louis Hector de Villars|Duc de Villars]] captured the fortress of the [[Holy Roman Empire]] at [[Kehl]], opposite [[Strasbourg]] on the [[Rhine River]]. Siege operations began on 20 February 1703, following Villars' early departure from winter quarters. The fortress, defended by 3,500 troops of [[Louis William, Margrave of Baden-Baden|Louis William]], the [[Margrave of Baden|Margrave of Baden-Baden]], capitulated on March 10. ||| ||| ||| +1 Siege of Kehl (1733) ||| War of the Polish Succession ||| The '''Siege of Kehl''' (14–28 October 1733) was one of the opening moves of the French Rhineland campaign in the [[War of the Polish Succession]], at the fortress town of [[Kehl]] in the upper [[Rhine River]] valley. A large French army under the command of the [[James FitzJames, 1st Duke of Berwick|Duke of Berwick]] besieged and captured the fortress, which was lightly garrisoned and in poor condition. ||| ||| ||| +1 Siege of Kijevo (1991) ||| Croatian War of Independence ||| The '''1991 siege of Kijevo''' was one of the earliest conflicts in the [[Croatian War of Independence]]. The 9th Corps of the [[Yugoslav People's Army]] (''Jugoslovenska Narodna Armija'' – JNA) led by [[Colonel]] [[Ratko Mladić]] and the forces of the [[SAO Krajina|Serbian Autonomous Oblast (region) of Krajina]] (SAO Krajina) under [[Knin]] police chief [[Milan Martić]] besieged the Croat-inhabited village of [[Kijevo, Croatia|Kijevo]] in late April and early May 1991. The initial siege was lifted after negotiations that followed [[1991 protest in Split|major protests in Split against the JNA]]. ||| ||| ||| +1 Siege of Kijevo (1991) ||| Yugoslav Wars ||| [[Trial of Milan Martić|Martić was tried]] at the [[International Criminal Tribunal for the former Yugoslavia]] (ICTY) on several different charges of [[war crime]]s including, his involvement in the siege of Kijevo. The trial resulted in a guilty verdict, and the findings of the Trial Chamber regarding Kijevo, made in 2007, were confirmed by the ICTY Appeals Chamber in 2008, based on witness testimonies about it being [[ethnic cleansing]]. The siege was the first instance of use of the ethnic cleansing in the [[Yugoslav Wars]]. Croatian authorities tried Mladić [[trial in absentia|''in absentia'']] and convicted him for war crimes committed in Kijevo. ||| ||| ||| +1 Siege of Kimberley ||| Second Boer War ||| The '''Siege of Kimberley''' took place during the [[Second Boer War]] at [[Kimberley, Northern Cape|Kimberley]], [[Cape Colony]] (present-day South Africa), when [[Boer]] forces from the [[Orange Free State]] and the [[South African Republic|Transvaal]] besieged the diamond mining town. The Boers moved quickly to try to capture the British enclave when war broke out between the British and the two Boer republics in October 1899. The town was ill-prepared, but the defenders organised an energetic and effective improvised defence that was able to prevent it from being taken. ||| ||| ||| +1 Siege of Kolberg (1807) ||| War of the Fourth Coalition ||| The '''Siege of Kolberg''' (now the Polish city of ''[[Kołobrzeg]]''){{efn|Also known as the '''Siege of Colberg'''}} took place from March to 2 July 1807 during the [[War of the Fourth Coalition]], part of the [[Napoleonic Wars]]. An army of the [[First French Empire]] and several foreign auxiliaries (including Polish insurgents) of France besieged the [[Kingdom of Prussia|Prussian]] fortified town of [[Kołobrzeg|Kolberg]], the only remaining Prussian-held [[fortress]] in the [[Province of Pomerania (1653–1815)|Prussian province of Pomerania]]. The siege was not successful and was lifted upon the announcement of the [[Treaties of Tilsit|peace of Tilsit]]. ||| ||| ||| +1 Siege of Kraków (1655) ||| Second Northern War ||| The '''siege of [[Kraków]]''' was one of the battles during the [[Sweden|Swedish]] invasion of [[Polish-Lithuanian Commonwealth]] ([[Second Northern War]] / [[Deluge (history)|''Deluge'']]). It started on 25 September 1655 and ended on 13 October 1655. Capitulation treatment was signed 4 days later. Polish troops marched out the city on 19 October. The city's defense was led by [[Kiev]]'s [[castellan]] [[Stefan Czarniecki]], while Swedish forces were commanded by king [[Charles X Gustav of Sweden|Charles Gustav]] and [[Arvid Wittenberg]]. ||| ||| ||| +1 Siege of Ladysmith ||| Second Boer War ||| The '''Siege of Ladysmith''' was a protracted engagement in the [[Second Boer War]], taking place between 2 November 1899 and 28 February 1900 at [[Ladysmith, KwaZulu-Natal|Ladysmith]], [[Colony of Natal|Natal]]. ||| ||| ||| +1 Siege of Landau (1702) ||| War of the Spanish Succession ||| The '''Siege of Landau''' (16 June-12 September 1702) saw an army from the [[Holy Roman Empire]] led by [[Louis William, Margrave of Baden-Baden]] lay siege to the fortress city of [[Landau]] which was held for the [[Kingdom of France]]. The French defenders led by [[Ezéchiel du Mas, Comte de Mélac]] resisted vigorously but were forced to surrender after a three-month leaguer. This action of the [[War of the Spanish Succession]] occurred at Landau in the state of [[Rhineland-Palatinate]], [[Germany]], located {{convert|49|km|mi|0}} southwest of [[Mannheim]]. ||| ||| ||| +1 Siege of Lathom House ||| First English Civil War ||| The '''Siege of [[Lathom House]]''' was a military confrontation between a [[Roundhead|Parliamentarian]] army and a [[Cavalier|Royalist]] stronghold in [[Lathom]] near [[Ormskirk]] in [[Lancashire]], during the [[First English Civil War]]. The first lasted from late February to late May 1644, when the siege was lifted. The second siege took place a year later from July to December 1645. Lathom House was captured and [[slighted]]. ||| ||| ||| +1 Siege of Leningrad ||| Eastern Front (World War II) ||| The '''Siege of Leningrad''', also known as the '''Leningrad Blockade''' ({{lang-ru|блокада Ленинграда}}, [[Romanization of Russian|transliteration]]: ''blokada Leningrada'') was a prolonged military [[blockade]] undertaken by the German [[Army Group North]] against Leningrad, historically and currently known as [[Saint Petersburg]], in the [[Eastern Front (World War II)|Eastern Front]] theatre of [[World War II]]. The siege started on 8 September 1941, when the last road to the city was severed. Although the Soviets managed to open a narrow land corridor to the city on 18 January 1943, the siege was finally lifted on 27 January 1944, 872 days after it began. It was one of the longest and most destructive [[List of sieges|sieges in history]] and possibly the [[List of battles by casualties#Sieges and urban combat|costliest]] in terms of casualties. ||| ||| ||| +1 Siege of Leningrad ||| World War II ||| The '''Siege of Leningrad''', also known as the '''Leningrad Blockade''' ({{lang-ru|блокада Ленинграда}}, [[Romanization of Russian|transliteration]]: ''blokada Leningrada'') was a prolonged military [[blockade]] undertaken by the German [[Army Group North]] against Leningrad, historically and currently known as [[Saint Petersburg]], in the [[Eastern Front (World War II)|Eastern Front]] theatre of [[World War II]]. The siege started on 8 September 1941, when the last road to the city was severed. Although the Soviets managed to open a narrow land corridor to the city on 18 January 1943, the siege was finally lifted on 27 January 1944, 872 days after it began. It was one of the longest and most destructive [[List of sieges|sieges in history]] and possibly the [[List of battles by casualties#Sieges and urban combat|costliest]] in terms of casualties. ||| ||| ||| +1 Siege of Limerick (1650–51) ||| Irish Confederate Wars ||| '''[[Limerick]]''', in western Ireland was the scene of two sieges during the [[Irish Confederate Wars]]. The second and largest of these took place during the [[Cromwellian conquest of Ireland]] in 1650–51. Limerick was one of the last fortified cities held by an alliance of Irish [[Confederate Ireland|Confederate Catholics]] and English Royalists against the forces of the English Parliament. Its garrison, led by [[Hugh Dubh O'Neill]], surrendered to [[Henry Ireton]] after a protracted and bitter siege. ||| ||| ||| +1 Siege of Limerick (1690) ||| Williamite War in Ireland ||| '''Limerick''', a city in western [[Ireland]], was besieged twice in the [[Williamite War in Ireland]], 1689-1691. On the first of these occasions, in August to September 1690, its [[Jacobitism|Jacobite]] defenders retreated to the city after their defeat at the [[Battle of the Boyne]]. The [[Williamite]]s, under [[William III of England|William III]], tried to take Limerick by storm, but were driven off and had to retire into their winter quarters. ||| ||| ||| +1 Siege of Limerick (1691) ||| Williamite War in Ireland ||| '''[[Limerick]]''' in western Ireland was besieged twice during the [[Williamite War in Ireland]] (1689-91). The city, held by [[Jacobitism|Jacobite]] forces was able to beat off a [[Williamite]] assault in 1690. However, after a second siege in August-October 1691, it surrendered on favourable terms. ||| ||| ||| +1 Siege of Lleida (1644) ||| Catalan Revolt ||| '''Siege of Lleida''' took place between 13 May - 30 July 1644 during the [[Catalan Revolt]] when a [[Spain|Spanish]] force under [[Felipe da Silva]] besieged and attacked the [[Kingdom of France|Franco]]-[[Catalonia|Catalan]] garrison of the town of [[Lleida]] - after intense fighting the town finally surrendered on 30 July. ||| ||| ||| +1 Siege of Louisbourg (1745) ||| War of the Austrian Succession ||| The '''Siege of Louisbourg''' took place in 1745 when a [[New England]] colonial force aided by a British fleet captured [[Louisbourg]], the capital of the French province of [[Île-Royale (New France)|Île-Royale]] (present-day [[Cape Breton Island]]) during the [[War of the Austrian Succession]], known as [[King George's War]] in the British colonies. ||| ||| ||| +1 Siege of Louisbourg (1758) ||| French and Indian War ||| The '''Siege of Louisbourg''' was a pivotal battle of the [[Seven Years' War]] (known in the United States as the [[French and Indian War]]) in 1758 that ended the French colonial era in [[Atlantic Canada]] and led directly to the loss of [[Quebec City|Quebec]] in 1759 and the remainder of [[French North America]] the following year. ||| ||| ||| +1 Siege of Lyme Regis ||| First English Civil War ||| The '''siege of Lyme Regis''' was an eight-week blockade during the [[First English Civil War]]. The port of [[Lyme Regis]], in [[Dorset]], was considered to be of strategic importance because it controlled the main shipping route between [[Bristol]] and the [[English Channel]]. [[Thomas Ceeley]] and [[Robert Blake (admiral)|Robert Blake]] commanded the town's [[Roundhead|Parliamentarian]] defences during the siege, which was laid by [[Maurice of the Palatinate|Prince Maurice]] between 20 April and 16 June 1644. ||| ||| ||| +1 Siege of Maastricht (1673) ||| Franco-Dutch War ||| The '''Siege of Maastricht''' (11 – 30 June 1673) ended when [[Jacques de Fariaux, baron de Maulde|Jacques de Fariaux]], the governor of the Dutch garrison, surrendered to an army under the command of [[Louis XIV of France|Louis XIV]] during the [[Franco-Dutch War]] (1672–1678). ||| ||| ||| +1 Siege of Madrid ||| Spanish Civil War ||| The '''Siege of Madrid''' was a three-year [[siege]] of the [[Spain|Spanish]] [[capital city]] of [[Madrid]], during the [[Spanish Civil War]] of 1936 to 1939. The city, besieged from October 1936, eventually fell to the Nationalists on 28 March 1939. Madrid was held by various forces loyal to the [[Second Spanish Republic]] and was besieged by [[Francoist Spain|Spanish Nationalist]] and allied troops under General [[Francisco Franco]]. The '''Battle of Madrid''' in November 1936 was the most concentrated fighting in the city, when the Nationalists made their most determined attempt to take Madrid. ||| ||| ||| +1 Siege of Mafeking ||| Second Boer War ||| The '''Siege of Mafeking''' was the most famous [[United Kingdom of Great Britain and Ireland|British]] action in the [[Second Boer War]]. It took place at the town of [[Mahikeng]] (called Mafeking by the British) in [[South Africa]] over a period of 217 days, from October 1899 to May 1900, and turned [[Robert Baden-Powell]], who went on to found the [[Scouting]] Movement, into a national hero. The '''Relief of Mafeking''' (the lifting of the siege) was a decisive victory for the British and a crushing defeat for the [[Boer]]s. ||| ||| ||| +1 Siege of Masbate ||| Philippine Revolution ||| The '''Siege of Masbate''' was fought on August 19, 1898 on [[Masbate (island)|Masbate island]] in the [[Visayas]] as a part of the [[Philippine Revolution]]. The revolt sparked the beginning of the revolutionary government's involvement in the Visayas. It is also one of the most overlooked conflicts in the Revolution. ||| ||| ||| +1 Siege of Medina ||| Arab Revolt ||| For this purpose, [[Nuri as-Said]] set about creating military training camps in Mecca under the direction of General [['Aziz 'Ali al-Misri]]. Using a mix of Bedouin volunteers, Arab officers and Arab Ottoman deserters who wanted to join the [[Arab Revolt]], 'Aziz 'Ali created three infantry brigades, a mounted brigade, an engineering unit, and three different artillery groups made up of a patchwork of varying cannon and heavy caliber machine guns. Of his total force of 30,000, 'Aziz 'Ali proposed that it be divided into three armies: ||| Events ||| ||| +1 Siege of Multan ||| Second Anglo-Sikh War ||| The '''Siege of Multan''' was a prolonged contest between the city and state of [[Multan]] and the British [[East India Company]]. The siege lasted between 19 April 1848, when a rebellion in the city against a ruler imposed by the East India Company precipitated the [[Second Anglo-Sikh War]], and 22 January 1849, when the last defenders surrendered. ||| ||| ||| +1 Siege of Ninety-Six ||| American Revolutionary War ||| The '''Siege of Ninety Six''' was a siege in western South Carolina late in the [[American Revolutionary War]]. From May 22 to June 18, 1781, [[Continental Army]] Major General [[Nathanael Greene]] led 1,000 troops in a siege against the 550 [[Loyalist (American Revolution)|Loyalist]]s in the fortified village of [[Ninety Six, South Carolina]]. The 28-day siege centered on an earthen fortification known as Star Fort. Despite having more troops, Greene was unsuccessful in taking the town, and was forced to lift the siege when [[Lord Rawdon]] approached from [[Charleston, South Carolina|Charleston]] with British troops. ||| ||| ||| +1 Siege of Numantia ||| Numantine War ||| The [[Celtiberians|Celtiberian]] [[oppidum]] of [[Numantia]] was attacked more than once by Roman forces, but the '''Siege of Numantia''' refers to the culminating and pacifying action of the long-running [[Numantine War]] between the forces of the [[Roman Republic]] and those of the native population of [[Hispania Citerior]]. The Numantine War was the third of the [[Celtiberian Wars]] and it broke out in 143 BC. A decade later, in 133 BC, the Roman general and hero of the [[Third Punic War]], [[Scipio Aemilianus Africanus]], subjugated Numantia, the chief Celtiberian city. ||| ||| ||| +1 Siege of Odessa (1941) ||| Eastern Front (World War II) ||| The '''Siege of Odessa''' also known as '''the Defence of Odessa''' was part of the [[Eastern Front (World War II)|Eastern Front]] theatre of [[World War II]] in 1941. The campaign was fought by the [[Axis powers]] of [[Germany]] and [[Romania]] against the Soviet Union for control of [[Odessa]], a port on the [[Black Sea]]. On 22 June 1941 [[Axis powers|the Axis]] invaded the [[Soviet Union]] during [[Operation Barbarossa]]. ||| ||| ||| +1 Siege of Oxford ||| First English Civil War ||| The '''Siege of Oxford''' refers to the [[First English Civil War|English Civil War]] military campaigns waged to [[siege|besiege]] the [[Cavalier|Royalist]] controlled city of [[Oxford]], involving three short engagements over twenty-five months, which ended with a [[Roundhead|Parliamentarian]] victory in June 1646. ||| ||| ||| +1 Siege of Petersburg ||| American Civil War ||| The '''Richmond–Petersburg Campaign''' was a series of battles around [[Petersburg, Virginia]], fought from June 9, 1864, to March 25, 1865, during the [[American Civil War]]. Although it is more popularly known as the '''Siege of Petersburg''', it was not a classic military [[siege]], in which a city is usually surrounded and all supply lines are cut off, nor was it strictly limited to actions against Petersburg. The campaign consisted of nine months of [[trench warfare]] in which [[Union Army|Union]] forces commanded by [[Lieutenant general (United States)|Lt. Gen.]] [[Ulysses S. Grant]] assaulted Petersburg unsuccessfully and then constructed trench lines that eventually extended over {{convert|30|mi|km}} from the eastern outskirts of [[Richmond, Virginia]], to around the eastern and southern outskirts of Petersburg. Petersburg was crucial to the supply of [[Confederate States Army|Confederate]] [[General (CSA)|Gen.]] [[Robert E. Lee]]'s army and the [[Confederate States of America|Confederate]] capital of Richmond. Numerous raids were conducted and battles fought in attempts to cut off the railroad supply lines through Petersburg to Richmond, and many of these caused the lengthening of the trench lines, overloading dwindling Confederate resources. ||| ||| ||| +1 Siege of Philippsburg (1734) ||| War of the Polish Succession ||| The '''Siege of Philippsburg''' was conducted by [[France|French]] forces against forces in the fortress of [[Philippsburg]] in the [[Rhine River]] valley during the [[War of the Polish Succession]]. The [[James FitzJames, 1st Duke of Berwick|Duke of Berwick]] led 100,000 men up the Rhine Valley in opposition to Austrian forces, of which 60,000 were detached to [[investment (military)|invest]] the fortress at Philippsburg, beginning on 1 June 1734. A relief column of 35,000 under the aging [[Prince Eugene of Savoy]] (accompanied by [[Frederick the Great|Crown Prince Frederick]] of [[Prussia]]) was unsuccessful in actually relieving the siege. On 12 June Berwick was killed by a cannonball while inspecting the trenches, and command of the besiegers fell to Marshals d'Asfeld and Noailles. The fortress surrendered one month later, and the garrison withdrew to the [[Fortress Mainz|fortress of Mainz]] with the honours of war. ||| ||| ||| +1 Siege of Pondicherry (1793) ||| French Revolutionary Wars ||| The '''Siege of Pondicherry''' was a colonial military operation in the early stages of the [[French Revolutionary Wars]]. Britain and France both controlled colonies on the [[Indian Subcontinent]] and when the French [[National Convention]] declared war on Britain on 1 February 1793, both sides were prepared for conflict in India. [[British India]] was centred on the principal ports of [[Bombay]], [[Madras]] and [[Calcutta]], administered by the [[East India Company]]. [[French India]] was governed from [[Pondicherry]] (modern Puducherry) on the [[Coromandel Coast]]. British forces in India were considerably stronger than the French, with the [[British Indian Army]] supported by [[British Army]] detachments and a [[Royal Navy]] squadron under Rear-Admiral [[William Cornwallis]]. Pondicherry's defenses were strong, but the garrison was too small to effectively man the walls, and although a French [[frigate]] squadron was stationed at the distant [[Isle de France (Mauritius)|Île de France]], it was unable to effectively protect the French Indian coast. ||| ||| ||| +1 Siege of Port Arthur ||| Russo-Japanese War ||| The '''Siege of [[Lüshunkou|Port Arthur]]''' ({{lang-ja|旅順攻囲戦}}, ''Ryojun Kōisen''; {{lang-ru|Оборона Порт-Артура}}, ''Oborona Port-Artura'', August 1, 1904 – January 2, 1905), the deep-water port and [[Russia]]n naval base at the tip of the [[Liaodong Peninsula]] in [[Manchuria]], was the longest and most violent land battle of the [[Russo-Japanese War]]. ||| ||| ||| +1 Siege of Port Hudson ||| American Civil War ||| The '''Siege of [[Port Hudson, Louisiana|Port Hudson]]''', Louisiana (May 22 – July 9, 1863), was the final engagement in the [[Union (American Civil War)|Union]] campaign to liberate the Mississippi in the [[American Civil War]]. ||| ||| ||| +1 Siege of Portsmouth ||| English Civil War ||| The '''Siege of Portsmouth''' was the siege of a Royalist garrison in [[Portsmouth]] by a [[Roundhead|Parliamentarian]] force conducted in the early part of the [[English Civil War]]. The siege resulted in Portsmouth falling to Parliament after a little under a month of conflict. ||| ||| ||| +1 Siege of Reading ||| English Civil War ||| The '''Siege of Reading''' refers to the [[English Civil War]] military campaign waged to besiege a Royalist garrison quartered in the town of [[Reading, Berkshire]] from 4 November 1642 to 25 April 1643. ||| ||| ||| +1 Siege of Roses (1808) ||| Peninsular War ||| The '''Siege of Roses''' or '''Siege of Rosas''' from 7 November to 5 December 1808 saw an [[First French Empire|Imperial French]] corps led by [[Laurent Gouvion Saint-Cyr]] invest a Catalan and [[Kingdom of Spain|Spanish]] garrison commanded by Peter O'Daly. After a siege lasting a month in which the haven and town of Rosas was captured and the nearby Trinity Castle invested by over 13,000 French and Italian infantry, artillery and cavalry with heavy siege trains on the hills above, the Citadel was surrendered to the Napoleonic forces. [[Roses, Girona|Roses (Rosas)]] is located {{convert|43|km|mi|0}} northeast of [[Girona]] (Gerona), Spain. The action occurred during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Siege of Sancerre ||| French Wars of Religion ||| The '''Siege of Sancerre''' (1572-1573) was a [[siege]] of the fortified hilltop city of [[Sancerre]] in central France during the [[French Wars of Religion|Wars of Religion]] where the [[Huguenot]] population held out for nearly eight months against the [[Catholic Church|Catholic]] forces of the king. ||| ||| ||| +1 Siege of Santuario de Nuestra Señora de la Cabeza ||| Spanish Civil War ||| The '''Siege of Santuario de Nuestra Señora de la Cabeza''' took place from 14 September 1936 to 1 May 1937 in [[Andújar]], [[Province of Jaén (Spain)|Jaén]], during the [[Spanish Civil War]]. The [[Second Spanish Republic|Republican]] army surrounded around 1,200 rebel [[Guardia Civil|civil guards]] and [[Falange|falangists]] who supported [[Francisco Franco|Franco]] and forced them to surrender after a protracted offensive. ||| ||| ||| +1 Siege of Savage's Old Fields ||| American Revolutionary War ||| The '''Siege of Savage's Old Fields''' (also known as the '''First Siege of Ninety Six''', November 19–21, 1775) was an encounter between [[Patriot (American Revolution)|Patriot]] and [[Loyalist (American Revolution)|Loyalist]] forces in the back country town of [[Ninety Six, South Carolina]], early in the [[American Revolutionary War]]. It was the first major conflict in [[South Carolina]] in the war, having been preceded by bloodless seizures of several military fortifications in the [[Province of South Carolina|province]]. Patriot forces under the command of Major [[Andrew Williamson (soldier)|Andrew Williamson]] had been dispatched to the area to recover a shipment of gunpowder and ammunition intended for the [[Cherokee people|Cherokees]] that had been seized by Loyalists. Williamson's force, numbering over 500, established a stockaded fort near Ninety Six, where it was surrounded by some 1,900 Loyalists. ||| ||| ||| +1 Siege of Savannah ||| American Revolutionary War ||| The '''Siege of Savannah''' or the '''Second Battle of Savannah''' was an encounter of the [[American Revolutionary War]] in 1779. The year before, the city of [[Savannah, Georgia]], had been [[Capture of Savannah|captured]] by a [[Kingdom of Great Britain|British]] expeditionary corps under [[Lieutenant-Colonel]] [[Archibald Campbell (British Army officer)|Archibald Campbell]]. The siege itself consisted of a joint [[Franco-American alliance|Franco-American]] attempt to retake Savannah, from September 16 to October 18, 1779. On October 9 a major assault against the British siege works failed. During the attack, Polish nobleman Count [[Casimir Pułaski]], leading the combined [[cavalry]] forces on the American side, was mortally wounded. With the failure of the joint American-French attack, the [[siege]] failed, and the British remained in control of Savannah until July 1782, near the end of the war. ||| ||| ||| +1 Siege of Sevastopol (1854–55) ||| Crimean War ||| The '''Siege of Sevastopol''' lasted from September 1854 until September 1855, during the [[Crimean War]]. The allies ([[Second French Empire|French]], [[Ottoman Empire|Ottoman]], and [[United Kingdom of Great Britain and Ireland|British]]) landed at [[Battle of Eupatoria|Eupatoria]] on 14 September 1854, intending to make a triumphal march to Sevastopol, the capital of the [[Crimea]], with 50,000 men. The {{convert|56|km|adj=on}} traverse took a year of fighting against the Russians. Major battles along the way were [[Battle of Alma|Alma]] (September 1854), [[Battle of Balaclava|Balaklava]] (October 1854), [[Battle of Inkerman|Inkerman]] (November 1854), [[Battle of the Chernaya|Tchernaya]] (August 1855), [[Battle of the Great Redan|Redan]] (September 1855), and, finally, [[Sevastopol]] (September 1855). During the siege, the allied navy undertook six bombardments of the capital, on 17 October 1854; and on 9 April, 6 June, 17 June, 17 August, and 5 September 1855. ||| ||| ||| +1 Siege of Silistra ||| Crimean War ||| The '''Siege of Silistra''' took place during the [[Crimean War]]. In this action, Russian forces besieged the Ottoman fortress town of Silistra. While initially successful, the Russians were forced after several weeks to abandon the siege and retreat. ||| ||| ||| +1 Siege of Sloviansk ||| War in Donbass ||| The '''Siege of Sloviansk''' was an operation by the [[Armed Forces of Ukraine]] to recapture the city of [[Sloviansk]] in [[Donetsk Oblast]] from [[War in Donbass|pro-Russian insurgents]] who had captured it on 12 April 2014. The city was recaptured on 5 July 2014 after [[shell (projectile)|shelling]] from artillery and heavy fighting. ||| ||| ||| +1 Siege of Srebrenica ||| Bosnian War ||| The '''Siege of Srebrenica''' ({{lang-bs|Opsada Srebrenice}}, {{lang-sr|Опсада Сребреницe}}) was a three-year-long siege of the town of [[Srebrenica]] in eastern [[Republic of Bosnia and Herzegovina|Bosnia and Herzegovina]] which lasted from April 1992 to July 1995 during the [[Bosnian War]]. ||| ||| ||| +1 Siege of Stralsund (1711–15) ||| Great Northern War ||| The '''Siege of Stralsund''' was a battle during the [[Great Northern War]]. The [[Swedish Empire]] defended her [[Swedish Pomerania]]n port of [[Stralsund]] against a coalition of [[Denmark-Norway]], the [[Electorate of Saxony]] and the [[Tsardom of Russia]], which was joined by [[Brandenburg-Prussia]] during the siege. ||| ||| ||| +1 Siege of Suffolk ||| American Civil War ||| The '''Siege of Suffolk''' was fought around [[Suffolk, Virginia]], from April 11 to May 4, 1863, during the [[American Civil War]]. ||| ||| ||| +1 Siege of Surakarta ||| Indonesian National Revolution ||| The '''Siege of Surakarta''' (7 August 1949) was a campaign of the [[Indonesian National Revolution]]. The Indonesian Republican forces ([[Military of Indonesia|TNI]]) briefly infiltrated the city of [[Surakarta]] (also known as Solo) before being repulsed by Dutch special forces [[Korps Speciale Troepen|(RST)]]. Despite the defeat, the battle, together with [[General Offensive of 1 March 1949|an earlier attack on Yogyakarta]] provided a morale boost for the Indonesians. ||| ||| ||| +1 Siege of Tobruk ||| World War II ||| The '''Siege of Tobruk''' lasted for 241 days in 1941, after [[Axis powers|Axis]] forces advanced through Cyrenaica from El Agheila in [[Operation Sonnenblume]] against the British [[Western Desert Force]] (WDF) in [[Libya]], during the [[Western Desert Campaign]] (1940–1943) of the [[World War II|Second World War]]. In late 1940, the British had defeated the Italian 10th Army during [[Operation Compass]] {{nowrap|(9 December 1940 – 9 February 1941)}} and trapped the remnants at Beda Fomm. German troops and Italian reinforcements reached Libya, while much of the WDF was sent to Greece and replaced by a skeleton force, short of equipment and supplies. ||| ||| ||| +1 Siege of Tortosa (1810) ||| Peninsular War ||| The '''Siege of Tortosa''' (16 December 1810 - 2 January 1811) pitted an [[First French Empire|Imperial French]] army under [[Marshal of France|Marshal]] [[Louis Gabriel Suchet]] against the Spanish defenders of [[Tortosa]] led by General Lilli, Conde de Alacha. The siege progressed swiftly and Alacha surrendered on 2 January 1811. Tortosa is a city that lies on the [[Ebro]] River about {{convert|80|km|mi|0}} southwest of [[Tarragona]]. The action took place during the [[Peninsular War]], part of the [[Napoleonic Wars]]. ||| ||| ||| +1 Siege of Toruń (1658) ||| Second Northern War ||| The '''Siege of Toruń''' was one of the battles during the [[Sweden|Swedish]] invasion of [[Polish-Lithuanian Commonwealth]] ([[Second Northern War]] / [[The Deluge (history)|Deluge]]). It started on 2 July 1658 and ended on 30 December 1658. Swedish garrison capitulated and [[Toruń]] returned to Polish hands. ||| ||| ||| +1 Siege of Tripoli ||| First Crusade ||| |battles= [[First Crusade|First]] – [[People's Crusade|People's]] – [[German Crusade, 1096|German]] – [[Crusade of 1101|1101]] – [[Second Crusade|Second]] – [[Wendish Crusade|Wendish]] – [[Third Crusade|Third]] – [[Livonian Crusade|Livonian]] - [[Crusade of 1197|1197]] – [[Fourth Crusade|Fourth]] – [[Albigensian Crusade|Albigensian]] – [[Children's Crusade|Children's]] – [[Fifth Crusade|Fifth]] – [[Prussian Crusade|Prussian]] - [[Sixth Crusade|Sixth]] – [[Seventh Crusade|Seventh]] – [[Shepherds' Crusade|Shepherds']] – [[Eighth Crusade|Eighth]] – [[Ninth Crusade|Ninth]] – [[Aragonese Crusade|Aragonese]] – [[Alexandrian Crusade|Alexandrian]] – [[Battle of Nicopolis|Nicopolis]] – [[Northern Crusades|Northern]] – [[Hussite Wars|Hussite]] – [[Crusade of Varna|Varna]] – [[Ottoman invasion of Otranto|Otranto]] ||| ||| ||| +1 Siege of Turin ||| War of the Spanish Succession ||| The '''Siege of Turin''' (14 May-7 September 1706) was undertaken by [[Philippe II, Duke of Orléans]] and [[Maréchal de camp|General]] [[Louis d'Aubusson de la Feuillade]] against the [[Duchy of Savoy|Savoyard]] city of [[Turin]] during the [[War of the Spanish Succession]]. The [[French Royal Army (1652–1830)|French Royal Army]] was unable to break down Turin's defences or obtain the city's surrender. The besiegers were attacked on 7 September by a [[Habsburg Austria]]n relief column under [[Prince Eugene of Savoy]] and [[Victor Amadeus II of Sardinia|Victor Amadeus, Duke of Savoy]] and routed at the '''Battle of the Stura'''. The siege of Turin was broken and the withdrawal of French forces from northern [[Italy]] began. Coupled with its twin disaster in [[Flanders]]&mdash;the destruction of a French army at the [[Battle of Ramillies]]&mdash;Turin marked 1706 as the ''[[annus horribilis]]'' for [[Louis XIV of France]]. ||| ||| ||| +1 Siege of Tönning ||| Great Northern War ||| During the [[Great Northern War]], the fortress of [[Tönning]] (Tønning) in the territory of [[Holstein-Gottorp]], an ally of the [[Swedish Empire]], was besieged twice: [[Denmark-Norway]] was forced to lift the first siege in 1700, but a combined force of the anti-Swedish coalition successfully besieged and took Tönning in 1713–1714. ||| ||| ||| +1 Siege of Uxellodunum ||| Gallic Wars ||| The '''Siege of Uxellodunum''' was one of the last battles of the [[Gallic Wars]]. It took place in 51 BC at [[Uxellodunum]]. It was the last major military confrontation of the Gallic Wars and marked the pacification of Gaul under Roman rule. The battle resulted in a decisive Roman victory. ||| ||| ||| +1 Siege of Valenciennes (1676–77) ||| Franco-Dutch War ||| The '''Siege of Valenciennes''' took place from November 1676 to March 1677, during the [[Franco-Dutch War]]. A French army besieged the city of [[Valenciennes]], which was then a part of the [[Spanish Netherlands]] and defended by a small army of the [[Holy Roman Empire]]. The city surrendered to the French on 17 March. It was formally ceded to France the following year in the [[Treaty of Nijmegen]], which ended the war. ||| ||| ||| +1 Siege of Varaždin Barracks ||| Battle of the Barracks ||| The '''Siege of Varaždin Barracks''', also referred to locally as '''Varaždin's Days of War''' ({{lang-hr|Varaždinski dani rata}}), was the blockade and capture of the [[Yugoslav People's Army]] (JNA) barracks and other facilities in and around the city of [[Varaždin]] during the [[Croatian War of Independence]]. The blockade began on 14 September 1991, quickly escalated into fighting, and ended on 22 September with the surrender of the JNA garrison. It was part of the [[Battle of the Barracks]]—an effort by Croatian armed forces to isolate JNA units based at barracks in Croatia, or capture the barracks to provide arms for Croatia's nascent army. ||| ||| ||| +1 Siege of Varaždin Barracks ||| Croatian War of Independence ||| The '''Siege of Varaždin Barracks''', also referred to locally as '''Varaždin's Days of War''' ({{lang-hr|Varaždinski dani rata}}), was the blockade and capture of the [[Yugoslav People's Army]] (JNA) barracks and other facilities in and around the city of [[Varaždin]] during the [[Croatian War of Independence]]. The blockade began on 14 September 1991, quickly escalated into fighting, and ended on 22 September with the surrender of the JNA garrison. It was part of the [[Battle of the Barracks]]—an effort by Croatian armed forces to isolate JNA units based at barracks in Croatia, or capture the barracks to provide arms for Croatia's nascent army. ||| ||| ||| +1 Siege of Veprik ||| Great Northern War ||| The '''Siege of Veprik''' took place on January 3 to January 17, 1709 during the [[Charles XII invasion of Russia|Swedish invasion of Russia]] in the [[Great Northern War]]. After the [[Great Frost of 1709|unusual cold winter]], many troops had died from both armies and [[Charles XII of Sweden]] decided to siege the Russian city of Veprik to put pressure on Tsar [[Peter the Great|Peter I of Russia]]. In the town there was a garrison of about 1,500 men. After the Russian commander Colonel Ferber refused to surrender, Charles XII started a bombardment of the town and later, on 17 January also an assault. After about two hours of intense fighting the Swedes pulled back, unable to capture the town. However, the Russians surrendered on the night to the 18th January and the Swedes could march in by diplomatic. The result of the capture was little, another town had fallen for the Russians but in a strategic view, not much had changed. About 400 Swedes was killed and another 600 wounded. The whole Russian garrison was either killed, captured or wounded. After several days Charles XII burnt down the town. ||| ||| ||| +1 Siege of Vicksburg ||| American Civil War ||| The '''Siege of Vicksburg''' (May 18 - July 4, 1863) was the final major military action in the [[Vicksburg Campaign]] of the [[American Civil War]]. In a series of maneuvers, [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[Ulysses S. Grant]] and his [[Army of the Tennessee]] crossed the Mississippi River and drove the [[Confederate States Army|Confederate]] [[Army of Mississippi]] led by [[Lieutenant General (CSA)|Lt. Gen.]] [[John C. Pemberton]] into the defensive lines surrounding the fortress city of [[Vicksburg, Mississippi]]. ||| ||| ||| +1 Siege of Vyborg (1710) ||| Great Northern War ||| The '''Siege of Viborg''' took place in the spring of 1710 during the [[Great Northern War]] (1700–1721), as a second attempt by the Russians to capture the fortress town of [[Vyborg|Viborg]] after a failed attempt in 1706. After the outbreak of the war, Swedish forces had fortified themselves in the port of Viborg. In order to assure safety for the newly founded city of [[Saint Petersburg]], [[Peter the Great]] ordered the Swedish fort to be secured. A first unsuccessful attempt was made in 1706. Later plans were put on hold because of other ongoing conflicts but, after the Russian success at the [[Battle of Poltava]] in June 1709, the men and resources were available to capture the town. ||| ||| ||| +1 Siege of Yorktown (1862) ||| American Civil War ||| The '''Battle of Yorktown''' or '''Siege of Yorktown''' was fought from April 5 to May 4, 1862, as part of the [[Peninsula Campaign]] of the [[American Civil War]]. Marching from [[Fort Monroe]], [[Union Army|Union]] [[Major general (United States)|Maj. Gen.]] [[George B. McClellan]]'s [[Army of the Potomac]] encountered Maj. Gen. [[John B. Magruder]]'s small [[Confederate States Army|Confederate]] force at [[Yorktown, Virginia|Yorktown]] behind the [[Warwick Line]]. McClellan suspended his march up the Peninsula toward [[Richmond, Virginia|Richmond]] and settled in for siege operations. ||| ||| ||| +1 Siege of Ypres (1678) ||| Franco-Dutch War ||| The '''Siege of Ypres''' in the [[Spanish Netherlands]] took place between March 18 and March 25, 1678, as part of the [[Franco-Dutch War]], and ended with the conquest of the city by the French. ||| ||| ||| +1 Siege of the Acropolis (1821–22) ||| Greek War of Independence ||| The '''Siege of the Acropolis''' in 1821–1822 involved the siege of the [[Acropolis of Athens]] by the Greek rebels, during the early stages of the [[Greek War of Independence]]. ||| ||| ||| +1 Siege of the International Legations ||| Boxer Rebellion ||| The '''Siege of the International Legations''' occurred during the [[Boxer Rebellion]] in the Chinese city of [[Beijing]] (Peking). Menaced by the Boxers, an anti-Christian, anti-foreign peasant movement, 900 soldiers, marines and civilians, largely from Europe, Japan, and the United States, and about 2,800 Chinese Christians took refuge in the [[Beijing Legation Quarter]]. The [[Qing Dynasty|Qing government]] took the side of the Boxers. The foreigners and Chinese Christians in the Legation Quarter survived a 55-day siege by the Qing Army and the Boxers. The siege was broken by an international military force which marched from the coast of China, defeated the Qing army, and occupied Beijing. The siege was called by the [[The Sun (New York)|New York ''Sun'']] 'the most exciting episode ever known to civilization.' ||| ||| ||| +1 Sinjar massacre ||| Northern Iraq offensive (August 2014) ||| The '''Sinjar massacre''' was the killing of 2,000 [[Yazidis|Yazidi]] men in [[Sinjar]] ({{lang-ku|شنگال}} ''Şingal'') city and [[Sinjar District]] in Iraq's [[Nineveh Governorate]] by the [[Islamic State of Iraq and the Levant]] (ISIL) in August 2014. This event started with ISIL's attacking and capturing [[Sinjar]] and neighboring towns on 3 August, during ISIL's [[Northern Iraq offensive (August 2014)|offensive in early August 2014]]. ||| ||| ||| +1 Sinking of HMS Avon ||| War of 1812 ||| The '''Sinking of HMS ''Avon''''' was a [[single ship action]] fought during the [[War of 1812]], and took place on 1 September 1814. In the battle, the ship-rigged [[sloop of war]] {{USS|Wasp|1814|6}} forced the {{sclass-|Cruizer|brig-sloop}} {{HMS|Avon|1805|6}} to surrender. The Americans could not take possession of the prize as other British brig-sloops appeared and prepared to engage. ''Avon'' sank shortly after the battle. ||| ||| ||| +1 Sinking of the Petrel ||| American Civil War ||| The '''Sinking of the ''Petrel''''' occurred in July 1861 during the [[American Civil War]]. While cruising off the coast of [[South Carolina]] the [[United States]] [[US Navy|Navy]] warship [[USS St. Lawrence (1848)|USS ''St. Lawrence'']] encountered the [[Confederate privateer]] named [[USRCS William Aiken|''Petrel'']]. The engagement ended in a [[Union (American Civil War)|Union]] victory and the surviving rebels were arrested for [[piracy]]. ||| ||| ||| +1 Six-Day War (2000) ||| Second Congo War ||| The '''Six-Day War''' ({{lang-fr|Guerre des Six Jours}}) comprised a series of armed confrontations between [[Ugandan Army|Ugandan]] and [[Rwandan Army|Rwandan forces]] around the city of [[Kisangani]] in the [[Democratic Republic of the Congo]] from 5 to 10 June 2000. The war formed part of the wider [[Second Congo War]] (1998–2003). ||| ||| ||| +1 Skirmish at Abingdon ||| American Civil War ||| In the [[American Civil War]], a '''Skirmish at Abingdon''', Virginia between [[Union Army]] and [[Confederate States Army]] forces occurred on December 15, 1864 during [[Stoneman's 1864 Raid]]. ||| ||| ||| +1 Skirmish at Ashley's Mills ||| American Civil War ||| The '''Skirmish at Ashley's Mill''', sometimes called the '''Skirmish at Ferry Landing''' was an engagement that was fought between [[Union Army]] and [[Confederate States Army]] cavalry regiments in Arkansas on September 7, 1863 during the [[American Civil War]]. Union [[Brigadier general (United States)|Brigadier General]] [[John Davidson (general)|John Davidson]] commanding the cavalry division of the Union [[Army of Arkansas]] sent the [[7th Missouri Volunteer Cavalry]] Regiment as his lead regiment to clear the [[5th Arkansas Cavalry Regiment]], under the temporary command of Major John Bull while Colonel [[Robert C. Newton]] was in temporary brigade command, from its position guarding a crossing of the [[Arkansas River]] near [[Little Rock, Arkansas]]. The Union cavalry forced the Confederates to retreat which opened the route to the east of the river, leading to the [[Battle of Bayou Fourche]] on September 10, 1863 and the capture of Little Rock by the Union Army of Arkansas under the command of [[Major general (United States)|Major General]] [[Frederick Steele]]. The Confederate regiment's casualties were 1 killed, 3 wounded and 2 captured while the Union regiment reported no casualties. ||| ||| ||| +1 Skirmish at Threkeld's Ferry ||| American Civil War ||| The '''Skirmish at Threkeld's Ferry''' was fought between [[Union Army]] and [[Confederate States Army]] cavalry detachments in Arkansas on February 5, 1863 during the [[American Civil War]]. The skirmish resulted in a Union victory. ||| ||| ||| +1 Slovak National Uprising ||| World War II ||| The '''Slovak National Uprising''' ({{lang-sk|Slovenské národné povstanie}}, abbreviated SNP) or '''1944 Uprising''' was an armed insurrection organized by the Slovak [[Resistance during World War II|resistance]] movement during [[World War II]]. It was launched on 29 August 1944 from [[Banská Bystrica]] in an attempt to resist German troops that had occupied Slovak territory and to overthrow the [[collaborationist]] government of [[Jozef Tiso]]. Although the rebel forces were defeated by [[Nazi Germany]], guerrilla warfare continued until the [[Soviet Army]], [[I Corps (Czechoslovakia)|Czechoslovak Army]] and [[Romania in World War II|Romanian Army]] liberated [[Slovakia]] in 1945. ||| ||| ||| +1 Smilkovci lake killings ||| 2012 Republic of Macedonia inter-ethnic violence ||| *[[2012 Republic of Macedonia inter-ethnic violence]] ||| See also ||| ||| +1 South German Offensive ||| World War II ||| The '''South German Offensive''' is the general name of one of the final offensives of [[World War II]] in [[Europe]]. The offensive was led by the [[US Seventh Army|Seventh]] and [[US Third Army|Third]] armies of the [[United States]] along with the [[First Army (France)|First Army]] of [[Provisional Government of the French Republic|France]]. [[Soviet Union|Soviet]] troops linked up with American forces in [[Czechoslovakia]] notably in the [[Battle of Slivice]].{{citation needed|date=June 2013}}<!-- --> The offensive was made by the [[US 6th Army Group]] to protect the [[US 12th Army Group|12th Army Group's]] right flank and to prevent a German last stand in the [[Alps]]. However German resistance was much more fierce than in the north, which slowed the 6th Army Group's progress. However, by the end of April, many German divisions surrendered without a fight to the advancing American forces to avoid the inevitable destruction. The VI Corps of the Seventh Army linked up with the [[US Fifth Army]], which fought through [[Italy]], in the Alps as the Third Army advanced into [[Austria]] and [[Czechoslovakia]], where it linked up with Soviet forces advancing from the east. Fighting continued a few days after the [[Surrender of Germany]] on 8 May, due to German forces fighting west to surrender to the Americans instead of the Soviets. ||| ||| ||| +1 South-East Asian theatre of World War II ||| Pacific War ||| The '''South-East Asian [[Theater (warfare)|Theatre]] of [[World War II]]''' was the name given to the campaigns of the '''[[Pacific War]]''' in [[Burma]], [[British Ceylon|Ceylon]], [[British India|India]], [[Thailand]], [[French Indochina|Indochina]], [[British Malaya|Malaya]] and [[Singapore]]. Purposes of the conquest of these countries included the securing of natural resources such as [[rubber]] and [[petroleum]] from the European colonies in the region. Conflict in the theatre began when the [[Empire of Japan]] invaded [[French Indochina]] in September 1940, the war went to a new level with the Raid on Pearl Harbor, and simultaneous attacks on Hong Kong, the Philippines, [[Japanese Invasion of Thailand|Thailand]], Singapore and [[Battle of Malaya|Malaya]] on 7/8 December 1941. The main landing at Singora (now [[Songkhla]]) on the east side of the [[Isthmus of Kra]] preceded the bombing of Pearl Harbor by several hours. Action in the theatre officially ended on 9 September 1945. ||| ||| ||| +1 Spanish reconquest of New Granada ||| Spanish American wars of independence ||| The '''Spanish Invasion of [[Viceroyalty of New Granada|New Granada]]''' in 1815-1816 was part of the [[Spanish American wars of independence]] in South America. Shortly after the [[Napoleonic Wars]] ended, [[Ferdinand VII of Spain|Ferdinand VII]], recently restored to the throne in Spain, decided to send military forces to retake most of northern South American colonies, which had established autonomous [[junta (Spanish American Independence)|junta]]s and independent states. The invaders, with support from loyal colonial troops, completed the reconquest of New Granada by taking Bogotá on May 6, 1816 ||| ||| ||| +1 Spanish–American War ||| Cuban War of Independence ||| The '''Spanish–American War''' ({{lang-es|Guerra hispano-estadounidense}}) was a conflict in 1898 between [[Spain under the Restoration|Spain]] and the [[United States]], the result of U.S. intervention in the [[Cuban War of Independence]]. U.S. attacks on Spain's [[Spanish East Indies|Pacific possessions]] led to involvement in the [[Philippine Revolution]] and ultimately to the [[Philippine–American War]]. Some recent historians prefer a broader title to encompass the fighting in [[Cuba]] and the [[Philippine Islands]]. ||| ||| ||| +1 Spanish–American War ||| Philippine Revolution ||| The '''Spanish–American War''' ({{lang-es|Guerra hispano-estadounidense}}) was a conflict in 1898 between [[Spain under the Restoration|Spain]] and the [[United States]], the result of U.S. intervention in the [[Cuban War of Independence]]. U.S. attacks on Spain's [[Spanish East Indies|Pacific possessions]] led to involvement in the [[Philippine Revolution]] and ultimately to the [[Philippine–American War]]. Some recent historians prefer a broader title to encompass the fighting in [[Cuba]] and the [[Philippine Islands]]. ||| ||| ||| +1 Spanish–Portuguese War (1776–77) ||| American Revolutionary War ||| The response of the Spanish King [[Charles III of Spain]] was swift. There was little fear that Portugal's old ally Great Britain would come to their aid, as it was fully occupied by the [[American Revolutionary War]]. ||| Spanish response ||| ||| +1 Spring Offensive ||| Western Front (World War I) ||| The 1918 '''Spring Offensive''' or ''''' Kaiserschlacht''''' (''Kaiser's Battle''), also known as the '''Ludendorff Offensive''', was a series of German attacks along the [[Western Front (World War I)|Western Front]] during the [[World War I|First World War]], beginning on 21 March 1918, which marked the deepest advances by either side since 1914. The Germans had realised that their only remaining chance of victory was to defeat the Allies before the overwhelming human and [[matériel]] resources of the United States could be fully deployed. They also had the temporary advantage in numbers afforded by the nearly 50 [[division (military)|divisions]] freed by the Russian surrender (the [[Treaty of Brest-Litovsk]]). ||| ||| ||| +1 St. James's Day Battle ||| Second Anglo-Dutch War ||| The naval '''St James' Day Battle''' (also known as the '''St James' Day Fight'''), the '''Battle of the [[North Foreland]]''' and the '''Battle of [[Orford Ness|Orfordness]]''') took place on 25 July 1666 &mdash; [[Saint James the Great|St James]]' day in the [[Julian calendar]] then in use in England (4 August 1666 in the Gregorian calendar), during the [[Second Anglo-Dutch War]] and was fought between fleets of [[Kingdom of England|England]], commanded jointly by [[Prince Rupert of the Rhine]] and [[George Monck]], 1st [[Duke of Albemarle]], and the [[Dutch Republic|United Provinces]] commanded by Lieutenant-Admiral [[Michiel de Ruyter]]. In the [[Netherlands]], the battle is known as the ''Two Days' Battle''. ||| ||| ||| +1 Stoneman's 1864 Raid ||| American Civil War ||| '''Stoneman's 1864 Raid''' also known as '''Stoneman's Raid into Southwest Virginia''' was an [[American Civil War]] expedition into southwest Virginia by Cavalry and Infantry regiments under Union [[Major general (United States)|Maj. Gen.]] [[George Stoneman]] designed to disrupt infrastructure beneficial to the Confederate war effort. ||| ||| ||| +1 Storming of the Bastille ||| French Revolution ||| The '''Storming of the Bastille''' ({{lang-fr|Prise de la Bastille}} {{IPA-fr|pʁiz də la bastij|}}) occurred in [[Paris]], [[France]], on the morning of 14 July 1789. The medieval [[fortress]] and prison in Paris known as the [[Bastille]] represented royal authority in the centre of Paris. The prison contained just seven inmates at the time of its storming but was a symbol of the abuse of the monarchy: its fall was the [[Flashpoint (politics)|flashpoint]] of the [[French Revolution]]. ||| ||| ||| +1 Strafing off Barber's Point ||| Attack on Pearl Harbor ||| The ''Kiho Maru'', ''Myojin Maru'', ''Shin-ei Maru'',and the ''Sumiyoshi Maru'' had set out days before the [[Attack on Pearl Harbor]]. According to one of the survivors Seiki Arakaki (1920–1987) his sampan the ''Kiho Maru'' captained by Sutematsu Kida had been at sea since December 4. On the morning of December 7th he and the crew saw columns of smoke rising from Pearl Harbor and believed “Something was happening”. When night fell, Oahu was abnormally dark from the [[Blackout (wartime)|wartime blackout]]. That night he learned of the Attack from another sampan with a radio that pulled up alongside. On December 8 the ''Kiho Maru'' set course to return to her home port of [[Kewalo Basin]] along with the three other sampans also returning to Kewalo Basin. Arakaki recalled when the four fishing boats were two miles from [[Barbers Point Light (Hawaii)|Barber's Point]], “There were four or five Army P-40s flying over us,… Each picked out a target and attacked”. Sutematsu Kida, his son Kiichi Kida, and Kiho Uyehara were killed leaving only Arakaki alive but shot in the knee. On the ''Myojin Maru'' captained by Kaichi Okada; he, Ogawa Mataichi, and Riyozo Okogi were killed off only Sannosuke Onishi (1899–1982) survived. On the other two sampans five were wounded and two were unscathed. A Coast Guard destroyer arrived and sent [[Launch (boat)|launches]] to connect the ship to the two crippled sampans and tow the boats the rest of the way to Kewalo Basin. ||| Incident ||| ||| +1 Sunda Strait campaign of January 1794 ||| French Revolutionary Wars ||| The '''Sunda Strait campaign of January 1794''' was a series of manoeuvres and naval actions fought between warships and [[privateer]]s of the [[First French Republic|French Republic]] and a squadron of vessels sent by the British [[East India Company]] to protect trade in the region, later augmented by Dutch warships. The campaign developed as French forces based on [[Mauritius|Île de France]] reacted more quickly than the British forces in the Indian Ocean to the expansion of the [[French Revolutionary Wars]] on 1 February 1793. French privateers rapidly spread along the British trade routes in the Far East, becoming concentrated around the narrow [[Sunda Strait]] between the islands of [[Java]] and [[Sumatra]] in the [[Dutch East Indies]]. These ships were soon joined by [[French Navy]] [[frigates]] and began to inflict losses on shipping in the region. The [[Royal Navy]] forces in the Indian Ocean were deployed elsewhere and so the [[East India Company]], the private enterprise that ruled much of [[British India]] in the 1790s and maintained their own fleet and navy, raised a squadron of armed merchant ships to patrol the Strait and drive off the raiders. ||| ||| ||| +1 Sventiany Offensive ||| Eastern Front (World War I) ||| The '''Sventiany Offensive''' (Now [[Švenčionys]]) was a military operation mostly undertaken by the [[10th Army (German Empire)|10th German Army]] against the [[10th Army (Russian Empire)|Russian 10th Army]] as part of the [[Eastern Front (World War I)|Eastern Front]] during [[World War I]]. On 9 September 1915 four German [[cavalry]] [[division (military)|division]]s, reinforced from 13 September by two others, filled the gap in the Russian front and deployed an attack to gain the rear of 10th Russian army. ||| ||| ||| +1 Swedish Intervention in the Winter War ||| Winter War ||| The Swedish Intervention in the Winter War was a short-lived but successful attempt by the [[Swedish Volunteer Corps (Winter War)|Swedish Volunteer Corps]], along with other [[Nordic countries|Nordic]] volunteers, to prevent a Soviet invasion of Finland during the [[Winter War]]. The volunteers only engaged in a few skirmishes on ground and in the air, the only major battles they participated in being the battles of [[Battle of Salla (1939)|Salla]] and [[Battle of Honkaniemi|Honkaniemi]]. The term 'volunteers' have often been used to describe the Nordic military support for Finland in the Winter War, although involvement by the government of Sweden has been debated over time. Nevertheless, the Swedish military sent enormous amounts of aid to Finland, including: ||| ||| ||| +1 Swedish invasion of Russia ||| Great Northern War ||| The '''invasion of Russia by [[Charles XII of Sweden]]''' was a campaign undertaken during the [[Great Northern War]] between [[Sweden]] and the allied states of [[Russia]], [[Poland]], and [[Denmark]]. The invasion began with Charles's crossing of the [[Vistula]] on 1 January 1708, and effectively ended with the Swedish defeat in the [[Battle of Poltava]] on 8 July 1709, though Charles continued to pose a military threat to Russia for several years while under the protection of the [[Ottoman Empire|Ottoman Turks]]. ||| ||| ||| +1 Tabkin Kwatto ||| Fulani War ||| '''Tabkin Kwatto''' (Hausa for Battle of Kwatto) was the first decisive battle in the [[Fulani War]]. Abdullahi Ibn Fodio and Umaru al Kammu engaged the much superior Gobir cavalry at Kwatto Lake near the Capital fort of Gobir; Alkalawa. The Fulani archers employed a square formation which they successfully defended against successive charges by the Gobir cavalry. After taking severe losses, the death of the commander of Gobir's Armoured Cavalry eventually sealed the fate of the Gobirawa. ||| ||| ||| +1 Tallinn Offensive ||| Eastern Front (World War II) ||| The '''Tallinn Offensive''' ({{lang-ru|Таллинская наступательная операция}}) was a strategic offensive by the [[Red Army]]'s [[2nd Shock Army|2nd Shock]] and [[8th Army (Soviet Union)|8th]] Armies and the [[Baltic Fleet]] against the [[Wehrmacht|German]] [[Battle of Narva (1944)#Formation of Army Detachment 'Narwa'|Army Detachment 'Narwa']] and pro-independence [[Estonia]]n units in mainland Estonia on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]] on 17–26 September 1944. Its German counterpart was the abandonment of the Estonian territory in a retreat codenamed '''Operation 'Aster'''' (German: ''Unternehmen 'Aster'''). ||| ||| ||| +1 Tallinn Offensive ||| World War II ||| The '''Tallinn Offensive''' ({{lang-ru|Таллинская наступательная операция}}) was a strategic offensive by the [[Red Army]]'s [[2nd Shock Army|2nd Shock]] and [[8th Army (Soviet Union)|8th]] Armies and the [[Baltic Fleet]] against the [[Wehrmacht|German]] [[Battle of Narva (1944)#Formation of Army Detachment 'Narwa'|Army Detachment 'Narwa']] and pro-independence [[Estonia]]n units in mainland Estonia on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]] on 17–26 September 1944. Its German counterpart was the abandonment of the Estonian territory in a retreat codenamed '''Operation 'Aster'''' (German: ''Unternehmen 'Aster'''). ||| ||| ||| +1 Tarnów rail station bomb attack ||| World War II ||| In 1939, Tarnów was a town with a population of 40,000 in southern Poland. Trains passed through the busy main rail station of Tarnów Główny, carrying thousands of travellers, including numerous soldiers reporting to their units, as the international situation worsened day by day. The routine, however, was interrupted at 11:18 p.m., when a time bomb left by a [[Germany|German]] [[sabotage|saboteur]] exploded in the luggage hall. Twenty people died and it has been argued that [[World War II]] started at that point. ||| ||| ||| +1 Task Force Baum ||| World War II ||| '''Task Force Baum''' was a [[secret]] and [[controversial]] [[World War II]] [[task force]] set up by [[U.S. Army]] general [[George S. Patton]] and commanded by [[Captain (land and air)|Capt.]] [[Abraham Baum]] in late March 1945. Baum was given the task of penetrating 50 miles (80 km) behind German lines and liberating the [[prisoner of war|POWs]] in camp [[OFLAG XIII-B]], near [[Hammelburg]]. Controversy surrounds the true reasons behind the mission, which may have been simply to liberate Patton's son-in-law, [[John K. Waters]], taken captive in [[Tunisia]] in 1943. The result of the mission was a complete failure; of the roughly 300 men of the task force, 32 were killed in action during the raid and only 35 made it back to [[Allies of World War II|Allied]]-controlled territory, with the remainder being taken prisoner. All of the 57 [[tanks]], [[jeep]]s, and other vehicles were lost. ||| ||| ||| +1 Ten Days' Campaign ||| Belgian Revolution ||| When the [[Belgian Revolution]] began in August 1830, the Dutch army suffered from extensive desertion by South-Netherlanders (Belgians), who were reluctant to serve any longer as they would have to fight their fellow countrymen. Before the war, the northern provinces (which were mainly Protestant) feared for the Catholic majority that was now present in the United Kingdom of the Netherlands. The Dutch government purposely held the Catholic Belgians back. In the army, most officers were Dutch and the bulk of the conscripted recruits came from the south. About two-thirds of the troops stationed in the Southern Netherlands deserted, and the morale of the remaining troops was severely damaged. This, together with the fact that the bulk (and often the best-trained part) of the Dutch military was stationed in its colonies, allowed the Belgian revolutionaries to quickly gain control over what is now Belgium. However, the leaders of the Belgian revolution had grown overconfident because of their early success and had not taken steps to build up a military force of their own. ||| Background ||| ||| +1 Ten-Day War ||| Yugoslav Wars ||| It marked the beginning of the [[Yugoslav Wars]]. ||| ||| ||| +1 Tenth Battle of the Isonzo ||| Italian Front (World War I) ||| The '''Tenth Battle of the Isonzo''' was an [[Italian Front (World War I)|Italian offensive]] against [[Austria-Hungary]] during [[World War I]]. ||| ||| ||| +1 The Hardest Day ||| Battle of Britain ||| '''The Hardest Day''' was the name of a [[World War II|Second World War]] air battle fought during the [[Battle of Britain]] on 18 August 1940 between the [[Germany|German]] ''[[Luftwaffe]]'' and [[United Kingdom|British]] [[Royal Air Force]] (RAF). ||| ||| ||| +1 Third Anglo-Dutch War ||| Franco-Dutch War ||| The '''Third Anglo-Dutch War''' or the '''Third English War''' (1672–1674) ({{lang-nl|Derde Engelse Oorlog}} or ''{{lang|nl|Derde Engelse Zeeoorlog}}'') was a military conflict between [[Kingdom of England|England]] and the [[Republic of the Seven United Netherlands|Dutch Republic]], part of the larger [[Franco-Dutch War]]. ||| ||| ||| +1 Third Battle of Mount Hermon ||| Yom Kippur War ||| The '''Third Battle of Mount Hermon''' was fought on the night of October 21-22, 1973, between the [[Israeli Army]] and the [[Syrian Army]] over [[Mount Hermon]], during the last days of the [[Yom Kippur War]]. [[Syria]]n troops had [[First Battle of Mount Hermon|captured]] the IDF outpost on the mountain on October 6, and held it for two weeks. In the third battle, codenamed '''Operation Dessert''' ({{lang-he|מבצע קינוח}}, ''Mivtza Kinu'ah''), Israeli troops captured the Israeli outpost and the Syrian one. {{Cite news ||| ||| ||| +1 Third Battle of Murfreesboro ||| American Civil War ||| The '''Third Battle of Murfreesboro''', also known as '''Wilkinson Pike''' or '''the Cedars''', was fought December 5–7, 1864, in [[Rutherford County, Tennessee]], as part of the [[Franklin-Nashville Campaign]] of the [[American Civil War]]. ||| ||| ||| +1 Third Battle of Seoul ||| Korean War ||| The '''Third Battle of Seoul''', also known as the '''Chinese New Year's Offensive''', the '''January–Fourth Retreat''' ({{lang-ko|1•4 후퇴}}) or the '''Third Phase Campaign Western Sector''' ({{zh|s=第三次战役西线|p=Dì Sān Cì Zhàn Yì Xī Xiàn}}), was a battle of the [[Korean War]], which took place from December 31, 1950 to January 7, 1951 around the [[South Korea]]n capital of [[Seoul]]. In the aftermath of the major Chinese victory at the [[Battle of the Ch'ongch'on River]], the [[United Nations Command (Korea)|United Nations Command]] started to contemplate the possibility of evacuation from the [[Korean Peninsula]]. Upon learning of this development, China's Chairman [[Mao Zedong]] ordered the Chinese [[People's Volunteer Army]] to cross the [[38th parallel north|38th parallel]] in an effort to pressure the United Nations forces to withdraw from South Korea. ||| ||| ||| +1 Third Battle of Winchester ||| American Civil War ||| The '''Third Battle of Winchester''' (or '''Battle of Opequon'''), was fought in [[Winchester, Virginia|Winchester]], [[Virginia]], on September 19, 1864, during the [[Valley Campaigns of 1864]] in the [[American Civil War]]. ||| ||| ||| +1 Third Siege of Gerona ||| Peninsular War ||| The '''Third Siege of Gerona''' refers to the [[France|French]] [[Grande Armée]]'s seven-month siege of [[Girona]], from 6 May to 12 December 1809, a significant event in the [[Peninsular War]]. ||| ||| ||| +1 Third Siege of Missolonghi ||| Greek War of Independence ||| The '''Third Siege of Missolonghi''' ({{lang-el|Τρίτη Πολιορκία του Μεσσολογίου}}, often erroneously referred to as the Second Siege) was fought in the [[Greek War of Independence]], between the [[Ottoman Empire]] and the [[Greece|Greek]] rebels, from 15 April 1825 to 10 April 1826. The Ottomans had already tried and failed to capture the city in 1822 and 1823, but returned in 1825 with a stronger force of infantry and a stronger navy supporting the infantry. The Greeks held out for almost a year before they attempted a mass breakout, which however resulted in a disaster, with the larger part of the Greeks slain. ||| ||| ||| +1 Third attack on Anzac Cove ||| Gallipoli Campaign ||| On 25 April, at the start of the [[Gallipoli Campaign]], the [[Australian and New Zealand Army Corps]] (ANZAC), commanded by [[Lieutenant-General]] [[William Birdwood]], Two of the central positions, Quinn's and Courtnay's Posts, had a steep cliff to the rear of the ANZAC trenches. In places the Turkish trenches were dug as close as {{convert|10|yd|spell=in}} from the Allied lines. ||| Background ||| Beachhead ||| +1 Tooreen Ambush ||| Irish War of Independence ||| The '''Tooreen Ambush''' was an [[ambush]] carried out by the [[Irish Republican Army]] (IRA) on 22 October 1920, during the [[Irish War of Independence]]. It took place near Tooreen, [[County Cork]]. ||| ||| ||| +1 Turkish–Armenian War ||| Turkish War of Independence ||| The '''Turkish–Armenian War''', known as the '''[[Eastern Front (Turkey)|Eastern Front]]''' ({{lang-tr|Doğu Cephesi}}) of the [[Turkish War of Independence]] in [[Turkey]], refers to a conflict in the autumn of 1920 between the [[First Republic of Armenia]] and the [[Turkish national movement|Turkish nationalists]], following the signing of the [[Treaty of Sèvres]]. The Turkish Army under [[Kâzım Karabekir]] defeated Armenia, and took back land which Turkey had initially lost to Armenia after World War I and from the [[Russian Empire]] in 1878. ||| ||| ||| +1 Twelfth Siege of Gibraltar ||| War of the Spanish Succession ||| The '''Twelfth Siege of Gibraltar''' was fought between September 1704 and May 1705 during the [[War of the Spanish Succession]]. It followed the [[Capture of Gibraltar|capture in August 1704]] of the fortified town of [[Gibraltar]], at the southern tip of [[Spain]], by an [[Kingdom of England|Anglo]]–[[Dutch Republic|Dutch]] naval force led by Sir [[George Rooke]] and [[Prince George of Hesse-Darmstadt]]. The members of the Grand Alliance, [[Holy Roman Empire]], England, the [[Netherlands]], [[Habsburg|Pro-Habsburg]] [[Spain]], [[Portugal]] and the [[Duchy of Savoy|Savoy]], had allied to prevent the unification of the French and Spanish thrones by supporting the claim of the [[House of Habsburg|Habsburg]] pretender [[Charles VI, Holy Roman Emperor|Archduke Charles VI of Austria]] as Charles III of Spain. They were opposed by the rival claimant, the [[House of Bourbon|Bourbon]] [[Philip V of Spain|Philip, Duke of Anjou]], ruling as Philip V of Spain, and his patron and ally, [[Louis XIV of France]]. The war began in northern Europe and was largely contained there until 1703, when Portugal joined the confederate powers. From then, English naval attentions were focused on mounting a campaign in the [[Mediterranean Sea|Mediterranean]] to distract the French navy and disrupt French and Bourbon Spanish shipping or capture a port for use as a naval base. The capture of Gibraltar was the outcome of that initial stage of the Mediterranean campaign. ||| ||| ||| +1 Tyrolean Rebellion ||| War of the Fifth Coalition ||| The '''Tyrolean Rebellion of 1809''' (German: ''Tiroler Volksaufstand'') was a rebellion of peasants in the [[County of Tyrol]] led by [[Andreas Hofer]] against the occupation of their homeland by the [[First French Empire|French]] and [[Kingdom of Bavaria|Bavarian]] troops within the context of the [[War of the Fifth Coalition]] against [[Napoleon I]]. ||| ||| ||| +1 UC Davis pepper-spray incident ||| Occupy movement ||| The '''UC Davis pepper-spray incident''' occurred on November 18, 2011, during an [[Occupy movement]] demonstration at the [[University of California, Davis]]. After asking the protesters to leave, University police [[pepper spray]]ed a group of demonstrators as they were seated on a paved path in the campus quad. The video of UC Davis police officer Lt. John Pike pepper spraying demonstrators spread around the world as a viral video and the photograph became an [[Internet meme]]. ||| ||| ||| +1 UN Offensive, 1950 ||| Korean War ||| The first '''[[United Nations]] (UN) offensive''' during the [[Korean War]] began on September 15, 1950, with the [[X Corps (United States)|U.S. X Corps]], under Army Maj. Gen. [[Edward Almond|Edward M. Almond]], making an [[battle of Inchon|amphibious assault at Inchon]], 150 miles north from the frontlines. In the south, the [[Eighth U.S. Army]], made up of U.S., ROK, and [[British Armed Forces|British forces]], counterattacked the next day. The [[1st Marine Aircraft Wing|1st Marine Air Wing]] provided [[Close air support|air support]] for the landing at [[Inchon]] while the [[Fifth Air Force]] likewise supported the [[Eighth United States Army|Eighth Army]]. On September 16, as part of a strategic bombing campaign, the FEAF bombed [[Pyongyang]], the capital of [[North Korea]], and [[Wonsan]], an east coast port 80 miles north of the [[38th parallel north|38th parallel]]. ||| ||| ||| +1 USS Constellation vs La Vengeance ||| Quasi-War ||| The '''USS ''Constellation'' vs ''La Vengeance''''', or the '''Action of 1 February 1800''', was a [[single-ship action]] fought between frigates of the [[French Navy]] and the [[United States Navy]] during the [[Quasi-War]]. The battle resulted in the American [[frigate]] [[USS Constellation (1797)|USS ''Constellation'']] severely damaging the French frigate [[HMS Vengeance (1800)|''La Vengeance'']] and forcing her to flee. ||| ||| ||| +1 USS Constitution vs HMS Guerriere ||| War of 1812 ||| The '''USS ''Constitution'' vs HMS ''Guerriere''''', was a single ship action between the two ships during the [[War of 1812]], approximately 400 miles southeast of [[Halifax (former city)|Halifax, Nova Scotia]]. It took place shortly after war had broken out, and would prove to be an important victory for [[United States|American]] morale. ||| ||| ||| +1 USS Liberty incident ||| Six-Day War ||| The '''USS ''Liberty'' incident''' was an attack on a [[United States Navy]] [[technical research ship]], {{USS|Liberty|AGTR-5|6}}, by [[Israeli Air Force]] jet [[fighter aircraft]] and [[Israeli Navy]] [[motor torpedo boat]]s, on 8 June 1967, during the [[Six-Day War]]. ||| ||| ||| +1 USS Panay incident ||| Second Sino-Japanese War ||| After [[Second Sino-Japanese War|invading China in the summer of 1937]], Japanese forces moved in on the city of [[Nanking]] (now known as Nanjing) in December. ''Panay'' evacuated the remaining Americans from the city on 11 December, bringing the number of people aboard to five officers, 54 enlisted men, four US embassy staff, and 10 civilians, including Universal News cameraman Norman Alley, Movietone News' Eric Mayell, the '' New York Times' ''s Norman Soong, ''Collier's Weekly'' correspondent Jim Marshall, ''[[La Stampa]]'' correspondent Sandro Sandri and ''[[Corriere della Sera]]'' correspondent [[Luigi Barzini, Jr.|Luigi Barzini Jr]]. ||| Incident ||| ||| +1 Ulm Campaign ||| War of the Third Coalition ||| The '''Ulm Campaign''' consisted of a series of [[First French Empire|French]] and [[Electorate of Bavaria|Bavarian]] military maneuvers and battles to outflank and capture an [[Austrian Empire|Austrian]] army in 1805 during the [[War of the Third Coalition]]. It took place in the vicinity of and inside the [[Swabia]]n (then [[Bavaria]]n) city of [[Ulm]]. The French [[La Grande Armée|Grande Armée]], led by [[Napoleon I of France|Napoleon Bonaparte]], comprised 210,000 troops organized into seven [[corps]], and hoped to knock out the Austrian army in the [[Danube]] before [[Russian Empire|Russian]] reinforcements could arrive. Through rapid marching, Napoleon conducted a large wheeling maneuver that captured an Austrian army of 23,000 under [[Karl Freiherr Mack von Leiberich|General Mack]] on October 20 at Ulm, bringing the total number of Austrian [[prisoner of war|prisoners]] in the campaign to 60,000. The campaign is generally regarded as a strategic masterpiece and was influential in the development of the [[Schlieffen Plan]] in the late 19th century. ||| ||| ||| +1 United States Air Force in Thailand ||| Vietnam War ||| The '''United States Air Force''' (USAF) deployed combat aircraft to '''Thailand''' from 1961 to 1975 during the [[Vietnam War]]. Today, USAF units train annually with other Asian Air Forces in Thailand. Royal Thai Air Force Bases are an important element in the [[The Pentagon|Pentagon]]'s 'forward positioning' strategy. ||| ||| ||| +1 United States Army Air Forces in Okinawa ||| World War II ||| Two months later, on 15 August 1945, [[surrender of Japan|Imperial Japan surrendered]] to the [[Allies of World War II|Allied]] forces, ending the war in the Pacific, and [[World War II]] came to an end. The massive air armada assembled by the USAAF for the invasion of Japan was never used in combat; it was instead partially used as an [[Occupation of Japan|occupation force]], but mostly demobilized and inactivated in 1945 and 1946. ||| Epilogue ||| ||| +1 United States Army Air Forces in the Central Pacific Area ||| World War II ||| During [[World War II]], the [[United States Army Air Forces]] engaged in combat against the [[Empire of Japan]] in the Central Pacific Area. As defined by the [[United States Department of War|War Department]], this consisted of most of the Pacific Ocean and its islands, excluding the [[Philippines]], Australia, the [[Netherlands East Indies]], the Territory of [[New Guinea]] (including the Bismarck Archipelago) the Solomon Islands and areas to the south and east of the Solomons. ||| ||| ||| +1 Uprising in Serbia (1941) ||| World War II ||| The '''Government of National Salvation''' ({{lang-sr|''Vlada narodnog spasa'', Влада народног спаса}}; {{lang-de|Regierung der nationalen Rettung}}), also referred to as the '''Nedić regime''', was the second Serbian puppet government, after the [[Commissioner Government]], established on the [[Territory of the Military Commander in Serbia|Territory of the (German) Military Commander in Serbia]]{{efn| 1= Official name of the occupied territory translated from {{lang-de|Gebiet des Militärbefehlshaber Serbiens}}{{shn| Hehn| 1971| pp=344-373}}}} during [[World War II]]. It was appointed by the German Military Commander in Serbia and operated from 29 August 1941 to October 1944. The Nedic´ regime enjoyed some support.{{sfn| MacDonald| 2002| p=142}} The Prime Minister throughout was General [[Milan Nedić]]. The Government of National Salvation was evacuated from Belgrade to [[Kitzbühel]], Austria in the first week of October 1944 before the German withdrawal from Serbia was complete. Nedić himself was captured by the Americans when they occupied Austria, and was subsequently handed over to the Yugoslav communist authorities to act as a witness against war criminals on the understanding he would be returned to American custody to face trial by the Allies. The Yugoslav authorities refused to return Nedić to American custody, and he died on 4 February 1946 after falling out the window of a Belgrade hospital, under circumstances which remain unclear. ||| Initial German response ||| Government of National Salvation ||| +1 Uprising in Serbia (1941) ||| World War II in Yugoslavia ||| * [[World War II in Yugoslavia]] ||| See also ||| ||| +1 Utah Beach ||| World War II ||| '''Utah Beach''' was the [[code name]] for one of the five sectors of the [[Allies of World War II|Allied]] invasion of [[German occupation of France during World War II|German-occupied France]] in the [[Normandy landings]] on June 6, 1944, during [[World War II]]. The westernmost of the five landing beaches, Utah is on the [[Cotentin Peninsula]], west of the mouths of the [[Douve]] and [[Vire (river)|Vire]] rivers. Amphibious landings at Utah were undertaken by [[United States Army]] troops, with sea transport and [[naval artillery|naval artillery support]] provided by the [[U.S. Navy]] and elements of the British [[Royal Navy]]. ||| ||| ||| +1 Villarreal Offensive ||| Spanish Civil War ||| The '''Villarreal Offensive''' ({{lang-es|Ofensiva de Villarreal}}) was an offensive of the [[Spanish Civil War]] which lasted from 30 November to 24 December 1936. [[Eusko Gudarostea]]'s 4,300 men fought 600 men of the insurgent forces. ||| ||| ||| +1 Vilnius Offensive ||| Operation Bagration ||| The '''Vilnius Offensive''' ({{lang-ru|Вильнюсская наступательная операция}}) occurred as part of the third phase of [[Operation Bagration]], the great summer offensive by the [[Red Army]] against the ''[[Wehrmacht]]'' in June and July, 1944. The Vilnius Offensive lasted from the 5th to the 13th of July 1944, and ended with a Soviet victory. ||| ||| ||| +1 Vistula–Oder Offensive ||| Eastern Front (World War II) ||| The '''Vistula–Oder Offensive''' was a successful [[Red Army]] operation on the [[Eastern Front (World War II)|Eastern Front]] in the European Theatre of World War II between 12 January and 2 February 1945. It saw the liberation of [[Kraków]], [[Warsaw]] and [[Poznań]]. ||| ||| ||| +1 Vitebsk–Orsha Offensive ||| Operation Bagration ||| The '''Vitebsk–Orsha Offensive''' ({{lang-ru|Витебско-Оршанская наступательная операция}}) was part of the Belorussian Strategic Offensive of the [[Red Army]] in summer 1944, commonly known as [[Operation Bagration]]. ||| ||| ||| +1 Volcano and Ryukyu Islands campaign ||| World War II ||| The '''Volcano and Ryūkyū Islands campaign''' was a series of battles and engagements between [[Allies of World War II|Allied]] forces and Imperial [[Empire of Japan|Japanese]] forces in the [[Pacific Ocean theater of World War II|Pacific Ocean campaign]] of [[World War II]] between January and June, 1945. ||| ||| ||| +1 Voćin massacre ||| Croatian War of Independence ||| The '''Voćin massacre''' was the killing of 43 civilians, mostly [[Croat]]s, by the [[Serbs|Serbian]] [[White Eagles (paramilitary)|White Eagles]] paramilitary unit in [[Voćin]], [[Croatia]] on 13 December 1991, during the [[Croatian War of Independence]]. The [[List of events named massacres|massacre]] was carried out after the unit was ordered to abandon the village before the [[Croatian Army]] (''Hrvatska vojska'' – HV) recaptured the area in [[Operation Papuk-91]]. The unit generally targeted Croats living in the village, but also killed a Serb civilian who tried to protect others. Most of the victims were killed by gunfire, but some of them were killed with axes or chainsaws, or were burned to death. The victims exhibited signs of torture and were left unburied. On the night of 13/14 December, the unit also demolished a 550-year-old church in the village using explosives. ||| ||| ||| +1 Vukovar massacre ||| Croatian War of Independence ||| The '''Vukovar massacre''', also known as the '''Vukovar hospital massacre''' or the '''Ovčara massacre''', was the killing of Croatian [[prisoners of war]] and civilians by Serb paramilitaries and the [[Yugoslav People's Army]] (JNA) at the Ovčara farm southeast of [[Vukovar]] on 20 November 1991, during the [[Croatian War of Independence]]. The massacre occurred shortly after [[Battle of Vukovar|Vukovar's capture]] by the JNA, Croatian Serb [[Territorial Defense Forces (Yugoslavia)|Territorial Defence]] (TO), and paramilitaries from neighbouring Serbia. It was the largest massacre of the war, and the worst war crime in Europe since [[World War II]] up until that time. ||| ||| ||| +1 Vyborg massacre ||| Finnish Civil War ||| The '''Vyborg massacre''' was the killing of 360–420 people in the town of [[Vyborg]] during the [[Finnish Civil War]] in April–May 1918. The massacre took place after the [[Battle of Vyborg (1918)|Battle of Vyborg]] as the [[White Guards (Finland)|White Guards]] captured the town from the [[Red Guards (Finland)|Reds]]. Most of the victims were [[Russia|Russian]] civilians, mainly men and young boys. ||| ||| ||| +1 Vyborg–Petrozavodsk Offensive ||| World War II ||| The '''Vyborg–Petrozavodsk Offensive''' or '''Karelian offensive'''{{#tag:ref|Finnish historiography uses titles ''Kesän 1944 suurhyökkäys'' (literally ''Summer 1944 Great Offensive'') or ''Kesän 1944 torjuntataistelut'' (literally ''Summer 1944 Defensive Battles'').|group='Notes'}} was a strategic operation by the [[Soviet Union|Soviet]] [[Leningrad Front|Leningrad]] and [[Karelian Front]]s against Finland on the [[Karelian Isthmus]] and [[East Karelia]] fronts of the [[Continuation War]], on the [[Eastern Front (World War II)|Eastern Front]] of [[World War II]]. The Soviet forces captured East Karelia and [[Vyborg|Viborg]].{{clarify|why is a Swedish language name given priority when the municipality was unilingually Finnish speaking?|date=January 2013}} After that, however, the fighting reached a stalemate. ||| ||| ||| +1 War in Donbass ||| 2014 pro-Russian unrest in Ukraine ||| The '''War in Donbass''' (also called the '''War in Ukraine''', '''War in Eastern Ukraine''') is an armed conflict in the [[Donbass]] region of [[Ukraine]]. From the beginning of March 2014, demonstrations by [[Russophilia|pro-Russian]] and anti-government groups took place in the [[Donetsk Oblast|Donetsk]] and [[Luhansk Oblast|Luhansk]] oblasts of Ukraine, together commonly called the 'Donbass', in the aftermath of the [[2014 Ukrainian revolution]] and the [[Euromaidan]] movement. These demonstrations, which followed the [[annexation of Crimea by the Russian Federation]], and which were part of a wider group of [[2014 pro-Russian unrest in Ukraine|concurrent pro-Russian protests across southern and eastern Ukraine]], escalated into an [[War|armed conflict]] between the [[Separatism|separatist]] forces of the self-declared [[Donetsk People's Republic|Donetsk]] and [[Luhansk People's Republic|Luhansk]] People's Republics (DPR and LPR respectively), and the [[Government of Ukraine|Ukrainian government]]. ||| ||| ||| +1 War in North-West Pakistan ||| War on Terror ||| The war depleted the country's manpower resources, and the outcomes outlined a deep effect on its national economy, since Pakistan had joined the USA-led [[War on Terror]]. ||| ||| ||| +1 War in Vietnam (1954–59) ||| Vietnam War ||| The '''1954 to 1959''' phase of the '''[[Vietnam War]]''' was the era of the two nations. Coming after the [[First Indochina War]], this period resulted in the military defeat of the [[French Fourth Republic|French]], a [[Geneva Conference (1954)|1954 Geneva meeting]] that [[partition of Vietnam|partitioned Vietnam]] into North and South, and the French [[Withdrawal of French troops from Vietnam|withdrawal from Vietnam]], leaving the [[Republic of Vietnam]] regime fighting a [[communist]] insurgency with USA aid. During this period, [[North Vietnam]] recovered from the wounds of war, rebuilt nationally, and accrued to prepare for the anticipated war. In South Vietnam, [[Ngô Đình Diệm]] consolidated power and encouraged [[anti-communism]]. This period was marked by [[U.S. support to South Vietnam before Gulf of Tonkin]], as well as communist infrastructure-building. ||| ||| ||| +1 War of Jenkins' Ear ||| War of the Austrian Succession ||| The war resulted in heavy British casualties in North America. After 1742, the war was subsumed by the wider [[War of the Austrian Succession]], which involved most of the powers of Europe. Peace arrived with the [[Treaty of Aix-la-Chapelle (1748)|Treaty of Aix-la-Chapelle]] in 1748. From the British perspective, the war was notable because it was the first time that a regiment of colonial American troops was raised and placed 'on the Establishment' – made a part of the Regular British Army – and sent to fight outside North America. ||| ||| ||| +1 War of the Camps ||| Lebanese Civil War ||| Sometimes described as being [[Muslim]] versus [[Christian]], the [[Lebanese Civil War]] was actually a multifaceted conflict in which there was nearly as much inter-factional violence between members of the same religion as there was violence between Muslims and Christians. In that respect, the conflict can be compared to the one between the [[Lebanese Forces]] (LF), a primarily Christian [[Maronite]] militia led by [[Samir Geagea]], and [[Michel Aoun]]'s Christian-controlled faction of the [[Lebanese Armed Forces]] (LAF). ||| ||| ||| +1 War of the Three Henrys ||| French Wars of Religion ||| The '''War of the Three Henrys''' (1587 -1589) was the eighth and final conflict in the series of civil wars in [[France]] known as the [[French Wars of Religion|Wars of Religion]]. It was a three-way war fought between: ||| ||| ||| +1 Waterloo Campaign, 8–15 June ||| Waterloo Campaign ||| The [[Waterloo Campaign]] started with a pre-emptive attack by the French [[Army of the North (France)|Army of the North]] under the command of [[Napoleon Bonaparte]]. The first elements of the Army of the North moved from their peace time depots on 8 June to their rendezvous point just on the French side of the Franco-Belgian border, from where they launched their pre-emptive attack on the two Coalition armies that were cantoned in Belgium—the Anglo-allied army under the command of the [[Duke of Wellington]] and a Prussian army under the command of [[Prince Blücher]]. ||| ||| ||| +1 Weixian–Guangling–Nuanquan Campaign ||| Chinese Civil War ||| The '''Weixian–Guangling–Nuanquan Campaign''' (蔚广暖战役) was a campaign fought in Wei (蔚) County and Warm Spring (Nuanquan 暖泉) of [[Chahar (province)]] and Guanling (广灵) of [[Shanxi]], and it was a clash between the [[communist]]s and the former [[Kuomintang|nationalists]] turned Japanese puppet regime force who rejoined the [[Kuomintang|nationalists]] after [[World War II]]. The battle was one of the [[Chinese Civil War]] in the immediate post [[World War II]] era, and resulted in [[Communist Party of China|communist]] victory. This campaign was part of the General Counteroffensive in [[Shanxi]]-[[Chahar (province)]]-[[Hebei]]. ||| ||| ||| +1 Western Allied invasion of Germany ||| World War II ||| The '''Western Allied invasion of Germany''' was conducted by the [[Allies of World War II|Western Allies]] in the final months of fighting in the [[European theatre of World War II|European theatre]] of [[World War II]]. The invasion started with the Western Allies crossing the [[River Rhine]] in March 1945 before fanning out and overrunning all of western Germany from the Baltic in the north to Austria in the south before the Germans surrendered on 8 May 1945. This is known as the 'Central Europe Campaign' in United States military histories. ||| ||| ||| +1 Western Desert Campaign ||| North African Campaign ||| The '''Western Desert Campaign''' or the '''Desert War''', took place in the [[Libyan Desert|Western Desert]] of Egypt and Libya and was a theatre in the [[North African Campaign]] during the [[World War II|Second World War]]. The campaign began in September 1940, with the [[Italian invasion of Egypt]]. The Italians halted to bring up supplies, and [[Operation Compass]], a British five-day raid in December 1940, led to the destruction of the Italian [[Tenth Army (Italy)|10th Army]]. [[Benito Mussolini]] sought help from Hitler and a small German blocking detachment {{lang|de|(''Sperrverband'')}} was sent to Tripoli under [[List of Adolf Hitler's directives|Directive 22]] (11 January), being the first units of the ''[[Afrika Korps]]'' (''Generalleutnant'' [[Erwin Rommel]]), under nominal Italian command but Italian dependency on [[Nazi Germany]] made it the dominant partner. ||| ||| ||| +1 Western Front (World War II) ||| World War II ||| The '''Western Front''' of the [[European theatre of World War II|European theatre]] of [[World War II]] encompassed [[Denmark]], [[Norway]], [[Luxembourg]], [[Belgium]], the [[Netherlands]], the [[United Kingdom]], [[France]], [[Italy]], and [[West Germany|Western Germany]]. World War II military engagements in Southern Europe and elsewhere are generally considered under separate headings. The Western Front was marked by two phases of large-scale combat operations. The first phase saw the capitulation of the Netherlands, Belgium and France during May and June 1940 after their defeat in the [[Low Countries]] and the northern half of France, and continued into an air war between Germany and Britain that climaxed with the [[Battle of Britain]]. The second phase consisted of large-scale ground combat, which began in June 1944 with the [[Normandy landings|Allied landings in Normandy]] and continued until the [[Victory in Europe Day|defeat of Germany]] in May 1945. ||| ||| ||| +1 Western Tai'an Campaign ||| Chinese Civil War ||| '''Western [[Tai'an]] Campaign''' was a series of battles fought between the [[Kuomintang|nationalists]] and the [[Communist Party of China|communists]] during [[Chinese Civil War]] in the post [[World War II]] era, and resulted in the [[communist]] victory. The communists also refer this campaign as '''Campaign to Move Eastward''' (东进战役), and viewed this campaign as the prelude to [[Huaihai Campaign]]. ||| ||| ||| +1 Western theater of the American Revolutionary War ||| American Revolutionary War ||| The '''Western theater of the [[American Revolutionary War]]''' (1775–1783) was the area of conflict west of the [[Appalachian Mountains]], the region which became the [[Northwest Territory]] of the United States as well as the states of [[Kentucky]], [[Tennessee]], and [[Missouri]]. The western war was fought primarily between [[North American Indians|American Indians]] with their [[Kingdom of Great Britain|British]] allies in Detroit, and American settlers south and east of the [[Ohio River]]. ||| ||| ||| +1 Yorktown campaign ||| American Revolutionary War ||| The '''Yorktown''' or '''Virginia campaign''' was a series of military maneuvers and battles during the [[American Revolutionary War]] that culminated in the decisive [[Siege of Yorktown]] in October 1781. The result of the campaign was the surrender of the [[British Army]] force of General [[Charles Cornwallis, 1st Marquess Cornwallis|Charles, Earl Cornwallis]], an event that led directly to the beginning of serious peace negotiations and the eventual end of the war. The campaign was marked by disagreements, indecision, and miscommunication on the part of British leaders, and by a remarkable set of cooperative decisions, at times in violation of orders, by the French and Americans. ||| ||| ||| +1 Ypiranga incident ||| United States occupation of Veracruz ||| The ''Ypiranga'' tried to enter the harbor at Veracruz to unload on the first day of the [[United States occupation of Veracruz|US occupation]] but was detained by US troops who were ordered by [[President of the United States]] [[Woodrow Wilson]] to enforce the arms embargo he had placed on Mexico. There was neither a declaration of war on Mexico by the United States nor a formal blockade on its ports, thus the detention of the ''Ypiranga'' was not legal and it was released. It proceeded to a port where the US military was absent, [[Puerto México]] (modern-day [[Coatzacoalcos]], Veracruz), and was able to offload its cargo to Huerta's officials. ||| ||| ||| +1 Široka Kula massacre ||| Croatian War of Independence ||| The '''Široka Kula massacre''' was the killing of 41 civilians in the village of Široka Kula near [[Gospić]], [[Croatia]] during the [[Croatian War of Independence]]. The killings began on 13 October 1991 and continued until late October. They were perpetrated by the [[Croatian Serb]] [[SAO Krajina]] police and generally targeted ethnic Croat civilians in Široka Kula. Several victims were ethnic Serbs suspected by the police of collaboration with Croatian authorities. Most of the victims' bodies were thrown into the Golubnjača Pit, a nearby [[karst cave]]. ||| ||| ||| diff --git a/openks/models/model.py b/openks/models/model.py index 0a2c9c76..3ab21727 100644 --- a/openks/models/model.py +++ b/openks/models/model.py @@ -294,6 +294,85 @@ def save_model(self, *args): def run(self, *args): return NotImplemented +class Causality_ExtractionModel(OpenKSModel): + ''' Base class for relation extraction trainer ''' + def __init__(self, name: str = 'model-name', args: List = None): + self.name = name + + def data_reader(self, *args): + return NotImplemented + + def evaluate(self, *args): + return NotImplemented + + def load_model(self, *args): + return NotImplemented + + def save_model(self, *args): + return NotImplemented + + def run(self, *args): + return NotImplemented + +class Event_ExtractionModel(OpenKSModel): + ''' Base class for relation extraction trainer ''' + def __init__(self, name: str = 'model-name', args: List = None): + self.name = name + + def data_reader(self, *args): + return NotImplemented + + def evaluate(self, *args): + return NotImplemented + + def load_model(self, *args): + return NotImplemented + + def save_model(self, *args): + return NotImplemented + + def run(self, *args): + return NotImplemented + +class Sequence_ExtractionModel(OpenKSModel): + ''' Base class for Sequence ExtractionModel trainer ''' + def __init__(self, name: str = 'model-name', args: List = None): + self.name = name + + def data_reader(self, *args): + return NotImplemented + + def evaluate(self, *args): + return NotImplemented + + def load_model(self, *args): + return NotImplemented + + def save_model(self, *args): + return NotImplemented + + def run(self, *args): + return NotImplemented + +class Subevent_Recognization(OpenKSModel): + ''' Base class for relation extraction trainer ''' + def __init__(self, name: str = 'model-name', args: List = None): + self.name = name + + def data_reader(self, *args): + return NotImplemented + + def evaluate(self, *args): + return NotImplemented + + def load_model(self, *args): + return NotImplemented + + def save_model(self, *args): + return NotImplemented + + def run(self, *args): + return NotImplemented class HypernymDiscoveryModel(OpenKSModel): def __init__(self): diff --git a/openks/models/paddle/causality_extraction.py b/openks/models/paddle/causality_extraction.py index 0912c10f..a7370c8e 100644 --- a/openks/models/paddle/causality_extraction.py +++ b/openks/models/paddle/causality_extraction.py @@ -487,7 +487,7 @@ def do_predict(args): class Causality_ExtractionPaddle(Causality_ExtractionModel): '''Base class for event extract trainer''' - def __init__(self, args, name: str = 'Event_ExtractionModel'): + def __init__(self, args, name: str = 'Causality_ExtractionModel'): self.name = name self.args = args diff --git a/openks/models/paddle/sequence_extraction.py b/openks/models/paddle/sequence_extraction.py new file mode 100644 index 00000000..1ac2796d --- /dev/null +++ b/openks/models/paddle/sequence_extraction.py @@ -0,0 +1,452 @@ +# -*-coding:utf-8-*- + +import os +import re +import json +import warnings +import random +from functools import partial +from tqdm import tqdm, trange + +import numpy as np +import paddle +import paddle.nn as nn +import paddle.nn.functional as F +from paddlenlp.data import Stack, Tuple, Pad +from paddlenlp.transformers import ErnieTokenizer, ErnieForSequenceClassification +from paddlenlp.metrics import AccuracyAndF1 +# from utils import read_by_lines, write_by_lines, load_dict + +import ast +import argparse + +warnings.filterwarnings('ignore') + + +# yapf: enable. +class InputExample(object): + def __init__(self, guid, e1, e2, sentence, label=None): + ''' + a single training/test example for sequence pair classification + :param guid:string, event pairs for feature sequence truncate processing + :param e1:string, The untokenized text of the first event + :param e2:string, The untokenized text of the second event + :param (Optional)label:string. The label of the example. + ''' + self.guid = guid + self.e1 = e1 + self.e2 = e2 + self.sentence = sentence + self.label = label + + +class PredInputExample(object): + def __init__(self, guid, e1, e2, sentence, label=None): + ''' + a single training/test example for sequence pair classification + :param guid:string, event pairs for feature sequence truncate processing + :param e1:string, The untokenized text of the first event + :param e2:string, The untokenized text of the second event + :param (Optional)label:string. The label of the example. + ''' + self.guid = guid + self.e1 = e1 + self.e2 = e2 + self.sentence = sentence + + +class SREsProcessor(object): + ''' + processor for SeRI data set + ''' + + def get_train_examples(self, data_path): + return self._create_examples( + self.read_dat(data_path), 'train') + + def get_dev_examples(self, data_path): + return self._create_examples( + self.read_dat(data_path), 'dev') + + def get_test_examples(self, data_path): + return self._create_examples( + self.read_dat(data_path), 'test') + + def get_pred_examples(self, data_path): + return self._create_pred_examples( + self.read_dat(os.path.join(data_path)), 'test') + + def get_labels(self): + ''' + SUB:1,SUP:-1,None:0 + :return: + ''' + return {'SUB': 0, 'SUP': 2, 'None': 1} + # return ['-1','0','1'] + + def read_dat(self, input_file): + ''' + 样本中包含重复样本 + :param input_file: + :return: + ''' + lines = [] + with open(input_file, 'r') as f: + for line in f.readlines(): + if line.strip(): + lines.append(line) + li = list(set(lines)) + li.sort() + return li + + def _create_examples(self, lines, set_type): + examples = [] + for (i, line) in enumerate(tqdm(lines)): + label, other = line.strip().split('\t', maxsplit=1) + # -1~1变为1-2方便计算l + label = int(label) + 1 + other = [i.strip() for i in other.strip().split('|||')] + e1 = other[0] + guid = "%s-%s" % (set_type, i) + # same process with ge's feature + other[2] = re.sub('[\\[\\]]+', ' ', other[2]) # filter [ ] + other[2] = re.sub('(\\\'){3}', '', other[2]) # filter '''(\'\'\') + other[2] = re.sub('\\|{1}', ' ', other[2]) # filter | + other[1] = ' '.join(other[1].strip().split()) # 数据中包含多个空格分句错误 + other[2] = ' '.join(other[2].strip().split()) + # other[2]中包含多句,只提取包含e2_mention的一个子句 + sents_temp = re.split('(?i)(?<=[.?!])(? max_seq_len - 3: + if len(e1_e2_id) > (max_seq_len - 3) and len(sentence_id) > (max_seq_len - 3): + e1_e2_id = e1_e2_id[0:max_seq_len / 3] + sentence_id = sentence_id[0:max_seq_len - 3 - max_seq_len / 4] + elif len(sentence_id) > len(e1_e2_id): + sentence_id = sentence_id[0:max_seq_len - len(e1_e2_id) - 3] + elif len(sentence_id) < len(e1_e2_id): + e1_e2_id = e1_e2_id[0:max_seq_len - len(e1_e2_id) - 3] + + input_ids = tokenizer.build_inputs_with_special_tokens(e1_e2_id, sentence_id) + token_type_ids = tokenizer.create_token_type_ids_from_sequences(e1_e2_id, sentence_id) + seq_len = e1_input['seq_len'] + e2_input['seq_len'] + sentence_input['seq_len'] + 4 + + if is_test: + return input_ids, token_type_ids, seq_len + elif label_vocab is not None: + return input_ids, token_type_ids, seq_len, label + + +def predict_data_dealer(path): + process = SREsProcessor + pred_example = process.get_pred_examples(path) + return pred_example + + +def pred2formot(pred, sent): + temp_list = [] + temp = [None, -1, -1, None] + for id, item in enumerate(pred): + if item[0] != 'I' and temp[0] is not None: + temp[3] = "".join(sent[int(temp[1]):int(temp[2])]) + temp_list.append(temp) + temp = [None, -1, -1, None] + if item[0] == 'B': + temp[0] = item[2:] + temp[1] = id + temp[2] = id + 1 + elif item[0] == 'I' and item[2:] == temp[0]: + temp[2] = id + 1 + return temp_list + + +class SubEventRecognization(paddle.io.Dataset): + """DuEventExtraction""" + + def __init__(self, data_path, data_type): + process = SREsProcessor() + relation_dict = process.get_labels() + self.label_vocab = relation_dict + if data_type == 'train': + examples = process.get_train_examples(data_path) + elif data_type == 'test': + examples = process.get_test_examples(data_path) + + self.e1_list = [] + self.e2_list = [] + self.sentence_list = [] + self.label_ids = [] + for example in examples: + e1, e2, sentence, label = example.e1, example.e2, example.sentence, example.label, + self.e1_list.append(e1.lower()) + self.e2_list.append(e2.lower()) + self.sentence_list.append(sentence.lower()) + self.label_ids.append(label) + + self.label_num = len(self.label_vocab) + + def __len__(self): + return len(self.e1_list) + + def __getitem__(self, index): + return self.e1_list[index], self.e2_list[index], self.sentence_list[index], self.label_ids[index] + + +def do_train(args): + random.seed(args.seed) + np.random.seed(args.seed) + paddle.seed(args.seed) + + os.makedirs(args.checkpoints, exist_ok=True) + paddle.set_device(args.device) + world_size = paddle.distributed.get_world_size() + rank = paddle.distributed.get_rank() + if world_size > 1: + paddle.distributed.init_parallel_env() + + train_dataset = SubEventRecognization(args.train_data_path, data_type='train') + test_dataset = SubEventRecognization(args.test_data_path, data_type='test') + + tokenizer = ErnieTokenizer.from_pretrained("ernie-1.0") + causality_dict = SREsProcessor().get_labels() + label_map = causality_dict + + model = ErnieForSequenceClassification.from_pretrained("ernie-1.0", num_classes=len(label_map)) + model = paddle.DataParallel(model) + + print("============start train==========") + + trans_func = partial( + convert_example_to_feature, + tokenizer=tokenizer, + label_vocab=train_dataset.label_vocab, + max_seq_len=args.max_seq_len, + is_test=False) + + batchify_fn = lambda samples, fn=Tuple( + Pad(axis=0, pad_val=tokenizer.vocab[tokenizer.pad_token], dtype='int32'), # input ids + Pad(axis=0, pad_val=tokenizer.vocab[tokenizer.pad_token], dtype='int32'), # token type ids + Stack(dtype='int32'), # sequence lens + Stack(dtype='int64') # labels + ): fn(list(map(trans_func, samples))) + + batch_sampler = paddle.io.DistributedBatchSampler(train_dataset, batch_size=args.batch_size, shuffle=True) + # batch_sampler = paddle.io.BatchSampler(train_dataset, batch_size=args.batch_size, shuffle=True) + + train_loader = paddle.io.DataLoader( + dataset=train_dataset, + batch_sampler=batch_sampler, + collate_fn=batchify_fn) + + test_loader = paddle.io.DataLoader( + dataset=test_dataset, + batch_size=args.batch_size, + collate_fn=batchify_fn) + + num_training_steps = len(train_loader) * args.num_epoch + + print("_a_") + # Generate parameter names needed to perform weight decay. + # All bias and LayerNorm parameters are excluded. + decay_params = [ + p.name for n, p in model.named_parameters() + if not any(nd in n for nd in ["bias", "norm"]) + ] + optimizer = paddle.optimizer.AdamW( + learning_rate=args.learning_rate, + parameters=model.parameters(), + weight_decay=args.weight_decay, + apply_decay_param_fun=lambda x: x in decay_params) + + metric = AccuracyAndF1() + criterion = paddle.nn.loss.CrossEntropyLoss() + + step, best_f1 = 0, 0.0 + model.train() + + for epoch in trange(args.num_epoch): + print("__1__") + for idx, (input_ids, token_type_ids, seq_lens, labels) in enumerate(train_loader): + logits = model(input_ids, token_type_ids) + loss = paddle.mean(criterion(logits, labels)) + loss.backward() + optimizer.step() + optimizer.clear_grad() + loss_item = loss.numpy().item() + if step > 0 and step % args.skip_step == 0 and rank == 0: + print(f'train epoch: {epoch} - step: {step} (total: {num_training_steps}) - loss: {loss_item:.6f}') + if step > 0 and step % args.valid_step == 0 and rank == 0: + metric_data, avg_loss = evaluate(model, criterion, metric, len(label_map), test_loader) + acc, p, r, f1, _ = metric_data + print(f'dev step: {step} - loss: {avg_loss:.5f}, precision: {p:.5f}, recall: {r:.5f}, ' \ + f'f1: {f1:.5f} current best {best_f1:.5f}') + if f1 > best_f1: + best_f1 = f1 + print(f'==============================================save best model ' \ + f'best performerence {best_f1:5f}') + paddle.save(model.state_dict(), '{}/best.pdparams'.format(args.checkpoints)) + step += 1 + + # save the final model + if rank == 0: + paddle.save(model.state_dict(), '{}/final.pdparams'.format(args.checkpoints)) + + +def do_predict(args): + paddle.set_device(args.device) + tokenizer = ErnieTokenizer.from_pretrained("ernie-1.0") + process = SREsProcessor() + relation_dict = process.get_labels() + label_map = relation_dict + pretrained_model_path = os.path.join(args.init_ckpt, "best.pdparams") + + model = ErnieForSequenceClassification.from_pretrained("ernie-1.0", num_classes=len(label_map)) + id2label = {val: key for key, val in label_map.items()} + + print("============model loading==========") + if not pretrained_model_path or not os.path.isfile(pretrained_model_path): + raise Exception("init checkpoints {} not exist".format(pretrained_model_path)) + else: + state_dict = paddle.load(pretrained_model_path) + model.set_dict(state_dict) + print("Loaded parameters from %s" % pretrained_model_path) + + # load data from predict file + sentences = predict_data_dealer(args.predict_data) + encoded_inputs_list = [] + for sent in sentences: + e1, e2, sentence = sent.e1, sent.e2, sent.sentence + input_ids, token_type_ids, seq_len = convert_example_to_feature([e1, e2, sent.sentence, []], tokenizer, + max_seq_len=args.max_seq_len, is_test=True) + encoded_inputs_list.append((input_ids, token_type_ids, seq_len)) + + batchify_fn = lambda samples, fn=Tuple( + Pad(axis=0, pad_val=tokenizer.vocab[tokenizer.pad_token], dtype='int32'), # input_ids + Pad(axis=0, pad_val=tokenizer.vocab[tokenizer.pad_token], dtype='int32'), # token_type_ids + Stack(dtype='int64') # sequence lens + ): fn(samples) + # Seperates data into some batches. + batch_encoded_inputs = [encoded_inputs_list[i: i + args.batch_size] + for i in range(0, len(encoded_inputs_list), args.batch_size)] + + batch_sentence = [sentences[i: i + args.batch_size] + for i in range(0, len(encoded_inputs_list), args.batch_size)] + results = [] + print("============start predict==========") + model.eval() + for batch, sentence_batch in zip(batch_encoded_inputs, batch_sentence): + input_ids, token_type_ids, seq_lens = batchify_fn(batch) + input_ids = paddle.to_tensor(input_ids) + token_type_ids = paddle.to_tensor(token_type_ids) + logits = model(input_ids, token_type_ids) + probs_ids = paddle.argmax(logits, -1).numpy() + probs = probs.numpy() + for item, sentence in probs, sentence_batch: + results.append( + {"label": id2label(item), "e1:": sentence.e1, "e2:": sentence.e2, "sentence:": sentence.sentence}) + + with open(args.predict_save_path, 'w') as pred_ouput_file: + for item in results: + pred_ouput_file.write(json.dumps(item) + '\n') + + +@Sequence_ExtractionModel.register("Sequence_Extraction","Paddle") +class SubEvent_ExtractionPaddle(Sequence_ExtractionModel): + '''Base class for event extract trainer''' + def __init__(self, args, name: str = 'Sequence_ExtractionModel'): + self.name = name + self.args = args + + def run(self): + do_train(self.args) + + def pred(self): + do_predict(self.args) \ No newline at end of file diff --git a/requirements_rest.txt b/requirements_rest.txt new file mode 100644 index 00000000..4544e2c7 --- /dev/null +++ b/requirements_rest.txt @@ -0,0 +1,10 @@ +pyOpenSSL==19.1.0 +ray==1.0.0 +scikit-learn==0.24.0 +scipy==1.3.1 +tensorboard==1.14.0 +tensorboard-plugin-wit==1.7.0 +tensorflow==2.5.2 +tensorflow-estimator==1.14.0 +torch==1.7.1 +torchvision==0.8.2 \ No newline at end of file diff --git a/venv/Lib/site-packages/_distutils_hack/__init__.py b/venv/Lib/site-packages/_distutils_hack/__init__.py new file mode 100644 index 00000000..f7074162 --- /dev/null +++ b/venv/Lib/site-packages/_distutils_hack/__init__.py @@ -0,0 +1,132 @@ +import sys +import os +import re +import importlib +import warnings + + +is_pypy = '__pypy__' in sys.builtin_module_names + + +warnings.filterwarnings('ignore', + r'.+ distutils\b.+ deprecated', + DeprecationWarning) + + +def warn_distutils_present(): + if 'distutils' not in sys.modules: + return + if is_pypy and sys.version_info < (3, 7): + # PyPy for 3.6 unconditionally imports distutils, so bypass the warning + # https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250 + return + warnings.warn( + "Distutils was imported before Setuptools, but importing Setuptools " + "also replaces the `distutils` module in `sys.modules`. This may lead " + "to undesirable behaviors or errors. To avoid these issues, avoid " + "using distutils directly, ensure that setuptools is installed in the " + "traditional way (e.g. not an editable install), and/or make sure " + "that setuptools is always imported before distutils.") + + +def clear_distutils(): + if 'distutils' not in sys.modules: + return + warnings.warn("Setuptools is replacing distutils.") + mods = [name for name in sys.modules if re.match(r'distutils\b', name)] + for name in mods: + del sys.modules[name] + + +def enabled(): + """ + Allow selection of distutils by environment variable. + """ + which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib') + return which == 'local' + + +def ensure_local_distutils(): + clear_distutils() + + # With the DistutilsMetaFinder in place, + # perform an import to cause distutils to be + # loaded from setuptools._distutils. Ref #2906. + add_shim() + importlib.import_module('distutils') + remove_shim() + + # check that submodules load as expected + core = importlib.import_module('distutils.core') + assert '_distutils' in core.__file__, core.__file__ + + +def do_override(): + """ + Ensure that the local copy of distutils is preferred over stdlib. + + See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401 + for more motivation. + """ + if enabled(): + warn_distutils_present() + ensure_local_distutils() + + +class DistutilsMetaFinder: + def find_spec(self, fullname, path, target=None): + if path is not None: + return + + method_name = 'spec_for_{fullname}'.format(**locals()) + method = getattr(self, method_name, lambda: None) + return method() + + def spec_for_distutils(self): + import importlib.abc + import importlib.util + + class DistutilsLoader(importlib.abc.Loader): + + def create_module(self, spec): + return importlib.import_module('setuptools._distutils') + + def exec_module(self, module): + pass + + return importlib.util.spec_from_loader('distutils', DistutilsLoader()) + + def spec_for_pip(self): + """ + Ensure stdlib distutils when running under pip. + See pypa/pip#8761 for rationale. + """ + if self.pip_imported_during_build(): + return + clear_distutils() + self.spec_for_distutils = lambda: None + + @staticmethod + def pip_imported_during_build(): + """ + Detect if pip is being imported in a build script. Ref #2355. + """ + import traceback + return any( + frame.f_globals['__file__'].endswith('setup.py') + for frame, line in traceback.walk_stack(None) + ) + + +DISTUTILS_FINDER = DistutilsMetaFinder() + + +def add_shim(): + sys.meta_path.insert(0, DISTUTILS_FINDER) + + +def remove_shim(): + try: + sys.meta_path.remove(DISTUTILS_FINDER) + except ValueError: + pass diff --git a/venv/Lib/site-packages/_distutils_hack/override.py b/venv/Lib/site-packages/_distutils_hack/override.py new file mode 100644 index 00000000..2cc433a4 --- /dev/null +++ b/venv/Lib/site-packages/_distutils_hack/override.py @@ -0,0 +1 @@ +__import__('_distutils_hack').do_override() diff --git a/venv/Lib/site-packages/easy_install.py b/venv/Lib/site-packages/easy_install.py new file mode 100644 index 00000000..d87e9840 --- /dev/null +++ b/venv/Lib/site-packages/easy_install.py @@ -0,0 +1,5 @@ +"""Run the EasyInstall command""" + +if __name__ == '__main__': + from setuptools.command.easy_install import main + main() diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/INSTALLER b/venv/Lib/site-packages/pip-21.3.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/LICENSE.txt b/venv/Lib/site-packages/pip-21.3.1.dist-info/LICENSE.txt new file mode 100644 index 00000000..00addc27 --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2008-2021 The pip developers (see AUTHORS.txt file) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/METADATA b/venv/Lib/site-packages/pip-21.3.1.dist-info/METADATA new file mode 100644 index 00000000..9d031eda --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/METADATA @@ -0,0 +1,93 @@ +Metadata-Version: 2.1 +Name: pip +Version: 21.3.1 +Summary: The PyPA recommended tool for installing Python packages. +Home-page: https://pip.pypa.io/ +Author: The pip developers +Author-email: distutils-sig@python.org +License: MIT +Project-URL: Documentation, https://pip.pypa.io +Project-URL: Source, https://github.com/pypa/pip +Project-URL: Changelog, https://pip.pypa.io/en/stable/news/ +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Topic :: Software Development :: Build Tools +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=3.6 +License-File: LICENSE.txt + +pip - The Python Package Installer +================================== + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.org/project/pip/ + +.. image:: https://readthedocs.org/projects/pip/badge/?version=latest + :target: https://pip.pypa.io/en/latest + +pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes. + +Please take a look at our documentation for how to install and use pip: + +* `Installation`_ +* `Usage`_ + +We release updates regularly, with a new version every 3 months. Find more details in our documentation: + +* `Release notes`_ +* `Release process`_ + +In pip 20.3, we've `made a big improvement to the heart of pip`_; `learn more`_. We want your input, so `sign up for our user experience research studies`_ to help us do it right. + +**Note**: pip 21.0, in January 2021, removed Python 2 support, per pip's `Python 2 support policy`_. Please migrate to Python 3. + +If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms: + +* `Issue tracking`_ +* `Discourse channel`_ +* `User IRC`_ + +If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms: + +* `GitHub page`_ +* `Development documentation`_ +* `Development mailing list`_ +* `Development IRC`_ + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_. + +.. _package installer: https://packaging.python.org/guides/tool-recommendations/ +.. _Python Package Index: https://pypi.org +.. _Installation: https://pip.pypa.io/en/stable/installation/ +.. _Usage: https://pip.pypa.io/en/stable/ +.. _Release notes: https://pip.pypa.io/en/stable/news.html +.. _Release process: https://pip.pypa.io/en/latest/development/release-process/ +.. _GitHub page: https://github.com/pypa/pip +.. _Development documentation: https://pip.pypa.io/en/latest/development +.. _made a big improvement to the heart of pip: https://pyfound.blogspot.com/2020/11/pip-20-3-new-resolver.html +.. _learn more: https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-3-2020 +.. _sign up for our user experience research studies: https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html +.. _Python 2 support policy: https://pip.pypa.io/en/latest/development/release-process/#python-2-support +.. _Issue tracking: https://github.com/pypa/pip/issues +.. _Discourse channel: https://discuss.python.org/c/packaging +.. _Development mailing list: https://mail.python.org/mailman3/lists/distutils-sig.python.org/ +.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa +.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev +.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md + + diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/RECORD b/venv/Lib/site-packages/pip-21.3.1.dist-info/RECORD new file mode 100644 index 00000000..5c796548 --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/RECORD @@ -0,0 +1,818 @@ +../../Scripts/pip.exe,sha256=ONx8teK7gUq5FdeKexi3z_s7NN1ztvioQoWytCoZg8M,106370 +../../Scripts/pip3.6.exe,sha256=ONx8teK7gUq5FdeKexi3z_s7NN1ztvioQoWytCoZg8M,106370 +../../Scripts/pip3.exe,sha256=ONx8teK7gUq5FdeKexi3z_s7NN1ztvioQoWytCoZg8M,106370 +pip-21.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-21.3.1.dist-info/LICENSE.txt,sha256=I6c2HCsVgQKLxiO52ivSSZeryqR4Gs5q1ESjeUT42uE,1090 +pip-21.3.1.dist-info/METADATA,sha256=PjWcvFEqJd4gOfiQam8il34_wPNKxf8ubyYI2wYm7tc,4216 +pip-21.3.1.dist-info/RECORD,, +pip-21.3.1.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92 +pip-21.3.1.dist-info/entry_points.txt,sha256=5ExSa1s54zSPNA_1epJn5SX06786S8k5YHwskMvVYzw,125 +pip-21.3.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/__init__.py,sha256=798yhPIf6eMHi7R5Ogb3BJ5ALJ0Id8IwEuOSU2DFlp0,357 +pip/__main__.py,sha256=mXwWDftNLMKfwVqKFWGE_uuBZvGSIiUELhLkeysIuZc,1198 +pip/__pycache__/__init__.cpython-36.pyc,, +pip/__pycache__/__main__.cpython-36.pyc,, +pip/_internal/__init__.py,sha256=nnFCuxrPMgALrIDxSoy-H6Zj4W4UY60D-uL1aJyq0pc,573 +pip/_internal/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/__pycache__/build_env.cpython-36.pyc,, +pip/_internal/__pycache__/cache.cpython-36.pyc,, +pip/_internal/__pycache__/configuration.cpython-36.pyc,, +pip/_internal/__pycache__/exceptions.cpython-36.pyc,, +pip/_internal/__pycache__/main.cpython-36.pyc,, +pip/_internal/__pycache__/pyproject.cpython-36.pyc,, +pip/_internal/__pycache__/self_outdated_check.cpython-36.pyc,, +pip/_internal/__pycache__/wheel_builder.cpython-36.pyc,, +pip/_internal/build_env.py,sha256=uIg4HJDgZK542FXVTl3jkPDNbklNgb8Rj6DeZef_oS8,9950 +pip/_internal/cache.py,sha256=71eaYwrls34HJ6gzbmmYiotiKhPNFTM_tqYJXD5nf3s,9441 +pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 +pip/_internal/cli/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/cli/__pycache__/autocompletion.cpython-36.pyc,, +pip/_internal/cli/__pycache__/base_command.cpython-36.pyc,, +pip/_internal/cli/__pycache__/cmdoptions.cpython-36.pyc,, +pip/_internal/cli/__pycache__/command_context.cpython-36.pyc,, +pip/_internal/cli/__pycache__/main.cpython-36.pyc,, +pip/_internal/cli/__pycache__/main_parser.cpython-36.pyc,, +pip/_internal/cli/__pycache__/parser.cpython-36.pyc,, +pip/_internal/cli/__pycache__/progress_bars.cpython-36.pyc,, +pip/_internal/cli/__pycache__/req_command.cpython-36.pyc,, +pip/_internal/cli/__pycache__/spinners.cpython-36.pyc,, +pip/_internal/cli/__pycache__/status_codes.cpython-36.pyc,, +pip/_internal/cli/autocompletion.py,sha256=NK5yqe49SgExZOCFVEUT5Bf0QV2CuITGK27WSo2MWg8,6399 +pip/_internal/cli/base_command.py,sha256=oFuvjLsYE17V67L1dHeTo-YePZN97RKpOuGEXwCKwLc,7790 +pip/_internal/cli/cmdoptions.py,sha256=o6hueHSc3VWZ-_do9eeoZKEaxqh18zlXKAzVZ00Kg-o,28391 +pip/_internal/cli/command_context.py,sha256=a1pBBvvGLDiZ1Kw64_4tT6HmRTwYDoYy8JFgG5Czn7s,760 +pip/_internal/cli/main.py,sha256=ioJ8IVlb2K1qLOxR-tXkee9lURhYV89CDM71MKag7YY,2472 +pip/_internal/cli/main_parser.py,sha256=Q9TnytfuC5Z2JSjBFWVGtEdYLFy7rukNIb04movHdAo,2614 +pip/_internal/cli/parser.py,sha256=CDXTuFr2UD8ozOlZYf1KDziQdo9-X_IaYOiUcyJQwrA,10788 +pip/_internal/cli/progress_bars.py,sha256=ha8wowclY8_PaoM0cz4G6qK37zjnzuxQ-ydOtzx4EMI,8300 +pip/_internal/cli/req_command.py,sha256=La6J8YonTxoPtJ8HMPN4RTKyzg0VS_R4vxfVf_HmFZw,17097 +pip/_internal/cli/spinners.py,sha256=TFhjxtOnLeNJ5YmRvQm4eKPgPbJNkZiqO8jOXuxRaYU,5076 +pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116 +pip/_internal/commands/__init__.py,sha256=Vc1HjsLEtyCh7506OozPHPKXe2Hk-z9cFkFF3BMj1lM,3736 +pip/_internal/commands/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/commands/__pycache__/cache.cpython-36.pyc,, +pip/_internal/commands/__pycache__/check.cpython-36.pyc,, +pip/_internal/commands/__pycache__/completion.cpython-36.pyc,, +pip/_internal/commands/__pycache__/configuration.cpython-36.pyc,, +pip/_internal/commands/__pycache__/debug.cpython-36.pyc,, +pip/_internal/commands/__pycache__/download.cpython-36.pyc,, +pip/_internal/commands/__pycache__/freeze.cpython-36.pyc,, +pip/_internal/commands/__pycache__/hash.cpython-36.pyc,, +pip/_internal/commands/__pycache__/help.cpython-36.pyc,, +pip/_internal/commands/__pycache__/index.cpython-36.pyc,, +pip/_internal/commands/__pycache__/install.cpython-36.pyc,, +pip/_internal/commands/__pycache__/list.cpython-36.pyc,, +pip/_internal/commands/__pycache__/search.cpython-36.pyc,, +pip/_internal/commands/__pycache__/show.cpython-36.pyc,, +pip/_internal/commands/__pycache__/uninstall.cpython-36.pyc,, +pip/_internal/commands/__pycache__/wheel.cpython-36.pyc,, +pip/_internal/commands/cache.py,sha256=p9gvc6W_xgxE2zO0o8NXqO1gGJEinEK42qEC-a7Cnuk,7524 +pip/_internal/commands/check.py,sha256=0gjXR7j36xJT5cs2heYU_dfOfpnFfzX8OoPNNoKhqdM,1685 +pip/_internal/commands/completion.py,sha256=kTG_I1VR3N5kGC4Ma9pQTSoY9Q1URCrNyseHSQ-rCL4,2958 +pip/_internal/commands/configuration.py,sha256=arE8vLstjBg-Ar1krXF-bBmT1qBtnL7Fpk-NVh38a0U,8944 +pip/_internal/commands/debug.py,sha256=krET-y45CnQzXwKR1qA3M_tJE4LE2vnQtm3yfGyDSnE,6629 +pip/_internal/commands/download.py,sha256=p4lmYDgawRrwDFUpde_-1Gld45FnsMNHUFtOWFUCcSE,4904 +pip/_internal/commands/freeze.py,sha256=gCjoD6foBZPBAAYx5t8zZLkJhsF_ZRtnb3dPuD7beO8,2951 +pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703 +pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132 +pip/_internal/commands/index.py,sha256=1VVXXj5MsI2qH-N7uniQQyVkg-KCn_RdjiyiUmkUS5U,4762 +pip/_internal/commands/install.py,sha256=HTWdTb72Bcrm2tA_d55_hX6yQbchnr_XRdA2Xs8uApU,27851 +pip/_internal/commands/list.py,sha256=SnCh19e5zQKonNP7j25c_xru0Wm7wWWF8j49f-Dy9Bw,12203 +pip/_internal/commands/search.py,sha256=sbBZiARRc050QquOKcCvOr2K3XLsoYebLKZGRi__iUI,5697 +pip/_internal/commands/show.py,sha256=OREbPHF6UzvQiGLC1UIjG52Kc_jYDgcXZMYzgKXMbBI,8064 +pip/_internal/commands/uninstall.py,sha256=DNTYAGJNljMO_YYBxrpcwj0FEl7lo_P55_98O6g2TNk,3526 +pip/_internal/commands/wheel.py,sha256=xGSwLPYUM7jP_McD-wnM4D3zsP0n-NSkHFp4d0mAWIg,6168 +pip/_internal/configuration.py,sha256=dKHBEl8aXnqVuRB0NW7Nz7lyYMwr7XCfkMZvUORaSRo,13153 +pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858 +pip/_internal/distributions/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/distributions/__pycache__/base.cpython-36.pyc,, +pip/_internal/distributions/__pycache__/installed.cpython-36.pyc,, +pip/_internal/distributions/__pycache__/sdist.cpython-36.pyc,, +pip/_internal/distributions/__pycache__/wheel.cpython-36.pyc,, +pip/_internal/distributions/base.py,sha256=3FUYD8Gb4YuSu3pggC_FRctZBDbpm5ZK89tPksIUjoE,1172 +pip/_internal/distributions/installed.py,sha256=QObf6KALGtwGx-Ap3Ua5FfcfaRMXWOk_wcrm7n5gYII,767 +pip/_internal/distributions/sdist.py,sha256=3fsErGhAWdGzuO7Wea0F_8b9fKyUL1PoYet273OoAoM,5598 +pip/_internal/distributions/wheel.py,sha256=-NgzdIs-w_hcer_U81yzgpVTljJRg5m79xufqvbjv0s,1115 +pip/_internal/exceptions.py,sha256=XyfiRZn2X8WR61X-JF50BU72TdmVkneWPy9cnuKv2Rg,12762 +pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 +pip/_internal/index/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/index/__pycache__/collector.cpython-36.pyc,, +pip/_internal/index/__pycache__/package_finder.cpython-36.pyc,, +pip/_internal/index/__pycache__/sources.cpython-36.pyc,, +pip/_internal/index/collector.py,sha256=7rhUeH0IU_dUMk13-lBAN9czRuJ6dbG76Un7xuQ36Ck,17534 +pip/_internal/index/package_finder.py,sha256=_N9LIcwAXbGDN3BUDlikSB93WI9PHv3MvkJ4YapfrPY,36344 +pip/_internal/index/sources.py,sha256=SVyPitv08-Qalh2_Bk5diAJ9GAA_d-a93koouQodAG0,6557 +pip/_internal/locations/__init__.py,sha256=CpH6Cz9HSZ0csN_KPtOcvS9TGYLb7ZNGtCAAmVtjXW0,14444 +pip/_internal/locations/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/locations/__pycache__/_distutils.cpython-36.pyc,, +pip/_internal/locations/__pycache__/_sysconfig.cpython-36.pyc,, +pip/_internal/locations/__pycache__/base.cpython-36.pyc,, +pip/_internal/locations/_distutils.py,sha256=Sk7tw8ZP1DWMYJ8MibABsa8IME2Ejv1PKeGlYQCBTZc,5871 +pip/_internal/locations/_sysconfig.py,sha256=LQNKTJKyjVqxXaPntlBwdUqTG1xwYf6GVCKMbyRJx5M,7918 +pip/_internal/locations/base.py,sha256=x5D1ONktmPJd8nnUTh-ELsAJ7fiXA-k-0a_vhfi2_Us,1579 +pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340 +pip/_internal/metadata/__init__.py,sha256=HzTS3lRukzn-MJaEZkUQhAFe6ulxvNe7nNoBvUzy-DU,1660 +pip/_internal/metadata/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/metadata/__pycache__/base.cpython-36.pyc,, +pip/_internal/metadata/__pycache__/pkg_resources.cpython-36.pyc,, +pip/_internal/metadata/base.py,sha256=gbNbb9blWO5hejmror-2n4_wLuYVrTyqwUluY9OmnMg,11103 +pip/_internal/metadata/pkg_resources.py,sha256=-LiuojtAfl3yhNx8rnUKYN3ECBVCVcDWszCupithXAw,5089 +pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 +pip/_internal/models/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/models/__pycache__/candidate.cpython-36.pyc,, +pip/_internal/models/__pycache__/direct_url.cpython-36.pyc,, +pip/_internal/models/__pycache__/format_control.cpython-36.pyc,, +pip/_internal/models/__pycache__/index.cpython-36.pyc,, +pip/_internal/models/__pycache__/link.cpython-36.pyc,, +pip/_internal/models/__pycache__/scheme.cpython-36.pyc,, +pip/_internal/models/__pycache__/search_scope.cpython-36.pyc,, +pip/_internal/models/__pycache__/selection_prefs.cpython-36.pyc,, +pip/_internal/models/__pycache__/target_python.cpython-36.pyc,, +pip/_internal/models/__pycache__/wheel.cpython-36.pyc,, +pip/_internal/models/candidate.py,sha256=6pcABsaR7CfIHlbJbr2_kMkVJFL_yrYjTx6SVWUnCPQ,990 +pip/_internal/models/direct_url.py,sha256=7XtGQSLLDQb5ZywI2EMnnLcddtf5CJLx44lMtTHPxFw,6350 +pip/_internal/models/format_control.py,sha256=DJpMYjxeYKKQdwNcML2_F0vtAh-qnKTYe-CpTxQe-4g,2520 +pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030 +pip/_internal/models/link.py,sha256=hoT_qsOBAgLBm9GKqpBrNF_mrEXeGXQE-aH_RX2cGgg,9817 +pip/_internal/models/scheme.py,sha256=3EFQp_ICu_shH1-TBqhl0QAusKCPDFOlgHFeN4XowWs,738 +pip/_internal/models/search_scope.py,sha256=LwloG0PJAmtI1hFXIypsD95kWE9xfR5hf_a2v1Vw7sk,4520 +pip/_internal/models/selection_prefs.py,sha256=KZdi66gsR-_RUXUr9uejssk3rmTHrQVJWeNA2sV-VSY,1907 +pip/_internal/models/target_python.py,sha256=qKpZox7J8NAaPmDs5C_aniwfPDxzvpkrCKqfwndG87k,3858 +pip/_internal/models/wheel.py,sha256=hN9Ub-m-cAJCajCcQHyQNsqpcDCbPPDlEzBDwaBMc14,3500 +pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 +pip/_internal/network/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/network/__pycache__/auth.cpython-36.pyc,, +pip/_internal/network/__pycache__/cache.cpython-36.pyc,, +pip/_internal/network/__pycache__/download.cpython-36.pyc,, +pip/_internal/network/__pycache__/lazy_wheel.cpython-36.pyc,, +pip/_internal/network/__pycache__/session.cpython-36.pyc,, +pip/_internal/network/__pycache__/utils.cpython-36.pyc,, +pip/_internal/network/__pycache__/xmlrpc.cpython-36.pyc,, +pip/_internal/network/auth.py,sha256=a3C7Xaa8kTJjXkdi_wrUjqaySc8Z9Yz7U6QIbXfzMyc,12190 +pip/_internal/network/cache.py,sha256=HoprMCecwd4IS2wDZowc9B_OpaBlFjJYJl4xOxvtuwU,2100 +pip/_internal/network/download.py,sha256=VmiR-KKIBugShZS4JlD7N8mq3hErx-0fK-D8aTYU3Og,6016 +pip/_internal/network/lazy_wheel.py,sha256=1b8ZJ1w4bSBzpGzGwJR_CL2yQ6AFIwWQkS1vbPPw2XU,7627 +pip/_internal/network/session.py,sha256=38IKGKC64MTVUIH5XOR1hr2pOCzp39RccykdmGAvqRU,16729 +pip/_internal/network/utils.py,sha256=igLlTu_-q0LmL8FdJKq-Uj7AT_owrQ-T9FfyarkhK5U,4059 +pip/_internal/network/xmlrpc.py,sha256=AzQgG4GgS152_cqmGr_Oz2MIXsCal-xfsis7fA7nmU0,1791 +pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/operations/__pycache__/check.cpython-36.pyc,, +pip/_internal/operations/__pycache__/freeze.cpython-36.pyc,, +pip/_internal/operations/__pycache__/prepare.cpython-36.pyc,, +pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/build/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/operations/build/__pycache__/metadata.cpython-36.pyc,, +pip/_internal/operations/build/__pycache__/metadata_editable.cpython-36.pyc,, +pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-36.pyc,, +pip/_internal/operations/build/__pycache__/wheel.cpython-36.pyc,, +pip/_internal/operations/build/__pycache__/wheel_editable.cpython-36.pyc,, +pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-36.pyc,, +pip/_internal/operations/build/metadata.py,sha256=KEsyrRFOBs2jhR-AcjyJyeV5GlsK1ubQqAB1j-b0Zu4,1119 +pip/_internal/operations/build/metadata_editable.py,sha256=RnA8UgQqZwtBjBdqi1DW1gI3xaZ7qhKp1Xd-0YTktSk,1177 +pip/_internal/operations/build/metadata_legacy.py,sha256=hjAJ75iKuJfKQYALZD0U6wJ7ElJ_BAEvjDxF8b9_l5k,1945 +pip/_internal/operations/build/wheel.py,sha256=AO9XnTGhTgHtZmU8Dkbfo1OGr41rBuSDjIgAa4zUKgE,1063 +pip/_internal/operations/build/wheel_editable.py,sha256=TVETY-L_M_dSEKBhTIcQOP75zKVXw8tuq1U354Mm30A,1405 +pip/_internal/operations/build/wheel_legacy.py,sha256=aFMVOvyG-_CAIuXEVxuPJkz5UfCppSeu9FBPzn2tWvI,3047 +pip/_internal/operations/check.py,sha256=ca4O9CkPt9Em9sLCf3H0iVt1GIcW7M8C0U5XooaBuT4,5109 +pip/_internal/operations/freeze.py,sha256=ZiYw5GlUpLVx4VJHz4S1AP2JFNyvH0iq5kpcYj2ovyw,9770 +pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 +pip/_internal/operations/install/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/operations/install/__pycache__/editable_legacy.cpython-36.pyc,, +pip/_internal/operations/install/__pycache__/legacy.cpython-36.pyc,, +pip/_internal/operations/install/__pycache__/wheel.cpython-36.pyc,, +pip/_internal/operations/install/editable_legacy.py,sha256=J4VCOHvk_BgA_wG02WmlDtSWLwZJ5S_g9SXBkjYojaw,1298 +pip/_internal/operations/install/legacy.py,sha256=YKrZvH894Iqf2oEkYqF9O7CK1DjTgfZCP3R9Azpjeqo,4158 +pip/_internal/operations/install/wheel.py,sha256=QuQyCZE-XjuJjDYRixo40oUt2ucFhNmSrCbcXY7A9aE,27412 +pip/_internal/operations/prepare.py,sha256=Dg-lFYsFhYeib8NuQvGOxd0wxcmTqXfe_c5zYb3ep64,23838 +pip/_internal/pyproject.py,sha256=YgcyleTgyuh7NwGH9j8_21htqnF_VxgKiPc4ecLBWKk,7215 +pip/_internal/req/__init__.py,sha256=A7mUvT1KAcCYP3H7gUOTx2GRMlgoDur3H68Q0OJqM5A,2793 +pip/_internal/req/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/req/__pycache__/constructors.cpython-36.pyc,, +pip/_internal/req/__pycache__/req_file.cpython-36.pyc,, +pip/_internal/req/__pycache__/req_install.cpython-36.pyc,, +pip/_internal/req/__pycache__/req_set.cpython-36.pyc,, +pip/_internal/req/__pycache__/req_tracker.cpython-36.pyc,, +pip/_internal/req/__pycache__/req_uninstall.cpython-36.pyc,, +pip/_internal/req/constructors.py,sha256=FVWkWeGt3fK0DTC3Gurd2jglp_Z10CK-abd6yM3HD-A,15285 +pip/_internal/req/req_file.py,sha256=5N8OTouPCof-305StC2YK9HBxQMw-xO46skRoBPbkZo,17421 +pip/_internal/req/req_install.py,sha256=N8xohvY6CIaVt6D1sU9VWv2muO9oPjixIDisqBXUr0E,33804 +pip/_internal/req/req_set.py,sha256=kHYiLvkKRx21WaLTwOI-54Ng0SSzZZ9SE7FD0PsfvYA,7584 +pip/_internal/req/req_tracker.py,sha256=jK7JDu-Wt73X-gqozrFtgJVlUlnQo0P4IQ4x4_gPlfM,4117 +pip/_internal/req/req_uninstall.py,sha256=Uf8Kx-PgoQIudFq9Y7sFP-uz_I6x1gEfPpJJxujOf14,23748 +pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/resolution/__pycache__/base.cpython-36.pyc,, +pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583 +pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/legacy/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/resolution/legacy/__pycache__/resolver.cpython-36.pyc,, +pip/_internal/resolution/legacy/resolver.py,sha256=Fr7bfTaKqXoaIfSte7mvFRLMb8pAaiozgydoHeIyiHI,18312 +pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/base.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-36.pyc,, +pip/_internal/resolution/resolvelib/base.py,sha256=u1O4fkvCO4mhmu5i32xrDv9AX5NgUci_eYVyBDQhTIM,5220 +pip/_internal/resolution/resolvelib/candidates.py,sha256=5q66J90AoMKKwy1HsdXvEeleOJG8QkAbo8OidFekee0,18210 +pip/_internal/resolution/resolvelib/factory.py,sha256=GnjXkaWRbfjdtQJcjcmkXUyPIgjckCHTu6wkneDMck8,26806 +pip/_internal/resolution/resolvelib/found_candidates.py,sha256=hvL3Hoa9VaYo-qEOZkBi2Iqw251UDxPz-uMHVaWmLpE,5705 +pip/_internal/resolution/resolvelib/provider.py,sha256=HUMHvkU001rtlqvs11NPmMtlyMMLlVQfAl6qXdsLxZQ,9205 +pip/_internal/resolution/resolvelib/reporter.py,sha256=3ZVVYrs5PqvLFJkGLcuXoMK5mTInFzl31xjUpDBpZZk,2526 +pip/_internal/resolution/resolvelib/requirements.py,sha256=pcsnwz7txyDNZUEOWJOZEfivy3COWHPf_DIU7fwZ-Kk,5455 +pip/_internal/resolution/resolvelib/resolver.py,sha256=bkrMZs_jJHP_KFAbg36-lcN4Ums7ESgllup8piHXOz0,9580 +pip/_internal/self_outdated_check.py,sha256=nVLSc0nl4JZ9VI7GsZvblE-zzT-T5ofmMgplned8s_s,6393 +pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/utils/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/utils/__pycache__/_log.cpython-36.pyc,, +pip/_internal/utils/__pycache__/appdirs.cpython-36.pyc,, +pip/_internal/utils/__pycache__/compat.cpython-36.pyc,, +pip/_internal/utils/__pycache__/compatibility_tags.cpython-36.pyc,, +pip/_internal/utils/__pycache__/datetime.cpython-36.pyc,, +pip/_internal/utils/__pycache__/deprecation.cpython-36.pyc,, +pip/_internal/utils/__pycache__/direct_url_helpers.cpython-36.pyc,, +pip/_internal/utils/__pycache__/distutils_args.cpython-36.pyc,, +pip/_internal/utils/__pycache__/egg_link.cpython-36.pyc,, +pip/_internal/utils/__pycache__/encoding.cpython-36.pyc,, +pip/_internal/utils/__pycache__/entrypoints.cpython-36.pyc,, +pip/_internal/utils/__pycache__/filesystem.cpython-36.pyc,, +pip/_internal/utils/__pycache__/filetypes.cpython-36.pyc,, +pip/_internal/utils/__pycache__/glibc.cpython-36.pyc,, +pip/_internal/utils/__pycache__/hashes.cpython-36.pyc,, +pip/_internal/utils/__pycache__/inject_securetransport.cpython-36.pyc,, +pip/_internal/utils/__pycache__/logging.cpython-36.pyc,, +pip/_internal/utils/__pycache__/misc.cpython-36.pyc,, +pip/_internal/utils/__pycache__/models.cpython-36.pyc,, +pip/_internal/utils/__pycache__/packaging.cpython-36.pyc,, +pip/_internal/utils/__pycache__/parallel.cpython-36.pyc,, +pip/_internal/utils/__pycache__/pkg_resources.cpython-36.pyc,, +pip/_internal/utils/__pycache__/setuptools_build.cpython-36.pyc,, +pip/_internal/utils/__pycache__/subprocess.cpython-36.pyc,, +pip/_internal/utils/__pycache__/temp_dir.cpython-36.pyc,, +pip/_internal/utils/__pycache__/unpacking.cpython-36.pyc,, +pip/_internal/utils/__pycache__/urls.cpython-36.pyc,, +pip/_internal/utils/__pycache__/virtualenv.cpython-36.pyc,, +pip/_internal/utils/__pycache__/wheel.cpython-36.pyc,, +pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015 +pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665 +pip/_internal/utils/compat.py,sha256=ACyBfLgj3_XG-iA5omEDrXqDM0cQKzi8h8HRBInzG6Q,1884 +pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377 +pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242 +pip/_internal/utils/deprecation.py,sha256=NKo8VqLioJ4nnXXGmW4KdasxF90EFHkZaHeX1fT08C8,3627 +pip/_internal/utils/direct_url_helpers.py,sha256=6F1tc2rcKaCZmgfVwsE6ObIe_Pux23mUVYA-2D9wCFc,3206 +pip/_internal/utils/distutils_args.py,sha256=mcAscyp80vTt3xAGTipnpgc83V-_wCvydNELVXLq7JI,1249 +pip/_internal/utils/egg_link.py,sha256=5MVlpz5LirT4iLQq86OYzjXaYF0D4Qk1dprEI7ThST4,2203 +pip/_internal/utils/encoding.py,sha256=bdZ3YgUpaOEBI5MP4-DEXiQarCW3V0rxw1kRz-TaU1Q,1169 +pip/_internal/utils/entrypoints.py,sha256=aPvCnQVi9Hdk35Kloww_D5ibjUpqxgqcJP8O9VuMZek,1055 +pip/_internal/utils/filesystem.py,sha256=rrl-rY1w8TYyKYndUyZlE9ffkQyA4-jI9x_59zXkn5s,5893 +pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716 +pip/_internal/utils/glibc.py,sha256=tDfwVYnJCOC0BNVpItpy8CGLP9BjkxFHdl0mTS0J7fc,3110 +pip/_internal/utils/hashes.py,sha256=anpZfFGIT6HcIj2td9NHtE8AWg6GeAIhwpP8GPvZE0E,4811 +pip/_internal/utils/inject_securetransport.py,sha256=o-QRVMGiENrTJxw3fAhA7uxpdEdw6M41TjHYtSVRrcg,795 +pip/_internal/utils/logging.py,sha256=oEkBvjj2A6NtVo75_Q-sL7qqH0bMFuY0pK4d8t40SKg,11532 +pip/_internal/utils/misc.py,sha256=HfMsfc9LQbjNlf_EdYm79Ggxb63Nd9WOfoZSW3H4wmo,20432 +pip/_internal/utils/models.py,sha256=5GoYU586SrxURMvDn_jBMJInitviJg4O5-iOU-6I0WY,1193 +pip/_internal/utils/packaging.py,sha256=wA29RPW_KkorI2PIfkm9cWCytpcVbk-wubwUE8YTmbQ,2952 +pip/_internal/utils/parallel.py,sha256=Z-vNgYsyiAx8JfZYbD6ZSzkkPfpk0ANQI_YpCBE0Pxo,3196 +pip/_internal/utils/pkg_resources.py,sha256=A7HUm5lSk7n1_7qypyI4QkXErXgb5iXDlKPXo8r_1Hk,987 +pip/_internal/utils/setuptools_build.py,sha256=yDrfmxUgd0A9SDKV-7UuSTA3YLmVav5J86G9Fym-2FE,4697 +pip/_internal/utils/subprocess.py,sha256=cy2c6XRuYkX3XJF_lIjY5nQL2XygBHLJr6WXwTsjfnc,10058 +pip/_internal/utils/temp_dir.py,sha256=zob3PYMVevONkheOMUp_4jDofrEY3HIu5DHK78cSspI,7662 +pip/_internal/utils/unpacking.py,sha256=HUFlMEyCa9dPwdLh6sWeh95DeKytV8rsOyKShEw9y6g,8906 +pip/_internal/utils/urls.py,sha256=AhaesUGl-9it6uvG6fsFPOr9ynFpGaTMk4t5XTX7Z_Q,1759 +pip/_internal/utils/virtualenv.py,sha256=4_48qMzCwB_F5jIK5BC_ua7uiAMVifmQWU9NdaGUoVA,3459 +pip/_internal/utils/wheel.py,sha256=YwsLfuDzPJhFLuGotZ69i0bxJVGSweGuIHG2SxZvZtM,6163 +pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596 +pip/_internal/vcs/__pycache__/__init__.cpython-36.pyc,, +pip/_internal/vcs/__pycache__/bazaar.cpython-36.pyc,, +pip/_internal/vcs/__pycache__/git.cpython-36.pyc,, +pip/_internal/vcs/__pycache__/mercurial.cpython-36.pyc,, +pip/_internal/vcs/__pycache__/subversion.cpython-36.pyc,, +pip/_internal/vcs/__pycache__/versioncontrol.cpython-36.pyc,, +pip/_internal/vcs/bazaar.py,sha256=pNMHrCLx1jSJzu1t1ycDVwhXQ23XI4Q483cvewaTUDs,2857 +pip/_internal/vcs/git.py,sha256=Ph_hThbfTG040GpJRz1z0ByiNkj5eHgF_shCCbNnCw0,17804 +pip/_internal/vcs/mercurial.py,sha256=Mtk-Bqjnp3wlaOdHfNSxq86vgCwNc3-df6UqgIXvMjE,4945 +pip/_internal/vcs/subversion.py,sha256=h4_nYmYN9kcfeTPp9wjkHhIeTpFZwoCp1UVm4hbBq90,11596 +pip/_internal/vcs/versioncontrol.py,sha256=W1zLW32PeuYiCV1I_dhqlk_n74B_GFTjNC5xdxs-1Ek,22414 +pip/_internal/wheel_builder.py,sha256=ZakEA7CEJyp70yHoX0QLE8TAwM7vxF9PYPtjBxT3F1I,12247 +pip/_vendor/__init__.py,sha256=xjcBX0EP50pkaMdCssrsBXoZgo2hTtYxlcH1CIyA3T4,4708 +pip/_vendor/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/__pycache__/distro.cpython-36.pyc,, +pip/_vendor/__pycache__/pyparsing.cpython-36.pyc,, +pip/_vendor/__pycache__/six.cpython-36.pyc,, +pip/_vendor/cachecontrol/__init__.py,sha256=pJtAaUxOsMPnytI1A3juAJkXYDr8krdSnsg4Yg3OBEg,302 +pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/controller.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc,, +pip/_vendor/cachecontrol/_cmd.py,sha256=URGE0KrA87QekCG3SGPatlSPT571dZTDjNa-ZXX3pDc,1295 +pip/_vendor/cachecontrol/adapter.py,sha256=sSwaSYd93IIfCFU4tOMgSo6b2LCt_gBSaQUj8ktJFOA,4882 +pip/_vendor/cachecontrol/cache.py,sha256=1fc4wJP8HYt1ycnJXeEw5pCpeBL2Cqxx6g9Fb0AYDWQ,805 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=-gHNKYvaeD0kOk5M74eOrsSgIKUtC6i6GfbmugGweEo,86 +pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=nYVKsJtXh6gJXvdn1iWyrhxvkwpQrK-eKoMRzuiwkKk,4153 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=HxelMpNCo-dYr2fiJDwM3hhhRmxUYtB5tXm1GpAAT4Y,856 +pip/_vendor/cachecontrol/compat.py,sha256=kHNvMRdt6s_Xwqq_9qJmr9ou3wYMOMUMxPPcwNxT8Mc,695 +pip/_vendor/cachecontrol/controller.py,sha256=CWEX3pedIM9s60suf4zZPtm_JvVgnvogMGK_OiBG5F8,14149 +pip/_vendor/cachecontrol/filewrapper.py,sha256=vACKO8Llzu_ZWyjV1Fxn1MA4TGU60N5N3GSrAFdAY2Q,2533 +pip/_vendor/cachecontrol/heuristics.py,sha256=BFGHJ3yQcxvZizfo90LLZ04T_Z5XSCXvFotrp7Us0sc,4070 +pip/_vendor/cachecontrol/serialize.py,sha256=vIa4jvq4x_KSOLdEIedoknX2aXYHQujLDFV4-F21Dno,7091 +pip/_vendor/cachecontrol/wrapper.py,sha256=5LX0uJwkNQUtYSEw3aGmGu9WY8wGipd81mJ8lG0d0M4,690 +pip/_vendor/certifi/__init__.py,sha256=-b78tXibbl0qtgCzv9tc9v6ozwcNX915lT9Tf4a9lds,62 +pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255 +pip/_vendor/certifi/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/certifi/__pycache__/__main__.cpython-36.pyc,, +pip/_vendor/certifi/__pycache__/core.cpython-36.pyc,, +pip/_vendor/certifi/cacert.pem,sha256=3i-hfE2K5o3CBKG2tYt6ehJWk2fP64o6Th83fHPoPp4,259465 +pip/_vendor/certifi/core.py,sha256=gOFd0zHYlx4krrLEn982esOtmz3djiG0BFSDhgjlvcI,2840 +pip/_vendor/chardet/__init__.py,sha256=mWZaWmvZkhwfBEAT9O1Y6nRTfKzhT7FHhQTTAujbqUA,3271 +pip/_vendor/chardet/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/big5freq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/big5prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/chardistribution.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/charsetprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/cp949prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/enums.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/escprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/escsm.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/eucjpprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euckrfreq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euckrprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euctwfreq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/euctwprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/gb2312freq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/gb2312prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/hebrewprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/jisfreq.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/jpcntx.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langthaimodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/latin1prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/mbcssm.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/sjisprober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/universaldetector.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/utf8prober.cpython-36.pyc,, +pip/_vendor/chardet/__pycache__/version.cpython-36.pyc,, +pip/_vendor/chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 +pip/_vendor/chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 +pip/_vendor/chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 +pip/_vendor/chardet/charsetgroupprober.py,sha256=GZLReHP6FRRn43hvSOoGCxYamErKzyp6RgOQxVeC3kg,3839 +pip/_vendor/chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 +pip/_vendor/chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pip/_vendor/chardet/cli/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-36.pyc,, +pip/_vendor/chardet/cli/chardetect.py,sha256=XK5zqjUG2a4-y6eLHZ8ThYcp6WWUrdlmELxNypcc2SE,2747 +pip/_vendor/chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 +pip/_vendor/chardet/compat.py,sha256=40zr6wICZwknxyuLGGcIOPyve8DTebBCbbvttvnmp5Q,1200 +pip/_vendor/chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 +pip/_vendor/chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 +pip/_vendor/chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 +pip/_vendor/chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 +pip/_vendor/chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 +pip/_vendor/chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 +pip/_vendor/chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 +pip/_vendor/chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 +pip/_vendor/chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 +pip/_vendor/chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 +pip/_vendor/chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 +pip/_vendor/chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 +pip/_vendor/chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 +pip/_vendor/chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 +pip/_vendor/chardet/langbulgarianmodel.py,sha256=rk9CJpuxO0bObboJcv6gNgWuosYZmd8qEEds5y7DS_Y,105697 +pip/_vendor/chardet/langgreekmodel.py,sha256=S-uNQ1ihC75yhBvSux24gLFZv3QyctMwC6OxLJdX-bw,99571 +pip/_vendor/chardet/langhebrewmodel.py,sha256=DzPP6TPGG_-PV7tqspu_d8duueqm7uN-5eQ0aHUw1Gg,98776 +pip/_vendor/chardet/langhungarianmodel.py,sha256=RtJH7DZdsmaHqyK46Kkmnk5wQHiJwJPPJSqqIlpeZRc,102498 +pip/_vendor/chardet/langrussianmodel.py,sha256=THqJOhSxiTQcHboDNSc5yofc2koXXQFHFyjtyuntUfM,131180 +pip/_vendor/chardet/langthaimodel.py,sha256=R1wXHnUMtejpw0JnH_JO8XdYasME6wjVqp1zP7TKLgg,103312 +pip/_vendor/chardet/langturkishmodel.py,sha256=rfwanTptTwSycE4-P-QasPmzd-XVYgevytzjlEzBBu8,95946 +pip/_vendor/chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 +pip/_vendor/chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 +pip/_vendor/chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 +pip/_vendor/chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 +pip/_vendor/chardet/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/chardet/metadata/__pycache__/languages.cpython-36.pyc,, +pip/_vendor/chardet/metadata/languages.py,sha256=41tLq3eLSrBEbEVVQpVGFq9K7o1ln9b1HpY1l0hCUQo,19474 +pip/_vendor/chardet/sbcharsetprober.py,sha256=nmyMyuxzG87DN6K3Rk2MUzJLMLR69MrWpdnHzOwVUwQ,6136 +pip/_vendor/chardet/sbcsgroupprober.py,sha256=hqefQuXmiFyDBArOjujH6hd6WFXlOD1kWCsxDhjx5Vc,4309 +pip/_vendor/chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 +pip/_vendor/chardet/universaldetector.py,sha256=DpZTXCX0nUHXxkQ9sr4GZxGB_hveZ6hWt3uM94cgWKs,12503 +pip/_vendor/chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 +pip/_vendor/chardet/version.py,sha256=A4CILFAd8MRVG1HoXPp45iK9RLlWyV73a1EtwE8Tvn8,242 +pip/_vendor/colorama/__init__.py,sha256=pCdErryzLSzDW5P-rRPBlPLqbBtIRNJB6cMgoeJns5k,239 +pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc,, +pip/_vendor/colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 +pip/_vendor/colorama/ansitowin32.py,sha256=yV7CEmCb19MjnJKODZEEvMH_fnbJhwnpzo4sxZuGXmA,10517 +pip/_vendor/colorama/initialise.py,sha256=PprovDNxMTrvoNHFcL2NZjpH2XzDc8BLxLxiErfUl4k,1915 +pip/_vendor/colorama/win32.py,sha256=bJ8Il9jwaBN5BJ8bmN6FoYZ1QYuMKv2j8fGrXh7TJjw,5404 +pip/_vendor/colorama/winterm.py,sha256=2y_2b7Zsv34feAsP67mLOVc-Bgq51mdYGo571VprlrM,6438 +pip/_vendor/distlib/__init__.py,sha256=HTGLP7dnTRTQCbEZNGUxBq-0sobr0KQUMn3yd6uEObA,581 +pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/database.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/index.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/locators.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/manifest.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/util.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/version.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 +pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-36.pyc,, +pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 +pip/_vendor/distlib/_backport/shutil.py,sha256=IX_G2NPqwecJibkIDje04bqu0xpHkfSQ2GaGdEVqM5Y,25707 +pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 +pip/_vendor/distlib/_backport/sysconfig.py,sha256=BQHFlb6pubCl_dvT1NjtzIthylofjKisox239stDg0U,26854 +pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 +pip/_vendor/distlib/compat.py,sha256=fbsxc5PfJ2wBx1K4k6mQ2goAYs-GZW0tcOPIlE_vf0I,41495 +pip/_vendor/distlib/database.py,sha256=Kl0YvPQKc4OcpVi7k5cFziydM1xOK8iqdxLGXgbZHV4,51059 +pip/_vendor/distlib/index.py,sha256=UfcimNW19AB7IKWam4VaJbXuCBvArKfSxhV16EwavzE,20739 +pip/_vendor/distlib/locators.py,sha256=AKlB3oZvfOTg4E0CtfwOzujFL19X5V4XUA4eHdKOu44,51965 +pip/_vendor/distlib/manifest.py,sha256=nQEhYmgoreaBZzyFzwYsXxJARu3fo4EkunU163U16iE,14811 +pip/_vendor/distlib/markers.py,sha256=9c70ISEKwBjmUOHuIdOygVnRVESOKdNYp9a2TVn4qrI,4989 +pip/_vendor/distlib/metadata.py,sha256=vatoxFdmBr6ie-sTVXVNPOPG3uwMDWJTnEECnm7xDCw,39109 +pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820 +pip/_vendor/distlib/scripts.py,sha256=tjSwENINeV91ROZxec5zTSMRg2jEeKc4enyCHDzNvEE,17720 +pip/_vendor/distlib/t32.exe,sha256=NS3xBCVAld35JVFNmb-1QRyVtThukMrwZVeXn4LhaEQ,96768 +pip/_vendor/distlib/t64-arm.exe,sha256=8WGDh6aI8WJAjngRNQpyJpB21Sv20PCYYFSNW1fWd6w,180736 +pip/_vendor/distlib/t64.exe,sha256=oAqHes78rUWVM0OtVqIhUvequl_PKhAhXYQWnUf7zR0,105984 +pip/_vendor/distlib/util.py,sha256=0Uq_qa63FCLtdyNdWvMnmPbiSvVa-ykHM2E8HT7LSIU,67766 +pip/_vendor/distlib/version.py,sha256=WG__LyAa2GwmA6qSoEJtvJE8REA1LZpbSizy8WvhJLk,23513 +pip/_vendor/distlib/w32.exe,sha256=lJtnZdeUxTZWya_EW5DZos_K5rswRECGspIl8ZJCIXs,90112 +pip/_vendor/distlib/w64-arm.exe,sha256=Q_HdzVu9zxYdaBa3m0iJ5_ddLOEqtPe8x30WADoXza8,166400 +pip/_vendor/distlib/w64.exe,sha256=0aRzoN2BO9NWW4ENy4_4vHkHR4qZTFZNVSAJJYlODTI,99840 +pip/_vendor/distlib/wheel.py,sha256=pj5VVCjqZMcHvgizORWwAFPS7hOk61CZ59dxP8laQ4E,42943 +pip/_vendor/distro.py,sha256=O1EeHMq1-xAO373JI2_6pYEtd09yEkxtmrYkdY-9S-w,48414 +pip/_vendor/html5lib/__init__.py,sha256=BYzcKCqeEii52xDrqBFruhnmtmkiuHXFyFh-cglQ8mk,1160 +pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_utils.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc,, +pip/_vendor/html5lib/_ihatexml.py,sha256=ifOwF7pXqmyThIXc3boWc96s4MDezqRrRVp7FwDYUFs,16728 +pip/_vendor/html5lib/_inputstream.py,sha256=jErNASMlkgs7MpOM9Ve_VdLDJyFFweAjLuhVutZz33U,32353 +pip/_vendor/html5lib/_tokenizer.py,sha256=04mgA2sNTniutl2fxFv-ei5bns4iRaPxVXXHh_HrV_4,77040 +pip/_vendor/html5lib/_trie/__init__.py,sha256=nqfgO910329BEVJ5T4psVwQtjd2iJyEXQ2-X8c1YxwU,109 +pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/_base.py,sha256=CaybYyMro8uERQYjby2tTeSUatnWDfWroUN9N7ety5w,1013 +pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 +pip/_vendor/html5lib/_utils.py,sha256=Dx9AKntksRjFT1veBj7I362pf5OgIaT0zglwq43RnfU,4931 +pip/_vendor/html5lib/constants.py,sha256=Ll-yzLU_jcjyAI_h57zkqZ7aQWE5t5xA4y_jQgoUUhw,83464 +pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/lint.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc,, +pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=lViZc2JMCclXi_5gduvmdzrRxtO5Xo9ONnbHBVCsykU,919 +pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 +pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=egDXUEHXmAG9504xz0K6ALDgYkvUrC2q15YUVeNlVQg,2945 +pip/_vendor/html5lib/filters/lint.py,sha256=jk6q56xY0ojiYfvpdP-OZSm9eTqcAdRqhCoPItemPYA,3643 +pip/_vendor/html5lib/filters/optionaltags.py,sha256=8lWT75J0aBOHmPgfmqTHSfPpPMp01T84NKu0CRedxcE,10588 +pip/_vendor/html5lib/filters/sanitizer.py,sha256=m6oGmkBhkGAnn2nV6D4hE78SCZ6WEnK9rKdZB3uXBIc,26897 +pip/_vendor/html5lib/filters/whitespace.py,sha256=8eWqZxd4UC4zlFGW6iyY6f-2uuT8pOCSALc3IZt7_t4,1214 +pip/_vendor/html5lib/html5parser.py,sha256=anr-aXre_ImfrkQ35c_rftKXxC80vJCREKe06Tq15HA,117186 +pip/_vendor/html5lib/serializer.py,sha256=_PpvcZF07cwE7xr9uKkZqh5f4UEaI8ltCU2xPJzaTpk,15759 +pip/_vendor/html5lib/treeadapters/__init__.py,sha256=A0rY5gXIe4bJOiSGRO_j_tFhngRBO8QZPzPtPw5dFzo,679 +pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/genshi.py,sha256=CH27pAsDKmu4ZGkAUrwty7u0KauGLCZRLPMzaO3M5vo,1715 +pip/_vendor/html5lib/treeadapters/sax.py,sha256=BKS8woQTnKiqeffHsxChUqL4q2ZR_wb5fc9MJ3zQC8s,1776 +pip/_vendor/html5lib/treebuilders/__init__.py,sha256=AysSJyvPfikCMMsTVvaxwkgDieELD5dfR8FJIAuq7hY,3592 +pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/base.py,sha256=z-o51vt9r_l2IDG5IioTOKGzZne4Fy3_Fc-7ztrOh4I,14565 +pip/_vendor/html5lib/treebuilders/dom.py,sha256=22whb0C71zXIsai5mamg6qzBEiigcBIvaDy4Asw3at0,8925 +pip/_vendor/html5lib/treebuilders/etree.py,sha256=w5ZFpKk6bAxnrwD2_BrF5EVC7vzz0L3LMi9Sxrbc_8w,12836 +pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=9gqDjs-IxsPhBYa5cpvv2FZ1KZlG83Giusy2lFmvIkE,14766 +pip/_vendor/html5lib/treewalkers/__init__.py,sha256=OBPtc1TU5mGyy18QDMxKEyYEz0wxFUUNj5v0-XgmYhY,5719 +pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/base.py,sha256=ouiOsuSzvI0KgzdWP8PlxIaSNs9falhbiinAEc_UIJY,7476 +pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 +pip/_vendor/html5lib/treewalkers/etree.py,sha256=xo1L5m9VtkfpFJK0pFmkLVajhqYYVisVZn3k9kYpPkI,4551 +pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=_b0LAVWLcVu9WaU_-w3D8f0IRSpCbjf667V-3NRdhTw,6357 +pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 +pip/_vendor/idna/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/codec.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/core.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/idnadata.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/intranges.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/package_data.cpython-36.pyc,, +pip/_vendor/idna/__pycache__/uts46data.cpython-36.pyc,, +pip/_vendor/idna/codec.py,sha256=QsPFD3Je8gN17rfs14e7zTGRWlnL7bNf2ZqcHTRVYHs,3453 +pip/_vendor/idna/compat.py,sha256=5A9xR04puRHCsyjBNewZlVSiarth7K1bZqyEOeob1fA,360 +pip/_vendor/idna/core.py,sha256=icq2P13S6JMjoXgKhhd6ihhby7QsnZlNfniH6fLyf6U,12826 +pip/_vendor/idna/idnadata.py,sha256=cl4x9RLdw1ZMtEEbvKwAsX-Id3AdIjO5U3HaoKM6VGs,42350 +pip/_vendor/idna/intranges.py,sha256=EqgXwyATAn-CTACInqH9tYsYAitGB2VcQ50RZt_Cpjs,1933 +pip/_vendor/idna/package_data.py,sha256=_028B4fvadRIaXMwMYjhuQPP3AxTIt1IRE7X6RDR4Mk,21 +pip/_vendor/idna/uts46data.py,sha256=DGzwDQv8JijY17I_7ondo3stjFjNnjvVAbA-z0k1XOE,201849 +pip/_vendor/msgpack/__init__.py,sha256=2gJwcsTIaAtCM0GMi2rU-_Y6kILeeQuqRkrQ22jSANc,1118 +pip/_vendor/msgpack/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/msgpack/__pycache__/_version.cpython-36.pyc,, +pip/_vendor/msgpack/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/msgpack/__pycache__/ext.cpython-36.pyc,, +pip/_vendor/msgpack/__pycache__/fallback.cpython-36.pyc,, +pip/_vendor/msgpack/_version.py,sha256=dFR03oACnj4lsKd1RnwD7BPMiVI_FMygdOL1TOBEw_U,20 +pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 +pip/_vendor/msgpack/ext.py,sha256=4l356Y4sVEcvCla2dh_cL57vh4GMhZfa3kuWHFHYz6A,6088 +pip/_vendor/msgpack/fallback.py,sha256=Rpv1Ldey8f8ueRnQznD4ARKBn9dxM2PywVNkXI8IEeE,38026 +pip/_vendor/packaging/__about__.py,sha256=p_OQloqH2saadcbUQmWEsWK857dI6_ff5E3aSiCqGFA,661 +pip/_vendor/packaging/__init__.py,sha256=b9Kk5MF7KxhhLgcDmiUWukN-LatWFxPdNug0joPhHSk,497 +pip/_vendor/packaging/__pycache__/__about__.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_manylinux.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_musllinux.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/markers.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/requirements.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/tags.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/version.cpython-36.pyc,, +pip/_vendor/packaging/_manylinux.py,sha256=XcbiXB-qcjv3bcohp6N98TMpOP4_j3m-iOA8ptK2GWY,11488 +pip/_vendor/packaging/_musllinux.py,sha256=z5yeG1ygOPx4uUyLdqj-p8Dk5UBb5H_b0NIjW9yo8oA,4378 +pip/_vendor/packaging/_structures.py,sha256=TMiAgFbdUOPmIfDIfiHc3KFhSJ8kMjof2QS5I-2NyQ8,1629 +pip/_vendor/packaging/markers.py,sha256=AJBOcY8Oq0kYc570KuuPTkvuqjAlhufaE2c9sCUbm64,8487 +pip/_vendor/packaging/requirements.py,sha256=NtDlPBtojpn1IUC85iMjPNsUmufjpSlwnNA-Xb4m5NA,4676 +pip/_vendor/packaging/specifiers.py,sha256=MZ-fYcNL3u7pNrt-6g2EQO7AbRXkjc-SPEYwXMQbLmc,30964 +pip/_vendor/packaging/tags.py,sha256=akIerYw8W0sz4OW9HHozgawWnbt2GGOPm3sviW0jowY,15714 +pip/_vendor/packaging/utils.py,sha256=dJjeat3BS-TYn1RrUFVwufUMasbtzLfYRoy_HXENeFQ,4200 +pip/_vendor/packaging/version.py,sha256=_fLRNrFrxYcHVfyo8vk9j8s6JM8N_xsSxVFr6RJyco8,14665 +pip/_vendor/pep517/__init__.py,sha256=Y1bATL2qbFNN6M_DQa4yyrwqjpIiL-j9T6kBmR0DS14,130 +pip/_vendor/pep517/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/build.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/check.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/colorlog.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/dirtools.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/envbuild.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/meta.cpython-36.pyc,, +pip/_vendor/pep517/__pycache__/wrappers.cpython-36.pyc,, +pip/_vendor/pep517/build.py,sha256=2bar6EdjwIz2Dlfy94qdxn3oA9mVnnny40mfoT5f-qI,3457 +pip/_vendor/pep517/check.py,sha256=bCORq1WrHjhpTONa-zpAqG0EB9rHNuhO1ORu6DsDuL8,6084 +pip/_vendor/pep517/colorlog.py,sha256=Tk9AuYm_cLF3BKTBoSTJt9bRryn0aFojIQOwbfVUTxQ,4098 +pip/_vendor/pep517/compat.py,sha256=NmLImE5oiDT3gbEhJ4w7xeoMFcpAPrGu_NltBytSJUY,1253 +pip/_vendor/pep517/dirtools.py,sha256=2mkAkAL0mRz_elYFjRKuekTJVipH1zTn4tbf1EDev84,1129 +pip/_vendor/pep517/envbuild.py,sha256=zFde--rmzjXMLXcm7SA_3hDtgk5VCTA8hjpk88RbF6E,6100 +pip/_vendor/pep517/in_process/__init__.py,sha256=MyWoAi8JHdcBv7yXuWpUSVADbx6LSB9rZh7kTIgdA8Y,563 +pip/_vendor/pep517/in_process/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/pep517/in_process/__pycache__/_in_process.cpython-36.pyc,, +pip/_vendor/pep517/in_process/_in_process.py,sha256=D3waguyNSGcwosociD5USfcycYr2RCzCjYtxX5UHQmQ,11201 +pip/_vendor/pep517/meta.py,sha256=8mnM5lDnT4zXQpBTliJbRGfesH7iioHwozbDxALPS9Y,2463 +pip/_vendor/pep517/wrappers.py,sha256=impq7Cz_LL1iDF1iiOzYWB4MaEu6O6Gps7TJ5qsJz1Q,13429 +pip/_vendor/pkg_resources/__init__.py,sha256=NnpQ3g6BCHzpMgOR_OLBmYtniY4oOzdKpwqghfq_6ug,108287 +pip/_vendor/pkg_resources/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-36.pyc,, +pip/_vendor/pkg_resources/py31compat.py,sha256=CRk8fkiPRDLsbi5pZcKsHI__Pbmh_94L8mr9Qy9Ab2U,562 +pip/_vendor/platformdirs/__init__.py,sha256=3iz938Grn-6IRg8gSuMxJtgiBfH0xqRqAlMBo-vPGUw,12859 +pip/_vendor/platformdirs/__main__.py,sha256=SzGvNkYWuosrWXs2yL2VqcXEh-kivWq3-53-BpTco0o,1140 +pip/_vendor/platformdirs/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/__main__.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/android.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/api.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/macos.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/unix.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/version.cpython-36.pyc,, +pip/_vendor/platformdirs/__pycache__/windows.cpython-36.pyc,, +pip/_vendor/platformdirs/android.py,sha256=dadYfG2oc900YVi5AONQWw2WEvk-kmgkZs5iiNSiWiE,3994 +pip/_vendor/platformdirs/api.py,sha256=yhRR6RkcZzPBfJD4Sn90vCHZbRMQ9nwtnRaa93X1wR8,4922 +pip/_vendor/platformdirs/macos.py,sha256=vIowPYKkHksJcWVjqHQoa-oI1i2D0S7gsSdyFzZDJEA,2619 +pip/_vendor/platformdirs/unix.py,sha256=7JdDnsyTFn2IHC8IFdiNYH7_R8VS-rPx8ivh4_dT1DU,6905 +pip/_vendor/platformdirs/version.py,sha256=uUssQTtUqVP-PxbOSNBzNGRW27X5u1GvOllg--kzyuw,80 +pip/_vendor/platformdirs/windows.py,sha256=91nNccR0CSxX_myMppSvUT1qtQao6kaO96e6ior8-Xw,6416 +pip/_vendor/progress/__init__.py,sha256=1HejNZtv2ouUNQeStUDAtZrtwkz_3FmYKQ476hJ7zOs,5294 +pip/_vendor/progress/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/bar.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/colors.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/counter.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc,, +pip/_vendor/progress/bar.py,sha256=GbedY0oZ-Q1duXjmvVLO0tSf-uTSH7hJ3zzyI91Esws,2942 +pip/_vendor/progress/colors.py,sha256=cCYXQnYFYVmQKKmYEbQ_lj6SPSFzdw4FN98F2x2kR-U,2655 +pip/_vendor/progress/counter.py,sha256=zYt9DWH0_05s8Q9TrJwHVud-WwsyyaR3PwYtk5hxwwQ,1613 +pip/_vendor/progress/spinner.py,sha256=u5ElzW94XEiLGH-aAlr54VJtKfeK745xr6UfGvvflzU,1461 +pip/_vendor/pyparsing.py,sha256=J1b4z3S_KwyJW7hKGnoN-hXW9pgMIzIP6QThyY5yJq4,273394 +pip/_vendor/requests/__init__.py,sha256=g4Bh1QYh6JKjMS4YLobx0uOLq-41sINaXjvbhX2VI8g,5113 +pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/__version__.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/_internal_utils.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/api.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/auth.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/certs.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/help.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/models.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/packages.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/structures.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/utils.cpython-36.pyc,, +pip/_vendor/requests/__version__.py,sha256=PZEyPTSIN_jRIAIB51wV7pw81m3qAw0InSR7OrKZUnE,441 +pip/_vendor/requests/_internal_utils.py,sha256=Zx3PnEUccyfsB-ie11nZVAW8qClJy0gx1qNME7rgT18,1096 +pip/_vendor/requests/adapters.py,sha256=e-bmKEApNVqFdylxuMJJfiaHdlmS_zhWhIMEzlHvGuc,21548 +pip/_vendor/requests/api.py,sha256=hjuoP79IAEmX6Dysrw8t032cLfwLHxbI_wM4gC5G9t0,6402 +pip/_vendor/requests/auth.py,sha256=OMoJIVKyRLy9THr91y8rxysZuclwPB-K1Xg1zBomUhQ,10207 +pip/_vendor/requests/certs.py,sha256=nXRVq9DtGmv_1AYbwjTu9UrgAcdJv05ZvkNeaoLOZxY,465 +pip/_vendor/requests/compat.py,sha256=LQWuCR4qXk6w7-qQopXyz0WNHUdAD40k0mKnaAEf1-g,2045 +pip/_vendor/requests/cookies.py,sha256=Y-bKX6TvW3FnYlE6Au0SXtVVWcaNdFvuAwQxw-G0iTI,18430 +pip/_vendor/requests/exceptions.py,sha256=dwIi512RCDqXJ2T81nLC88mqPNhUFnOI_CgKKDXhTO8,3250 +pip/_vendor/requests/help.py,sha256=dyhe3lcmHXnFCzDiZVjcGmVvvO_jtsfAm-AC542ndw8,3972 +pip/_vendor/requests/hooks.py,sha256=QReGyy0bRcr5rkwCuObNakbYsc7EkiKeBwG4qHekr2Q,757 +pip/_vendor/requests/models.py,sha256=9_LS_t1t6HbbaWFE3ZkxGmmHN2V8BgxziiOU84rrQ50,34924 +pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695 +pip/_vendor/requests/sessions.py,sha256=57O4ud9yRL6eLYh-dtFbqC1kO4d_EwZcCgYXEkujlfs,30168 +pip/_vendor/requests/status_codes.py,sha256=gT79Pbs_cQjBgp-fvrUgg1dn2DQO32bDj4TInjnMPSc,4188 +pip/_vendor/requests/structures.py,sha256=msAtr9mq1JxHd-JRyiILfdFlpbJwvvFuP3rfUQT_QxE,3005 +pip/_vendor/requests/utils.py,sha256=U_-i6WxLw-67KEij43xHbcvL0DdeQ5Jbd4hfifWJzQY,31394 +pip/_vendor/resolvelib/__init__.py,sha256=fzWkeoLV8ol6l2fvBVRZZLylOePc9w9tKRvUb8RJsCY,537 +pip/_vendor/resolvelib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/resolvelib/__pycache__/providers.cpython-36.pyc,, +pip/_vendor/resolvelib/__pycache__/reporters.cpython-36.pyc,, +pip/_vendor/resolvelib/__pycache__/resolvers.cpython-36.pyc,, +pip/_vendor/resolvelib/__pycache__/structs.cpython-36.pyc,, +pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-36.pyc,, +pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156 +pip/_vendor/resolvelib/providers.py,sha256=roVmFBItQJ0TkhNua65h8LdNny7rmeqVEXZu90QiP4o,5872 +pip/_vendor/resolvelib/reporters.py,sha256=hQvvXuuEBOyEWO8KDfLsWKVjX55UFMAUwO0YZMNpzAw,1364 +pip/_vendor/resolvelib/resolvers.py,sha256=UjFUEVrUa1hCzfEEakmjHEjYAL9J5ACJmwZyHFdmzvE,17540 +pip/_vendor/resolvelib/structs.py,sha256=IVIYof6sA_N4ZEiE1C1UhzTX495brCNnyCdgq6CYq28,4794 +pip/_vendor/six.py,sha256=TOOfQi7nFGfMrIvtdr6wX4wyHH8M7aknmuLfo2cBBrM,34549 +pip/_vendor/tenacity/__init__.py,sha256=GLLsTFD4Bd5VDgTR6mU_FxyOsrxc48qONorVaRebeD4,18257 +pip/_vendor/tenacity/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/_asyncio.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/_utils.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/after.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/before.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/before_sleep.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/nap.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/retry.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/stop.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-36.pyc,, +pip/_vendor/tenacity/__pycache__/wait.cpython-36.pyc,, +pip/_vendor/tenacity/_asyncio.py,sha256=HEb0BVJEeBJE9P-m9XBxh1KcaF96BwoeqkJCL5sbVcQ,3314 +pip/_vendor/tenacity/_utils.py,sha256=-y68scDcyoqvTJuJJ0GTfjdSCljEYlbCYvgk7nM4NdM,1944 +pip/_vendor/tenacity/after.py,sha256=dlmyxxFy2uqpLXDr838DiEd7jgv2AGthsWHGYcGYsaI,1496 +pip/_vendor/tenacity/before.py,sha256=7XtvRmO0dRWUp8SVn24OvIiGFj8-4OP5muQRUiWgLh0,1376 +pip/_vendor/tenacity/before_sleep.py,sha256=ThyDvqKU5yle_IvYQz_b6Tp6UjUS0PhVp6zgqYl9U6Y,1908 +pip/_vendor/tenacity/nap.py,sha256=fRWvnz1aIzbIq9Ap3gAkAZgDH6oo5zxMrU6ZOVByq0I,1383 +pip/_vendor/tenacity/retry.py,sha256=62R71W59bQjuNyFKsDM7hE2aEkEPtwNBRA0tnsEvgSk,6645 +pip/_vendor/tenacity/stop.py,sha256=sKHmHaoSaW6sKu3dTxUVKr1-stVkY7lw4Y9yjZU30zQ,2790 +pip/_vendor/tenacity/tornadoweb.py,sha256=E8lWO2nwe6dJgoB-N2HhQprYLDLB_UdSgFnv-EN6wKE,2145 +pip/_vendor/tenacity/wait.py,sha256=e_Saa6I2tsNLpCL1t9897wN2fGb0XQMQlE4bU2t9V2w,6691 +pip/_vendor/tomli/__init__.py,sha256=z1Elt0nLAqU5Y0DOn9p__8QnLWavlEOpRyQikdYgKro,230 +pip/_vendor/tomli/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/tomli/__pycache__/_parser.cpython-36.pyc,, +pip/_vendor/tomli/__pycache__/_re.cpython-36.pyc,, +pip/_vendor/tomli/_parser.py,sha256=50BD4o9YbzFAGAYyZLqZC8F81DQ7iWWyJnrHNwBKa6A,22415 +pip/_vendor/tomli/_re.py,sha256=5GPfgXKteg7wRFCF-DzlkAPI2ilHbkMK2-JC49F-AJQ,2681 +pip/_vendor/urllib3/__init__.py,sha256=j3yzHIbmW7CS-IKQJ9-PPQf_YKO8EOAey_rMW0UR7us,2763 +pip/_vendor/urllib3/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/_collections.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/_version.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/connectionpool.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/fields.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/filepost.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/poolmanager.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/request.cpython-36.pyc,, +pip/_vendor/urllib3/__pycache__/response.cpython-36.pyc,, +pip/_vendor/urllib3/_collections.py,sha256=Rp1mVyBgc_UlAcp6M3at1skJBXR5J43NawRTvW2g_XY,10811 +pip/_vendor/urllib3/_version.py,sha256=CA4bKbKLwUBfKitbVR-44Whe53HWyInIVElDQQniAJU,63 +pip/_vendor/urllib3/connection.py,sha256=8TiEbQrJMgySqOllKNeX5tMv8nluKRjNj5j9hyzS6x0,20080 +pip/_vendor/urllib3/connectionpool.py,sha256=FQoodlNAP1KeUi4htGdl5TJEvKL5LWisCbmFNewxRpg,37587 +pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957 +pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-36.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=eRy1Mj-wpg7sR6-OSvnSV4jUbjMT464dLN_CWxbIRVw,17649 +pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922 +pip/_vendor/urllib3/contrib/appengine.py,sha256=lfzpHFmJiO82shClLEm3QB62SYgHWnjpZOH_2JhU5Tc,11034 +pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=ej9gGvfAb2Gt00lafFp45SIoRz-QwrQ4WChm6gQmAlM,4538 +pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=DD4pInv_3OEEGffEFynBoirc8ldR789sLmGSKukzA0E,16900 +pip/_vendor/urllib3/contrib/securetransport.py,sha256=4qUKo7PUV-vVIqXmr2BD-sH7qplB918jiD5eNsRI9vU,34449 +pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097 +pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217 +pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579 +pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440 +pip/_vendor/urllib3/packages/__init__.py,sha256=h4BLhD4tLaBx1adaDtKXfupsgqY0wWLXb_f1_yVlV6A,108 +pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/packages/__pycache__/six.cpython-36.pyc,, +pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc,, +pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417 +pip/_vendor/urllib3/packages/six.py,sha256=1LVW7ljqRirFlfExjwl-v1B7vSAUNTmzGMs-qays2zg,34666 +pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py,sha256=ZVMwCkHx-py8ERsxxM3Il-MiREZktV-8iLBmCfRRHI4,927 +pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, +pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=6dZ-q074g7XhsJ27MFCgkct8iVNZB3sMZvKhf-KUVy0,5679 +pip/_vendor/urllib3/poolmanager.py,sha256=whzlX6UTEgODMOCy0ZDMUONRBCz5wyIM8Z9opXAY-Lk,19763 +pip/_vendor/urllib3/request.py,sha256=ZFSIqX0C6WizixecChZ3_okyu7BEv0lZu1VT0s6h4SM,5985 +pip/_vendor/urllib3/response.py,sha256=hGhGBh7TkEkh_IQg5C1W_xuPNrgIKv5BUXPyE-q0LuE,28203 +pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155 +pip/_vendor/urllib3/util/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/proxy.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/queue.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/request.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/response.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/retry.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/timeout.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/url.cpython-36.pyc,, +pip/_vendor/urllib3/util/__pycache__/wait.cpython-36.pyc,, +pip/_vendor/urllib3/util/connection.py,sha256=KykjNIXzUZEzeKEOpl5xvKs6IsESXP9o9eTrjE0W_Ys,4920 +pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605 +pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498 +pip/_vendor/urllib3/util/request.py,sha256=NnzaEKQ1Pauw5MFMV6HmgEMHITf0Aua9fQuzi2uZzGc,4123 +pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510 +pip/_vendor/urllib3/util/retry.py,sha256=tOWfZpLsuc7Vbk5nWpMwkHdMoXCp90IAvH4xtjSDRqQ,21391 +pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177 +pip/_vendor/urllib3/util/ssltransport.py,sha256=F_UncOXGcc-MgeWFTA1H4QCt_RRNQXRbF6onje3SyHY,6931 +pip/_vendor/urllib3/util/timeout.py,sha256=QSbBUNOB9yh6AnDn61SrLQ0hg5oz0I9-uXEG91AJuIg,10003 +pip/_vendor/urllib3/util/url.py,sha256=QVEzcbHipbXyCWwH6R4K4TR-N8T4LM55WEMwNUTBmLE,14047 +pip/_vendor/urllib3/util/wait.py,sha256=3MUKRSAUJDB2tgco7qRUskW0zXGAWYvRRE4Q1_6xlLs,5404 +pip/_vendor/vendor.txt,sha256=vux9Tgc3pSRZZnXz9TNDdn514NdkDdnb-QPC0LCHkK4,432 +pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579 +pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc,, +pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 +pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 +pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563 +pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307 +pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286 diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/WHEEL b/venv/Lib/site-packages/pip-21.3.1.dist-info/WHEEL new file mode 100644 index 00000000..5bad85fd --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/entry_points.txt b/venv/Lib/site-packages/pip-21.3.1.dist-info/entry_points.txt new file mode 100644 index 00000000..9609f72c --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/entry_points.txt @@ -0,0 +1,5 @@ +[console_scripts] +pip = pip._internal.cli.main:main +pip3 = pip._internal.cli.main:main +pip3.9 = pip._internal.cli.main:main + diff --git a/venv/Lib/site-packages/pip-21.3.1.dist-info/top_level.txt b/venv/Lib/site-packages/pip-21.3.1.dist-info/top_level.txt new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/venv/Lib/site-packages/pip-21.3.1.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst b/venv/Lib/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst new file mode 100644 index 00000000..8ef94c43 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst @@ -0,0 +1,39 @@ +pip +=== + +The `PyPA recommended +`_ +tool for installing Python packages. + +* `Installation `_ +* `Documentation `_ +* `Changelog `_ +* `Github Page `_ +* `Issue Tracking `_ +* `User mailing list `_ +* `Dev mailing list `_ +* User IRC: #pypa on Freenode. +* Dev IRC: #pypa-dev on Freenode. + + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.python.org/pypi/pip + +.. image:: https://img.shields.io/travis/pypa/pip/master.svg + :target: http://travis-ci.org/pypa/pip + +.. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg + :target: https://ci.appveyor.com/project/pypa/pip/history + +.. image:: https://readthedocs.org/projects/pip/badge/?version=stable + :target: https://pip.pypa.io/en/stable + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. + +.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ + + diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/INSTALLER b/venv/Lib/site-packages/pip-9.0.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/METADATA b/venv/Lib/site-packages/pip-9.0.1.dist-info/METADATA new file mode 100644 index 00000000..600a9059 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/METADATA @@ -0,0 +1,69 @@ +Metadata-Version: 2.0 +Name: pip +Version: 9.0.1 +Summary: The PyPA recommended tool for installing Python packages. +Home-page: https://pip.pypa.io/ +Author: The pip developers +Author-email: python-virtualenv@groups.google.com +License: MIT +Keywords: easy_install distutils setuptools egg virtualenv +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Topic :: Software Development :: Build Tools +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=2.6,!=3.0.*,!=3.1.*,!=3.2.* +Provides-Extra: testing +Requires-Dist: mock; extra == 'testing' +Requires-Dist: pretend; extra == 'testing' +Requires-Dist: pytest; extra == 'testing' +Requires-Dist: scripttest (>=1.3); extra == 'testing' +Requires-Dist: virtualenv (>=1.10); extra == 'testing' + +pip +=== + +The `PyPA recommended +`_ +tool for installing Python packages. + +* `Installation `_ +* `Documentation `_ +* `Changelog `_ +* `Github Page `_ +* `Issue Tracking `_ +* `User mailing list `_ +* `Dev mailing list `_ +* User IRC: #pypa on Freenode. +* Dev IRC: #pypa-dev on Freenode. + + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.python.org/pypi/pip + +.. image:: https://img.shields.io/travis/pypa/pip/master.svg + :target: http://travis-ci.org/pypa/pip + +.. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg + :target: https://ci.appveyor.com/project/pypa/pip/history + +.. image:: https://readthedocs.org/projects/pip/badge/?version=stable + :target: https://pip.pypa.io/en/stable + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. + +.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ + + diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/RECORD b/venv/Lib/site-packages/pip-9.0.1.dist-info/RECORD new file mode 100644 index 00000000..14abcffc --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/RECORD @@ -0,0 +1,501 @@ +pip/__init__.py,sha256=00QWSreEBjb8Y8sPs8HeqgLXSB-3UrONJxo4J5APxEc,11348 +pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584 +pip/basecommand.py,sha256=TTlmZesQ4Vuxcto2KqwZGmgmN5ioHEl_DeFev9ie_SA,11910 +pip/baseparser.py,sha256=AKMOeF3fTrRroiv0DmTQbdiLW0DQux2KqGC_dJJB9d0,10465 +pip/cmdoptions.py,sha256=8JCcF2kKAF2cFnV77oW-3DsHJifr9jF2WuChzzwgcwg,16474 +pip/download.py,sha256=rA0wbmqC2n9ejX481YJSidmKgQqQDjdaxkHkHlAN68k,32171 +pip/exceptions.py,sha256=BvqH-Jw3tP2b-2IJ2kjrQemOAPMqKrQMLRIZHZQpJXk,8121 +pip/index.py,sha256=L6UhtAEZc2qw7BqfQrkPQcw2gCgEw3GukLRSA95BNyI,39950 +pip/locations.py,sha256=9rJRlgonC6QC2zGDIn_7mXaoZ9_tF_IHM2BQhWVRgbo,5626 +pip/pep425tags.py,sha256=q3kec4f6NHszuGYIhGIbVvs896D06uJAnKFgJ_wce44,10980 +pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156 +pip/wheel.py,sha256=QSWmGs2ui-n4UMWm0JUY6aMCcwNKungVzbWsxI9KlJQ,32010 +pip/_vendor/__init__.py,sha256=WaaSJ3roSSJ_Uv4yKAxlGohKEH9YUA3aIh1Xg2IjfgU,4670 +pip/_vendor/appdirs.py,sha256=-9UOIZy62ahCQVY9-b7Nn6_5_4Y6ooHnv72tM8iHi9Y,22368 +pip/_vendor/distro.py,sha256=A4Douw9pcqdYxDTp5b-OR02fxVXnfWs-wC1wA89rhRk,38349 +pip/_vendor/ipaddress.py,sha256=wimbqcE7rwwETlucn8A_4Qd_-NKXPOBcNxJHarUoXng,80176 +pip/_vendor/ordereddict.py,sha256=4KsFuc6V8IgHROCHUu-4vCrr21ZPPea7Z0cvX9AjQ7w,4094 +pip/_vendor/pyparsing.py,sha256=7vAuUVbh6txUKQR2IzJ8_9DKmD5vtm5MDssWkI0ka8o,224171 +pip/_vendor/re-vendor.py,sha256=PcdZ40d0ohMsdJmA4t0AeAWbPXi1tFsvAwA5KE5FGeY,773 +pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972 +pip/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/cachecontrol/__init__.py,sha256=UPyFlz0dIjxusu5ITig9UDFJdSY5LTwijhldn0AfyzU,302 +pip/_vendor/cachecontrol/_cmd.py,sha256=MPxZfZd2LKDzVrs55X3wA1rsI2YuP8evLZSwQj0dIk0,1320 +pip/_vendor/cachecontrol/adapter.py,sha256=RaGYyRA-RA1J0AnE67GzEYFPBu4YH4EQUvQqTKa57iM,4608 +pip/_vendor/cachecontrol/cache.py,sha256=xtl-V-pr9KSt9VvFDRCB9yrHPEvqvbk-5M1vAInZb5k,790 +pip/_vendor/cachecontrol/compat.py,sha256=uyovOpd1ehI3J1XeBqJvcsIp6fvkjBpoQmu_0J2st8c,416 +pip/_vendor/cachecontrol/controller.py,sha256=elDsLcaYA15ncodRmHnWQp6ekU_ocEGtDeGLbsnTjzo,13024 +pip/_vendor/cachecontrol/filewrapper.py,sha256=_K8cStmXqD33m15PfsQ8rlpo6FfXjVbKmjvLXyICRgI,2531 +pip/_vendor/cachecontrol/heuristics.py,sha256=WtJrVsyWjpP9WoUiDVdTZZRNBCz5ZVptaQpYnqofDQU,4141 +pip/_vendor/cachecontrol/serialize.py,sha256=XM6elG9DSNexwaOCgMjUtfrHHW5NAB6TSbIf3x235xs,6536 +pip/_vendor/cachecontrol/wrapper.py,sha256=Kqyu_3TW_54XDudha4-HF21vyEOAJ4ZnRXFysTiLmXA,498 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=uWnUtyMvHY_LULaL_4_IR1F_xPgK5zHfJyRnBq4DnPE,369 +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=FsDug3bwUAQ3okjjfGzxlDaBf2fwVSn1iBKMTL6SyGU,3532 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=XywqxkS9MkCaflTOY_wjrE02neKdywB9YwlOBbP7Ywc,973 +pip/_vendor/colorama/__init__.py,sha256=9xByrTvk9upkL5NGV5It2Eje4-kzNLwa_1lGPWpXoNU,240 +pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 +pip/_vendor/colorama/ansitowin32.py,sha256=gJZB35Lbdjatykd2zrUUnokMzkvcFgscyn_tNxxMFHA,9668 +pip/_vendor/colorama/initialise.py,sha256=cHqVJtb82OG7HUCxvQ2joG7N_CoxbIKbI_fgryZkj20,1917 +pip/_vendor/colorama/win32.py,sha256=_SCEoTK_GA2tU1nhbayKKac-v9Jn98lCPIFOeFMGCHQ,5365 +pip/_vendor/colorama/winterm.py,sha256=V7U7ojwG1q4n6PKripjEvW_htYQi5ueXSM3LUUoqqDY,6290 +pip/_vendor/distlib/__init__.py,sha256=-aUeNNCfiIG_1Tqf19BH0xLNuBKGX1I7lNhcLYgFUEA,581 +pip/_vendor/distlib/compat.py,sha256=FzKlP9dNUMH-j_1LCVnjgx6KgUbpnRjTjYkTkDYRPlI,40801 +pip/_vendor/distlib/database.py,sha256=jniJmYk0Mj2t6gZYbnn68TvQwnVZ0kXyeuf_3AxFclk,49672 +pip/_vendor/distlib/index.py,sha256=Cw8gxFq_7xXvdgExL3efjLAY3EAPDMSL3VA42RkbQBs,21085 +pip/_vendor/distlib/locators.py,sha256=hD_Hm3aSL9DklY9Cxyct2n_74gZ0xNFFGB5L7M6ds14,51013 +pip/_vendor/distlib/manifest.py,sha256=3qEuZhHlDbvyYZ1BZbdapDAivgMgUwWpZ00cmXqcn18,14810 +pip/_vendor/distlib/markers.py,sha256=iRrVWwpyVwjkKJSX8NEQ92_MRMwpROcfNGKCD-Ch1QM,6282 +pip/_vendor/distlib/metadata.py,sha256=hUsf7Qh2Ae4CCkL33qK8ppwC8ZTzT7ep6Hj9RKpijKU,38833 +pip/_vendor/distlib/resources.py,sha256=VFBVbFqLVqDBSQDXcFQHrX1KEcuoDxTK699Ydi_beyc,10766 +pip/_vendor/distlib/scripts.py,sha256=xpehNfISGPTNxQZu02K9Rw2QbNx_2Q4emePv3W5X0iw,15224 +pip/_vendor/distlib/t32.exe,sha256=cp0UAUDDr1tGAx8adlKxWbCHIa-oB3bxev5zYzgAr8E,89088 +pip/_vendor/distlib/t64.exe,sha256=FiljDPcX9qvoe9FYE_9pNEHqbqMnhcCOuI_oLJ4F9F8,97792 +pip/_vendor/distlib/util.py,sha256=E2wU-RZShPMFUMJr9kPmemTULinM4qDzosNPihCuKE0,52991 +pip/_vendor/distlib/version.py,sha256=CgghOUylxGD7dEA2S3MvWjx7mY_2bWsluF0Of3Yxl4Y,23711 +pip/_vendor/distlib/w32.exe,sha256=LItrBJesEqt2QTQuB-yha2YbMegURHmHmdSxhjBqmnc,85504 +pip/_vendor/distlib/w64.exe,sha256=n_PioBC7ltz7sAk1WLbLzZJgS4R2axSy_0HPf8ZCsEg,94208 +pip/_vendor/distlib/wheel.py,sha256=UP53cKxOM5r7bHSS-n5prF6hwJEVsMW9ZNJutOuC26c,39115 +pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 +pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 +pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647 +pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 +pip/_vendor/distlib/_backport/sysconfig.py,sha256=eSEyJg7jxF_eHlHG8IOtl93kb07UoMIRp1wYsPeGi9k,26955 +pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 +pip/_vendor/html5lib/__init__.py,sha256=JsIwmFldk-9raBadPSTS74JrfmJvozc-3aekMi7Hr9s,780 +pip/_vendor/html5lib/_ihatexml.py,sha256=tzXygYmisUmiEUt2v7E1Ab50AKQsrD-SglPRnY75vME,16705 +pip/_vendor/html5lib/_inputstream.py,sha256=C4lX5gUBwebOWy41hYP2ZBpkPVNvxk_hZBm3OVyPZM4,32532 +pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580 +pip/_vendor/html5lib/_utils.py,sha256=bS6THVlL8ZyTcI6CIxiM6xxuHsE8i1j5Ogd3Ha1G84U,4096 +pip/_vendor/html5lib/constants.py,sha256=Dfc1Fv3_9frktgWjg4tbj-CjMMp02Ko9qMe4il1BVdo,83387 +pip/_vendor/html5lib/html5parser.py,sha256=Dmlu9hlq5w_id6mBZyY_sE5LukIACgvG4kpgIsded8Q,117170 +pip/_vendor/html5lib/serializer.py,sha256=Urrsa0cPPLqNX-UbJWS2gUhs_06qVbNxZvUnrmGZK6E,14177 +pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289 +pip/_vendor/html5lib/_trie/_base.py,sha256=6P_AcIoGjtwB2qAlhV8H4VP-ztQxoXFGwt4NyMqG_Kw,979 +pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178 +pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 +pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=DXv-P2vdQ5F3OTWM6QZ6KhyDlAWm90pbfrD1Bk9D_l0,621 +pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 +pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=2Q_JnMscn_tNbV_qpgYN_5M3PnBGfmuvECMKDExHUcY,2742 +pip/_vendor/html5lib/filters/lint.py,sha256=qf5cLrT6xXd8V7GH1R_3lKxIjuJSfpbWTpSwaglYdDw,3365 +pip/_vendor/html5lib/filters/optionaltags.py,sha256=EHig4kM-QiLjuxVJ3FAAFNy-10k4aV6HJbQzHKZ_3u8,10534 +pip/_vendor/html5lib/filters/sanitizer.py,sha256=7PqJrhm6mo3JvaHk2IQW7i74Or7Qtd-FV8UftJIyDys,25112 +pip/_vendor/html5lib/filters/whitespace.py,sha256=KPt067nYTqqi8KLTClyynn4eVzNDC_-MApXNVHRXVX0,1139 +pip/_vendor/html5lib/treeadapters/__init__.py,sha256=l3LcqMSEyoh99Jh_eWjGexHnIvKhLAXoP-LDz88whuM,208 +pip/_vendor/html5lib/treeadapters/genshi.py,sha256=6VIuHDNoExv1JWv3ePj6V5CM-tcyiUSWe5_Hd2ejbwY,1555 +pip/_vendor/html5lib/treeadapters/sax.py,sha256=3of4vvaUYIAic7pngebwJV24hpOS7Zg9ggJa_WQegy4,1661 +pip/_vendor/html5lib/treebuilders/__init__.py,sha256=UlB4orkTgZhFIKQdXrtiWn9cpKSsuhnOQOIHeD0Fv4k,3406 +pip/_vendor/html5lib/treebuilders/base.py,sha256=4vdjm_Z2f_GTQBwKnWlrzVcctTb-K5sfN8pXDaWODiA,13942 +pip/_vendor/html5lib/treebuilders/dom.py,sha256=SY3MsijXyzdNPc8aK5IQsupBoM8J67y56DgNtGvsb9g,8835 +pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764 +pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=CEgwHMIQZvIDFAqct4kqPkVtyKIm9efHFq_VeExEPCA,14161 +pip/_vendor/html5lib/treewalkers/__init__.py,sha256=CFpUOCfLuhAgVJ8NYk9wviCu1khYnv7XRStvyzU1Fws,5544 +pip/_vendor/html5lib/treewalkers/base.py,sha256=ei-2cFbNFd0gRjyaFmxnxZGLNID4o0bHFCH9bMyZ5Bk,4939 +pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 +pip/_vendor/html5lib/treewalkers/etree.py,sha256=8jVLEY2FjgN4RFugwhAh44l9ScVYoDStQFCnlPwvafI,4684 +pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 +pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371 +pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652 +pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096 +pip/_vendor/lockfile/pidlockfile.py,sha256=ukH9uk6NFuxyVmG5QiWw4iKq3fT7MjqUguX95avYPIY,6090 +pip/_vendor/lockfile/sqlitelockfile.py,sha256=o2TMkMRY0iwn-iL1XMRRIFStMUkS4i3ajceeYNntKFg,5506 +pip/_vendor/lockfile/symlinklockfile.py,sha256=ABwXXmvTHvCl5viPblShL3PG-gGsLiT1roAMfDRwhi8,2616 +pip/_vendor/packaging/__about__.py,sha256=zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM,720 +pip/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513 +pip/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860 +pip/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416 +pip/_vendor/packaging/markers.py,sha256=mtg2nphJE1oQO39g1DgsdPsMO-guBBClpR-AEYFrbMg,8230 +pip/_vendor/packaging/requirements.py,sha256=SD7dVJGjdPUqtoHb47qwK6wWJTQd-ZXWjxpJg83UcBA,4327 +pip/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025 +pip/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421 +pip/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556 +pip/_vendor/pkg_resources/__init__.py,sha256=CcwuHtCBZn9OTkmgF9cFpadIAMhlrnZTVKTOo4V2p58,103230 +pip/_vendor/progress/__init__.py,sha256=Wn1074LUDZovd4zfoVYojnPBgOc6ctHbQX7rp_p8lRA,3023 +pip/_vendor/progress/bar.py,sha256=YNPJeRrwYVKFO2nyaEwsQjYByamMWTgJMvQO1NpD-AY,2685 +pip/_vendor/progress/counter.py,sha256=kEqA8jWEdwrc6P_9VaRx7bjOHwk9gxl-Q9oVbQ08v5c,1502 +pip/_vendor/progress/helpers.py,sha256=FehfwZTv-5cCfsbcMlvlUkm3xZ0cRhsev6XVpmeTF4c,2854 +pip/_vendor/progress/spinner.py,sha256=iCVtUQbaJUFHTjn1ZLPQLPYeao4lC9aXAa_HxIeUK6k,1314 +pip/_vendor/requests/__init__.py,sha256=Cde-qxOWcslaEcPvKAJQPFbY8_va8PMbU7Rssr7vViI,2326 +pip/_vendor/requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740 +pip/_vendor/requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794 +pip/_vendor/requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175 +pip/_vendor/requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 +pip/_vendor/requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625 +pip/_vendor/requests/compat.py,sha256=0cgWB43LEX5OrX1O4k-bPbFlIbWXgEd412DSDJtF1Y8,1687 +pip/_vendor/requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208 +pip/_vendor/requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860 +pip/_vendor/requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767 +pip/_vendor/requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532 +pip/_vendor/requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609 +pip/_vendor/requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316 +pip/_vendor/requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012 +pip/_vendor/requests/utils.py,sha256=9d3jqnA8avsF9N1QPmsk2pJgo2pxuExrN2hoIhtLggY,24163 +pip/_vendor/requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384 +pip/_vendor/requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295 +pip/_vendor/requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 +pip/_vendor/requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 +pip/_vendor/requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504 +pip/_vendor/requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 +pip/_vendor/requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 +pip/_vendor/requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 +pip/_vendor/requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 +pip/_vendor/requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 +pip/_vendor/requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 +pip/_vendor/requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 +pip/_vendor/requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 +pip/_vendor/requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 +pip/_vendor/requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 +pip/_vendor/requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 +pip/_vendor/requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 +pip/_vendor/requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 +pip/_vendor/requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 +pip/_vendor/requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 +pip/_vendor/requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 +pip/_vendor/requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 +pip/_vendor/requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 +pip/_vendor/requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348 +pip/_vendor/requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 +pip/_vendor/requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 +pip/_vendor/requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 +pip/_vendor/requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 +pip/_vendor/requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 +pip/_vendor/requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 +pip/_vendor/requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232 +pip/_vendor/requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 +pip/_vendor/requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 +pip/_vendor/requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590 +pip/_vendor/requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 +pip/_vendor/requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 +pip/_vendor/requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764 +pip/_vendor/requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840 +pip/_vendor/requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 +pip/_vendor/requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852 +pip/_vendor/requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553 +pip/_vendor/requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617 +pip/_vendor/requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591 +pip/_vendor/requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599 +pip/_vendor/requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931 +pip/_vendor/requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320 +pip/_vendor/requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092 +pip/_vendor/requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988 +pip/_vendor/requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615 +pip/_vendor/requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937 +pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531 +pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778 +pip/_vendor/requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668 +pip/_vendor/requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 +pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 +pip/_vendor/requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460 +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778 +pip/_vendor/requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892 +pip/_vendor/requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744 +pip/_vendor/requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128 +pip/_vendor/requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165 +pip/_vendor/requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664 +pip/_vendor/requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622 +pip/_vendor/requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596 +pip/_vendor/requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879 +pip/_vendor/webencodings/__init__.py,sha256=t7rAQQxXwalY-ak9hTl73qHjhia9UH-sL-e00qQrBpo,10576 +pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 +pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 +pip/_vendor/webencodings/tests.py,sha256=7vTk7LgOJn_t1XtT_viofZlEJ7cJCzPe_hvVHOkcQl8,6562 +pip/_vendor/webencodings/x_user_defined.py,sha256=72cfPRhbfkRCGkkA8ZnvVV7UnoiLb5uPMhXwhrXiLPk,4306 +pip/commands/__init__.py,sha256=2Uq3HCdjchJD9FL1LB7rd5v6UySVAVizX0W3EX3hIoE,2244 +pip/commands/check.py,sha256=-A7GI1-WZBh9a4P6UoH_aR-J7I8Lz8ly7m3wnCjmevs,1382 +pip/commands/completion.py,sha256=kkPgVX7SUcJ_8Juw5GkgWaxHN9_45wmAr9mGs1zXEEs,2453 +pip/commands/download.py,sha256=8RuuPmSYgAq3iEDTqZY_1PDXRqREdUULHNjWJeAv7Mo,7810 +pip/commands/freeze.py,sha256=h6-yFMpjCjbNj8-gOm5UuoF6cg14N5rPV4TCi3_CeuI,2835 +pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597 +pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982 +pip/commands/install.py,sha256=ovG9p9n1X2NPqMgFVtSuT9kMbLAdx1r3YSSiXSvgOKI,17412 +pip/commands/list.py,sha256=93bCiFyt2Qut_YHkYHJMZHpXladmxsjS-yOtZeb3uqI,11369 +pip/commands/search.py,sha256=oTs9QNdefnrmCV_JeftG0PGiMuYVmiEDF1OUaYsmDao,4502 +pip/commands/show.py,sha256=ZYM57_7U8KP9MQIIyHKQdZxmiEZByy-DRzB697VFoTY,5891 +pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884 +pip/commands/wheel.py,sha256=z5SEhws2YRMb0Ml1IEkg6jFZMLRpLl86bHCrQbYt5zo,7729 +pip/compat/__init__.py,sha256=2Xs_IpsmdRgHbQgQO0c8_lPvHJnQXHyGWxPbLbYJL4c,4672 +pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096 +pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71 +pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487 +pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/operations/check.py,sha256=uwUN9cs1sPo7c0Sj6pRrSv7b22Pk29SXUImTelVchMQ,1590 +pip/operations/freeze.py,sha256=k-7w7LsM-RpPv7ERBzHiPpYkH-GuYfHLyR-Cp_1VPL0,5194 +pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276 +pip/req/req_file.py,sha256=fG9MDsXUNPhmGwxUiwrIXEynyD8Q7s3L47-hLZPDXq0,11926 +pip/req/req_install.py,sha256=gYrH-lwQMmt55VVbav_EtRIPu94cQbHFHm_Kq6AeHbg,46487 +pip/req/req_set.py,sha256=jHspXqcA2FxcF05dgUIAZ5huYPv6bn0wRUX0Z7PKmaA,34462 +pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897 +pip/utils/__init__.py,sha256=HX_wYS15oiYOz-H3qG1Kbi1CY7AGWCNK5jloiD0fauc,27187 +pip/utils/appdirs.py,sha256=kj2LK-I2fC5QnEh_A_v-ev_IQMcXaWWF5DE39sNvCLQ,8811 +pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312 +pip/utils/deprecation.py,sha256=X_FMjtDbMJqfqEkdRrki-mYyIdPB6I6DHUTCA_ChY6M,2232 +pip/utils/encoding.py,sha256=NQxGiFS5GbeAveLZTnx92t5r0PYqvt0iRnP2u9SGG1w,971 +pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899 +pip/utils/glibc.py,sha256=jcQYjt_oJLPKVZB28Kauy4Sw70zS-wawxoU1HHX36_0,2939 +pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866 +pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327 +pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455 +pip/utils/packaging.py,sha256=qhmli14odw6DIhWJgQYS2Q0RrSbr8nXNcG48f5yTRms,2080 +pip/utils/setuptools_build.py,sha256=0blfscmNJW_iZ5DcswJeDB_PbtTEjfK9RL1R1WEDW2E,278 +pip/utils/ui.py,sha256=pbDkSAeumZ6jdZcOJ2yAbx8iBgeP2zfpqNnLJK1gskQ,11597 +pip/vcs/__init__.py,sha256=WafFliUTHMmsSISV8PHp1M5EXDNSWyJr78zKaQmPLdY,12374 +pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803 +pip/vcs/git.py,sha256=5LfWryi78A-2ULjEZJvCTarJ_3l8venwXASlwm8hiug,11197 +pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472 +pip/vcs/subversion.py,sha256=GAuX2Sk7IZvJyEzENKcVld_wGBrQ3fpXDlXjapZEYdI,9350 +pip-9.0.1.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 +pip-9.0.1.dist-info/METADATA,sha256=mvs_tLoKAbECXY_6QHiVWQsagSL-1UjolQTpScT8JSk,2529 +pip-9.0.1.dist-info/RECORD,, +pip-9.0.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +pip-9.0.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68 +pip-9.0.1.dist-info/metadata.json,sha256=aqvkETDy4mHUBob-2Fn5WWlXORi_M2OSfQ2HQCUU_Fk,1565 +pip-9.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +../../Scripts/pip.exe,sha256=Wh18DHhsb7go8fmnuRXWLCZlEVCSk2mZTUIghFIYdbw,98162 +../../Scripts/pip3.exe,sha256=Wh18DHhsb7go8fmnuRXWLCZlEVCSk2mZTUIghFIYdbw,98162 +../../Scripts/pip3.6.exe,sha256=Wh18DHhsb7go8fmnuRXWLCZlEVCSk2mZTUIghFIYdbw,98162 +pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/commands/__pycache__/check.cpython-36.pyc,, +pip/commands/__pycache__/completion.cpython-36.pyc,, +pip/commands/__pycache__/download.cpython-36.pyc,, +pip/commands/__pycache__/freeze.cpython-36.pyc,, +pip/commands/__pycache__/hash.cpython-36.pyc,, +pip/commands/__pycache__/help.cpython-36.pyc,, +pip/commands/__pycache__/install.cpython-36.pyc,, +pip/commands/__pycache__/list.cpython-36.pyc,, +pip/commands/__pycache__/search.cpython-36.pyc,, +pip/commands/__pycache__/show.cpython-36.pyc,, +pip/commands/__pycache__/uninstall.cpython-36.pyc,, +pip/commands/__pycache__/wheel.cpython-36.pyc,, +pip/commands/__pycache__/__init__.cpython-36.pyc,, +pip/compat/__pycache__/dictconfig.cpython-36.pyc,, +pip/compat/__pycache__/__init__.cpython-36.pyc,, +pip/models/__pycache__/index.cpython-36.pyc,, +pip/models/__pycache__/__init__.cpython-36.pyc,, +pip/operations/__pycache__/check.cpython-36.pyc,, +pip/operations/__pycache__/freeze.cpython-36.pyc,, +pip/operations/__pycache__/__init__.cpython-36.pyc,, +pip/req/__pycache__/req_file.cpython-36.pyc,, +pip/req/__pycache__/req_install.cpython-36.pyc,, +pip/req/__pycache__/req_set.cpython-36.pyc,, +pip/req/__pycache__/req_uninstall.cpython-36.pyc,, +pip/req/__pycache__/__init__.cpython-36.pyc,, +pip/utils/__pycache__/appdirs.cpython-36.pyc,, +pip/utils/__pycache__/build.cpython-36.pyc,, +pip/utils/__pycache__/deprecation.cpython-36.pyc,, +pip/utils/__pycache__/encoding.cpython-36.pyc,, +pip/utils/__pycache__/filesystem.cpython-36.pyc,, +pip/utils/__pycache__/glibc.cpython-36.pyc,, +pip/utils/__pycache__/hashes.cpython-36.pyc,, +pip/utils/__pycache__/logging.cpython-36.pyc,, +pip/utils/__pycache__/outdated.cpython-36.pyc,, +pip/utils/__pycache__/packaging.cpython-36.pyc,, +pip/utils/__pycache__/setuptools_build.cpython-36.pyc,, +pip/utils/__pycache__/ui.cpython-36.pyc,, +pip/utils/__pycache__/__init__.cpython-36.pyc,, +pip/vcs/__pycache__/bazaar.cpython-36.pyc,, +pip/vcs/__pycache__/git.cpython-36.pyc,, +pip/vcs/__pycache__/mercurial.cpython-36.pyc,, +pip/vcs/__pycache__/subversion.cpython-36.pyc,, +pip/vcs/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/cache.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/controller.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc,, +pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc,, +pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-36.pyc,, +pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/database.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/index.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/locators.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/manifest.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/util.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/version.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc,, +pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/lint.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc,, +pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc,, +pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc,, +pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc,, +pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-36.pyc,, +pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/_utils.cpython-36.pyc,, +pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-36.pyc,, +pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/markers.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/requirements.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/version.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/__about__.cpython-36.pyc,, +pip/_vendor/packaging/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/pkg_resources/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/bar.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/counter.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc,, +pip/_vendor/progress/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc,, +pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc,, +pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/api.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/auth.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/certs.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/compat.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/models.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/structures.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/utils.cpython-36.pyc,, +pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc,, +pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc,, +pip/_vendor/__pycache__/appdirs.cpython-36.pyc,, +pip/_vendor/__pycache__/distro.cpython-36.pyc,, +pip/_vendor/__pycache__/ipaddress.cpython-36.pyc,, +pip/_vendor/__pycache__/ordereddict.cpython-36.pyc,, +pip/_vendor/__pycache__/pyparsing.cpython-36.pyc,, +pip/_vendor/__pycache__/re-vendor.cpython-36.pyc,, +pip/_vendor/__pycache__/retrying.cpython-36.pyc,, +pip/_vendor/__pycache__/six.cpython-36.pyc,, +pip/_vendor/__pycache__/__init__.cpython-36.pyc,, +pip/__pycache__/basecommand.cpython-36.pyc,, +pip/__pycache__/baseparser.cpython-36.pyc,, +pip/__pycache__/cmdoptions.cpython-36.pyc,, +pip/__pycache__/download.cpython-36.pyc,, +pip/__pycache__/exceptions.cpython-36.pyc,, +pip/__pycache__/index.cpython-36.pyc,, +pip/__pycache__/locations.cpython-36.pyc,, +pip/__pycache__/pep425tags.cpython-36.pyc,, +pip/__pycache__/status_codes.cpython-36.pyc,, +pip/__pycache__/wheel.cpython-36.pyc,, +pip/__pycache__/__init__.cpython-36.pyc,, +pip/__pycache__/__main__.cpython-36.pyc,, diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/WHEEL b/venv/Lib/site-packages/pip-9.0.1.dist-info/WHEEL new file mode 100644 index 00000000..8b6dd1b5 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/entry_points.txt b/venv/Lib/site-packages/pip-9.0.1.dist-info/entry_points.txt new file mode 100644 index 00000000..c02a8d57 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/entry_points.txt @@ -0,0 +1,5 @@ +[console_scripts] +pip = pip:main +pip3 = pip:main +pip3.5 = pip:main + diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/metadata.json b/venv/Lib/site-packages/pip-9.0.1.dist-info/metadata.json new file mode 100644 index 00000000..9eae02c5 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.29.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*", "run_requires": [{"extra": "testing", "requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "test_requires": [{"requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "version": "9.0.1"} \ No newline at end of file diff --git a/venv/Lib/site-packages/pip-9.0.1.dist-info/top_level.txt b/venv/Lib/site-packages/pip-9.0.1.dist-info/top_level.txt new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/venv/Lib/site-packages/pip-9.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/pip/__init__.py b/venv/Lib/site-packages/pip/__init__.py new file mode 100644 index 00000000..acead997 --- /dev/null +++ b/venv/Lib/site-packages/pip/__init__.py @@ -0,0 +1,13 @@ +from typing import List, Optional + +__version__ = "21.3.1" + + +def main(args: Optional[List[str]] = None) -> int: + """This is an internal API only meant for use by pip's own console scripts. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/venv/Lib/site-packages/pip/__main__.py b/venv/Lib/site-packages/pip/__main__.py new file mode 100644 index 00000000..fe34a7b7 --- /dev/null +++ b/venv/Lib/site-packages/pip/__main__.py @@ -0,0 +1,31 @@ +import os +import sys +import warnings + +# Remove '' and current working directory from the first entry +# of sys.path, if present to avoid using current directory +# in pip commands check, freeze, install, list and show, +# when invoked as python -m pip +if sys.path[0] in ("", os.getcwd()): + sys.path.pop(0) + +# If we are running from a wheel, add the wheel to sys.path +# This allows the usage python pip-*.whl/pip install pip-*.whl +if __package__ == "": + # __file__ is pip-*.whl/pip/__main__.py + # first dirname call strips of '/__main__.py', second strips off '/pip' + # Resulting path is the name of the wheel itself + # Add that to sys.path so we can import pip + path = os.path.dirname(os.path.dirname(__file__)) + sys.path.insert(0, path) + +if __name__ == "__main__": + # Work around the error reported in #9540, pending a proper fix. + # Note: It is essential the warning filter is set *before* importing + # pip, as the deprecation happens at import time, not runtime. + warnings.filterwarnings( + "ignore", category=DeprecationWarning, module=".*packaging\\.version" + ) + from pip._internal.cli.main import main as _main + + sys.exit(_main()) diff --git a/venv/Lib/site-packages/pip/_internal/__init__.py b/venv/Lib/site-packages/pip/_internal/__init__.py new file mode 100644 index 00000000..6afb5c62 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/__init__.py @@ -0,0 +1,19 @@ +from typing import List, Optional + +import pip._internal.utils.inject_securetransport # noqa +from pip._internal.utils import _log + +# init_logging() must be called before any call to logging.getLogger() +# which happens at import of most modules. +_log.init_logging() + + +def main(args: (Optional[List[str]]) = None) -> int: + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/venv/Lib/site-packages/pip/_internal/build_env.py b/venv/Lib/site-packages/pip/_internal/build_env.py new file mode 100644 index 00000000..8faf1cf7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/build_env.py @@ -0,0 +1,293 @@ +"""Build Environment used for isolation during sdist building +""" + +import contextlib +import logging +import os +import pathlib +import sys +import textwrap +import zipfile +from collections import OrderedDict +from sysconfig import get_paths +from types import TracebackType +from typing import TYPE_CHECKING, Iterable, Iterator, List, Optional, Set, Tuple, Type + +from pip._vendor.certifi import where +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.version import Version + +from pip import __file__ as pip_location +from pip._internal.cli.spinners import open_spinner +from pip._internal.locations import get_platlib, get_prefixed_libs, get_purelib +from pip._internal.metadata import get_environment +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + +logger = logging.getLogger(__name__) + + +class _Prefix: + def __init__(self, path: str) -> None: + self.path = path + self.setup = False + self.bin_dir = get_paths( + "nt" if os.name == "nt" else "posix_prefix", + vars={"base": path, "platbase": path}, + )["scripts"] + self.lib_dirs = get_prefixed_libs(path) + + +@contextlib.contextmanager +def _create_standalone_pip() -> Iterator[str]: + """Create a "standalone pip" zip file. + + The zip file's content is identical to the currently-running pip. + It will be used to install requirements into the build environment. + """ + source = pathlib.Path(pip_location).resolve().parent + + # Return the current instance if `source` is not a directory. We can't build + # a zip from this, and it likely means the instance is already standalone. + if not source.is_dir(): + yield str(source) + return + + with TempDirectory(kind="standalone-pip") as tmp_dir: + pip_zip = os.path.join(tmp_dir.path, "__env_pip__.zip") + kwargs = {} + if sys.version_info >= (3, 8): + kwargs["strict_timestamps"] = False + with zipfile.ZipFile(pip_zip, "w", **kwargs) as zf: + for child in source.rglob("*"): + zf.write(child, child.relative_to(source.parent).as_posix()) + yield os.path.join(pip_zip, "pip") + + +class BuildEnvironment: + """Creates and manages an isolated environment to install build deps""" + + def __init__(self) -> None: + temp_dir = TempDirectory(kind=tempdir_kinds.BUILD_ENV, globally_managed=True) + + self._prefixes = OrderedDict( + (name, _Prefix(os.path.join(temp_dir.path, name))) + for name in ("normal", "overlay") + ) + + self._bin_dirs: List[str] = [] + self._lib_dirs: List[str] = [] + for prefix in reversed(list(self._prefixes.values())): + self._bin_dirs.append(prefix.bin_dir) + self._lib_dirs.extend(prefix.lib_dirs) + + # Customize site to: + # - ensure .pth files are honored + # - prevent access to system site packages + system_sites = { + os.path.normcase(site) for site in (get_purelib(), get_platlib()) + } + self._site_dir = os.path.join(temp_dir.path, "site") + if not os.path.exists(self._site_dir): + os.mkdir(self._site_dir) + with open(os.path.join(self._site_dir, "sitecustomize.py"), "w") as fp: + fp.write( + textwrap.dedent( + """ + import os, site, sys + + # First, drop system-sites related paths. + original_sys_path = sys.path[:] + known_paths = set() + for path in {system_sites!r}: + site.addsitedir(path, known_paths=known_paths) + system_paths = set( + os.path.normcase(path) + for path in sys.path[len(original_sys_path):] + ) + original_sys_path = [ + path for path in original_sys_path + if os.path.normcase(path) not in system_paths + ] + sys.path = original_sys_path + + # Second, add lib directories. + # ensuring .pth file are processed. + for path in {lib_dirs!r}: + assert not path in sys.path + site.addsitedir(path) + """ + ).format(system_sites=system_sites, lib_dirs=self._lib_dirs) + ) + + def __enter__(self) -> None: + self._save_env = { + name: os.environ.get(name, None) + for name in ("PATH", "PYTHONNOUSERSITE", "PYTHONPATH") + } + + path = self._bin_dirs[:] + old_path = self._save_env["PATH"] + if old_path: + path.extend(old_path.split(os.pathsep)) + + pythonpath = [self._site_dir] + + os.environ.update( + { + "PATH": os.pathsep.join(path), + "PYTHONNOUSERSITE": "1", + "PYTHONPATH": os.pathsep.join(pythonpath), + } + ) + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + for varname, old_value in self._save_env.items(): + if old_value is None: + os.environ.pop(varname, None) + else: + os.environ[varname] = old_value + + def check_requirements( + self, reqs: Iterable[str] + ) -> Tuple[Set[Tuple[str, str]], Set[str]]: + """Return 2 sets: + - conflicting requirements: set of (installed, wanted) reqs tuples + - missing requirements: set of reqs + """ + missing = set() + conflicting = set() + if reqs: + env = get_environment(self._lib_dirs) + for req_str in reqs: + req = Requirement(req_str) + dist = env.get_distribution(req.name) + if not dist: + missing.add(req_str) + continue + if isinstance(dist.version, Version): + installed_req_str = f"{req.name}=={dist.version}" + else: + installed_req_str = f"{req.name}==={dist.version}" + if dist.version not in req.specifier: + conflicting.add((installed_req_str, req_str)) + # FIXME: Consider direct URL? + return conflicting, missing + + def install_requirements( + self, + finder: "PackageFinder", + requirements: Iterable[str], + prefix_as_string: str, + message: str, + ) -> None: + prefix = self._prefixes[prefix_as_string] + assert not prefix.setup + prefix.setup = True + if not requirements: + return + with contextlib.ExitStack() as ctx: + # TODO: Remove this block when dropping 3.6 support. Python 3.6 + # lacks importlib.resources and pep517 has issues loading files in + # a zip, so we fallback to the "old" method by adding the current + # pip directory to the child process's sys.path. + if sys.version_info < (3, 7): + pip_runnable = os.path.dirname(pip_location) + else: + pip_runnable = ctx.enter_context(_create_standalone_pip()) + self._install_requirements( + pip_runnable, + finder, + requirements, + prefix, + message, + ) + + @staticmethod + def _install_requirements( + pip_runnable: str, + finder: "PackageFinder", + requirements: Iterable[str], + prefix: _Prefix, + message: str, + ) -> None: + args: List[str] = [ + sys.executable, + pip_runnable, + "install", + "--ignore-installed", + "--no-user", + "--prefix", + prefix.path, + "--no-warn-script-location", + ] + if logger.getEffectiveLevel() <= logging.DEBUG: + args.append("-v") + for format_control in ("no_binary", "only_binary"): + formats = getattr(finder.format_control, format_control) + args.extend( + ( + "--" + format_control.replace("_", "-"), + ",".join(sorted(formats or {":none:"})), + ) + ) + + index_urls = finder.index_urls + if index_urls: + args.extend(["-i", index_urls[0]]) + for extra_index in index_urls[1:]: + args.extend(["--extra-index-url", extra_index]) + else: + args.append("--no-index") + for link in finder.find_links: + args.extend(["--find-links", link]) + + for host in finder.trusted_hosts: + args.extend(["--trusted-host", host]) + if finder.allow_all_prereleases: + args.append("--pre") + if finder.prefer_binary: + args.append("--prefer-binary") + args.append("--") + args.extend(requirements) + extra_environ = {"_PIP_STANDALONE_CERT": where()} + with open_spinner(message) as spinner: + call_subprocess(args, spinner=spinner, extra_environ=extra_environ) + + +class NoOpBuildEnvironment(BuildEnvironment): + """A no-op drop-in replacement for BuildEnvironment""" + + def __init__(self) -> None: + pass + + def __enter__(self) -> None: + pass + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + pass + + def cleanup(self) -> None: + pass + + def install_requirements( + self, + finder: "PackageFinder", + requirements: Iterable[str], + prefix_as_string: str, + message: str, + ) -> None: + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_internal/cache.py b/venv/Lib/site-packages/pip/_internal/cache.py new file mode 100644 index 00000000..1d6df220 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cache.py @@ -0,0 +1,264 @@ +"""Cache Management +""" + +import hashlib +import json +import logging +import os +from typing import Any, Dict, List, Optional, Set + +from pip._vendor.packaging.tags import Tag, interpreter_name, interpreter_version +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InvalidWheelFilename +from pip._internal.models.format_control import FormatControl +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.urls import path_to_url + +logger = logging.getLogger(__name__) + + +def _hash_dict(d: Dict[str, str]) -> str: + """Return a stable sha224 of a dictionary.""" + s = json.dumps(d, sort_keys=True, separators=(",", ":"), ensure_ascii=True) + return hashlib.sha224(s.encode("ascii")).hexdigest() + + +class Cache: + """An abstract class - provides cache directories for data from links + + + :param cache_dir: The root of the cache. + :param format_control: An object of FormatControl class to limit + binaries being read from the cache. + :param allowed_formats: which formats of files the cache should store. + ('binary' and 'source' are the only allowed values) + """ + + def __init__( + self, cache_dir: str, format_control: FormatControl, allowed_formats: Set[str] + ) -> None: + super().__init__() + assert not cache_dir or os.path.isabs(cache_dir) + self.cache_dir = cache_dir or None + self.format_control = format_control + self.allowed_formats = allowed_formats + + _valid_formats = {"source", "binary"} + assert self.allowed_formats.union(_valid_formats) == _valid_formats + + def _get_cache_path_parts(self, link: Link) -> List[str]: + """Get parts of part that must be os.path.joined with cache_dir""" + + # We want to generate an url to use as our cache key, we don't want to + # just re-use the URL because it might have other items in the fragment + # and we don't care about those. + key_parts = {"url": link.url_without_fragment} + if link.hash_name is not None and link.hash is not None: + key_parts[link.hash_name] = link.hash + if link.subdirectory_fragment: + key_parts["subdirectory"] = link.subdirectory_fragment + + # Include interpreter name, major and minor version in cache key + # to cope with ill-behaved sdists that build a different wheel + # depending on the python version their setup.py is being run on, + # and don't encode the difference in compatibility tags. + # https://github.com/pypa/pip/issues/7296 + key_parts["interpreter_name"] = interpreter_name() + key_parts["interpreter_version"] = interpreter_version() + + # Encode our key url with sha224, we'll use this because it has similar + # security properties to sha256, but with a shorter total output (and + # thus less secure). However the differences don't make a lot of + # difference for our use case here. + hashed = _hash_dict(key_parts) + + # We want to nest the directories some to prevent having a ton of top + # level directories where we might run out of sub directories on some + # FS. + parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] + + return parts + + def _get_candidates(self, link: Link, canonical_package_name: str) -> List[Any]: + can_not_cache = not self.cache_dir or not canonical_package_name or not link + if can_not_cache: + return [] + + formats = self.format_control.get_allowed_formats(canonical_package_name) + if not self.allowed_formats.intersection(formats): + return [] + + candidates = [] + path = self.get_path_for_link(link) + if os.path.isdir(path): + for candidate in os.listdir(path): + candidates.append((candidate, path)) + return candidates + + def get_path_for_link(self, link: Link) -> str: + """Return a directory to store cached items in for link.""" + raise NotImplementedError() + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + """Returns a link to a cached item if it exists, otherwise returns the + passed link. + """ + raise NotImplementedError() + + +class SimpleWheelCache(Cache): + """A cache of wheels for future installs.""" + + def __init__(self, cache_dir: str, format_control: FormatControl) -> None: + super().__init__(cache_dir, format_control, {"binary"}) + + def get_path_for_link(self, link: Link) -> str: + """Return a directory to store cached wheels for link + + Because there are M wheels for any one sdist, we provide a directory + to cache them in, and then consult that directory when looking up + cache hits. + + We only insert things into the cache if they have plausible version + numbers, so that we don't contaminate the cache with things that were + not unique. E.g. ./package might have dozens of installs done for it + and build a version of 0.0...and if we built and cached a wheel, we'd + end up using the same wheel even if the source has been edited. + + :param link: The link of the sdist for which this will cache wheels. + """ + parts = self._get_cache_path_parts(link) + assert self.cache_dir + # Store wheels within the root cache_dir + return os.path.join(self.cache_dir, "wheels", *parts) + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + candidates = [] + + if not package_name: + return link + + canonical_package_name = canonicalize_name(package_name) + for wheel_name, wheel_dir in self._get_candidates(link, canonical_package_name): + try: + wheel = Wheel(wheel_name) + except InvalidWheelFilename: + continue + if canonicalize_name(wheel.name) != canonical_package_name: + logger.debug( + "Ignoring cached wheel %s for %s as it " + "does not match the expected distribution name %s.", + wheel_name, + link, + package_name, + ) + continue + if not wheel.supported(supported_tags): + # Built for a different python/arch/etc + continue + candidates.append( + ( + wheel.support_index_min(supported_tags), + wheel_name, + wheel_dir, + ) + ) + + if not candidates: + return link + + _, wheel_name, wheel_dir = min(candidates) + return Link(path_to_url(os.path.join(wheel_dir, wheel_name))) + + +class EphemWheelCache(SimpleWheelCache): + """A SimpleWheelCache that creates it's own temporary cache directory""" + + def __init__(self, format_control: FormatControl) -> None: + self._temp_dir = TempDirectory( + kind=tempdir_kinds.EPHEM_WHEEL_CACHE, + globally_managed=True, + ) + + super().__init__(self._temp_dir.path, format_control) + + +class CacheEntry: + def __init__( + self, + link: Link, + persistent: bool, + ): + self.link = link + self.persistent = persistent + + +class WheelCache(Cache): + """Wraps EphemWheelCache and SimpleWheelCache into a single Cache + + This Cache allows for gracefully degradation, using the ephem wheel cache + when a certain link is not found in the simple wheel cache first. + """ + + def __init__(self, cache_dir: str, format_control: FormatControl) -> None: + super().__init__(cache_dir, format_control, {"binary"}) + self._wheel_cache = SimpleWheelCache(cache_dir, format_control) + self._ephem_cache = EphemWheelCache(format_control) + + def get_path_for_link(self, link: Link) -> str: + return self._wheel_cache.get_path_for_link(link) + + def get_ephem_path_for_link(self, link: Link) -> str: + return self._ephem_cache.get_path_for_link(link) + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + cache_entry = self.get_cache_entry(link, package_name, supported_tags) + if cache_entry is None: + return link + return cache_entry.link + + def get_cache_entry( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Optional[CacheEntry]: + """Returns a CacheEntry with a link to a cached item if it exists or + None. The cache entry indicates if the item was found in the persistent + or ephemeral cache. + """ + retval = self._wheel_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return CacheEntry(retval, persistent=True) + + retval = self._ephem_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return CacheEntry(retval, persistent=False) + + return None diff --git a/venv/Lib/site-packages/pip/_internal/cli/__init__.py b/venv/Lib/site-packages/pip/_internal/cli/__init__.py new file mode 100644 index 00000000..e589bb91 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/__init__.py @@ -0,0 +1,4 @@ +"""Subpackage containing all of pip's command line interface related code +""" + +# This file intentionally does not import submodules diff --git a/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py b/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py new file mode 100644 index 00000000..3cad1486 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py @@ -0,0 +1,163 @@ +"""Logic that powers autocompletion installed by ``pip completion``. +""" + +import optparse +import os +import sys +from itertools import chain +from typing import Any, Iterable, List, Optional + +from pip._internal.cli.main_parser import create_main_parser +from pip._internal.commands import commands_dict, create_command +from pip._internal.metadata import get_default_environment + + +def autocomplete() -> None: + """Entry Point for completion of main and subcommand options.""" + # Don't complete if user hasn't sourced bash_completion file. + if "PIP_AUTO_COMPLETE" not in os.environ: + return + cwords = os.environ["COMP_WORDS"].split()[1:] + cword = int(os.environ["COMP_CWORD"]) + try: + current = cwords[cword - 1] + except IndexError: + current = "" + + parser = create_main_parser() + subcommands = list(commands_dict) + options = [] + + # subcommand + subcommand_name: Optional[str] = None + for word in cwords: + if word in subcommands: + subcommand_name = word + break + # subcommand options + if subcommand_name is not None: + # special case: 'help' subcommand has no options + if subcommand_name == "help": + sys.exit(1) + # special case: list locally installed dists for show and uninstall + should_list_installed = not current.startswith("-") and subcommand_name in [ + "show", + "uninstall", + ] + if should_list_installed: + env = get_default_environment() + lc = current.lower() + installed = [ + dist.canonical_name + for dist in env.iter_installed_distributions(local_only=True) + if dist.canonical_name.startswith(lc) + and dist.canonical_name not in cwords[1:] + ] + # if there are no dists installed, fall back to option completion + if installed: + for dist in installed: + print(dist) + sys.exit(1) + + subcommand = create_command(subcommand_name) + + for opt in subcommand.parser.option_list_all: + if opt.help != optparse.SUPPRESS_HELP: + for opt_str in opt._long_opts + opt._short_opts: + options.append((opt_str, opt.nargs)) + + # filter out previously specified options from available options + prev_opts = [x.split("=")[0] for x in cwords[1 : cword - 1]] + options = [(x, v) for (x, v) in options if x not in prev_opts] + # filter options by current input + options = [(k, v) for k, v in options if k.startswith(current)] + # get completion type given cwords and available subcommand options + completion_type = get_path_completion_type( + cwords, + cword, + subcommand.parser.option_list_all, + ) + # get completion files and directories if ``completion_type`` is + # ````, ```` or ```` + if completion_type: + paths = auto_complete_paths(current, completion_type) + options = [(path, 0) for path in paths] + for option in options: + opt_label = option[0] + # append '=' to options which require args + if option[1] and option[0][:2] == "--": + opt_label += "=" + print(opt_label) + else: + # show main parser options only when necessary + + opts = [i.option_list for i in parser.option_groups] + opts.append(parser.option_list) + flattened_opts = chain.from_iterable(opts) + if current.startswith("-"): + for opt in flattened_opts: + if opt.help != optparse.SUPPRESS_HELP: + subcommands += opt._long_opts + opt._short_opts + else: + # get completion type given cwords and all available options + completion_type = get_path_completion_type(cwords, cword, flattened_opts) + if completion_type: + subcommands = list(auto_complete_paths(current, completion_type)) + + print(" ".join([x for x in subcommands if x.startswith(current)])) + sys.exit(1) + + +def get_path_completion_type( + cwords: List[str], cword: int, opts: Iterable[Any] +) -> Optional[str]: + """Get the type of path completion (``file``, ``dir``, ``path`` or None) + + :param cwords: same as the environmental variable ``COMP_WORDS`` + :param cword: same as the environmental variable ``COMP_CWORD`` + :param opts: The available options to check + :return: path completion type (``file``, ``dir``, ``path`` or None) + """ + if cword < 2 or not cwords[cword - 2].startswith("-"): + return None + for opt in opts: + if opt.help == optparse.SUPPRESS_HELP: + continue + for o in str(opt).split("/"): + if cwords[cword - 2].split("=")[0] == o: + if not opt.metavar or any( + x in ("path", "file", "dir") for x in opt.metavar.split("/") + ): + return opt.metavar + return None + + +def auto_complete_paths(current: str, completion_type: str) -> Iterable[str]: + """If ``completion_type`` is ``file`` or ``path``, list all regular files + and directories starting with ``current``; otherwise only list directories + starting with ``current``. + + :param current: The word to be completed + :param completion_type: path completion type(`file`, `path` or `dir`)i + :return: A generator of regular files and/or directories + """ + directory, filename = os.path.split(current) + current_path = os.path.abspath(directory) + # Don't complete paths if they can't be accessed + if not os.access(current_path, os.R_OK): + return + filename = os.path.normcase(filename) + # list all files that start with ``filename`` + file_list = ( + x for x in os.listdir(current_path) if os.path.normcase(x).startswith(filename) + ) + for f in file_list: + opt = os.path.join(current_path, f) + comp_file = os.path.normcase(os.path.join(directory, f)) + # complete regular files when there is not ```` after option + # complete directories when there is ````, ```` or + # ````after option + if completion_type != "dir" and os.path.isfile(opt): + yield comp_file + elif os.path.isdir(opt): + yield os.path.join(comp_file, "") diff --git a/venv/Lib/site-packages/pip/_internal/cli/base_command.py b/venv/Lib/site-packages/pip/_internal/cli/base_command.py new file mode 100644 index 00000000..0afe7e75 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/base_command.py @@ -0,0 +1,214 @@ +"""Base Command class, and related routines""" + +import functools +import logging +import logging.config +import optparse +import os +import sys +import traceback +from optparse import Values +from typing import Any, Callable, List, Optional, Tuple + +from pip._internal.cli import cmdoptions +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip._internal.cli.status_codes import ( + ERROR, + PREVIOUS_BUILD_DIR_ERROR, + UNKNOWN_ERROR, + VIRTUALENV_NOT_FOUND, +) +from pip._internal.exceptions import ( + BadCommand, + CommandError, + InstallationError, + NetworkConnectionError, + PreviousBuildDirError, + UninstallationError, +) +from pip._internal.utils.filesystem import check_path_owner +from pip._internal.utils.logging import BrokenStdoutLoggingError, setup_logging +from pip._internal.utils.misc import get_prog, normalize_path +from pip._internal.utils.temp_dir import TempDirectoryTypeRegistry as TempDirRegistry +from pip._internal.utils.temp_dir import global_tempdir_manager, tempdir_registry +from pip._internal.utils.virtualenv import running_under_virtualenv + +__all__ = ["Command"] + +logger = logging.getLogger(__name__) + + +class Command(CommandContextMixIn): + usage: str = "" + ignore_require_venv: bool = False + + def __init__(self, name: str, summary: str, isolated: bool = False) -> None: + super().__init__() + + self.name = name + self.summary = summary + self.parser = ConfigOptionParser( + usage=self.usage, + prog=f"{get_prog()} {name}", + formatter=UpdatingDefaultsHelpFormatter(), + add_help_option=False, + name=name, + description=self.__doc__, + isolated=isolated, + ) + + self.tempdir_registry: Optional[TempDirRegistry] = None + + # Commands should add options to this option group + optgroup_name = f"{self.name.capitalize()} Options" + self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name) + + # Add the general options + gen_opts = cmdoptions.make_option_group( + cmdoptions.general_group, + self.parser, + ) + self.parser.add_option_group(gen_opts) + + self.add_options() + + def add_options(self) -> None: + pass + + def handle_pip_version_check(self, options: Values) -> None: + """ + This is a no-op so that commands by default do not do the pip version + check. + """ + # Make sure we do the pip version check if the index_group options + # are present. + assert not hasattr(options, "no_index") + + def run(self, options: Values, args: List[str]) -> int: + raise NotImplementedError + + def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]: + # factored out for testability + return self.parser.parse_args(args) + + def main(self, args: List[str]) -> int: + try: + with self.main_context(): + return self._main(args) + finally: + logging.shutdown() + + def _main(self, args: List[str]) -> int: + # We must initialize this before the tempdir manager, otherwise the + # configuration would not be accessible by the time we clean up the + # tempdir manager. + self.tempdir_registry = self.enter_context(tempdir_registry()) + # Intentionally set as early as possible so globally-managed temporary + # directories are available to the rest of the code. + self.enter_context(global_tempdir_manager()) + + options, args = self.parse_args(args) + + # Set verbosity so that it can be used elsewhere. + self.verbosity = options.verbose - options.quiet + + level_number = setup_logging( + verbosity=self.verbosity, + no_color=options.no_color, + user_log_file=options.log, + ) + + # TODO: Try to get these passing down from the command? + # without resorting to os.environ to hold these. + # This also affects isolated builds and it should. + + if options.no_input: + os.environ["PIP_NO_INPUT"] = "1" + + if options.exists_action: + os.environ["PIP_EXISTS_ACTION"] = " ".join(options.exists_action) + + if options.require_venv and not self.ignore_require_venv: + # If a venv is required check if it can really be found + if not running_under_virtualenv(): + logger.critical("Could not find an activated virtualenv (required).") + sys.exit(VIRTUALENV_NOT_FOUND) + + if options.cache_dir: + options.cache_dir = normalize_path(options.cache_dir) + if not check_path_owner(options.cache_dir): + logger.warning( + "The directory '%s' or its parent directory is not owned " + "or is not writable by the current user. The cache " + "has been disabled. Check the permissions and owner of " + "that directory. If executing pip with sudo, you should " + "use sudo's -H flag.", + options.cache_dir, + ) + options.cache_dir = None + + if "2020-resolver" in options.features_enabled: + logger.warning( + "--use-feature=2020-resolver no longer has any effect, " + "since it is now the default dependency resolver in pip. " + "This will become an error in pip 21.0." + ) + + def intercepts_unhandled_exc( + run_func: Callable[..., int] + ) -> Callable[..., int]: + @functools.wraps(run_func) + def exc_logging_wrapper(*args: Any) -> int: + try: + status = run_func(*args) + assert isinstance(status, int) + return status + except PreviousBuildDirError as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return PREVIOUS_BUILD_DIR_ERROR + except ( + InstallationError, + UninstallationError, + BadCommand, + NetworkConnectionError, + ) as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except CommandError as exc: + logger.critical("%s", exc) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except BrokenStdoutLoggingError: + # Bypass our logger and write any remaining messages to + # stderr because stdout no longer works. + print("ERROR: Pipe to stdout was broken", file=sys.stderr) + if level_number <= logging.DEBUG: + traceback.print_exc(file=sys.stderr) + + return ERROR + except KeyboardInterrupt: + logger.critical("Operation cancelled by user") + logger.debug("Exception information:", exc_info=True) + + return ERROR + except BaseException: + logger.critical("Exception:", exc_info=True) + + return UNKNOWN_ERROR + + return exc_logging_wrapper + + try: + if not options.debug_mode: + run = intercepts_unhandled_exc(self.run) + else: + run = self.run + return run(options, args) + finally: + self.handle_pip_version_check(options) diff --git a/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py b/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py new file mode 100644 index 00000000..626fd004 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py @@ -0,0 +1,1010 @@ +""" +shared options and groups + +The principle here is to define options once, but *not* instantiate them +globally. One reason being that options with action='append' can carry state +between parses. pip parses general options twice internally, and shouldn't +pass on state. To be consistent, all options will follow this design. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import os +import textwrap +import warnings +from functools import partial +from optparse import SUPPRESS_HELP, Option, OptionGroup, OptionParser, Values +from textwrap import dedent +from typing import Any, Callable, Dict, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.parser import ConfigOptionParser +from pip._internal.cli.progress_bars import BAR_TYPES +from pip._internal.exceptions import CommandError +from pip._internal.locations import USER_CACHE_DIR, get_src_prefix +from pip._internal.models.format_control import FormatControl +from pip._internal.models.index import PyPI +from pip._internal.models.target_python import TargetPython +from pip._internal.utils.hashes import STRONG_HASHES +from pip._internal.utils.misc import strtobool + + +def raise_option_error(parser: OptionParser, option: Option, msg: str) -> None: + """ + Raise an option parsing error using parser.error(). + + Args: + parser: an OptionParser instance. + option: an Option instance. + msg: the error text. + """ + msg = f"{option} error: {msg}" + msg = textwrap.fill(" ".join(msg.split())) + parser.error(msg) + + +def make_option_group(group: Dict[str, Any], parser: ConfigOptionParser) -> OptionGroup: + """ + Return an OptionGroup object + group -- assumed to be dict with 'name' and 'options' keys + parser -- an optparse Parser + """ + option_group = OptionGroup(parser, group["name"]) + for option in group["options"]: + option_group.add_option(option()) + return option_group + + +def check_install_build_global( + options: Values, check_options: Optional[Values] = None +) -> None: + """Disable wheels if per-setup.py call options are set. + + :param options: The OptionParser options to update. + :param check_options: The options to check, if not supplied defaults to + options. + """ + if check_options is None: + check_options = options + + def getname(n: str) -> Optional[Any]: + return getattr(check_options, n, None) + + names = ["build_options", "global_options", "install_options"] + if any(map(getname, names)): + control = options.format_control + control.disallow_binaries() + warnings.warn( + "Disabling all use of wheels due to the use of --build-option " + "/ --global-option / --install-option.", + stacklevel=2, + ) + + +def check_dist_restriction(options: Values, check_target: bool = False) -> None: + """Function for determining if custom platform options are allowed. + + :param options: The OptionParser options. + :param check_target: Whether or not to check if --target is being used. + """ + dist_restriction_set = any( + [ + options.python_version, + options.platforms, + options.abis, + options.implementation, + ] + ) + + binary_only = FormatControl(set(), {":all:"}) + sdist_dependencies_allowed = ( + options.format_control != binary_only and not options.ignore_dependencies + ) + + # Installations or downloads using dist restrictions must not combine + # source distributions and dist-specific wheels, as they are not + # guaranteed to be locally compatible. + if dist_restriction_set and sdist_dependencies_allowed: + raise CommandError( + "When restricting platform and interpreter constraints using " + "--python-version, --platform, --abi, or --implementation, " + "either --no-deps must be set, or --only-binary=:all: must be " + "set and --no-binary must not be set (or must be set to " + ":none:)." + ) + + if check_target: + if dist_restriction_set and not options.target_dir: + raise CommandError( + "Can not use any platform or abi specific options unless " + "installing via '--target'" + ) + + +def _path_option_check(option: Option, opt: str, value: str) -> str: + return os.path.expanduser(value) + + +def _package_name_option_check(option: Option, opt: str, value: str) -> str: + return canonicalize_name(value) + + +class PipOption(Option): + TYPES = Option.TYPES + ("path", "package_name") + TYPE_CHECKER = Option.TYPE_CHECKER.copy() + TYPE_CHECKER["package_name"] = _package_name_option_check + TYPE_CHECKER["path"] = _path_option_check + + +########### +# options # +########### + +help_: Callable[..., Option] = partial( + Option, + "-h", + "--help", + dest="help", + action="help", + help="Show help.", +) + +debug_mode: Callable[..., Option] = partial( + Option, + "--debug", + dest="debug_mode", + action="store_true", + default=False, + help=( + "Let unhandled exceptions propagate outside the main subroutine, " + "instead of logging them to stderr." + ), +) + +isolated_mode: Callable[..., Option] = partial( + Option, + "--isolated", + dest="isolated_mode", + action="store_true", + default=False, + help=( + "Run pip in an isolated mode, ignoring environment variables and user " + "configuration." + ), +) + +require_virtualenv: Callable[..., Option] = partial( + Option, + # Run only if inside a virtualenv, bail if not. + "--require-virtualenv", + "--require-venv", + dest="require_venv", + action="store_true", + default=False, + help=SUPPRESS_HELP, +) + +verbose: Callable[..., Option] = partial( + Option, + "-v", + "--verbose", + dest="verbose", + action="count", + default=0, + help="Give more output. Option is additive, and can be used up to 3 times.", +) + +no_color: Callable[..., Option] = partial( + Option, + "--no-color", + dest="no_color", + action="store_true", + default=False, + help="Suppress colored output.", +) + +version: Callable[..., Option] = partial( + Option, + "-V", + "--version", + dest="version", + action="store_true", + help="Show version and exit.", +) + +quiet: Callable[..., Option] = partial( + Option, + "-q", + "--quiet", + dest="quiet", + action="count", + default=0, + help=( + "Give less output. Option is additive, and can be used up to 3" + " times (corresponding to WARNING, ERROR, and CRITICAL logging" + " levels)." + ), +) + +progress_bar: Callable[..., Option] = partial( + Option, + "--progress-bar", + dest="progress_bar", + type="choice", + choices=list(BAR_TYPES.keys()), + default="on", + help=( + "Specify type of progress to be displayed [" + + "|".join(BAR_TYPES.keys()) + + "] (default: %default)" + ), +) + +log: Callable[..., Option] = partial( + PipOption, + "--log", + "--log-file", + "--local-log", + dest="log", + metavar="path", + type="path", + help="Path to a verbose appending log.", +) + +no_input: Callable[..., Option] = partial( + Option, + # Don't ask for input + "--no-input", + dest="no_input", + action="store_true", + default=False, + help="Disable prompting for input.", +) + +proxy: Callable[..., Option] = partial( + Option, + "--proxy", + dest="proxy", + type="str", + default="", + help="Specify a proxy in the form [user:passwd@]proxy.server:port.", +) + +retries: Callable[..., Option] = partial( + Option, + "--retries", + dest="retries", + type="int", + default=5, + help="Maximum number of retries each connection should attempt " + "(default %default times).", +) + +timeout: Callable[..., Option] = partial( + Option, + "--timeout", + "--default-timeout", + metavar="sec", + dest="timeout", + type="float", + default=15, + help="Set the socket timeout (default %default seconds).", +) + + +def exists_action() -> Option: + return Option( + # Option when path already exist + "--exists-action", + dest="exists_action", + type="choice", + choices=["s", "i", "w", "b", "a"], + default=[], + action="append", + metavar="action", + help="Default action when a path already exists: " + "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.", + ) + + +cert: Callable[..., Option] = partial( + PipOption, + "--cert", + dest="cert", + type="path", + metavar="path", + help=( + "Path to PEM-encoded CA certificate bundle. " + "If provided, overrides the default. " + "See 'SSL Certificate Verification' in pip documentation " + "for more information." + ), +) + +client_cert: Callable[..., Option] = partial( + PipOption, + "--client-cert", + dest="client_cert", + type="path", + default=None, + metavar="path", + help="Path to SSL client certificate, a single file containing the " + "private key and the certificate in PEM format.", +) + +index_url: Callable[..., Option] = partial( + Option, + "-i", + "--index-url", + "--pypi-url", + dest="index_url", + metavar="URL", + default=PyPI.simple_url, + help="Base URL of the Python Package Index (default %default). " + "This should point to a repository compliant with PEP 503 " + "(the simple repository API) or a local directory laid out " + "in the same format.", +) + + +def extra_index_url() -> Option: + return Option( + "--extra-index-url", + dest="extra_index_urls", + metavar="URL", + action="append", + default=[], + help="Extra URLs of package indexes to use in addition to " + "--index-url. Should follow the same rules as " + "--index-url.", + ) + + +no_index: Callable[..., Option] = partial( + Option, + "--no-index", + dest="no_index", + action="store_true", + default=False, + help="Ignore package index (only looking at --find-links URLs instead).", +) + + +def find_links() -> Option: + return Option( + "-f", + "--find-links", + dest="find_links", + action="append", + default=[], + metavar="url", + help="If a URL or path to an html file, then parse for links to " + "archives such as sdist (.tar.gz) or wheel (.whl) files. " + "If a local path or file:// URL that's a directory, " + "then look for archives in the directory listing. " + "Links to VCS project URLs are not supported.", + ) + + +def trusted_host() -> Option: + return Option( + "--trusted-host", + dest="trusted_hosts", + action="append", + metavar="HOSTNAME", + default=[], + help="Mark this host or host:port pair as trusted, even though it " + "does not have valid or any HTTPS.", + ) + + +def constraints() -> Option: + return Option( + "-c", + "--constraint", + dest="constraints", + action="append", + default=[], + metavar="file", + help="Constrain versions using the given constraints file. " + "This option can be used multiple times.", + ) + + +def requirements() -> Option: + return Option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help="Install from the given requirements file. " + "This option can be used multiple times.", + ) + + +def editable() -> Option: + return Option( + "-e", + "--editable", + dest="editables", + action="append", + default=[], + metavar="path/url", + help=( + "Install a project in editable mode (i.e. setuptools " + '"develop mode") from a local project path or a VCS url.' + ), + ) + + +def _handle_src(option: Option, opt_str: str, value: str, parser: OptionParser) -> None: + value = os.path.abspath(value) + setattr(parser.values, option.dest, value) + + +src: Callable[..., Option] = partial( + PipOption, + "--src", + "--source", + "--source-dir", + "--source-directory", + dest="src_dir", + type="path", + metavar="dir", + default=get_src_prefix(), + action="callback", + callback=_handle_src, + help="Directory to check out editable projects into. " + 'The default in a virtualenv is "/src". ' + 'The default for global installs is "/src".', +) + + +def _get_format_control(values: Values, option: Option) -> Any: + """Get a format_control object.""" + return getattr(values, option.dest) + + +def _handle_no_binary( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, + existing.no_binary, + existing.only_binary, + ) + + +def _handle_only_binary( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, + existing.only_binary, + existing.no_binary, + ) + + +def no_binary() -> Option: + format_control = FormatControl(set(), set()) + return Option( + "--no-binary", + dest="format_control", + action="callback", + callback=_handle_no_binary, + type="str", + default=format_control, + help="Do not use binary packages. Can be supplied multiple times, and " + 'each time adds to the existing value. Accepts either ":all:" to ' + 'disable all binary packages, ":none:" to empty the set (notice ' + "the colons), or one or more package names with commas between " + "them (no colons). Note that some packages are tricky to compile " + "and may fail to install when this option is used on them.", + ) + + +def only_binary() -> Option: + format_control = FormatControl(set(), set()) + return Option( + "--only-binary", + dest="format_control", + action="callback", + callback=_handle_only_binary, + type="str", + default=format_control, + help="Do not use source packages. Can be supplied multiple times, and " + 'each time adds to the existing value. Accepts either ":all:" to ' + 'disable all source packages, ":none:" to empty the set, or one ' + "or more package names with commas between them. Packages " + "without binary distributions will fail to install when this " + "option is used on them.", + ) + + +platforms: Callable[..., Option] = partial( + Option, + "--platform", + dest="platforms", + metavar="platform", + action="append", + default=None, + help=( + "Only use wheels compatible with . Defaults to the " + "platform of the running system. Use this option multiple times to " + "specify multiple platforms supported by the target interpreter." + ), +) + + +# This was made a separate function for unit-testing purposes. +def _convert_python_version(value: str) -> Tuple[Tuple[int, ...], Optional[str]]: + """ + Convert a version string like "3", "37", or "3.7.3" into a tuple of ints. + + :return: A 2-tuple (version_info, error_msg), where `error_msg` is + non-None if and only if there was a parsing error. + """ + if not value: + # The empty string is the same as not providing a value. + return (None, None) + + parts = value.split(".") + if len(parts) > 3: + return ((), "at most three version parts are allowed") + + if len(parts) == 1: + # Then we are in the case of "3" or "37". + value = parts[0] + if len(value) > 1: + parts = [value[0], value[1:]] + + try: + version_info = tuple(int(part) for part in parts) + except ValueError: + return ((), "each version part must be an integer") + + return (version_info, None) + + +def _handle_python_version( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + """ + Handle a provided --python-version value. + """ + version_info, error_msg = _convert_python_version(value) + if error_msg is not None: + msg = "invalid --python-version value: {!r}: {}".format( + value, + error_msg, + ) + raise_option_error(parser, option=option, msg=msg) + + parser.values.python_version = version_info + + +python_version: Callable[..., Option] = partial( + Option, + "--python-version", + dest="python_version", + metavar="python_version", + action="callback", + callback=_handle_python_version, + type="str", + default=None, + help=dedent( + """\ + The Python interpreter version to use for wheel and "Requires-Python" + compatibility checks. Defaults to a version derived from the running + interpreter. The version can be specified using up to three dot-separated + integers (e.g. "3" for 3.0.0, "3.7" for 3.7.0, or "3.7.3"). A major-minor + version can also be given as a string without dots (e.g. "37" for 3.7.0). + """ + ), +) + + +implementation: Callable[..., Option] = partial( + Option, + "--implementation", + dest="implementation", + metavar="implementation", + default=None, + help=( + "Only use wheels compatible with Python " + "implementation , e.g. 'pp', 'jy', 'cp', " + " or 'ip'. If not specified, then the current " + "interpreter implementation is used. Use 'py' to force " + "implementation-agnostic wheels." + ), +) + + +abis: Callable[..., Option] = partial( + Option, + "--abi", + dest="abis", + metavar="abi", + action="append", + default=None, + help=( + "Only use wheels compatible with Python abi , e.g. 'pypy_41'. " + "If not specified, then the current interpreter abi tag is used. " + "Use this option multiple times to specify multiple abis supported " + "by the target interpreter. Generally you will need to specify " + "--implementation, --platform, and --python-version when using this " + "option." + ), +) + + +def add_target_python_options(cmd_opts: OptionGroup) -> None: + cmd_opts.add_option(platforms()) + cmd_opts.add_option(python_version()) + cmd_opts.add_option(implementation()) + cmd_opts.add_option(abis()) + + +def make_target_python(options: Values) -> TargetPython: + target_python = TargetPython( + platforms=options.platforms, + py_version_info=options.python_version, + abis=options.abis, + implementation=options.implementation, + ) + + return target_python + + +def prefer_binary() -> Option: + return Option( + "--prefer-binary", + dest="prefer_binary", + action="store_true", + default=False, + help="Prefer older binary packages over newer source packages.", + ) + + +cache_dir: Callable[..., Option] = partial( + PipOption, + "--cache-dir", + dest="cache_dir", + default=USER_CACHE_DIR, + metavar="dir", + type="path", + help="Store the cache data in .", +) + + +def _handle_no_cache_dir( + option: Option, opt: str, value: str, parser: OptionParser +) -> None: + """ + Process a value provided for the --no-cache-dir option. + + This is an optparse.Option callback for the --no-cache-dir option. + """ + # The value argument will be None if --no-cache-dir is passed via the + # command-line, since the option doesn't accept arguments. However, + # the value can be non-None if the option is triggered e.g. by an + # environment variable, like PIP_NO_CACHE_DIR=true. + if value is not None: + # Then parse the string value to get argument error-checking. + try: + strtobool(value) + except ValueError as exc: + raise_option_error(parser, option=option, msg=str(exc)) + + # Originally, setting PIP_NO_CACHE_DIR to a value that strtobool() + # converted to 0 (like "false" or "no") caused cache_dir to be disabled + # rather than enabled (logic would say the latter). Thus, we disable + # the cache directory not just on values that parse to True, but (for + # backwards compatibility reasons) also on values that parse to False. + # In other words, always set it to False if the option is provided in + # some (valid) form. + parser.values.cache_dir = False + + +no_cache: Callable[..., Option] = partial( + Option, + "--no-cache-dir", + dest="cache_dir", + action="callback", + callback=_handle_no_cache_dir, + help="Disable the cache.", +) + +no_deps: Callable[..., Option] = partial( + Option, + "--no-deps", + "--no-dependencies", + dest="ignore_dependencies", + action="store_true", + default=False, + help="Don't install package dependencies.", +) + +ignore_requires_python: Callable[..., Option] = partial( + Option, + "--ignore-requires-python", + dest="ignore_requires_python", + action="store_true", + help="Ignore the Requires-Python information.", +) + +no_build_isolation: Callable[..., Option] = partial( + Option, + "--no-build-isolation", + dest="build_isolation", + action="store_false", + default=True, + help="Disable isolation when building a modern source distribution. " + "Build dependencies specified by PEP 518 must be already installed " + "if this option is used.", +) + + +def _handle_no_use_pep517( + option: Option, opt: str, value: str, parser: OptionParser +) -> None: + """ + Process a value provided for the --no-use-pep517 option. + + This is an optparse.Option callback for the no_use_pep517 option. + """ + # Since --no-use-pep517 doesn't accept arguments, the value argument + # will be None if --no-use-pep517 is passed via the command-line. + # However, the value can be non-None if the option is triggered e.g. + # by an environment variable, for example "PIP_NO_USE_PEP517=true". + if value is not None: + msg = """A value was passed for --no-use-pep517, + probably using either the PIP_NO_USE_PEP517 environment variable + or the "no-use-pep517" config file option. Use an appropriate value + of the PIP_USE_PEP517 environment variable or the "use-pep517" + config file option instead. + """ + raise_option_error(parser, option=option, msg=msg) + + # Otherwise, --no-use-pep517 was passed via the command-line. + parser.values.use_pep517 = False + + +use_pep517: Any = partial( + Option, + "--use-pep517", + dest="use_pep517", + action="store_true", + default=None, + help="Use PEP 517 for building source distributions " + "(use --no-use-pep517 to force legacy behaviour).", +) + +no_use_pep517: Any = partial( + Option, + "--no-use-pep517", + dest="use_pep517", + action="callback", + callback=_handle_no_use_pep517, + default=None, + help=SUPPRESS_HELP, +) + +install_options: Callable[..., Option] = partial( + Option, + "--install-option", + dest="install_options", + action="append", + metavar="options", + help="Extra arguments to be supplied to the setup.py install " + 'command (use like --install-option="--install-scripts=/usr/local/' + 'bin"). Use multiple --install-option options to pass multiple ' + "options to setup.py install. If you are using an option with a " + "directory path, be sure to use absolute path.", +) + +build_options: Callable[..., Option] = partial( + Option, + "--build-option", + dest="build_options", + metavar="options", + action="append", + help="Extra arguments to be supplied to 'setup.py bdist_wheel'.", +) + +global_options: Callable[..., Option] = partial( + Option, + "--global-option", + dest="global_options", + action="append", + metavar="options", + help="Extra global options to be supplied to the setup.py " + "call before the install or bdist_wheel command.", +) + +no_clean: Callable[..., Option] = partial( + Option, + "--no-clean", + action="store_true", + default=False, + help="Don't clean up build directories.", +) + +pre: Callable[..., Option] = partial( + Option, + "--pre", + action="store_true", + default=False, + help="Include pre-release and development versions. By default, " + "pip only finds stable versions.", +) + +disable_pip_version_check: Callable[..., Option] = partial( + Option, + "--disable-pip-version-check", + dest="disable_pip_version_check", + action="store_true", + default=False, + help="Don't periodically check PyPI to determine whether a new version " + "of pip is available for download. Implied with --no-index.", +) + + +def _handle_merge_hash( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + """Given a value spelled "algo:digest", append the digest to a list + pointed to in a dict by the algo name.""" + if not parser.values.hashes: + parser.values.hashes = {} + try: + algo, digest = value.split(":", 1) + except ValueError: + parser.error( + "Arguments to {} must be a hash name " # noqa + "followed by a value, like --hash=sha256:" + "abcde...".format(opt_str) + ) + if algo not in STRONG_HASHES: + parser.error( + "Allowed hash algorithms for {} are {}.".format( # noqa + opt_str, ", ".join(STRONG_HASHES) + ) + ) + parser.values.hashes.setdefault(algo, []).append(digest) + + +hash: Callable[..., Option] = partial( + Option, + "--hash", + # Hash values eventually end up in InstallRequirement.hashes due to + # __dict__ copying in process_line(). + dest="hashes", + action="callback", + callback=_handle_merge_hash, + type="string", + help="Verify that the package's archive matches this " + "hash before installing. Example: --hash=sha256:abcdef...", +) + + +require_hashes: Callable[..., Option] = partial( + Option, + "--require-hashes", + dest="require_hashes", + action="store_true", + default=False, + help="Require a hash to check each requirement against, for " + "repeatable installs. This option is implied when any package in a " + "requirements file has a --hash option.", +) + + +list_path: Callable[..., Option] = partial( + PipOption, + "--path", + dest="path", + type="path", + action="append", + help="Restrict to the specified installation path for listing " + "packages (can be used multiple times).", +) + + +def check_list_path_option(options: Values) -> None: + if options.path and (options.user or options.local): + raise CommandError("Cannot combine '--path' with '--user' or '--local'") + + +list_exclude: Callable[..., Option] = partial( + PipOption, + "--exclude", + dest="excludes", + action="append", + metavar="package", + type="package_name", + help="Exclude specified package from the output", +) + + +no_python_version_warning: Callable[..., Option] = partial( + Option, + "--no-python-version-warning", + dest="no_python_version_warning", + action="store_true", + default=False, + help="Silence deprecation warnings for upcoming unsupported Pythons.", +) + + +use_new_feature: Callable[..., Option] = partial( + Option, + "--use-feature", + dest="features_enabled", + metavar="feature", + action="append", + default=[], + choices=["2020-resolver", "fast-deps", "in-tree-build"], + help="Enable new functionality, that may be backward incompatible.", +) + +use_deprecated_feature: Callable[..., Option] = partial( + Option, + "--use-deprecated", + dest="deprecated_features_enabled", + metavar="feature", + action="append", + default=[], + choices=["legacy-resolver", "out-of-tree-build"], + help=("Enable deprecated functionality, that will be removed in the future."), +) + + +########## +# groups # +########## + +general_group: Dict[str, Any] = { + "name": "General Options", + "options": [ + help_, + debug_mode, + isolated_mode, + require_virtualenv, + verbose, + version, + quiet, + log, + no_input, + proxy, + retries, + timeout, + exists_action, + trusted_host, + cert, + client_cert, + cache_dir, + no_cache, + disable_pip_version_check, + no_color, + no_python_version_warning, + use_new_feature, + use_deprecated_feature, + ], +} + +index_group: Dict[str, Any] = { + "name": "Package Index Options", + "options": [ + index_url, + extra_index_url, + no_index, + find_links, + ], +} diff --git a/venv/Lib/site-packages/pip/_internal/cli/command_context.py b/venv/Lib/site-packages/pip/_internal/cli/command_context.py new file mode 100644 index 00000000..ed683223 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/command_context.py @@ -0,0 +1,27 @@ +from contextlib import ExitStack, contextmanager +from typing import ContextManager, Iterator, TypeVar + +_T = TypeVar("_T", covariant=True) + + +class CommandContextMixIn: + def __init__(self) -> None: + super().__init__() + self._in_main_context = False + self._main_context = ExitStack() + + @contextmanager + def main_context(self) -> Iterator[None]: + assert not self._in_main_context + + self._in_main_context = True + try: + with self._main_context: + yield + finally: + self._in_main_context = False + + def enter_context(self, context_provider: ContextManager[_T]) -> _T: + assert self._in_main_context + + return self._main_context.enter_context(context_provider) diff --git a/venv/Lib/site-packages/pip/_internal/cli/main.py b/venv/Lib/site-packages/pip/_internal/cli/main.py new file mode 100644 index 00000000..0e312215 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/main.py @@ -0,0 +1,70 @@ +"""Primary application entrypoint. +""" +import locale +import logging +import os +import sys +from typing import List, Optional + +from pip._internal.cli.autocompletion import autocomplete +from pip._internal.cli.main_parser import parse_command +from pip._internal.commands import create_command +from pip._internal.exceptions import PipError +from pip._internal.utils import deprecation + +logger = logging.getLogger(__name__) + + +# Do not import and use main() directly! Using it directly is actively +# discouraged by pip's maintainers. The name, location and behavior of +# this function is subject to change, so calling it directly is not +# portable across different pip versions. + +# In addition, running pip in-process is unsupported and unsafe. This is +# elaborated in detail at +# https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program. +# That document also provides suggestions that should work for nearly +# all users that are considering importing and using main() directly. + +# However, we know that certain users will still want to invoke pip +# in-process. If you understand and accept the implications of using pip +# in an unsupported manner, the best approach is to use runpy to avoid +# depending on the exact location of this entry point. + +# The following example shows how to use runpy to invoke pip in that +# case: +# +# sys.argv = ["pip", your, args, here] +# runpy.run_module("pip", run_name="__main__") +# +# Note that this will exit the process after running, unlike a direct +# call to main. As it is not safe to do any processing after calling +# main, this should not be an issue in practice. + + +def main(args: Optional[List[str]] = None) -> int: + if args is None: + args = sys.argv[1:] + + # Configure our deprecation warnings to be sent through loggers + deprecation.install_warning_logger() + + autocomplete() + + try: + cmd_name, cmd_args = parse_command(args) + except PipError as exc: + sys.stderr.write(f"ERROR: {exc}") + sys.stderr.write(os.linesep) + sys.exit(1) + + # Needed for locale.getpreferredencoding(False) to work + # in pip._internal.utils.encoding.auto_decode + try: + locale.setlocale(locale.LC_ALL, "") + except locale.Error as e: + # setlocale can apparently crash if locale are uninitialized + logger.debug("Ignoring error %s when setting locale", e) + command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) + + return command.main(cmd_args) diff --git a/venv/Lib/site-packages/pip/_internal/cli/main_parser.py b/venv/Lib/site-packages/pip/_internal/cli/main_parser.py new file mode 100644 index 00000000..3666ab04 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/main_parser.py @@ -0,0 +1,87 @@ +"""A single place for constructing and exposing the main parser +""" + +import os +import sys +from typing import List, Tuple + +from pip._internal.cli import cmdoptions +from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip._internal.commands import commands_dict, get_similar_commands +from pip._internal.exceptions import CommandError +from pip._internal.utils.misc import get_pip_version, get_prog + +__all__ = ["create_main_parser", "parse_command"] + + +def create_main_parser() -> ConfigOptionParser: + """Creates and returns the main parser for pip's CLI""" + + parser = ConfigOptionParser( + usage="\n%prog [options]", + add_help_option=False, + formatter=UpdatingDefaultsHelpFormatter(), + name="global", + prog=get_prog(), + ) + parser.disable_interspersed_args() + + parser.version = get_pip_version() + + # add the general options + gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) + parser.add_option_group(gen_opts) + + # so the help formatter knows + parser.main = True # type: ignore + + # create command listing for description + description = [""] + [ + f"{name:27} {command_info.summary}" + for name, command_info in commands_dict.items() + ] + parser.description = "\n".join(description) + + return parser + + +def parse_command(args: List[str]) -> Tuple[str, List[str]]: + parser = create_main_parser() + + # Note: parser calls disable_interspersed_args(), so the result of this + # call is to split the initial args into the general options before the + # subcommand and everything else. + # For example: + # args: ['--timeout=5', 'install', '--user', 'INITools'] + # general_options: ['--timeout==5'] + # args_else: ['install', '--user', 'INITools'] + general_options, args_else = parser.parse_args(args) + + # --version + if general_options.version: + sys.stdout.write(parser.version) + sys.stdout.write(os.linesep) + sys.exit() + + # pip || pip help -> print_help() + if not args_else or (args_else[0] == "help" and len(args_else) == 1): + parser.print_help() + sys.exit() + + # the subcommand name + cmd_name = args_else[0] + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = [f'unknown command "{cmd_name}"'] + if guess: + msg.append(f'maybe you meant "{guess}"') + + raise CommandError(" - ".join(msg)) + + # all the args without the subcommand + cmd_args = args[:] + cmd_args.remove(cmd_name) + + return cmd_name, cmd_args diff --git a/venv/Lib/site-packages/pip/_internal/cli/parser.py b/venv/Lib/site-packages/pip/_internal/cli/parser.py new file mode 100644 index 00000000..a1c99a8c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/parser.py @@ -0,0 +1,292 @@ +"""Base option parser setup""" + +import logging +import optparse +import shutil +import sys +import textwrap +from contextlib import suppress +from typing import Any, Dict, Iterator, List, Tuple + +from pip._internal.cli.status_codes import UNKNOWN_ERROR +from pip._internal.configuration import Configuration, ConfigurationError +from pip._internal.utils.misc import redact_auth_from_url, strtobool + +logger = logging.getLogger(__name__) + + +class PrettyHelpFormatter(optparse.IndentedHelpFormatter): + """A prettier/less verbose help formatter for optparse.""" + + def __init__(self, *args: Any, **kwargs: Any) -> None: + # help position must be aligned with __init__.parseopts.description + kwargs["max_help_position"] = 30 + kwargs["indent_increment"] = 1 + kwargs["width"] = shutil.get_terminal_size()[0] - 2 + super().__init__(*args, **kwargs) + + def format_option_strings(self, option: optparse.Option) -> str: + return self._format_option_strings(option) + + def _format_option_strings( + self, option: optparse.Option, mvarfmt: str = " <{}>", optsep: str = ", " + ) -> str: + """ + Return a comma-separated list of option strings and metavars. + + :param option: tuple of (short opt, long opt), e.g: ('-f', '--format') + :param mvarfmt: metavar format string + :param optsep: separator + """ + opts = [] + + if option._short_opts: + opts.append(option._short_opts[0]) + if option._long_opts: + opts.append(option._long_opts[0]) + if len(opts) > 1: + opts.insert(1, optsep) + + if option.takes_value(): + assert option.dest is not None + metavar = option.metavar or option.dest.lower() + opts.append(mvarfmt.format(metavar.lower())) + + return "".join(opts) + + def format_heading(self, heading: str) -> str: + if heading == "Options": + return "" + return heading + ":\n" + + def format_usage(self, usage: str) -> str: + """ + Ensure there is only one newline between usage and the first heading + if there is no description. + """ + msg = "\nUsage: {}\n".format(self.indent_lines(textwrap.dedent(usage), " ")) + return msg + + def format_description(self, description: str) -> str: + # leave full control over description to us + if description: + if hasattr(self.parser, "main"): + label = "Commands" + else: + label = "Description" + # some doc strings have initial newlines, some don't + description = description.lstrip("\n") + # some doc strings have final newlines and spaces, some don't + description = description.rstrip() + # dedent, then reindent + description = self.indent_lines(textwrap.dedent(description), " ") + description = f"{label}:\n{description}\n" + return description + else: + return "" + + def format_epilog(self, epilog: str) -> str: + # leave full control over epilog to us + if epilog: + return epilog + else: + return "" + + def indent_lines(self, text: str, indent: str) -> str: + new_lines = [indent + line for line in text.split("\n")] + return "\n".join(new_lines) + + +class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter): + """Custom help formatter for use in ConfigOptionParser. + + This is updates the defaults before expanding them, allowing + them to show up correctly in the help listing. + + Also redact auth from url type options + """ + + def expand_default(self, option: optparse.Option) -> str: + default_values = None + if self.parser is not None: + assert isinstance(self.parser, ConfigOptionParser) + self.parser._update_defaults(self.parser.defaults) + assert option.dest is not None + default_values = self.parser.defaults.get(option.dest) + help_text = super().expand_default(option) + + if default_values and option.metavar == "URL": + if isinstance(default_values, str): + default_values = [default_values] + + # If its not a list, we should abort and just return the help text + if not isinstance(default_values, list): + default_values = [] + + for val in default_values: + help_text = help_text.replace(val, redact_auth_from_url(val)) + + return help_text + + +class CustomOptionParser(optparse.OptionParser): + def insert_option_group( + self, idx: int, *args: Any, **kwargs: Any + ) -> optparse.OptionGroup: + """Insert an OptionGroup at a given position.""" + group = self.add_option_group(*args, **kwargs) + + self.option_groups.pop() + self.option_groups.insert(idx, group) + + return group + + @property + def option_list_all(self) -> List[optparse.Option]: + """Get a list of all options, including those in option groups.""" + res = self.option_list[:] + for i in self.option_groups: + res.extend(i.option_list) + + return res + + +class ConfigOptionParser(CustomOptionParser): + """Custom option parser which updates its defaults by checking the + configuration files and environmental variables""" + + def __init__( + self, + *args: Any, + name: str, + isolated: bool = False, + **kwargs: Any, + ) -> None: + self.name = name + self.config = Configuration(isolated) + + assert self.name + super().__init__(*args, **kwargs) + + def check_default(self, option: optparse.Option, key: str, val: Any) -> Any: + try: + return option.check_value(key, val) + except optparse.OptionValueError as exc: + print(f"An error occurred during configuration: {exc}") + sys.exit(3) + + def _get_ordered_configuration_items(self) -> Iterator[Tuple[str, Any]]: + # Configuration gives keys in an unordered manner. Order them. + override_order = ["global", self.name, ":env:"] + + # Pool the options into different groups + section_items: Dict[str, List[Tuple[str, Any]]] = { + name: [] for name in override_order + } + for section_key, val in self.config.items(): + # ignore empty values + if not val: + logger.debug( + "Ignoring configuration key '%s' as it's value is empty.", + section_key, + ) + continue + + section, key = section_key.split(".", 1) + if section in override_order: + section_items[section].append((key, val)) + + # Yield each group in their override order + for section in override_order: + for key, val in section_items[section]: + yield key, val + + def _update_defaults(self, defaults: Dict[str, Any]) -> Dict[str, Any]: + """Updates the given defaults with values from the config files and + the environ. Does a little special handling for certain types of + options (lists).""" + + # Accumulate complex default state. + self.values = optparse.Values(self.defaults) + late_eval = set() + # Then set the options with those values + for key, val in self._get_ordered_configuration_items(): + # '--' because configuration supports only long names + option = self.get_option("--" + key) + + # Ignore options not present in this parser. E.g. non-globals put + # in [global] by users that want them to apply to all applicable + # commands. + if option is None: + continue + + assert option.dest is not None + + if option.action in ("store_true", "store_false"): + try: + val = strtobool(val) + except ValueError: + self.error( + "{} is not a valid value for {} option, " # noqa + "please specify a boolean value like yes/no, " + "true/false or 1/0 instead.".format(val, key) + ) + elif option.action == "count": + with suppress(ValueError): + val = strtobool(val) + with suppress(ValueError): + val = int(val) + if not isinstance(val, int) or val < 0: + self.error( + "{} is not a valid value for {} option, " # noqa + "please instead specify either a non-negative integer " + "or a boolean value like yes/no or false/true " + "which is equivalent to 1/0.".format(val, key) + ) + elif option.action == "append": + val = val.split() + val = [self.check_default(option, key, v) for v in val] + elif option.action == "callback": + assert option.callback is not None + late_eval.add(option.dest) + opt_str = option.get_opt_string() + val = option.convert_value(opt_str, val) + # From take_action + args = option.callback_args or () + kwargs = option.callback_kwargs or {} + option.callback(option, opt_str, val, self, *args, **kwargs) + else: + val = self.check_default(option, key, val) + + defaults[option.dest] = val + + for key in late_eval: + defaults[key] = getattr(self.values, key) + self.values = None + return defaults + + def get_default_values(self) -> optparse.Values: + """Overriding to make updating the defaults after instantiation of + the option parser possible, _update_defaults() does the dirty work.""" + if not self.process_default_values: + # Old, pre-Optik 1.5 behaviour. + return optparse.Values(self.defaults) + + # Load the configuration, or error out in case of an error + try: + self.config.load() + except ConfigurationError as err: + self.exit(UNKNOWN_ERROR, str(err)) + + defaults = self._update_defaults(self.defaults.copy()) # ours + for option in self._get_all_options(): + assert option.dest is not None + default = defaults.get(option.dest) + if isinstance(default, str): + opt_str = option.get_opt_string() + defaults[option.dest] = option.check_value(opt_str, default) + return optparse.Values(defaults) + + def error(self, msg: str) -> None: + self.print_usage(sys.stderr) + self.exit(UNKNOWN_ERROR, f"{msg}\n") diff --git a/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py b/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py new file mode 100644 index 00000000..f3db2951 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py @@ -0,0 +1,250 @@ +import itertools +import sys +from signal import SIGINT, default_int_handler, signal +from typing import Any + +from pip._vendor.progress.bar import Bar, FillingCirclesBar, IncrementalBar +from pip._vendor.progress.spinner import Spinner + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import get_indentation +from pip._internal.utils.misc import format_size + +try: + from pip._vendor import colorama +# Lots of different errors can come from this, including SystemError and +# ImportError. +except Exception: + colorama = None + + +def _select_progress_class(preferred: Bar, fallback: Bar) -> Bar: + encoding = getattr(preferred.file, "encoding", None) + + # If we don't know what encoding this file is in, then we'll just assume + # that it doesn't support unicode and use the ASCII bar. + if not encoding: + return fallback + + # Collect all of the possible characters we want to use with the preferred + # bar. + characters = [ + getattr(preferred, "empty_fill", ""), + getattr(preferred, "fill", ""), + ] + characters += list(getattr(preferred, "phases", [])) + + # Try to decode the characters we're using for the bar using the encoding + # of the given file, if this works then we'll assume that we can use the + # fancier bar and if not we'll fall back to the plaintext bar. + try: + "".join(characters).encode(encoding) + except UnicodeEncodeError: + return fallback + else: + return preferred + + +_BaseBar: Any = _select_progress_class(IncrementalBar, Bar) + + +class InterruptibleMixin: + """ + Helper to ensure that self.finish() gets called on keyboard interrupt. + + This allows downloads to be interrupted without leaving temporary state + (like hidden cursors) behind. + + This class is similar to the progress library's existing SigIntMixin + helper, but as of version 1.2, that helper has the following problems: + + 1. It calls sys.exit(). + 2. It discards the existing SIGINT handler completely. + 3. It leaves its own handler in place even after an uninterrupted finish, + which will have unexpected delayed effects if the user triggers an + unrelated keyboard interrupt some time after a progress-displaying + download has already completed, for example. + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + """ + Save the original SIGINT handler for later. + """ + # https://github.com/python/mypy/issues/5887 + super().__init__(*args, **kwargs) # type: ignore + + self.original_handler = signal(SIGINT, self.handle_sigint) + + # If signal() returns None, the previous handler was not installed from + # Python, and we cannot restore it. This probably should not happen, + # but if it does, we must restore something sensible instead, at least. + # The least bad option should be Python's default SIGINT handler, which + # just raises KeyboardInterrupt. + if self.original_handler is None: + self.original_handler = default_int_handler + + def finish(self) -> None: + """ + Restore the original SIGINT handler after finishing. + + This should happen regardless of whether the progress display finishes + normally, or gets interrupted. + """ + super().finish() # type: ignore + signal(SIGINT, self.original_handler) + + def handle_sigint(self, signum, frame): # type: ignore + """ + Call self.finish() before delegating to the original SIGINT handler. + + This handler should only be in place while the progress display is + active. + """ + self.finish() + self.original_handler(signum, frame) + + +class SilentBar(Bar): + def update(self) -> None: + pass + + +class BlueEmojiBar(IncrementalBar): + + suffix = "%(percent)d%%" + bar_prefix = " " + bar_suffix = " " + phases = ("\U0001F539", "\U0001F537", "\U0001F535") + + +class DownloadProgressMixin: + def __init__(self, *args: Any, **kwargs: Any) -> None: + # https://github.com/python/mypy/issues/5887 + super().__init__(*args, **kwargs) # type: ignore + self.message: str = (" " * (get_indentation() + 2)) + self.message + + @property + def downloaded(self) -> str: + return format_size(self.index) # type: ignore + + @property + def download_speed(self) -> str: + # Avoid zero division errors... + if self.avg == 0.0: # type: ignore + return "..." + return format_size(1 / self.avg) + "/s" # type: ignore + + @property + def pretty_eta(self) -> str: + if self.eta: # type: ignore + return f"eta {self.eta_td}" # type: ignore + return "" + + def iter(self, it): # type: ignore + for x in it: + yield x + # B305 is incorrectly raised here + # https://github.com/PyCQA/flake8-bugbear/issues/59 + self.next(len(x)) # noqa: B305 + self.finish() + + +class WindowsMixin: + def __init__(self, *args: Any, **kwargs: Any) -> None: + # The Windows terminal does not support the hide/show cursor ANSI codes + # even with colorama. So we'll ensure that hide_cursor is False on + # Windows. + # This call needs to go before the super() call, so that hide_cursor + # is set in time. The base progress bar class writes the "hide cursor" + # code to the terminal in its init, so if we don't set this soon + # enough, we get a "hide" with no corresponding "show"... + if WINDOWS and self.hide_cursor: # type: ignore + self.hide_cursor = False + + # https://github.com/python/mypy/issues/5887 + super().__init__(*args, **kwargs) # type: ignore + + # Check if we are running on Windows and we have the colorama module, + # if we do then wrap our file with it. + if WINDOWS and colorama: + self.file = colorama.AnsiToWin32(self.file) # type: ignore + # The progress code expects to be able to call self.file.isatty() + # but the colorama.AnsiToWin32() object doesn't have that, so we'll + # add it. + self.file.isatty = lambda: self.file.wrapped.isatty() + # The progress code expects to be able to call self.file.flush() + # but the colorama.AnsiToWin32() object doesn't have that, so we'll + # add it. + self.file.flush = lambda: self.file.wrapped.flush() + + +class BaseDownloadProgressBar(WindowsMixin, InterruptibleMixin, DownloadProgressMixin): + + file = sys.stdout + message = "%(percent)d%%" + suffix = "%(downloaded)s %(download_speed)s %(pretty_eta)s" + + +class DefaultDownloadProgressBar(BaseDownloadProgressBar, _BaseBar): + pass + + +class DownloadSilentBar(BaseDownloadProgressBar, SilentBar): + pass + + +class DownloadBar(BaseDownloadProgressBar, Bar): + pass + + +class DownloadFillingCirclesBar(BaseDownloadProgressBar, FillingCirclesBar): + pass + + +class DownloadBlueEmojiProgressBar(BaseDownloadProgressBar, BlueEmojiBar): + pass + + +class DownloadProgressSpinner( + WindowsMixin, InterruptibleMixin, DownloadProgressMixin, Spinner +): + + file = sys.stdout + suffix = "%(downloaded)s %(download_speed)s" + + def next_phase(self) -> str: + if not hasattr(self, "_phaser"): + self._phaser = itertools.cycle(self.phases) + return next(self._phaser) + + def update(self) -> None: + message = self.message % self + phase = self.next_phase() + suffix = self.suffix % self + line = "".join( + [ + message, + " " if message else "", + phase, + " " if suffix else "", + suffix, + ] + ) + + self.writeln(line) + + +BAR_TYPES = { + "off": (DownloadSilentBar, DownloadSilentBar), + "on": (DefaultDownloadProgressBar, DownloadProgressSpinner), + "ascii": (DownloadBar, DownloadProgressSpinner), + "pretty": (DownloadFillingCirclesBar, DownloadProgressSpinner), + "emoji": (DownloadBlueEmojiProgressBar, DownloadProgressSpinner), +} + + +def DownloadProgressProvider(progress_bar, max=None): # type: ignore + if max is None or max == 0: + return BAR_TYPES[progress_bar][1]().iter + else: + return BAR_TYPES[progress_bar][0](max=max).iter diff --git a/venv/Lib/site-packages/pip/_internal/cli/req_command.py b/venv/Lib/site-packages/pip/_internal/cli/req_command.py new file mode 100644 index 00000000..dbd15cbc --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/req_command.py @@ -0,0 +1,469 @@ +"""Contains the Command base classes that depend on PipSession. + +The classes in this module are in a separate module so the commands not +needing download / PackageFinder capability don't unnecessarily import the +PackageFinder machinery and all its vendored dependencies, etc. +""" + +import logging +import os +import sys +from functools import partial +from optparse import Values +from typing import Any, List, Optional, Tuple + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.exceptions import CommandError, PreviousBuildDirError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.network.session import PipSession +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, + install_req_from_parsed_requirement, + install_req_from_req_string, +) +from pip._internal.req.req_file import parse_requirements +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import RequirementTracker +from pip._internal.resolution.base import BaseResolver +from pip._internal.self_outdated_check import pip_self_version_check +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.temp_dir import ( + TempDirectory, + TempDirectoryTypeRegistry, + tempdir_kinds, +) +from pip._internal.utils.virtualenv import running_under_virtualenv + +logger = logging.getLogger(__name__) + + +class SessionCommandMixin(CommandContextMixIn): + + """ + A class mixin for command classes needing _build_session(). + """ + + def __init__(self) -> None: + super().__init__() + self._session: Optional[PipSession] = None + + @classmethod + def _get_index_urls(cls, options: Values) -> Optional[List[str]]: + """Return a list of index urls from user-provided options.""" + index_urls = [] + if not getattr(options, "no_index", False): + url = getattr(options, "index_url", None) + if url: + index_urls.append(url) + urls = getattr(options, "extra_index_urls", None) + if urls: + index_urls.extend(urls) + # Return None rather than an empty list + return index_urls or None + + def get_default_session(self, options: Values) -> PipSession: + """Get a default-managed session.""" + if self._session is None: + self._session = self.enter_context(self._build_session(options)) + # there's no type annotation on requests.Session, so it's + # automatically ContextManager[Any] and self._session becomes Any, + # then https://github.com/python/mypy/issues/7696 kicks in + assert self._session is not None + return self._session + + def _build_session( + self, + options: Values, + retries: Optional[int] = None, + timeout: Optional[int] = None, + ) -> PipSession: + assert not options.cache_dir or os.path.isabs(options.cache_dir) + session = PipSession( + cache=( + os.path.join(options.cache_dir, "http") if options.cache_dir else None + ), + retries=retries if retries is not None else options.retries, + trusted_hosts=options.trusted_hosts, + index_urls=self._get_index_urls(options), + ) + + # Handle custom ca-bundles from the user + if options.cert: + session.verify = options.cert + + # Handle SSL client certificate + if options.client_cert: + session.cert = options.client_cert + + # Handle timeouts + if options.timeout or timeout: + session.timeout = timeout if timeout is not None else options.timeout + + # Handle configured proxies + if options.proxy: + session.proxies = { + "http": options.proxy, + "https": options.proxy, + } + + # Determine if we can prompt the user for authentication or not + session.auth.prompting = not options.no_input + + return session + + +class IndexGroupCommand(Command, SessionCommandMixin): + + """ + Abstract base class for commands with the index_group options. + + This also corresponds to the commands that permit the pip version check. + """ + + def handle_pip_version_check(self, options: Values) -> None: + """ + Do the pip version check if not disabled. + + This overrides the default behavior of not doing the check. + """ + # Make sure the index_group options are present. + assert hasattr(options, "no_index") + + if options.disable_pip_version_check or options.no_index: + return + + # Otherwise, check if we're using the latest version of pip available. + session = self._build_session( + options, retries=0, timeout=min(5, options.timeout) + ) + with session: + pip_self_version_check(session, options) + + +KEEPABLE_TEMPDIR_TYPES = [ + tempdir_kinds.BUILD_ENV, + tempdir_kinds.EPHEM_WHEEL_CACHE, + tempdir_kinds.REQ_BUILD, +] + + +def warn_if_run_as_root() -> None: + """Output a warning for sudo users on Unix. + + In a virtual environment, sudo pip still writes to virtualenv. + On Windows, users may run pip as Administrator without issues. + This warning only applies to Unix root users outside of virtualenv. + """ + if running_under_virtualenv(): + return + if not hasattr(os, "getuid"): + return + # On Windows, there are no "system managed" Python packages. Installing as + # Administrator via pip is the correct way of updating system environments. + # + # We choose sys.platform over utils.compat.WINDOWS here to enable Mypy platform + # checks: https://mypy.readthedocs.io/en/stable/common_issues.html + if sys.platform == "win32" or sys.platform == "cygwin": + return + + if os.getuid() != 0: + return + + logger.warning( + "Running pip as the 'root' user can result in broken permissions and " + "conflicting behaviour with the system package manager. " + "It is recommended to use a virtual environment instead: " + "https://pip.pypa.io/warnings/venv" + ) + + +def with_cleanup(func: Any) -> Any: + """Decorator for common logic related to managing temporary + directories. + """ + + def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None: + for t in KEEPABLE_TEMPDIR_TYPES: + registry.set_delete(t, False) + + def wrapper( + self: RequirementCommand, options: Values, args: List[Any] + ) -> Optional[int]: + assert self.tempdir_registry is not None + if options.no_clean: + configure_tempdir_registry(self.tempdir_registry) + + try: + return func(self, options, args) + except PreviousBuildDirError: + # This kind of conflict can occur when the user passes an explicit + # build directory with a pre-existing folder. In that case we do + # not want to accidentally remove it. + configure_tempdir_registry(self.tempdir_registry) + raise + + return wrapper + + +class RequirementCommand(IndexGroupCommand): + def __init__(self, *args: Any, **kw: Any) -> None: + super().__init__(*args, **kw) + + self.cmd_opts.add_option(cmdoptions.no_clean()) + + @staticmethod + def determine_resolver_variant(options: Values) -> str: + """Determines which resolver should be used, based on the given options.""" + if "legacy-resolver" in options.deprecated_features_enabled: + return "legacy" + + return "2020-resolver" + + @classmethod + def make_requirement_preparer( + cls, + temp_build_dir: TempDirectory, + options: Values, + req_tracker: RequirementTracker, + session: PipSession, + finder: PackageFinder, + use_user_site: bool, + download_dir: Optional[str] = None, + ) -> RequirementPreparer: + """ + Create a RequirementPreparer instance for the given parameters. + """ + temp_build_dir_path = temp_build_dir.path + assert temp_build_dir_path is not None + + resolver_variant = cls.determine_resolver_variant(options) + if resolver_variant == "2020-resolver": + lazy_wheel = "fast-deps" in options.features_enabled + if lazy_wheel: + logger.warning( + "pip is using lazily downloaded wheels using HTTP " + "range requests to obtain dependency information. " + "This experimental feature is enabled through " + "--use-feature=fast-deps and it is not ready for " + "production." + ) + else: + lazy_wheel = False + if "fast-deps" in options.features_enabled: + logger.warning( + "fast-deps has no effect when used with the legacy resolver." + ) + + in_tree_build = "out-of-tree-build" not in options.deprecated_features_enabled + if "in-tree-build" in options.features_enabled: + deprecated( + reason="In-tree builds are now the default.", + replacement="to remove the --use-feature=in-tree-build flag", + gone_in="22.1", + ) + if "out-of-tree-build" in options.deprecated_features_enabled: + deprecated( + reason="Out-of-tree builds are deprecated.", + replacement=None, + gone_in="22.1", + ) + + return RequirementPreparer( + build_dir=temp_build_dir_path, + src_dir=options.src_dir, + download_dir=download_dir, + build_isolation=options.build_isolation, + req_tracker=req_tracker, + session=session, + progress_bar=options.progress_bar, + finder=finder, + require_hashes=options.require_hashes, + use_user_site=use_user_site, + lazy_wheel=lazy_wheel, + in_tree_build=in_tree_build, + ) + + @classmethod + def make_resolver( + cls, + preparer: RequirementPreparer, + finder: PackageFinder, + options: Values, + wheel_cache: Optional[WheelCache] = None, + use_user_site: bool = False, + ignore_installed: bool = True, + ignore_requires_python: bool = False, + force_reinstall: bool = False, + upgrade_strategy: str = "to-satisfy-only", + use_pep517: Optional[bool] = None, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> BaseResolver: + """ + Create a Resolver instance for the given parameters. + """ + make_install_req = partial( + install_req_from_req_string, + isolated=options.isolated_mode, + use_pep517=use_pep517, + ) + resolver_variant = cls.determine_resolver_variant(options) + # The long import name and duplicated invocation is needed to convince + # Mypy into correctly typechecking. Otherwise it would complain the + # "Resolver" class being redefined. + if resolver_variant == "2020-resolver": + import pip._internal.resolution.resolvelib.resolver + + return pip._internal.resolution.resolvelib.resolver.Resolver( + preparer=preparer, + finder=finder, + wheel_cache=wheel_cache, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + import pip._internal.resolution.legacy.resolver + + return pip._internal.resolution.legacy.resolver.Resolver( + preparer=preparer, + finder=finder, + wheel_cache=wheel_cache, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + + def get_requirements( + self, + args: List[str], + options: Values, + finder: PackageFinder, + session: PipSession, + ) -> List[InstallRequirement]: + """ + Parse command-line arguments into the corresponding requirements. + """ + requirements: List[InstallRequirement] = [] + for filename in options.constraints: + for parsed_req in parse_requirements( + filename, + constraint=True, + finder=finder, + options=options, + session=session, + ): + req_to_add = install_req_from_parsed_requirement( + parsed_req, + isolated=options.isolated_mode, + user_supplied=False, + ) + requirements.append(req_to_add) + + for req in args: + req_to_add = install_req_from_line( + req, + None, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + user_supplied=True, + ) + requirements.append(req_to_add) + + for req in options.editables: + req_to_add = install_req_from_editable( + req, + user_supplied=True, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + ) + requirements.append(req_to_add) + + # NOTE: options.require_hashes may be set if --require-hashes is True + for filename in options.requirements: + for parsed_req in parse_requirements( + filename, finder=finder, options=options, session=session + ): + req_to_add = install_req_from_parsed_requirement( + parsed_req, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + user_supplied=True, + ) + requirements.append(req_to_add) + + # If any requirement has hash options, enable hash checking. + if any(req.has_hash_options for req in requirements): + options.require_hashes = True + + if not (args or options.editables or options.requirements): + opts = {"name": self.name} + if options.find_links: + raise CommandError( + "You must give at least one requirement to {name} " + '(maybe you meant "pip {name} {links}"?)'.format( + **dict(opts, links=" ".join(options.find_links)) + ) + ) + else: + raise CommandError( + "You must give at least one requirement to {name} " + '(see "pip help {name}")'.format(**opts) + ) + + return requirements + + @staticmethod + def trace_basic_info(finder: PackageFinder) -> None: + """ + Trace basic information about the provided objects. + """ + # Display where finder is looking for packages + search_scope = finder.search_scope + locations = search_scope.get_formatted_locations() + if locations: + logger.info(locations) + + def _build_package_finder( + self, + options: Values, + session: PipSession, + target_python: Optional[TargetPython] = None, + ignore_requires_python: Optional[bool] = None, + ) -> PackageFinder: + """ + Create a package finder appropriate to this requirement command. + + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + link_collector = LinkCollector.create(session, options=options) + selection_prefs = SelectionPreferences( + allow_yanked=True, + format_control=options.format_control, + allow_all_prereleases=options.pre, + prefer_binary=options.prefer_binary, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) diff --git a/venv/Lib/site-packages/pip/_internal/cli/spinners.py b/venv/Lib/site-packages/pip/_internal/cli/spinners.py new file mode 100644 index 00000000..1e313e10 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/spinners.py @@ -0,0 +1,157 @@ +import contextlib +import itertools +import logging +import sys +import time +from typing import IO, Iterator + +from pip._vendor.progress import HIDE_CURSOR, SHOW_CURSOR + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import get_indentation + +logger = logging.getLogger(__name__) + + +class SpinnerInterface: + def spin(self) -> None: + raise NotImplementedError() + + def finish(self, final_status: str) -> None: + raise NotImplementedError() + + +class InteractiveSpinner(SpinnerInterface): + def __init__( + self, + message: str, + file: IO[str] = None, + spin_chars: str = "-\\|/", + # Empirically, 8 updates/second looks nice + min_update_interval_seconds: float = 0.125, + ): + self._message = message + if file is None: + file = sys.stdout + self._file = file + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._finished = False + + self._spin_cycle = itertools.cycle(spin_chars) + + self._file.write(" " * get_indentation() + self._message + " ... ") + self._width = 0 + + def _write(self, status: str) -> None: + assert not self._finished + # Erase what we wrote before by backspacing to the beginning, writing + # spaces to overwrite the old text, and then backspacing again + backup = "\b" * self._width + self._file.write(backup + " " * self._width + backup) + # Now we have a blank slate to add our status + self._file.write(status) + self._width = len(status) + self._file.flush() + self._rate_limiter.reset() + + def spin(self) -> None: + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._write(next(self._spin_cycle)) + + def finish(self, final_status: str) -> None: + if self._finished: + return + self._write(final_status) + self._file.write("\n") + self._file.flush() + self._finished = True + + +# Used for dumb terminals, non-interactive installs (no tty), etc. +# We still print updates occasionally (once every 60 seconds by default) to +# act as a keep-alive for systems like Travis-CI that take lack-of-output as +# an indication that a task has frozen. +class NonInteractiveSpinner(SpinnerInterface): + def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None: + self._message = message + self._finished = False + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._update("started") + + def _update(self, status: str) -> None: + assert not self._finished + self._rate_limiter.reset() + logger.info("%s: %s", self._message, status) + + def spin(self) -> None: + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._update("still running...") + + def finish(self, final_status: str) -> None: + if self._finished: + return + self._update(f"finished with status '{final_status}'") + self._finished = True + + +class RateLimiter: + def __init__(self, min_update_interval_seconds: float) -> None: + self._min_update_interval_seconds = min_update_interval_seconds + self._last_update: float = 0 + + def ready(self) -> bool: + now = time.time() + delta = now - self._last_update + return delta >= self._min_update_interval_seconds + + def reset(self) -> None: + self._last_update = time.time() + + +@contextlib.contextmanager +def open_spinner(message: str) -> Iterator[SpinnerInterface]: + # Interactive spinner goes directly to sys.stdout rather than being routed + # through the logging system, but it acts like it has level INFO, + # i.e. it's only displayed if we're at level INFO or better. + # Non-interactive spinner goes through the logging system, so it is always + # in sync with logging configuration. + if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO: + spinner: SpinnerInterface = InteractiveSpinner(message) + else: + spinner = NonInteractiveSpinner(message) + try: + with hidden_cursor(sys.stdout): + yield spinner + except KeyboardInterrupt: + spinner.finish("canceled") + raise + except Exception: + spinner.finish("error") + raise + else: + spinner.finish("done") + + +@contextlib.contextmanager +def hidden_cursor(file: IO[str]) -> Iterator[None]: + # The Windows terminal does not support the hide/show cursor ANSI codes, + # even via colorama. So don't even try. + if WINDOWS: + yield + # We don't want to clutter the output with control characters if we're + # writing to a file, or if the user is running with --quiet. + # See https://github.com/pypa/pip/issues/3418 + elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: + yield + else: + file.write(HIDE_CURSOR) + try: + yield + finally: + file.write(SHOW_CURSOR) diff --git a/venv/Lib/site-packages/pip/_internal/cli/status_codes.py b/venv/Lib/site-packages/pip/_internal/cli/status_codes.py new file mode 100644 index 00000000..5e29502c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/status_codes.py @@ -0,0 +1,6 @@ +SUCCESS = 0 +ERROR = 1 +UNKNOWN_ERROR = 2 +VIRTUALENV_NOT_FOUND = 3 +PREVIOUS_BUILD_DIR_ERROR = 4 +NO_MATCHES_FOUND = 23 diff --git a/venv/Lib/site-packages/pip/_internal/commands/__init__.py b/venv/Lib/site-packages/pip/_internal/commands/__init__.py new file mode 100644 index 00000000..c72f24f3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/__init__.py @@ -0,0 +1,127 @@ +""" +Package containing all pip commands +""" + +import importlib +from collections import namedtuple +from typing import Any, Dict, Optional + +from pip._internal.cli.base_command import Command + +CommandInfo = namedtuple("CommandInfo", "module_path, class_name, summary") + +# This dictionary does a bunch of heavy lifting for help output: +# - Enables avoiding additional (costly) imports for presenting `--help`. +# - The ordering matters for help display. +# +# Even though the module path starts with the same "pip._internal.commands" +# prefix, the full path makes testing easier (specifically when modifying +# `commands_dict` in test setup / teardown). +commands_dict: Dict[str, CommandInfo] = { + "install": CommandInfo( + "pip._internal.commands.install", + "InstallCommand", + "Install packages.", + ), + "download": CommandInfo( + "pip._internal.commands.download", + "DownloadCommand", + "Download packages.", + ), + "uninstall": CommandInfo( + "pip._internal.commands.uninstall", + "UninstallCommand", + "Uninstall packages.", + ), + "freeze": CommandInfo( + "pip._internal.commands.freeze", + "FreezeCommand", + "Output installed packages in requirements format.", + ), + "list": CommandInfo( + "pip._internal.commands.list", + "ListCommand", + "List installed packages.", + ), + "show": CommandInfo( + "pip._internal.commands.show", + "ShowCommand", + "Show information about installed packages.", + ), + "check": CommandInfo( + "pip._internal.commands.check", + "CheckCommand", + "Verify installed packages have compatible dependencies.", + ), + "config": CommandInfo( + "pip._internal.commands.configuration", + "ConfigurationCommand", + "Manage local and global configuration.", + ), + "search": CommandInfo( + "pip._internal.commands.search", + "SearchCommand", + "Search PyPI for packages.", + ), + "cache": CommandInfo( + "pip._internal.commands.cache", + "CacheCommand", + "Inspect and manage pip's wheel cache.", + ), + "index": CommandInfo( + "pip._internal.commands.index", + "IndexCommand", + "Inspect information available from package indexes.", + ), + "wheel": CommandInfo( + "pip._internal.commands.wheel", + "WheelCommand", + "Build wheels from your requirements.", + ), + "hash": CommandInfo( + "pip._internal.commands.hash", + "HashCommand", + "Compute hashes of package archives.", + ), + "completion": CommandInfo( + "pip._internal.commands.completion", + "CompletionCommand", + "A helper command used for command completion.", + ), + "debug": CommandInfo( + "pip._internal.commands.debug", + "DebugCommand", + "Show information useful for debugging.", + ), + "help": CommandInfo( + "pip._internal.commands.help", + "HelpCommand", + "Show help for commands.", + ), +} + + +def create_command(name: str, **kwargs: Any) -> Command: + """ + Create an instance of the Command class with the given name. + """ + module_path, class_name, summary = commands_dict[name] + module = importlib.import_module(module_path) + command_class = getattr(module, class_name) + command = command_class(name=name, summary=summary, **kwargs) + + return command + + +def get_similar_commands(name: str) -> Optional[str]: + """Command name auto-correct.""" + from difflib import get_close_matches + + name = name.lower() + + close_commands = get_close_matches(name, commands_dict.keys()) + + if close_commands: + return close_commands[0] + else: + return None diff --git a/venv/Lib/site-packages/pip/_internal/commands/cache.py b/venv/Lib/site-packages/pip/_internal/commands/cache.py new file mode 100644 index 00000000..f1a489d3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/cache.py @@ -0,0 +1,223 @@ +import os +import textwrap +from optparse import Values +from typing import Any, List + +import pip._internal.utils.filesystem as filesystem +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.exceptions import CommandError, PipError +from pip._internal.utils.logging import getLogger + +logger = getLogger(__name__) + + +class CacheCommand(Command): + """ + Inspect and manage pip's wheel cache. + + Subcommands: + + - dir: Show the cache directory. + - info: Show information about the cache. + - list: List filenames of packages stored in the cache. + - remove: Remove one or more package from the cache. + - purge: Remove all items from the cache. + + ```` can be a glob expression or a package name. + """ + + ignore_require_venv = True + usage = """ + %prog dir + %prog info + %prog list [] [--format=[human, abspath]] + %prog remove + %prog purge + """ + + def add_options(self) -> None: + + self.cmd_opts.add_option( + "--format", + action="store", + dest="list_format", + default="human", + choices=("human", "abspath"), + help="Select the output format among: human (default) or abspath", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "dir": self.get_cache_dir, + "info": self.get_cache_info, + "list": self.list_cache_items, + "remove": self.remove_cache_items, + "purge": self.purge_cache, + } + + if not options.cache_dir: + logger.error("pip cache commands can not function since cache is disabled.") + return ERROR + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def get_cache_dir(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + logger.info(options.cache_dir) + + def get_cache_info(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + num_http_files = len(self._find_http_files(options)) + num_packages = len(self._find_wheels(options, "*")) + + http_cache_location = self._cache_dir(options, "http") + wheels_cache_location = self._cache_dir(options, "wheels") + http_cache_size = filesystem.format_directory_size(http_cache_location) + wheels_cache_size = filesystem.format_directory_size(wheels_cache_location) + + message = ( + textwrap.dedent( + """ + Package index page cache location: {http_cache_location} + Package index page cache size: {http_cache_size} + Number of HTTP files: {num_http_files} + Wheels location: {wheels_cache_location} + Wheels size: {wheels_cache_size} + Number of wheels: {package_count} + """ + ) + .format( + http_cache_location=http_cache_location, + http_cache_size=http_cache_size, + num_http_files=num_http_files, + wheels_cache_location=wheels_cache_location, + package_count=num_packages, + wheels_cache_size=wheels_cache_size, + ) + .strip() + ) + + logger.info(message) + + def list_cache_items(self, options: Values, args: List[Any]) -> None: + if len(args) > 1: + raise CommandError("Too many arguments") + + if args: + pattern = args[0] + else: + pattern = "*" + + files = self._find_wheels(options, pattern) + if options.list_format == "human": + self.format_for_human(files) + else: + self.format_for_abspath(files) + + def format_for_human(self, files: List[str]) -> None: + if not files: + logger.info("Nothing cached.") + return + + results = [] + for filename in files: + wheel = os.path.basename(filename) + size = filesystem.format_file_size(filename) + results.append(f" - {wheel} ({size})") + logger.info("Cache contents:\n") + logger.info("\n".join(sorted(results))) + + def format_for_abspath(self, files: List[str]) -> None: + if not files: + return + + results = [] + for filename in files: + results.append(filename) + + logger.info("\n".join(sorted(results))) + + def remove_cache_items(self, options: Values, args: List[Any]) -> None: + if len(args) > 1: + raise CommandError("Too many arguments") + + if not args: + raise CommandError("Please provide a pattern") + + files = self._find_wheels(options, args[0]) + + no_matching_msg = "No matching packages" + if args[0] == "*": + # Only fetch http files if no specific pattern given + files += self._find_http_files(options) + else: + # Add the pattern to the log message + no_matching_msg += ' for pattern "{}"'.format(args[0]) + + if not files: + logger.warning(no_matching_msg) + + for filename in files: + os.unlink(filename) + logger.verbose("Removed %s", filename) + logger.info("Files removed: %s", len(files)) + + def purge_cache(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + return self.remove_cache_items(options, ["*"]) + + def _cache_dir(self, options: Values, subdir: str) -> str: + return os.path.join(options.cache_dir, subdir) + + def _find_http_files(self, options: Values) -> List[str]: + http_dir = self._cache_dir(options, "http") + return filesystem.find_files(http_dir, "*") + + def _find_wheels(self, options: Values, pattern: str) -> List[str]: + wheel_dir = self._cache_dir(options, "wheels") + + # The wheel filename format, as specified in PEP 427, is: + # {distribution}-{version}(-{build})?-{python}-{abi}-{platform}.whl + # + # Additionally, non-alphanumeric values in the distribution are + # normalized to underscores (_), meaning hyphens can never occur + # before `-{version}`. + # + # Given that information: + # - If the pattern we're given contains a hyphen (-), the user is + # providing at least the version. Thus, we can just append `*.whl` + # to match the rest of it. + # - If the pattern we're given doesn't contain a hyphen (-), the + # user is only providing the name. Thus, we append `-*.whl` to + # match the hyphen before the version, followed by anything else. + # + # PEP 427: https://www.python.org/dev/peps/pep-0427/ + pattern = pattern + ("*.whl" if "-" in pattern else "-*.whl") + + return filesystem.find_files(wheel_dir, pattern) diff --git a/venv/Lib/site-packages/pip/_internal/commands/check.py b/venv/Lib/site-packages/pip/_internal/commands/check.py new file mode 100644 index 00000000..3864220b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/check.py @@ -0,0 +1,53 @@ +import logging +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.operations.check import ( + check_package_set, + create_package_set_from_installed, +) +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class CheckCommand(Command): + """Verify installed packages have compatible dependencies.""" + + usage = """ + %prog [options]""" + + def run(self, options: Values, args: List[str]) -> int: + + package_set, parsing_probs = create_package_set_from_installed() + missing, conflicting = check_package_set(package_set) + + for project_name in missing: + version = package_set[project_name].version + for dependency in missing[project_name]: + write_output( + "%s %s requires %s, which is not installed.", + project_name, + version, + dependency[0], + ) + + for project_name in conflicting: + version = package_set[project_name].version + for dep_name, dep_version, req in conflicting[project_name]: + write_output( + "%s %s has requirement %s, but you have %s %s.", + project_name, + version, + req, + dep_name, + dep_version, + ) + + if missing or conflicting or parsing_probs: + return ERROR + else: + write_output("No broken requirements found.") + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/completion.py b/venv/Lib/site-packages/pip/_internal/commands/completion.py new file mode 100644 index 00000000..c0fb4caf --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/completion.py @@ -0,0 +1,96 @@ +import sys +import textwrap +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.utils.misc import get_prog + +BASE_COMPLETION = """ +# pip {shell} completion start{script}# pip {shell} completion end +""" + +COMPLETION_SCRIPTS = { + "bash": """ + _pip_completion() + {{ + COMPREPLY=( $( COMP_WORDS="${{COMP_WORDS[*]}}" \\ + COMP_CWORD=$COMP_CWORD \\ + PIP_AUTO_COMPLETE=1 $1 2>/dev/null ) ) + }} + complete -o default -F _pip_completion {prog} + """, + "zsh": """ + function _pip_completion {{ + local words cword + read -Ac words + read -cn cword + reply=( $( COMP_WORDS="$words[*]" \\ + COMP_CWORD=$(( cword-1 )) \\ + PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null )) + }} + compctl -K _pip_completion {prog} + """, + "fish": """ + function __fish_complete_pip + set -lx COMP_WORDS (commandline -o) "" + set -lx COMP_CWORD ( \\ + math (contains -i -- (commandline -t) $COMP_WORDS)-1 \\ + ) + set -lx PIP_AUTO_COMPLETE 1 + string split \\ -- (eval $COMP_WORDS[1]) + end + complete -fa "(__fish_complete_pip)" -c {prog} + """, +} + + +class CompletionCommand(Command): + """A helper command to be used for command completion.""" + + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--bash", + "-b", + action="store_const", + const="bash", + dest="shell", + help="Emit completion code for bash", + ) + self.cmd_opts.add_option( + "--zsh", + "-z", + action="store_const", + const="zsh", + dest="shell", + help="Emit completion code for zsh", + ) + self.cmd_opts.add_option( + "--fish", + "-f", + action="store_const", + const="fish", + dest="shell", + help="Emit completion code for fish", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + """Prints the completion code of the given shell""" + shells = COMPLETION_SCRIPTS.keys() + shell_options = ["--" + shell for shell in sorted(shells)] + if options.shell in shells: + script = textwrap.dedent( + COMPLETION_SCRIPTS.get(options.shell, "").format(prog=get_prog()) + ) + print(BASE_COMPLETION.format(script=script, shell=options.shell)) + return SUCCESS + else: + sys.stderr.write( + "ERROR: You must pass {}\n".format(" or ".join(shell_options)) + ) + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/configuration.py b/venv/Lib/site-packages/pip/_internal/commands/configuration.py new file mode 100644 index 00000000..c6c74ed5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/configuration.py @@ -0,0 +1,266 @@ +import logging +import os +import subprocess +from optparse import Values +from typing import Any, List, Optional + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.configuration import ( + Configuration, + Kind, + get_configuration_files, + kinds, +) +from pip._internal.exceptions import PipError +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_prog, write_output + +logger = logging.getLogger(__name__) + + +class ConfigurationCommand(Command): + """ + Manage local and global configuration. + + Subcommands: + + - list: List the active configuration (or from the file specified) + - edit: Edit the configuration file in an editor + - get: Get the value associated with name + - set: Set the name=value + - unset: Unset the value associated with name + - debug: List the configuration files and values defined under them + + If none of --user, --global and --site are passed, a virtual + environment configuration file is used if one is active and the file + exists. Otherwise, all modifications happen to the user file by + default. + """ + + ignore_require_venv = True + usage = """ + %prog [] list + %prog [] [--editor ] edit + + %prog [] get name + %prog [] set name value + %prog [] unset name + %prog [] debug + """ + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--editor", + dest="editor", + action="store", + default=None, + help=( + "Editor to use to edit the file. Uses VISUAL or EDITOR " + "environment variables if not provided." + ), + ) + + self.cmd_opts.add_option( + "--global", + dest="global_file", + action="store_true", + default=False, + help="Use the system-wide configuration file only", + ) + + self.cmd_opts.add_option( + "--user", + dest="user_file", + action="store_true", + default=False, + help="Use the user configuration file only", + ) + + self.cmd_opts.add_option( + "--site", + dest="site_file", + action="store_true", + default=False, + help="Use the current environment configuration file only", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "list": self.list_values, + "edit": self.open_in_editor, + "get": self.get_name, + "set": self.set_name_value, + "unset": self.unset_name, + "debug": self.list_config_values, + } + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Determine which configuration files are to be loaded + # Depends on whether the command is modifying. + try: + load_only = self._determine_file( + options, need_value=(action in ["get", "set", "unset", "edit"]) + ) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + # Load a new configuration + self.configuration = Configuration( + isolated=options.isolated_mode, load_only=load_only + ) + self.configuration.load() + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _determine_file(self, options: Values, need_value: bool) -> Optional[Kind]: + file_options = [ + key + for key, value in ( + (kinds.USER, options.user_file), + (kinds.GLOBAL, options.global_file), + (kinds.SITE, options.site_file), + ) + if value + ] + + if not file_options: + if not need_value: + return None + # Default to user, unless there's a site file. + elif any( + os.path.exists(site_config_file) + for site_config_file in get_configuration_files()[kinds.SITE] + ): + return kinds.SITE + else: + return kinds.USER + elif len(file_options) == 1: + return file_options[0] + + raise PipError( + "Need exactly one file to operate upon " + "(--user, --site, --global) to perform." + ) + + def list_values(self, options: Values, args: List[str]) -> None: + self._get_n_args(args, "list", n=0) + + for key, value in sorted(self.configuration.items()): + write_output("%s=%r", key, value) + + def get_name(self, options: Values, args: List[str]) -> None: + key = self._get_n_args(args, "get [name]", n=1) + value = self.configuration.get_value(key) + + write_output("%s", value) + + def set_name_value(self, options: Values, args: List[str]) -> None: + key, value = self._get_n_args(args, "set [name] [value]", n=2) + self.configuration.set_value(key, value) + + self._save_configuration() + + def unset_name(self, options: Values, args: List[str]) -> None: + key = self._get_n_args(args, "unset [name]", n=1) + self.configuration.unset_value(key) + + self._save_configuration() + + def list_config_values(self, options: Values, args: List[str]) -> None: + """List config key-value pairs across different config files""" + self._get_n_args(args, "debug", n=0) + + self.print_env_var_values() + # Iterate over config files and print if they exist, and the + # key-value pairs present in them if they do + for variant, files in sorted(self.configuration.iter_config_files()): + write_output("%s:", variant) + for fname in files: + with indent_log(): + file_exists = os.path.exists(fname) + write_output("%s, exists: %r", fname, file_exists) + if file_exists: + self.print_config_file_values(variant) + + def print_config_file_values(self, variant: Kind) -> None: + """Get key-value pairs from the file of a variant""" + for name, value in self.configuration.get_values_in_config(variant).items(): + with indent_log(): + write_output("%s: %s", name, value) + + def print_env_var_values(self) -> None: + """Get key-values pairs present as environment variables""" + write_output("%s:", "env_var") + with indent_log(): + for key, value in sorted(self.configuration.get_environ_vars()): + env_var = f"PIP_{key.upper()}" + write_output("%s=%r", env_var, value) + + def open_in_editor(self, options: Values, args: List[str]) -> None: + editor = self._determine_editor(options) + + fname = self.configuration.get_file_to_edit() + if fname is None: + raise PipError("Could not determine appropriate file.") + + try: + subprocess.check_call([editor, fname]) + except subprocess.CalledProcessError as e: + raise PipError( + "Editor Subprocess exited with exit code {}".format(e.returncode) + ) + + def _get_n_args(self, args: List[str], example: str, n: int) -> Any: + """Helper to make sure the command got the right number of arguments""" + if len(args) != n: + msg = ( + "Got unexpected number of arguments, expected {}. " + '(example: "{} config {}")' + ).format(n, get_prog(), example) + raise PipError(msg) + + if n == 1: + return args[0] + else: + return args + + def _save_configuration(self) -> None: + # We successfully ran a modifying command. Need to save the + # configuration. + try: + self.configuration.save() + except Exception: + logger.exception( + "Unable to save configuration. Please report this as a bug." + ) + raise PipError("Internal Error.") + + def _determine_editor(self, options: Values) -> str: + if options.editor is not None: + return options.editor + elif "VISUAL" in os.environ: + return os.environ["VISUAL"] + elif "EDITOR" in os.environ: + return os.environ["EDITOR"] + else: + raise PipError("Could not determine editor to use.") diff --git a/venv/Lib/site-packages/pip/_internal/commands/debug.py b/venv/Lib/site-packages/pip/_internal/commands/debug.py new file mode 100644 index 00000000..d3f1f28d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/debug.py @@ -0,0 +1,202 @@ +import locale +import logging +import os +import sys +from optparse import Values +from types import ModuleType +from typing import Any, Dict, List, Optional + +import pip._vendor +from pip._vendor.certifi import where +from pip._vendor.packaging.version import parse as parse_version + +from pip import __file__ as pip_location +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.configuration import Configuration +from pip._internal.metadata import get_environment +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_pip_version + +logger = logging.getLogger(__name__) + + +def show_value(name: str, value: Any) -> None: + logger.info("%s: %s", name, value) + + +def show_sys_implementation() -> None: + logger.info("sys.implementation:") + implementation_name = sys.implementation.name + with indent_log(): + show_value("name", implementation_name) + + +def create_vendor_txt_map() -> Dict[str, str]: + vendor_txt_path = os.path.join( + os.path.dirname(pip_location), "_vendor", "vendor.txt" + ) + + with open(vendor_txt_path) as f: + # Purge non version specifying lines. + # Also, remove any space prefix or suffixes (including comments). + lines = [ + line.strip().split(" ", 1)[0] for line in f.readlines() if "==" in line + ] + + # Transform into "module" -> version dict. + return dict(line.split("==", 1) for line in lines) # type: ignore + + +def get_module_from_module_name(module_name: str) -> ModuleType: + # Module name can be uppercase in vendor.txt for some reason... + module_name = module_name.lower() + # PATCH: setuptools is actually only pkg_resources. + if module_name == "setuptools": + module_name = "pkg_resources" + + __import__(f"pip._vendor.{module_name}", globals(), locals(), level=0) + return getattr(pip._vendor, module_name) + + +def get_vendor_version_from_module(module_name: str) -> Optional[str]: + module = get_module_from_module_name(module_name) + version = getattr(module, "__version__", None) + + if not version: + # Try to find version in debundled module info. + env = get_environment([os.path.dirname(module.__file__)]) + dist = env.get_distribution(module_name) + if dist: + version = str(dist.version) + + return version + + +def show_actual_vendor_versions(vendor_txt_versions: Dict[str, str]) -> None: + """Log the actual version and print extra info if there is + a conflict or if the actual version could not be imported. + """ + for module_name, expected_version in vendor_txt_versions.items(): + extra_message = "" + actual_version = get_vendor_version_from_module(module_name) + if not actual_version: + extra_message = ( + " (Unable to locate actual module version, using" + " vendor.txt specified version)" + ) + actual_version = expected_version + elif parse_version(actual_version) != parse_version(expected_version): + extra_message = ( + " (CONFLICT: vendor.txt suggests version should" + " be {})".format(expected_version) + ) + logger.info("%s==%s%s", module_name, actual_version, extra_message) + + +def show_vendor_versions() -> None: + logger.info("vendored library versions:") + + vendor_txt_versions = create_vendor_txt_map() + with indent_log(): + show_actual_vendor_versions(vendor_txt_versions) + + +def show_tags(options: Values) -> None: + tag_limit = 10 + + target_python = make_target_python(options) + tags = target_python.get_tags() + + # Display the target options that were explicitly provided. + formatted_target = target_python.format_given() + suffix = "" + if formatted_target: + suffix = f" (target: {formatted_target})" + + msg = "Compatible tags: {}{}".format(len(tags), suffix) + logger.info(msg) + + if options.verbose < 1 and len(tags) > tag_limit: + tags_limited = True + tags = tags[:tag_limit] + else: + tags_limited = False + + with indent_log(): + for tag in tags: + logger.info(str(tag)) + + if tags_limited: + msg = ( + "...\n[First {tag_limit} tags shown. Pass --verbose to show all.]" + ).format(tag_limit=tag_limit) + logger.info(msg) + + +def ca_bundle_info(config: Configuration) -> str: + levels = set() + for key, _ in config.items(): + levels.add(key.split(".")[0]) + + if not levels: + return "Not specified" + + levels_that_override_global = ["install", "wheel", "download"] + global_overriding_level = [ + level for level in levels if level in levels_that_override_global + ] + if not global_overriding_level: + return "global" + + if "global" in levels: + levels.remove("global") + return ", ".join(levels) + + +class DebugCommand(Command): + """ + Display debug information. + """ + + usage = """ + %prog """ + ignore_require_venv = True + + def add_options(self) -> None: + cmdoptions.add_target_python_options(self.cmd_opts) + self.parser.insert_option_group(0, self.cmd_opts) + self.parser.config.load() + + def run(self, options: Values, args: List[str]) -> int: + logger.warning( + "This command is only meant for debugging. " + "Do not use this with automation for parsing and getting these " + "details, since the output and options of this command may " + "change without notice." + ) + show_value("pip version", get_pip_version()) + show_value("sys.version", sys.version) + show_value("sys.executable", sys.executable) + show_value("sys.getdefaultencoding", sys.getdefaultencoding()) + show_value("sys.getfilesystemencoding", sys.getfilesystemencoding()) + show_value( + "locale.getpreferredencoding", + locale.getpreferredencoding(), + ) + show_value("sys.platform", sys.platform) + show_sys_implementation() + + show_value("'cert' config value", ca_bundle_info(self.parser.config)) + show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE")) + show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE")) + show_value("pip._vendor.certifi.where()", where()) + show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED) + + show_vendor_versions() + + show_tags(options) + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/download.py b/venv/Lib/site-packages/pip/_internal/commands/download.py new file mode 100644 index 00000000..7de207f1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/download.py @@ -0,0 +1,139 @@ +import logging +import os +from optparse import Values +from typing import List + +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import RequirementCommand, with_cleanup +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.misc import ensure_dir, normalize_path, write_output +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class DownloadCommand(RequirementCommand): + """ + Download packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports downloading from "requirements files", which provide + an easy way to specify a whole environment to be downloaded. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] ... + %prog [options] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.global_options()) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.src()) + self.cmd_opts.add_option(cmdoptions.pre()) + self.cmd_opts.add_option(cmdoptions.require_hashes()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + + self.cmd_opts.add_option( + "-d", + "--dest", + "--destination-dir", + "--destination-directory", + dest="download_dir", + metavar="dir", + default=os.curdir, + help="Download packages into .", + ) + + cmdoptions.add_target_python_options(self.cmd_opts) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + + options.ignore_installed = True + # editable doesn't really make sense for `pip download`, but the bowels + # of the RequirementSet code require that property. + options.editables = [] + + cmdoptions.check_dist_restriction(options) + + options.download_dir = normalize_path(options.download_dir) + ensure_dir(options.download_dir) + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + + req_tracker = self.enter_context(get_requirement_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="download", + globally_managed=True, + ) + + reqs = self.get_requirements(args, options, finder, session) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + download_dir=options.download_dir, + use_user_site=False, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + ignore_requires_python=options.ignore_requires_python, + py_version_info=options.python_version, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve(reqs, check_supported_wheels=True) + + downloaded: List[str] = [] + for req in requirement_set.requirements.values(): + if req.satisfied_by is None: + assert req.name is not None + preparer.save_linked_requirement(req) + downloaded.append(req.name) + if downloaded: + write_output("Successfully downloaded %s", " ".join(downloaded)) + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/freeze.py b/venv/Lib/site-packages/pip/_internal/commands/freeze.py new file mode 100644 index 00000000..5fa6d39b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/freeze.py @@ -0,0 +1,97 @@ +import sys +from optparse import Values +from typing import List + +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.operations.freeze import freeze +from pip._internal.utils.compat import stdlib_pkgs + +DEV_PKGS = {"pip", "setuptools", "distribute", "wheel"} + + +class FreezeCommand(Command): + """ + Output installed packages in requirements format. + + packages are listed in a case-insensitive sorted order. + """ + + usage = """ + %prog [options]""" + log_streams = ("ext://sys.stderr", "ext://sys.stderr") + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help=( + "Use the order in the given requirements file and its " + "comments when generating output. This option can be " + "used multiple times." + ), + ) + self.cmd_opts.add_option( + "-l", + "--local", + dest="local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not output " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + "--all", + dest="freeze_all", + action="store_true", + help=( + "Do not skip these packages in the output:" + " {}".format(", ".join(DEV_PKGS)) + ), + ) + self.cmd_opts.add_option( + "--exclude-editable", + dest="exclude_editable", + action="store_true", + help="Exclude editable package from output.", + ) + self.cmd_opts.add_option(cmdoptions.list_exclude()) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + skip = set(stdlib_pkgs) + if not options.freeze_all: + skip.update(DEV_PKGS) + + if options.excludes: + skip.update(options.excludes) + + cmdoptions.check_list_path_option(options) + + for line in freeze( + requirement=options.requirements, + local_only=options.local, + user_only=options.user, + paths=options.path, + isolated=options.isolated_mode, + skip=skip, + exclude_editable=options.exclude_editable, + ): + sys.stdout.write(line + "\n") + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/hash.py b/venv/Lib/site-packages/pip/_internal/commands/hash.py new file mode 100644 index 00000000..042dac81 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/hash.py @@ -0,0 +1,59 @@ +import hashlib +import logging +import sys +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.utils.hashes import FAVORITE_HASH, STRONG_HASHES +from pip._internal.utils.misc import read_chunks, write_output + +logger = logging.getLogger(__name__) + + +class HashCommand(Command): + """ + Compute a hash of a local package archive. + + These can be used with --hash in a requirements file to do repeatable + installs. + """ + + usage = "%prog [options] ..." + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-a", + "--algorithm", + dest="algorithm", + choices=STRONG_HASHES, + action="store", + default=FAVORITE_HASH, + help="The hash algorithm to use: one of {}".format( + ", ".join(STRONG_HASHES) + ), + ) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + self.parser.print_usage(sys.stderr) + return ERROR + + algorithm = options.algorithm + for path in args: + write_output( + "%s:\n--hash=%s:%s", path, algorithm, _hash_of_file(path, algorithm) + ) + return SUCCESS + + +def _hash_of_file(path: str, algorithm: str) -> str: + """Return the hash digest of a file.""" + with open(path, "rb") as archive: + hash = hashlib.new(algorithm) + for chunk in read_chunks(archive): + hash.update(chunk) + return hash.hexdigest() diff --git a/venv/Lib/site-packages/pip/_internal/commands/help.py b/venv/Lib/site-packages/pip/_internal/commands/help.py new file mode 100644 index 00000000..62066318 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/help.py @@ -0,0 +1,41 @@ +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError + + +class HelpCommand(Command): + """Show help for commands""" + + usage = """ + %prog """ + ignore_require_venv = True + + def run(self, options: Values, args: List[str]) -> int: + from pip._internal.commands import ( + commands_dict, + create_command, + get_similar_commands, + ) + + try: + # 'pip help' with no args is handled by pip.__init__.parseopt() + cmd_name = args[0] # the command we need help for + except IndexError: + return SUCCESS + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = [f'unknown command "{cmd_name}"'] + if guess: + msg.append(f'maybe you meant "{guess}"') + + raise CommandError(" - ".join(msg)) + + command = create_command(cmd_name) + command.parser.print_help() + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/index.py b/venv/Lib/site-packages/pip/_internal/commands/index.py new file mode 100644 index 00000000..b4bf0ac0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/index.py @@ -0,0 +1,138 @@ +import logging +from optparse import Values +from typing import Any, Iterable, List, Optional, Union + +from pip._vendor.packaging.version import LegacyVersion, Version + +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.commands.search import print_dist_installation_info +from pip._internal.exceptions import CommandError, DistributionNotFound, PipError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.network.session import PipSession +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class IndexCommand(IndexGroupCommand): + """ + Inspect information available from package indexes. + """ + + usage = """ + %prog versions + """ + + def add_options(self) -> None: + cmdoptions.add_target_python_options(self.cmd_opts) + + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.pre()) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "versions": self.get_available_package_versions, + } + + logger.warning( + "pip index is currently an experimental command. " + "It may be removed/changed in a future release " + "without prior warning." + ) + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _build_package_finder( + self, + options: Values, + session: PipSession, + target_python: Optional[TargetPython] = None, + ignore_requires_python: Optional[bool] = None, + ) -> PackageFinder: + """ + Create a package finder appropriate to the index command. + """ + link_collector = LinkCollector.create(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) + + def get_available_package_versions(self, options: Values, args: List[Any]) -> None: + if len(args) != 1: + raise CommandError("You need to specify exactly one argument") + + target_python = cmdoptions.make_target_python(options) + query = args[0] + + with self._build_session(options) as session: + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + + versions: Iterable[Union[LegacyVersion, Version]] = ( + candidate.version for candidate in finder.find_all_candidates(query) + ) + + if not options.pre: + # Remove prereleases + versions = ( + version for version in versions if not version.is_prerelease + ) + versions = set(versions) + + if not versions: + raise DistributionNotFound( + "No matching distribution found for {}".format(query) + ) + + formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)] + latest = formatted_versions[0] + + write_output("{} ({})".format(query, latest)) + write_output("Available versions: {}".format(", ".join(formatted_versions))) + print_dist_installation_info(query, latest) diff --git a/venv/Lib/site-packages/pip/_internal/commands/install.py b/venv/Lib/site-packages/pip/_internal/commands/install.py new file mode 100644 index 00000000..eedb1ff5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/install.py @@ -0,0 +1,770 @@ +import errno +import operator +import os +import shutil +import site +from optparse import SUPPRESS_HELP, Values +from typing import Iterable, List, Optional + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import ( + RequirementCommand, + warn_if_run_as_root, + with_cleanup, +) +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.exceptions import CommandError, InstallationError +from pip._internal.locations import get_scheme +from pip._internal.metadata import get_environment +from pip._internal.models.format_control import FormatControl +from pip._internal.operations.check import ConflictDetails, check_install_conflicts +from pip._internal.req import install_given_reqs +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.distutils_args import parse_distutils_args +from pip._internal.utils.filesystem import test_writable_dir +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ( + ensure_dir, + get_pip_version, + protect_pip_from_modification_on_windows, + write_output, +) +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) +from pip._internal.wheel_builder import ( + BinaryAllowedPredicate, + build, + should_build_for_install_command, +) + +logger = getLogger(__name__) + + +def get_check_binary_allowed(format_control: FormatControl) -> BinaryAllowedPredicate: + def check_binary_allowed(req: InstallRequirement) -> bool: + canonical_name = canonicalize_name(req.name or "") + allowed_formats = format_control.get_allowed_formats(canonical_name) + return "binary" in allowed_formats + + return check_binary_allowed + + +class InstallCommand(RequirementCommand): + """ + Install packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports installing from "requirements files", which provide + an easy way to specify a whole environment to be installed. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.pre()) + + self.cmd_opts.add_option(cmdoptions.editable()) + self.cmd_opts.add_option( + "-t", + "--target", + dest="target_dir", + metavar="dir", + default=None, + help=( + "Install packages into . " + "By default this will not replace existing files/folders in " + ". Use --upgrade to replace existing packages in " + "with new versions." + ), + ) + cmdoptions.add_target_python_options(self.cmd_opts) + + self.cmd_opts.add_option( + "--user", + dest="use_user_site", + action="store_true", + help=( + "Install to the Python user install directory for your " + "platform. Typically ~/.local/, or %APPDATA%\\Python on " + "Windows. (See the Python documentation for site.USER_BASE " + "for full details.)" + ), + ) + self.cmd_opts.add_option( + "--no-user", + dest="use_user_site", + action="store_false", + help=SUPPRESS_HELP, + ) + self.cmd_opts.add_option( + "--root", + dest="root_path", + metavar="dir", + default=None, + help="Install everything relative to this alternate root directory.", + ) + self.cmd_opts.add_option( + "--prefix", + dest="prefix_path", + metavar="dir", + default=None, + help=( + "Installation prefix where lib, bin and other top-level " + "folders are placed" + ), + ) + + self.cmd_opts.add_option(cmdoptions.src()) + + self.cmd_opts.add_option( + "-U", + "--upgrade", + dest="upgrade", + action="store_true", + help=( + "Upgrade all specified packages to the newest available " + "version. The handling of dependencies depends on the " + "upgrade-strategy used." + ), + ) + + self.cmd_opts.add_option( + "--upgrade-strategy", + dest="upgrade_strategy", + default="only-if-needed", + choices=["only-if-needed", "eager"], + help=( + "Determines how dependency upgrading should be handled " + "[default: %default]. " + '"eager" - dependencies are upgraded regardless of ' + "whether the currently installed version satisfies the " + "requirements of the upgraded package(s). " + '"only-if-needed" - are upgraded only when they do not ' + "satisfy the requirements of the upgraded package(s)." + ), + ) + + self.cmd_opts.add_option( + "--force-reinstall", + dest="force_reinstall", + action="store_true", + help="Reinstall all packages even if they are already up-to-date.", + ) + + self.cmd_opts.add_option( + "-I", + "--ignore-installed", + dest="ignore_installed", + action="store_true", + help=( + "Ignore the installed packages, overwriting them. " + "This can break your system if the existing package " + "is of a different version or was installed " + "with a different package manager!" + ), + ) + + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + + self.cmd_opts.add_option(cmdoptions.install_options()) + self.cmd_opts.add_option(cmdoptions.global_options()) + + self.cmd_opts.add_option( + "--compile", + action="store_true", + dest="compile", + default=True, + help="Compile Python source files to bytecode", + ) + + self.cmd_opts.add_option( + "--no-compile", + action="store_false", + dest="compile", + help="Do not compile Python source files to bytecode", + ) + + self.cmd_opts.add_option( + "--no-warn-script-location", + action="store_false", + dest="warn_script_location", + default=True, + help="Do not warn when installing scripts outside PATH", + ) + self.cmd_opts.add_option( + "--no-warn-conflicts", + action="store_false", + dest="warn_about_conflicts", + default=True, + help="Do not warn about broken dependencies", + ) + + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.require_hashes()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + if options.use_user_site and options.target_dir is not None: + raise CommandError("Can not combine '--user' and '--target'") + + cmdoptions.check_install_build_global(options) + upgrade_strategy = "to-satisfy-only" + if options.upgrade: + upgrade_strategy = options.upgrade_strategy + + cmdoptions.check_dist_restriction(options, check_target=True) + + install_options = options.install_options or [] + + logger.verbose("Using %s", get_pip_version()) + options.use_user_site = decide_user_install( + options.use_user_site, + prefix_path=options.prefix_path, + target_dir=options.target_dir, + root_path=options.root_path, + isolated_mode=options.isolated_mode, + ) + + target_temp_dir: Optional[TempDirectory] = None + target_temp_dir_path: Optional[str] = None + if options.target_dir: + options.ignore_installed = True + options.target_dir = os.path.abspath(options.target_dir) + if ( + # fmt: off + os.path.exists(options.target_dir) and + not os.path.isdir(options.target_dir) + # fmt: on + ): + raise CommandError( + "Target path exists but is not a directory, will not continue." + ) + + # Create a target directory for using with the target option + target_temp_dir = TempDirectory(kind="target") + target_temp_dir_path = target_temp_dir.path + self.enter_context(target_temp_dir) + + global_options = options.global_options or [] + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + wheel_cache = WheelCache(options.cache_dir, options.format_control) + + req_tracker = self.enter_context(get_requirement_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="install", + globally_managed=True, + ) + + try: + reqs = self.get_requirements(args, options, finder, session) + + # Only when installing is it permitted to use PEP 660. + # In other circumstances (pip wheel, pip download) we generate + # regular (i.e. non editable) metadata and wheels. + for req in reqs: + req.permit_editable_wheels = True + + reject_location_related_install_options(reqs, options.install_options) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + use_user_site=options.use_user_site, + ) + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + use_user_site=options.use_user_site, + ignore_installed=options.ignore_installed, + ignore_requires_python=options.ignore_requires_python, + force_reinstall=options.force_reinstall, + upgrade_strategy=upgrade_strategy, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve( + reqs, check_supported_wheels=not options.target_dir + ) + + try: + pip_req = requirement_set.get_requirement("pip") + except KeyError: + modifying_pip = False + else: + # If we're not replacing an already installed pip, + # we're not modifying it. + modifying_pip = pip_req.satisfied_by is None + protect_pip_from_modification_on_windows(modifying_pip=modifying_pip) + + check_binary_allowed = get_check_binary_allowed(finder.format_control) + + reqs_to_build = [ + r + for r in requirement_set.requirements.values() + if should_build_for_install_command(r, check_binary_allowed) + ] + + _, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + verify=True, + build_options=[], + global_options=[], + ) + + # If we're using PEP 517, we cannot do a legacy setup.py install + # so we fail here. + pep517_build_failure_names: List[str] = [ + r.name for r in build_failures if r.use_pep517 # type: ignore + ] + if pep517_build_failure_names: + raise InstallationError( + "Could not build wheels for {}, which is required to " + "install pyproject.toml-based projects".format( + ", ".join(pep517_build_failure_names) + ) + ) + + # For now, we just warn about failures building legacy + # requirements, as we'll fall through to a setup.py install for + # those. + for r in build_failures: + if not r.use_pep517: + r.legacy_install_reason = 8368 + + to_install = resolver.get_installation_order(requirement_set) + + # Check for conflicts in the package set we're installing. + conflicts: Optional[ConflictDetails] = None + should_warn_about_conflicts = ( + not options.ignore_dependencies and options.warn_about_conflicts + ) + if should_warn_about_conflicts: + conflicts = self._determine_conflicts(to_install) + + # Don't warn about script install locations if + # --target or --prefix has been specified + warn_script_location = options.warn_script_location + if options.target_dir or options.prefix_path: + warn_script_location = False + + installed = install_given_reqs( + to_install, + install_options, + global_options, + root=options.root_path, + home=target_temp_dir_path, + prefix=options.prefix_path, + warn_script_location=warn_script_location, + use_user_site=options.use_user_site, + pycompile=options.compile, + ) + + lib_locations = get_lib_location_guesses( + user=options.use_user_site, + home=target_temp_dir_path, + root=options.root_path, + prefix=options.prefix_path, + isolated=options.isolated_mode, + ) + env = get_environment(lib_locations) + + installed.sort(key=operator.attrgetter("name")) + items = [] + for result in installed: + item = result.name + try: + installed_dist = env.get_distribution(item) + if installed_dist is not None: + item = f"{item}-{installed_dist.version}" + except Exception: + pass + items.append(item) + + if conflicts is not None: + self._warn_about_conflicts( + conflicts, + resolver_variant=self.determine_resolver_variant(options), + ) + + installed_desc = " ".join(items) + if installed_desc: + write_output( + "Successfully installed %s", + installed_desc, + ) + except OSError as error: + show_traceback = self.verbosity >= 1 + + message = create_os_error_message( + error, + show_traceback, + options.use_user_site, + ) + logger.error(message, exc_info=show_traceback) # noqa + + return ERROR + + if options.target_dir: + assert target_temp_dir + self._handle_target_dir( + options.target_dir, target_temp_dir, options.upgrade + ) + + warn_if_run_as_root() + return SUCCESS + + def _handle_target_dir( + self, target_dir: str, target_temp_dir: TempDirectory, upgrade: bool + ) -> None: + ensure_dir(target_dir) + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + lib_dir_list = [] + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + scheme = get_scheme("", home=target_temp_dir.path) + purelib_dir = scheme.purelib + platlib_dir = scheme.platlib + data_dir = scheme.data + + if os.path.exists(purelib_dir): + lib_dir_list.append(purelib_dir) + if os.path.exists(platlib_dir) and platlib_dir != purelib_dir: + lib_dir_list.append(platlib_dir) + if os.path.exists(data_dir): + lib_dir_list.append(data_dir) + + for lib_dir in lib_dir_list: + for item in os.listdir(lib_dir): + if lib_dir == data_dir: + ddir = os.path.join(data_dir, item) + if any(s.startswith(ddir) for s in lib_dir_list[:-1]): + continue + target_item_dir = os.path.join(target_dir, item) + if os.path.exists(target_item_dir): + if not upgrade: + logger.warning( + "Target directory %s already exists. Specify " + "--upgrade to force replacement.", + target_item_dir, + ) + continue + if os.path.islink(target_item_dir): + logger.warning( + "Target directory %s already exists and is " + "a link. pip will not automatically replace " + "links, please remove if replacement is " + "desired.", + target_item_dir, + ) + continue + if os.path.isdir(target_item_dir): + shutil.rmtree(target_item_dir) + else: + os.remove(target_item_dir) + + shutil.move(os.path.join(lib_dir, item), target_item_dir) + + def _determine_conflicts( + self, to_install: List[InstallRequirement] + ) -> Optional[ConflictDetails]: + try: + return check_install_conflicts(to_install) + except Exception: + logger.exception( + "Error while checking for conflicts. Please file an issue on " + "pip's issue tracker: https://github.com/pypa/pip/issues/new" + ) + return None + + def _warn_about_conflicts( + self, conflict_details: ConflictDetails, resolver_variant: str + ) -> None: + package_set, (missing, conflicting) = conflict_details + if not missing and not conflicting: + return + + parts: List[str] = [] + if resolver_variant == "legacy": + parts.append( + "pip's legacy dependency resolver does not consider dependency " + "conflicts when selecting packages. This behaviour is the " + "source of the following dependency conflicts." + ) + else: + assert resolver_variant == "2020-resolver" + parts.append( + "pip's dependency resolver does not currently take into account " + "all the packages that are installed. This behaviour is the " + "source of the following dependency conflicts." + ) + + # NOTE: There is some duplication here, with commands/check.py + for project_name in missing: + version = package_set[project_name][0] + for dependency in missing[project_name]: + message = ( + "{name} {version} requires {requirement}, " + "which is not installed." + ).format( + name=project_name, + version=version, + requirement=dependency[1], + ) + parts.append(message) + + for project_name in conflicting: + version = package_set[project_name][0] + for dep_name, dep_version, req in conflicting[project_name]: + message = ( + "{name} {version} requires {requirement}, but {you} have " + "{dep_name} {dep_version} which is incompatible." + ).format( + name=project_name, + version=version, + requirement=req, + dep_name=dep_name, + dep_version=dep_version, + you=("you" if resolver_variant == "2020-resolver" else "you'll"), + ) + parts.append(message) + + logger.critical("\n".join(parts)) + + +def get_lib_location_guesses( + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> List[str]: + scheme = get_scheme( + "", + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + return [scheme.purelib, scheme.platlib] + + +def site_packages_writable(root: Optional[str], isolated: bool) -> bool: + return all( + test_writable_dir(d) + for d in set(get_lib_location_guesses(root=root, isolated=isolated)) + ) + + +def decide_user_install( + use_user_site: Optional[bool], + prefix_path: Optional[str] = None, + target_dir: Optional[str] = None, + root_path: Optional[str] = None, + isolated_mode: bool = False, +) -> bool: + """Determine whether to do a user install based on the input options. + + If use_user_site is False, no additional checks are done. + If use_user_site is True, it is checked for compatibility with other + options. + If use_user_site is None, the default behaviour depends on the environment, + which is provided by the other arguments. + """ + # In some cases (config from tox), use_user_site can be set to an integer + # rather than a bool, which 'use_user_site is False' wouldn't catch. + if (use_user_site is not None) and (not use_user_site): + logger.debug("Non-user install by explicit request") + return False + + if use_user_site: + if prefix_path: + raise CommandError( + "Can not combine '--user' and '--prefix' as they imply " + "different installation locations" + ) + if virtualenv_no_global(): + raise InstallationError( + "Can not perform a '--user' install. User site-packages " + "are not visible in this virtualenv." + ) + logger.debug("User install by explicit request") + return True + + # If we are here, user installs have not been explicitly requested/avoided + assert use_user_site is None + + # user install incompatible with --prefix/--target + if prefix_path or target_dir: + logger.debug("Non-user install due to --prefix or --target option") + return False + + # If user installs are not enabled, choose a non-user install + if not site.ENABLE_USER_SITE: + logger.debug("Non-user install because user site-packages disabled") + return False + + # If we have permission for a non-user install, do that, + # otherwise do a user install. + if site_packages_writable(root=root_path, isolated=isolated_mode): + logger.debug("Non-user install because site-packages writeable") + return False + + logger.info( + "Defaulting to user installation because normal site-packages " + "is not writeable" + ) + return True + + +def reject_location_related_install_options( + requirements: List[InstallRequirement], options: Optional[List[str]] +) -> None: + """If any location-changing --install-option arguments were passed for + requirements or on the command-line, then show a deprecation warning. + """ + + def format_options(option_names: Iterable[str]) -> List[str]: + return ["--{}".format(name.replace("_", "-")) for name in option_names] + + offenders = [] + + for requirement in requirements: + install_options = requirement.install_options + location_options = parse_distutils_args(install_options) + if location_options: + offenders.append( + "{!r} from {}".format( + format_options(location_options.keys()), requirement + ) + ) + + if options: + location_options = parse_distutils_args(options) + if location_options: + offenders.append( + "{!r} from command line".format(format_options(location_options.keys())) + ) + + if not offenders: + return + + raise CommandError( + "Location-changing options found in --install-option: {}." + " This is unsupported, use pip-level options like --user," + " --prefix, --root, and --target instead.".format("; ".join(offenders)) + ) + + +def create_os_error_message( + error: OSError, show_traceback: bool, using_user_site: bool +) -> str: + """Format an error message for an OSError + + It may occur anytime during the execution of the install command. + """ + parts = [] + + # Mention the error if we are not going to show a traceback + parts.append("Could not install packages due to an OSError") + if not show_traceback: + parts.append(": ") + parts.append(str(error)) + else: + parts.append(".") + + # Spilt the error indication from a helper message (if any) + parts[-1] += "\n" + + # Suggest useful actions to the user: + # (1) using user site-packages or (2) verifying the permissions + if error.errno == errno.EACCES: + user_option_part = "Consider using the `--user` option" + permissions_part = "Check the permissions" + + if not running_under_virtualenv() and not using_user_site: + parts.extend( + [ + user_option_part, + " or ", + permissions_part.lower(), + ] + ) + else: + parts.append(permissions_part) + parts.append(".\n") + + # Suggest the user to enable Long Paths if path length is + # more than 260 + if ( + WINDOWS + and error.errno == errno.ENOENT + and error.filename + and len(error.filename) > 260 + ): + parts.append( + "HINT: This error might have occurred since " + "this system does not have Windows Long Path " + "support enabled. You can find information on " + "how to enable this at " + "https://pip.pypa.io/warnings/enable-long-paths\n" + ) + + return "".join(parts).strip() + "\n" diff --git a/venv/Lib/site-packages/pip/_internal/commands/list.py b/venv/Lib/site-packages/pip/_internal/commands/list.py new file mode 100644 index 00000000..75d8dd46 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/list.py @@ -0,0 +1,361 @@ +import json +import logging +from optparse import Values +from typing import TYPE_CHECKING, Iterator, List, Optional, Sequence, Tuple, cast + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.session import PipSession +from pip._internal.utils.compat import stdlib_pkgs +from pip._internal.utils.misc import tabulate, write_output +from pip._internal.utils.parallel import map_multithread + +if TYPE_CHECKING: + from pip._internal.metadata.base import DistributionVersion + + class _DistWithLatestInfo(BaseDistribution): + """Give the distribution object a couple of extra fields. + + These will be populated during ``get_outdated()``. This is dirty but + makes the rest of the code much cleaner. + """ + + latest_version: DistributionVersion + latest_filetype: str + + _ProcessedDists = Sequence[_DistWithLatestInfo] + + +logger = logging.getLogger(__name__) + + +class ListCommand(IndexGroupCommand): + """ + List installed packages, including editables. + + Packages are listed in a case-insensitive sorted order. + """ + + ignore_require_venv = True + usage = """ + %prog [options]""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-o", + "--outdated", + action="store_true", + default=False, + help="List outdated packages", + ) + self.cmd_opts.add_option( + "-u", + "--uptodate", + action="store_true", + default=False, + help="List uptodate packages", + ) + self.cmd_opts.add_option( + "-e", + "--editable", + action="store_true", + default=False, + help="List editable projects.", + ) + self.cmd_opts.add_option( + "-l", + "--local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not list " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + "--pre", + action="store_true", + default=False, + help=( + "Include pre-release and development versions. By default, " + "pip only finds stable versions." + ), + ) + + self.cmd_opts.add_option( + "--format", + action="store", + dest="list_format", + default="columns", + choices=("columns", "freeze", "json"), + help="Select the output format among: columns (default), freeze, or json", + ) + + self.cmd_opts.add_option( + "--not-required", + action="store_true", + dest="not_required", + help="List packages that are not dependencies of installed packages.", + ) + + self.cmd_opts.add_option( + "--exclude-editable", + action="store_false", + dest="include_editable", + help="Exclude editable package from output.", + ) + self.cmd_opts.add_option( + "--include-editable", + action="store_true", + dest="include_editable", + help="Include editable package from output.", + default=True, + ) + self.cmd_opts.add_option(cmdoptions.list_exclude()) + index_opts = cmdoptions.make_option_group(cmdoptions.index_group, self.parser) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + def _build_package_finder( + self, options: Values, session: PipSession + ) -> PackageFinder: + """ + Create a package finder appropriate to this list command. + """ + link_collector = LinkCollector.create(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + + def run(self, options: Values, args: List[str]) -> int: + if options.outdated and options.uptodate: + raise CommandError("Options --outdated and --uptodate cannot be combined.") + + cmdoptions.check_list_path_option(options) + + skip = set(stdlib_pkgs) + if options.excludes: + skip.update(canonicalize_name(n) for n in options.excludes) + + packages: "_ProcessedDists" = [ + cast("_DistWithLatestInfo", d) + for d in get_environment(options.path).iter_installed_distributions( + local_only=options.local, + user_only=options.user, + editables_only=options.editable, + include_editables=options.include_editable, + skip=skip, + ) + ] + + # get_not_required must be called firstly in order to find and + # filter out all dependencies correctly. Otherwise a package + # can't be identified as requirement because some parent packages + # could be filtered out before. + if options.not_required: + packages = self.get_not_required(packages, options) + + if options.outdated: + packages = self.get_outdated(packages, options) + elif options.uptodate: + packages = self.get_uptodate(packages, options) + + self.output_package_listing(packages, options) + return SUCCESS + + def get_outdated( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + return [ + dist + for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version > dist.version + ] + + def get_uptodate( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + return [ + dist + for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version == dist.version + ] + + def get_not_required( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + dep_keys = { + canonicalize_name(dep.name) + for dist in packages + for dep in (dist.iter_dependencies() or ()) + } + + # Create a set to remove duplicate packages, and cast it to a list + # to keep the return type consistent with get_outdated and + # get_uptodate + return list({pkg for pkg in packages if pkg.canonical_name not in dep_keys}) + + def iter_packages_latest_infos( + self, packages: "_ProcessedDists", options: Values + ) -> Iterator["_DistWithLatestInfo"]: + with self._build_session(options) as session: + finder = self._build_package_finder(options, session) + + def latest_info( + dist: "_DistWithLatestInfo", + ) -> Optional["_DistWithLatestInfo"]: + all_candidates = finder.find_all_candidates(dist.canonical_name) + if not options.pre: + # Remove prereleases + all_candidates = [ + candidate + for candidate in all_candidates + if not candidate.version.is_prerelease + ] + + evaluator = finder.make_candidate_evaluator( + project_name=dist.canonical_name, + ) + best_candidate = evaluator.sort_best_candidate(all_candidates) + if best_candidate is None: + return None + + remote_version = best_candidate.version + if best_candidate.link.is_wheel: + typ = "wheel" + else: + typ = "sdist" + dist.latest_version = remote_version + dist.latest_filetype = typ + return dist + + for dist in map_multithread(latest_info, packages): + if dist is not None: + yield dist + + def output_package_listing( + self, packages: "_ProcessedDists", options: Values + ) -> None: + packages = sorted( + packages, + key=lambda dist: dist.canonical_name, + ) + if options.list_format == "columns" and packages: + data, header = format_for_columns(packages, options) + self.output_package_listing_columns(data, header) + elif options.list_format == "freeze": + for dist in packages: + if options.verbose >= 1: + write_output( + "%s==%s (%s)", dist.raw_name, dist.version, dist.location + ) + else: + write_output("%s==%s", dist.raw_name, dist.version) + elif options.list_format == "json": + write_output(format_for_json(packages, options)) + + def output_package_listing_columns( + self, data: List[List[str]], header: List[str] + ) -> None: + # insert the header first: we need to know the size of column names + if len(data) > 0: + data.insert(0, header) + + pkg_strings, sizes = tabulate(data) + + # Create and add a separator. + if len(data) > 0: + pkg_strings.insert(1, " ".join(map(lambda x: "-" * x, sizes))) + + for val in pkg_strings: + write_output(val) + + +def format_for_columns( + pkgs: "_ProcessedDists", options: Values +) -> Tuple[List[List[str]], List[str]]: + """ + Convert the package data into something usable + by output_package_listing_columns. + """ + header = ["Package", "Version"] + + running_outdated = options.outdated + if running_outdated: + header.extend(["Latest", "Type"]) + + has_editables = any(x.editable for x in pkgs) + if has_editables: + header.append("Editable project location") + + if options.verbose >= 1: + header.append("Location") + if options.verbose >= 1: + header.append("Installer") + + data = [] + for proj in pkgs: + # if we're working on the 'outdated' list, separate out the + # latest_version and type + row = [proj.raw_name, str(proj.version)] + + if running_outdated: + row.append(str(proj.latest_version)) + row.append(proj.latest_filetype) + + if has_editables: + row.append(proj.editable_project_location or "") + + if options.verbose >= 1: + row.append(proj.location or "") + if options.verbose >= 1: + row.append(proj.installer) + + data.append(row) + + return data, header + + +def format_for_json(packages: "_ProcessedDists", options: Values) -> str: + data = [] + for dist in packages: + info = { + "name": dist.raw_name, + "version": str(dist.version), + } + if options.verbose >= 1: + info["location"] = dist.location or "" + info["installer"] = dist.installer + if options.outdated: + info["latest_version"] = str(dist.latest_version) + info["latest_filetype"] = dist.latest_filetype + editable_project_location = dist.editable_project_location + if editable_project_location: + info["editable_project_location"] = editable_project_location + data.append(info) + return json.dumps(data) diff --git a/venv/Lib/site-packages/pip/_internal/commands/search.py b/venv/Lib/site-packages/pip/_internal/commands/search.py new file mode 100644 index 00000000..03ed925b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/search.py @@ -0,0 +1,174 @@ +import logging +import shutil +import sys +import textwrap +import xmlrpc.client +from collections import OrderedDict +from optparse import Values +from typing import TYPE_CHECKING, Dict, List, Optional + +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin +from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.metadata import get_default_environment +from pip._internal.models.index import PyPI +from pip._internal.network.xmlrpc import PipXmlrpcTransport +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import write_output + +if TYPE_CHECKING: + from typing import TypedDict + + class TransformedHit(TypedDict): + name: str + summary: str + versions: List[str] + + +logger = logging.getLogger(__name__) + + +class SearchCommand(Command, SessionCommandMixin): + """Search for PyPI packages whose name or summary contains .""" + + usage = """ + %prog [options] """ + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-i", + "--index", + dest="index", + metavar="URL", + default=PyPI.pypi_url, + help="Base URL of Python Package Index (default %default)", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + raise CommandError("Missing required argument (search query).") + query = args + pypi_hits = self.search(query, options) + hits = transform_hits(pypi_hits) + + terminal_width = None + if sys.stdout.isatty(): + terminal_width = shutil.get_terminal_size()[0] + + print_results(hits, terminal_width=terminal_width) + if pypi_hits: + return SUCCESS + return NO_MATCHES_FOUND + + def search(self, query: List[str], options: Values) -> List[Dict[str, str]]: + index_url = options.index + + session = self.get_default_session(options) + + transport = PipXmlrpcTransport(index_url, session) + pypi = xmlrpc.client.ServerProxy(index_url, transport) + try: + hits = pypi.search({"name": query, "summary": query}, "or") + except xmlrpc.client.Fault as fault: + message = "XMLRPC request failed [code: {code}]\n{string}".format( + code=fault.faultCode, + string=fault.faultString, + ) + raise CommandError(message) + assert isinstance(hits, list) + return hits + + +def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]: + """ + The list from pypi is really a list of versions. We want a list of + packages with the list of versions stored inline. This converts the + list from pypi into one we can use. + """ + packages: Dict[str, "TransformedHit"] = OrderedDict() + for hit in hits: + name = hit["name"] + summary = hit["summary"] + version = hit["version"] + + if name not in packages.keys(): + packages[name] = { + "name": name, + "summary": summary, + "versions": [version], + } + else: + packages[name]["versions"].append(version) + + # if this is the highest version, replace summary and score + if version == highest_version(packages[name]["versions"]): + packages[name]["summary"] = summary + + return list(packages.values()) + + +def print_dist_installation_info(name: str, latest: str) -> None: + env = get_default_environment() + dist = env.get_distribution(name) + if dist is not None: + with indent_log(): + if dist.version == latest: + write_output("INSTALLED: %s (latest)", dist.version) + else: + write_output("INSTALLED: %s", dist.version) + if parse_version(latest).pre: + write_output( + "LATEST: %s (pre-release; install" + " with `pip install --pre`)", + latest, + ) + else: + write_output("LATEST: %s", latest) + + +def print_results( + hits: List["TransformedHit"], + name_column_width: Optional[int] = None, + terminal_width: Optional[int] = None, +) -> None: + if not hits: + return + if name_column_width is None: + name_column_width = ( + max( + [ + len(hit["name"]) + len(highest_version(hit.get("versions", ["-"]))) + for hit in hits + ] + ) + + 4 + ) + + for hit in hits: + name = hit["name"] + summary = hit["summary"] or "" + latest = highest_version(hit.get("versions", ["-"])) + if terminal_width is not None: + target_width = terminal_width - name_column_width - 5 + if target_width > 10: + # wrap and indent summary to fit terminal + summary_lines = textwrap.wrap(summary, target_width) + summary = ("\n" + " " * (name_column_width + 3)).join(summary_lines) + + name_latest = f"{name} ({latest})" + line = f"{name_latest:{name_column_width}} - {summary}" + try: + write_output(line) + print_dist_installation_info(name, latest) + except UnicodeEncodeError: + pass + + +def highest_version(versions: List[str]) -> str: + return max(versions, key=parse_version) diff --git a/venv/Lib/site-packages/pip/_internal/commands/show.py b/venv/Lib/site-packages/pip/_internal/commands/show.py new file mode 100644 index 00000000..872292a2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/show.py @@ -0,0 +1,235 @@ +import csv +import logging +import pathlib +from optparse import Values +from typing import Iterator, List, NamedTuple, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.metadata import BaseDistribution, get_default_environment +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class ShowCommand(Command): + """ + Show information about one or more installed packages. + + The output is in RFC-compliant mail header format. + """ + + usage = """ + %prog [options] ...""" + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-f", + "--files", + dest="files", + action="store_true", + default=False, + help="Show the full list of installed files for each package.", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + logger.warning("ERROR: Please provide a package name or names.") + return ERROR + query = args + + results = search_packages_info(query) + if not print_results( + results, list_files=options.files, verbose=options.verbose + ): + return ERROR + return SUCCESS + + +class _PackageInfo(NamedTuple): + name: str + version: str + location: str + requires: List[str] + required_by: List[str] + installer: str + metadata_version: str + classifiers: List[str] + summary: str + homepage: str + author: str + author_email: str + license: str + entry_points: List[str] + files: Optional[List[str]] + + +def _convert_legacy_entry(entry: Tuple[str, ...], info: Tuple[str, ...]) -> str: + """Convert a legacy installed-files.txt path into modern RECORD path. + + The legacy format stores paths relative to the info directory, while the + modern format stores paths relative to the package root, e.g. the + site-packages directory. + + :param entry: Path parts of the installed-files.txt entry. + :param info: Path parts of the egg-info directory relative to package root. + :returns: The converted entry. + + For best compatibility with symlinks, this does not use ``abspath()`` or + ``Path.resolve()``, but tries to work with path parts: + + 1. While ``entry`` starts with ``..``, remove the equal amounts of parts + from ``info``; if ``info`` is empty, start appending ``..`` instead. + 2. Join the two directly. + """ + while entry and entry[0] == "..": + if not info or info[-1] == "..": + info += ("..",) + else: + info = info[:-1] + entry = entry[1:] + return str(pathlib.Path(*info, *entry)) + + +def search_packages_info(query: List[str]) -> Iterator[_PackageInfo]: + """ + Gather details from installed distributions. Print distribution name, + version, location, and installed files. Installed files requires a + pip generated 'installed-files.txt' in the distributions '.egg-info' + directory. + """ + env = get_default_environment() + + installed = {dist.canonical_name: dist for dist in env.iter_distributions()} + query_names = [canonicalize_name(name) for name in query] + missing = sorted( + [name for name, pkg in zip(query, query_names) if pkg not in installed] + ) + if missing: + logger.warning("Package(s) not found: %s", ", ".join(missing)) + + def _get_requiring_packages(current_dist: BaseDistribution) -> Iterator[str]: + return ( + dist.metadata["Name"] or "UNKNOWN" + for dist in installed.values() + if current_dist.canonical_name + in {canonicalize_name(d.name) for d in dist.iter_dependencies()} + ) + + def _files_from_record(dist: BaseDistribution) -> Optional[Iterator[str]]: + try: + text = dist.read_text("RECORD") + except FileNotFoundError: + return None + # This extra Path-str cast normalizes entries. + return (str(pathlib.Path(row[0])) for row in csv.reader(text.splitlines())) + + def _files_from_legacy(dist: BaseDistribution) -> Optional[Iterator[str]]: + try: + text = dist.read_text("installed-files.txt") + except FileNotFoundError: + return None + paths = (p for p in text.splitlines(keepends=False) if p) + root = dist.location + info = dist.info_directory + if root is None or info is None: + return paths + try: + info_rel = pathlib.Path(info).relative_to(root) + except ValueError: # info is not relative to root. + return paths + if not info_rel.parts: # info *is* root. + return paths + return ( + _convert_legacy_entry(pathlib.Path(p).parts, info_rel.parts) for p in paths + ) + + for query_name in query_names: + try: + dist = installed[query_name] + except KeyError: + continue + + requires = sorted((req.name for req in dist.iter_dependencies()), key=str.lower) + required_by = sorted(_get_requiring_packages(dist), key=str.lower) + + try: + entry_points_text = dist.read_text("entry_points.txt") + entry_points = entry_points_text.splitlines(keepends=False) + except FileNotFoundError: + entry_points = [] + + files_iter = _files_from_record(dist) or _files_from_legacy(dist) + if files_iter is None: + files: Optional[List[str]] = None + else: + files = sorted(files_iter) + + metadata = dist.metadata + + yield _PackageInfo( + name=dist.raw_name, + version=str(dist.version), + location=dist.location or "", + requires=requires, + required_by=required_by, + installer=dist.installer, + metadata_version=dist.metadata_version or "", + classifiers=metadata.get_all("Classifier", []), + summary=metadata.get("Summary", ""), + homepage=metadata.get("Home-page", ""), + author=metadata.get("Author", ""), + author_email=metadata.get("Author-email", ""), + license=metadata.get("License", ""), + entry_points=entry_points, + files=files, + ) + + +def print_results( + distributions: Iterator[_PackageInfo], + list_files: bool, + verbose: bool, +) -> bool: + """ + Print the information from installed distributions found. + """ + results_printed = False + for i, dist in enumerate(distributions): + results_printed = True + if i > 0: + write_output("---") + + write_output("Name: %s", dist.name) + write_output("Version: %s", dist.version) + write_output("Summary: %s", dist.summary) + write_output("Home-page: %s", dist.homepage) + write_output("Author: %s", dist.author) + write_output("Author-email: %s", dist.author_email) + write_output("License: %s", dist.license) + write_output("Location: %s", dist.location) + write_output("Requires: %s", ", ".join(dist.requires)) + write_output("Required-by: %s", ", ".join(dist.required_by)) + + if verbose: + write_output("Metadata-Version: %s", dist.metadata_version) + write_output("Installer: %s", dist.installer) + write_output("Classifiers:") + for classifier in dist.classifiers: + write_output(" %s", classifier) + write_output("Entry-points:") + for entry in dist.entry_points: + write_output(" %s", entry.strip()) + if list_files: + write_output("Files:") + if dist.files is None: + write_output("Cannot locate RECORD or installed-files.txt") + else: + for line in dist.files: + write_output(" %s", line.strip()) + return results_printed diff --git a/venv/Lib/site-packages/pip/_internal/commands/uninstall.py b/venv/Lib/site-packages/pip/_internal/commands/uninstall.py new file mode 100644 index 00000000..bb9e8e6a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/uninstall.py @@ -0,0 +1,105 @@ +import logging +from optparse import Values +from typing import List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin, warn_if_run_as_root +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import InstallationError +from pip._internal.req import parse_requirements +from pip._internal.req.constructors import ( + install_req_from_line, + install_req_from_parsed_requirement, +) +from pip._internal.utils.misc import protect_pip_from_modification_on_windows + +logger = logging.getLogger(__name__) + + +class UninstallCommand(Command, SessionCommandMixin): + """ + Uninstall packages. + + pip is able to uninstall most installed packages. Known exceptions are: + + - Pure distutils packages installed with ``python setup.py install``, which + leave behind no metadata to determine what files were installed. + - Script wrappers installed by ``python setup.py develop``. + """ + + usage = """ + %prog [options] ... + %prog [options] -r ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help=( + "Uninstall all the packages listed in the given requirements " + "file. This option can be used multiple times." + ), + ) + self.cmd_opts.add_option( + "-y", + "--yes", + dest="yes", + action="store_true", + help="Don't ask for confirmation of uninstall deletions.", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + session = self.get_default_session(options) + + reqs_to_uninstall = {} + for name in args: + req = install_req_from_line( + name, + isolated=options.isolated_mode, + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + else: + logger.warning( + "Invalid requirement: %r ignored -" + " the uninstall command expects named" + " requirements.", + name, + ) + for filename in options.requirements: + for parsed_req in parse_requirements( + filename, options=options, session=session + ): + req = install_req_from_parsed_requirement( + parsed_req, isolated=options.isolated_mode + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + if not reqs_to_uninstall: + raise InstallationError( + f"You must give at least one requirement to {self.name} (see " + f'"pip help {self.name}")' + ) + + protect_pip_from_modification_on_windows( + modifying_pip="pip" in reqs_to_uninstall + ) + + for req in reqs_to_uninstall.values(): + uninstall_pathset = req.uninstall( + auto_confirm=options.yes, + verbose=self.verbosity > 0, + ) + if uninstall_pathset: + uninstall_pathset.commit() + + warn_if_run_as_root() + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/wheel.py b/venv/Lib/site-packages/pip/_internal/commands/wheel.py new file mode 100644 index 00000000..cea81ee5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/wheel.py @@ -0,0 +1,177 @@ +import logging +import os +import shutil +from optparse import Values +from typing import List + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import RequirementCommand, with_cleanup +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.misc import ensure_dir, normalize_path +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.wheel_builder import build, should_build_for_wheel_command + +logger = logging.getLogger(__name__) + + +class WheelCommand(RequirementCommand): + """ + Build Wheel archives for your requirements and dependencies. + + Wheel is a built-package format, and offers the advantage of not + recompiling your software during every install. For more details, see the + wheel docs: https://wheel.readthedocs.io/en/latest/ + + Requirements: setuptools>=0.8, and wheel. + + 'pip wheel' uses the bdist_wheel setuptools extension from the wheel + package to build individual wheels. + + """ + + usage = """ + %prog [options] ... + %prog [options] -r ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def add_options(self) -> None: + + self.cmd_opts.add_option( + "-w", + "--wheel-dir", + dest="wheel_dir", + metavar="dir", + default=os.curdir, + help=( + "Build wheels into , where the default is the " + "current working directory." + ), + ) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.editable()) + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.src()) + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + + self.cmd_opts.add_option( + "--no-verify", + dest="no_verify", + action="store_true", + default=False, + help="Don't verify if built wheel is valid.", + ) + + self.cmd_opts.add_option(cmdoptions.build_options()) + self.cmd_opts.add_option(cmdoptions.global_options()) + + self.cmd_opts.add_option( + "--pre", + action="store_true", + default=False, + help=( + "Include pre-release and development versions. By default, " + "pip only finds stable versions." + ), + ) + + self.cmd_opts.add_option(cmdoptions.require_hashes()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + cmdoptions.check_install_build_global(options) + + session = self.get_default_session(options) + + finder = self._build_package_finder(options, session) + wheel_cache = WheelCache(options.cache_dir, options.format_control) + + options.wheel_dir = normalize_path(options.wheel_dir) + ensure_dir(options.wheel_dir) + + req_tracker = self.enter_context(get_requirement_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="wheel", + globally_managed=True, + ) + + reqs = self.get_requirements(args, options, finder, session) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + download_dir=options.wheel_dir, + use_user_site=False, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + ignore_requires_python=options.ignore_requires_python, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve(reqs, check_supported_wheels=True) + + reqs_to_build: List[InstallRequirement] = [] + for req in requirement_set.requirements.values(): + if req.is_wheel: + preparer.save_linked_requirement(req) + elif should_build_for_wheel_command(req): + reqs_to_build.append(req) + + # build wheels + build_successes, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + verify=(not options.no_verify), + build_options=options.build_options or [], + global_options=options.global_options or [], + ) + for req in build_successes: + assert req.link and req.link.is_wheel + assert req.local_file_path + # copy from cache to target directory + try: + shutil.copy(req.local_file_path, options.wheel_dir) + except OSError as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, + e, + ) + build_failures.append(req) + if len(build_failures) != 0: + raise CommandError("Failed to build one or more wheels") + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/configuration.py b/venv/Lib/site-packages/pip/_internal/configuration.py new file mode 100644 index 00000000..4c3a362f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/configuration.py @@ -0,0 +1,367 @@ +"""Configuration management setup + +Some terminology: +- name + As written in config files. +- value + Value associated with a name +- key + Name combined with it's section (section.name) +- variant + A single word describing where the configuration key-value pair came from +""" + +import configparser +import locale +import os +import sys +from typing import Any, Dict, Iterable, List, NewType, Optional, Tuple + +from pip._internal.exceptions import ( + ConfigurationError, + ConfigurationFileCouldNotBeLoaded, +) +from pip._internal.utils import appdirs +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ensure_dir, enum + +RawConfigParser = configparser.RawConfigParser # Shorthand +Kind = NewType("Kind", str) + +CONFIG_BASENAME = "pip.ini" if WINDOWS else "pip.conf" +ENV_NAMES_IGNORED = "version", "help" + +# The kinds of configurations there are. +kinds = enum( + USER="user", # User Specific + GLOBAL="global", # System Wide + SITE="site", # [Virtual] Environment Specific + ENV="env", # from PIP_CONFIG_FILE + ENV_VAR="env-var", # from Environment Variables +) +OVERRIDE_ORDER = kinds.GLOBAL, kinds.USER, kinds.SITE, kinds.ENV, kinds.ENV_VAR +VALID_LOAD_ONLY = kinds.USER, kinds.GLOBAL, kinds.SITE + +logger = getLogger(__name__) + + +# NOTE: Maybe use the optionx attribute to normalize keynames. +def _normalize_name(name: str) -> str: + """Make a name consistent regardless of source (environment or file)""" + name = name.lower().replace("_", "-") + if name.startswith("--"): + name = name[2:] # only prefer long opts + return name + + +def _disassemble_key(name: str) -> List[str]: + if "." not in name: + error_message = ( + "Key does not contain dot separated section and key. " + "Perhaps you wanted to use 'global.{}' instead?" + ).format(name) + raise ConfigurationError(error_message) + return name.split(".", 1) + + +def get_configuration_files() -> Dict[Kind, List[str]]: + global_config_files = [ + os.path.join(path, CONFIG_BASENAME) for path in appdirs.site_config_dirs("pip") + ] + + site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME) + legacy_config_file = os.path.join( + os.path.expanduser("~"), + "pip" if WINDOWS else ".pip", + CONFIG_BASENAME, + ) + new_config_file = os.path.join(appdirs.user_config_dir("pip"), CONFIG_BASENAME) + return { + kinds.GLOBAL: global_config_files, + kinds.SITE: [site_config_file], + kinds.USER: [legacy_config_file, new_config_file], + } + + +class Configuration: + """Handles management of configuration. + + Provides an interface to accessing and managing configuration files. + + This class converts provides an API that takes "section.key-name" style + keys and stores the value associated with it as "key-name" under the + section "section". + + This allows for a clean interface wherein the both the section and the + key-name are preserved in an easy to manage form in the configuration files + and the data stored is also nice. + """ + + def __init__(self, isolated: bool, load_only: Optional[Kind] = None) -> None: + super().__init__() + + if load_only is not None and load_only not in VALID_LOAD_ONLY: + raise ConfigurationError( + "Got invalid value for load_only - should be one of {}".format( + ", ".join(map(repr, VALID_LOAD_ONLY)) + ) + ) + self.isolated = isolated + self.load_only = load_only + + # Because we keep track of where we got the data from + self._parsers: Dict[Kind, List[Tuple[str, RawConfigParser]]] = { + variant: [] for variant in OVERRIDE_ORDER + } + self._config: Dict[Kind, Dict[str, Any]] = { + variant: {} for variant in OVERRIDE_ORDER + } + self._modified_parsers: List[Tuple[str, RawConfigParser]] = [] + + def load(self) -> None: + """Loads configuration from configuration files and environment""" + self._load_config_files() + if not self.isolated: + self._load_environment_vars() + + def get_file_to_edit(self) -> Optional[str]: + """Returns the file with highest priority in configuration""" + assert self.load_only is not None, "Need to be specified a file to be editing" + + try: + return self._get_parser_to_modify()[0] + except IndexError: + return None + + def items(self) -> Iterable[Tuple[str, Any]]: + """Returns key-value pairs like dict.items() representing the loaded + configuration + """ + return self._dictionary.items() + + def get_value(self, key: str) -> Any: + """Get a value from the configuration.""" + try: + return self._dictionary[key] + except KeyError: + raise ConfigurationError(f"No such key - {key}") + + def set_value(self, key: str, value: Any) -> None: + """Modify a value in the configuration.""" + self._ensure_have_load_only() + + assert self.load_only + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + + # Modify the parser and the configuration + if not parser.has_section(section): + parser.add_section(section) + parser.set(section, name, value) + + self._config[self.load_only][key] = value + self._mark_as_modified(fname, parser) + + def unset_value(self, key: str) -> None: + """Unset a value in the configuration.""" + self._ensure_have_load_only() + + assert self.load_only + if key not in self._config[self.load_only]: + raise ConfigurationError(f"No such key - {key}") + + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + if not ( + parser.has_section(section) and parser.remove_option(section, name) + ): + # The option was not removed. + raise ConfigurationError( + "Fatal Internal error [id=1]. Please report as a bug." + ) + + # The section may be empty after the option was removed. + if not parser.items(section): + parser.remove_section(section) + self._mark_as_modified(fname, parser) + + del self._config[self.load_only][key] + + def save(self) -> None: + """Save the current in-memory state.""" + self._ensure_have_load_only() + + for fname, parser in self._modified_parsers: + logger.info("Writing to %s", fname) + + # Ensure directory exists. + ensure_dir(os.path.dirname(fname)) + + with open(fname, "w") as f: + parser.write(f) + + # + # Private routines + # + + def _ensure_have_load_only(self) -> None: + if self.load_only is None: + raise ConfigurationError("Needed a specific file to be modifying.") + logger.debug("Will be working with %s variant only", self.load_only) + + @property + def _dictionary(self) -> Dict[str, Any]: + """A dictionary representing the loaded configuration.""" + # NOTE: Dictionaries are not populated if not loaded. So, conditionals + # are not needed here. + retval = {} + + for variant in OVERRIDE_ORDER: + retval.update(self._config[variant]) + + return retval + + def _load_config_files(self) -> None: + """Loads configuration from configuration files""" + config_files = dict(self.iter_config_files()) + if config_files[kinds.ENV][0:1] == [os.devnull]: + logger.debug( + "Skipping loading configuration files due to " + "environment's PIP_CONFIG_FILE being os.devnull" + ) + return + + for variant, files in config_files.items(): + for fname in files: + # If there's specific variant set in `load_only`, load only + # that variant, not the others. + if self.load_only is not None and variant != self.load_only: + logger.debug("Skipping file '%s' (variant: %s)", fname, variant) + continue + + parser = self._load_file(variant, fname) + + # Keeping track of the parsers used + self._parsers[variant].append((fname, parser)) + + def _load_file(self, variant: Kind, fname: str) -> RawConfigParser: + logger.verbose("For variant '%s', will try loading '%s'", variant, fname) + parser = self._construct_parser(fname) + + for section in parser.sections(): + items = parser.items(section) + self._config[variant].update(self._normalized_keys(section, items)) + + return parser + + def _construct_parser(self, fname: str) -> RawConfigParser: + parser = configparser.RawConfigParser() + # If there is no such file, don't bother reading it but create the + # parser anyway, to hold the data. + # Doing this is useful when modifying and saving files, where we don't + # need to construct a parser. + if os.path.exists(fname): + try: + parser.read(fname) + except UnicodeDecodeError: + # See https://github.com/pypa/pip/issues/4963 + raise ConfigurationFileCouldNotBeLoaded( + reason="contains invalid {} characters".format( + locale.getpreferredencoding(False) + ), + fname=fname, + ) + except configparser.Error as error: + # See https://github.com/pypa/pip/issues/4893 + raise ConfigurationFileCouldNotBeLoaded(error=error) + return parser + + def _load_environment_vars(self) -> None: + """Loads configuration from environment variables""" + self._config[kinds.ENV_VAR].update( + self._normalized_keys(":env:", self.get_environ_vars()) + ) + + def _normalized_keys( + self, section: str, items: Iterable[Tuple[str, Any]] + ) -> Dict[str, Any]: + """Normalizes items to construct a dictionary with normalized keys. + + This routine is where the names become keys and are made the same + regardless of source - configuration files or environment. + """ + normalized = {} + for name, val in items: + key = section + "." + _normalize_name(name) + normalized[key] = val + return normalized + + def get_environ_vars(self) -> Iterable[Tuple[str, str]]: + """Returns a generator with all environmental vars with prefix PIP_""" + for key, val in os.environ.items(): + if key.startswith("PIP_"): + name = key[4:].lower() + if name not in ENV_NAMES_IGNORED: + yield name, val + + # XXX: This is patched in the tests. + def iter_config_files(self) -> Iterable[Tuple[Kind, List[str]]]: + """Yields variant and configuration files associated with it. + + This should be treated like items of a dictionary. + """ + # SMELL: Move the conditions out of this function + + # environment variables have the lowest priority + config_file = os.environ.get("PIP_CONFIG_FILE", None) + if config_file is not None: + yield kinds.ENV, [config_file] + else: + yield kinds.ENV, [] + + config_files = get_configuration_files() + + # at the base we have any global configuration + yield kinds.GLOBAL, config_files[kinds.GLOBAL] + + # per-user configuration next + should_load_user_config = not self.isolated and not ( + config_file and os.path.exists(config_file) + ) + if should_load_user_config: + # The legacy config file is overridden by the new config file + yield kinds.USER, config_files[kinds.USER] + + # finally virtualenv configuration first trumping others + yield kinds.SITE, config_files[kinds.SITE] + + def get_values_in_config(self, variant: Kind) -> Dict[str, Any]: + """Get values present in a config file""" + return self._config[variant] + + def _get_parser_to_modify(self) -> Tuple[str, RawConfigParser]: + # Determine which parser to modify + assert self.load_only + parsers = self._parsers[self.load_only] + if not parsers: + # This should not happen if everything works correctly. + raise ConfigurationError( + "Fatal Internal error [id=2]. Please report as a bug." + ) + + # Use the highest priority parser. + return parsers[-1] + + # XXX: This is patched in the tests. + def _mark_as_modified(self, fname: str, parser: RawConfigParser) -> None: + file_parser_tuple = (fname, parser) + if file_parser_tuple not in self._modified_parsers: + self._modified_parsers.append(file_parser_tuple) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self._dictionary!r})" diff --git a/venv/Lib/site-packages/pip/_internal/distributions/__init__.py b/venv/Lib/site-packages/pip/_internal/distributions/__init__.py new file mode 100644 index 00000000..9a89a838 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/__init__.py @@ -0,0 +1,21 @@ +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.distributions.sdist import SourceDistribution +from pip._internal.distributions.wheel import WheelDistribution +from pip._internal.req.req_install import InstallRequirement + + +def make_distribution_for_install_requirement( + install_req: InstallRequirement, +) -> AbstractDistribution: + """Returns a Distribution for the given InstallRequirement""" + # Editable requirements will always be source distributions. They use the + # legacy logic until we create a modern standard for them. + if install_req.editable: + return SourceDistribution(install_req) + + # If it's a wheel, it's a WheelDistribution + if install_req.is_wheel: + return WheelDistribution(install_req) + + # Otherwise, a SourceDistribution + return SourceDistribution(install_req) diff --git a/venv/Lib/site-packages/pip/_internal/distributions/base.py b/venv/Lib/site-packages/pip/_internal/distributions/base.py new file mode 100644 index 00000000..149fff55 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/base.py @@ -0,0 +1,36 @@ +import abc + +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata.base import BaseDistribution +from pip._internal.req import InstallRequirement + + +class AbstractDistribution(metaclass=abc.ABCMeta): + """A base class for handling installable artifacts. + + The requirements for anything installable are as follows: + + - we must be able to determine the requirement name + (or we can't correctly handle the non-upgrade case). + + - for packages with setup requirements, we must also be able + to determine their requirements without installing additional + packages (for the same reason as run-time dependencies) + + - we must be able to create a Distribution object exposing the + above metadata. + """ + + def __init__(self, req: InstallRequirement) -> None: + super().__init__() + self.req = req + + @abc.abstractmethod + def get_metadata_distribution(self) -> BaseDistribution: + raise NotImplementedError() + + @abc.abstractmethod + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_internal/distributions/installed.py b/venv/Lib/site-packages/pip/_internal/distributions/installed.py new file mode 100644 index 00000000..6c8c1792 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/installed.py @@ -0,0 +1,22 @@ +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution + + +class InstalledDistribution(AbstractDistribution): + """Represents an installed package. + + This does not need any preparation as the required information has already + been computed. + """ + + def get_metadata_distribution(self) -> BaseDistribution: + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + assert self.req.satisfied_by is not None, "not actually installed" + return _Dist(self.req.satisfied_by) + + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + pass diff --git a/venv/Lib/site-packages/pip/_internal/distributions/sdist.py b/venv/Lib/site-packages/pip/_internal/distributions/sdist.py new file mode 100644 index 00000000..cd85ac5c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/sdist.py @@ -0,0 +1,129 @@ +import logging +from typing import Iterable, Set, Tuple + +from pip._internal.build_env import BuildEnvironment +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.exceptions import InstallationError +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.utils.subprocess import runner_with_spinner_message + +logger = logging.getLogger(__name__) + + +class SourceDistribution(AbstractDistribution): + """Represents a source distribution. + + The preparation step for these needs metadata for the packages to be + generated, either using PEP 517 or using the legacy `setup.py egg_info`. + """ + + def get_metadata_distribution(self) -> BaseDistribution: + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + return _Dist(self.req.get_dist()) + + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + # Load pyproject.toml, to determine whether PEP 517 is to be used + self.req.load_pyproject_toml() + + # Set up the build isolation, if this requirement should be isolated + should_isolate = self.req.use_pep517 and build_isolation + if should_isolate: + # Setup an isolated environment and install the build backend static + # requirements in it. + self._prepare_build_backend(finder) + # Check that if the requirement is editable, it either supports PEP 660 or + # has a setup.py or a setup.cfg. This cannot be done earlier because we need + # to setup the build backend to verify it supports build_editable, nor can + # it be done later, because we want to avoid installing build requirements + # needlessly. Doing it here also works around setuptools generating + # UNKNOWN.egg-info when running get_requires_for_build_wheel on a directory + # without setup.py nor setup.cfg. + self.req.isolated_editable_sanity_check() + # Install the dynamic build requirements. + self._install_build_reqs(finder) + + self.req.prepare_metadata() + + def _prepare_build_backend(self, finder: PackageFinder) -> None: + # Isolate in a BuildEnvironment and install the build-time + # requirements. + pyproject_requires = self.req.pyproject_requires + assert pyproject_requires is not None + + self.req.build_env = BuildEnvironment() + self.req.build_env.install_requirements( + finder, pyproject_requires, "overlay", "Installing build dependencies" + ) + conflicting, missing = self.req.build_env.check_requirements( + self.req.requirements_to_check + ) + if conflicting: + self._raise_conflicts("PEP 517/518 supported requirements", conflicting) + if missing: + logger.warning( + "Missing build requirements in pyproject.toml for %s.", + self.req, + ) + logger.warning( + "The project does not specify a build backend, and " + "pip cannot fall back to setuptools without %s.", + " and ".join(map(repr, sorted(missing))), + ) + + def _get_build_requires_wheel(self) -> Iterable[str]: + with self.req.build_env: + runner = runner_with_spinner_message("Getting requirements to build wheel") + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + return backend.get_requires_for_build_wheel() + + def _get_build_requires_editable(self) -> Iterable[str]: + with self.req.build_env: + runner = runner_with_spinner_message( + "Getting requirements to build editable" + ) + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + return backend.get_requires_for_build_editable() + + def _install_build_reqs(self, finder: PackageFinder) -> None: + # Install any extra build dependencies that the backend requests. + # This must be done in a second pass, as the pyproject.toml + # dependencies must be installed before we can call the backend. + if ( + self.req.editable + and self.req.permit_editable_wheels + and self.req.supports_pyproject_editable() + ): + build_reqs = self._get_build_requires_editable() + else: + build_reqs = self._get_build_requires_wheel() + conflicting, missing = self.req.build_env.check_requirements(build_reqs) + if conflicting: + self._raise_conflicts("the backend dependencies", conflicting) + self.req.build_env.install_requirements( + finder, missing, "normal", "Installing backend dependencies" + ) + + def _raise_conflicts( + self, conflicting_with: str, conflicting_reqs: Set[Tuple[str, str]] + ) -> None: + format_string = ( + "Some build dependencies for {requirement} " + "conflict with {conflicting_with}: {description}." + ) + error_message = format_string.format( + requirement=self.req, + conflicting_with=conflicting_with, + description=", ".join( + f"{installed} is incompatible with {wanted}" + for installed, wanted in sorted(conflicting_reqs) + ), + ) + raise InstallationError(error_message) diff --git a/venv/Lib/site-packages/pip/_internal/distributions/wheel.py b/venv/Lib/site-packages/pip/_internal/distributions/wheel.py new file mode 100644 index 00000000..340b0f3c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/wheel.py @@ -0,0 +1,31 @@ +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import ( + BaseDistribution, + FilesystemWheel, + get_wheel_distribution, +) + + +class WheelDistribution(AbstractDistribution): + """Represents a wheel distribution. + + This does not need any preparation as wheels can be directly unpacked. + """ + + def get_metadata_distribution(self) -> BaseDistribution: + """Loads the metadata from the wheel file into memory and returns a + Distribution that uses it, not relying on the wheel file or + requirement. + """ + assert self.req.local_file_path, "Set as part of preparation during download" + assert self.req.name, "Wheels are never unnamed" + wheel = FilesystemWheel(self.req.local_file_path) + return get_wheel_distribution(wheel, canonicalize_name(self.req.name)) + + def prepare_distribution_metadata( + self, finder: PackageFinder, build_isolation: bool + ) -> None: + pass diff --git a/venv/Lib/site-packages/pip/_internal/exceptions.py b/venv/Lib/site-packages/pip/_internal/exceptions.py new file mode 100644 index 00000000..ef5bc751 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/exceptions.py @@ -0,0 +1,402 @@ +"""Exceptions used throughout package""" + +import configparser +from itertools import chain, groupby, repeat +from typing import TYPE_CHECKING, Dict, List, Optional, Union + +from pip._vendor.pkg_resources import Distribution +from pip._vendor.requests.models import Request, Response + +if TYPE_CHECKING: + from hashlib import _Hash + + from pip._internal.metadata import BaseDistribution + from pip._internal.req.req_install import InstallRequirement + + +class PipError(Exception): + """Base pip exception""" + + +class ConfigurationError(PipError): + """General exception in configuration""" + + +class InstallationError(PipError): + """General exception during installation""" + + +class UninstallationError(PipError): + """General exception during uninstallation""" + + +class NoneMetadataError(PipError): + """ + Raised when accessing "METADATA" or "PKG-INFO" metadata for a + pip._vendor.pkg_resources.Distribution object and + `dist.has_metadata('METADATA')` returns True but + `dist.get_metadata('METADATA')` returns None (and similarly for + "PKG-INFO"). + """ + + def __init__( + self, + dist: Union[Distribution, "BaseDistribution"], + metadata_name: str, + ) -> None: + """ + :param dist: A Distribution object. + :param metadata_name: The name of the metadata being accessed + (can be "METADATA" or "PKG-INFO"). + """ + self.dist = dist + self.metadata_name = metadata_name + + def __str__(self) -> str: + # Use `dist` in the error message because its stringification + # includes more information, like the version and location. + return "None {} metadata found for distribution: {}".format( + self.metadata_name, + self.dist, + ) + + +class UserInstallationInvalid(InstallationError): + """A --user install is requested on an environment without user site.""" + + def __str__(self) -> str: + return "User base directory is not specified" + + +class InvalidSchemeCombination(InstallationError): + def __str__(self) -> str: + before = ", ".join(str(a) for a in self.args[:-1]) + return f"Cannot set {before} and {self.args[-1]} together" + + +class DistributionNotFound(InstallationError): + """Raised when a distribution cannot be found to satisfy a requirement""" + + +class RequirementsFileParseError(InstallationError): + """Raised when a general error occurs parsing a requirements file line.""" + + +class BestVersionAlreadyInstalled(PipError): + """Raised when the most up-to-date version of a package is already + installed.""" + + +class BadCommand(PipError): + """Raised when virtualenv or a command is not found""" + + +class CommandError(PipError): + """Raised when there is an error in command-line arguments""" + + +class PreviousBuildDirError(PipError): + """Raised when there's a previous conflicting build directory""" + + +class NetworkConnectionError(PipError): + """HTTP connection error""" + + def __init__( + self, error_msg: str, response: Response = None, request: Request = None + ) -> None: + """ + Initialize NetworkConnectionError with `request` and `response` + objects. + """ + self.response = response + self.request = request + self.error_msg = error_msg + if ( + self.response is not None + and not self.request + and hasattr(response, "request") + ): + self.request = self.response.request + super().__init__(error_msg, response, request) + + def __str__(self) -> str: + return str(self.error_msg) + + +class InvalidWheelFilename(InstallationError): + """Invalid wheel filename.""" + + +class UnsupportedWheel(InstallationError): + """Unsupported wheel.""" + + +class MetadataInconsistent(InstallationError): + """Built metadata contains inconsistent information. + + This is raised when the metadata contains values (e.g. name and version) + that do not match the information previously obtained from sdist filename + or user-supplied ``#egg=`` value. + """ + + def __init__( + self, ireq: "InstallRequirement", field: str, f_val: str, m_val: str + ) -> None: + self.ireq = ireq + self.field = field + self.f_val = f_val + self.m_val = m_val + + def __str__(self) -> str: + template = ( + "Requested {} has inconsistent {}: " + "filename has {!r}, but metadata has {!r}" + ) + return template.format(self.ireq, self.field, self.f_val, self.m_val) + + +class InstallationSubprocessError(InstallationError): + """A subprocess call failed during installation.""" + + def __init__(self, returncode: int, description: str) -> None: + self.returncode = returncode + self.description = description + + def __str__(self) -> str: + return ( + "Command errored out with exit status {}: {} " + "Check the logs for full command output." + ).format(self.returncode, self.description) + + +class HashErrors(InstallationError): + """Multiple HashError instances rolled into one for reporting""" + + def __init__(self) -> None: + self.errors: List["HashError"] = [] + + def append(self, error: "HashError") -> None: + self.errors.append(error) + + def __str__(self) -> str: + lines = [] + self.errors.sort(key=lambda e: e.order) + for cls, errors_of_cls in groupby(self.errors, lambda e: e.__class__): + lines.append(cls.head) + lines.extend(e.body() for e in errors_of_cls) + if lines: + return "\n".join(lines) + return "" + + def __bool__(self) -> bool: + return bool(self.errors) + + +class HashError(InstallationError): + """ + A failure to verify a package against known-good hashes + + :cvar order: An int sorting hash exception classes by difficulty of + recovery (lower being harder), so the user doesn't bother fretting + about unpinned packages when he has deeper issues, like VCS + dependencies, to deal with. Also keeps error reports in a + deterministic order. + :cvar head: A section heading for display above potentially many + exceptions of this kind + :ivar req: The InstallRequirement that triggered this error. This is + pasted on after the exception is instantiated, because it's not + typically available earlier. + + """ + + req: Optional["InstallRequirement"] = None + head = "" + order: int = -1 + + def body(self) -> str: + """Return a summary of me for display under the heading. + + This default implementation simply prints a description of the + triggering requirement. + + :param req: The InstallRequirement that provoked this error, with + its link already populated by the resolver's _populate_link(). + + """ + return f" {self._requirement_name()}" + + def __str__(self) -> str: + return f"{self.head}\n{self.body()}" + + def _requirement_name(self) -> str: + """Return a description of the requirement that triggered me. + + This default implementation returns long description of the req, with + line numbers + + """ + return str(self.req) if self.req else "unknown package" + + +class VcsHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 0 + head = ( + "Can't verify hashes for these requirements because we don't " + "have a way to hash version control repositories:" + ) + + +class DirectoryUrlHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 1 + head = ( + "Can't verify hashes for these file:// requirements because they " + "point to directories:" + ) + + +class HashMissing(HashError): + """A hash was needed for a requirement but is absent.""" + + order = 2 + head = ( + "Hashes are required in --require-hashes mode, but they are " + "missing from some requirements. Here is a list of those " + "requirements along with the hashes their downloaded archives " + "actually had. Add lines like these to your requirements files to " + "prevent tampering. (If you did not enable --require-hashes " + "manually, note that it turns on automatically when any package " + "has a hash.)" + ) + + def __init__(self, gotten_hash: str) -> None: + """ + :param gotten_hash: The hash of the (possibly malicious) archive we + just downloaded + """ + self.gotten_hash = gotten_hash + + def body(self) -> str: + # Dodge circular import. + from pip._internal.utils.hashes import FAVORITE_HASH + + package = None + if self.req: + # In the case of URL-based requirements, display the original URL + # seen in the requirements file rather than the package name, + # so the output can be directly copied into the requirements file. + package = ( + self.req.original_link + if self.req.original_link + # In case someone feeds something downright stupid + # to InstallRequirement's constructor. + else getattr(self.req, "req", None) + ) + return " {} --hash={}:{}".format( + package or "unknown package", FAVORITE_HASH, self.gotten_hash + ) + + +class HashUnpinned(HashError): + """A requirement had a hash specified but was not pinned to a specific + version.""" + + order = 3 + head = ( + "In --require-hashes mode, all requirements must have their " + "versions pinned with ==. These do not:" + ) + + +class HashMismatch(HashError): + """ + Distribution file hash values don't match. + + :ivar package_name: The name of the package that triggered the hash + mismatch. Feel free to write to this after the exception is raise to + improve its error message. + + """ + + order = 4 + head = ( + "THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS " + "FILE. If you have updated the package versions, please update " + "the hashes. Otherwise, examine the package contents carefully; " + "someone may have tampered with them." + ) + + def __init__(self, allowed: Dict[str, List[str]], gots: Dict[str, "_Hash"]) -> None: + """ + :param allowed: A dict of algorithm names pointing to lists of allowed + hex digests + :param gots: A dict of algorithm names pointing to hashes we + actually got from the files under suspicion + """ + self.allowed = allowed + self.gots = gots + + def body(self) -> str: + return " {}:\n{}".format(self._requirement_name(), self._hash_comparison()) + + def _hash_comparison(self) -> str: + """ + Return a comparison of actual and expected hash values. + + Example:: + + Expected sha256 abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde + or 123451234512345123451234512345123451234512345 + Got bcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdef + + """ + + def hash_then_or(hash_name: str) -> "chain[str]": + # For now, all the decent hashes have 6-char names, so we can get + # away with hard-coding space literals. + return chain([hash_name], repeat(" or")) + + lines: List[str] = [] + for hash_name, expecteds in self.allowed.items(): + prefix = hash_then_or(hash_name) + lines.extend( + (" Expected {} {}".format(next(prefix), e)) for e in expecteds + ) + lines.append( + " Got {}\n".format(self.gots[hash_name].hexdigest()) + ) + return "\n".join(lines) + + +class UnsupportedPythonVersion(InstallationError): + """Unsupported python version according to Requires-Python package + metadata.""" + + +class ConfigurationFileCouldNotBeLoaded(ConfigurationError): + """When there are errors while loading a configuration file""" + + def __init__( + self, + reason: str = "could not be loaded", + fname: Optional[str] = None, + error: Optional[configparser.Error] = None, + ) -> None: + super().__init__(error) + self.reason = reason + self.fname = fname + self.error = error + + def __str__(self) -> str: + if self.fname is not None: + message_part = f" in {self.fname}." + else: + assert self.error is not None + message_part = f".\n{self.error}\n" + return f"Configuration file {self.reason}{message_part}" diff --git a/venv/Lib/site-packages/pip/_internal/index/__init__.py b/venv/Lib/site-packages/pip/_internal/index/__init__.py new file mode 100644 index 00000000..7a17b7b3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/__init__.py @@ -0,0 +1,2 @@ +"""Index interaction code +""" diff --git a/venv/Lib/site-packages/pip/_internal/index/collector.py b/venv/Lib/site-packages/pip/_internal/index/collector.py new file mode 100644 index 00000000..d9412234 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/collector.py @@ -0,0 +1,536 @@ +""" +The main purpose of this module is to expose LinkCollector.collect_sources(). +""" + +import cgi +import collections +import functools +import itertools +import logging +import os +import re +import urllib.parse +import urllib.request +import xml.etree.ElementTree +from optparse import Values +from typing import ( + Callable, + Iterable, + List, + MutableMapping, + NamedTuple, + Optional, + Sequence, + Union, +) + +from pip._vendor import html5lib, requests +from pip._vendor.requests import Response +from pip._vendor.requests.exceptions import RetryError, SSLError + +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.models.link import Link +from pip._internal.models.search_scope import SearchScope +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status +from pip._internal.utils.filetypes import is_archive_file +from pip._internal.utils.misc import pairwise, redact_auth_from_url +from pip._internal.vcs import vcs + +from .sources import CandidatesFromPage, LinkSource, build_source + +logger = logging.getLogger(__name__) + +HTMLElement = xml.etree.ElementTree.Element +ResponseHeaders = MutableMapping[str, str] + + +def _match_vcs_scheme(url: str) -> Optional[str]: + """Look for VCS schemes in the URL. + + Returns the matched VCS scheme, or None if there's no match. + """ + for scheme in vcs.schemes: + if url.lower().startswith(scheme) and url[len(scheme)] in "+:": + return scheme + return None + + +class _NotHTML(Exception): + def __init__(self, content_type: str, request_desc: str) -> None: + super().__init__(content_type, request_desc) + self.content_type = content_type + self.request_desc = request_desc + + +def _ensure_html_header(response: Response) -> None: + """Check the Content-Type header to ensure the response contains HTML. + + Raises `_NotHTML` if the content type is not text/html. + """ + content_type = response.headers.get("Content-Type", "") + if not content_type.lower().startswith("text/html"): + raise _NotHTML(content_type, response.request.method) + + +class _NotHTTP(Exception): + pass + + +def _ensure_html_response(url: str, session: PipSession) -> None: + """Send a HEAD request to the URL, and ensure the response contains HTML. + + Raises `_NotHTTP` if the URL is not available for a HEAD request, or + `_NotHTML` if the content type is not text/html. + """ + scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url) + if scheme not in {"http", "https"}: + raise _NotHTTP() + + resp = session.head(url, allow_redirects=True) + raise_for_status(resp) + + _ensure_html_header(resp) + + +def _get_html_response(url: str, session: PipSession) -> Response: + """Access an HTML page with GET, and return the response. + + This consists of three parts: + + 1. If the URL looks suspiciously like an archive, send a HEAD first to + check the Content-Type is HTML, to avoid downloading a large file. + Raise `_NotHTTP` if the content type cannot be determined, or + `_NotHTML` if it is not HTML. + 2. Actually perform the request. Raise HTTP exceptions on network failures. + 3. Check the Content-Type header to make sure we got HTML, and raise + `_NotHTML` otherwise. + """ + if is_archive_file(Link(url).filename): + _ensure_html_response(url, session=session) + + logger.debug("Getting page %s", redact_auth_from_url(url)) + + resp = session.get( + url, + headers={ + "Accept": "text/html", + # We don't want to blindly returned cached data for + # /simple/, because authors generally expecting that + # twine upload && pip install will function, but if + # they've done a pip install in the last ~10 minutes + # it won't. Thus by setting this to zero we will not + # blindly use any cached data, however the benefit of + # using max-age=0 instead of no-cache, is that we will + # still support conditional requests, so we will still + # minimize traffic sent in cases where the page hasn't + # changed at all, we will just always incur the round + # trip for the conditional GET now instead of only + # once per 10 minutes. + # For more information, please see pypa/pip#5670. + "Cache-Control": "max-age=0", + }, + ) + raise_for_status(resp) + + # The check for archives above only works if the url ends with + # something that looks like an archive. However that is not a + # requirement of an url. Unless we issue a HEAD request on every + # url we cannot know ahead of time for sure if something is HTML + # or not. However we can check after we've downloaded it. + _ensure_html_header(resp) + + return resp + + +def _get_encoding_from_headers(headers: ResponseHeaders) -> Optional[str]: + """Determine if we have any encoding information in our headers.""" + if headers and "Content-Type" in headers: + content_type, params = cgi.parse_header(headers["Content-Type"]) + if "charset" in params: + return params["charset"] + return None + + +def _determine_base_url(document: HTMLElement, page_url: str) -> str: + """Determine the HTML document's base URL. + + This looks for a ```` tag in the HTML document. If present, its href + attribute denotes the base URL of anchor tags in the document. If there is + no such tag (or if it does not have a valid href attribute), the HTML + file's URL is used as the base URL. + + :param document: An HTML document representation. The current + implementation expects the result of ``html5lib.parse()``. + :param page_url: The URL of the HTML document. + """ + for base in document.findall(".//base"): + href = base.get("href") + if href is not None: + return href + return page_url + + +def _clean_url_path_part(part: str) -> str: + """ + Clean a "part" of a URL path (i.e. after splitting on "@" characters). + """ + # We unquote prior to quoting to make sure nothing is double quoted. + return urllib.parse.quote(urllib.parse.unquote(part)) + + +def _clean_file_url_path(part: str) -> str: + """ + Clean the first part of a URL path that corresponds to a local + filesystem path (i.e. the first part after splitting on "@" characters). + """ + # We unquote prior to quoting to make sure nothing is double quoted. + # Also, on Windows the path part might contain a drive letter which + # should not be quoted. On Linux where drive letters do not + # exist, the colon should be quoted. We rely on urllib.request + # to do the right thing here. + return urllib.request.pathname2url(urllib.request.url2pathname(part)) + + +# percent-encoded: / +_reserved_chars_re = re.compile("(@|%2F)", re.IGNORECASE) + + +def _clean_url_path(path: str, is_local_path: bool) -> str: + """ + Clean the path portion of a URL. + """ + if is_local_path: + clean_func = _clean_file_url_path + else: + clean_func = _clean_url_path_part + + # Split on the reserved characters prior to cleaning so that + # revision strings in VCS URLs are properly preserved. + parts = _reserved_chars_re.split(path) + + cleaned_parts = [] + for to_clean, reserved in pairwise(itertools.chain(parts, [""])): + cleaned_parts.append(clean_func(to_clean)) + # Normalize %xx escapes (e.g. %2f -> %2F) + cleaned_parts.append(reserved.upper()) + + return "".join(cleaned_parts) + + +def _clean_link(url: str) -> str: + """ + Make sure a link is fully quoted. + For example, if ' ' occurs in the URL, it will be replaced with "%20", + and without double-quoting other characters. + """ + # Split the URL into parts according to the general structure + # `scheme://netloc/path;parameters?query#fragment`. + result = urllib.parse.urlparse(url) + # If the netloc is empty, then the URL refers to a local filesystem path. + is_local_path = not result.netloc + path = _clean_url_path(result.path, is_local_path=is_local_path) + return urllib.parse.urlunparse(result._replace(path=path)) + + +def _create_link_from_element( + anchor: HTMLElement, + page_url: str, + base_url: str, +) -> Optional[Link]: + """ + Convert an anchor element in a simple repository page to a Link. + """ + href = anchor.get("href") + if not href: + return None + + url = _clean_link(urllib.parse.urljoin(base_url, href)) + pyrequire = anchor.get("data-requires-python") + yanked_reason = anchor.get("data-yanked") + + link = Link( + url, + comes_from=page_url, + requires_python=pyrequire, + yanked_reason=yanked_reason, + ) + + return link + + +class CacheablePageContent: + def __init__(self, page: "HTMLPage") -> None: + assert page.cache_link_parsing + self.page = page + + def __eq__(self, other: object) -> bool: + return isinstance(other, type(self)) and self.page.url == other.page.url + + def __hash__(self) -> int: + return hash(self.page.url) + + +def with_cached_html_pages( + fn: Callable[["HTMLPage"], Iterable[Link]], +) -> Callable[["HTMLPage"], List[Link]]: + """ + Given a function that parses an Iterable[Link] from an HTMLPage, cache the + function's result (keyed by CacheablePageContent), unless the HTMLPage + `page` has `page.cache_link_parsing == False`. + """ + + @functools.lru_cache(maxsize=None) + def wrapper(cacheable_page: CacheablePageContent) -> List[Link]: + return list(fn(cacheable_page.page)) + + @functools.wraps(fn) + def wrapper_wrapper(page: "HTMLPage") -> List[Link]: + if page.cache_link_parsing: + return wrapper(CacheablePageContent(page)) + return list(fn(page)) + + return wrapper_wrapper + + +@with_cached_html_pages +def parse_links(page: "HTMLPage") -> Iterable[Link]: + """ + Parse an HTML document, and yield its anchor elements as Link objects. + """ + document = html5lib.parse( + page.content, + transport_encoding=page.encoding, + namespaceHTMLElements=False, + ) + + url = page.url + base_url = _determine_base_url(document, url) + for anchor in document.findall(".//a"): + link = _create_link_from_element( + anchor, + page_url=url, + base_url=base_url, + ) + if link is None: + continue + yield link + + +class HTMLPage: + """Represents one page, along with its URL""" + + def __init__( + self, + content: bytes, + encoding: Optional[str], + url: str, + cache_link_parsing: bool = True, + ) -> None: + """ + :param encoding: the encoding to decode the given content. + :param url: the URL from which the HTML was downloaded. + :param cache_link_parsing: whether links parsed from this page's url + should be cached. PyPI index urls should + have this set to False, for example. + """ + self.content = content + self.encoding = encoding + self.url = url + self.cache_link_parsing = cache_link_parsing + + def __str__(self) -> str: + return redact_auth_from_url(self.url) + + +def _handle_get_page_fail( + link: Link, + reason: Union[str, Exception], + meth: Optional[Callable[..., None]] = None, +) -> None: + if meth is None: + meth = logger.debug + meth("Could not fetch URL %s: %s - skipping", link, reason) + + +def _make_html_page(response: Response, cache_link_parsing: bool = True) -> HTMLPage: + encoding = _get_encoding_from_headers(response.headers) + return HTMLPage( + response.content, + encoding=encoding, + url=response.url, + cache_link_parsing=cache_link_parsing, + ) + + +def _get_html_page( + link: Link, session: Optional[PipSession] = None +) -> Optional["HTMLPage"]: + if session is None: + raise TypeError( + "_get_html_page() missing 1 required keyword argument: 'session'" + ) + + url = link.url.split("#", 1)[0] + + # Check for VCS schemes that do not support lookup as web pages. + vcs_scheme = _match_vcs_scheme(url) + if vcs_scheme: + logger.warning( + "Cannot look at %s URL %s because it does not support lookup as web pages.", + vcs_scheme, + link, + ) + return None + + # Tack index.html onto file:// URLs that point to directories + scheme, _, path, _, _, _ = urllib.parse.urlparse(url) + if scheme == "file" and os.path.isdir(urllib.request.url2pathname(path)): + # add trailing slash if not present so urljoin doesn't trim + # final segment + if not url.endswith("/"): + url += "/" + url = urllib.parse.urljoin(url, "index.html") + logger.debug(" file: URL is directory, getting %s", url) + + try: + resp = _get_html_response(url, session=session) + except _NotHTTP: + logger.warning( + "Skipping page %s because it looks like an archive, and cannot " + "be checked by a HTTP HEAD request.", + link, + ) + except _NotHTML as exc: + logger.warning( + "Skipping page %s because the %s request got Content-Type: %s." + "The only supported Content-Type is text/html", + link, + exc.request_desc, + exc.content_type, + ) + except NetworkConnectionError as exc: + _handle_get_page_fail(link, exc) + except RetryError as exc: + _handle_get_page_fail(link, exc) + except SSLError as exc: + reason = "There was a problem confirming the ssl certificate: " + reason += str(exc) + _handle_get_page_fail(link, reason, meth=logger.info) + except requests.ConnectionError as exc: + _handle_get_page_fail(link, f"connection error: {exc}") + except requests.Timeout: + _handle_get_page_fail(link, "timed out") + else: + return _make_html_page(resp, cache_link_parsing=link.cache_link_parsing) + return None + + +class CollectedSources(NamedTuple): + find_links: Sequence[Optional[LinkSource]] + index_urls: Sequence[Optional[LinkSource]] + + +class LinkCollector: + + """ + Responsible for collecting Link objects from all configured locations, + making network requests as needed. + + The class's main method is its collect_sources() method. + """ + + def __init__( + self, + session: PipSession, + search_scope: SearchScope, + ) -> None: + self.search_scope = search_scope + self.session = session + + @classmethod + def create( + cls, + session: PipSession, + options: Values, + suppress_no_index: bool = False, + ) -> "LinkCollector": + """ + :param session: The Session to use to make requests. + :param suppress_no_index: Whether to ignore the --no-index option + when constructing the SearchScope object. + """ + index_urls = [options.index_url] + options.extra_index_urls + if options.no_index and not suppress_no_index: + logger.debug( + "Ignoring indexes: %s", + ",".join(redact_auth_from_url(url) for url in index_urls), + ) + index_urls = [] + + # Make sure find_links is a list before passing to create(). + find_links = options.find_links or [] + + search_scope = SearchScope.create( + find_links=find_links, + index_urls=index_urls, + ) + link_collector = LinkCollector( + session=session, + search_scope=search_scope, + ) + return link_collector + + @property + def find_links(self) -> List[str]: + return self.search_scope.find_links + + def fetch_page(self, location: Link) -> Optional[HTMLPage]: + """ + Fetch an HTML page containing package links. + """ + return _get_html_page(location, session=self.session) + + def collect_sources( + self, + project_name: str, + candidates_from_page: CandidatesFromPage, + ) -> CollectedSources: + # The OrderedDict calls deduplicate sources by URL. + index_url_sources = collections.OrderedDict( + build_source( + loc, + candidates_from_page=candidates_from_page, + page_validator=self.session.is_secure_origin, + expand_dir=False, + cache_link_parsing=False, + ) + for loc in self.search_scope.get_index_urls_locations(project_name) + ).values() + find_links_sources = collections.OrderedDict( + build_source( + loc, + candidates_from_page=candidates_from_page, + page_validator=self.session.is_secure_origin, + expand_dir=True, + cache_link_parsing=True, + ) + for loc in self.find_links + ).values() + + if logger.isEnabledFor(logging.DEBUG): + lines = [ + f"* {s.link}" + for s in itertools.chain(find_links_sources, index_url_sources) + if s is not None and s.link is not None + ] + lines = [ + f"{len(lines)} location(s) to search " + f"for versions of {project_name}:" + ] + lines + logger.debug("\n".join(lines)) + + return CollectedSources( + find_links=list(find_links_sources), + index_urls=list(index_url_sources), + ) diff --git a/venv/Lib/site-packages/pip/_internal/index/package_finder.py b/venv/Lib/site-packages/pip/_internal/index/package_finder.py new file mode 100644 index 00000000..a2702db7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/package_finder.py @@ -0,0 +1,993 @@ +"""Routines related to PyPI, indexes""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import functools +import itertools +import logging +import re +from typing import FrozenSet, Iterable, List, Optional, Set, Tuple, Union + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.tags import Tag +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import _BaseVersion +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + InvalidWheelFilename, + UnsupportedWheel, +) +from pip._internal.index.collector import LinkCollector, parse_links +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.format_control import FormatControl +from pip._internal.models.link import Link +from pip._internal.models.search_scope import SearchScope +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.models.wheel import Wheel +from pip._internal.req import InstallRequirement +from pip._internal.utils._log import getLogger +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import build_netloc +from pip._internal.utils.packaging import check_requires_python +from pip._internal.utils.unpacking import SUPPORTED_EXTENSIONS +from pip._internal.utils.urls import url_to_path + +__all__ = ["FormatControl", "BestCandidateResult", "PackageFinder"] + + +logger = getLogger(__name__) + +BuildTag = Union[Tuple[()], Tuple[int, str]] +CandidateSortingKey = Tuple[int, int, int, _BaseVersion, Optional[int], BuildTag] + + +def _check_link_requires_python( + link: Link, + version_info: Tuple[int, int, int], + ignore_requires_python: bool = False, +) -> bool: + """ + Return whether the given Python version is compatible with a link's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + """ + try: + is_compatible = check_requires_python( + link.requires_python, + version_info=version_info, + ) + except specifiers.InvalidSpecifier: + logger.debug( + "Ignoring invalid Requires-Python (%r) for link: %s", + link.requires_python, + link, + ) + else: + if not is_compatible: + version = ".".join(map(str, version_info)) + if not ignore_requires_python: + logger.verbose( + "Link requires a different Python (%s not in: %r): %s", + version, + link.requires_python, + link, + ) + return False + + logger.debug( + "Ignoring failed Requires-Python check (%s not in: %r) for link: %s", + version, + link.requires_python, + link, + ) + + return True + + +class LinkEvaluator: + + """ + Responsible for evaluating links for a particular project. + """ + + _py_version_re = re.compile(r"-py([123]\.?[0-9]?)$") + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + project_name: str, + canonical_name: str, + formats: FrozenSet[str], + target_python: TargetPython, + allow_yanked: bool, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """ + :param project_name: The user supplied package name. + :param canonical_name: The canonical package name. + :param formats: The formats allowed for this package. Should be a set + with 'binary' or 'source' or both in it. + :param target_python: The target Python interpreter to use when + evaluating link compatibility. This is used, for example, to + check wheel compatibility, as well as when checking the Python + version, e.g. the Python version embedded in a link filename + (or egg fragment) and against an HTML link's optional PEP 503 + "data-requires-python" attribute. + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param ignore_requires_python: Whether to ignore incompatible + PEP 503 "data-requires-python" values in HTML links. Defaults + to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self._allow_yanked = allow_yanked + self._canonical_name = canonical_name + self._ignore_requires_python = ignore_requires_python + self._formats = formats + self._target_python = target_python + + self.project_name = project_name + + def evaluate_link(self, link: Link) -> Tuple[bool, Optional[str]]: + """ + Determine whether a link is a candidate for installation. + + :return: A tuple (is_candidate, result), where `result` is (1) a + version string if `is_candidate` is True, and (2) if + `is_candidate` is False, an optional string to log the reason + the link fails to qualify. + """ + version = None + if link.is_yanked and not self._allow_yanked: + reason = link.yanked_reason or "" + return (False, f"yanked for reason: {reason}") + + if link.egg_fragment: + egg_info = link.egg_fragment + ext = link.ext + else: + egg_info, ext = link.splitext() + if not ext: + return (False, "not a file") + if ext not in SUPPORTED_EXTENSIONS: + return (False, f"unsupported archive format: {ext}") + if "binary" not in self._formats and ext == WHEEL_EXTENSION: + reason = "No binaries permitted for {}".format(self.project_name) + return (False, reason) + if "macosx10" in link.path and ext == ".zip": + return (False, "macosx10 one") + if ext == WHEEL_EXTENSION: + try: + wheel = Wheel(link.filename) + except InvalidWheelFilename: + return (False, "invalid wheel filename") + if canonicalize_name(wheel.name) != self._canonical_name: + reason = "wrong project name (not {})".format(self.project_name) + return (False, reason) + + supported_tags = self._target_python.get_tags() + if not wheel.supported(supported_tags): + # Include the wheel's tags in the reason string to + # simplify troubleshooting compatibility issues. + file_tags = wheel.get_formatted_file_tags() + reason = ( + "none of the wheel's tags ({}) are compatible " + "(run pip debug --verbose to show compatible tags)".format( + ", ".join(file_tags) + ) + ) + return (False, reason) + + version = wheel.version + + # This should be up by the self.ok_binary check, but see issue 2700. + if "source" not in self._formats and ext != WHEEL_EXTENSION: + reason = f"No sources permitted for {self.project_name}" + return (False, reason) + + if not version: + version = _extract_version_from_fragment( + egg_info, + self._canonical_name, + ) + if not version: + reason = f"Missing project version for {self.project_name}" + return (False, reason) + + match = self._py_version_re.search(version) + if match: + version = version[: match.start()] + py_version = match.group(1) + if py_version != self._target_python.py_version: + return (False, "Python version is incorrect") + + supports_python = _check_link_requires_python( + link, + version_info=self._target_python.py_version_info, + ignore_requires_python=self._ignore_requires_python, + ) + if not supports_python: + # Return None for the reason text to suppress calling + # _log_skipped_link(). + return (False, None) + + logger.debug("Found link %s, version: %s", link, version) + + return (True, version) + + +def filter_unallowed_hashes( + candidates: List[InstallationCandidate], + hashes: Hashes, + project_name: str, +) -> List[InstallationCandidate]: + """ + Filter out candidates whose hashes aren't allowed, and return a new + list of candidates. + + If at least one candidate has an allowed hash, then all candidates with + either an allowed hash or no hash specified are returned. Otherwise, + the given candidates are returned. + + Including the candidates with no hash specified when there is a match + allows a warning to be logged if there is a more preferred candidate + with no hash specified. Returning all candidates in the case of no + matches lets pip report the hash of the candidate that would otherwise + have been installed (e.g. permitting the user to more easily update + their requirements file with the desired hash). + """ + if not hashes: + logger.debug( + "Given no hashes to check %s links for project %r: " + "discarding no candidates", + len(candidates), + project_name, + ) + # Make sure we're not returning back the given value. + return list(candidates) + + matches_or_no_digest = [] + # Collect the non-matches for logging purposes. + non_matches = [] + match_count = 0 + for candidate in candidates: + link = candidate.link + if not link.has_hash: + pass + elif link.is_hash_allowed(hashes=hashes): + match_count += 1 + else: + non_matches.append(candidate) + continue + + matches_or_no_digest.append(candidate) + + if match_count: + filtered = matches_or_no_digest + else: + # Make sure we're not returning back the given value. + filtered = list(candidates) + + if len(filtered) == len(candidates): + discard_message = "discarding no candidates" + else: + discard_message = "discarding {} non-matches:\n {}".format( + len(non_matches), + "\n ".join(str(candidate.link) for candidate in non_matches), + ) + + logger.debug( + "Checked %s links for project %r against %s hashes " + "(%s matches, %s no digest): %s", + len(candidates), + project_name, + hashes.digest_count, + match_count, + len(matches_or_no_digest) - match_count, + discard_message, + ) + + return filtered + + +class CandidatePreferences: + + """ + Encapsulates some of the preferences for filtering and sorting + InstallationCandidate objects. + """ + + def __init__( + self, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + ) -> None: + """ + :param allow_all_prereleases: Whether to allow all pre-releases. + """ + self.allow_all_prereleases = allow_all_prereleases + self.prefer_binary = prefer_binary + + +class BestCandidateResult: + """A collection of candidates, returned by `PackageFinder.find_best_candidate`. + + This class is only intended to be instantiated by CandidateEvaluator's + `compute_best_candidate()` method. + """ + + def __init__( + self, + candidates: List[InstallationCandidate], + applicable_candidates: List[InstallationCandidate], + best_candidate: Optional[InstallationCandidate], + ) -> None: + """ + :param candidates: A sequence of all available candidates found. + :param applicable_candidates: The applicable candidates. + :param best_candidate: The most preferred candidate found, or None + if no applicable candidates were found. + """ + assert set(applicable_candidates) <= set(candidates) + + if best_candidate is None: + assert not applicable_candidates + else: + assert best_candidate in applicable_candidates + + self._applicable_candidates = applicable_candidates + self._candidates = candidates + + self.best_candidate = best_candidate + + def iter_all(self) -> Iterable[InstallationCandidate]: + """Iterate through all candidates.""" + return iter(self._candidates) + + def iter_applicable(self) -> Iterable[InstallationCandidate]: + """Iterate through the applicable candidates.""" + return iter(self._applicable_candidates) + + +class CandidateEvaluator: + + """ + Responsible for filtering and sorting candidates for installation based + on what tags are valid. + """ + + @classmethod + def create( + cls, + project_name: str, + target_python: Optional[TargetPython] = None, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> "CandidateEvaluator": + """Create a CandidateEvaluator object. + + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + :param hashes: An optional collection of allowed hashes. + """ + if target_python is None: + target_python = TargetPython() + if specifier is None: + specifier = specifiers.SpecifierSet() + + supported_tags = target_python.get_tags() + + return cls( + project_name=project_name, + supported_tags=supported_tags, + specifier=specifier, + prefer_binary=prefer_binary, + allow_all_prereleases=allow_all_prereleases, + hashes=hashes, + ) + + def __init__( + self, + project_name: str, + supported_tags: List[Tag], + specifier: specifiers.BaseSpecifier, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + hashes: Optional[Hashes] = None, + ) -> None: + """ + :param supported_tags: The PEP 425 tags supported by the target + Python in order of preference (most preferred first). + """ + self._allow_all_prereleases = allow_all_prereleases + self._hashes = hashes + self._prefer_binary = prefer_binary + self._project_name = project_name + self._specifier = specifier + self._supported_tags = supported_tags + # Since the index of the tag in the _supported_tags list is used + # as a priority, precompute a map from tag to index/priority to be + # used in wheel.find_most_preferred_tag. + self._wheel_tag_preferences = { + tag: idx for idx, tag in enumerate(supported_tags) + } + + def get_applicable_candidates( + self, + candidates: List[InstallationCandidate], + ) -> List[InstallationCandidate]: + """ + Return the applicable candidates from a list of candidates. + """ + # Using None infers from the specifier instead. + allow_prereleases = self._allow_all_prereleases or None + specifier = self._specifier + versions = { + str(v) + for v in specifier.filter( + # We turn the version object into a str here because otherwise + # when we're debundled but setuptools isn't, Python will see + # packaging.version.Version and + # pkg_resources._vendor.packaging.version.Version as different + # types. This way we'll use a str as a common data interchange + # format. If we stop using the pkg_resources provided specifier + # and start using our own, we can drop the cast to str(). + (str(c.version) for c in candidates), + prereleases=allow_prereleases, + ) + } + + # Again, converting version to str to deal with debundling. + applicable_candidates = [c for c in candidates if str(c.version) in versions] + + filtered_applicable_candidates = filter_unallowed_hashes( + candidates=applicable_candidates, + hashes=self._hashes, + project_name=self._project_name, + ) + + return sorted(filtered_applicable_candidates, key=self._sort_key) + + def _sort_key(self, candidate: InstallationCandidate) -> CandidateSortingKey: + """ + Function to pass as the `key` argument to a call to sorted() to sort + InstallationCandidates by preference. + + Returns a tuple such that tuples sorting as greater using Python's + default comparison operator are more preferred. + + The preference is as follows: + + First and foremost, candidates with allowed (matching) hashes are + always preferred over candidates without matching hashes. This is + because e.g. if the only candidate with an allowed hash is yanked, + we still want to use that candidate. + + Second, excepting hash considerations, candidates that have been + yanked (in the sense of PEP 592) are always less preferred than + candidates that haven't been yanked. Then: + + If not finding wheels, they are sorted by version only. + If finding wheels, then the sort order is by version, then: + 1. existing installs + 2. wheels ordered via Wheel.support_index_min(self._supported_tags) + 3. source archives + If prefer_binary was set, then all wheels are sorted above sources. + + Note: it was considered to embed this logic into the Link + comparison operators, but then different sdist links + with the same version, would have to be considered equal + """ + valid_tags = self._supported_tags + support_num = len(valid_tags) + build_tag: BuildTag = () + binary_preference = 0 + link = candidate.link + if link.is_wheel: + # can raise InvalidWheelFilename + wheel = Wheel(link.filename) + try: + pri = -( + wheel.find_most_preferred_tag( + valid_tags, self._wheel_tag_preferences + ) + ) + except ValueError: + raise UnsupportedWheel( + "{} is not a supported wheel for this platform. It " + "can't be sorted.".format(wheel.filename) + ) + if self._prefer_binary: + binary_preference = 1 + if wheel.build_tag is not None: + match = re.match(r"^(\d+)(.*)$", wheel.build_tag) + build_tag_groups = match.groups() + build_tag = (int(build_tag_groups[0]), build_tag_groups[1]) + else: # sdist + pri = -(support_num) + has_allowed_hash = int(link.is_hash_allowed(self._hashes)) + yank_value = -1 * int(link.is_yanked) # -1 for yanked. + return ( + has_allowed_hash, + yank_value, + binary_preference, + candidate.version, + pri, + build_tag, + ) + + def sort_best_candidate( + self, + candidates: List[InstallationCandidate], + ) -> Optional[InstallationCandidate]: + """ + Return the best candidate per the instance's sort order, or None if + no candidate is acceptable. + """ + if not candidates: + return None + best_candidate = max(candidates, key=self._sort_key) + return best_candidate + + def compute_best_candidate( + self, + candidates: List[InstallationCandidate], + ) -> BestCandidateResult: + """ + Compute and return a `BestCandidateResult` instance. + """ + applicable_candidates = self.get_applicable_candidates(candidates) + + best_candidate = self.sort_best_candidate(applicable_candidates) + + return BestCandidateResult( + candidates, + applicable_candidates=applicable_candidates, + best_candidate=best_candidate, + ) + + +class PackageFinder: + """This finds packages. + + This is meant to match easy_install's technique for looking for + packages, by reading pages and looking for appropriate links. + """ + + def __init__( + self, + link_collector: LinkCollector, + target_python: TargetPython, + allow_yanked: bool, + format_control: Optional[FormatControl] = None, + candidate_prefs: Optional[CandidatePreferences] = None, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """ + This constructor is primarily meant to be used by the create() class + method and from tests. + + :param format_control: A FormatControl object, used to control + the selection of source packages / binary packages when consulting + the index and links. + :param candidate_prefs: Options to use when creating a + CandidateEvaluator object. + """ + if candidate_prefs is None: + candidate_prefs = CandidatePreferences() + + format_control = format_control or FormatControl(set(), set()) + + self._allow_yanked = allow_yanked + self._candidate_prefs = candidate_prefs + self._ignore_requires_python = ignore_requires_python + self._link_collector = link_collector + self._target_python = target_python + + self.format_control = format_control + + # These are boring links that have already been logged somehow. + self._logged_links: Set[Link] = set() + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + @classmethod + def create( + cls, + link_collector: LinkCollector, + selection_prefs: SelectionPreferences, + target_python: Optional[TargetPython] = None, + ) -> "PackageFinder": + """Create a PackageFinder. + + :param selection_prefs: The candidate selection preferences, as a + SelectionPreferences object. + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + """ + if target_python is None: + target_python = TargetPython() + + candidate_prefs = CandidatePreferences( + prefer_binary=selection_prefs.prefer_binary, + allow_all_prereleases=selection_prefs.allow_all_prereleases, + ) + + return cls( + candidate_prefs=candidate_prefs, + link_collector=link_collector, + target_python=target_python, + allow_yanked=selection_prefs.allow_yanked, + format_control=selection_prefs.format_control, + ignore_requires_python=selection_prefs.ignore_requires_python, + ) + + @property + def target_python(self) -> TargetPython: + return self._target_python + + @property + def search_scope(self) -> SearchScope: + return self._link_collector.search_scope + + @search_scope.setter + def search_scope(self, search_scope: SearchScope) -> None: + self._link_collector.search_scope = search_scope + + @property + def find_links(self) -> List[str]: + return self._link_collector.find_links + + @property + def index_urls(self) -> List[str]: + return self.search_scope.index_urls + + @property + def trusted_hosts(self) -> Iterable[str]: + for host_port in self._link_collector.session.pip_trusted_origins: + yield build_netloc(*host_port) + + @property + def allow_all_prereleases(self) -> bool: + return self._candidate_prefs.allow_all_prereleases + + def set_allow_all_prereleases(self) -> None: + self._candidate_prefs.allow_all_prereleases = True + + @property + def prefer_binary(self) -> bool: + return self._candidate_prefs.prefer_binary + + def set_prefer_binary(self) -> None: + self._candidate_prefs.prefer_binary = True + + def make_link_evaluator(self, project_name: str) -> LinkEvaluator: + canonical_name = canonicalize_name(project_name) + formats = self.format_control.get_allowed_formats(canonical_name) + + return LinkEvaluator( + project_name=project_name, + canonical_name=canonical_name, + formats=formats, + target_python=self._target_python, + allow_yanked=self._allow_yanked, + ignore_requires_python=self._ignore_requires_python, + ) + + def _sort_links(self, links: Iterable[Link]) -> List[Link]: + """ + Returns elements of links in order, non-egg links first, egg links + second, while eliminating duplicates + """ + eggs, no_eggs = [], [] + seen: Set[Link] = set() + for link in links: + if link not in seen: + seen.add(link) + if link.egg_fragment: + eggs.append(link) + else: + no_eggs.append(link) + return no_eggs + eggs + + def _log_skipped_link(self, link: Link, reason: str) -> None: + if link not in self._logged_links: + # Put the link at the end so the reason is more visible and because + # the link string is usually very long. + logger.debug("Skipping link: %s: %s", reason, link) + self._logged_links.add(link) + + def get_install_candidate( + self, link_evaluator: LinkEvaluator, link: Link + ) -> Optional[InstallationCandidate]: + """ + If the link is a candidate for install, convert it to an + InstallationCandidate and return it. Otherwise, return None. + """ + is_candidate, result = link_evaluator.evaluate_link(link) + if not is_candidate: + if result: + self._log_skipped_link(link, reason=result) + return None + + return InstallationCandidate( + name=link_evaluator.project_name, + link=link, + version=result, + ) + + def evaluate_links( + self, link_evaluator: LinkEvaluator, links: Iterable[Link] + ) -> List[InstallationCandidate]: + """ + Convert links that are candidates to InstallationCandidate objects. + """ + candidates = [] + for link in self._sort_links(links): + candidate = self.get_install_candidate(link_evaluator, link) + if candidate is not None: + candidates.append(candidate) + + return candidates + + def process_project_url( + self, project_url: Link, link_evaluator: LinkEvaluator + ) -> List[InstallationCandidate]: + logger.debug( + "Fetching project page and analyzing links: %s", + project_url, + ) + html_page = self._link_collector.fetch_page(project_url) + if html_page is None: + return [] + + page_links = list(parse_links(html_page)) + + with indent_log(): + package_links = self.evaluate_links( + link_evaluator, + links=page_links, + ) + + return package_links + + @functools.lru_cache(maxsize=None) + def find_all_candidates(self, project_name: str) -> List[InstallationCandidate]: + """Find all available InstallationCandidate for project_name + + This checks index_urls and find_links. + All versions found are returned as an InstallationCandidate list. + + See LinkEvaluator.evaluate_link() for details on which files + are accepted. + """ + link_evaluator = self.make_link_evaluator(project_name) + + collected_sources = self._link_collector.collect_sources( + project_name=project_name, + candidates_from_page=functools.partial( + self.process_project_url, + link_evaluator=link_evaluator, + ), + ) + + page_candidates_it = itertools.chain.from_iterable( + source.page_candidates() + for sources in collected_sources + for source in sources + if source is not None + ) + page_candidates = list(page_candidates_it) + + file_links_it = itertools.chain.from_iterable( + source.file_links() + for sources in collected_sources + for source in sources + if source is not None + ) + file_candidates = self.evaluate_links( + link_evaluator, + sorted(file_links_it, reverse=True), + ) + + if logger.isEnabledFor(logging.DEBUG) and file_candidates: + paths = [url_to_path(c.link.url) for c in file_candidates] + logger.debug("Local files found: %s", ", ".join(paths)) + + # This is an intentional priority ordering + return file_candidates + page_candidates + + def make_candidate_evaluator( + self, + project_name: str, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> CandidateEvaluator: + """Create a CandidateEvaluator object to use.""" + candidate_prefs = self._candidate_prefs + return CandidateEvaluator.create( + project_name=project_name, + target_python=self._target_python, + prefer_binary=candidate_prefs.prefer_binary, + allow_all_prereleases=candidate_prefs.allow_all_prereleases, + specifier=specifier, + hashes=hashes, + ) + + @functools.lru_cache(maxsize=None) + def find_best_candidate( + self, + project_name: str, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> BestCandidateResult: + """Find matches for the given project and specifier. + + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + + :return: A `BestCandidateResult` instance. + """ + candidates = self.find_all_candidates(project_name) + candidate_evaluator = self.make_candidate_evaluator( + project_name=project_name, + specifier=specifier, + hashes=hashes, + ) + return candidate_evaluator.compute_best_candidate(candidates) + + def find_requirement( + self, req: InstallRequirement, upgrade: bool + ) -> Optional[InstallationCandidate]: + """Try to find a Link matching req + + Expects req, an InstallRequirement and upgrade, a boolean + Returns a InstallationCandidate if found, + Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise + """ + hashes = req.hashes(trust_internet=False) + best_candidate_result = self.find_best_candidate( + req.name, + specifier=req.specifier, + hashes=hashes, + ) + best_candidate = best_candidate_result.best_candidate + + installed_version: Optional[_BaseVersion] = None + if req.satisfied_by is not None: + installed_version = parse_version(req.satisfied_by.version) + + def _format_versions(cand_iter: Iterable[InstallationCandidate]) -> str: + # This repeated parse_version and str() conversion is needed to + # handle different vendoring sources from pip and pkg_resources. + # If we stop using the pkg_resources provided specifier and start + # using our own, we can drop the cast to str(). + return ( + ", ".join( + sorted( + {str(c.version) for c in cand_iter}, + key=parse_version, + ) + ) + or "none" + ) + + if installed_version is None and best_candidate is None: + logger.critical( + "Could not find a version that satisfies the requirement %s " + "(from versions: %s)", + req, + _format_versions(best_candidate_result.iter_all()), + ) + + raise DistributionNotFound( + "No matching distribution found for {}".format(req) + ) + + best_installed = False + if installed_version and ( + best_candidate is None or best_candidate.version <= installed_version + ): + best_installed = True + + if not upgrade and installed_version is not None: + if best_installed: + logger.debug( + "Existing installed version (%s) is most up-to-date and " + "satisfies requirement", + installed_version, + ) + else: + logger.debug( + "Existing installed version (%s) satisfies requirement " + "(most up-to-date version is %s)", + installed_version, + best_candidate.version, + ) + return None + + if best_installed: + # We have an existing version, and its the best version + logger.debug( + "Installed version (%s) is most up-to-date (past versions: %s)", + installed_version, + _format_versions(best_candidate_result.iter_applicable()), + ) + raise BestVersionAlreadyInstalled + + logger.debug( + "Using version %s (newest of versions: %s)", + best_candidate.version, + _format_versions(best_candidate_result.iter_applicable()), + ) + return best_candidate + + +def _find_name_version_sep(fragment: str, canonical_name: str) -> int: + """Find the separator's index based on the package's canonical name. + + :param fragment: A + filename "fragment" (stem) or + egg fragment. + :param canonical_name: The package's canonical name. + + This function is needed since the canonicalized name does not necessarily + have the same length as the egg info's name part. An example:: + + >>> fragment = 'foo__bar-1.0' + >>> canonical_name = 'foo-bar' + >>> _find_name_version_sep(fragment, canonical_name) + 8 + """ + # Project name and version must be separated by one single dash. Find all + # occurrences of dashes; if the string in front of it matches the canonical + # name, this is the one separating the name and version parts. + for i, c in enumerate(fragment): + if c != "-": + continue + if canonicalize_name(fragment[:i]) == canonical_name: + return i + raise ValueError(f"{fragment} does not match {canonical_name}") + + +def _extract_version_from_fragment(fragment: str, canonical_name: str) -> Optional[str]: + """Parse the version string from a + filename + "fragment" (stem) or egg fragment. + + :param fragment: The string to parse. E.g. foo-2.1 + :param canonical_name: The canonicalized name of the package this + belongs to. + """ + try: + version_start = _find_name_version_sep(fragment, canonical_name) + 1 + except ValueError: + return None + version = fragment[version_start:] + if not version: + return None + return version diff --git a/venv/Lib/site-packages/pip/_internal/index/sources.py b/venv/Lib/site-packages/pip/_internal/index/sources.py new file mode 100644 index 00000000..eec3f12f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/sources.py @@ -0,0 +1,224 @@ +import logging +import mimetypes +import os +import pathlib +from typing import Callable, Iterable, Optional, Tuple + +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.link import Link +from pip._internal.utils.urls import path_to_url, url_to_path +from pip._internal.vcs import is_url + +logger = logging.getLogger(__name__) + +FoundCandidates = Iterable[InstallationCandidate] +FoundLinks = Iterable[Link] +CandidatesFromPage = Callable[[Link], Iterable[InstallationCandidate]] +PageValidator = Callable[[Link], bool] + + +class LinkSource: + @property + def link(self) -> Optional[Link]: + """Returns the underlying link, if there's one.""" + raise NotImplementedError() + + def page_candidates(self) -> FoundCandidates: + """Candidates found by parsing an archive listing HTML file.""" + raise NotImplementedError() + + def file_links(self) -> FoundLinks: + """Links found by specifying archives directly.""" + raise NotImplementedError() + + +def _is_html_file(file_url: str) -> bool: + return mimetypes.guess_type(file_url, strict=False)[0] == "text/html" + + +class _FlatDirectorySource(LinkSource): + """Link source specified by ``--find-links=``. + + This looks the content of the directory, and returns: + + * ``page_candidates``: Links listed on each HTML file in the directory. + * ``file_candidates``: Archives in the directory. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + path: str, + ) -> None: + self._candidates_from_page = candidates_from_page + self._path = pathlib.Path(os.path.realpath(path)) + + @property + def link(self) -> Optional[Link]: + return None + + def page_candidates(self) -> FoundCandidates: + for path in self._path.iterdir(): + url = path_to_url(str(path)) + if not _is_html_file(url): + continue + yield from self._candidates_from_page(Link(url)) + + def file_links(self) -> FoundLinks: + for path in self._path.iterdir(): + url = path_to_url(str(path)) + if _is_html_file(url): + continue + yield Link(url) + + +class _LocalFileSource(LinkSource): + """``--find-links=`` or ``--[extra-]index-url=``. + + If a URL is supplied, it must be a ``file:`` URL. If a path is supplied to + the option, it is converted to a URL first. This returns: + + * ``page_candidates``: Links listed on an HTML file. + * ``file_candidates``: The non-HTML file. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + if not _is_html_file(self._link.url): + return + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + if _is_html_file(self._link.url): + return + yield self._link + + +class _RemoteFileSource(LinkSource): + """``--find-links=`` or ``--[extra-]index-url=``. + + This returns: + + * ``page_candidates``: Links listed on an HTML file. + * ``file_candidates``: The non-HTML file. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + page_validator: PageValidator, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._page_validator = page_validator + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + if not self._page_validator(self._link): + return + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + yield self._link + + +class _IndexDirectorySource(LinkSource): + """``--[extra-]index-url=``. + + This is treated like a remote URL; ``candidates_from_page`` contains logic + for this by appending ``index.html`` to the link. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + return () + + +def build_source( + location: str, + *, + candidates_from_page: CandidatesFromPage, + page_validator: PageValidator, + expand_dir: bool, + cache_link_parsing: bool, +) -> Tuple[Optional[str], Optional[LinkSource]]: + + path: Optional[str] = None + url: Optional[str] = None + if os.path.exists(location): # Is a local path. + url = path_to_url(location) + path = location + elif location.startswith("file:"): # A file: URL. + url = location + path = url_to_path(location) + elif is_url(location): + url = location + + if url is None: + msg = ( + "Location '%s' is ignored: " + "it is either a non-existing path or lacks a specific scheme." + ) + logger.warning(msg, location) + return (None, None) + + if path is None: + source: LinkSource = _RemoteFileSource( + candidates_from_page=candidates_from_page, + page_validator=page_validator, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + + if os.path.isdir(path): + if expand_dir: + source = _FlatDirectorySource( + candidates_from_page=candidates_from_page, + path=path, + ) + else: + source = _IndexDirectorySource( + candidates_from_page=candidates_from_page, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + elif os.path.isfile(path): + source = _LocalFileSource( + candidates_from_page=candidates_from_page, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + logger.warning( + "Location '%s' is ignored: it is neither a file nor a directory.", + location, + ) + return (url, None) diff --git a/venv/Lib/site-packages/pip/_internal/locations/__init__.py b/venv/Lib/site-packages/pip/_internal/locations/__init__.py new file mode 100644 index 00000000..dba182d7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/__init__.py @@ -0,0 +1,446 @@ +import functools +import logging +import os +import pathlib +import sys +import sysconfig +from typing import Any, Dict, Iterator, List, Optional, Tuple + +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.virtualenv import running_under_virtualenv + +from . import _distutils, _sysconfig +from .base import ( + USER_CACHE_DIR, + get_major_minor_version, + get_src_prefix, + is_osx_framework, + site_packages, + user_site, +) + +__all__ = [ + "USER_CACHE_DIR", + "get_bin_prefix", + "get_bin_user", + "get_major_minor_version", + "get_platlib", + "get_prefixed_libs", + "get_purelib", + "get_scheme", + "get_src_prefix", + "site_packages", + "user_site", +] + + +logger = logging.getLogger(__name__) + +if os.environ.get("_PIP_LOCATIONS_NO_WARN_ON_MISMATCH"): + _MISMATCH_LEVEL = logging.DEBUG +else: + _MISMATCH_LEVEL = logging.WARNING + +_PLATLIBDIR: str = getattr(sys, "platlibdir", "lib") + +_USE_SYSCONFIG = sys.version_info >= (3, 10) + + +def _looks_like_bpo_44860() -> bool: + """The resolution to bpo-44860 will change this incorrect platlib. + + See . + """ + from distutils.command.install import INSTALL_SCHEMES # type: ignore + + try: + unix_user_platlib = INSTALL_SCHEMES["unix_user"]["platlib"] + except KeyError: + return False + return unix_user_platlib == "$usersite" + + +def _looks_like_red_hat_patched_platlib_purelib(scheme: Dict[str, str]) -> bool: + platlib = scheme["platlib"] + if "/$platlibdir/" in platlib and hasattr(sys, "platlibdir"): + platlib = platlib.replace("/$platlibdir/", f"/{sys.platlibdir}/") + if "/lib64/" not in platlib: + return False + unpatched = platlib.replace("/lib64/", "/lib/") + return unpatched.replace("$platbase/", "$base/") == scheme["purelib"] + + +@functools.lru_cache(maxsize=None) +def _looks_like_red_hat_lib() -> bool: + """Red Hat patches platlib in unix_prefix and unix_home, but not purelib. + + This is the only way I can see to tell a Red Hat-patched Python. + """ + from distutils.command.install import INSTALL_SCHEMES # type: ignore + + return all( + k in INSTALL_SCHEMES + and _looks_like_red_hat_patched_platlib_purelib(INSTALL_SCHEMES[k]) + for k in ("unix_prefix", "unix_home") + ) + + +@functools.lru_cache(maxsize=None) +def _looks_like_debian_scheme() -> bool: + """Debian adds two additional schemes.""" + from distutils.command.install import INSTALL_SCHEMES # type: ignore + + return "deb_system" in INSTALL_SCHEMES and "unix_local" in INSTALL_SCHEMES + + +@functools.lru_cache(maxsize=None) +def _looks_like_red_hat_scheme() -> bool: + """Red Hat patches ``sys.prefix`` and ``sys.exec_prefix``. + + Red Hat's ``00251-change-user-install-location.patch`` changes the install + command's ``prefix`` and ``exec_prefix`` to append ``"/local"``. This is + (fortunately?) done quite unconditionally, so we create a default command + object without any configuration to detect this. + """ + from distutils.command.install import install + from distutils.dist import Distribution + + cmd: Any = install(Distribution()) + cmd.finalize_options() + return ( + cmd.exec_prefix == f"{os.path.normpath(sys.exec_prefix)}/local" + and cmd.prefix == f"{os.path.normpath(sys.prefix)}/local" + ) + + +@functools.lru_cache(maxsize=None) +def _looks_like_msys2_mingw_scheme() -> bool: + """MSYS2 patches distutils and sysconfig to use a UNIX-like scheme. + + However, MSYS2 incorrectly patches sysconfig ``nt`` scheme. The fix is + likely going to be included in their 3.10 release, so we ignore the warning. + See msys2/MINGW-packages#9319. + + MSYS2 MINGW's patch uses lowercase ``"lib"`` instead of the usual uppercase, + and is missing the final ``"site-packages"``. + """ + paths = sysconfig.get_paths("nt", expand=False) + return all( + "Lib" not in p and "lib" in p and not p.endswith("site-packages") + for p in (paths[key] for key in ("platlib", "purelib")) + ) + + +def _fix_abiflags(parts: Tuple[str]) -> Iterator[str]: + ldversion = sysconfig.get_config_var("LDVERSION") + abiflags: str = getattr(sys, "abiflags", None) + + # LDVERSION does not end with sys.abiflags. Just return the path unchanged. + if not ldversion or not abiflags or not ldversion.endswith(abiflags): + yield from parts + return + + # Strip sys.abiflags from LDVERSION-based path components. + for part in parts: + if part.endswith(ldversion): + part = part[: (0 - len(abiflags))] + yield part + + +@functools.lru_cache(maxsize=None) +def _warn_mismatched(old: pathlib.Path, new: pathlib.Path, *, key: str) -> None: + issue_url = "https://github.com/pypa/pip/issues/10151" + message = ( + "Value for %s does not match. Please report this to <%s>" + "\ndistutils: %s" + "\nsysconfig: %s" + ) + logger.log(_MISMATCH_LEVEL, message, key, issue_url, old, new) + + +def _warn_if_mismatch(old: pathlib.Path, new: pathlib.Path, *, key: str) -> bool: + if old == new: + return False + _warn_mismatched(old, new, key=key) + return True + + +@functools.lru_cache(maxsize=None) +def _log_context( + *, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + prefix: Optional[str] = None, +) -> None: + parts = [ + "Additional context:", + "user = %r", + "home = %r", + "root = %r", + "prefix = %r", + ] + + logger.log(_MISMATCH_LEVEL, "\n".join(parts), user, home, root, prefix) + + +def get_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> Scheme: + new = _sysconfig.get_scheme( + dist_name, + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + if _USE_SYSCONFIG: + return new + + old = _distutils.get_scheme( + dist_name, + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + + warning_contexts = [] + for k in SCHEME_KEYS: + old_v = pathlib.Path(getattr(old, k)) + new_v = pathlib.Path(getattr(new, k)) + + if old_v == new_v: + continue + + # distutils incorrectly put PyPy packages under ``site-packages/python`` + # in the ``posix_home`` scheme, but PyPy devs said they expect the + # directory name to be ``pypy`` instead. So we treat this as a bug fix + # and not warn about it. See bpo-43307 and python/cpython#24628. + skip_pypy_special_case = ( + sys.implementation.name == "pypy" + and home is not None + and k in ("platlib", "purelib") + and old_v.parent == new_v.parent + and old_v.name.startswith("python") + and new_v.name.startswith("pypy") + ) + if skip_pypy_special_case: + continue + + # sysconfig's ``osx_framework_user`` does not include ``pythonX.Y`` in + # the ``include`` value, but distutils's ``headers`` does. We'll let + # CPython decide whether this is a bug or feature. See bpo-43948. + skip_osx_framework_user_special_case = ( + user + and is_osx_framework() + and k == "headers" + and old_v.parent.parent == new_v.parent + and old_v.parent.name.startswith("python") + ) + if skip_osx_framework_user_special_case: + continue + + # On Red Hat and derived Linux distributions, distutils is patched to + # use "lib64" instead of "lib" for platlib. + if k == "platlib" and _looks_like_red_hat_lib(): + continue + + # On Python 3.9+, sysconfig's posix_user scheme sets platlib against + # sys.platlibdir, but distutils's unix_user incorrectly coninutes + # using the same $usersite for both platlib and purelib. This creates a + # mismatch when sys.platlibdir is not "lib". + skip_bpo_44860 = ( + user + and k == "platlib" + and not WINDOWS + and sys.version_info >= (3, 9) + and _PLATLIBDIR != "lib" + and _looks_like_bpo_44860() + ) + if skip_bpo_44860: + continue + + # Both Debian and Red Hat patch Python to place the system site under + # /usr/local instead of /usr. Debian also places lib in dist-packages + # instead of site-packages, but the /usr/local check should cover it. + skip_linux_system_special_case = ( + not (user or home or prefix or running_under_virtualenv()) + and old_v.parts[1:3] == ("usr", "local") + and len(new_v.parts) > 1 + and new_v.parts[1] == "usr" + and (len(new_v.parts) < 3 or new_v.parts[2] != "local") + and (_looks_like_red_hat_scheme() or _looks_like_debian_scheme()) + ) + if skip_linux_system_special_case: + continue + + # On Python 3.7 and earlier, sysconfig does not include sys.abiflags in + # the "pythonX.Y" part of the path, but distutils does. + skip_sysconfig_abiflag_bug = ( + sys.version_info < (3, 8) + and not WINDOWS + and k in ("headers", "platlib", "purelib") + and tuple(_fix_abiflags(old_v.parts)) == new_v.parts + ) + if skip_sysconfig_abiflag_bug: + continue + + # MSYS2 MINGW's sysconfig patch does not include the "site-packages" + # part of the path. This is incorrect and will be fixed in MSYS. + skip_msys2_mingw_bug = ( + WINDOWS and k in ("platlib", "purelib") and _looks_like_msys2_mingw_scheme() + ) + if skip_msys2_mingw_bug: + continue + + # CPython's POSIX install script invokes pip (via ensurepip) against the + # interpreter located in the source tree, not the install site. This + # triggers special logic in sysconfig that's not present in distutils. + # https://github.com/python/cpython/blob/8c21941ddaf/Lib/sysconfig.py#L178-L194 + skip_cpython_build = ( + sysconfig.is_python_build(check_home=True) + and not WINDOWS + and k in ("headers", "include", "platinclude") + ) + if skip_cpython_build: + continue + + warning_contexts.append((old_v, new_v, f"scheme.{k}")) + + if not warning_contexts: + return old + + # Check if this path mismatch is caused by distutils config files. Those + # files will no longer work once we switch to sysconfig, so this raises a + # deprecation message for them. + default_old = _distutils.distutils_scheme( + dist_name, + user, + home, + root, + isolated, + prefix, + ignore_config_files=True, + ) + if any(default_old[k] != getattr(old, k) for k in SCHEME_KEYS): + deprecated( + reason=( + "Configuring installation scheme with distutils config files " + "is deprecated and will no longer work in the near future. If you " + "are using a Homebrew or Linuxbrew Python, please see discussion " + "at https://github.com/Homebrew/homebrew-core/issues/76621" + ), + replacement=None, + gone_in=None, + ) + return old + + # Post warnings about this mismatch so user can report them back. + for old_v, new_v, key in warning_contexts: + _warn_mismatched(old_v, new_v, key=key) + _log_context(user=user, home=home, root=root, prefix=prefix) + + return old + + +def get_bin_prefix() -> str: + new = _sysconfig.get_bin_prefix() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_bin_prefix() + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="bin_prefix"): + _log_context() + return old + + +def get_bin_user() -> str: + return _sysconfig.get_scheme("", user=True).scripts + + +def _looks_like_deb_system_dist_packages(value: str) -> bool: + """Check if the value is Debian's APT-controlled dist-packages. + + Debian's ``distutils.sysconfig.get_python_lib()`` implementation returns the + default package path controlled by APT, but does not patch ``sysconfig`` to + do the same. This is similar to the bug worked around in ``get_scheme()``, + but here the default is ``deb_system`` instead of ``unix_local``. Ultimately + we can't do anything about this Debian bug, and this detection allows us to + skip the warning when needed. + """ + if not _looks_like_debian_scheme(): + return False + if value == "/usr/lib/python3/dist-packages": + return True + return False + + +def get_purelib() -> str: + """Return the default pure-Python lib location.""" + new = _sysconfig.get_purelib() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_purelib() + if _looks_like_deb_system_dist_packages(old): + return old + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="purelib"): + _log_context() + return old + + +def get_platlib() -> str: + """Return the default platform-shared lib location.""" + new = _sysconfig.get_platlib() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_platlib() + if _looks_like_deb_system_dist_packages(old): + return old + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="platlib"): + _log_context() + return old + + +def _deduplicated(v1: str, v2: str) -> List[str]: + """Deduplicate values from a list.""" + if v1 == v2: + return [v1] + return [v1, v2] + + +def get_prefixed_libs(prefix: str) -> List[str]: + """Return the lib locations under ``prefix``.""" + new_pure, new_plat = _sysconfig.get_prefixed_libs(prefix) + if _USE_SYSCONFIG: + return _deduplicated(new_pure, new_plat) + + old_pure, old_plat = _distutils.get_prefixed_libs(prefix) + + warned = [ + _warn_if_mismatch( + pathlib.Path(old_pure), + pathlib.Path(new_pure), + key="prefixed-purelib", + ), + _warn_if_mismatch( + pathlib.Path(old_plat), + pathlib.Path(new_plat), + key="prefixed-platlib", + ), + ] + if any(warned): + _log_context(prefix=prefix) + + return _deduplicated(old_pure, old_plat) diff --git a/venv/Lib/site-packages/pip/_internal/locations/_distutils.py b/venv/Lib/site-packages/pip/_internal/locations/_distutils.py new file mode 100644 index 00000000..2ec79e65 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/_distutils.py @@ -0,0 +1,169 @@ +"""Locations where we look for configs, install stuff, etc""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import os +import sys +from distutils.cmd import Command as DistutilsCommand +from distutils.command.install import SCHEME_KEYS +from distutils.command.install import install as distutils_install_command +from distutils.sysconfig import get_python_lib +from typing import Dict, List, Optional, Tuple, Union, cast + +from pip._internal.models.scheme import Scheme +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import get_major_minor_version + +logger = logging.getLogger(__name__) + + +def distutils_scheme( + dist_name: str, + user: bool = False, + home: str = None, + root: str = None, + isolated: bool = False, + prefix: str = None, + *, + ignore_config_files: bool = False, +) -> Dict[str, str]: + """ + Return a distutils install scheme + """ + from distutils.dist import Distribution + + dist_args: Dict[str, Union[str, List[str]]] = {"name": dist_name} + if isolated: + dist_args["script_args"] = ["--no-user-cfg"] + + d = Distribution(dist_args) + if not ignore_config_files: + try: + d.parse_config_files() + except UnicodeDecodeError: + # Typeshed does not include find_config_files() for some reason. + paths = d.find_config_files() # type: ignore + logger.warning( + "Ignore distutils configs in %s due to encoding errors.", + ", ".join(os.path.basename(p) for p in paths), + ) + obj: Optional[DistutilsCommand] = None + obj = d.get_command_obj("install", create=True) + assert obj is not None + i = cast(distutils_install_command, obj) + # NOTE: setting user or home has the side-effect of creating the home dir + # or user base for installations during finalize_options() + # ideally, we'd prefer a scheme class that has no side-effects. + assert not (user and prefix), f"user={user} prefix={prefix}" + assert not (home and prefix), f"home={home} prefix={prefix}" + i.user = user or i.user + if user or home: + i.prefix = "" + i.prefix = prefix or i.prefix + i.home = home or i.home + i.root = root or i.root + i.finalize_options() + + scheme = {} + for key in SCHEME_KEYS: + scheme[key] = getattr(i, "install_" + key) + + # install_lib specified in setup.cfg should install *everything* + # into there (i.e. it takes precedence over both purelib and + # platlib). Note, i.install_lib is *always* set after + # finalize_options(); we only want to override here if the user + # has explicitly requested it hence going back to the config + if "install_lib" in d.get_option_dict("install"): + scheme.update(dict(purelib=i.install_lib, platlib=i.install_lib)) + + if running_under_virtualenv(): + if home: + prefix = home + elif user: + prefix = i.install_userbase # type: ignore + else: + prefix = i.prefix + scheme["headers"] = os.path.join( + prefix, + "include", + "site", + f"python{get_major_minor_version()}", + dist_name, + ) + + if root is not None: + path_no_drive = os.path.splitdrive(os.path.abspath(scheme["headers"]))[1] + scheme["headers"] = os.path.join(root, path_no_drive[1:]) + + return scheme + + +def get_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> Scheme: + """ + Get the "scheme" corresponding to the input parameters. The distutils + documentation provides the context for the available schemes: + https://docs.python.org/3/install/index.html#alternate-installation + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme and provides the base + directory for the same + :param root: root under which other directories are re-based + :param isolated: equivalent to --no-user-cfg, i.e. do not consider + ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for + scheme paths + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + scheme = distutils_scheme(dist_name, user, home, root, isolated, prefix) + return Scheme( + platlib=scheme["platlib"], + purelib=scheme["purelib"], + headers=scheme["headers"], + scripts=scheme["scripts"], + data=scheme["data"], + ) + + +def get_bin_prefix() -> str: + # XXX: In old virtualenv versions, sys.prefix can contain '..' components, + # so we need to call normpath to eliminate them. + prefix = os.path.normpath(sys.prefix) + if WINDOWS: + bin_py = os.path.join(prefix, "Scripts") + # buildout uses 'bin' on Windows too? + if not os.path.exists(bin_py): + bin_py = os.path.join(prefix, "bin") + return bin_py + # Forcing to use /usr/local/bin for standard macOS framework installs + # Also log to ~/Library/Logs/ for use with the Console.app log viewer + if sys.platform[:6] == "darwin" and prefix[:16] == "/System/Library/": + return "/usr/local/bin" + return os.path.join(prefix, "bin") + + +def get_purelib() -> str: + return get_python_lib(plat_specific=False) + + +def get_platlib() -> str: + return get_python_lib(plat_specific=True) + + +def get_prefixed_libs(prefix: str) -> Tuple[str, str]: + return ( + get_python_lib(plat_specific=False, prefix=prefix), + get_python_lib(plat_specific=True, prefix=prefix), + ) diff --git a/venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py b/venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py new file mode 100644 index 00000000..5e141aa1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py @@ -0,0 +1,219 @@ +import distutils.util # FIXME: For change_root. +import logging +import os +import sys +import sysconfig +import typing + +from pip._internal.exceptions import InvalidSchemeCombination, UserInstallationInvalid +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import get_major_minor_version, is_osx_framework + +logger = logging.getLogger(__name__) + + +# Notes on _infer_* functions. +# Unfortunately ``get_default_scheme()`` didn't exist before 3.10, so there's no +# way to ask things like "what is the '_prefix' scheme on this platform". These +# functions try to answer that with some heuristics while accounting for ad-hoc +# platforms not covered by CPython's default sysconfig implementation. If the +# ad-hoc implementation does not fully implement sysconfig, we'll fall back to +# a POSIX scheme. + +_AVAILABLE_SCHEMES = set(sysconfig.get_scheme_names()) + +_PREFERRED_SCHEME_API = getattr(sysconfig, "get_preferred_scheme", None) + + +def _should_use_osx_framework_prefix() -> bool: + """Check for Apple's ``osx_framework_library`` scheme. + + Python distributed by Apple's Command Line Tools has this special scheme + that's used when: + + * This is a framework build. + * We are installing into the system prefix. + + This does not account for ``pip install --prefix`` (also means we're not + installing to the system prefix), which should use ``posix_prefix``, but + logic here means ``_infer_prefix()`` outputs ``osx_framework_library``. But + since ``prefix`` is not available for ``sysconfig.get_default_scheme()``, + which is the stdlib replacement for ``_infer_prefix()``, presumably Apple + wouldn't be able to magically switch between ``osx_framework_library`` and + ``posix_prefix``. ``_infer_prefix()`` returning ``osx_framework_library`` + means its behavior is consistent whether we use the stdlib implementation + or our own, and we deal with this special case in ``get_scheme()`` instead. + """ + return ( + "osx_framework_library" in _AVAILABLE_SCHEMES + and not running_under_virtualenv() + and is_osx_framework() + ) + + +def _infer_prefix() -> str: + """Try to find a prefix scheme for the current platform. + + This tries: + + * A special ``osx_framework_library`` for Python distributed by Apple's + Command Line Tools, when not running in a virtual environment. + * Implementation + OS, used by PyPy on Windows (``pypy_nt``). + * Implementation without OS, used by PyPy on POSIX (``pypy``). + * OS + "prefix", used by CPython on POSIX (``posix_prefix``). + * Just the OS name, used by CPython on Windows (``nt``). + + If none of the above works, fall back to ``posix_prefix``. + """ + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("prefix") + if _should_use_osx_framework_prefix(): + return "osx_framework_library" + implementation_suffixed = f"{sys.implementation.name}_{os.name}" + if implementation_suffixed in _AVAILABLE_SCHEMES: + return implementation_suffixed + if sys.implementation.name in _AVAILABLE_SCHEMES: + return sys.implementation.name + suffixed = f"{os.name}_prefix" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + if os.name in _AVAILABLE_SCHEMES: # On Windows, prefx is just called "nt". + return os.name + return "posix_prefix" + + +def _infer_user() -> str: + """Try to find a user scheme for the current platform.""" + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("user") + if is_osx_framework() and not running_under_virtualenv(): + suffixed = "osx_framework_user" + else: + suffixed = f"{os.name}_user" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + if "posix_user" not in _AVAILABLE_SCHEMES: # User scheme unavailable. + raise UserInstallationInvalid() + return "posix_user" + + +def _infer_home() -> str: + """Try to find a home for the current platform.""" + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("home") + suffixed = f"{os.name}_home" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + return "posix_home" + + +# Update these keys if the user sets a custom home. +_HOME_KEYS = [ + "installed_base", + "base", + "installed_platbase", + "platbase", + "prefix", + "exec_prefix", +] +if sysconfig.get_config_var("userbase") is not None: + _HOME_KEYS.append("userbase") + + +def get_scheme( + dist_name: str, + user: bool = False, + home: typing.Optional[str] = None, + root: typing.Optional[str] = None, + isolated: bool = False, + prefix: typing.Optional[str] = None, +) -> Scheme: + """ + Get the "scheme" corresponding to the input parameters. + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme + :param root: root under which other directories are re-based + :param isolated: ignored, but kept for distutils compatibility (where + this controls whether the user-site pydistutils.cfg is honored) + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + if user and prefix: + raise InvalidSchemeCombination("--user", "--prefix") + if home and prefix: + raise InvalidSchemeCombination("--home", "--prefix") + + if home is not None: + scheme_name = _infer_home() + elif user: + scheme_name = _infer_user() + else: + scheme_name = _infer_prefix() + + # Special case: When installing into a custom prefix, use posix_prefix + # instead of osx_framework_library. See _should_use_osx_framework_prefix() + # docstring for details. + if prefix is not None and scheme_name == "osx_framework_library": + scheme_name = "posix_prefix" + + if home is not None: + variables = {k: home for k in _HOME_KEYS} + elif prefix is not None: + variables = {k: prefix for k in _HOME_KEYS} + else: + variables = {} + + paths = sysconfig.get_paths(scheme=scheme_name, vars=variables) + + # Logic here is very arbitrary, we're doing it for compatibility, don't ask. + # 1. Pip historically uses a special header path in virtual environments. + # 2. If the distribution name is not known, distutils uses 'UNKNOWN'. We + # only do the same when not running in a virtual environment because + # pip's historical header path logic (see point 1) did not do this. + if running_under_virtualenv(): + if user: + base = variables.get("userbase", sys.prefix) + else: + base = variables.get("base", sys.prefix) + python_xy = f"python{get_major_minor_version()}" + paths["include"] = os.path.join(base, "include", "site", python_xy) + elif not dist_name: + dist_name = "UNKNOWN" + + scheme = Scheme( + platlib=paths["platlib"], + purelib=paths["purelib"], + headers=os.path.join(paths["include"], dist_name), + scripts=paths["scripts"], + data=paths["data"], + ) + if root is not None: + for key in SCHEME_KEYS: + value = distutils.util.change_root(root, getattr(scheme, key)) + setattr(scheme, key, value) + return scheme + + +def get_bin_prefix() -> str: + # Forcing to use /usr/local/bin for standard macOS framework installs. + if sys.platform[:6] == "darwin" and sys.prefix[:16] == "/System/Library/": + return "/usr/local/bin" + return sysconfig.get_paths()["scripts"] + + +def get_purelib() -> str: + return sysconfig.get_paths()["purelib"] + + +def get_platlib() -> str: + return sysconfig.get_paths()["platlib"] + + +def get_prefixed_libs(prefix: str) -> typing.Tuple[str, str]: + paths = sysconfig.get_paths(vars={"base": prefix, "platbase": prefix}) + return (paths["purelib"], paths["platlib"]) diff --git a/venv/Lib/site-packages/pip/_internal/locations/base.py b/venv/Lib/site-packages/pip/_internal/locations/base.py new file mode 100644 index 00000000..86dad4a3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/base.py @@ -0,0 +1,52 @@ +import functools +import os +import site +import sys +import sysconfig +import typing + +from pip._internal.utils import appdirs +from pip._internal.utils.virtualenv import running_under_virtualenv + +# Application Directories +USER_CACHE_DIR = appdirs.user_cache_dir("pip") + +# FIXME doesn't account for venv linked to global site-packages +site_packages: typing.Optional[str] = sysconfig.get_path("purelib") + + +def get_major_minor_version() -> str: + """ + Return the major-minor version of the current Python as a string, e.g. + "3.7" or "3.10". + """ + return "{}.{}".format(*sys.version_info) + + +def get_src_prefix() -> str: + if running_under_virtualenv(): + src_prefix = os.path.join(sys.prefix, "src") + else: + # FIXME: keep src in cwd for now (it is not a temporary folder) + try: + src_prefix = os.path.join(os.getcwd(), "src") + except OSError: + # In case the current working directory has been renamed or deleted + sys.exit("The folder you are executing pip from can no longer be found.") + + # under macOS + virtualenv sys.prefix is not properly resolved + # it is something like /path/to/python/bin/.. + return os.path.abspath(src_prefix) + + +try: + # Use getusersitepackages if this is present, as it ensures that the + # value is initialised properly. + user_site: typing.Optional[str] = site.getusersitepackages() +except AttributeError: + user_site = site.USER_SITE + + +@functools.lru_cache(maxsize=None) +def is_osx_framework() -> bool: + return bool(sysconfig.get_config_var("PYTHONFRAMEWORK")) diff --git a/venv/Lib/site-packages/pip/_internal/main.py b/venv/Lib/site-packages/pip/_internal/main.py new file mode 100644 index 00000000..33c6d24c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/main.py @@ -0,0 +1,12 @@ +from typing import List, Optional + + +def main(args: Optional[List[str]] = None) -> int: + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/__init__.py b/venv/Lib/site-packages/pip/_internal/metadata/__init__.py new file mode 100644 index 00000000..f4f2a4f6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/__init__.py @@ -0,0 +1,51 @@ +from typing import List, Optional + +from .base import BaseDistribution, BaseEnvironment, FilesystemWheel, MemoryWheel, Wheel + +__all__ = [ + "BaseDistribution", + "BaseEnvironment", + "FilesystemWheel", + "MemoryWheel", + "Wheel", + "get_default_environment", + "get_environment", + "get_wheel_distribution", +] + + +def get_default_environment() -> BaseEnvironment: + """Get the default representation for the current environment. + + This returns an Environment instance from the chosen backend. The default + Environment instance should be built from ``sys.path`` and may use caching + to share instance state accorss calls. + """ + from .pkg_resources import Environment + + return Environment.default() + + +def get_environment(paths: Optional[List[str]]) -> BaseEnvironment: + """Get a representation of the environment specified by ``paths``. + + This returns an Environment instance from the chosen backend based on the + given import paths. The backend must build a fresh instance representing + the state of installed distributions when this function is called. + """ + from .pkg_resources import Environment + + return Environment.from_paths(paths) + + +def get_wheel_distribution(wheel: Wheel, canonical_name: str) -> BaseDistribution: + """Get the representation of the specified wheel's distribution metadata. + + This returns a Distribution instance from the chosen backend based on + the given wheel's ``.dist-info`` directory. + + :param canonical_name: Normalized project name of the given wheel. + """ + from .pkg_resources import Distribution + + return Distribution.from_wheel(wheel, canonical_name) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/base.py b/venv/Lib/site-packages/pip/_internal/metadata/base.py new file mode 100644 index 00000000..4788360a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/base.py @@ -0,0 +1,330 @@ +import email.message +import json +import logging +import re +import zipfile +from typing import ( + IO, + TYPE_CHECKING, + Collection, + Container, + Iterable, + Iterator, + List, + Optional, + Union, +) + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.specifiers import InvalidSpecifier, SpecifierSet +from pip._vendor.packaging.utils import NormalizedName +from pip._vendor.packaging.version import LegacyVersion, Version + +from pip._internal.models.direct_url import ( + DIRECT_URL_METADATA_NAME, + DirectUrl, + DirectUrlValidationError, +) +from pip._internal.utils.compat import stdlib_pkgs # TODO: Move definition here. +from pip._internal.utils.egg_link import egg_link_path_from_sys_path +from pip._internal.utils.urls import url_to_path + +if TYPE_CHECKING: + from typing import Protocol +else: + Protocol = object + +DistributionVersion = Union[LegacyVersion, Version] + +logger = logging.getLogger(__name__) + + +class BaseEntryPoint(Protocol): + @property + def name(self) -> str: + raise NotImplementedError() + + @property + def value(self) -> str: + raise NotImplementedError() + + @property + def group(self) -> str: + raise NotImplementedError() + + +class BaseDistribution(Protocol): + def __repr__(self) -> str: + return f"{self.raw_name} {self.version} ({self.location})" + + def __str__(self) -> str: + return f"{self.raw_name} {self.version}" + + @property + def location(self) -> Optional[str]: + """Where the distribution is loaded from. + + A string value is not necessarily a filesystem path, since distributions + can be loaded from other sources, e.g. arbitrary zip archives. ``None`` + means the distribution is created in-memory. + + Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If + this is a symbolic link, we want to preserve the relative path between + it and files in the distribution. + """ + raise NotImplementedError() + + @property + def editable_project_location(self) -> Optional[str]: + """The project location for editable distributions. + + This is the directory where pyproject.toml or setup.py is located. + None if the distribution is not installed in editable mode. + """ + # TODO: this property is relatively costly to compute, memoize it ? + direct_url = self.direct_url + if direct_url: + if direct_url.is_local_editable(): + return url_to_path(direct_url.url) + else: + # Search for an .egg-link file by walking sys.path, as it was + # done before by dist_is_editable(). + egg_link_path = egg_link_path_from_sys_path(self.raw_name) + if egg_link_path: + # TODO: get project location from second line of egg_link file + # (https://github.com/pypa/pip/issues/10243) + return self.location + return None + + @property + def info_directory(self) -> Optional[str]: + """Location of the .[egg|dist]-info directory. + + Similarly to ``location``, a string value is not necessarily a + filesystem path. ``None`` means the distribution is created in-memory. + + For a modern .dist-info installation on disk, this should be something + like ``{location}/{raw_name}-{version}.dist-info``. + + Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If + this is a symbolic link, we want to preserve the relative path between + it and other files in the distribution. + """ + raise NotImplementedError() + + @property + def canonical_name(self) -> NormalizedName: + raise NotImplementedError() + + @property + def version(self) -> DistributionVersion: + raise NotImplementedError() + + @property + def direct_url(self) -> Optional[DirectUrl]: + """Obtain a DirectUrl from this distribution. + + Returns None if the distribution has no `direct_url.json` metadata, + or if `direct_url.json` is invalid. + """ + try: + content = self.read_text(DIRECT_URL_METADATA_NAME) + except FileNotFoundError: + return None + try: + return DirectUrl.from_json(content) + except ( + UnicodeDecodeError, + json.JSONDecodeError, + DirectUrlValidationError, + ) as e: + logger.warning( + "Error parsing %s for %s: %s", + DIRECT_URL_METADATA_NAME, + self.canonical_name, + e, + ) + return None + + @property + def installer(self) -> str: + raise NotImplementedError() + + @property + def editable(self) -> bool: + return bool(self.editable_project_location) + + @property + def local(self) -> bool: + raise NotImplementedError() + + @property + def in_usersite(self) -> bool: + raise NotImplementedError() + + @property + def in_site_packages(self) -> bool: + raise NotImplementedError() + + def read_text(self, name: str) -> str: + """Read a file in the .dist-info (or .egg-info) directory. + + Should raise ``FileNotFoundError`` if ``name`` does not exist in the + metadata directory. + """ + raise NotImplementedError() + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + raise NotImplementedError() + + @property + def metadata(self) -> email.message.Message: + """Metadata of distribution parsed from e.g. METADATA or PKG-INFO.""" + raise NotImplementedError() + + @property + def metadata_version(self) -> Optional[str]: + """Value of "Metadata-Version:" in distribution metadata, if available.""" + return self.metadata.get("Metadata-Version") + + @property + def raw_name(self) -> str: + """Value of "Name:" in distribution metadata.""" + # The metadata should NEVER be missing the Name: key, but if it somehow + # does, fall back to the known canonical name. + return self.metadata.get("Name", self.canonical_name) + + @property + def requires_python(self) -> SpecifierSet: + """Value of "Requires-Python:" in distribution metadata. + + If the key does not exist or contains an invalid value, an empty + SpecifierSet should be returned. + """ + value = self.metadata.get("Requires-Python") + if value is None: + return SpecifierSet() + try: + # Convert to str to satisfy the type checker; this can be a Header object. + spec = SpecifierSet(str(value)) + except InvalidSpecifier as e: + message = "Package %r has an invalid Requires-Python: %s" + logger.warning(message, self.raw_name, e) + return SpecifierSet() + return spec + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + """Dependencies of this distribution. + + For modern .dist-info distributions, this is the collection of + "Requires-Dist:" entries in distribution metadata. + """ + raise NotImplementedError() + + def iter_provided_extras(self) -> Iterable[str]: + """Extras provided by this distribution. + + For modern .dist-info distributions, this is the collection of + "Provides-Extra:" entries in distribution metadata. + """ + raise NotImplementedError() + + +class BaseEnvironment: + """An environment containing distributions to introspect.""" + + @classmethod + def default(cls) -> "BaseEnvironment": + raise NotImplementedError() + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> "BaseEnvironment": + raise NotImplementedError() + + def get_distribution(self, name: str) -> Optional["BaseDistribution"]: + """Given a requirement name, return the installed distributions.""" + raise NotImplementedError() + + def _iter_distributions(self) -> Iterator["BaseDistribution"]: + """Iterate through installed distributions. + + This function should be implemented by subclass, but never called + directly. Use the public ``iter_distribution()`` instead, which + implements additional logic to make sure the distributions are valid. + """ + raise NotImplementedError() + + def iter_distributions(self) -> Iterator["BaseDistribution"]: + """Iterate through installed distributions.""" + for dist in self._iter_distributions(): + # Make sure the distribution actually comes from a valid Python + # packaging distribution. Pip's AdjacentTempDirectory leaves folders + # e.g. ``~atplotlib.dist-info`` if cleanup was interrupted. The + # valid project name pattern is taken from PEP 508. + project_name_valid = re.match( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", + dist.canonical_name, + flags=re.IGNORECASE, + ) + if not project_name_valid: + logger.warning( + "Ignoring invalid distribution %s (%s)", + dist.canonical_name, + dist.location, + ) + continue + yield dist + + def iter_installed_distributions( + self, + local_only: bool = True, + skip: Container[str] = stdlib_pkgs, + include_editables: bool = True, + editables_only: bool = False, + user_only: bool = False, + ) -> Iterator[BaseDistribution]: + """Return a list of installed distributions. + + :param local_only: If True (default), only return installations + local to the current virtualenv, if in a virtualenv. + :param skip: An iterable of canonicalized project names to ignore; + defaults to ``stdlib_pkgs``. + :param include_editables: If False, don't report editables. + :param editables_only: If True, only report editables. + :param user_only: If True, only report installations in the user + site directory. + """ + it = self.iter_distributions() + if local_only: + it = (d for d in it if d.local) + if not include_editables: + it = (d for d in it if not d.editable) + if editables_only: + it = (d for d in it if d.editable) + if user_only: + it = (d for d in it if d.in_usersite) + return (d for d in it if d.canonical_name not in skip) + + +class Wheel(Protocol): + location: str + + def as_zipfile(self) -> zipfile.ZipFile: + raise NotImplementedError() + + +class FilesystemWheel(Wheel): + def __init__(self, location: str) -> None: + self.location = location + + def as_zipfile(self) -> zipfile.ZipFile: + return zipfile.ZipFile(self.location, allowZip64=True) + + +class MemoryWheel(Wheel): + def __init__(self, location: str, stream: IO[bytes]) -> None: + self.location = location + self.stream = stream + + def as_zipfile(self) -> zipfile.ZipFile: + return zipfile.ZipFile(self.stream, allowZip64=True) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py b/venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py new file mode 100644 index 00000000..e8a8a380 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py @@ -0,0 +1,146 @@ +import email.message +import logging +from typing import Collection, Iterable, Iterator, List, NamedTuple, Optional + +from pip._vendor import pkg_resources +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.utils import misc # TODO: Move definition here. +from pip._internal.utils.packaging import get_installer, get_metadata +from pip._internal.utils.wheel import pkg_resources_distribution_for_wheel + +from .base import ( + BaseDistribution, + BaseEntryPoint, + BaseEnvironment, + DistributionVersion, + Wheel, +) + +logger = logging.getLogger(__name__) + + +class EntryPoint(NamedTuple): + name: str + value: str + group: str + + +class Distribution(BaseDistribution): + def __init__(self, dist: pkg_resources.Distribution) -> None: + self._dist = dist + + @classmethod + def from_wheel(cls, wheel: Wheel, name: str) -> "Distribution": + with wheel.as_zipfile() as zf: + dist = pkg_resources_distribution_for_wheel(zf, name, wheel.location) + return cls(dist) + + @property + def location(self) -> Optional[str]: + return self._dist.location + + @property + def info_directory(self) -> Optional[str]: + return self._dist.egg_info + + @property + def canonical_name(self) -> NormalizedName: + return canonicalize_name(self._dist.project_name) + + @property + def version(self) -> DistributionVersion: + return parse_version(self._dist.version) + + @property + def installer(self) -> str: + return get_installer(self._dist) + + @property + def local(self) -> bool: + return misc.dist_is_local(self._dist) + + @property + def in_usersite(self) -> bool: + return misc.dist_in_usersite(self._dist) + + @property + def in_site_packages(self) -> bool: + return misc.dist_in_site_packages(self._dist) + + def read_text(self, name: str) -> str: + if not self._dist.has_metadata(name): + raise FileNotFoundError(name) + return self._dist.get_metadata(name) + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + for group, entries in self._dist.get_entry_map().items(): + for name, entry_point in entries.items(): + name, _, value = str(entry_point).partition("=") + yield EntryPoint(name=name.strip(), value=value.strip(), group=group) + + @property + def metadata(self) -> email.message.Message: + return get_metadata(self._dist) + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + if extras: # pkg_resources raises on invalid extras, so we sanitize. + extras = frozenset(extras).intersection(self._dist.extras) + return self._dist.requires(extras) + + def iter_provided_extras(self) -> Iterable[str]: + return self._dist.extras + + +class Environment(BaseEnvironment): + def __init__(self, ws: pkg_resources.WorkingSet) -> None: + self._ws = ws + + @classmethod + def default(cls) -> BaseEnvironment: + return cls(pkg_resources.working_set) + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment: + return cls(pkg_resources.WorkingSet(paths)) + + def _search_distribution(self, name: str) -> Optional[BaseDistribution]: + """Find a distribution matching the ``name`` in the environment. + + This searches from *all* distributions available in the environment, to + match the behavior of ``pkg_resources.get_distribution()``. + """ + canonical_name = canonicalize_name(name) + for dist in self.iter_distributions(): + if dist.canonical_name == canonical_name: + return dist + return None + + def get_distribution(self, name: str) -> Optional[BaseDistribution]: + + # Search the distribution by looking through the working set. + dist = self._search_distribution(name) + if dist: + return dist + + # If distribution could not be found, call working_set.require to + # update the working set, and try to find the distribution again. + # This might happen for e.g. when you install a package twice, once + # using setup.py develop and again using setup.py install. Now when + # running pip uninstall twice, the package gets removed from the + # working set in the first uninstall, so we have to populate the + # working set again so that pip knows about it and the packages gets + # picked up and is successfully uninstalled the second time too. + try: + # We didn't pass in any version specifiers, so this can never + # raise pkg_resources.VersionConflict. + self._ws.require(name) + except pkg_resources.DistributionNotFound: + return None + return self._search_distribution(name) + + def _iter_distributions(self) -> Iterator[BaseDistribution]: + for dist in self._ws: + yield Distribution(dist) diff --git a/venv/Lib/site-packages/pip/_internal/models/__init__.py b/venv/Lib/site-packages/pip/_internal/models/__init__.py new file mode 100644 index 00000000..7855226e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/__init__.py @@ -0,0 +1,2 @@ +"""A package that contains models that represent entities. +""" diff --git a/venv/Lib/site-packages/pip/_internal/models/candidate.py b/venv/Lib/site-packages/pip/_internal/models/candidate.py new file mode 100644 index 00000000..a4963aec --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/candidate.py @@ -0,0 +1,34 @@ +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.models.link import Link +from pip._internal.utils.models import KeyBasedCompareMixin + + +class InstallationCandidate(KeyBasedCompareMixin): + """Represents a potential "candidate" for installation.""" + + __slots__ = ["name", "version", "link"] + + def __init__(self, name: str, version: str, link: Link) -> None: + self.name = name + self.version = parse_version(version) + self.link = link + + super().__init__( + key=(self.name, self.version, self.link), + defining_class=InstallationCandidate, + ) + + def __repr__(self) -> str: + return "".format( + self.name, + self.version, + self.link, + ) + + def __str__(self) -> str: + return "{!r} candidate (version {} at {})".format( + self.name, + self.version, + self.link, + ) diff --git a/venv/Lib/site-packages/pip/_internal/models/direct_url.py b/venv/Lib/site-packages/pip/_internal/models/direct_url.py new file mode 100644 index 00000000..92060d45 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/direct_url.py @@ -0,0 +1,220 @@ +""" PEP 610 """ +import json +import re +import urllib.parse +from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union + +__all__ = [ + "DirectUrl", + "DirectUrlValidationError", + "DirInfo", + "ArchiveInfo", + "VcsInfo", +] + +T = TypeVar("T") + +DIRECT_URL_METADATA_NAME = "direct_url.json" +ENV_VAR_RE = re.compile(r"^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$") + + +class DirectUrlValidationError(Exception): + pass + + +def _get( + d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None +) -> Optional[T]: + """Get value from dictionary and verify expected type.""" + if key not in d: + return default + value = d[key] + if not isinstance(value, expected_type): + raise DirectUrlValidationError( + "{!r} has unexpected type for {} (expected {})".format( + value, key, expected_type + ) + ) + return value + + +def _get_required( + d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None +) -> T: + value = _get(d, expected_type, key, default) + if value is None: + raise DirectUrlValidationError(f"{key} must have a value") + return value + + +def _exactly_one_of(infos: Iterable[Optional["InfoType"]]) -> "InfoType": + infos = [info for info in infos if info is not None] + if not infos: + raise DirectUrlValidationError( + "missing one of archive_info, dir_info, vcs_info" + ) + if len(infos) > 1: + raise DirectUrlValidationError( + "more than one of archive_info, dir_info, vcs_info" + ) + assert infos[0] is not None + return infos[0] + + +def _filter_none(**kwargs: Any) -> Dict[str, Any]: + """Make dict excluding None values.""" + return {k: v for k, v in kwargs.items() if v is not None} + + +class VcsInfo: + name = "vcs_info" + + def __init__( + self, + vcs: str, + commit_id: str, + requested_revision: Optional[str] = None, + resolved_revision: Optional[str] = None, + resolved_revision_type: Optional[str] = None, + ) -> None: + self.vcs = vcs + self.requested_revision = requested_revision + self.commit_id = commit_id + self.resolved_revision = resolved_revision + self.resolved_revision_type = resolved_revision_type + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["VcsInfo"]: + if d is None: + return None + return cls( + vcs=_get_required(d, str, "vcs"), + commit_id=_get_required(d, str, "commit_id"), + requested_revision=_get(d, str, "requested_revision"), + resolved_revision=_get(d, str, "resolved_revision"), + resolved_revision_type=_get(d, str, "resolved_revision_type"), + ) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none( + vcs=self.vcs, + requested_revision=self.requested_revision, + commit_id=self.commit_id, + resolved_revision=self.resolved_revision, + resolved_revision_type=self.resolved_revision_type, + ) + + +class ArchiveInfo: + name = "archive_info" + + def __init__( + self, + hash: Optional[str] = None, + ) -> None: + self.hash = hash + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["ArchiveInfo"]: + if d is None: + return None + return cls(hash=_get(d, str, "hash")) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none(hash=self.hash) + + +class DirInfo: + name = "dir_info" + + def __init__( + self, + editable: bool = False, + ) -> None: + self.editable = editable + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["DirInfo"]: + if d is None: + return None + return cls(editable=_get_required(d, bool, "editable", default=False)) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none(editable=self.editable or None) + + +InfoType = Union[ArchiveInfo, DirInfo, VcsInfo] + + +class DirectUrl: + def __init__( + self, + url: str, + info: InfoType, + subdirectory: Optional[str] = None, + ) -> None: + self.url = url + self.info = info + self.subdirectory = subdirectory + + def _remove_auth_from_netloc(self, netloc: str) -> str: + if "@" not in netloc: + return netloc + user_pass, netloc_no_user_pass = netloc.split("@", 1) + if ( + isinstance(self.info, VcsInfo) + and self.info.vcs == "git" + and user_pass == "git" + ): + return netloc + if ENV_VAR_RE.match(user_pass): + return netloc + return netloc_no_user_pass + + @property + def redacted_url(self) -> str: + """url with user:password part removed unless it is formed with + environment variables as specified in PEP 610, or it is ``git`` + in the case of a git URL. + """ + purl = urllib.parse.urlsplit(self.url) + netloc = self._remove_auth_from_netloc(purl.netloc) + surl = urllib.parse.urlunsplit( + (purl.scheme, netloc, purl.path, purl.query, purl.fragment) + ) + return surl + + def validate(self) -> None: + self.from_dict(self.to_dict()) + + @classmethod + def from_dict(cls, d: Dict[str, Any]) -> "DirectUrl": + return DirectUrl( + url=_get_required(d, str, "url"), + subdirectory=_get(d, str, "subdirectory"), + info=_exactly_one_of( + [ + ArchiveInfo._from_dict(_get(d, dict, "archive_info")), + DirInfo._from_dict(_get(d, dict, "dir_info")), + VcsInfo._from_dict(_get(d, dict, "vcs_info")), + ] + ), + ) + + def to_dict(self) -> Dict[str, Any]: + res = _filter_none( + url=self.redacted_url, + subdirectory=self.subdirectory, + ) + res[self.info.name] = self.info._to_dict() + return res + + @classmethod + def from_json(cls, s: str) -> "DirectUrl": + return cls.from_dict(json.loads(s)) + + def to_json(self) -> str: + return json.dumps(self.to_dict(), sort_keys=True) + + def is_local_editable(self) -> bool: + return isinstance(self.info, DirInfo) and self.info.editable diff --git a/venv/Lib/site-packages/pip/_internal/models/format_control.py b/venv/Lib/site-packages/pip/_internal/models/format_control.py new file mode 100644 index 00000000..db3995ea --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/format_control.py @@ -0,0 +1,80 @@ +from typing import FrozenSet, Optional, Set + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import CommandError + + +class FormatControl: + """Helper for managing formats from which a package can be installed.""" + + __slots__ = ["no_binary", "only_binary"] + + def __init__( + self, + no_binary: Optional[Set[str]] = None, + only_binary: Optional[Set[str]] = None, + ) -> None: + if no_binary is None: + no_binary = set() + if only_binary is None: + only_binary = set() + + self.no_binary = no_binary + self.only_binary = only_binary + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return NotImplemented + + if self.__slots__ != other.__slots__: + return False + + return all(getattr(self, k) == getattr(other, k) for k in self.__slots__) + + def __repr__(self) -> str: + return "{}({}, {})".format( + self.__class__.__name__, self.no_binary, self.only_binary + ) + + @staticmethod + def handle_mutual_excludes(value: str, target: Set[str], other: Set[str]) -> None: + if value.startswith("-"): + raise CommandError( + "--no-binary / --only-binary option requires 1 argument." + ) + new = value.split(",") + while ":all:" in new: + other.clear() + target.clear() + target.add(":all:") + del new[: new.index(":all:") + 1] + # Without a none, we want to discard everything as :all: covers it + if ":none:" not in new: + return + for name in new: + if name == ":none:": + target.clear() + continue + name = canonicalize_name(name) + other.discard(name) + target.add(name) + + def get_allowed_formats(self, canonical_name: str) -> FrozenSet[str]: + result = {"binary", "source"} + if canonical_name in self.only_binary: + result.discard("source") + elif canonical_name in self.no_binary: + result.discard("binary") + elif ":all:" in self.only_binary: + result.discard("source") + elif ":all:" in self.no_binary: + result.discard("binary") + return frozenset(result) + + def disallow_binaries(self) -> None: + self.handle_mutual_excludes( + ":all:", + self.no_binary, + self.only_binary, + ) diff --git a/venv/Lib/site-packages/pip/_internal/models/index.py b/venv/Lib/site-packages/pip/_internal/models/index.py new file mode 100644 index 00000000..b94c3251 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/index.py @@ -0,0 +1,28 @@ +import urllib.parse + + +class PackageIndex: + """Represents a Package Index and provides easier access to endpoints""" + + __slots__ = ["url", "netloc", "simple_url", "pypi_url", "file_storage_domain"] + + def __init__(self, url: str, file_storage_domain: str) -> None: + super().__init__() + self.url = url + self.netloc = urllib.parse.urlsplit(url).netloc + self.simple_url = self._url_for_path("simple") + self.pypi_url = self._url_for_path("pypi") + + # This is part of a temporary hack used to block installs of PyPI + # packages which depend on external urls only necessary until PyPI can + # block such packages themselves + self.file_storage_domain = file_storage_domain + + def _url_for_path(self, path: str) -> str: + return urllib.parse.urljoin(self.url, path) + + +PyPI = PackageIndex("https://pypi.org/", file_storage_domain="files.pythonhosted.org") +TestPyPI = PackageIndex( + "https://test.pypi.org/", file_storage_domain="test-files.pythonhosted.org" +) diff --git a/venv/Lib/site-packages/pip/_internal/models/link.py b/venv/Lib/site-packages/pip/_internal/models/link.py new file mode 100644 index 00000000..6069b278 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/link.py @@ -0,0 +1,288 @@ +import functools +import logging +import os +import posixpath +import re +import urllib.parse +from typing import TYPE_CHECKING, Dict, List, NamedTuple, Optional, Tuple, Union + +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.misc import ( + redact_auth_from_url, + split_auth_from_netloc, + splitext, +) +from pip._internal.utils.models import KeyBasedCompareMixin +from pip._internal.utils.urls import path_to_url, url_to_path + +if TYPE_CHECKING: + from pip._internal.index.collector import HTMLPage + +logger = logging.getLogger(__name__) + + +_SUPPORTED_HASHES = ("sha1", "sha224", "sha384", "sha256", "sha512", "md5") + + +class Link(KeyBasedCompareMixin): + """Represents a parsed link from a Package Index's simple URL""" + + __slots__ = [ + "_parsed_url", + "_url", + "comes_from", + "requires_python", + "yanked_reason", + "cache_link_parsing", + ] + + def __init__( + self, + url: str, + comes_from: Optional[Union[str, "HTMLPage"]] = None, + requires_python: Optional[str] = None, + yanked_reason: Optional[str] = None, + cache_link_parsing: bool = True, + ) -> None: + """ + :param url: url of the resource pointed to (href of the link) + :param comes_from: instance of HTMLPage where the link was found, + or string. + :param requires_python: String containing the `Requires-Python` + metadata field, specified in PEP 345. This may be specified by + a data-requires-python attribute in the HTML link tag, as + described in PEP 503. + :param yanked_reason: the reason the file has been yanked, if the + file has been yanked, or None if the file hasn't been yanked. + This is the value of the "data-yanked" attribute, if present, in + a simple repository HTML link. If the file has been yanked but + no reason was provided, this should be the empty string. See + PEP 592 for more information and the specification. + :param cache_link_parsing: A flag that is used elsewhere to determine + whether resources retrieved from this link + should be cached. PyPI index urls should + generally have this set to False, for + example. + """ + + # url can be a UNC windows share + if url.startswith("\\\\"): + url = path_to_url(url) + + self._parsed_url = urllib.parse.urlsplit(url) + # Store the url as a private attribute to prevent accidentally + # trying to set a new value. + self._url = url + + self.comes_from = comes_from + self.requires_python = requires_python if requires_python else None + self.yanked_reason = yanked_reason + + super().__init__(key=url, defining_class=Link) + + self.cache_link_parsing = cache_link_parsing + + def __str__(self) -> str: + if self.requires_python: + rp = f" (requires-python:{self.requires_python})" + else: + rp = "" + if self.comes_from: + return "{} (from {}){}".format( + redact_auth_from_url(self._url), self.comes_from, rp + ) + else: + return redact_auth_from_url(str(self._url)) + + def __repr__(self) -> str: + return f"" + + @property + def url(self) -> str: + return self._url + + @property + def filename(self) -> str: + path = self.path.rstrip("/") + name = posixpath.basename(path) + if not name: + # Make sure we don't leak auth information if the netloc + # includes a username and password. + netloc, user_pass = split_auth_from_netloc(self.netloc) + return netloc + + name = urllib.parse.unquote(name) + assert name, f"URL {self._url!r} produced no filename" + return name + + @property + def file_path(self) -> str: + return url_to_path(self.url) + + @property + def scheme(self) -> str: + return self._parsed_url.scheme + + @property + def netloc(self) -> str: + """ + This can contain auth information. + """ + return self._parsed_url.netloc + + @property + def path(self) -> str: + return urllib.parse.unquote(self._parsed_url.path) + + def splitext(self) -> Tuple[str, str]: + return splitext(posixpath.basename(self.path.rstrip("/"))) + + @property + def ext(self) -> str: + return self.splitext()[1] + + @property + def url_without_fragment(self) -> str: + scheme, netloc, path, query, fragment = self._parsed_url + return urllib.parse.urlunsplit((scheme, netloc, path, query, "")) + + _egg_fragment_re = re.compile(r"[#&]egg=([^&]*)") + + @property + def egg_fragment(self) -> Optional[str]: + match = self._egg_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + _subdirectory_fragment_re = re.compile(r"[#&]subdirectory=([^&]*)") + + @property + def subdirectory_fragment(self) -> Optional[str]: + match = self._subdirectory_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + _hash_re = re.compile( + r"({choices})=([a-f0-9]+)".format(choices="|".join(_SUPPORTED_HASHES)) + ) + + @property + def hash(self) -> Optional[str]: + match = self._hash_re.search(self._url) + if match: + return match.group(2) + return None + + @property + def hash_name(self) -> Optional[str]: + match = self._hash_re.search(self._url) + if match: + return match.group(1) + return None + + @property + def show_url(self) -> str: + return posixpath.basename(self._url.split("#", 1)[0].split("?", 1)[0]) + + @property + def is_file(self) -> bool: + return self.scheme == "file" + + def is_existing_dir(self) -> bool: + return self.is_file and os.path.isdir(self.file_path) + + @property + def is_wheel(self) -> bool: + return self.ext == WHEEL_EXTENSION + + @property + def is_vcs(self) -> bool: + from pip._internal.vcs import vcs + + return self.scheme in vcs.all_schemes + + @property + def is_yanked(self) -> bool: + return self.yanked_reason is not None + + @property + def has_hash(self) -> bool: + return self.hash_name is not None + + def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool: + """ + Return True if the link has a hash and it is allowed. + """ + if hashes is None or not self.has_hash: + return False + # Assert non-None so mypy knows self.hash_name and self.hash are str. + assert self.hash_name is not None + assert self.hash is not None + + return hashes.is_hash_allowed(self.hash_name, hex_digest=self.hash) + + +class _CleanResult(NamedTuple): + """Convert link for equivalency check. + + This is used in the resolver to check whether two URL-specified requirements + likely point to the same distribution and can be considered equivalent. This + equivalency logic avoids comparing URLs literally, which can be too strict + (e.g. "a=1&b=2" vs "b=2&a=1") and produce conflicts unexpecting to users. + + Currently this does three things: + + 1. Drop the basic auth part. This is technically wrong since a server can + serve different content based on auth, but if it does that, it is even + impossible to guarantee two URLs without auth are equivalent, since + the user can input different auth information when prompted. So the + practical solution is to assume the auth doesn't affect the response. + 2. Parse the query to avoid the ordering issue. Note that ordering under the + same key in the query are NOT cleaned; i.e. "a=1&a=2" and "a=2&a=1" are + still considered different. + 3. Explicitly drop most of the fragment part, except ``subdirectory=`` and + hash values, since it should have no impact the downloaded content. Note + that this drops the "egg=" part historically used to denote the requested + project (and extras), which is wrong in the strictest sense, but too many + people are supplying it inconsistently to cause superfluous resolution + conflicts, so we choose to also ignore them. + """ + + parsed: urllib.parse.SplitResult + query: Dict[str, List[str]] + subdirectory: str + hashes: Dict[str, str] + + +def _clean_link(link: Link) -> _CleanResult: + parsed = link._parsed_url + netloc = parsed.netloc.rsplit("@", 1)[-1] + # According to RFC 8089, an empty host in file: means localhost. + if parsed.scheme == "file" and not netloc: + netloc = "localhost" + fragment = urllib.parse.parse_qs(parsed.fragment) + if "egg" in fragment: + logger.debug("Ignoring egg= fragment in %s", link) + try: + # If there are multiple subdirectory values, use the first one. + # This matches the behavior of Link.subdirectory_fragment. + subdirectory = fragment["subdirectory"][0] + except (IndexError, KeyError): + subdirectory = "" + # If there are multiple hash values under the same algorithm, use the + # first one. This matches the behavior of Link.hash_value. + hashes = {k: fragment[k][0] for k in _SUPPORTED_HASHES if k in fragment} + return _CleanResult( + parsed=parsed._replace(netloc=netloc, query="", fragment=""), + query=urllib.parse.parse_qs(parsed.query), + subdirectory=subdirectory, + hashes=hashes, + ) + + +@functools.lru_cache(maxsize=None) +def links_equivalent(link1: Link, link2: Link) -> bool: + return _clean_link(link1) == _clean_link(link2) diff --git a/venv/Lib/site-packages/pip/_internal/models/scheme.py b/venv/Lib/site-packages/pip/_internal/models/scheme.py new file mode 100644 index 00000000..f51190ac --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/scheme.py @@ -0,0 +1,31 @@ +""" +For types associated with installation schemes. + +For a general overview of available schemes and their context, see +https://docs.python.org/3/install/index.html#alternate-installation. +""" + + +SCHEME_KEYS = ["platlib", "purelib", "headers", "scripts", "data"] + + +class Scheme: + """A Scheme holds paths which are used as the base directories for + artifacts associated with a Python package. + """ + + __slots__ = SCHEME_KEYS + + def __init__( + self, + platlib: str, + purelib: str, + headers: str, + scripts: str, + data: str, + ) -> None: + self.platlib = platlib + self.purelib = purelib + self.headers = headers + self.scripts = scripts + self.data = data diff --git a/venv/Lib/site-packages/pip/_internal/models/search_scope.py b/venv/Lib/site-packages/pip/_internal/models/search_scope.py new file mode 100644 index 00000000..e4e54c2f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/search_scope.py @@ -0,0 +1,129 @@ +import itertools +import logging +import os +import posixpath +import urllib.parse +from typing import List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.models.index import PyPI +from pip._internal.utils.compat import has_tls +from pip._internal.utils.misc import normalize_path, redact_auth_from_url + +logger = logging.getLogger(__name__) + + +class SearchScope: + + """ + Encapsulates the locations that pip is configured to search. + """ + + __slots__ = ["find_links", "index_urls"] + + @classmethod + def create( + cls, + find_links: List[str], + index_urls: List[str], + ) -> "SearchScope": + """ + Create a SearchScope object after normalizing the `find_links`. + """ + # Build find_links. If an argument starts with ~, it may be + # a local file relative to a home directory. So try normalizing + # it and if it exists, use the normalized version. + # This is deliberately conservative - it might be fine just to + # blindly normalize anything starting with a ~... + built_find_links: List[str] = [] + for link in find_links: + if link.startswith("~"): + new_link = normalize_path(link) + if os.path.exists(new_link): + link = new_link + built_find_links.append(link) + + # If we don't have TLS enabled, then WARN if anyplace we're looking + # relies on TLS. + if not has_tls(): + for link in itertools.chain(index_urls, built_find_links): + parsed = urllib.parse.urlparse(link) + if parsed.scheme == "https": + logger.warning( + "pip is configured with locations that require " + "TLS/SSL, however the ssl module in Python is not " + "available." + ) + break + + return cls( + find_links=built_find_links, + index_urls=index_urls, + ) + + def __init__( + self, + find_links: List[str], + index_urls: List[str], + ) -> None: + self.find_links = find_links + self.index_urls = index_urls + + def get_formatted_locations(self) -> str: + lines = [] + redacted_index_urls = [] + if self.index_urls and self.index_urls != [PyPI.simple_url]: + for url in self.index_urls: + + redacted_index_url = redact_auth_from_url(url) + + # Parse the URL + purl = urllib.parse.urlsplit(redacted_index_url) + + # URL is generally invalid if scheme and netloc is missing + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not purl.scheme and not purl.netloc: + logger.warning( + 'The index url "%s" seems invalid, please provide a scheme.', + redacted_index_url, + ) + + redacted_index_urls.append(redacted_index_url) + + lines.append( + "Looking in indexes: {}".format(", ".join(redacted_index_urls)) + ) + + if self.find_links: + lines.append( + "Looking in links: {}".format( + ", ".join(redact_auth_from_url(url) for url in self.find_links) + ) + ) + return "\n".join(lines) + + def get_index_urls_locations(self, project_name: str) -> List[str]: + """Returns the locations found via self.index_urls + + Checks the url_name on the main (first in the list) index and + use this url_name to produce all locations + """ + + def mkurl_pypi_url(url: str) -> str: + loc = posixpath.join( + url, urllib.parse.quote(canonicalize_name(project_name)) + ) + # For maximum compatibility with easy_install, ensure the path + # ends in a trailing slash. Although this isn't in the spec + # (and PyPI can handle it without the slash) some other index + # implementations might break if they relied on easy_install's + # behavior. + if not loc.endswith("/"): + loc = loc + "/" + return loc + + return [mkurl_pypi_url(url) for url in self.index_urls] diff --git a/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py b/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py new file mode 100644 index 00000000..977bc4ca --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py @@ -0,0 +1,51 @@ +from typing import Optional + +from pip._internal.models.format_control import FormatControl + + +class SelectionPreferences: + """ + Encapsulates the candidate selection preferences for downloading + and installing files. + """ + + __slots__ = [ + "allow_yanked", + "allow_all_prereleases", + "format_control", + "prefer_binary", + "ignore_requires_python", + ] + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + allow_yanked: bool, + allow_all_prereleases: bool = False, + format_control: Optional[FormatControl] = None, + prefer_binary: bool = False, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """Create a SelectionPreferences object. + + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param format_control: A FormatControl object or None. Used to control + the selection of source packages / binary packages when consulting + the index and links. + :param prefer_binary: Whether to prefer an old, but valid, binary + dist over a new source dist. + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self.allow_yanked = allow_yanked + self.allow_all_prereleases = allow_all_prereleases + self.format_control = format_control + self.prefer_binary = prefer_binary + self.ignore_requires_python = ignore_requires_python diff --git a/venv/Lib/site-packages/pip/_internal/models/target_python.py b/venv/Lib/site-packages/pip/_internal/models/target_python.py new file mode 100644 index 00000000..744bd7ef --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/target_python.py @@ -0,0 +1,110 @@ +import sys +from typing import List, Optional, Tuple + +from pip._vendor.packaging.tags import Tag + +from pip._internal.utils.compatibility_tags import get_supported, version_info_to_nodot +from pip._internal.utils.misc import normalize_version_info + + +class TargetPython: + + """ + Encapsulates the properties of a Python interpreter one is targeting + for a package install, download, etc. + """ + + __slots__ = [ + "_given_py_version_info", + "abis", + "implementation", + "platforms", + "py_version", + "py_version_info", + "_valid_tags", + ] + + def __init__( + self, + platforms: Optional[List[str]] = None, + py_version_info: Optional[Tuple[int, ...]] = None, + abis: Optional[List[str]] = None, + implementation: Optional[str] = None, + ) -> None: + """ + :param platforms: A list of strings or None. If None, searches for + packages that are supported by the current system. Otherwise, will + find packages that can be built on the platforms passed in. These + packages will only be downloaded for distribution: they will + not be built locally. + :param py_version_info: An optional tuple of ints representing the + Python version information to use (e.g. `sys.version_info[:3]`). + This can have length 1, 2, or 3 when provided. + :param abis: A list of strings or None. This is passed to + compatibility_tags.py's get_supported() function as is. + :param implementation: A string or None. This is passed to + compatibility_tags.py's get_supported() function as is. + """ + # Store the given py_version_info for when we call get_supported(). + self._given_py_version_info = py_version_info + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + py_version = ".".join(map(str, py_version_info[:2])) + + self.abis = abis + self.implementation = implementation + self.platforms = platforms + self.py_version = py_version + self.py_version_info = py_version_info + + # This is used to cache the return value of get_tags(). + self._valid_tags: Optional[List[Tag]] = None + + def format_given(self) -> str: + """ + Format the given, non-None attributes for display. + """ + display_version = None + if self._given_py_version_info is not None: + display_version = ".".join( + str(part) for part in self._given_py_version_info + ) + + key_values = [ + ("platforms", self.platforms), + ("version_info", display_version), + ("abis", self.abis), + ("implementation", self.implementation), + ] + return " ".join( + f"{key}={value!r}" for key, value in key_values if value is not None + ) + + def get_tags(self) -> List[Tag]: + """ + Return the supported PEP 425 tags to check wheel candidates against. + + The tags are returned in order of preference (most preferred first). + """ + if self._valid_tags is None: + # Pass versions=None if no py_version_info was given since + # versions=None uses special default logic. + py_version_info = self._given_py_version_info + if py_version_info is None: + version = None + else: + version = version_info_to_nodot(py_version_info) + + tags = get_supported( + version=version, + platforms=self.platforms, + abis=self.abis, + impl=self.implementation, + ) + self._valid_tags = tags + + return self._valid_tags diff --git a/venv/Lib/site-packages/pip/_internal/models/wheel.py b/venv/Lib/site-packages/pip/_internal/models/wheel.py new file mode 100644 index 00000000..e0916122 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/wheel.py @@ -0,0 +1,89 @@ +"""Represents a wheel file and provides access to the various parts of the +name that have meaning. +""" +import re +from typing import Dict, Iterable, List + +from pip._vendor.packaging.tags import Tag + +from pip._internal.exceptions import InvalidWheelFilename + + +class Wheel: + """A wheel file""" + + wheel_file_re = re.compile( + r"""^(?P(?P.+?)-(?P.*?)) + ((-(?P\d[^-]*?))?-(?P.+?)-(?P.+?)-(?P.+?) + \.whl|\.dist-info)$""", + re.VERBOSE, + ) + + def __init__(self, filename: str) -> None: + """ + :raises InvalidWheelFilename: when the filename is invalid for a wheel + """ + wheel_info = self.wheel_file_re.match(filename) + if not wheel_info: + raise InvalidWheelFilename(f"{filename} is not a valid wheel filename.") + self.filename = filename + self.name = wheel_info.group("name").replace("_", "-") + # we'll assume "_" means "-" due to wheel naming scheme + # (https://github.com/pypa/pip/issues/1150) + self.version = wheel_info.group("ver").replace("_", "-") + self.build_tag = wheel_info.group("build") + self.pyversions = wheel_info.group("pyver").split(".") + self.abis = wheel_info.group("abi").split(".") + self.plats = wheel_info.group("plat").split(".") + + # All the tag combinations from this file + self.file_tags = { + Tag(x, y, z) for x in self.pyversions for y in self.abis for z in self.plats + } + + def get_formatted_file_tags(self) -> List[str]: + """Return the wheel's tags as a sorted list of strings.""" + return sorted(str(tag) for tag in self.file_tags) + + def support_index_min(self, tags: List[Tag]) -> int: + """Return the lowest index that one of the wheel's file_tag combinations + achieves in the given list of supported tags. + + For example, if there are 8 supported tags and one of the file tags + is first in the list, then return 0. + + :param tags: the PEP 425 tags to check the wheel against, in order + with most preferred first. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + return min(tags.index(tag) for tag in self.file_tags if tag in tags) + + def find_most_preferred_tag( + self, tags: List[Tag], tag_to_priority: Dict[Tag, int] + ) -> int: + """Return the priority of the most preferred tag that one of the wheel's file + tag combinations achieves in the given list of supported tags using the given + tag_to_priority mapping, where lower priorities are more-preferred. + + This is used in place of support_index_min in some cases in order to avoid + an expensive linear scan of a large list of tags. + + :param tags: the PEP 425 tags to check the wheel against. + :param tag_to_priority: a mapping from tag to priority of that tag, where + lower is more preferred. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + return min( + tag_to_priority[tag] for tag in self.file_tags if tag in tag_to_priority + ) + + def supported(self, tags: Iterable[Tag]) -> bool: + """Return whether the wheel is compatible with one of the given tags. + + :param tags: the PEP 425 tags to check the wheel against. + """ + return not self.file_tags.isdisjoint(tags) diff --git a/venv/Lib/site-packages/pip/_internal/network/__init__.py b/venv/Lib/site-packages/pip/_internal/network/__init__.py new file mode 100644 index 00000000..b51bde91 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/__init__.py @@ -0,0 +1,2 @@ +"""Contains purely network-related utilities. +""" diff --git a/venv/Lib/site-packages/pip/_internal/network/auth.py b/venv/Lib/site-packages/pip/_internal/network/auth.py new file mode 100644 index 00000000..ca42798b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/auth.py @@ -0,0 +1,323 @@ +"""Network Authentication Helpers + +Contains interface (MultiDomainBasicAuth) and associated glue code for +providing credentials in the context of network requests. +""" + +import urllib.parse +from typing import Any, Dict, List, Optional, Tuple + +from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth +from pip._vendor.requests.models import Request, Response +from pip._vendor.requests.utils import get_netrc_auth + +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ( + ask, + ask_input, + ask_password, + remove_auth_from_url, + split_auth_netloc_from_url, +) +from pip._internal.vcs.versioncontrol import AuthInfo + +logger = getLogger(__name__) + +Credentials = Tuple[str, str, str] + +try: + import keyring +except ImportError: + keyring = None # type: ignore[assignment] +except Exception as exc: + logger.warning( + "Keyring is skipped due to an exception: %s", + str(exc), + ) + keyring = None # type: ignore[assignment] + + +def get_keyring_auth(url: Optional[str], username: Optional[str]) -> Optional[AuthInfo]: + """Return the tuple auth for a given url from keyring.""" + global keyring + if not url or not keyring: + return None + + try: + try: + get_credential = keyring.get_credential + except AttributeError: + pass + else: + logger.debug("Getting credentials from keyring for %s", url) + cred = get_credential(url, username) + if cred is not None: + return cred.username, cred.password + return None + + if username: + logger.debug("Getting password from keyring for %s", url) + password = keyring.get_password(url, username) + if password: + return username, password + + except Exception as exc: + logger.warning( + "Keyring is skipped due to an exception: %s", + str(exc), + ) + keyring = None # type: ignore[assignment] + return None + + +class MultiDomainBasicAuth(AuthBase): + def __init__( + self, prompting: bool = True, index_urls: Optional[List[str]] = None + ) -> None: + self.prompting = prompting + self.index_urls = index_urls + self.passwords: Dict[str, AuthInfo] = {} + # When the user is prompted to enter credentials and keyring is + # available, we will offer to save them. If the user accepts, + # this value is set to the credentials they entered. After the + # request authenticates, the caller should call + # ``save_credentials`` to save these. + self._credentials_to_save: Optional[Credentials] = None + + def _get_index_url(self, url: str) -> Optional[str]: + """Return the original index URL matching the requested URL. + + Cached or dynamically generated credentials may work against + the original index URL rather than just the netloc. + + The provided url should have had its username and password + removed already. If the original index url had credentials then + they will be included in the return value. + + Returns None if no matching index was found, or if --no-index + was specified by the user. + """ + if not url or not self.index_urls: + return None + + for u in self.index_urls: + prefix = remove_auth_from_url(u).rstrip("/") + "/" + if url.startswith(prefix): + return u + return None + + def _get_new_credentials( + self, + original_url: str, + allow_netrc: bool = True, + allow_keyring: bool = False, + ) -> AuthInfo: + """Find and return credentials for the specified URL.""" + # Split the credentials and netloc from the url. + url, netloc, url_user_password = split_auth_netloc_from_url( + original_url, + ) + + # Start with the credentials embedded in the url + username, password = url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in url for %s", netloc) + return url_user_password + + # Find a matching index url for this request + index_url = self._get_index_url(url) + if index_url: + # Split the credentials from the url. + index_info = split_auth_netloc_from_url(index_url) + if index_info: + index_url, _, index_url_user_password = index_info + logger.debug("Found index url %s", index_url) + + # If an index URL was found, try its embedded credentials + if index_url and index_url_user_password[0] is not None: + username, password = index_url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in index url for %s", netloc) + return index_url_user_password + + # Get creds from netrc if we still don't have them + if allow_netrc: + netrc_auth = get_netrc_auth(original_url) + if netrc_auth: + logger.debug("Found credentials in netrc for %s", netloc) + return netrc_auth + + # If we don't have a password and keyring is available, use it. + if allow_keyring: + # The index url is more specific than the netloc, so try it first + # fmt: off + kr_auth = ( + get_keyring_auth(index_url, username) or + get_keyring_auth(netloc, username) + ) + # fmt: on + if kr_auth: + logger.debug("Found credentials in keyring for %s", netloc) + return kr_auth + + return username, password + + def _get_url_and_credentials( + self, original_url: str + ) -> Tuple[str, Optional[str], Optional[str]]: + """Return the credentials to use for the provided URL. + + If allowed, netrc and keyring may be used to obtain the + correct credentials. + + Returns (url_without_credentials, username, password). Note + that even if the original URL contains credentials, this + function may return a different username and password. + """ + url, netloc, _ = split_auth_netloc_from_url(original_url) + + # Try to get credentials from original url + username, password = self._get_new_credentials(original_url) + + # If credentials not found, use any stored credentials for this netloc. + # Do this if either the username or the password is missing. + # This accounts for the situation in which the user has specified + # the username in the index url, but the password comes from keyring. + if (username is None or password is None) and netloc in self.passwords: + un, pw = self.passwords[netloc] + # It is possible that the cached credentials are for a different username, + # in which case the cache should be ignored. + if username is None or username == un: + username, password = un, pw + + if username is not None or password is not None: + # Convert the username and password if they're None, so that + # this netloc will show up as "cached" in the conditional above. + # Further, HTTPBasicAuth doesn't accept None, so it makes sense to + # cache the value that is going to be used. + username = username or "" + password = password or "" + + # Store any acquired credentials. + self.passwords[netloc] = (username, password) + + assert ( + # Credentials were found + (username is not None and password is not None) + # Credentials were not found + or (username is None and password is None) + ), f"Could not load credentials from url: {original_url}" + + return url, username, password + + def __call__(self, req: Request) -> Request: + # Get credentials for this request + url, username, password = self._get_url_and_credentials(req.url) + + # Set the url of the request to the url without any credentials + req.url = url + + if username is not None and password is not None: + # Send the basic auth with this request + req = HTTPBasicAuth(username, password)(req) + + # Attach a hook to handle 401 responses + req.register_hook("response", self.handle_401) + + return req + + # Factored out to allow for easy patching in tests + def _prompt_for_password( + self, netloc: str + ) -> Tuple[Optional[str], Optional[str], bool]: + username = ask_input(f"User for {netloc}: ") + if not username: + return None, None, False + auth = get_keyring_auth(netloc, username) + if auth and auth[0] is not None and auth[1] is not None: + return auth[0], auth[1], False + password = ask_password("Password: ") + return username, password, True + + # Factored out to allow for easy patching in tests + def _should_save_password_to_keyring(self) -> bool: + if not keyring: + return False + return ask("Save credentials to keyring [y/N]: ", ["y", "n"]) == "y" + + def handle_401(self, resp: Response, **kwargs: Any) -> Response: + # We only care about 401 responses, anything else we want to just + # pass through the actual response + if resp.status_code != 401: + return resp + + # We are not able to prompt the user so simply return the response + if not self.prompting: + return resp + + parsed = urllib.parse.urlparse(resp.url) + + # Query the keyring for credentials: + username, password = self._get_new_credentials( + resp.url, + allow_netrc=False, + allow_keyring=True, + ) + + # Prompt the user for a new username and password + save = False + if not username and not password: + username, password, save = self._prompt_for_password(parsed.netloc) + + # Store the new username and password to use for future requests + self._credentials_to_save = None + if username is not None and password is not None: + self.passwords[parsed.netloc] = (username, password) + + # Prompt to save the password to keyring + if save and self._should_save_password_to_keyring(): + self._credentials_to_save = (parsed.netloc, username, password) + + # Consume content and release the original connection to allow our new + # request to reuse the same one. + resp.content + resp.raw.release_conn() + + # Add our new username and password to the request + req = HTTPBasicAuth(username or "", password or "")(resp.request) + req.register_hook("response", self.warn_on_401) + + # On successful request, save the credentials that were used to + # keyring. (Note that if the user responded "no" above, this member + # is not set and nothing will be saved.) + if self._credentials_to_save: + req.register_hook("response", self.save_credentials) + + # Send our new request + new_resp = resp.connection.send(req, **kwargs) + new_resp.history.append(resp) + + return new_resp + + def warn_on_401(self, resp: Response, **kwargs: Any) -> None: + """Response callback to warn about incorrect credentials.""" + if resp.status_code == 401: + logger.warning( + "401 Error, Credentials not correct for %s", + resp.request.url, + ) + + def save_credentials(self, resp: Response, **kwargs: Any) -> None: + """Response callback to save credentials on success.""" + assert keyring is not None, "should never reach here without keyring" + if not keyring: + return + + creds = self._credentials_to_save + self._credentials_to_save = None + if creds and resp.status_code < 400: + try: + logger.info("Saving credentials to keyring") + keyring.set_password(*creds) + except Exception: + logger.exception("Failed to save credentials") diff --git a/venv/Lib/site-packages/pip/_internal/network/cache.py b/venv/Lib/site-packages/pip/_internal/network/cache.py new file mode 100644 index 00000000..2d915e6f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/cache.py @@ -0,0 +1,69 @@ +"""HTTP cache implementation. +""" + +import os +from contextlib import contextmanager +from typing import Iterator, Optional + +from pip._vendor.cachecontrol.cache import BaseCache +from pip._vendor.cachecontrol.caches import FileCache +from pip._vendor.requests.models import Response + +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import ensure_dir + + +def is_from_cache(response: Response) -> bool: + return getattr(response, "from_cache", False) + + +@contextmanager +def suppressed_cache_errors() -> Iterator[None]: + """If we can't access the cache then we can just skip caching and process + requests as if caching wasn't enabled. + """ + try: + yield + except OSError: + pass + + +class SafeFileCache(BaseCache): + """ + A file based cache which is safe to use even when the target directory may + not be accessible or writable. + """ + + def __init__(self, directory: str) -> None: + assert directory is not None, "Cache directory must not be None." + super().__init__() + self.directory = directory + + def _get_cache_path(self, name: str) -> str: + # From cachecontrol.caches.file_cache.FileCache._fn, brought into our + # class for backwards-compatibility and to avoid using a non-public + # method. + hashed = FileCache.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key: str) -> Optional[bytes]: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + with open(path, "rb") as f: + return f.read() + + def set(self, key: str, value: bytes) -> None: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + ensure_dir(os.path.dirname(path)) + + with adjacent_tmp_file(path) as f: + f.write(value) + + replace(f.name, path) + + def delete(self, key: str) -> None: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + os.remove(path) diff --git a/venv/Lib/site-packages/pip/_internal/network/download.py b/venv/Lib/site-packages/pip/_internal/network/download.py new file mode 100644 index 00000000..47af547d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/download.py @@ -0,0 +1,184 @@ +"""Download files with progress indicators. +""" +import cgi +import logging +import mimetypes +import os +from typing import Iterable, Optional, Tuple + +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.cli.progress_bars import DownloadProgressProvider +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.models.index import PyPI +from pip._internal.models.link import Link +from pip._internal.network.cache import is_from_cache +from pip._internal.network.session import PipSession +from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks +from pip._internal.utils.misc import format_size, redact_auth_from_url, splitext + +logger = logging.getLogger(__name__) + + +def _get_http_response_size(resp: Response) -> Optional[int]: + try: + return int(resp.headers["content-length"]) + except (ValueError, KeyError, TypeError): + return None + + +def _prepare_download( + resp: Response, + link: Link, + progress_bar: str, +) -> Iterable[bytes]: + total_length = _get_http_response_size(resp) + + if link.netloc == PyPI.file_storage_domain: + url = link.show_url + else: + url = link.url_without_fragment + + logged_url = redact_auth_from_url(url) + + if total_length: + logged_url = "{} ({})".format(logged_url, format_size(total_length)) + + if is_from_cache(resp): + logger.info("Using cached %s", logged_url) + else: + logger.info("Downloading %s", logged_url) + + if logger.getEffectiveLevel() > logging.INFO: + show_progress = False + elif is_from_cache(resp): + show_progress = False + elif not total_length: + show_progress = True + elif total_length > (40 * 1000): + show_progress = True + else: + show_progress = False + + chunks = response_chunks(resp, CONTENT_CHUNK_SIZE) + + if not show_progress: + return chunks + + return DownloadProgressProvider(progress_bar, max=total_length)(chunks) + + +def sanitize_content_filename(filename: str) -> str: + """ + Sanitize the "filename" value from a Content-Disposition header. + """ + return os.path.basename(filename) + + +def parse_content_disposition(content_disposition: str, default_filename: str) -> str: + """ + Parse the "filename" value from a Content-Disposition header, and + return the default filename if the result is empty. + """ + _type, params = cgi.parse_header(content_disposition) + filename = params.get("filename") + if filename: + # We need to sanitize the filename to prevent directory traversal + # in case the filename contains ".." path parts. + filename = sanitize_content_filename(filename) + return filename or default_filename + + +def _get_http_response_filename(resp: Response, link: Link) -> str: + """Get an ideal filename from the given HTTP response, falling back to + the link filename if not provided. + """ + filename = link.filename # fallback + # Have a look at the Content-Disposition header for a better guess + content_disposition = resp.headers.get("content-disposition") + if content_disposition: + filename = parse_content_disposition(content_disposition, filename) + ext: Optional[str] = splitext(filename)[1] + if not ext: + ext = mimetypes.guess_extension(resp.headers.get("content-type", "")) + if ext: + filename += ext + if not ext and link.url != resp.url: + ext = os.path.splitext(resp.url)[1] + if ext: + filename += ext + return filename + + +def _http_get_download(session: PipSession, link: Link) -> Response: + target_url = link.url.split("#", 1)[0] + resp = session.get(target_url, headers=HEADERS, stream=True) + raise_for_status(resp) + return resp + + +class Downloader: + def __init__( + self, + session: PipSession, + progress_bar: str, + ) -> None: + self._session = session + self._progress_bar = progress_bar + + def __call__(self, link: Link, location: str) -> Tuple[str, str]: + """Download the file given by link into location.""" + try: + resp = _http_get_download(self._session, link) + except NetworkConnectionError as e: + assert e.response is not None + logger.critical( + "HTTP error %s while getting %s", e.response.status_code, link + ) + raise + + filename = _get_http_response_filename(resp, link) + filepath = os.path.join(location, filename) + + chunks = _prepare_download(resp, link, self._progress_bar) + with open(filepath, "wb") as content_file: + for chunk in chunks: + content_file.write(chunk) + content_type = resp.headers.get("Content-Type", "") + return filepath, content_type + + +class BatchDownloader: + def __init__( + self, + session: PipSession, + progress_bar: str, + ) -> None: + self._session = session + self._progress_bar = progress_bar + + def __call__( + self, links: Iterable[Link], location: str + ) -> Iterable[Tuple[Link, Tuple[str, str]]]: + """Download the files given by links into location.""" + for link in links: + try: + resp = _http_get_download(self._session, link) + except NetworkConnectionError as e: + assert e.response is not None + logger.critical( + "HTTP error %s while getting %s", + e.response.status_code, + link, + ) + raise + + filename = _get_http_response_filename(resp, link) + filepath = os.path.join(location, filename) + + chunks = _prepare_download(resp, link, self._progress_bar) + with open(filepath, "wb") as content_file: + for chunk in chunks: + content_file.write(chunk) + content_type = resp.headers.get("Content-Type", "") + yield link, (filepath, content_type) diff --git a/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py b/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py new file mode 100644 index 00000000..c9e44d5b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py @@ -0,0 +1,210 @@ +"""Lazy ZIP over HTTP""" + +__all__ = ["HTTPRangeRequestUnsupported", "dist_from_wheel_url"] + +from bisect import bisect_left, bisect_right +from contextlib import contextmanager +from tempfile import NamedTemporaryFile +from typing import Any, Dict, Iterator, List, Optional, Tuple +from zipfile import BadZipfile, ZipFile + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.metadata import BaseDistribution, MemoryWheel, get_wheel_distribution +from pip._internal.network.session import PipSession +from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks + + +class HTTPRangeRequestUnsupported(Exception): + pass + + +def dist_from_wheel_url(name: str, url: str, session: PipSession) -> BaseDistribution: + """Return a distribution object from the given wheel URL. + + This uses HTTP range requests to only fetch the potion of the wheel + containing metadata, just enough for the object to be constructed. + If such requests are not supported, HTTPRangeRequestUnsupported + is raised. + """ + with LazyZipOverHTTP(url, session) as zf: + # For read-only ZIP files, ZipFile only needs methods read, + # seek, seekable and tell, not the whole IO protocol. + wheel = MemoryWheel(zf.name, zf) # type: ignore + # After context manager exit, wheel.name + # is an invalid file by intention. + return get_wheel_distribution(wheel, canonicalize_name(name)) + + +class LazyZipOverHTTP: + """File-like object mapped to a ZIP file over HTTP. + + This uses HTTP range requests to lazily fetch the file's content, + which is supposed to be fed to ZipFile. If such requests are not + supported by the server, raise HTTPRangeRequestUnsupported + during initialization. + """ + + def __init__( + self, url: str, session: PipSession, chunk_size: int = CONTENT_CHUNK_SIZE + ) -> None: + head = session.head(url, headers=HEADERS) + raise_for_status(head) + assert head.status_code == 200 + self._session, self._url, self._chunk_size = session, url, chunk_size + self._length = int(head.headers["Content-Length"]) + self._file = NamedTemporaryFile() + self.truncate(self._length) + self._left: List[int] = [] + self._right: List[int] = [] + if "bytes" not in head.headers.get("Accept-Ranges", "none"): + raise HTTPRangeRequestUnsupported("range request is not supported") + self._check_zip() + + @property + def mode(self) -> str: + """Opening mode, which is always rb.""" + return "rb" + + @property + def name(self) -> str: + """Path to the underlying file.""" + return self._file.name + + def seekable(self) -> bool: + """Return whether random access is supported, which is True.""" + return True + + def close(self) -> None: + """Close the file.""" + self._file.close() + + @property + def closed(self) -> bool: + """Whether the file is closed.""" + return self._file.closed + + def read(self, size: int = -1) -> bytes: + """Read up to size bytes from the object and return them. + + As a convenience, if size is unspecified or -1, + all bytes until EOF are returned. Fewer than + size bytes may be returned if EOF is reached. + """ + download_size = max(size, self._chunk_size) + start, length = self.tell(), self._length + stop = length if size < 0 else min(start + download_size, length) + start = max(0, stop - download_size) + self._download(start, stop - 1) + return self._file.read(size) + + def readable(self) -> bool: + """Return whether the file is readable, which is True.""" + return True + + def seek(self, offset: int, whence: int = 0) -> int: + """Change stream position and return the new absolute position. + + Seek to offset relative position indicated by whence: + * 0: Start of stream (the default). pos should be >= 0; + * 1: Current position - pos may be negative; + * 2: End of stream - pos usually negative. + """ + return self._file.seek(offset, whence) + + def tell(self) -> int: + """Return the current position.""" + return self._file.tell() + + def truncate(self, size: Optional[int] = None) -> int: + """Resize the stream to the given size in bytes. + + If size is unspecified resize to the current position. + The current stream position isn't changed. + + Return the new file size. + """ + return self._file.truncate(size) + + def writable(self) -> bool: + """Return False.""" + return False + + def __enter__(self) -> "LazyZipOverHTTP": + self._file.__enter__() + return self + + def __exit__(self, *exc: Any) -> Optional[bool]: + return self._file.__exit__(*exc) + + @contextmanager + def _stay(self) -> Iterator[None]: + """Return a context manager keeping the position. + + At the end of the block, seek back to original position. + """ + pos = self.tell() + try: + yield + finally: + self.seek(pos) + + def _check_zip(self) -> None: + """Check and download until the file is a valid ZIP.""" + end = self._length - 1 + for start in reversed(range(0, end, self._chunk_size)): + self._download(start, end) + with self._stay(): + try: + # For read-only ZIP files, ZipFile only needs + # methods read, seek, seekable and tell. + ZipFile(self) # type: ignore + except BadZipfile: + pass + else: + break + + def _stream_response( + self, start: int, end: int, base_headers: Dict[str, str] = HEADERS + ) -> Response: + """Return HTTP response to a range request from start to end.""" + headers = base_headers.copy() + headers["Range"] = f"bytes={start}-{end}" + # TODO: Get range requests to be correctly cached + headers["Cache-Control"] = "no-cache" + return self._session.get(self._url, headers=headers, stream=True) + + def _merge( + self, start: int, end: int, left: int, right: int + ) -> Iterator[Tuple[int, int]]: + """Return an iterator of intervals to be fetched. + + Args: + start (int): Start of needed interval + end (int): End of needed interval + left (int): Index of first overlapping downloaded data + right (int): Index after last overlapping downloaded data + """ + lslice, rslice = self._left[left:right], self._right[left:right] + i = start = min([start] + lslice[:1]) + end = max([end] + rslice[-1:]) + for j, k in zip(lslice, rslice): + if j > i: + yield i, j - 1 + i = k + 1 + if i <= end: + yield i, end + self._left[left:right], self._right[left:right] = [start], [end] + + def _download(self, start: int, end: int) -> None: + """Download bytes from start to end inclusively.""" + with self._stay(): + left = bisect_left(self._right, start) + right = bisect_right(self._left, end) + for start, end in self._merge(start, end, left, right): + response = self._stream_response(start, end) + response.raise_for_status() + self.seek(start) + for chunk in response_chunks(response, self._chunk_size): + self._file.write(chunk) diff --git a/venv/Lib/site-packages/pip/_internal/network/session.py b/venv/Lib/site-packages/pip/_internal/network/session.py new file mode 100644 index 00000000..cbe743ba --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/session.py @@ -0,0 +1,454 @@ +"""PipSession and supporting code, containing all pip-specific +network request configuration and behavior. +""" + +import email.utils +import io +import ipaddress +import json +import logging +import mimetypes +import os +import platform +import shutil +import subprocess +import sys +import urllib.parse +import warnings +from typing import Any, Dict, Iterator, List, Mapping, Optional, Sequence, Tuple, Union + +from pip._vendor import requests, urllib3 +from pip._vendor.cachecontrol import CacheControlAdapter +from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter +from pip._vendor.requests.models import PreparedRequest, Response +from pip._vendor.requests.structures import CaseInsensitiveDict +from pip._vendor.urllib3.connectionpool import ConnectionPool +from pip._vendor.urllib3.exceptions import InsecureRequestWarning + +from pip import __version__ +from pip._internal.metadata import get_default_environment +from pip._internal.models.link import Link +from pip._internal.network.auth import MultiDomainBasicAuth +from pip._internal.network.cache import SafeFileCache + +# Import ssl from compat so the initial import occurs in only one place. +from pip._internal.utils.compat import has_tls +from pip._internal.utils.glibc import libc_ver +from pip._internal.utils.misc import build_url_from_netloc, parse_netloc +from pip._internal.utils.urls import url_to_path + +logger = logging.getLogger(__name__) + +SecureOrigin = Tuple[str, str, Optional[Union[int, str]]] + + +# Ignore warning raised when using --trusted-host. +warnings.filterwarnings("ignore", category=InsecureRequestWarning) + + +SECURE_ORIGINS: List[SecureOrigin] = [ + # protocol, hostname, port + # Taken from Chrome's list of secure origins (See: http://bit.ly/1qrySKC) + ("https", "*", "*"), + ("*", "localhost", "*"), + ("*", "127.0.0.0/8", "*"), + ("*", "::1/128", "*"), + ("file", "*", None), + # ssh is always secure. + ("ssh", "*", "*"), +] + + +# These are environment variables present when running under various +# CI systems. For each variable, some CI systems that use the variable +# are indicated. The collection was chosen so that for each of a number +# of popular systems, at least one of the environment variables is used. +# This list is used to provide some indication of and lower bound for +# CI traffic to PyPI. Thus, it is okay if the list is not comprehensive. +# For more background, see: https://github.com/pypa/pip/issues/5499 +CI_ENVIRONMENT_VARIABLES = ( + # Azure Pipelines + "BUILD_BUILDID", + # Jenkins + "BUILD_ID", + # AppVeyor, CircleCI, Codeship, Gitlab CI, Shippable, Travis CI + "CI", + # Explicit environment variable. + "PIP_IS_CI", +) + + +def looks_like_ci() -> bool: + """ + Return whether it looks like pip is running under CI. + """ + # We don't use the method of checking for a tty (e.g. using isatty()) + # because some CI systems mimic a tty (e.g. Travis CI). Thus that + # method doesn't provide definitive information in either direction. + return any(name in os.environ for name in CI_ENVIRONMENT_VARIABLES) + + +def user_agent() -> str: + """ + Return a string representing the user agent. + """ + data: Dict[str, Any] = { + "installer": {"name": "pip", "version": __version__}, + "python": platform.python_version(), + "implementation": { + "name": platform.python_implementation(), + }, + } + + if data["implementation"]["name"] == "CPython": + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == "PyPy": + pypy_version_info = sys.pypy_version_info # type: ignore + if pypy_version_info.releaselevel == "final": + pypy_version_info = pypy_version_info[:3] + data["implementation"]["version"] = ".".join( + [str(x) for x in pypy_version_info] + ) + elif data["implementation"]["name"] == "Jython": + # Complete Guess + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == "IronPython": + # Complete Guess + data["implementation"]["version"] = platform.python_version() + + if sys.platform.startswith("linux"): + from pip._vendor import distro + + linux_distribution = distro.name(), distro.version(), distro.codename() + distro_infos: Dict[str, Any] = dict( + filter( + lambda x: x[1], + zip(["name", "version", "id"], linux_distribution), + ) + ) + libc = dict( + filter( + lambda x: x[1], + zip(["lib", "version"], libc_ver()), + ) + ) + if libc: + distro_infos["libc"] = libc + if distro_infos: + data["distro"] = distro_infos + + if sys.platform.startswith("darwin") and platform.mac_ver()[0]: + data["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]} + + if platform.system(): + data.setdefault("system", {})["name"] = platform.system() + + if platform.release(): + data.setdefault("system", {})["release"] = platform.release() + + if platform.machine(): + data["cpu"] = platform.machine() + + if has_tls(): + import _ssl as ssl + + data["openssl_version"] = ssl.OPENSSL_VERSION + + setuptools_dist = get_default_environment().get_distribution("setuptools") + if setuptools_dist is not None: + data["setuptools_version"] = str(setuptools_dist.version) + + if shutil.which("rustc") is not None: + # If for any reason `rustc --version` fails, silently ignore it + try: + rustc_output = subprocess.check_output( + ["rustc", "--version"], stderr=subprocess.STDOUT, timeout=0.5 + ) + except Exception: + pass + else: + if rustc_output.startswith(b"rustc "): + # The format of `rustc --version` is: + # `b'rustc 1.52.1 (9bc8c42bb 2021-05-09)\n'` + # We extract just the middle (1.52.1) part + data["rustc_version"] = rustc_output.split(b" ")[1].decode() + + # Use None rather than False so as not to give the impression that + # pip knows it is not being run under CI. Rather, it is a null or + # inconclusive result. Also, we include some value rather than no + # value to make it easier to know that the check has been run. + data["ci"] = True if looks_like_ci() else None + + user_data = os.environ.get("PIP_USER_AGENT_USER_DATA") + if user_data is not None: + data["user_data"] = user_data + + return "{data[installer][name]}/{data[installer][version]} {json}".format( + data=data, + json=json.dumps(data, separators=(",", ":"), sort_keys=True), + ) + + +class LocalFSAdapter(BaseAdapter): + def send( + self, + request: PreparedRequest, + stream: bool = False, + timeout: Optional[Union[float, Tuple[float, float]]] = None, + verify: Union[bool, str] = True, + cert: Optional[Union[str, Tuple[str, str]]] = None, + proxies: Optional[Mapping[str, str]] = None, + ) -> Response: + pathname = url_to_path(request.url) + + resp = Response() + resp.status_code = 200 + resp.url = request.url + + try: + stats = os.stat(pathname) + except OSError as exc: + # format the exception raised as a io.BytesIO object, + # to return a better error message: + resp.status_code = 404 + resp.reason = type(exc).__name__ + resp.raw = io.BytesIO(f"{resp.reason}: {exc}".encode("utf8")) + else: + modified = email.utils.formatdate(stats.st_mtime, usegmt=True) + content_type = mimetypes.guess_type(pathname)[0] or "text/plain" + resp.headers = CaseInsensitiveDict( + { + "Content-Type": content_type, + "Content-Length": stats.st_size, + "Last-Modified": modified, + } + ) + + resp.raw = open(pathname, "rb") + resp.close = resp.raw.close + + return resp + + def close(self) -> None: + pass + + +class InsecureHTTPAdapter(HTTPAdapter): + def cert_verify( + self, + conn: ConnectionPool, + url: str, + verify: Union[bool, str], + cert: Optional[Union[str, Tuple[str, str]]], + ) -> None: + super().cert_verify(conn=conn, url=url, verify=False, cert=cert) + + +class InsecureCacheControlAdapter(CacheControlAdapter): + def cert_verify( + self, + conn: ConnectionPool, + url: str, + verify: Union[bool, str], + cert: Optional[Union[str, Tuple[str, str]]], + ) -> None: + super().cert_verify(conn=conn, url=url, verify=False, cert=cert) + + +class PipSession(requests.Session): + + timeout: Optional[int] = None + + def __init__( + self, + *args: Any, + retries: int = 0, + cache: Optional[str] = None, + trusted_hosts: Sequence[str] = (), + index_urls: Optional[List[str]] = None, + **kwargs: Any, + ) -> None: + """ + :param trusted_hosts: Domains not to emit warnings for when not using + HTTPS. + """ + super().__init__(*args, **kwargs) + + # Namespace the attribute with "pip_" just in case to prevent + # possible conflicts with the base class. + self.pip_trusted_origins: List[Tuple[str, Optional[int]]] = [] + + # Attach our User Agent to the request + self.headers["User-Agent"] = user_agent() + + # Attach our Authentication handler to the session + self.auth = MultiDomainBasicAuth(index_urls=index_urls) + + # Create our urllib3.Retry instance which will allow us to customize + # how we handle retries. + retries = urllib3.Retry( + # Set the total number of retries that a particular request can + # have. + total=retries, + # A 503 error from PyPI typically means that the Fastly -> Origin + # connection got interrupted in some way. A 503 error in general + # is typically considered a transient error so we'll go ahead and + # retry it. + # A 500 may indicate transient error in Amazon S3 + # A 520 or 527 - may indicate transient error in CloudFlare + status_forcelist=[500, 503, 520, 527], + # Add a small amount of back off between failed requests in + # order to prevent hammering the service. + backoff_factor=0.25, + ) # type: ignore + + # Our Insecure HTTPAdapter disables HTTPS validation. It does not + # support caching so we'll use it for all http:// URLs. + # If caching is disabled, we will also use it for + # https:// hosts that we've marked as ignoring + # TLS errors for (trusted-hosts). + insecure_adapter = InsecureHTTPAdapter(max_retries=retries) + + # We want to _only_ cache responses on securely fetched origins or when + # the host is specified as trusted. We do this because + # we can't validate the response of an insecurely/untrusted fetched + # origin, and we don't want someone to be able to poison the cache and + # require manual eviction from the cache to fix it. + if cache: + secure_adapter = CacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ) + self._trusted_host_adapter = InsecureCacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ) + else: + secure_adapter = HTTPAdapter(max_retries=retries) + self._trusted_host_adapter = insecure_adapter + + self.mount("https://", secure_adapter) + self.mount("http://", insecure_adapter) + + # Enable file:// urls + self.mount("file://", LocalFSAdapter()) + + for host in trusted_hosts: + self.add_trusted_host(host, suppress_logging=True) + + def update_index_urls(self, new_index_urls: List[str]) -> None: + """ + :param new_index_urls: New index urls to update the authentication + handler with. + """ + self.auth.index_urls = new_index_urls + + def add_trusted_host( + self, host: str, source: Optional[str] = None, suppress_logging: bool = False + ) -> None: + """ + :param host: It is okay to provide a host that has previously been + added. + :param source: An optional source string, for logging where the host + string came from. + """ + if not suppress_logging: + msg = f"adding trusted host: {host!r}" + if source is not None: + msg += f" (from {source})" + logger.info(msg) + + host_port = parse_netloc(host) + if host_port not in self.pip_trusted_origins: + self.pip_trusted_origins.append(host_port) + + self.mount( + build_url_from_netloc(host, scheme="http") + "/", self._trusted_host_adapter + ) + self.mount(build_url_from_netloc(host) + "/", self._trusted_host_adapter) + if not host_port[1]: + self.mount( + build_url_from_netloc(host, scheme="http") + ":", + self._trusted_host_adapter, + ) + # Mount wildcard ports for the same host. + self.mount(build_url_from_netloc(host) + ":", self._trusted_host_adapter) + + def iter_secure_origins(self) -> Iterator[SecureOrigin]: + yield from SECURE_ORIGINS + for host, port in self.pip_trusted_origins: + yield ("*", host, "*" if port is None else port) + + def is_secure_origin(self, location: Link) -> bool: + # Determine if this url used a secure transport mechanism + parsed = urllib.parse.urlparse(str(location)) + origin_protocol, origin_host, origin_port = ( + parsed.scheme, + parsed.hostname, + parsed.port, + ) + + # The protocol to use to see if the protocol matches. + # Don't count the repository type as part of the protocol: in + # cases such as "git+ssh", only use "ssh". (I.e., Only verify against + # the last scheme.) + origin_protocol = origin_protocol.rsplit("+", 1)[-1] + + # Determine if our origin is a secure origin by looking through our + # hardcoded list of secure origins, as well as any additional ones + # configured on this PackageFinder instance. + for secure_origin in self.iter_secure_origins(): + secure_protocol, secure_host, secure_port = secure_origin + if origin_protocol != secure_protocol and secure_protocol != "*": + continue + + try: + addr = ipaddress.ip_address(origin_host) + network = ipaddress.ip_network(secure_host) + except ValueError: + # We don't have both a valid address or a valid network, so + # we'll check this origin against hostnames. + if ( + origin_host + and origin_host.lower() != secure_host.lower() + and secure_host != "*" + ): + continue + else: + # We have a valid address and network, so see if the address + # is contained within the network. + if addr not in network: + continue + + # Check to see if the port matches. + if ( + origin_port != secure_port + and secure_port != "*" + and secure_port is not None + ): + continue + + # If we've gotten here, then this origin matches the current + # secure origin and we should return True + return True + + # If we've gotten to this point, then the origin isn't secure and we + # will not accept it as a valid location to search. We will however + # log a warning that we are ignoring it. + logger.warning( + "The repository located at %s is not a trusted or secure host and " + "is being ignored. If this repository is available via HTTPS we " + "recommend you use HTTPS instead, otherwise you may silence " + "this warning and allow it anyway with '--trusted-host %s'.", + origin_host, + origin_host, + ) + + return False + + def request(self, method: str, url: str, *args: Any, **kwargs: Any) -> Response: + # Allow setting a default timeout on a session + kwargs.setdefault("timeout", self.timeout) + + # Dispatch the actual request + return super().request(method, url, *args, **kwargs) diff --git a/venv/Lib/site-packages/pip/_internal/network/utils.py b/venv/Lib/site-packages/pip/_internal/network/utils.py new file mode 100644 index 00000000..094cf1b4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/utils.py @@ -0,0 +1,96 @@ +from typing import Dict, Iterator + +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.exceptions import NetworkConnectionError + +# The following comments and HTTP headers were originally added by +# Donald Stufft in git commit 22c562429a61bb77172039e480873fb239dd8c03. +# +# We use Accept-Encoding: identity here because requests defaults to +# accepting compressed responses. This breaks in a variety of ways +# depending on how the server is configured. +# - Some servers will notice that the file isn't a compressible file +# and will leave the file alone and with an empty Content-Encoding +# - Some servers will notice that the file is already compressed and +# will leave the file alone, adding a Content-Encoding: gzip header +# - Some servers won't notice anything at all and will take a file +# that's already been compressed and compress it again, and set +# the Content-Encoding: gzip header +# By setting this to request only the identity encoding we're hoping +# to eliminate the third case. Hopefully there does not exist a server +# which when given a file will notice it is already compressed and that +# you're not asking for a compressed file and will then decompress it +# before sending because if that's the case I don't think it'll ever be +# possible to make this work. +HEADERS: Dict[str, str] = {"Accept-Encoding": "identity"} + + +def raise_for_status(resp: Response) -> None: + http_error_msg = "" + if isinstance(resp.reason, bytes): + # We attempt to decode utf-8 first because some servers + # choose to localize their reason strings. If the string + # isn't utf-8, we fall back to iso-8859-1 for all other + # encodings. + try: + reason = resp.reason.decode("utf-8") + except UnicodeDecodeError: + reason = resp.reason.decode("iso-8859-1") + else: + reason = resp.reason + + if 400 <= resp.status_code < 500: + http_error_msg = ( + f"{resp.status_code} Client Error: {reason} for url: {resp.url}" + ) + + elif 500 <= resp.status_code < 600: + http_error_msg = ( + f"{resp.status_code} Server Error: {reason} for url: {resp.url}" + ) + + if http_error_msg: + raise NetworkConnectionError(http_error_msg, response=resp) + + +def response_chunks( + response: Response, chunk_size: int = CONTENT_CHUNK_SIZE +) -> Iterator[bytes]: + """Given a requests Response, provide the data chunks.""" + try: + # Special case for urllib3. + for chunk in response.raw.stream( + chunk_size, + # We use decode_content=False here because we don't + # want urllib3 to mess with the raw bytes we get + # from the server. If we decompress inside of + # urllib3 then we cannot verify the checksum + # because the checksum will be of the compressed + # file. This breakage will only occur if the + # server adds a Content-Encoding header, which + # depends on how the server was configured: + # - Some servers will notice that the file isn't a + # compressible file and will leave the file alone + # and with an empty Content-Encoding + # - Some servers will notice that the file is + # already compressed and will leave the file + # alone and will add a Content-Encoding: gzip + # header + # - Some servers won't notice anything at all and + # will take a file that's already been compressed + # and compress it again and set the + # Content-Encoding: gzip header + # + # By setting this not to decode automatically we + # hope to eliminate problems with the second case. + decode_content=False, + ): + yield chunk + except AttributeError: + # Standard file-like object. + while True: + chunk = response.raw.read(chunk_size) + if not chunk: + break + yield chunk diff --git a/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py b/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py new file mode 100644 index 00000000..4a7d55d0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py @@ -0,0 +1,60 @@ +"""xmlrpclib.Transport implementation +""" + +import logging +import urllib.parse +import xmlrpc.client +from typing import TYPE_CHECKING, Tuple + +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status + +if TYPE_CHECKING: + from xmlrpc.client import _HostType, _Marshallable + +logger = logging.getLogger(__name__) + + +class PipXmlrpcTransport(xmlrpc.client.Transport): + """Provide a `xmlrpclib.Transport` implementation via a `PipSession` + object. + """ + + def __init__( + self, index_url: str, session: PipSession, use_datetime: bool = False + ) -> None: + super().__init__(use_datetime) + index_parts = urllib.parse.urlparse(index_url) + self._scheme = index_parts.scheme + self._session = session + + def request( + self, + host: "_HostType", + handler: str, + request_body: bytes, + verbose: bool = False, + ) -> Tuple["_Marshallable", ...]: + assert isinstance(host, str) + parts = (self._scheme, host, handler, None, None, None) + url = urllib.parse.urlunparse(parts) + try: + headers = {"Content-Type": "text/xml"} + response = self._session.post( + url, + data=request_body, + headers=headers, + stream=True, + ) + raise_for_status(response) + self.verbose = verbose + return self.parse_response(response.raw) + except NetworkConnectionError as exc: + assert exc.response + logger.critical( + "HTTP error %s while getting %s", + exc.response.status_code, + url, + ) + raise diff --git a/venv/Lib/site-packages/pip/_internal/operations/__init__.py b/venv/Lib/site-packages/pip/_internal/operations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_internal/operations/check.py b/venv/Lib/site-packages/pip/_internal/operations/check.py new file mode 100644 index 00000000..fb3ac8b9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/check.py @@ -0,0 +1,149 @@ +"""Validation of dependencies of packages +""" + +import logging +from typing import Callable, Dict, List, NamedTuple, Optional, Set, Tuple + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + +from pip._internal.distributions import make_distribution_for_install_requirement +from pip._internal.metadata import get_default_environment +from pip._internal.metadata.base import DistributionVersion +from pip._internal.req.req_install import InstallRequirement + +logger = logging.getLogger(__name__) + + +class PackageDetails(NamedTuple): + version: DistributionVersion + dependencies: List[Requirement] + + +# Shorthands +PackageSet = Dict[NormalizedName, PackageDetails] +Missing = Tuple[NormalizedName, Requirement] +Conflicting = Tuple[NormalizedName, DistributionVersion, Requirement] + +MissingDict = Dict[NormalizedName, List[Missing]] +ConflictingDict = Dict[NormalizedName, List[Conflicting]] +CheckResult = Tuple[MissingDict, ConflictingDict] +ConflictDetails = Tuple[PackageSet, CheckResult] + + +def create_package_set_from_installed() -> Tuple[PackageSet, bool]: + """Converts a list of distributions into a PackageSet.""" + package_set = {} + problems = False + env = get_default_environment() + for dist in env.iter_installed_distributions(local_only=False, skip=()): + name = dist.canonical_name + try: + dependencies = list(dist.iter_dependencies()) + package_set[name] = PackageDetails(dist.version, dependencies) + except (OSError, ValueError) as e: + # Don't crash on unreadable or broken metadata. + logger.warning("Error parsing requirements for %s: %s", name, e) + problems = True + return package_set, problems + + +def check_package_set( + package_set: PackageSet, should_ignore: Optional[Callable[[str], bool]] = None +) -> CheckResult: + """Check if a package set is consistent + + If should_ignore is passed, it should be a callable that takes a + package name and returns a boolean. + """ + + missing = {} + conflicting = {} + + for package_name, package_detail in package_set.items(): + # Info about dependencies of package_name + missing_deps: Set[Missing] = set() + conflicting_deps: Set[Conflicting] = set() + + if should_ignore and should_ignore(package_name): + continue + + for req in package_detail.dependencies: + name = canonicalize_name(req.name) + + # Check if it's missing + if name not in package_set: + missed = True + if req.marker is not None: + missed = req.marker.evaluate() + if missed: + missing_deps.add((name, req)) + continue + + # Check if there's a conflict + version = package_set[name].version + if not req.specifier.contains(version, prereleases=True): + conflicting_deps.add((name, version, req)) + + if missing_deps: + missing[package_name] = sorted(missing_deps, key=str) + if conflicting_deps: + conflicting[package_name] = sorted(conflicting_deps, key=str) + + return missing, conflicting + + +def check_install_conflicts(to_install: List[InstallRequirement]) -> ConflictDetails: + """For checking if the dependency graph would be consistent after \ + installing given requirements + """ + # Start from the current state + package_set, _ = create_package_set_from_installed() + # Install packages + would_be_installed = _simulate_installation_of(to_install, package_set) + + # Only warn about directly-dependent packages; create a whitelist of them + whitelist = _create_whitelist(would_be_installed, package_set) + + return ( + package_set, + check_package_set( + package_set, should_ignore=lambda name: name not in whitelist + ), + ) + + +def _simulate_installation_of( + to_install: List[InstallRequirement], package_set: PackageSet +) -> Set[NormalizedName]: + """Computes the version of packages after installing to_install.""" + # Keep track of packages that were installed + installed = set() + + # Modify it as installing requirement_set would (assuming no errors) + for inst_req in to_install: + abstract_dist = make_distribution_for_install_requirement(inst_req) + dist = abstract_dist.get_metadata_distribution() + name = dist.canonical_name + package_set[name] = PackageDetails(dist.version, list(dist.iter_dependencies())) + + installed.add(name) + + return installed + + +def _create_whitelist( + would_be_installed: Set[NormalizedName], package_set: PackageSet +) -> Set[NormalizedName]: + packages_affected = set(would_be_installed) + + for package_name in package_set: + if package_name in packages_affected: + continue + + for req in package_set[package_name].dependencies: + if canonicalize_name(req.name) in packages_affected: + packages_affected.add(package_name) + break + + return packages_affected diff --git a/venv/Lib/site-packages/pip/_internal/operations/freeze.py b/venv/Lib/site-packages/pip/_internal/operations/freeze.py new file mode 100644 index 00000000..45655408 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/freeze.py @@ -0,0 +1,254 @@ +import collections +import logging +import os +from typing import Container, Dict, Iterable, Iterator, List, NamedTuple, Optional, Set + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_file import COMMENT_RE +from pip._internal.utils.direct_url_helpers import direct_url_as_pep440_direct_reference + +logger = logging.getLogger(__name__) + + +class _EditableInfo(NamedTuple): + requirement: str + comments: List[str] + + +def freeze( + requirement: Optional[List[str]] = None, + local_only: bool = False, + user_only: bool = False, + paths: Optional[List[str]] = None, + isolated: bool = False, + exclude_editable: bool = False, + skip: Container[str] = (), +) -> Iterator[str]: + installations: Dict[str, FrozenRequirement] = {} + + dists = get_environment(paths).iter_installed_distributions( + local_only=local_only, + skip=(), + user_only=user_only, + ) + for dist in dists: + req = FrozenRequirement.from_dist(dist) + if exclude_editable and req.editable: + continue + installations[req.canonical_name] = req + + if requirement: + # the options that don't get turned into an InstallRequirement + # should only be emitted once, even if the same option is in multiple + # requirements files, so we need to keep track of what has been emitted + # so that we don't emit it again if it's seen again + emitted_options: Set[str] = set() + # keep track of which files a requirement is in so that we can + # give an accurate warning if a requirement appears multiple times. + req_files: Dict[str, List[str]] = collections.defaultdict(list) + for req_file_path in requirement: + with open(req_file_path) as req_file: + for line in req_file: + if ( + not line.strip() + or line.strip().startswith("#") + or line.startswith( + ( + "-r", + "--requirement", + "-f", + "--find-links", + "-i", + "--index-url", + "--pre", + "--trusted-host", + "--process-dependency-links", + "--extra-index-url", + "--use-feature", + ) + ) + ): + line = line.rstrip() + if line not in emitted_options: + emitted_options.add(line) + yield line + continue + + if line.startswith("-e") or line.startswith("--editable"): + if line.startswith("-e"): + line = line[2:].strip() + else: + line = line[len("--editable") :].strip().lstrip("=") + line_req = install_req_from_editable( + line, + isolated=isolated, + ) + else: + line_req = install_req_from_line( + COMMENT_RE.sub("", line).strip(), + isolated=isolated, + ) + + if not line_req.name: + logger.info( + "Skipping line in requirement file [%s] because " + "it's not clear what it would install: %s", + req_file_path, + line.strip(), + ) + logger.info( + " (add #egg=PackageName to the URL to avoid" + " this warning)" + ) + else: + line_req_canonical_name = canonicalize_name(line_req.name) + if line_req_canonical_name not in installations: + # either it's not installed, or it is installed + # but has been processed already + if not req_files[line_req.name]: + logger.warning( + "Requirement file [%s] contains %s, but " + "package %r is not installed", + req_file_path, + COMMENT_RE.sub("", line).strip(), + line_req.name, + ) + else: + req_files[line_req.name].append(req_file_path) + else: + yield str(installations[line_req_canonical_name]).rstrip() + del installations[line_req_canonical_name] + req_files[line_req.name].append(req_file_path) + + # Warn about requirements that were included multiple times (in a + # single requirements file or in different requirements files). + for name, files in req_files.items(): + if len(files) > 1: + logger.warning( + "Requirement %s included multiple times [%s]", + name, + ", ".join(sorted(set(files))), + ) + + yield ("## The following requirements were added by pip freeze:") + for installation in sorted(installations.values(), key=lambda x: x.name.lower()): + if installation.canonical_name not in skip: + yield str(installation).rstrip() + + +def _format_as_name_version(dist: BaseDistribution) -> str: + if isinstance(dist.version, Version): + return f"{dist.raw_name}=={dist.version}" + return f"{dist.raw_name}==={dist.version}" + + +def _get_editable_info(dist: BaseDistribution) -> _EditableInfo: + """ + Compute and return values (req, comments) for use in + FrozenRequirement.from_dist(). + """ + editable_project_location = dist.editable_project_location + assert editable_project_location + location = os.path.normcase(os.path.abspath(editable_project_location)) + + from pip._internal.vcs import RemoteNotFoundError, RemoteNotValidError, vcs + + vcs_backend = vcs.get_backend_for_dir(location) + + if vcs_backend is None: + display = _format_as_name_version(dist) + logger.debug( + 'No VCS found for editable requirement "%s" in: %r', + display, + location, + ) + return _EditableInfo( + requirement=location, + comments=[f"# Editable install with no version control ({display})"], + ) + + vcs_name = type(vcs_backend).__name__ + + try: + req = vcs_backend.get_src_requirement(location, dist.raw_name) + except RemoteNotFoundError: + display = _format_as_name_version(dist) + return _EditableInfo( + requirement=location, + comments=[f"# Editable {vcs_name} install with no remote ({display})"], + ) + except RemoteNotValidError as ex: + display = _format_as_name_version(dist) + return _EditableInfo( + requirement=location, + comments=[ + f"# Editable {vcs_name} install ({display}) with either a deleted " + f"local remote or invalid URI:", + f"# '{ex.url}'", + ], + ) + except BadCommand: + logger.warning( + "cannot determine version of editable source in %s " + "(%s command not found in path)", + location, + vcs_backend.name, + ) + return _EditableInfo(requirement=location, comments=[]) + except InstallationError as exc: + logger.warning("Error when trying to get requirement for VCS system %s", exc) + else: + return _EditableInfo(requirement=req, comments=[]) + + logger.warning("Could not determine repository location of %s", location) + + return _EditableInfo( + requirement=location, + comments=["## !! Could not determine repository location"], + ) + + +class FrozenRequirement: + def __init__( + self, + name: str, + req: str, + editable: bool, + comments: Iterable[str] = (), + ) -> None: + self.name = name + self.canonical_name = canonicalize_name(name) + self.req = req + self.editable = editable + self.comments = comments + + @classmethod + def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": + editable = dist.editable + if editable: + req, comments = _get_editable_info(dist) + else: + comments = [] + direct_url = dist.direct_url + if direct_url: + # if PEP 610 metadata is present, use it + req = direct_url_as_pep440_direct_reference(direct_url, dist.raw_name) + else: + # name==version requirement + req = _format_as_name_version(dist) + + return cls(dist.raw_name, req, editable, comments=comments) + + def __str__(self) -> str: + req = self.req + if self.editable: + req = f"-e {req}" + return "\n".join(list(self.comments) + [str(req)]) + "\n" diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py b/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py new file mode 100644 index 00000000..24d6a5dd --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py @@ -0,0 +1,2 @@ +"""For modules related to installing packages. +""" diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py b/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py new file mode 100644 index 00000000..5bd72ca1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py @@ -0,0 +1,46 @@ +"""Legacy editable installation process, i.e. `setup.py develop`. +""" +import logging +from typing import List, Optional, Sequence + +from pip._internal.build_env import BuildEnvironment +from pip._internal.utils.logging import indent_log +from pip._internal.utils.setuptools_build import make_setuptools_develop_args +from pip._internal.utils.subprocess import call_subprocess + +logger = logging.getLogger(__name__) + + +def install_editable( + install_options: List[str], + global_options: Sequence[str], + prefix: Optional[str], + home: Optional[str], + use_user_site: bool, + name: str, + setup_py_path: str, + isolated: bool, + build_env: BuildEnvironment, + unpacked_source_directory: str, +) -> None: + """Install a package in editable mode. Most arguments are pass-through + to setuptools. + """ + logger.info("Running setup.py develop for %s", name) + + args = make_setuptools_develop_args( + setup_py_path, + global_options=global_options, + install_options=install_options, + no_user_config=isolated, + prefix=prefix, + home=home, + use_user_site=use_user_site, + ) + + with indent_log(): + with build_env: + call_subprocess( + args, + cwd=unpacked_source_directory, + ) diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py b/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py new file mode 100644 index 00000000..2206c930 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py @@ -0,0 +1,125 @@ +"""Legacy installation process, i.e. `setup.py install`. +""" + +import logging +import os +from distutils.util import change_root +from typing import List, Optional, Sequence + +from pip._internal.build_env import BuildEnvironment +from pip._internal.exceptions import InstallationError +from pip._internal.models.scheme import Scheme +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir +from pip._internal.utils.setuptools_build import make_setuptools_install_args +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class LegacyInstallFailure(Exception): + pass + + +def write_installed_files_from_setuptools_record( + record_lines: List[str], + root: Optional[str], + req_description: str, +) -> None: + def prepend_root(path: str) -> str: + if root is None or not os.path.isabs(path): + return path + else: + return change_root(root, path) + + for line in record_lines: + directory = os.path.dirname(line) + if directory.endswith(".egg-info"): + egg_info_dir = prepend_root(directory) + break + else: + message = ( + "{} did not indicate that it installed an " + ".egg-info directory. Only setup.py projects " + "generating .egg-info directories are supported." + ).format(req_description) + raise InstallationError(message) + + new_lines = [] + for line in record_lines: + filename = line.strip() + if os.path.isdir(filename): + filename += os.path.sep + new_lines.append(os.path.relpath(prepend_root(filename), egg_info_dir)) + new_lines.sort() + ensure_dir(egg_info_dir) + inst_files_path = os.path.join(egg_info_dir, "installed-files.txt") + with open(inst_files_path, "w") as f: + f.write("\n".join(new_lines) + "\n") + + +def install( + install_options: List[str], + global_options: Sequence[str], + root: Optional[str], + home: Optional[str], + prefix: Optional[str], + use_user_site: bool, + pycompile: bool, + scheme: Scheme, + setup_py_path: str, + isolated: bool, + req_name: str, + build_env: BuildEnvironment, + unpacked_source_directory: str, + req_description: str, +) -> bool: + + header_dir = scheme.headers + + with TempDirectory(kind="record") as temp_dir: + try: + record_filename = os.path.join(temp_dir.path, "install-record.txt") + install_args = make_setuptools_install_args( + setup_py_path, + global_options=global_options, + install_options=install_options, + record_filename=record_filename, + root=root, + prefix=prefix, + header_dir=header_dir, + home=home, + use_user_site=use_user_site, + no_user_config=isolated, + pycompile=pycompile, + ) + + runner = runner_with_spinner_message( + f"Running setup.py install for {req_name}" + ) + with indent_log(), build_env: + runner( + cmd=install_args, + cwd=unpacked_source_directory, + ) + + if not os.path.exists(record_filename): + logger.debug("Record file %s not found", record_filename) + # Signal to the caller that we didn't install the new package + return False + + except Exception as e: + # Signal to the caller that we didn't install the new package + raise LegacyInstallFailure from e + + # At this point, we have successfully installed the requirement. + + # We intentionally do not use any encoding to read the file because + # setuptools writes the file using distutils.file_util.write_file, + # which does not specify an encoding. + with open(record_filename) as f: + record_lines = f.read().splitlines() + + write_installed_files_from_setuptools_record(record_lines, root, req_description) + return True diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py b/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py new file mode 100644 index 00000000..e191b134 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py @@ -0,0 +1,738 @@ +"""Support for installing and building the "wheel" binary package format. +""" + +import collections +import compileall +import contextlib +import csv +import importlib +import logging +import os.path +import re +import shutil +import sys +import warnings +from base64 import urlsafe_b64encode +from email.message import Message +from itertools import chain, filterfalse, starmap +from typing import ( + IO, + TYPE_CHECKING, + Any, + BinaryIO, + Callable, + Dict, + Iterable, + Iterator, + List, + NewType, + Optional, + Sequence, + Set, + Tuple, + Union, + cast, +) +from zipfile import ZipFile, ZipInfo + +from pip._vendor.distlib.scripts import ScriptMaker +from pip._vendor.distlib.util import get_export_entry +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_major_minor_version +from pip._internal.metadata import ( + BaseDistribution, + FilesystemWheel, + get_wheel_distribution, +) +from pip._internal.models.direct_url import DIRECT_URL_METADATA_NAME, DirectUrl +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import captured_stdout, ensure_dir, hash_file, partition +from pip._internal.utils.unpacking import ( + current_umask, + is_within_directory, + set_extracted_file_to_default_mode_plus_executable, + zip_item_is_executable, +) +from pip._internal.utils.wheel import parse_wheel + +if TYPE_CHECKING: + from typing import Protocol + + class File(Protocol): + src_record_path: "RecordPath" + dest_path: str + changed: bool + + def save(self) -> None: + pass + + +logger = logging.getLogger(__name__) + +RecordPath = NewType("RecordPath", str) +InstalledCSVRow = Tuple[RecordPath, str, Union[int, str]] + + +def rehash(path: str, blocksize: int = 1 << 20) -> Tuple[str, str]: + """Return (encoded_digest, length) for path using hashlib.sha256()""" + h, length = hash_file(path, blocksize) + digest = "sha256=" + urlsafe_b64encode(h.digest()).decode("latin1").rstrip("=") + return (digest, str(length)) + + +def csv_io_kwargs(mode: str) -> Dict[str, Any]: + """Return keyword arguments to properly open a CSV file + in the given mode. + """ + return {"mode": mode, "newline": "", "encoding": "utf-8"} + + +def fix_script(path: str) -> bool: + """Replace #!python with #!/path/to/python + Return True if file was changed. + """ + # XXX RECORD hashes will need to be updated + assert os.path.isfile(path) + + with open(path, "rb") as script: + firstline = script.readline() + if not firstline.startswith(b"#!python"): + return False + exename = sys.executable.encode(sys.getfilesystemencoding()) + firstline = b"#!" + exename + os.linesep.encode("ascii") + rest = script.read() + with open(path, "wb") as script: + script.write(firstline) + script.write(rest) + return True + + +def wheel_root_is_purelib(metadata: Message) -> bool: + return metadata.get("Root-Is-Purelib", "").lower() == "true" + + +def get_entrypoints(dist: BaseDistribution) -> Tuple[Dict[str, str], Dict[str, str]]: + console_scripts = {} + gui_scripts = {} + for entry_point in dist.iter_entry_points(): + if entry_point.group == "console_scripts": + console_scripts[entry_point.name] = entry_point.value + elif entry_point.group == "gui_scripts": + gui_scripts[entry_point.name] = entry_point.value + return console_scripts, gui_scripts + + +def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optional[str]: + """Determine if any scripts are not on PATH and format a warning. + Returns a warning message if one or more scripts are not on PATH, + otherwise None. + """ + if not scripts: + return None + + # Group scripts by the path they were installed in + grouped_by_dir: Dict[str, Set[str]] = collections.defaultdict(set) + for destfile in scripts: + parent_dir = os.path.dirname(destfile) + script_name = os.path.basename(destfile) + grouped_by_dir[parent_dir].add(script_name) + + # We don't want to warn for directories that are on PATH. + not_warn_dirs = [ + os.path.normcase(i).rstrip(os.sep) + for i in os.environ.get("PATH", "").split(os.pathsep) + ] + # If an executable sits with sys.executable, we don't warn for it. + # This covers the case of venv invocations without activating the venv. + not_warn_dirs.append(os.path.normcase(os.path.dirname(sys.executable))) + warn_for: Dict[str, Set[str]] = { + parent_dir: scripts + for parent_dir, scripts in grouped_by_dir.items() + if os.path.normcase(parent_dir) not in not_warn_dirs + } + if not warn_for: + return None + + # Format a message + msg_lines = [] + for parent_dir, dir_scripts in warn_for.items(): + sorted_scripts: List[str] = sorted(dir_scripts) + if len(sorted_scripts) == 1: + start_text = "script {} is".format(sorted_scripts[0]) + else: + start_text = "scripts {} are".format( + ", ".join(sorted_scripts[:-1]) + " and " + sorted_scripts[-1] + ) + + msg_lines.append( + "The {} installed in '{}' which is not on PATH.".format( + start_text, parent_dir + ) + ) + + last_line_fmt = ( + "Consider adding {} to PATH or, if you prefer " + "to suppress this warning, use --no-warn-script-location." + ) + if len(msg_lines) == 1: + msg_lines.append(last_line_fmt.format("this directory")) + else: + msg_lines.append(last_line_fmt.format("these directories")) + + # Add a note if any directory starts with ~ + warn_for_tilde = any( + i[0] == "~" for i in os.environ.get("PATH", "").split(os.pathsep) if i + ) + if warn_for_tilde: + tilde_warning_msg = ( + "NOTE: The current PATH contains path(s) starting with `~`, " + "which may not be expanded by all applications." + ) + msg_lines.append(tilde_warning_msg) + + # Returns the formatted multiline message + return "\n".join(msg_lines) + + +def _normalized_outrows( + outrows: Iterable[InstalledCSVRow], +) -> List[Tuple[str, str, str]]: + """Normalize the given rows of a RECORD file. + + Items in each row are converted into str. Rows are then sorted to make + the value more predictable for tests. + + Each row is a 3-tuple (path, hash, size) and corresponds to a record of + a RECORD file (see PEP 376 and PEP 427 for details). For the rows + passed to this function, the size can be an integer as an int or string, + or the empty string. + """ + # Normally, there should only be one row per path, in which case the + # second and third elements don't come into play when sorting. + # However, in cases in the wild where a path might happen to occur twice, + # we don't want the sort operation to trigger an error (but still want + # determinism). Since the third element can be an int or string, we + # coerce each element to a string to avoid a TypeError in this case. + # For additional background, see-- + # https://github.com/pypa/pip/issues/5868 + return sorted( + (record_path, hash_, str(size)) for record_path, hash_, size in outrows + ) + + +def _record_to_fs_path(record_path: RecordPath) -> str: + return record_path + + +def _fs_to_record_path(path: str, relative_to: Optional[str] = None) -> RecordPath: + if relative_to is not None: + # On Windows, do not handle relative paths if they belong to different + # logical disks + if ( + os.path.splitdrive(path)[0].lower() + == os.path.splitdrive(relative_to)[0].lower() + ): + path = os.path.relpath(path, relative_to) + path = path.replace(os.path.sep, "/") + return cast("RecordPath", path) + + +def get_csv_rows_for_installed( + old_csv_rows: List[List[str]], + installed: Dict[RecordPath, RecordPath], + changed: Set[RecordPath], + generated: List[str], + lib_dir: str, +) -> List[InstalledCSVRow]: + """ + :param installed: A map from archive RECORD path to installation RECORD + path. + """ + installed_rows: List[InstalledCSVRow] = [] + for row in old_csv_rows: + if len(row) > 3: + logger.warning("RECORD line has more than three elements: %s", row) + old_record_path = cast("RecordPath", row[0]) + new_record_path = installed.pop(old_record_path, old_record_path) + if new_record_path in changed: + digest, length = rehash(_record_to_fs_path(new_record_path)) + else: + digest = row[1] if len(row) > 1 else "" + length = row[2] if len(row) > 2 else "" + installed_rows.append((new_record_path, digest, length)) + for f in generated: + path = _fs_to_record_path(f, lib_dir) + digest, length = rehash(f) + installed_rows.append((path, digest, length)) + for installed_record_path in installed.values(): + installed_rows.append((installed_record_path, "", "")) + return installed_rows + + +def get_console_script_specs(console: Dict[str, str]) -> List[str]: + """ + Given the mapping from entrypoint name to callable, return the relevant + console script specs. + """ + # Don't mutate caller's version + console = console.copy() + + scripts_to_generate = [] + + # Special case pip and setuptools to generate versioned wrappers + # + # The issue is that some projects (specifically, pip and setuptools) use + # code in setup.py to create "versioned" entry points - pip2.7 on Python + # 2.7, pip3.3 on Python 3.3, etc. But these entry points are baked into + # the wheel metadata at build time, and so if the wheel is installed with + # a *different* version of Python the entry points will be wrong. The + # correct fix for this is to enhance the metadata to be able to describe + # such versioned entry points, but that won't happen till Metadata 2.0 is + # available. + # In the meantime, projects using versioned entry points will either have + # incorrect versioned entry points, or they will not be able to distribute + # "universal" wheels (i.e., they will need a wheel per Python version). + # + # Because setuptools and pip are bundled with _ensurepip and virtualenv, + # we need to use universal wheels. So, as a stopgap until Metadata 2.0, we + # override the versioned entry points in the wheel and generate the + # correct ones. This code is purely a short-term measure until Metadata 2.0 + # is available. + # + # To add the level of hack in this section of code, in order to support + # ensurepip this code will look for an ``ENSUREPIP_OPTIONS`` environment + # variable which will control which version scripts get installed. + # + # ENSUREPIP_OPTIONS=altinstall + # - Only pipX.Y and easy_install-X.Y will be generated and installed + # ENSUREPIP_OPTIONS=install + # - pipX.Y, pipX, easy_install-X.Y will be generated and installed. Note + # that this option is technically if ENSUREPIP_OPTIONS is set and is + # not altinstall + # DEFAULT + # - The default behavior is to install pip, pipX, pipX.Y, easy_install + # and easy_install-X.Y. + pip_script = console.pop("pip", None) + if pip_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append("pip = " + pip_script) + + if os.environ.get("ENSUREPIP_OPTIONS", "") != "altinstall": + scripts_to_generate.append( + "pip{} = {}".format(sys.version_info[0], pip_script) + ) + + scripts_to_generate.append(f"pip{get_major_minor_version()} = {pip_script}") + # Delete any other versioned pip entry points + pip_ep = [k for k in console if re.match(r"pip(\d(\.\d)?)?$", k)] + for k in pip_ep: + del console[k] + easy_install_script = console.pop("easy_install", None) + if easy_install_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append("easy_install = " + easy_install_script) + + scripts_to_generate.append( + "easy_install-{} = {}".format( + get_major_minor_version(), easy_install_script + ) + ) + # Delete any other versioned easy_install entry points + easy_install_ep = [ + k for k in console if re.match(r"easy_install(-\d\.\d)?$", k) + ] + for k in easy_install_ep: + del console[k] + + # Generate the console entry points specified in the wheel + scripts_to_generate.extend(starmap("{} = {}".format, console.items())) + + return scripts_to_generate + + +class ZipBackedFile: + def __init__( + self, src_record_path: RecordPath, dest_path: str, zip_file: ZipFile + ) -> None: + self.src_record_path = src_record_path + self.dest_path = dest_path + self._zip_file = zip_file + self.changed = False + + def _getinfo(self) -> ZipInfo: + return self._zip_file.getinfo(self.src_record_path) + + def save(self) -> None: + # directory creation is lazy and after file filtering + # to ensure we don't install empty dirs; empty dirs can't be + # uninstalled. + parent_dir = os.path.dirname(self.dest_path) + ensure_dir(parent_dir) + + # When we open the output file below, any existing file is truncated + # before we start writing the new contents. This is fine in most + # cases, but can cause a segfault if pip has loaded a shared + # object (e.g. from pyopenssl through its vendored urllib3) + # Since the shared object is mmap'd an attempt to call a + # symbol in it will then cause a segfault. Unlinking the file + # allows writing of new contents while allowing the process to + # continue to use the old copy. + if os.path.exists(self.dest_path): + os.unlink(self.dest_path) + + zipinfo = self._getinfo() + + with self._zip_file.open(zipinfo) as f: + with open(self.dest_path, "wb") as dest: + shutil.copyfileobj(f, dest) + + if zip_item_is_executable(zipinfo): + set_extracted_file_to_default_mode_plus_executable(self.dest_path) + + +class ScriptFile: + def __init__(self, file: "File") -> None: + self._file = file + self.src_record_path = self._file.src_record_path + self.dest_path = self._file.dest_path + self.changed = False + + def save(self) -> None: + self._file.save() + self.changed = fix_script(self.dest_path) + + +class MissingCallableSuffix(InstallationError): + def __init__(self, entry_point: str) -> None: + super().__init__( + "Invalid script entry point: {} - A callable " + "suffix is required. Cf https://packaging.python.org/" + "specifications/entry-points/#use-for-scripts for more " + "information.".format(entry_point) + ) + + +def _raise_for_invalid_entrypoint(specification: str) -> None: + entry = get_export_entry(specification) + if entry is not None and entry.suffix is None: + raise MissingCallableSuffix(str(entry)) + + +class PipScriptMaker(ScriptMaker): + def make(self, specification: str, options: Dict[str, Any] = None) -> List[str]: + _raise_for_invalid_entrypoint(specification) + return super().make(specification, options) + + +def _install_wheel( + name: str, + wheel_zip: ZipFile, + wheel_path: str, + scheme: Scheme, + pycompile: bool = True, + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, +) -> None: + """Install a wheel. + + :param name: Name of the project to install + :param wheel_zip: open ZipFile for wheel being installed + :param scheme: Distutils scheme dictating the install directories + :param req_description: String used in place of the requirement, for + logging + :param pycompile: Whether to byte-compile installed Python files + :param warn_script_location: Whether to check that scripts are installed + into a directory on PATH + :raises UnsupportedWheel: + * when the directory holds an unpacked wheel with incompatible + Wheel-Version + * when the .dist-info dir does not match the wheel + """ + info_dir, metadata = parse_wheel(wheel_zip, name) + + if wheel_root_is_purelib(metadata): + lib_dir = scheme.purelib + else: + lib_dir = scheme.platlib + + # Record details of the files moved + # installed = files copied from the wheel to the destination + # changed = files changed while installing (scripts #! line typically) + # generated = files newly generated during the install (script wrappers) + installed: Dict[RecordPath, RecordPath] = {} + changed: Set[RecordPath] = set() + generated: List[str] = [] + + def record_installed( + srcfile: RecordPath, destfile: str, modified: bool = False + ) -> None: + """Map archive RECORD paths to installation RECORD paths.""" + newpath = _fs_to_record_path(destfile, lib_dir) + installed[srcfile] = newpath + if modified: + changed.add(_fs_to_record_path(destfile)) + + def is_dir_path(path: RecordPath) -> bool: + return path.endswith("/") + + def assert_no_path_traversal(dest_dir_path: str, target_path: str) -> None: + if not is_within_directory(dest_dir_path, target_path): + message = ( + "The wheel {!r} has a file {!r} trying to install" + " outside the target directory {!r}" + ) + raise InstallationError( + message.format(wheel_path, target_path, dest_dir_path) + ) + + def root_scheme_file_maker( + zip_file: ZipFile, dest: str + ) -> Callable[[RecordPath], "File"]: + def make_root_scheme_file(record_path: RecordPath) -> "File": + normed_path = os.path.normpath(record_path) + dest_path = os.path.join(dest, normed_path) + assert_no_path_traversal(dest, dest_path) + return ZipBackedFile(record_path, dest_path, zip_file) + + return make_root_scheme_file + + def data_scheme_file_maker( + zip_file: ZipFile, scheme: Scheme + ) -> Callable[[RecordPath], "File"]: + scheme_paths = {key: getattr(scheme, key) for key in SCHEME_KEYS} + + def make_data_scheme_file(record_path: RecordPath) -> "File": + normed_path = os.path.normpath(record_path) + try: + _, scheme_key, dest_subpath = normed_path.split(os.path.sep, 2) + except ValueError: + message = ( + "Unexpected file in {}: {!r}. .data directory contents" + " should be named like: '/'." + ).format(wheel_path, record_path) + raise InstallationError(message) + + try: + scheme_path = scheme_paths[scheme_key] + except KeyError: + valid_scheme_keys = ", ".join(sorted(scheme_paths)) + message = ( + "Unknown scheme key used in {}: {} (for file {!r}). .data" + " directory contents should be in subdirectories named" + " with a valid scheme key ({})" + ).format(wheel_path, scheme_key, record_path, valid_scheme_keys) + raise InstallationError(message) + + dest_path = os.path.join(scheme_path, dest_subpath) + assert_no_path_traversal(scheme_path, dest_path) + return ZipBackedFile(record_path, dest_path, zip_file) + + return make_data_scheme_file + + def is_data_scheme_path(path: RecordPath) -> bool: + return path.split("/", 1)[0].endswith(".data") + + paths = cast(List[RecordPath], wheel_zip.namelist()) + file_paths = filterfalse(is_dir_path, paths) + root_scheme_paths, data_scheme_paths = partition(is_data_scheme_path, file_paths) + + make_root_scheme_file = root_scheme_file_maker(wheel_zip, lib_dir) + files: Iterator[File] = map(make_root_scheme_file, root_scheme_paths) + + def is_script_scheme_path(path: RecordPath) -> bool: + parts = path.split("/", 2) + return len(parts) > 2 and parts[0].endswith(".data") and parts[1] == "scripts" + + other_scheme_paths, script_scheme_paths = partition( + is_script_scheme_path, data_scheme_paths + ) + + make_data_scheme_file = data_scheme_file_maker(wheel_zip, scheme) + other_scheme_files = map(make_data_scheme_file, other_scheme_paths) + files = chain(files, other_scheme_files) + + # Get the defined entry points + distribution = get_wheel_distribution( + FilesystemWheel(wheel_path), + canonicalize_name(name), + ) + console, gui = get_entrypoints(distribution) + + def is_entrypoint_wrapper(file: "File") -> bool: + # EP, EP.exe and EP-script.py are scripts generated for + # entry point EP by setuptools + path = file.dest_path + name = os.path.basename(path) + if name.lower().endswith(".exe"): + matchname = name[:-4] + elif name.lower().endswith("-script.py"): + matchname = name[:-10] + elif name.lower().endswith(".pya"): + matchname = name[:-4] + else: + matchname = name + # Ignore setuptools-generated scripts + return matchname in console or matchname in gui + + script_scheme_files: Iterator[File] = map( + make_data_scheme_file, script_scheme_paths + ) + script_scheme_files = filterfalse(is_entrypoint_wrapper, script_scheme_files) + script_scheme_files = map(ScriptFile, script_scheme_files) + files = chain(files, script_scheme_files) + + for file in files: + file.save() + record_installed(file.src_record_path, file.dest_path, file.changed) + + def pyc_source_file_paths() -> Iterator[str]: + # We de-duplicate installation paths, since there can be overlap (e.g. + # file in .data maps to same location as file in wheel root). + # Sorting installation paths makes it easier to reproduce and debug + # issues related to permissions on existing files. + for installed_path in sorted(set(installed.values())): + full_installed_path = os.path.join(lib_dir, installed_path) + if not os.path.isfile(full_installed_path): + continue + if not full_installed_path.endswith(".py"): + continue + yield full_installed_path + + def pyc_output_path(path: str) -> str: + """Return the path the pyc file would have been written to.""" + return importlib.util.cache_from_source(path) + + # Compile all of the pyc files for the installed files + if pycompile: + with captured_stdout() as stdout: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + for path in pyc_source_file_paths(): + success = compileall.compile_file(path, force=True, quiet=True) + if success: + pyc_path = pyc_output_path(path) + assert os.path.exists(pyc_path) + pyc_record_path = cast( + "RecordPath", pyc_path.replace(os.path.sep, "/") + ) + record_installed(pyc_record_path, pyc_path) + logger.debug(stdout.getvalue()) + + maker = PipScriptMaker(None, scheme.scripts) + + # Ensure old scripts are overwritten. + # See https://github.com/pypa/pip/issues/1800 + maker.clobber = True + + # Ensure we don't generate any variants for scripts because this is almost + # never what somebody wants. + # See https://bitbucket.org/pypa/distlib/issue/35/ + maker.variants = {""} + + # This is required because otherwise distlib creates scripts that are not + # executable. + # See https://bitbucket.org/pypa/distlib/issue/32/ + maker.set_mode = True + + # Generate the console and GUI entry points specified in the wheel + scripts_to_generate = get_console_script_specs(console) + + gui_scripts_to_generate = list(starmap("{} = {}".format, gui.items())) + + generated_console_scripts = maker.make_multiple(scripts_to_generate) + generated.extend(generated_console_scripts) + + generated.extend(maker.make_multiple(gui_scripts_to_generate, {"gui": True})) + + if warn_script_location: + msg = message_about_scripts_not_on_PATH(generated_console_scripts) + if msg is not None: + logger.warning(msg) + + generated_file_mode = 0o666 & ~current_umask() + + @contextlib.contextmanager + def _generate_file(path: str, **kwargs: Any) -> Iterator[BinaryIO]: + with adjacent_tmp_file(path, **kwargs) as f: + yield f + os.chmod(f.name, generated_file_mode) + replace(f.name, path) + + dest_info_dir = os.path.join(lib_dir, info_dir) + + # Record pip as the installer + installer_path = os.path.join(dest_info_dir, "INSTALLER") + with _generate_file(installer_path) as installer_file: + installer_file.write(b"pip\n") + generated.append(installer_path) + + # Record the PEP 610 direct URL reference + if direct_url is not None: + direct_url_path = os.path.join(dest_info_dir, DIRECT_URL_METADATA_NAME) + with _generate_file(direct_url_path) as direct_url_file: + direct_url_file.write(direct_url.to_json().encode("utf-8")) + generated.append(direct_url_path) + + # Record the REQUESTED file + if requested: + requested_path = os.path.join(dest_info_dir, "REQUESTED") + with open(requested_path, "wb"): + pass + generated.append(requested_path) + + record_text = distribution.read_text("RECORD") + record_rows = list(csv.reader(record_text.splitlines())) + + rows = get_csv_rows_for_installed( + record_rows, + installed=installed, + changed=changed, + generated=generated, + lib_dir=lib_dir, + ) + + # Record details of all files installed + record_path = os.path.join(dest_info_dir, "RECORD") + + with _generate_file(record_path, **csv_io_kwargs("w")) as record_file: + # Explicitly cast to typing.IO[str] as a workaround for the mypy error: + # "writer" has incompatible type "BinaryIO"; expected "_Writer" + writer = csv.writer(cast("IO[str]", record_file)) + writer.writerows(_normalized_outrows(rows)) + + +@contextlib.contextmanager +def req_error_context(req_description: str) -> Iterator[None]: + try: + yield + except InstallationError as e: + message = "For req: {}. {}".format(req_description, e.args[0]) + raise InstallationError(message) from e + + +def install_wheel( + name: str, + wheel_path: str, + scheme: Scheme, + req_description: str, + pycompile: bool = True, + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, +) -> None: + with ZipFile(wheel_path, allowZip64=True) as z: + with req_error_context(req_description): + _install_wheel( + name=name, + wheel_zip=z, + wheel_path=wheel_path, + scheme=scheme, + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=requested, + ) diff --git a/venv/Lib/site-packages/pip/_internal/operations/prepare.py b/venv/Lib/site-packages/pip/_internal/operations/prepare.py new file mode 100644 index 00000000..34cf9a51 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/prepare.py @@ -0,0 +1,632 @@ +"""Prepares a distribution for installation +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import mimetypes +import os +import shutil +from typing import Dict, Iterable, List, Optional + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.distributions import make_distribution_for_install_requirement +from pip._internal.distributions.installed import InstalledDistribution +from pip._internal.exceptions import ( + DirectoryUrlHashUnsupported, + HashMismatch, + HashUnpinned, + InstallationError, + NetworkConnectionError, + PreviousBuildDirError, + VcsHashUnsupported, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.network.download import BatchDownloader, Downloader +from pip._internal.network.lazy_wheel import ( + HTTPRangeRequestUnsupported, + dist_from_wheel_url, +) +from pip._internal.network.session import PipSession +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_tracker import RequirementTracker +from pip._internal.utils.filesystem import copy2_fixed +from pip._internal.utils.hashes import Hashes, MissingHashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import display_path, hide_url, is_installable_dir, rmtree +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.unpacking import unpack_file +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + + +def _get_prepared_distribution( + req: InstallRequirement, + req_tracker: RequirementTracker, + finder: PackageFinder, + build_isolation: bool, +) -> BaseDistribution: + """Prepare a distribution for installation.""" + abstract_dist = make_distribution_for_install_requirement(req) + with req_tracker.track(req): + abstract_dist.prepare_distribution_metadata(finder, build_isolation) + return abstract_dist.get_metadata_distribution() + + +def unpack_vcs_link(link: Link, location: str) -> None: + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend is not None + vcs_backend.unpack(location, url=hide_url(link.url)) + + +class File: + def __init__(self, path: str, content_type: Optional[str]) -> None: + self.path = path + if content_type is None: + self.content_type = mimetypes.guess_type(path)[0] + else: + self.content_type = content_type + + +def get_http_url( + link: Link, + download: Downloader, + download_dir: Optional[str] = None, + hashes: Optional[Hashes] = None, +) -> File: + temp_dir = TempDirectory(kind="unpack", globally_managed=True) + # If a download dir is specified, is the file already downloaded there? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir(link, download_dir, hashes) + + if already_downloaded_path: + from_path = already_downloaded_path + content_type = None + else: + # let's download to a tmp dir + from_path, content_type = download(link, temp_dir.path) + if hashes: + hashes.check_against_path(from_path) + + return File(from_path, content_type) + + +def _copy2_ignoring_special_files(src: str, dest: str) -> None: + """Copying special files is not supported, but as a convenience to users + we skip errors copying them. This supports tools that may create e.g. + socket files in the project source directory. + """ + try: + copy2_fixed(src, dest) + except shutil.SpecialFileError as e: + # SpecialFileError may be raised due to either the source or + # destination. If the destination was the cause then we would actually + # care, but since the destination directory is deleted prior to + # copy we ignore all of them assuming it is caused by the source. + logger.warning( + "Ignoring special file error '%s' encountered copying %s to %s.", + str(e), + src, + dest, + ) + + +def _copy_source_tree(source: str, target: str) -> None: + target_abspath = os.path.abspath(target) + target_basename = os.path.basename(target_abspath) + target_dirname = os.path.dirname(target_abspath) + + def ignore(d: str, names: List[str]) -> List[str]: + skipped: List[str] = [] + if d == source: + # Pulling in those directories can potentially be very slow, + # exclude the following directories if they appear in the top + # level dir (and only it). + # See discussion at https://github.com/pypa/pip/pull/6770 + skipped += [".tox", ".nox"] + if os.path.abspath(d) == target_dirname: + # Prevent an infinite recursion if the target is in source. + # This can happen when TMPDIR is set to ${PWD}/... + # and we copy PWD to TMPDIR. + skipped += [target_basename] + return skipped + + shutil.copytree( + source, + target, + ignore=ignore, + symlinks=True, + copy_function=_copy2_ignoring_special_files, + ) + + +def get_file_url( + link: Link, download_dir: Optional[str] = None, hashes: Optional[Hashes] = None +) -> File: + """Get file and optionally check its hash.""" + # If a download dir is specified, is the file already there and valid? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir(link, download_dir, hashes) + + if already_downloaded_path: + from_path = already_downloaded_path + else: + from_path = link.file_path + + # If --require-hashes is off, `hashes` is either empty, the + # link's embedded hash, or MissingHashes; it is required to + # match. If --require-hashes is on, we are satisfied by any + # hash in `hashes` matching: a URL-based or an option-based + # one; no internet-sourced hash will be in `hashes`. + if hashes: + hashes.check_against_path(from_path) + return File(from_path, None) + + +def unpack_url( + link: Link, + location: str, + download: Downloader, + download_dir: Optional[str] = None, + hashes: Optional[Hashes] = None, +) -> Optional[File]: + """Unpack link into location, downloading if required. + + :param hashes: A Hashes object, one of whose embedded hashes must match, + or HashMismatch will be raised. If the Hashes is empty, no matches are + required, and unhashable types of requirements (like VCS ones, which + would ordinarily raise HashUnsupported) are allowed. + """ + # non-editable vcs urls + if link.is_vcs: + unpack_vcs_link(link, location) + return None + + # Once out-of-tree-builds are no longer supported, could potentially + # replace the below condition with `assert not link.is_existing_dir` + # - unpack_url does not need to be called for in-tree-builds. + # + # As further cleanup, _copy_source_tree and accompanying tests can + # be removed. + # + # TODO when use-deprecated=out-of-tree-build is removed + if link.is_existing_dir(): + if os.path.isdir(location): + rmtree(location) + _copy_source_tree(link.file_path, location) + return None + + # file urls + if link.is_file: + file = get_file_url(link, download_dir, hashes=hashes) + + # http urls + else: + file = get_http_url( + link, + download, + download_dir, + hashes=hashes, + ) + + # unpack the archive to the build dir location. even when only downloading + # archives, they have to be unpacked to parse dependencies, except wheels + if not link.is_wheel: + unpack_file(file.path, location, file.content_type) + + return file + + +def _check_download_dir( + link: Link, download_dir: str, hashes: Optional[Hashes] +) -> Optional[str]: + """Check download_dir for previously downloaded file with correct hash + If a correct file is found return its path else None + """ + download_path = os.path.join(download_dir, link.filename) + + if not os.path.exists(download_path): + return None + + # If already downloaded, does its hash match? + logger.info("File was already downloaded %s", download_path) + if hashes: + try: + hashes.check_against_path(download_path) + except HashMismatch: + logger.warning( + "Previously-downloaded file %s has bad hash. Re-downloading.", + download_path, + ) + os.unlink(download_path) + return None + return download_path + + +class RequirementPreparer: + """Prepares a Requirement""" + + def __init__( + self, + build_dir: str, + download_dir: Optional[str], + src_dir: str, + build_isolation: bool, + req_tracker: RequirementTracker, + session: PipSession, + progress_bar: str, + finder: PackageFinder, + require_hashes: bool, + use_user_site: bool, + lazy_wheel: bool, + in_tree_build: bool, + ) -> None: + super().__init__() + + self.src_dir = src_dir + self.build_dir = build_dir + self.req_tracker = req_tracker + self._session = session + self._download = Downloader(session, progress_bar) + self._batch_download = BatchDownloader(session, progress_bar) + self.finder = finder + + # Where still-packed archives should be written to. If None, they are + # not saved, and are deleted immediately after unpacking. + self.download_dir = download_dir + + # Is build isolation allowed? + self.build_isolation = build_isolation + + # Should hash-checking be required? + self.require_hashes = require_hashes + + # Should install in user site-packages? + self.use_user_site = use_user_site + + # Should wheels be downloaded lazily? + self.use_lazy_wheel = lazy_wheel + + # Should in-tree builds be used for local paths? + self.in_tree_build = in_tree_build + + # Memoized downloaded files, as mapping of url: path. + self._downloaded: Dict[str, str] = {} + + # Previous "header" printed for a link-based InstallRequirement + self._previous_requirement_header = ("", "") + + def _log_preparing_link(self, req: InstallRequirement) -> None: + """Provide context for the requirement being prepared.""" + if req.link.is_file and not req.original_link_is_in_wheel_cache: + message = "Processing %s" + information = str(display_path(req.link.file_path)) + else: + message = "Collecting %s" + information = str(req.req or req) + + if (message, information) != self._previous_requirement_header: + self._previous_requirement_header = (message, information) + logger.info(message, information) + + if req.original_link_is_in_wheel_cache: + with indent_log(): + logger.info("Using cached %s", req.link.filename) + + def _ensure_link_req_src_dir( + self, req: InstallRequirement, parallel_builds: bool + ) -> None: + """Ensure source_dir of a linked InstallRequirement.""" + # Since source_dir is only set for editable requirements. + if req.link.is_wheel: + # We don't need to unpack wheels, so no need for a source + # directory. + return + assert req.source_dir is None + if req.link.is_existing_dir() and self.in_tree_build: + # build local directories in-tree + req.source_dir = req.link.file_path + return + + # We always delete unpacked sdists after pip runs. + req.ensure_has_source_dir( + self.build_dir, + autodelete=True, + parallel_builds=parallel_builds, + ) + + # If a checkout exists, it's unwise to keep going. version + # inconsistencies are logged later, but do not fail the + # installation. + # FIXME: this won't upgrade when there's an existing + # package unpacked in `req.source_dir` + # TODO: this check is now probably dead code + if is_installable_dir(req.source_dir): + raise PreviousBuildDirError( + "pip can't proceed with requirements '{}' due to a" + "pre-existing build directory ({}). This is likely " + "due to a previous installation that failed . pip is " + "being responsible and not assuming it can delete this. " + "Please delete it and try again.".format(req, req.source_dir) + ) + + def _get_linked_req_hashes(self, req: InstallRequirement) -> Hashes: + # By the time this is called, the requirement's link should have + # been checked so we can tell what kind of requirements req is + # and raise some more informative errors than otherwise. + # (For example, we can raise VcsHashUnsupported for a VCS URL + # rather than HashMissing.) + if not self.require_hashes: + return req.hashes(trust_internet=True) + + # We could check these first 2 conditions inside unpack_url + # and save repetition of conditions, but then we would + # report less-useful error messages for unhashable + # requirements, complaining that there's no hash provided. + if req.link.is_vcs: + raise VcsHashUnsupported() + if req.link.is_existing_dir(): + raise DirectoryUrlHashUnsupported() + + # Unpinned packages are asking for trouble when a new version + # is uploaded. This isn't a security check, but it saves users + # a surprising hash mismatch in the future. + # file:/// URLs aren't pinnable, so don't complain about them + # not being pinned. + if req.original_link is None and not req.is_pinned: + raise HashUnpinned() + + # If known-good hashes are missing for this requirement, + # shim it with a facade object that will provoke hash + # computation and then raise a HashMissing exception + # showing the user what the hash should be. + return req.hashes(trust_internet=False) or MissingHashes() + + def _fetch_metadata_using_lazy_wheel( + self, + link: Link, + ) -> Optional[BaseDistribution]: + """Fetch metadata using lazy wheel, if possible.""" + if not self.use_lazy_wheel: + return None + if self.require_hashes: + logger.debug("Lazy wheel is not used as hash checking is required") + return None + if link.is_file or not link.is_wheel: + logger.debug( + "Lazy wheel is not used as %r does not points to a remote wheel", + link, + ) + return None + + wheel = Wheel(link.filename) + name = canonicalize_name(wheel.name) + logger.info( + "Obtaining dependency information from %s %s", + name, + wheel.version, + ) + url = link.url.split("#", 1)[0] + try: + return dist_from_wheel_url(name, url, self._session) + except HTTPRangeRequestUnsupported: + logger.debug("%s does not support range requests", url) + return None + + def _complete_partial_requirements( + self, + partially_downloaded_reqs: Iterable[InstallRequirement], + parallel_builds: bool = False, + ) -> None: + """Download any requirements which were only fetched by metadata.""" + # Download to a temporary directory. These will be copied over as + # needed for downstream 'download', 'wheel', and 'install' commands. + temp_dir = TempDirectory(kind="unpack", globally_managed=True).path + + # Map each link to the requirement that owns it. This allows us to set + # `req.local_file_path` on the appropriate requirement after passing + # all the links at once into BatchDownloader. + links_to_fully_download: Dict[Link, InstallRequirement] = {} + for req in partially_downloaded_reqs: + assert req.link + links_to_fully_download[req.link] = req + + batch_download = self._batch_download( + links_to_fully_download.keys(), + temp_dir, + ) + for link, (filepath, _) in batch_download: + logger.debug("Downloading link %s to %s", link, filepath) + req = links_to_fully_download[link] + req.local_file_path = filepath + + # This step is necessary to ensure all lazy wheels are processed + # successfully by the 'download', 'wheel', and 'install' commands. + for req in partially_downloaded_reqs: + self._prepare_linked_requirement(req, parallel_builds) + + def prepare_linked_requirement( + self, req: InstallRequirement, parallel_builds: bool = False + ) -> BaseDistribution: + """Prepare a requirement to be obtained from req.link.""" + assert req.link + link = req.link + self._log_preparing_link(req) + with indent_log(): + # Check if the relevant file is already available + # in the download directory + file_path = None + if self.download_dir is not None and link.is_wheel: + hashes = self._get_linked_req_hashes(req) + file_path = _check_download_dir(req.link, self.download_dir, hashes) + + if file_path is not None: + # The file is already available, so mark it as downloaded + self._downloaded[req.link.url] = file_path + else: + # The file is not available, attempt to fetch only metadata + wheel_dist = self._fetch_metadata_using_lazy_wheel(link) + if wheel_dist is not None: + req.needs_more_preparation = True + return wheel_dist + + # None of the optimizations worked, fully prepare the requirement + return self._prepare_linked_requirement(req, parallel_builds) + + def prepare_linked_requirements_more( + self, reqs: Iterable[InstallRequirement], parallel_builds: bool = False + ) -> None: + """Prepare linked requirements more, if needed.""" + reqs = [req for req in reqs if req.needs_more_preparation] + for req in reqs: + # Determine if any of these requirements were already downloaded. + if self.download_dir is not None and req.link.is_wheel: + hashes = self._get_linked_req_hashes(req) + file_path = _check_download_dir(req.link, self.download_dir, hashes) + if file_path is not None: + self._downloaded[req.link.url] = file_path + req.needs_more_preparation = False + + # Prepare requirements we found were already downloaded for some + # reason. The other downloads will be completed separately. + partially_downloaded_reqs: List[InstallRequirement] = [] + for req in reqs: + if req.needs_more_preparation: + partially_downloaded_reqs.append(req) + else: + self._prepare_linked_requirement(req, parallel_builds) + + # TODO: separate this part out from RequirementPreparer when the v1 + # resolver can be removed! + self._complete_partial_requirements( + partially_downloaded_reqs, + parallel_builds=parallel_builds, + ) + + def _prepare_linked_requirement( + self, req: InstallRequirement, parallel_builds: bool + ) -> BaseDistribution: + assert req.link + link = req.link + + self._ensure_link_req_src_dir(req, parallel_builds) + hashes = self._get_linked_req_hashes(req) + + if link.is_existing_dir() and self.in_tree_build: + local_file = None + elif link.url not in self._downloaded: + try: + local_file = unpack_url( + link, req.source_dir, self._download, self.download_dir, hashes + ) + except NetworkConnectionError as exc: + raise InstallationError( + "Could not install requirement {} because of HTTP " + "error {} for URL {}".format(req, exc, link) + ) + else: + file_path = self._downloaded[link.url] + if hashes: + hashes.check_against_path(file_path) + local_file = File(file_path, content_type=None) + + # For use in later processing, + # preserve the file path on the requirement. + if local_file: + req.local_file_path = local_file.path + + dist = _get_prepared_distribution( + req, + self.req_tracker, + self.finder, + self.build_isolation, + ) + return dist + + def save_linked_requirement(self, req: InstallRequirement) -> None: + assert self.download_dir is not None + assert req.link is not None + link = req.link + if link.is_vcs or (link.is_existing_dir() and req.editable): + # Make a .zip of the source_dir we already created. + req.archive(self.download_dir) + return + + if link.is_existing_dir(): + logger.debug( + "Not copying link to destination directory " + "since it is a directory: %s", + link, + ) + return + if req.local_file_path is None: + # No distribution was downloaded for this requirement. + return + + download_location = os.path.join(self.download_dir, link.filename) + if not os.path.exists(download_location): + shutil.copy(req.local_file_path, download_location) + download_path = display_path(download_location) + logger.info("Saved %s", download_path) + + def prepare_editable_requirement( + self, + req: InstallRequirement, + ) -> BaseDistribution: + """Prepare an editable requirement.""" + assert req.editable, "cannot prepare a non-editable req as editable" + + logger.info("Obtaining %s", req) + + with indent_log(): + if self.require_hashes: + raise InstallationError( + "The editable requirement {} cannot be installed when " + "requiring hashes, because there is no single file to " + "hash.".format(req) + ) + req.ensure_has_source_dir(self.src_dir) + req.update_editable() + + dist = _get_prepared_distribution( + req, + self.req_tracker, + self.finder, + self.build_isolation, + ) + + req.check_if_exists(self.use_user_site) + + return dist + + def prepare_installed_requirement( + self, + req: InstallRequirement, + skip_reason: str, + ) -> BaseDistribution: + """Prepare an already-installed requirement.""" + assert req.satisfied_by, "req should have been satisfied but isn't" + assert skip_reason is not None, ( + "did not get skip reason skipped but req.satisfied_by " + "is set to {}".format(req.satisfied_by) + ) + logger.info( + "Requirement %s: %s (%s)", skip_reason, req, req.satisfied_by.version + ) + with indent_log(): + if self.require_hashes: + logger.debug( + "Since it is already installed, we are trusting this " + "package without checking its hash. To ensure a " + "completely repeatable environment, install into an " + "empty virtualenv." + ) + return InstalledDistribution(req).get_metadata_distribution() diff --git a/venv/Lib/site-packages/pip/_internal/pyproject.py b/venv/Lib/site-packages/pip/_internal/pyproject.py new file mode 100644 index 00000000..31534a3a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/pyproject.py @@ -0,0 +1,183 @@ +import os +from collections import namedtuple +from typing import Any, List, Optional + +from pip._vendor import tomli +from pip._vendor.packaging.requirements import InvalidRequirement, Requirement + +from pip._internal.exceptions import InstallationError + + +def _is_list_of_str(obj: Any) -> bool: + return isinstance(obj, list) and all(isinstance(item, str) for item in obj) + + +def make_pyproject_path(unpacked_source_directory: str) -> str: + return os.path.join(unpacked_source_directory, "pyproject.toml") + + +BuildSystemDetails = namedtuple( + "BuildSystemDetails", ["requires", "backend", "check", "backend_path"] +) + + +def load_pyproject_toml( + use_pep517: Optional[bool], pyproject_toml: str, setup_py: str, req_name: str +) -> Optional[BuildSystemDetails]: + """Load the pyproject.toml file. + + Parameters: + use_pep517 - Has the user requested PEP 517 processing? None + means the user hasn't explicitly specified. + pyproject_toml - Location of the project's pyproject.toml file + setup_py - Location of the project's setup.py file + req_name - The name of the requirement we're processing (for + error reporting) + + Returns: + None if we should use the legacy code path, otherwise a tuple + ( + requirements from pyproject.toml, + name of PEP 517 backend, + requirements we should check are installed after setting + up the build environment + directory paths to import the backend from (backend-path), + relative to the project root. + ) + """ + has_pyproject = os.path.isfile(pyproject_toml) + has_setup = os.path.isfile(setup_py) + + if not has_pyproject and not has_setup: + raise InstallationError( + f"{req_name} does not appear to be a Python project: " + f"neither 'setup.py' nor 'pyproject.toml' found." + ) + + if has_pyproject: + with open(pyproject_toml, encoding="utf-8") as f: + pp_toml = tomli.load(f) + build_system = pp_toml.get("build-system") + else: + build_system = None + + # The following cases must use PEP 517 + # We check for use_pep517 being non-None and falsey because that means + # the user explicitly requested --no-use-pep517. The value 0 as + # opposed to False can occur when the value is provided via an + # environment variable or config file option (due to the quirk of + # strtobool() returning an integer in pip's configuration code). + if has_pyproject and not has_setup: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project does not have a setup.py" + ) + use_pep517 = True + elif build_system and "build-backend" in build_system: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project specifies a build backend of {} " + "in pyproject.toml".format(build_system["build-backend"]) + ) + use_pep517 = True + + # If we haven't worked out whether to use PEP 517 yet, + # and the user hasn't explicitly stated a preference, + # we do so if the project has a pyproject.toml file. + elif use_pep517 is None: + use_pep517 = has_pyproject + + # At this point, we know whether we're going to use PEP 517. + assert use_pep517 is not None + + # If we're using the legacy code path, there is nothing further + # for us to do here. + if not use_pep517: + return None + + if build_system is None: + # Either the user has a pyproject.toml with no build-system + # section, or the user has no pyproject.toml, but has opted in + # explicitly via --use-pep517. + # In the absence of any explicit backend specification, we + # assume the setuptools backend that most closely emulates the + # traditional direct setup.py execution, and require wheel and + # a version of setuptools that supports that backend. + + build_system = { + "requires": ["setuptools>=40.8.0", "wheel"], + "build-backend": "setuptools.build_meta:__legacy__", + } + + # If we're using PEP 517, we have build system information (either + # from pyproject.toml, or defaulted by the code above). + # Note that at this point, we do not know if the user has actually + # specified a backend, though. + assert build_system is not None + + # Ensure that the build-system section in pyproject.toml conforms + # to PEP 518. + error_template = ( + "{package} has a pyproject.toml file that does not comply " + "with PEP 518: {reason}" + ) + + # Specifying the build-system table but not the requires key is invalid + if "requires" not in build_system: + raise InstallationError( + error_template.format( + package=req_name, + reason=( + "it has a 'build-system' table but not " + "'build-system.requires' which is mandatory in the table" + ), + ) + ) + + # Error out if requires is not a list of strings + requires = build_system["requires"] + if not _is_list_of_str(requires): + raise InstallationError( + error_template.format( + package=req_name, + reason="'build-system.requires' is not a list of strings.", + ) + ) + + # Each requirement must be valid as per PEP 508 + for requirement in requires: + try: + Requirement(requirement) + except InvalidRequirement: + raise InstallationError( + error_template.format( + package=req_name, + reason=( + "'build-system.requires' contains an invalid " + "requirement: {!r}".format(requirement) + ), + ) + ) + + backend = build_system.get("build-backend") + backend_path = build_system.get("backend-path", []) + check: List[str] = [] + if backend is None: + # If the user didn't specify a backend, we assume they want to use + # the setuptools backend. But we can't be sure they have included + # a version of setuptools which supplies the backend, or wheel + # (which is needed by the backend) in their requirements. So we + # make a note to check that those requirements are present once + # we have set up the environment. + # This is quite a lot of work to check for a very specific case. But + # the problem is, that case is potentially quite common - projects that + # adopted PEP 518 early for the ability to specify requirements to + # execute setup.py, but never considered needing to mention the build + # tools themselves. The original PEP 518 code had a similar check (but + # implemented in a different way). + backend = "setuptools.build_meta:__legacy__" + check = ["setuptools>=40.8.0", "wheel"] + + return BuildSystemDetails(requires, backend, check, backend_path) diff --git a/venv/Lib/site-packages/pip/_internal/req/__init__.py b/venv/Lib/site-packages/pip/_internal/req/__init__.py new file mode 100644 index 00000000..70dea27a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/__init__.py @@ -0,0 +1,94 @@ +import collections +import logging +from typing import Iterator, List, Optional, Sequence, Tuple + +from pip._internal.utils.logging import indent_log + +from .req_file import parse_requirements +from .req_install import InstallRequirement +from .req_set import RequirementSet + +__all__ = [ + "RequirementSet", + "InstallRequirement", + "parse_requirements", + "install_given_reqs", +] + +logger = logging.getLogger(__name__) + + +class InstallationResult: + def __init__(self, name: str) -> None: + self.name = name + + def __repr__(self) -> str: + return f"InstallationResult(name={self.name!r})" + + +def _validate_requirements( + requirements: List[InstallRequirement], +) -> Iterator[Tuple[str, InstallRequirement]]: + for req in requirements: + assert req.name, f"invalid to-be-installed requirement: {req}" + yield req.name, req + + +def install_given_reqs( + requirements: List[InstallRequirement], + install_options: List[str], + global_options: Sequence[str], + root: Optional[str], + home: Optional[str], + prefix: Optional[str], + warn_script_location: bool, + use_user_site: bool, + pycompile: bool, +) -> List[InstallationResult]: + """ + Install everything in the given list. + + (to be called after having downloaded and unpacked the packages) + """ + to_install = collections.OrderedDict(_validate_requirements(requirements)) + + if to_install: + logger.info( + "Installing collected packages: %s", + ", ".join(to_install.keys()), + ) + + installed = [] + + with indent_log(): + for req_name, requirement in to_install.items(): + if requirement.should_reinstall: + logger.info("Attempting uninstall: %s", req_name) + with indent_log(): + uninstalled_pathset = requirement.uninstall(auto_confirm=True) + else: + uninstalled_pathset = None + + try: + requirement.install( + install_options, + global_options, + root=root, + home=home, + prefix=prefix, + warn_script_location=warn_script_location, + use_user_site=use_user_site, + pycompile=pycompile, + ) + except Exception: + # if install did not succeed, rollback previous uninstall + if uninstalled_pathset and not requirement.install_succeeded: + uninstalled_pathset.rollback() + raise + else: + if uninstalled_pathset and requirement.install_succeeded: + uninstalled_pathset.commit() + + installed.append(InstallationResult(req_name)) + + return installed diff --git a/venv/Lib/site-packages/pip/_internal/req/constructors.py b/venv/Lib/site-packages/pip/_internal/req/constructors.py new file mode 100644 index 00000000..4a594037 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/constructors.py @@ -0,0 +1,466 @@ +"""Backing implementation for InstallRequirement's various constructors + +The idea here is that these formed a major chunk of InstallRequirement's size +so, moving them and support code dedicated to them outside of that class +helps creates for better understandability for the rest of the code. + +These are meant to be used elsewhere within pip to create instances of +InstallRequirement. +""" + +import logging +import os +import re +from typing import Any, Dict, Optional, Set, Tuple, Union + +from pip._vendor.packaging.markers import Marker +from pip._vendor.packaging.requirements import InvalidRequirement, Requirement +from pip._vendor.packaging.specifiers import Specifier +from pip._vendor.pkg_resources import RequirementParseError, parse_requirements + +from pip._internal.exceptions import InstallationError +from pip._internal.models.index import PyPI, TestPyPI +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.req.req_file import ParsedRequirement +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.filetypes import is_archive_file +from pip._internal.utils.misc import is_installable_dir +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import is_url, vcs + +__all__ = [ + "install_req_from_editable", + "install_req_from_line", + "parse_editable", +] + +logger = logging.getLogger(__name__) +operators = Specifier._operators.keys() + + +def _strip_extras(path: str) -> Tuple[str, Optional[str]]: + m = re.match(r"^(.+)(\[[^\]]+\])$", path) + extras = None + if m: + path_no_extras = m.group(1) + extras = m.group(2) + else: + path_no_extras = path + + return path_no_extras, extras + + +def convert_extras(extras: Optional[str]) -> Set[str]: + if not extras: + return set() + return get_requirement("placeholder" + extras.lower()).extras + + +def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[str]]: + """Parses an editable requirement into: + - a requirement name + - an URL + - extras + - editable options + Accepted requirements: + svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir + .[some_extra] + """ + + url = editable_req + + # If a file path is specified with extras, strip off the extras. + url_no_extras, extras = _strip_extras(url) + + if os.path.isdir(url_no_extras): + # Treating it as code that has already been checked out + url_no_extras = path_to_url(url_no_extras) + + if url_no_extras.lower().startswith("file:"): + package_name = Link(url_no_extras).egg_fragment + if extras: + return ( + package_name, + url_no_extras, + get_requirement("placeholder" + extras.lower()).extras, + ) + else: + return package_name, url_no_extras, set() + + for version_control in vcs: + if url.lower().startswith(f"{version_control}:"): + url = f"{version_control}+{url}" + break + + link = Link(url) + + if not link.is_vcs: + backends = ", ".join(vcs.all_schemes) + raise InstallationError( + f"{editable_req} is not a valid editable requirement. " + f"It should either be a path to a local project or a VCS URL " + f"(beginning with {backends})." + ) + + package_name = link.egg_fragment + if not package_name: + raise InstallationError( + "Could not detect requirement name for '{}', please specify one " + "with #egg=your_package_name".format(editable_req) + ) + return package_name, url, set() + + +def deduce_helpful_msg(req: str) -> str: + """Returns helpful msg in case requirements file does not exist, + or cannot be parsed. + + :params req: Requirements file path + """ + msg = "" + if os.path.exists(req): + msg = " The path does exist. " + # Try to parse and check if it is a requirements file. + try: + with open(req) as fp: + # parse first line only + next(parse_requirements(fp.read())) + msg += ( + "The argument you provided " + "({}) appears to be a" + " requirements file. If that is the" + " case, use the '-r' flag to install" + " the packages specified within it." + ).format(req) + except RequirementParseError: + logger.debug("Cannot parse '%s' as requirements file", req, exc_info=True) + else: + msg += f" File '{req}' does not exist." + return msg + + +class RequirementParts: + def __init__( + self, + requirement: Optional[Requirement], + link: Optional[Link], + markers: Optional[Marker], + extras: Set[str], + ): + self.requirement = requirement + self.link = link + self.markers = markers + self.extras = extras + + +def parse_req_from_editable(editable_req: str) -> RequirementParts: + name, url, extras_override = parse_editable(editable_req) + + if name is not None: + try: + req: Optional[Requirement] = Requirement(name) + except InvalidRequirement: + raise InstallationError(f"Invalid requirement: '{name}'") + else: + req = None + + link = Link(url) + + return RequirementParts(req, link, None, extras_override) + + +# ---- The actual constructors follow ---- + + +def install_req_from_editable( + editable_req: str, + comes_from: Optional[Union[InstallRequirement, str]] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + options: Optional[Dict[str, Any]] = None, + constraint: bool = False, + user_supplied: bool = False, + permit_editable_wheels: bool = False, +) -> InstallRequirement: + + parts = parse_req_from_editable(editable_req) + + return InstallRequirement( + parts.requirement, + comes_from=comes_from, + user_supplied=user_supplied, + editable=True, + permit_editable_wheels=permit_editable_wheels, + link=parts.link, + constraint=constraint, + use_pep517=use_pep517, + isolated=isolated, + install_options=options.get("install_options", []) if options else [], + global_options=options.get("global_options", []) if options else [], + hash_options=options.get("hashes", {}) if options else {}, + extras=parts.extras, + ) + + +def _looks_like_path(name: str) -> bool: + """Checks whether the string "looks like" a path on the filesystem. + + This does not check whether the target actually exists, only judge from the + appearance. + + Returns true if any of the following conditions is true: + * a path separator is found (either os.path.sep or os.path.altsep); + * a dot is found (which represents the current directory). + """ + if os.path.sep in name: + return True + if os.path.altsep is not None and os.path.altsep in name: + return True + if name.startswith("."): + return True + return False + + +def _get_url_from_path(path: str, name: str) -> Optional[str]: + """ + First, it checks whether a provided path is an installable directory. If it + is, returns the path. + + If false, check if the path is an archive file (such as a .whl). + The function checks if the path is a file. If false, if the path has + an @, it will treat it as a PEP 440 URL requirement and return the path. + """ + if _looks_like_path(name) and os.path.isdir(path): + if is_installable_dir(path): + return path_to_url(path) + # TODO: The is_installable_dir test here might not be necessary + # now that it is done in load_pyproject_toml too. + raise InstallationError( + f"Directory {name!r} is not installable. Neither 'setup.py' " + "nor 'pyproject.toml' found." + ) + if not is_archive_file(path): + return None + if os.path.isfile(path): + return path_to_url(path) + urlreq_parts = name.split("@", 1) + if len(urlreq_parts) >= 2 and not _looks_like_path(urlreq_parts[0]): + # If the path contains '@' and the part before it does not look + # like a path, try to treat it as a PEP 440 URL req instead. + return None + logger.warning( + "Requirement %r looks like a filename, but the file does not exist", + name, + ) + return path_to_url(path) + + +def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementParts: + if is_url(name): + marker_sep = "; " + else: + marker_sep = ";" + if marker_sep in name: + name, markers_as_string = name.split(marker_sep, 1) + markers_as_string = markers_as_string.strip() + if not markers_as_string: + markers = None + else: + markers = Marker(markers_as_string) + else: + markers = None + name = name.strip() + req_as_string = None + path = os.path.normpath(os.path.abspath(name)) + link = None + extras_as_string = None + + if is_url(name): + link = Link(name) + else: + p, extras_as_string = _strip_extras(path) + url = _get_url_from_path(p, name) + if url is not None: + link = Link(url) + + # it's a local file, dir, or url + if link: + # Handle relative file URLs + if link.scheme == "file" and re.search(r"\.\./", link.url): + link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path)))) + # wheel file + if link.is_wheel: + wheel = Wheel(link.filename) # can raise InvalidWheelFilename + req_as_string = f"{wheel.name}=={wheel.version}" + else: + # set the req to the egg fragment. when it's not there, this + # will become an 'unnamed' requirement + req_as_string = link.egg_fragment + + # a requirement specifier + else: + req_as_string = name + + extras = convert_extras(extras_as_string) + + def with_source(text: str) -> str: + if not line_source: + return text + return f"{text} (from {line_source})" + + def _parse_req_string(req_as_string: str) -> Requirement: + try: + req = get_requirement(req_as_string) + except InvalidRequirement: + if os.path.sep in req_as_string: + add_msg = "It looks like a path." + add_msg += deduce_helpful_msg(req_as_string) + elif "=" in req_as_string and not any( + op in req_as_string for op in operators + ): + add_msg = "= is not a valid operator. Did you mean == ?" + else: + add_msg = "" + msg = with_source(f"Invalid requirement: {req_as_string!r}") + if add_msg: + msg += f"\nHint: {add_msg}" + raise InstallationError(msg) + else: + # Deprecate extras after specifiers: "name>=1.0[extras]" + # This currently works by accident because _strip_extras() parses + # any extras in the end of the string and those are saved in + # RequirementParts + for spec in req.specifier: + spec_str = str(spec) + if spec_str.endswith("]"): + msg = f"Extras after version '{spec_str}'." + raise InstallationError(msg) + return req + + if req_as_string is not None: + req: Optional[Requirement] = _parse_req_string(req_as_string) + else: + req = None + + return RequirementParts(req, link, markers, extras) + + +def install_req_from_line( + name: str, + comes_from: Optional[Union[str, InstallRequirement]] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + options: Optional[Dict[str, Any]] = None, + constraint: bool = False, + line_source: Optional[str] = None, + user_supplied: bool = False, +) -> InstallRequirement: + """Creates an InstallRequirement from a name, which might be a + requirement, directory containing 'setup.py', filename, or URL. + + :param line_source: An optional string describing where the line is from, + for logging purposes in case of an error. + """ + parts = parse_req_from_line(name, line_source) + + return InstallRequirement( + parts.requirement, + comes_from, + link=parts.link, + markers=parts.markers, + use_pep517=use_pep517, + isolated=isolated, + install_options=options.get("install_options", []) if options else [], + global_options=options.get("global_options", []) if options else [], + hash_options=options.get("hashes", {}) if options else {}, + constraint=constraint, + extras=parts.extras, + user_supplied=user_supplied, + ) + + +def install_req_from_req_string( + req_string: str, + comes_from: Optional[InstallRequirement] = None, + isolated: bool = False, + use_pep517: Optional[bool] = None, + user_supplied: bool = False, +) -> InstallRequirement: + try: + req = get_requirement(req_string) + except InvalidRequirement: + raise InstallationError(f"Invalid requirement: '{req_string}'") + + domains_not_allowed = [ + PyPI.file_storage_domain, + TestPyPI.file_storage_domain, + ] + if ( + req.url + and comes_from + and comes_from.link + and comes_from.link.netloc in domains_not_allowed + ): + # Explicitly disallow pypi packages that depend on external urls + raise InstallationError( + "Packages installed from PyPI cannot depend on packages " + "which are not also hosted on PyPI.\n" + "{} depends on {} ".format(comes_from.name, req) + ) + + return InstallRequirement( + req, + comes_from, + isolated=isolated, + use_pep517=use_pep517, + user_supplied=user_supplied, + ) + + +def install_req_from_parsed_requirement( + parsed_req: ParsedRequirement, + isolated: bool = False, + use_pep517: Optional[bool] = None, + user_supplied: bool = False, +) -> InstallRequirement: + if parsed_req.is_editable: + req = install_req_from_editable( + parsed_req.requirement, + comes_from=parsed_req.comes_from, + use_pep517=use_pep517, + constraint=parsed_req.constraint, + isolated=isolated, + user_supplied=user_supplied, + ) + + else: + req = install_req_from_line( + parsed_req.requirement, + comes_from=parsed_req.comes_from, + use_pep517=use_pep517, + isolated=isolated, + options=parsed_req.options, + constraint=parsed_req.constraint, + line_source=parsed_req.line_source, + user_supplied=user_supplied, + ) + return req + + +def install_req_from_link_and_ireq( + link: Link, ireq: InstallRequirement +) -> InstallRequirement: + return InstallRequirement( + req=ireq.req, + comes_from=ireq.comes_from, + editable=ireq.editable, + link=link, + markers=ireq.markers, + use_pep517=ireq.use_pep517, + isolated=ireq.isolated, + install_options=ireq.install_options, + global_options=ireq.global_options, + hash_options=ireq.hash_options, + ) diff --git a/venv/Lib/site-packages/pip/_internal/req/req_file.py b/venv/Lib/site-packages/pip/_internal/req/req_file.py new file mode 100644 index 00000000..03ae5049 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_file.py @@ -0,0 +1,536 @@ +""" +Requirements file parsing +""" + +import optparse +import os +import re +import shlex +import urllib.parse +from optparse import Values +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterable, + Iterator, + List, + Optional, + Tuple, +) + +from pip._internal.cli import cmdoptions +from pip._internal.exceptions import InstallationError, RequirementsFileParseError +from pip._internal.models.search_scope import SearchScope +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status +from pip._internal.utils.encoding import auto_decode +from pip._internal.utils.urls import get_url_scheme + +if TYPE_CHECKING: + # NoReturn introduced in 3.6.2; imported only for type checking to maintain + # pip compatibility with older patch versions of Python 3.6 + from typing import NoReturn + + from pip._internal.index.package_finder import PackageFinder + +__all__ = ["parse_requirements"] + +ReqFileLines = Iterable[Tuple[int, str]] + +LineParser = Callable[[str], Tuple[str, Values]] + +SCHEME_RE = re.compile(r"^(http|https|file):", re.I) +COMMENT_RE = re.compile(r"(^|\s+)#.*$") + +# Matches environment variable-style values in '${MY_VARIABLE_1}' with the +# variable name consisting of only uppercase letters, digits or the '_' +# (underscore). This follows the POSIX standard defined in IEEE Std 1003.1, +# 2013 Edition. +ENV_VAR_RE = re.compile(r"(?P\$\{(?P[A-Z0-9_]+)\})") + +SUPPORTED_OPTIONS: List[Callable[..., optparse.Option]] = [ + cmdoptions.index_url, + cmdoptions.extra_index_url, + cmdoptions.no_index, + cmdoptions.constraints, + cmdoptions.requirements, + cmdoptions.editable, + cmdoptions.find_links, + cmdoptions.no_binary, + cmdoptions.only_binary, + cmdoptions.prefer_binary, + cmdoptions.require_hashes, + cmdoptions.pre, + cmdoptions.trusted_host, + cmdoptions.use_new_feature, +] + +# options to be passed to requirements +SUPPORTED_OPTIONS_REQ: List[Callable[..., optparse.Option]] = [ + cmdoptions.install_options, + cmdoptions.global_options, + cmdoptions.hash, +] + +# the 'dest' string values +SUPPORTED_OPTIONS_REQ_DEST = [str(o().dest) for o in SUPPORTED_OPTIONS_REQ] + + +class ParsedRequirement: + def __init__( + self, + requirement: str, + is_editable: bool, + comes_from: str, + constraint: bool, + options: Optional[Dict[str, Any]] = None, + line_source: Optional[str] = None, + ) -> None: + self.requirement = requirement + self.is_editable = is_editable + self.comes_from = comes_from + self.options = options + self.constraint = constraint + self.line_source = line_source + + +class ParsedLine: + def __init__( + self, + filename: str, + lineno: int, + args: str, + opts: Values, + constraint: bool, + ) -> None: + self.filename = filename + self.lineno = lineno + self.opts = opts + self.constraint = constraint + + if args: + self.is_requirement = True + self.is_editable = False + self.requirement = args + elif opts.editables: + self.is_requirement = True + self.is_editable = True + # We don't support multiple -e on one line + self.requirement = opts.editables[0] + else: + self.is_requirement = False + + +def parse_requirements( + filename: str, + session: PipSession, + finder: Optional["PackageFinder"] = None, + options: Optional[optparse.Values] = None, + constraint: bool = False, +) -> Iterator[ParsedRequirement]: + """Parse a requirements file and yield ParsedRequirement instances. + + :param filename: Path or url of requirements file. + :param session: PipSession instance. + :param finder: Instance of pip.index.PackageFinder. + :param options: cli options. + :param constraint: If true, parsing a constraint file rather than + requirements file. + """ + line_parser = get_line_parser(finder) + parser = RequirementsFileParser(session, line_parser) + + for parsed_line in parser.parse(filename, constraint): + parsed_req = handle_line( + parsed_line, options=options, finder=finder, session=session + ) + if parsed_req is not None: + yield parsed_req + + +def preprocess(content: str) -> ReqFileLines: + """Split, filter, and join lines, and return a line iterator + + :param content: the content of the requirements file + """ + lines_enum: ReqFileLines = enumerate(content.splitlines(), start=1) + lines_enum = join_lines(lines_enum) + lines_enum = ignore_comments(lines_enum) + lines_enum = expand_env_variables(lines_enum) + return lines_enum + + +def handle_requirement_line( + line: ParsedLine, + options: Optional[optparse.Values] = None, +) -> ParsedRequirement: + + # preserve for the nested code path + line_comes_from = "{} {} (line {})".format( + "-c" if line.constraint else "-r", + line.filename, + line.lineno, + ) + + assert line.is_requirement + + if line.is_editable: + # For editable requirements, we don't support per-requirement + # options, so just return the parsed requirement. + return ParsedRequirement( + requirement=line.requirement, + is_editable=line.is_editable, + comes_from=line_comes_from, + constraint=line.constraint, + ) + else: + if options: + # Disable wheels if the user has specified build options + cmdoptions.check_install_build_global(options, line.opts) + + # get the options that apply to requirements + req_options = {} + for dest in SUPPORTED_OPTIONS_REQ_DEST: + if dest in line.opts.__dict__ and line.opts.__dict__[dest]: + req_options[dest] = line.opts.__dict__[dest] + + line_source = f"line {line.lineno} of {line.filename}" + return ParsedRequirement( + requirement=line.requirement, + is_editable=line.is_editable, + comes_from=line_comes_from, + constraint=line.constraint, + options=req_options, + line_source=line_source, + ) + + +def handle_option_line( + opts: Values, + filename: str, + lineno: int, + finder: Optional["PackageFinder"] = None, + options: Optional[optparse.Values] = None, + session: Optional[PipSession] = None, +) -> None: + + if options: + # percolate options upward + if opts.require_hashes: + options.require_hashes = opts.require_hashes + if opts.features_enabled: + options.features_enabled.extend( + f for f in opts.features_enabled if f not in options.features_enabled + ) + + # set finder options + if finder: + find_links = finder.find_links + index_urls = finder.index_urls + if opts.index_url: + index_urls = [opts.index_url] + if opts.no_index is True: + index_urls = [] + if opts.extra_index_urls: + index_urls.extend(opts.extra_index_urls) + if opts.find_links: + # FIXME: it would be nice to keep track of the source + # of the find_links: support a find-links local path + # relative to a requirements file. + value = opts.find_links[0] + req_dir = os.path.dirname(os.path.abspath(filename)) + relative_to_reqs_file = os.path.join(req_dir, value) + if os.path.exists(relative_to_reqs_file): + value = relative_to_reqs_file + find_links.append(value) + + if session: + # We need to update the auth urls in session + session.update_index_urls(index_urls) + + search_scope = SearchScope( + find_links=find_links, + index_urls=index_urls, + ) + finder.search_scope = search_scope + + if opts.pre: + finder.set_allow_all_prereleases() + + if opts.prefer_binary: + finder.set_prefer_binary() + + if session: + for host in opts.trusted_hosts or []: + source = f"line {lineno} of {filename}" + session.add_trusted_host(host, source=source) + + +def handle_line( + line: ParsedLine, + options: Optional[optparse.Values] = None, + finder: Optional["PackageFinder"] = None, + session: Optional[PipSession] = None, +) -> Optional[ParsedRequirement]: + """Handle a single parsed requirements line; This can result in + creating/yielding requirements, or updating the finder. + + :param line: The parsed line to be processed. + :param options: CLI options. + :param finder: The finder - updated by non-requirement lines. + :param session: The session - updated by non-requirement lines. + + Returns a ParsedRequirement object if the line is a requirement line, + otherwise returns None. + + For lines that contain requirements, the only options that have an effect + are from SUPPORTED_OPTIONS_REQ, and they are scoped to the + requirement. Other options from SUPPORTED_OPTIONS may be present, but are + ignored. + + For lines that do not contain requirements, the only options that have an + effect are from SUPPORTED_OPTIONS. Options from SUPPORTED_OPTIONS_REQ may + be present, but are ignored. These lines may contain multiple options + (although our docs imply only one is supported), and all our parsed and + affect the finder. + """ + + if line.is_requirement: + parsed_req = handle_requirement_line(line, options) + return parsed_req + else: + handle_option_line( + line.opts, + line.filename, + line.lineno, + finder, + options, + session, + ) + return None + + +class RequirementsFileParser: + def __init__( + self, + session: PipSession, + line_parser: LineParser, + ) -> None: + self._session = session + self._line_parser = line_parser + + def parse(self, filename: str, constraint: bool) -> Iterator[ParsedLine]: + """Parse a given file, yielding parsed lines.""" + yield from self._parse_and_recurse(filename, constraint) + + def _parse_and_recurse( + self, filename: str, constraint: bool + ) -> Iterator[ParsedLine]: + for line in self._parse_file(filename, constraint): + if not line.is_requirement and ( + line.opts.requirements or line.opts.constraints + ): + # parse a nested requirements file + if line.opts.requirements: + req_path = line.opts.requirements[0] + nested_constraint = False + else: + req_path = line.opts.constraints[0] + nested_constraint = True + + # original file is over http + if SCHEME_RE.search(filename): + # do a url join so relative paths work + req_path = urllib.parse.urljoin(filename, req_path) + # original file and nested file are paths + elif not SCHEME_RE.search(req_path): + # do a join so relative paths work + req_path = os.path.join( + os.path.dirname(filename), + req_path, + ) + + yield from self._parse_and_recurse(req_path, nested_constraint) + else: + yield line + + def _parse_file(self, filename: str, constraint: bool) -> Iterator[ParsedLine]: + _, content = get_file_content(filename, self._session) + + lines_enum = preprocess(content) + + for line_number, line in lines_enum: + try: + args_str, opts = self._line_parser(line) + except OptionParsingError as e: + # add offending line + msg = f"Invalid requirement: {line}\n{e.msg}" + raise RequirementsFileParseError(msg) + + yield ParsedLine( + filename, + line_number, + args_str, + opts, + constraint, + ) + + +def get_line_parser(finder: Optional["PackageFinder"]) -> LineParser: + def parse_line(line: str) -> Tuple[str, Values]: + # Build new parser for each line since it accumulates appendable + # options. + parser = build_parser() + defaults = parser.get_default_values() + defaults.index_url = None + if finder: + defaults.format_control = finder.format_control + + args_str, options_str = break_args_options(line) + + opts, _ = parser.parse_args(shlex.split(options_str), defaults) + + return args_str, opts + + return parse_line + + +def break_args_options(line: str) -> Tuple[str, str]: + """Break up the line into an args and options string. We only want to shlex + (and then optparse) the options, not the args. args can contain markers + which are corrupted by shlex. + """ + tokens = line.split(" ") + args = [] + options = tokens[:] + for token in tokens: + if token.startswith("-") or token.startswith("--"): + break + else: + args.append(token) + options.pop(0) + return " ".join(args), " ".join(options) + + +class OptionParsingError(Exception): + def __init__(self, msg: str) -> None: + self.msg = msg + + +def build_parser() -> optparse.OptionParser: + """ + Return a parser for parsing requirement lines + """ + parser = optparse.OptionParser(add_help_option=False) + + option_factories = SUPPORTED_OPTIONS + SUPPORTED_OPTIONS_REQ + for option_factory in option_factories: + option = option_factory() + parser.add_option(option) + + # By default optparse sys.exits on parsing errors. We want to wrap + # that in our own exception. + def parser_exit(self: Any, msg: str) -> "NoReturn": + raise OptionParsingError(msg) + + # NOTE: mypy disallows assigning to a method + # https://github.com/python/mypy/issues/2427 + parser.exit = parser_exit # type: ignore + + return parser + + +def join_lines(lines_enum: ReqFileLines) -> ReqFileLines: + """Joins a line ending in '\' with the previous line (except when following + comments). The joined line takes on the index of the first line. + """ + primary_line_number = None + new_line: List[str] = [] + for line_number, line in lines_enum: + if not line.endswith("\\") or COMMENT_RE.match(line): + if COMMENT_RE.match(line): + # this ensures comments are always matched later + line = " " + line + if new_line: + new_line.append(line) + assert primary_line_number is not None + yield primary_line_number, "".join(new_line) + new_line = [] + else: + yield line_number, line + else: + if not new_line: + primary_line_number = line_number + new_line.append(line.strip("\\")) + + # last line contains \ + if new_line: + assert primary_line_number is not None + yield primary_line_number, "".join(new_line) + + # TODO: handle space after '\'. + + +def ignore_comments(lines_enum: ReqFileLines) -> ReqFileLines: + """ + Strips comments and filter empty lines. + """ + for line_number, line in lines_enum: + line = COMMENT_RE.sub("", line) + line = line.strip() + if line: + yield line_number, line + + +def expand_env_variables(lines_enum: ReqFileLines) -> ReqFileLines: + """Replace all environment variables that can be retrieved via `os.getenv`. + + The only allowed format for environment variables defined in the + requirement file is `${MY_VARIABLE_1}` to ensure two things: + + 1. Strings that contain a `$` aren't accidentally (partially) expanded. + 2. Ensure consistency across platforms for requirement files. + + These points are the result of a discussion on the `github pull + request #3514 `_. + + Valid characters in variable names follow the `POSIX standard + `_ and are limited + to uppercase letter, digits and the `_` (underscore). + """ + for line_number, line in lines_enum: + for env_var, var_name in ENV_VAR_RE.findall(line): + value = os.getenv(var_name) + if not value: + continue + + line = line.replace(env_var, value) + + yield line_number, line + + +def get_file_content(url: str, session: PipSession) -> Tuple[str, str]: + """Gets the content of a file; it may be a filename, file: URL, or + http: URL. Returns (location, content). Content is unicode. + Respects # -*- coding: declarations on the retrieved files. + + :param url: File path or url. + :param session: PipSession instance. + """ + scheme = get_url_scheme(url) + + # Pip has special support for file:// URLs (LocalFSAdapter). + if scheme in ["http", "https", "file"]: + resp = session.get(url) + raise_for_status(resp) + return resp.url, resp.text + + # Assume this is a bare path. + try: + with open(url, "rb") as f: + content = auto_decode(f.read()) + except OSError as exc: + raise InstallationError(f"Could not open requirements file: {exc}") + return url, content diff --git a/venv/Lib/site-packages/pip/_internal/req/req_install.py b/venv/Lib/site-packages/pip/_internal/req/req_install.py new file mode 100644 index 00000000..95dacab5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_install.py @@ -0,0 +1,891 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import functools +import logging +import os +import shutil +import sys +import uuid +import zipfile +from typing import Any, Collection, Dict, Iterable, List, Optional, Sequence, Union + +from pip._vendor import pkg_resources +from pip._vendor.packaging.markers import Marker +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version +from pip._vendor.pep517.wrappers import Pep517HookCaller +from pip._vendor.pkg_resources import Distribution + +from pip._internal.build_env import BuildEnvironment, NoOpBuildEnvironment +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_scheme +from pip._internal.models.link import Link +from pip._internal.operations.build.metadata import generate_metadata +from pip._internal.operations.build.metadata_editable import generate_editable_metadata +from pip._internal.operations.build.metadata_legacy import ( + generate_metadata as generate_metadata_legacy, +) +from pip._internal.operations.install.editable_legacy import ( + install_editable as install_editable_legacy, +) +from pip._internal.operations.install.legacy import LegacyInstallFailure +from pip._internal.operations.install.legacy import install as install_legacy +from pip._internal.operations.install.wheel import install_wheel +from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path +from pip._internal.req.req_uninstall import UninstallPathSet +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.direct_url_helpers import ( + direct_url_for_editable, + direct_url_from_link, +) +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.misc import ( + ask_path_exists, + backup_dir, + display_path, + dist_in_site_packages, + dist_in_usersite, + get_distribution, + hide_url, + redact_auth_from_url, +) +from pip._internal.utils.packaging import get_metadata +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.virtualenv import running_under_virtualenv +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + + +def _get_dist(metadata_directory: str) -> Distribution: + """Return a pkg_resources.Distribution for the provided + metadata directory. + """ + dist_dir = metadata_directory.rstrip(os.sep) + + # Build a PathMetadata object, from path to metadata. :wink: + base_dir, dist_dir_name = os.path.split(dist_dir) + metadata = pkg_resources.PathMetadata(base_dir, dist_dir) + + # Determine the correct Distribution object type. + if dist_dir.endswith(".egg-info"): + dist_cls = pkg_resources.Distribution + dist_name = os.path.splitext(dist_dir_name)[0] + else: + assert dist_dir.endswith(".dist-info") + dist_cls = pkg_resources.DistInfoDistribution + dist_name = os.path.splitext(dist_dir_name)[0].split("-")[0] + + return dist_cls( + base_dir, + project_name=dist_name, + metadata=metadata, + ) + + +class InstallRequirement: + """ + Represents something that may be installed later on, may have information + about where to fetch the relevant requirement and also contains logic for + installing the said requirement. + """ + + def __init__( + self, + req: Optional[Requirement], + comes_from: Optional[Union[str, "InstallRequirement"]], + editable: bool = False, + link: Optional[Link] = None, + markers: Optional[Marker] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + install_options: Optional[List[str]] = None, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, + constraint: bool = False, + extras: Collection[str] = (), + user_supplied: bool = False, + permit_editable_wheels: bool = False, + ) -> None: + assert req is None or isinstance(req, Requirement), req + self.req = req + self.comes_from = comes_from + self.constraint = constraint + self.editable = editable + self.permit_editable_wheels = permit_editable_wheels + self.legacy_install_reason: Optional[int] = None + + # source_dir is the local directory where the linked requirement is + # located, or unpacked. In case unpacking is needed, creating and + # populating source_dir is done by the RequirementPreparer. Note this + # is not necessarily the directory where pyproject.toml or setup.py is + # located - that one is obtained via unpacked_source_directory. + self.source_dir: Optional[str] = None + if self.editable: + assert link + if link.is_file: + self.source_dir = os.path.normpath(os.path.abspath(link.file_path)) + + if link is None and req and req.url: + # PEP 508 URL requirement + link = Link(req.url) + self.link = self.original_link = link + self.original_link_is_in_wheel_cache = False + + # Path to any downloaded or already-existing package. + self.local_file_path: Optional[str] = None + if self.link and self.link.is_file: + self.local_file_path = self.link.file_path + + if extras: + self.extras = extras + elif req: + self.extras = {pkg_resources.safe_extra(extra) for extra in req.extras} + else: + self.extras = set() + if markers is None and req: + markers = req.marker + self.markers = markers + + # This holds the pkg_resources.Distribution object if this requirement + # is already available: + self.satisfied_by: Optional[Distribution] = None + # Whether the installation process should try to uninstall an existing + # distribution before installing this requirement. + self.should_reinstall = False + # Temporary build location + self._temp_build_dir: Optional[TempDirectory] = None + # Set to True after successful installation + self.install_succeeded: Optional[bool] = None + # Supplied options + self.install_options = install_options if install_options else [] + self.global_options = global_options if global_options else [] + self.hash_options = hash_options if hash_options else {} + # Set to True after successful preparation of this requirement + self.prepared = False + # User supplied requirement are explicitly requested for installation + # by the user via CLI arguments or requirements files, as opposed to, + # e.g. dependencies, extras or constraints. + self.user_supplied = user_supplied + + self.isolated = isolated + self.build_env: BuildEnvironment = NoOpBuildEnvironment() + + # For PEP 517, the directory where we request the project metadata + # gets stored. We need this to pass to build_wheel, so the backend + # can ensure that the wheel matches the metadata (see the PEP for + # details). + self.metadata_directory: Optional[str] = None + + # The static build requirements (from pyproject.toml) + self.pyproject_requires: Optional[List[str]] = None + + # Build requirements that we will check are available + self.requirements_to_check: List[str] = [] + + # The PEP 517 backend we should use to build the project + self.pep517_backend: Optional[Pep517HookCaller] = None + + # Are we using PEP 517 for this requirement? + # After pyproject.toml has been loaded, the only valid values are True + # and False. Before loading, None is valid (meaning "use the default"). + # Setting an explicit value before loading pyproject.toml is supported, + # but after loading this flag should be treated as read only. + self.use_pep517 = use_pep517 + + # This requirement needs more preparation before it can be built + self.needs_more_preparation = False + + def __str__(self) -> str: + if self.req: + s = str(self.req) + if self.link: + s += " from {}".format(redact_auth_from_url(self.link.url)) + elif self.link: + s = redact_auth_from_url(self.link.url) + else: + s = "" + if self.satisfied_by is not None: + s += " in {}".format(display_path(self.satisfied_by.location)) + if self.comes_from: + if isinstance(self.comes_from, str): + comes_from: Optional[str] = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += f" (from {comes_from})" + return s + + def __repr__(self) -> str: + return "<{} object: {} editable={!r}>".format( + self.__class__.__name__, str(self), self.editable + ) + + def format_debug(self) -> str: + """An un-tested helper for getting state, for debugging.""" + attributes = vars(self) + names = sorted(attributes) + + state = ("{}={!r}".format(attr, attributes[attr]) for attr in sorted(names)) + return "<{name} object: {{{state}}}>".format( + name=self.__class__.__name__, + state=", ".join(state), + ) + + # Things that are valid for all kinds of requirements? + @property + def name(self) -> Optional[str]: + if self.req is None: + return None + return pkg_resources.safe_name(self.req.name) + + @functools.lru_cache() # use cached_property in python 3.8+ + def supports_pyproject_editable(self) -> bool: + if not self.use_pep517: + return False + assert self.pep517_backend + with self.build_env: + runner = runner_with_spinner_message( + "Checking if build backend supports build_editable" + ) + with self.pep517_backend.subprocess_runner(runner): + return "build_editable" in self.pep517_backend._supported_features() + + @property + def specifier(self) -> SpecifierSet: + return self.req.specifier + + @property + def is_pinned(self) -> bool: + """Return whether I am pinned to an exact version. + + For example, some-package==1.2 is pinned; some-package>1.2 is not. + """ + specifiers = self.specifier + return len(specifiers) == 1 and next(iter(specifiers)).operator in {"==", "==="} + + def match_markers(self, extras_requested: Optional[Iterable[str]] = None) -> bool: + if not extras_requested: + # Provide an extra to safely evaluate the markers + # without matching any extra + extras_requested = ("",) + if self.markers is not None: + return any( + self.markers.evaluate({"extra": extra}) for extra in extras_requested + ) + else: + return True + + @property + def has_hash_options(self) -> bool: + """Return whether any known-good hashes are specified as options. + + These activate --require-hashes mode; hashes specified as part of a + URL do not. + + """ + return bool(self.hash_options) + + def hashes(self, trust_internet: bool = True) -> Hashes: + """Return a hash-comparer that considers my option- and URL-based + hashes to be known-good. + + Hashes in URLs--ones embedded in the requirements file, not ones + downloaded from an index server--are almost peers with ones from + flags. They satisfy --require-hashes (whether it was implicitly or + explicitly activated) but do not activate it. md5 and sha224 are not + allowed in flags, which should nudge people toward good algos. We + always OR all hashes together, even ones from URLs. + + :param trust_internet: Whether to trust URL-based (#md5=...) hashes + downloaded from the internet, as by populate_link() + + """ + good_hashes = self.hash_options.copy() + link = self.link if trust_internet else self.original_link + if link and link.hash: + good_hashes.setdefault(link.hash_name, []).append(link.hash) + return Hashes(good_hashes) + + def from_path(self) -> Optional[str]: + """Format a nice indicator to show where this "comes from" """ + if self.req is None: + return None + s = str(self.req) + if self.comes_from: + if isinstance(self.comes_from, str): + comes_from = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += "->" + comes_from + return s + + def ensure_build_location( + self, build_dir: str, autodelete: bool, parallel_builds: bool + ) -> str: + assert build_dir is not None + if self._temp_build_dir is not None: + assert self._temp_build_dir.path + return self._temp_build_dir.path + if self.req is None: + # Some systems have /tmp as a symlink which confuses custom + # builds (such as numpy). Thus, we ensure that the real path + # is returned. + self._temp_build_dir = TempDirectory( + kind=tempdir_kinds.REQ_BUILD, globally_managed=True + ) + + return self._temp_build_dir.path + + # This is the only remaining place where we manually determine the path + # for the temporary directory. It is only needed for editables where + # it is the value of the --src option. + + # When parallel builds are enabled, add a UUID to the build directory + # name so multiple builds do not interfere with each other. + dir_name: str = canonicalize_name(self.name) + if parallel_builds: + dir_name = f"{dir_name}_{uuid.uuid4().hex}" + + # FIXME: Is there a better place to create the build_dir? (hg and bzr + # need this) + if not os.path.exists(build_dir): + logger.debug("Creating directory %s", build_dir) + os.makedirs(build_dir) + actual_build_dir = os.path.join(build_dir, dir_name) + # `None` indicates that we respect the globally-configured deletion + # settings, which is what we actually want when auto-deleting. + delete_arg = None if autodelete else False + return TempDirectory( + path=actual_build_dir, + delete=delete_arg, + kind=tempdir_kinds.REQ_BUILD, + globally_managed=True, + ).path + + def _set_requirement(self) -> None: + """Set requirement after generating metadata.""" + assert self.req is None + assert self.metadata is not None + assert self.source_dir is not None + + # Construct a Requirement object from the generated metadata + if isinstance(parse_version(self.metadata["Version"]), Version): + op = "==" + else: + op = "===" + + self.req = Requirement( + "".join( + [ + self.metadata["Name"], + op, + self.metadata["Version"], + ] + ) + ) + + def warn_on_mismatching_name(self) -> None: + metadata_name = canonicalize_name(self.metadata["Name"]) + if canonicalize_name(self.req.name) == metadata_name: + # Everything is fine. + return + + # If we're here, there's a mismatch. Log a warning about it. + logger.warning( + "Generating metadata for package %s " + "produced metadata for project name %s. Fix your " + "#egg=%s fragments.", + self.name, + metadata_name, + self.name, + ) + self.req = Requirement(metadata_name) + + def check_if_exists(self, use_user_site: bool) -> None: + """Find an installed distribution that satisfies or conflicts + with this requirement, and set self.satisfied_by or + self.should_reinstall appropriately. + """ + if self.req is None: + return + existing_dist = get_distribution(self.req.name) + if not existing_dist: + return + + # pkg_resouces may contain a different copy of packaging.version from + # pip in if the downstream distributor does a poor job debundling pip. + # We avoid existing_dist.parsed_version and let SpecifierSet.contains + # parses the version instead. + existing_version = existing_dist.version + version_compatible = ( + existing_version is not None + and self.req.specifier.contains(existing_version, prereleases=True) + ) + if not version_compatible: + self.satisfied_by = None + if use_user_site: + if dist_in_usersite(existing_dist): + self.should_reinstall = True + elif running_under_virtualenv() and dist_in_site_packages( + existing_dist + ): + raise InstallationError( + "Will not install to the user site because it will " + "lack sys.path precedence to {} in {}".format( + existing_dist.project_name, existing_dist.location + ) + ) + else: + self.should_reinstall = True + else: + if self.editable: + self.should_reinstall = True + # when installing editables, nothing pre-existing should ever + # satisfy + self.satisfied_by = None + else: + self.satisfied_by = existing_dist + + # Things valid for wheels + @property + def is_wheel(self) -> bool: + if not self.link: + return False + return self.link.is_wheel + + # Things valid for sdists + @property + def unpacked_source_directory(self) -> str: + return os.path.join( + self.source_dir, self.link and self.link.subdirectory_fragment or "" + ) + + @property + def setup_py_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + setup_py = os.path.join(self.unpacked_source_directory, "setup.py") + + return setup_py + + @property + def setup_cfg_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + setup_cfg = os.path.join(self.unpacked_source_directory, "setup.cfg") + + return setup_cfg + + @property + def pyproject_toml_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + return make_pyproject_path(self.unpacked_source_directory) + + def load_pyproject_toml(self) -> None: + """Load the pyproject.toml file. + + After calling this routine, all of the attributes related to PEP 517 + processing for this requirement have been set. In particular, the + use_pep517 attribute can be used to determine whether we should + follow the PEP 517 or legacy (setup.py) code path. + """ + pyproject_toml_data = load_pyproject_toml( + self.use_pep517, self.pyproject_toml_path, self.setup_py_path, str(self) + ) + + if pyproject_toml_data is None: + self.use_pep517 = False + return + + self.use_pep517 = True + requires, backend, check, backend_path = pyproject_toml_data + self.requirements_to_check = check + self.pyproject_requires = requires + self.pep517_backend = Pep517HookCaller( + self.unpacked_source_directory, + backend, + backend_path=backend_path, + ) + + def isolated_editable_sanity_check(self) -> None: + """Check that an editable requirement if valid for use with PEP 517/518. + + This verifies that an editable that has a pyproject.toml either supports PEP 660 + or as a setup.py or a setup.cfg + """ + if ( + self.editable + and self.use_pep517 + and not self.supports_pyproject_editable() + and not os.path.isfile(self.setup_py_path) + and not os.path.isfile(self.setup_cfg_path) + ): + raise InstallationError( + f"Project {self} has a 'pyproject.toml' and its build " + f"backend is missing the 'build_editable' hook. Since it does not " + f"have a 'setup.py' nor a 'setup.cfg', " + f"it cannot be installed in editable mode. " + f"Consider using a build backend that supports PEP 660." + ) + + def prepare_metadata(self) -> None: + """Ensure that project metadata is available. + + Under PEP 517 and PEP 660, call the backend hook to prepare the metadata. + Under legacy processing, call setup.py egg-info. + """ + assert self.source_dir + + if self.use_pep517: + assert self.pep517_backend is not None + if ( + self.editable + and self.permit_editable_wheels + and self.supports_pyproject_editable() + ): + self.metadata_directory = generate_editable_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + ) + else: + self.metadata_directory = generate_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + ) + else: + self.metadata_directory = generate_metadata_legacy( + build_env=self.build_env, + setup_py_path=self.setup_py_path, + source_dir=self.unpacked_source_directory, + isolated=self.isolated, + details=self.name or f"from {self.link}", + ) + + # Act on the newly generated metadata, based on the name and version. + if not self.name: + self._set_requirement() + else: + self.warn_on_mismatching_name() + + self.assert_source_matches_version() + + @property + def metadata(self) -> Any: + if not hasattr(self, "_metadata"): + self._metadata = get_metadata(self.get_dist()) + + return self._metadata + + def get_dist(self) -> Distribution: + return _get_dist(self.metadata_directory) + + def assert_source_matches_version(self) -> None: + assert self.source_dir + version = self.metadata["version"] + if self.req.specifier and version not in self.req.specifier: + logger.warning( + "Requested %s, but installing version %s", + self, + version, + ) + else: + logger.debug( + "Source in %s has version %s, which satisfies requirement %s", + display_path(self.source_dir), + version, + self, + ) + + # For both source distributions and editables + def ensure_has_source_dir( + self, + parent_dir: str, + autodelete: bool = False, + parallel_builds: bool = False, + ) -> None: + """Ensure that a source_dir is set. + + This will create a temporary build dir if the name of the requirement + isn't known yet. + + :param parent_dir: The ideal pip parent_dir for the source_dir. + Generally src_dir for editables and build_dir for sdists. + :return: self.source_dir + """ + if self.source_dir is None: + self.source_dir = self.ensure_build_location( + parent_dir, + autodelete=autodelete, + parallel_builds=parallel_builds, + ) + + # For editable installations + def update_editable(self) -> None: + if not self.link: + logger.debug( + "Cannot update repository at %s; repository location is unknown", + self.source_dir, + ) + return + assert self.editable + assert self.source_dir + if self.link.scheme == "file": + # Static paths don't get updated + return + vcs_backend = vcs.get_backend_for_scheme(self.link.scheme) + # Editable requirements are validated in Requirement constructors. + # So here, if it's neither a path nor a valid VCS URL, it's a bug. + assert vcs_backend, f"Unsupported VCS URL {self.link.url}" + hidden_url = hide_url(self.link.url) + vcs_backend.obtain(self.source_dir, url=hidden_url) + + # Top-level Actions + def uninstall( + self, auto_confirm: bool = False, verbose: bool = False + ) -> Optional[UninstallPathSet]: + """ + Uninstall the distribution currently satisfying this requirement. + + Prompts before removing or modifying files unless + ``auto_confirm`` is True. + + Refuses to delete or modify files outside of ``sys.prefix`` - + thus uninstallation within a virtual environment can only + modify that virtual environment, even if the virtualenv is + linked to global site-packages. + + """ + assert self.req + dist = get_distribution(self.req.name) + if not dist: + logger.warning("Skipping %s as it is not installed.", self.name) + return None + logger.info("Found existing installation: %s", dist) + + uninstalled_pathset = UninstallPathSet.from_dist(dist) + uninstalled_pathset.remove(auto_confirm, verbose) + return uninstalled_pathset + + def _get_archive_name(self, path: str, parentdir: str, rootdir: str) -> str: + def _clean_zip_name(name: str, prefix: str) -> str: + assert name.startswith( + prefix + os.path.sep + ), f"name {name!r} doesn't start with prefix {prefix!r}" + name = name[len(prefix) + 1 :] + name = name.replace(os.path.sep, "/") + return name + + path = os.path.join(parentdir, path) + name = _clean_zip_name(path, rootdir) + return self.name + "/" + name + + def archive(self, build_dir: Optional[str]) -> None: + """Saves archive to provided build_dir. + + Used for saving downloaded VCS requirements as part of `pip download`. + """ + assert self.source_dir + if build_dir is None: + return + + create_archive = True + archive_name = "{}-{}.zip".format(self.name, self.metadata["version"]) + archive_path = os.path.join(build_dir, archive_name) + + if os.path.exists(archive_path): + response = ask_path_exists( + "The file {} exists. (i)gnore, (w)ipe, " + "(b)ackup, (a)bort ".format(display_path(archive_path)), + ("i", "w", "b", "a"), + ) + if response == "i": + create_archive = False + elif response == "w": + logger.warning("Deleting %s", display_path(archive_path)) + os.remove(archive_path) + elif response == "b": + dest_file = backup_dir(archive_path) + logger.warning( + "Backing up %s to %s", + display_path(archive_path), + display_path(dest_file), + ) + shutil.move(archive_path, dest_file) + elif response == "a": + sys.exit(-1) + + if not create_archive: + return + + zip_output = zipfile.ZipFile( + archive_path, + "w", + zipfile.ZIP_DEFLATED, + allowZip64=True, + ) + with zip_output: + dir = os.path.normcase(os.path.abspath(self.unpacked_source_directory)) + for dirpath, dirnames, filenames in os.walk(dir): + for dirname in dirnames: + dir_arcname = self._get_archive_name( + dirname, + parentdir=dirpath, + rootdir=dir, + ) + zipdir = zipfile.ZipInfo(dir_arcname + "/") + zipdir.external_attr = 0x1ED << 16 # 0o755 + zip_output.writestr(zipdir, "") + for filename in filenames: + file_arcname = self._get_archive_name( + filename, + parentdir=dirpath, + rootdir=dir, + ) + filename = os.path.join(dirpath, filename) + zip_output.write(filename, file_arcname) + + logger.info("Saved %s", display_path(archive_path)) + + def install( + self, + install_options: List[str], + global_options: Optional[Sequence[str]] = None, + root: Optional[str] = None, + home: Optional[str] = None, + prefix: Optional[str] = None, + warn_script_location: bool = True, + use_user_site: bool = False, + pycompile: bool = True, + ) -> None: + scheme = get_scheme( + self.name, + user=use_user_site, + home=home, + root=root, + isolated=self.isolated, + prefix=prefix, + ) + + global_options = global_options if global_options is not None else [] + if self.editable and not self.is_wheel: + install_editable_legacy( + install_options, + global_options, + prefix=prefix, + home=home, + use_user_site=use_user_site, + name=self.name, + setup_py_path=self.setup_py_path, + isolated=self.isolated, + build_env=self.build_env, + unpacked_source_directory=self.unpacked_source_directory, + ) + self.install_succeeded = True + return + + if self.is_wheel: + assert self.local_file_path + direct_url = None + if self.editable: + direct_url = direct_url_for_editable(self.unpacked_source_directory) + elif self.original_link: + direct_url = direct_url_from_link( + self.original_link, + self.source_dir, + self.original_link_is_in_wheel_cache, + ) + install_wheel( + self.name, + self.local_file_path, + scheme=scheme, + req_description=str(self.req), + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=self.user_supplied, + ) + self.install_succeeded = True + return + + # TODO: Why don't we do this for editable installs? + + # Extend the list of global and install options passed on to + # the setup.py call with the ones from the requirements file. + # Options specified in requirements file override those + # specified on the command line, since the last option given + # to setup.py is the one that is used. + global_options = list(global_options) + self.global_options + install_options = list(install_options) + self.install_options + + try: + success = install_legacy( + install_options=install_options, + global_options=global_options, + root=root, + home=home, + prefix=prefix, + use_user_site=use_user_site, + pycompile=pycompile, + scheme=scheme, + setup_py_path=self.setup_py_path, + isolated=self.isolated, + req_name=self.name, + build_env=self.build_env, + unpacked_source_directory=self.unpacked_source_directory, + req_description=str(self.req), + ) + except LegacyInstallFailure as exc: + self.install_succeeded = False + raise exc.__cause__ + except Exception: + self.install_succeeded = True + raise + + self.install_succeeded = success + + if success and self.legacy_install_reason == 8368: + deprecated( + reason=( + "{} was installed using the legacy 'setup.py install' " + "method, because a wheel could not be built for it.".format( + self.name + ) + ), + replacement="to fix the wheel build issue reported above", + gone_in=None, + issue=8368, + ) + + +def check_invalid_constraint_type(req: InstallRequirement) -> str: + + # Check for unsupported forms + problem = "" + if not req.name: + problem = "Unnamed requirements are not allowed as constraints" + elif req.editable: + problem = "Editable requirements are not allowed as constraints" + elif req.extras: + problem = "Constraints cannot have extras" + + if problem: + deprecated( + reason=( + "Constraints are only allowed to take the form of a package " + "name and a version specifier. Other forms were originally " + "permitted as an accident of the implementation, but were " + "undocumented. The new implementation of the resolver no " + "longer supports these forms." + ), + replacement="replacing the constraint with a requirement", + # No plan yet for when the new resolver becomes default + gone_in=None, + issue=8210, + ) + + return problem diff --git a/venv/Lib/site-packages/pip/_internal/req/req_set.py b/venv/Lib/site-packages/pip/_internal/req/req_set.py new file mode 100644 index 00000000..6626c37e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_set.py @@ -0,0 +1,189 @@ +import logging +from collections import OrderedDict +from typing import Dict, Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InstallationError +from pip._internal.models.wheel import Wheel +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils import compatibility_tags + +logger = logging.getLogger(__name__) + + +class RequirementSet: + def __init__(self, check_supported_wheels: bool = True) -> None: + """Create a RequirementSet.""" + + self.requirements: Dict[str, InstallRequirement] = OrderedDict() + self.check_supported_wheels = check_supported_wheels + + self.unnamed_requirements: List[InstallRequirement] = [] + + def __str__(self) -> str: + requirements = sorted( + (req for req in self.requirements.values() if not req.comes_from), + key=lambda req: canonicalize_name(req.name or ""), + ) + return " ".join(str(req.req) for req in requirements) + + def __repr__(self) -> str: + requirements = sorted( + self.requirements.values(), + key=lambda req: canonicalize_name(req.name or ""), + ) + + format_string = "<{classname} object; {count} requirement(s): {reqs}>" + return format_string.format( + classname=self.__class__.__name__, + count=len(requirements), + reqs=", ".join(str(req.req) for req in requirements), + ) + + def add_unnamed_requirement(self, install_req: InstallRequirement) -> None: + assert not install_req.name + self.unnamed_requirements.append(install_req) + + def add_named_requirement(self, install_req: InstallRequirement) -> None: + assert install_req.name + + project_name = canonicalize_name(install_req.name) + self.requirements[project_name] = install_req + + def add_requirement( + self, + install_req: InstallRequirement, + parent_req_name: Optional[str] = None, + extras_requested: Optional[Iterable[str]] = None, + ) -> Tuple[List[InstallRequirement], Optional[InstallRequirement]]: + """Add install_req as a requirement to install. + + :param parent_req_name: The name of the requirement that needed this + added. The name is used because when multiple unnamed requirements + resolve to the same name, we could otherwise end up with dependency + links that point outside the Requirements set. parent_req must + already be added. Note that None implies that this is a user + supplied requirement, vs an inferred one. + :param extras_requested: an iterable of extras used to evaluate the + environment markers. + :return: Additional requirements to scan. That is either [] if + the requirement is not applicable, or [install_req] if the + requirement is applicable and has just been added. + """ + # If the markers do not match, ignore this requirement. + if not install_req.match_markers(extras_requested): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + install_req.name, + install_req.markers, + ) + return [], None + + # If the wheel is not supported, raise an error. + # Should check this after filtering out based on environment markers to + # allow specifying different wheels based on the environment/OS, in a + # single requirements file. + if install_req.link and install_req.link.is_wheel: + wheel = Wheel(install_req.link.filename) + tags = compatibility_tags.get_supported() + if self.check_supported_wheels and not wheel.supported(tags): + raise InstallationError( + "{} is not a supported wheel on this platform.".format( + wheel.filename + ) + ) + + # This next bit is really a sanity check. + assert ( + not install_req.user_supplied or parent_req_name is None + ), "a user supplied req shouldn't have a parent" + + # Unnamed requirements are scanned again and the requirement won't be + # added as a dependency until after scanning. + if not install_req.name: + self.add_unnamed_requirement(install_req) + return [install_req], None + + try: + existing_req: Optional[InstallRequirement] = self.get_requirement( + install_req.name + ) + except KeyError: + existing_req = None + + has_conflicting_requirement = ( + parent_req_name is None + and existing_req + and not existing_req.constraint + and existing_req.extras == install_req.extras + and existing_req.req + and install_req.req + and existing_req.req.specifier != install_req.req.specifier + ) + if has_conflicting_requirement: + raise InstallationError( + "Double requirement given: {} (already in {}, name={!r})".format( + install_req, existing_req, install_req.name + ) + ) + + # When no existing requirement exists, add the requirement as a + # dependency and it will be scanned again after. + if not existing_req: + self.add_named_requirement(install_req) + # We'd want to rescan this requirement later + return [install_req], install_req + + # Assume there's no need to scan, and that we've already + # encountered this for scanning. + if install_req.constraint or not existing_req.constraint: + return [], existing_req + + does_not_satisfy_constraint = install_req.link and not ( + existing_req.link and install_req.link.path == existing_req.link.path + ) + if does_not_satisfy_constraint: + raise InstallationError( + "Could not satisfy constraints for '{}': " + "installation from path or url cannot be " + "constrained to a version".format(install_req.name) + ) + # If we're now installing a constraint, mark the existing + # object for real installation. + existing_req.constraint = False + # If we're now installing a user supplied requirement, + # mark the existing object as such. + if install_req.user_supplied: + existing_req.user_supplied = True + existing_req.extras = tuple( + sorted(set(existing_req.extras) | set(install_req.extras)) + ) + logger.debug( + "Setting %s extras to: %s", + existing_req, + existing_req.extras, + ) + # Return the existing requirement for addition to the parent and + # scanning again. + return [existing_req], existing_req + + def has_requirement(self, name: str) -> bool: + project_name = canonicalize_name(name) + + return ( + project_name in self.requirements + and not self.requirements[project_name].constraint + ) + + def get_requirement(self, name: str) -> InstallRequirement: + project_name = canonicalize_name(name) + + if project_name in self.requirements: + return self.requirements[project_name] + + raise KeyError(f"No project with the name {name!r}") + + @property + def all_requirements(self) -> List[InstallRequirement]: + return self.unnamed_requirements + list(self.requirements.values()) diff --git a/venv/Lib/site-packages/pip/_internal/req/req_tracker.py b/venv/Lib/site-packages/pip/_internal/req/req_tracker.py new file mode 100644 index 00000000..24d3c530 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_tracker.py @@ -0,0 +1,124 @@ +import contextlib +import hashlib +import logging +import os +from types import TracebackType +from typing import Dict, Iterator, Optional, Set, Type, Union + +from pip._internal.models.link import Link +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +@contextlib.contextmanager +def update_env_context_manager(**changes: str) -> Iterator[None]: + target = os.environ + + # Save values from the target and change them. + non_existent_marker = object() + saved_values: Dict[str, Union[object, str]] = {} + for name, new_value in changes.items(): + try: + saved_values[name] = target[name] + except KeyError: + saved_values[name] = non_existent_marker + target[name] = new_value + + try: + yield + finally: + # Restore original values in the target. + for name, original_value in saved_values.items(): + if original_value is non_existent_marker: + del target[name] + else: + assert isinstance(original_value, str) # for mypy + target[name] = original_value + + +@contextlib.contextmanager +def get_requirement_tracker() -> Iterator["RequirementTracker"]: + root = os.environ.get("PIP_REQ_TRACKER") + with contextlib.ExitStack() as ctx: + if root is None: + root = ctx.enter_context(TempDirectory(kind="req-tracker")).path + ctx.enter_context(update_env_context_manager(PIP_REQ_TRACKER=root)) + logger.debug("Initialized build tracking at %s", root) + + with RequirementTracker(root) as tracker: + yield tracker + + +class RequirementTracker: + def __init__(self, root: str) -> None: + self._root = root + self._entries: Set[InstallRequirement] = set() + logger.debug("Created build tracker: %s", self._root) + + def __enter__(self) -> "RequirementTracker": + logger.debug("Entered build tracker: %s", self._root) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self.cleanup() + + def _entry_path(self, link: Link) -> str: + hashed = hashlib.sha224(link.url_without_fragment.encode()).hexdigest() + return os.path.join(self._root, hashed) + + def add(self, req: InstallRequirement) -> None: + """Add an InstallRequirement to build tracking.""" + + assert req.link + # Get the file to write information about this requirement. + entry_path = self._entry_path(req.link) + + # Try reading from the file. If it exists and can be read from, a build + # is already in progress, so a LookupError is raised. + try: + with open(entry_path) as fp: + contents = fp.read() + except FileNotFoundError: + pass + else: + message = "{} is already being built: {}".format(req.link, contents) + raise LookupError(message) + + # If we're here, req should really not be building already. + assert req not in self._entries + + # Start tracking this requirement. + with open(entry_path, "w", encoding="utf-8") as fp: + fp.write(str(req)) + self._entries.add(req) + + logger.debug("Added %s to build tracker %r", req, self._root) + + def remove(self, req: InstallRequirement) -> None: + """Remove an InstallRequirement from build tracking.""" + + assert req.link + # Delete the created file and the corresponding entries. + os.unlink(self._entry_path(req.link)) + self._entries.remove(req) + + logger.debug("Removed %s from build tracker %r", req, self._root) + + def cleanup(self) -> None: + for req in set(self._entries): + self.remove(req) + + logger.debug("Removed build tracker: %r", self._root) + + @contextlib.contextmanager + def track(self, req: InstallRequirement) -> Iterator[None]: + self.add(req) + yield + self.remove(req) diff --git a/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py b/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py new file mode 100644 index 00000000..779e93b4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py @@ -0,0 +1,633 @@ +import csv +import functools +import os +import sys +import sysconfig +from importlib.util import cache_from_source +from typing import Any, Callable, Dict, Iterable, Iterator, List, Optional, Set, Tuple + +from pip._vendor import pkg_resources +from pip._vendor.pkg_resources import Distribution + +from pip._internal.exceptions import UninstallationError +from pip._internal.locations import get_bin_prefix, get_bin_user +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.egg_link import egg_link_path_from_location +from pip._internal.utils.logging import getLogger, indent_log +from pip._internal.utils.misc import ( + ask, + dist_in_usersite, + dist_is_local, + is_local, + normalize_path, + renames, + rmtree, +) +from pip._internal.utils.temp_dir import AdjacentTempDirectory, TempDirectory + +logger = getLogger(__name__) + + +def _script_names(dist: Distribution, script_name: str, is_gui: bool) -> List[str]: + """Create the fully qualified name of the files created by + {console,gui}_scripts for the given ``dist``. + Returns the list of file names + """ + if dist_in_usersite(dist): + bin_dir = get_bin_user() + else: + bin_dir = get_bin_prefix() + exe_name = os.path.join(bin_dir, script_name) + paths_to_remove = [exe_name] + if WINDOWS: + paths_to_remove.append(exe_name + ".exe") + paths_to_remove.append(exe_name + ".exe.manifest") + if is_gui: + paths_to_remove.append(exe_name + "-script.pyw") + else: + paths_to_remove.append(exe_name + "-script.py") + return paths_to_remove + + +def _unique(fn: Callable[..., Iterator[Any]]) -> Callable[..., Iterator[Any]]: + @functools.wraps(fn) + def unique(*args: Any, **kw: Any) -> Iterator[Any]: + seen: Set[Any] = set() + for item in fn(*args, **kw): + if item not in seen: + seen.add(item) + yield item + + return unique + + +@_unique +def uninstallation_paths(dist: Distribution) -> Iterator[str]: + """ + Yield all the uninstallation paths for dist based on RECORD-without-.py[co] + + Yield paths to all the files in RECORD. For each .py file in RECORD, add + the .pyc and .pyo in the same directory. + + UninstallPathSet.add() takes care of the __pycache__ .py[co]. + + If RECORD is not found, raises UninstallationError, + with possible information from the INSTALLER file. + + https://packaging.python.org/specifications/recording-installed-packages/ + """ + try: + r = csv.reader(dist.get_metadata_lines("RECORD")) + except FileNotFoundError as missing_record_exception: + msg = "Cannot uninstall {dist}, RECORD file not found.".format(dist=dist) + try: + installer = next(dist.get_metadata_lines("INSTALLER")) + if not installer or installer == "pip": + raise ValueError() + except (OSError, StopIteration, ValueError): + dep = "{}=={}".format(dist.project_name, dist.version) + msg += ( + " You might be able to recover from this via: " + "'pip install --force-reinstall --no-deps {}'.".format(dep) + ) + else: + msg += " Hint: The package was installed by {}.".format(installer) + raise UninstallationError(msg) from missing_record_exception + for row in r: + path = os.path.join(dist.location, row[0]) + yield path + if path.endswith(".py"): + dn, fn = os.path.split(path) + base = fn[:-3] + path = os.path.join(dn, base + ".pyc") + yield path + path = os.path.join(dn, base + ".pyo") + yield path + + +def compact(paths: Iterable[str]) -> Set[str]: + """Compact a path set to contain the minimal number of paths + necessary to contain all paths in the set. If /a/path/ and + /a/path/to/a/file.txt are both in the set, leave only the + shorter path.""" + + sep = os.path.sep + short_paths: Set[str] = set() + for path in sorted(paths, key=len): + should_skip = any( + path.startswith(shortpath.rstrip("*")) + and path[len(shortpath.rstrip("*").rstrip(sep))] == sep + for shortpath in short_paths + ) + if not should_skip: + short_paths.add(path) + return short_paths + + +def compress_for_rename(paths: Iterable[str]) -> Set[str]: + """Returns a set containing the paths that need to be renamed. + + This set may include directories when the original sequence of paths + included every file on disk. + """ + case_map = {os.path.normcase(p): p for p in paths} + remaining = set(case_map) + unchecked = sorted({os.path.split(p)[0] for p in case_map.values()}, key=len) + wildcards: Set[str] = set() + + def norm_join(*a: str) -> str: + return os.path.normcase(os.path.join(*a)) + + for root in unchecked: + if any(os.path.normcase(root).startswith(w) for w in wildcards): + # This directory has already been handled. + continue + + all_files: Set[str] = set() + all_subdirs: Set[str] = set() + for dirname, subdirs, files in os.walk(root): + all_subdirs.update(norm_join(root, dirname, d) for d in subdirs) + all_files.update(norm_join(root, dirname, f) for f in files) + # If all the files we found are in our remaining set of files to + # remove, then remove them from the latter set and add a wildcard + # for the directory. + if not (all_files - remaining): + remaining.difference_update(all_files) + wildcards.add(root + os.sep) + + return set(map(case_map.__getitem__, remaining)) | wildcards + + +def compress_for_output_listing(paths: Iterable[str]) -> Tuple[Set[str], Set[str]]: + """Returns a tuple of 2 sets of which paths to display to user + + The first set contains paths that would be deleted. Files of a package + are not added and the top-level directory of the package has a '*' added + at the end - to signify that all it's contents are removed. + + The second set contains files that would have been skipped in the above + folders. + """ + + will_remove = set(paths) + will_skip = set() + + # Determine folders and files + folders = set() + files = set() + for path in will_remove: + if path.endswith(".pyc"): + continue + if path.endswith("__init__.py") or ".dist-info" in path: + folders.add(os.path.dirname(path)) + files.add(path) + + # probably this one https://github.com/python/mypy/issues/390 + _normcased_files = set(map(os.path.normcase, files)) # type: ignore + + folders = compact(folders) + + # This walks the tree using os.walk to not miss extra folders + # that might get added. + for folder in folders: + for dirpath, _, dirfiles in os.walk(folder): + for fname in dirfiles: + if fname.endswith(".pyc"): + continue + + file_ = os.path.join(dirpath, fname) + if ( + os.path.isfile(file_) + and os.path.normcase(file_) not in _normcased_files + ): + # We are skipping this file. Add it to the set. + will_skip.add(file_) + + will_remove = files | {os.path.join(folder, "*") for folder in folders} + + return will_remove, will_skip + + +class StashedUninstallPathSet: + """A set of file rename operations to stash files while + tentatively uninstalling them.""" + + def __init__(self) -> None: + # Mapping from source file root to [Adjacent]TempDirectory + # for files under that directory. + self._save_dirs: Dict[str, TempDirectory] = {} + # (old path, new path) tuples for each move that may need + # to be undone. + self._moves: List[Tuple[str, str]] = [] + + def _get_directory_stash(self, path: str) -> str: + """Stashes a directory. + + Directories are stashed adjacent to their original location if + possible, or else moved/copied into the user's temp dir.""" + + try: + save_dir: TempDirectory = AdjacentTempDirectory(path) + except OSError: + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[os.path.normcase(path)] = save_dir + + return save_dir.path + + def _get_file_stash(self, path: str) -> str: + """Stashes a file. + + If no root has been provided, one will be created for the directory + in the user's temp directory.""" + path = os.path.normcase(path) + head, old_head = os.path.dirname(path), None + save_dir = None + + while head != old_head: + try: + save_dir = self._save_dirs[head] + break + except KeyError: + pass + head, old_head = os.path.dirname(head), head + else: + # Did not find any suitable root + head = os.path.dirname(path) + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[head] = save_dir + + relpath = os.path.relpath(path, head) + if relpath and relpath != os.path.curdir: + return os.path.join(save_dir.path, relpath) + return save_dir.path + + def stash(self, path: str) -> str: + """Stashes the directory or file and returns its new location. + Handle symlinks as files to avoid modifying the symlink targets. + """ + path_is_dir = os.path.isdir(path) and not os.path.islink(path) + if path_is_dir: + new_path = self._get_directory_stash(path) + else: + new_path = self._get_file_stash(path) + + self._moves.append((path, new_path)) + if path_is_dir and os.path.isdir(new_path): + # If we're moving a directory, we need to + # remove the destination first or else it will be + # moved to inside the existing directory. + # We just created new_path ourselves, so it will + # be removable. + os.rmdir(new_path) + renames(path, new_path) + return new_path + + def commit(self) -> None: + """Commits the uninstall by removing stashed files.""" + for _, save_dir in self._save_dirs.items(): + save_dir.cleanup() + self._moves = [] + self._save_dirs = {} + + def rollback(self) -> None: + """Undoes the uninstall by moving stashed files back.""" + for p in self._moves: + logger.info("Moving to %s\n from %s", *p) + + for new_path, path in self._moves: + try: + logger.debug("Replacing %s from %s", new_path, path) + if os.path.isfile(new_path) or os.path.islink(new_path): + os.unlink(new_path) + elif os.path.isdir(new_path): + rmtree(new_path) + renames(path, new_path) + except OSError as ex: + logger.error("Failed to restore %s", new_path) + logger.debug("Exception: %s", ex) + + self.commit() + + @property + def can_rollback(self) -> bool: + return bool(self._moves) + + +class UninstallPathSet: + """A set of file paths to be removed in the uninstallation of a + requirement.""" + + def __init__(self, dist: Distribution) -> None: + self.paths: Set[str] = set() + self._refuse: Set[str] = set() + self.pth: Dict[str, UninstallPthEntries] = {} + self.dist = dist + self._moved_paths = StashedUninstallPathSet() + + def _permitted(self, path: str) -> bool: + """ + Return True if the given path is one we are permitted to + remove/modify, False otherwise. + + """ + return is_local(path) + + def add(self, path: str) -> None: + head, tail = os.path.split(path) + + # we normalize the head to resolve parent directory symlinks, but not + # the tail, since we only want to uninstall symlinks, not their targets + path = os.path.join(normalize_path(head), os.path.normcase(tail)) + + if not os.path.exists(path): + return + if self._permitted(path): + self.paths.add(path) + else: + self._refuse.add(path) + + # __pycache__ files can show up after 'installed-files.txt' is created, + # due to imports + if os.path.splitext(path)[1] == ".py": + self.add(cache_from_source(path)) + + def add_pth(self, pth_file: str, entry: str) -> None: + pth_file = normalize_path(pth_file) + if self._permitted(pth_file): + if pth_file not in self.pth: + self.pth[pth_file] = UninstallPthEntries(pth_file) + self.pth[pth_file].add(entry) + else: + self._refuse.add(pth_file) + + def remove(self, auto_confirm: bool = False, verbose: bool = False) -> None: + """Remove paths in ``self.paths`` with confirmation (unless + ``auto_confirm`` is True).""" + + if not self.paths: + logger.info( + "Can't uninstall '%s'. No files were found to uninstall.", + self.dist.project_name, + ) + return + + dist_name_version = self.dist.project_name + "-" + self.dist.version + logger.info("Uninstalling %s:", dist_name_version) + + with indent_log(): + if auto_confirm or self._allowed_to_proceed(verbose): + moved = self._moved_paths + + for_rename = compress_for_rename(self.paths) + + for path in sorted(compact(for_rename)): + moved.stash(path) + logger.verbose("Removing file or directory %s", path) + + for pth in self.pth.values(): + pth.remove() + + logger.info("Successfully uninstalled %s", dist_name_version) + + def _allowed_to_proceed(self, verbose: bool) -> bool: + """Display which files would be deleted and prompt for confirmation""" + + def _display(msg: str, paths: Iterable[str]) -> None: + if not paths: + return + + logger.info(msg) + with indent_log(): + for path in sorted(compact(paths)): + logger.info(path) + + if not verbose: + will_remove, will_skip = compress_for_output_listing(self.paths) + else: + # In verbose mode, display all the files that are going to be + # deleted. + will_remove = set(self.paths) + will_skip = set() + + _display("Would remove:", will_remove) + _display("Would not remove (might be manually added):", will_skip) + _display("Would not remove (outside of prefix):", self._refuse) + if verbose: + _display("Will actually move:", compress_for_rename(self.paths)) + + return ask("Proceed (Y/n)? ", ("y", "n", "")) != "n" + + def rollback(self) -> None: + """Rollback the changes previously made by remove().""" + if not self._moved_paths.can_rollback: + logger.error( + "Can't roll back %s; was not uninstalled", + self.dist.project_name, + ) + return + logger.info("Rolling back uninstall of %s", self.dist.project_name) + self._moved_paths.rollback() + for pth in self.pth.values(): + pth.rollback() + + def commit(self) -> None: + """Remove temporary save dir: rollback will no longer be possible.""" + self._moved_paths.commit() + + @classmethod + def from_dist(cls, dist: Distribution) -> "UninstallPathSet": + dist_path = normalize_path(dist.location) + if not dist_is_local(dist): + logger.info( + "Not uninstalling %s at %s, outside environment %s", + dist.key, + dist_path, + sys.prefix, + ) + return cls(dist) + + if dist_path in { + p + for p in {sysconfig.get_path("stdlib"), sysconfig.get_path("platstdlib")} + if p + }: + logger.info( + "Not uninstalling %s at %s, as it is in the standard library.", + dist.key, + dist_path, + ) + return cls(dist) + + paths_to_remove = cls(dist) + develop_egg_link = egg_link_path_from_location(dist.project_name) + develop_egg_link_egg_info = "{}.egg-info".format( + pkg_resources.to_filename(dist.project_name) + ) + egg_info_exists = dist.egg_info and os.path.exists(dist.egg_info) + # Special case for distutils installed package + distutils_egg_info = getattr(dist._provider, "path", None) + + # Uninstall cases order do matter as in the case of 2 installs of the + # same package, pip needs to uninstall the currently detected version + if ( + egg_info_exists + and dist.egg_info.endswith(".egg-info") + and not dist.egg_info.endswith(develop_egg_link_egg_info) + ): + # if dist.egg_info.endswith(develop_egg_link_egg_info), we + # are in fact in the develop_egg_link case + paths_to_remove.add(dist.egg_info) + if dist.has_metadata("installed-files.txt"): + for installed_file in dist.get_metadata( + "installed-files.txt" + ).splitlines(): + path = os.path.normpath(os.path.join(dist.egg_info, installed_file)) + paths_to_remove.add(path) + # FIXME: need a test for this elif block + # occurs with --single-version-externally-managed/--record outside + # of pip + elif dist.has_metadata("top_level.txt"): + if dist.has_metadata("namespace_packages.txt"): + namespaces = dist.get_metadata("namespace_packages.txt") + else: + namespaces = [] + for top_level_pkg in [ + p + for p in dist.get_metadata("top_level.txt").splitlines() + if p and p not in namespaces + ]: + path = os.path.join(dist.location, top_level_pkg) + paths_to_remove.add(path) + paths_to_remove.add(path + ".py") + paths_to_remove.add(path + ".pyc") + paths_to_remove.add(path + ".pyo") + + elif distutils_egg_info: + raise UninstallationError( + "Cannot uninstall {!r}. It is a distutils installed project " + "and thus we cannot accurately determine which files belong " + "to it which would lead to only a partial uninstall.".format( + dist.project_name, + ) + ) + + elif dist.location.endswith(".egg"): + # package installed by easy_install + # We cannot match on dist.egg_name because it can slightly vary + # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg + paths_to_remove.add(dist.location) + easy_install_egg = os.path.split(dist.location)[1] + easy_install_pth = os.path.join( + os.path.dirname(dist.location), "easy-install.pth" + ) + paths_to_remove.add_pth(easy_install_pth, "./" + easy_install_egg) + + elif egg_info_exists and dist.egg_info.endswith(".dist-info"): + for path in uninstallation_paths(dist): + paths_to_remove.add(path) + + elif develop_egg_link: + # develop egg + with open(develop_egg_link) as fh: + link_pointer = os.path.normcase(fh.readline().strip()) + assert ( + link_pointer == dist.location + ), "Egg-link {} does not match installed location of {} (at {})".format( + link_pointer, dist.project_name, dist.location + ) + paths_to_remove.add(develop_egg_link) + easy_install_pth = os.path.join( + os.path.dirname(develop_egg_link), "easy-install.pth" + ) + paths_to_remove.add_pth(easy_install_pth, dist.location) + + else: + logger.debug( + "Not sure how to uninstall: %s - Check: %s", + dist, + dist.location, + ) + + # find distutils scripts= scripts + if dist.has_metadata("scripts") and dist.metadata_isdir("scripts"): + for script in dist.metadata_listdir("scripts"): + if dist_in_usersite(dist): + bin_dir = get_bin_user() + else: + bin_dir = get_bin_prefix() + paths_to_remove.add(os.path.join(bin_dir, script)) + if WINDOWS: + paths_to_remove.add(os.path.join(bin_dir, script) + ".bat") + + # find console_scripts + _scripts_to_remove = [] + console_scripts = dist.get_entry_map(group="console_scripts") + for name in console_scripts.keys(): + _scripts_to_remove.extend(_script_names(dist, name, False)) + # find gui_scripts + gui_scripts = dist.get_entry_map(group="gui_scripts") + for name in gui_scripts.keys(): + _scripts_to_remove.extend(_script_names(dist, name, True)) + + for s in _scripts_to_remove: + paths_to_remove.add(s) + + return paths_to_remove + + +class UninstallPthEntries: + def __init__(self, pth_file: str) -> None: + self.file = pth_file + self.entries: Set[str] = set() + self._saved_lines: Optional[List[bytes]] = None + + def add(self, entry: str) -> None: + entry = os.path.normcase(entry) + # On Windows, os.path.normcase converts the entry to use + # backslashes. This is correct for entries that describe absolute + # paths outside of site-packages, but all the others use forward + # slashes. + # os.path.splitdrive is used instead of os.path.isabs because isabs + # treats non-absolute paths with drive letter markings like c:foo\bar + # as absolute paths. It also does not recognize UNC paths if they don't + # have more than "\\sever\share". Valid examples: "\\server\share\" or + # "\\server\share\folder". + if WINDOWS and not os.path.splitdrive(entry)[0]: + entry = entry.replace("\\", "/") + self.entries.add(entry) + + def remove(self) -> None: + logger.verbose("Removing pth entries from %s:", self.file) + + # If the file doesn't exist, log a warning and return + if not os.path.isfile(self.file): + logger.warning("Cannot remove entries from nonexistent file %s", self.file) + return + with open(self.file, "rb") as fh: + # windows uses '\r\n' with py3k, but uses '\n' with py2.x + lines = fh.readlines() + self._saved_lines = lines + if any(b"\r\n" in line for line in lines): + endline = "\r\n" + else: + endline = "\n" + # handle missing trailing newline + if lines and not lines[-1].endswith(endline.encode("utf-8")): + lines[-1] = lines[-1] + endline.encode("utf-8") + for entry in self.entries: + try: + logger.verbose("Removing entry: %s", entry) + lines.remove((entry + endline).encode("utf-8")) + except ValueError: + pass + with open(self.file, "wb") as fh: + fh.writelines(lines) + + def rollback(self) -> bool: + if self._saved_lines is None: + logger.error("Cannot roll back changes to %s, none were made", self.file) + return False + logger.debug("Rolling %s back to previous state", self.file) + with open(self.file, "wb") as fh: + fh.writelines(self._saved_lines) + return True diff --git a/venv/Lib/site-packages/pip/_internal/resolution/__init__.py b/venv/Lib/site-packages/pip/_internal/resolution/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_internal/resolution/base.py b/venv/Lib/site-packages/pip/_internal/resolution/base.py new file mode 100644 index 00000000..42dade18 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/base.py @@ -0,0 +1,20 @@ +from typing import Callable, List, Optional + +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_set import RequirementSet + +InstallRequirementProvider = Callable[ + [str, Optional[InstallRequirement]], InstallRequirement +] + + +class BaseResolver: + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + raise NotImplementedError() + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py b/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py b/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py new file mode 100644 index 00000000..09caaa6d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py @@ -0,0 +1,467 @@ +"""Dependency Resolution + +The dependency resolution in pip is performed as follows: + +for top-level requirements: + a. only one spec allowed per project, regardless of conflicts or not. + otherwise a "double requirement" exception is raised + b. they override sub-dependency requirements. +for sub-dependencies + a. "first found, wins" (where the order is breadth first) +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import sys +from collections import defaultdict +from itertools import chain +from typing import DefaultDict, Iterable, List, Optional, Set, Tuple + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.requirements import Requirement + +from pip._internal.cache import WheelCache +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + HashError, + HashErrors, + NoneMetadataError, + UnsupportedPythonVersion, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.req_install import ( + InstallRequirement, + check_invalid_constraint_type, +) +from pip._internal.req.req_set import RequirementSet +from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import dist_in_usersite, normalize_version_info +from pip._internal.utils.packaging import check_requires_python + +logger = logging.getLogger(__name__) + +DiscoveredDependencies = DefaultDict[str, List[InstallRequirement]] + + +def _check_dist_requires_python( + dist: BaseDistribution, + version_info: Tuple[int, int, int], + ignore_requires_python: bool = False, +) -> None: + """ + Check whether the given Python version is compatible with a distribution's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + + :raises UnsupportedPythonVersion: When the given Python version isn't + compatible. + """ + # This idiosyncratically converts the SpecifierSet to str and let + # check_requires_python then parse it again into SpecifierSet. But this + # is the legacy resolver so I'm just not going to bother refactoring. + try: + requires_python = str(dist.requires_python) + except FileNotFoundError as e: + raise NoneMetadataError(dist, str(e)) + try: + is_compatible = check_requires_python( + requires_python, + version_info=version_info, + ) + except specifiers.InvalidSpecifier as exc: + logger.warning( + "Package %r has an invalid Requires-Python: %s", dist.raw_name, exc + ) + return + + if is_compatible: + return + + version = ".".join(map(str, version_info)) + if ignore_requires_python: + logger.debug( + "Ignoring failed Requires-Python check for package %r: %s not in %r", + dist.raw_name, + version, + requires_python, + ) + return + + raise UnsupportedPythonVersion( + "Package {!r} requires a different Python: {} not in {!r}".format( + dist.raw_name, version, requires_python + ) + ) + + +class Resolver(BaseResolver): + """Resolves which packages need to be installed/uninstalled to perform \ + the requested operation without breaking the requirements of any package. + """ + + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer: RequirementPreparer, + finder: PackageFinder, + wheel_cache: Optional[WheelCache], + make_install_req: InstallRequirementProvider, + use_user_site: bool, + ignore_dependencies: bool, + ignore_installed: bool, + ignore_requires_python: bool, + force_reinstall: bool, + upgrade_strategy: str, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> None: + super().__init__() + assert upgrade_strategy in self._allowed_strategies + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + self._py_version_info = py_version_info + + self.preparer = preparer + self.finder = finder + self.wheel_cache = wheel_cache + + self.upgrade_strategy = upgrade_strategy + self.force_reinstall = force_reinstall + self.ignore_dependencies = ignore_dependencies + self.ignore_installed = ignore_installed + self.ignore_requires_python = ignore_requires_python + self.use_user_site = use_user_site + self._make_install_req = make_install_req + + self._discovered_dependencies: DiscoveredDependencies = defaultdict(list) + + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + """Resolve what operations need to be done + + As a side-effect of this method, the packages (and their dependencies) + are downloaded, unpacked and prepared for installation. This + preparation is done by ``pip.operations.prepare``. + + Once PyPI has static dependency metadata available, it would be + possible to move the preparation to become a step separated from + dependency resolution. + """ + requirement_set = RequirementSet(check_supported_wheels=check_supported_wheels) + for req in root_reqs: + if req.constraint: + check_invalid_constraint_type(req) + requirement_set.add_requirement(req) + + # Actually prepare the files, and collect any exceptions. Most hash + # exceptions cannot be checked ahead of time, because + # _populate_link() needs to be called before we can make decisions + # based on link type. + discovered_reqs: List[InstallRequirement] = [] + hash_errors = HashErrors() + for req in chain(requirement_set.all_requirements, discovered_reqs): + try: + discovered_reqs.extend(self._resolve_one(requirement_set, req)) + except HashError as exc: + exc.req = req + hash_errors.append(exc) + + if hash_errors: + raise hash_errors + + return requirement_set + + def _is_upgrade_allowed(self, req: InstallRequirement) -> bool: + if self.upgrade_strategy == "to-satisfy-only": + return False + elif self.upgrade_strategy == "eager": + return True + else: + assert self.upgrade_strategy == "only-if-needed" + return req.user_supplied or req.constraint + + def _set_req_to_reinstall(self, req: InstallRequirement) -> None: + """ + Set a requirement to be installed. + """ + # Don't uninstall the conflict if doing a user install and the + # conflict is not a user install. + if not self.use_user_site or dist_in_usersite(req.satisfied_by): + req.should_reinstall = True + req.satisfied_by = None + + def _check_skip_installed( + self, req_to_install: InstallRequirement + ) -> Optional[str]: + """Check if req_to_install should be skipped. + + This will check if the req is installed, and whether we should upgrade + or reinstall it, taking into account all the relevant user options. + + After calling this req_to_install will only have satisfied_by set to + None if the req_to_install is to be upgraded/reinstalled etc. Any + other value will be a dist recording the current thing installed that + satisfies the requirement. + + Note that for vcs urls and the like we can't assess skipping in this + routine - we simply identify that we need to pull the thing down, + then later on it is pulled down and introspected to assess upgrade/ + reinstalls etc. + + :return: A text reason for why it was skipped, or None. + """ + if self.ignore_installed: + return None + + req_to_install.check_if_exists(self.use_user_site) + if not req_to_install.satisfied_by: + return None + + if self.force_reinstall: + self._set_req_to_reinstall(req_to_install) + return None + + if not self._is_upgrade_allowed(req_to_install): + if self.upgrade_strategy == "only-if-needed": + return "already satisfied, skipping upgrade" + return "already satisfied" + + # Check for the possibility of an upgrade. For link-based + # requirements we have to pull the tree down and inspect to assess + # the version #, so it's handled way down. + if not req_to_install.link: + try: + self.finder.find_requirement(req_to_install, upgrade=True) + except BestVersionAlreadyInstalled: + # Then the best version is installed. + return "already up-to-date" + except DistributionNotFound: + # No distribution found, so we squash the error. It will + # be raised later when we re-try later to do the install. + # Why don't we just raise here? + pass + + self._set_req_to_reinstall(req_to_install) + return None + + def _find_requirement_link(self, req: InstallRequirement) -> Optional[Link]: + upgrade = self._is_upgrade_allowed(req) + best_candidate = self.finder.find_requirement(req, upgrade) + if not best_candidate: + return None + + # Log a warning per PEP 592 if necessary before returning. + link = best_candidate.link + if link.is_yanked: + reason = link.yanked_reason or "" + msg = ( + # Mark this as a unicode string to prevent + # "UnicodeEncodeError: 'ascii' codec can't encode character" + # in Python 2 when the reason contains non-ascii characters. + "The candidate selected for download or install is a " + "yanked version: {candidate}\n" + "Reason for being yanked: {reason}" + ).format(candidate=best_candidate, reason=reason) + logger.warning(msg) + + return link + + def _populate_link(self, req: InstallRequirement) -> None: + """Ensure that if a link can be found for this, that it is found. + + Note that req.link may still be None - if the requirement is already + installed and not needed to be upgraded based on the return value of + _is_upgrade_allowed(). + + If preparer.require_hashes is True, don't use the wheel cache, because + cached wheels, always built locally, have different hashes than the + files downloaded from the index server and thus throw false hash + mismatches. Furthermore, cached wheels at present have undeterministic + contents due to file modification times. + """ + if req.link is None: + req.link = self._find_requirement_link(req) + + if self.wheel_cache is None or self.preparer.require_hashes: + return + cache_entry = self.wheel_cache.get_cache_entry( + link=req.link, + package_name=req.name, + supported_tags=get_supported(), + ) + if cache_entry is not None: + logger.debug("Using cached wheel link: %s", cache_entry.link) + if req.link is req.original_link and cache_entry.persistent: + req.original_link_is_in_wheel_cache = True + req.link = cache_entry.link + + def _get_dist_for(self, req: InstallRequirement) -> BaseDistribution: + """Takes a InstallRequirement and returns a single AbstractDist \ + representing a prepared variant of the same. + """ + if req.editable: + return self.preparer.prepare_editable_requirement(req) + + # satisfied_by is only evaluated by calling _check_skip_installed, + # so it must be None here. + assert req.satisfied_by is None + skip_reason = self._check_skip_installed(req) + + if req.satisfied_by: + return self.preparer.prepare_installed_requirement(req, skip_reason) + + # We eagerly populate the link, since that's our "legacy" behavior. + self._populate_link(req) + dist = self.preparer.prepare_linked_requirement(req) + + # NOTE + # The following portion is for determining if a certain package is + # going to be re-installed/upgraded or not and reporting to the user. + # This should probably get cleaned up in a future refactor. + + # req.req is only avail after unpack for URL + # pkgs repeat check_if_exists to uninstall-on-upgrade + # (#14) + if not self.ignore_installed: + req.check_if_exists(self.use_user_site) + + if req.satisfied_by: + should_modify = ( + self.upgrade_strategy != "to-satisfy-only" + or self.force_reinstall + or self.ignore_installed + or req.link.scheme == "file" + ) + if should_modify: + self._set_req_to_reinstall(req) + else: + logger.info( + "Requirement already satisfied (use --upgrade to upgrade): %s", + req, + ) + return dist + + def _resolve_one( + self, + requirement_set: RequirementSet, + req_to_install: InstallRequirement, + ) -> List[InstallRequirement]: + """Prepare a single requirements file. + + :return: A list of additional InstallRequirements to also install. + """ + # Tell user what we are doing for this requirement: + # obtain (editable), skipping, processing (local url), collecting + # (remote url or package name) + if req_to_install.constraint or req_to_install.prepared: + return [] + + req_to_install.prepared = True + + # Parse and return dependencies + dist = self._get_dist_for(req_to_install) + # This will raise UnsupportedPythonVersion if the given Python + # version isn't compatible with the distribution's Requires-Python. + _check_dist_requires_python( + dist, + version_info=self._py_version_info, + ignore_requires_python=self.ignore_requires_python, + ) + + more_reqs: List[InstallRequirement] = [] + + def add_req(subreq: Requirement, extras_requested: Iterable[str]) -> None: + # This idiosyncratically converts the Requirement to str and let + # make_install_req then parse it again into Requirement. But this is + # the legacy resolver so I'm just not going to bother refactoring. + sub_install_req = self._make_install_req(str(subreq), req_to_install) + parent_req_name = req_to_install.name + to_scan_again, add_to_parent = requirement_set.add_requirement( + sub_install_req, + parent_req_name=parent_req_name, + extras_requested=extras_requested, + ) + if parent_req_name and add_to_parent: + self._discovered_dependencies[parent_req_name].append(add_to_parent) + more_reqs.extend(to_scan_again) + + with indent_log(): + # We add req_to_install before its dependencies, so that we + # can refer to it when adding dependencies. + if not requirement_set.has_requirement(req_to_install.name): + # 'unnamed' requirements will get added here + # 'unnamed' requirements can only come from being directly + # provided by the user. + assert req_to_install.user_supplied + requirement_set.add_requirement(req_to_install, parent_req_name=None) + + if not self.ignore_dependencies: + if req_to_install.extras: + logger.debug( + "Installing extra requirements: %r", + ",".join(req_to_install.extras), + ) + missing_requested = sorted( + set(req_to_install.extras) - set(dist.iter_provided_extras()) + ) + for missing in missing_requested: + logger.warning( + "%s %s does not provide the extra '%s'", + dist.raw_name, + dist.version, + missing, + ) + + available_requested = sorted( + set(dist.iter_provided_extras()) & set(req_to_install.extras) + ) + for subreq in dist.iter_dependencies(available_requested): + add_req(subreq, extras_requested=available_requested) + + return more_reqs + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + """Create the installation order. + + The installation order is topological - requirements are installed + before the requiring thing. We break cycles at an arbitrary point, + and make no other guarantees. + """ + # The current implementation, which we may change at any point + # installs the user specified things in the order given, except when + # dependencies must come earlier to achieve topological order. + order = [] + ordered_reqs: Set[InstallRequirement] = set() + + def schedule(req: InstallRequirement) -> None: + if req.satisfied_by or req in ordered_reqs: + return + if req.constraint: + return + ordered_reqs.add(req) + for dep in self._discovered_dependencies[req.name]: + schedule(dep) + order.append(req) + + for install_req in req_set.requirements.values(): + schedule(install_req) + return order diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py new file mode 100644 index 00000000..b206692a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py @@ -0,0 +1,141 @@ +from typing import FrozenSet, Iterable, Optional, Tuple, Union + +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import LegacyVersion, Version + +from pip._internal.models.link import Link, links_equivalent +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.hashes import Hashes + +CandidateLookup = Tuple[Optional["Candidate"], Optional[InstallRequirement]] +CandidateVersion = Union[LegacyVersion, Version] + + +def format_name(project: str, extras: FrozenSet[str]) -> str: + if not extras: + return project + canonical_extras = sorted(canonicalize_name(e) for e in extras) + return "{}[{}]".format(project, ",".join(canonical_extras)) + + +class Constraint: + def __init__( + self, specifier: SpecifierSet, hashes: Hashes, links: FrozenSet[Link] + ) -> None: + self.specifier = specifier + self.hashes = hashes + self.links = links + + @classmethod + def empty(cls) -> "Constraint": + return Constraint(SpecifierSet(), Hashes(), frozenset()) + + @classmethod + def from_ireq(cls, ireq: InstallRequirement) -> "Constraint": + links = frozenset([ireq.link]) if ireq.link else frozenset() + return Constraint(ireq.specifier, ireq.hashes(trust_internet=False), links) + + def __bool__(self) -> bool: + return bool(self.specifier) or bool(self.hashes) or bool(self.links) + + def __and__(self, other: InstallRequirement) -> "Constraint": + if not isinstance(other, InstallRequirement): + return NotImplemented + specifier = self.specifier & other.specifier + hashes = self.hashes & other.hashes(trust_internet=False) + links = self.links + if other.link: + links = links.union([other.link]) + return Constraint(specifier, hashes, links) + + def is_satisfied_by(self, candidate: "Candidate") -> bool: + # Reject if there are any mismatched URL constraints on this package. + if self.links and not all(_match_link(link, candidate) for link in self.links): + return False + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + return self.specifier.contains(candidate.version, prereleases=True) + + +class Requirement: + @property + def project_name(self) -> NormalizedName: + """The "project name" of a requirement. + + This is different from ``name`` if this requirement contains extras, + in which case ``name`` would contain the ``[...]`` part, while this + refers to the name of the project. + """ + raise NotImplementedError("Subclass should override") + + @property + def name(self) -> str: + """The name identifying this requirement in the resolver. + + This is different from ``project_name`` if this requirement contains + extras, where ``project_name`` would not contain the ``[...]`` part. + """ + raise NotImplementedError("Subclass should override") + + def is_satisfied_by(self, candidate: "Candidate") -> bool: + return False + + def get_candidate_lookup(self) -> CandidateLookup: + raise NotImplementedError("Subclass should override") + + def format_for_error(self) -> str: + raise NotImplementedError("Subclass should override") + + +def _match_link(link: Link, candidate: "Candidate") -> bool: + if candidate.source_link: + return links_equivalent(link, candidate.source_link) + return False + + +class Candidate: + @property + def project_name(self) -> NormalizedName: + """The "project name" of the candidate. + + This is different from ``name`` if this candidate contains extras, + in which case ``name`` would contain the ``[...]`` part, while this + refers to the name of the project. + """ + raise NotImplementedError("Override in subclass") + + @property + def name(self) -> str: + """The name identifying this candidate in the resolver. + + This is different from ``project_name`` if this candidate contains + extras, where ``project_name`` would not contain the ``[...]`` part. + """ + raise NotImplementedError("Override in subclass") + + @property + def version(self) -> CandidateVersion: + raise NotImplementedError("Override in subclass") + + @property + def is_installed(self) -> bool: + raise NotImplementedError("Override in subclass") + + @property + def is_editable(self) -> bool: + raise NotImplementedError("Override in subclass") + + @property + def source_link(self) -> Optional[Link]: + raise NotImplementedError("Override in subclass") + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + raise NotImplementedError("Override in subclass") + + def get_install_requirement(self) -> Optional[InstallRequirement]: + raise NotImplementedError("Override in subclass") + + def format_for_error(self) -> str: + raise NotImplementedError("Subclass should override") diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py new file mode 100644 index 00000000..60fad55d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py @@ -0,0 +1,540 @@ +import logging +import sys +from typing import TYPE_CHECKING, Any, FrozenSet, Iterable, Optional, Tuple, Union, cast + +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.exceptions import HashError, MetadataInconsistent +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link, links_equivalent +from pip._internal.models.wheel import Wheel +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.misc import normalize_version_info + +from .base import Candidate, CandidateVersion, Requirement, format_name + +if TYPE_CHECKING: + from .factory import Factory + +logger = logging.getLogger(__name__) + +BaseCandidate = Union[ + "AlreadyInstalledCandidate", + "EditableCandidate", + "LinkCandidate", +] + +# Avoid conflicting with the PyPI package "Python". +REQUIRES_PYTHON_IDENTIFIER = cast(NormalizedName, "") + + +def as_base_candidate(candidate: Candidate) -> Optional[BaseCandidate]: + """The runtime version of BaseCandidate.""" + base_candidate_classes = ( + AlreadyInstalledCandidate, + EditableCandidate, + LinkCandidate, + ) + if isinstance(candidate, base_candidate_classes): + return candidate + return None + + +def make_install_req_from_link( + link: Link, template: InstallRequirement +) -> InstallRequirement: + assert not template.editable, "template is editable" + if template.req: + line = str(template.req) + else: + line = link.url + ireq = install_req_from_line( + line, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + options=dict( + install_options=template.install_options, + global_options=template.global_options, + hashes=template.hash_options, + ), + ) + ireq.original_link = template.original_link + ireq.link = link + return ireq + + +def make_install_req_from_editable( + link: Link, template: InstallRequirement +) -> InstallRequirement: + assert template.editable, "template not editable" + return install_req_from_editable( + link.url, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + permit_editable_wheels=template.permit_editable_wheels, + options=dict( + install_options=template.install_options, + global_options=template.global_options, + hashes=template.hash_options, + ), + ) + + +def _make_install_req_from_dist( + dist: BaseDistribution, template: InstallRequirement +) -> InstallRequirement: + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + if template.req: + line = str(template.req) + elif template.link: + line = f"{dist.canonical_name} @ {template.link.url}" + else: + line = f"{dist.canonical_name}=={dist.version}" + ireq = install_req_from_line( + line, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + options=dict( + install_options=template.install_options, + global_options=template.global_options, + hashes=template.hash_options, + ), + ) + ireq.satisfied_by = cast(_Dist, dist)._dist + return ireq + + +class _InstallRequirementBackedCandidate(Candidate): + """A candidate backed by an ``InstallRequirement``. + + This represents a package request with the target not being already + in the environment, and needs to be fetched and installed. The backing + ``InstallRequirement`` is responsible for most of the leg work; this + class exposes appropriate information to the resolver. + + :param link: The link passed to the ``InstallRequirement``. The backing + ``InstallRequirement`` will use this link to fetch the distribution. + :param source_link: The link this candidate "originates" from. This is + different from ``link`` when the link is found in the wheel cache. + ``link`` would point to the wheel cache, while this points to the + found remote link (e.g. from pypi.org). + """ + + dist: BaseDistribution + is_installed = False + + def __init__( + self, + link: Link, + source_link: Link, + ireq: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[CandidateVersion] = None, + ) -> None: + self._link = link + self._source_link = source_link + self._factory = factory + self._ireq = ireq + self._name = name + self._version = version + self.dist = self._prepare() + + def __str__(self) -> str: + return f"{self.name} {self.version}" + + def __repr__(self) -> str: + return "{class_name}({link!r})".format( + class_name=self.__class__.__name__, + link=str(self._link), + ) + + def __hash__(self) -> int: + return hash((self.__class__, self._link)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return links_equivalent(self._link, other._link) + return False + + @property + def source_link(self) -> Optional[Link]: + return self._source_link + + @property + def project_name(self) -> NormalizedName: + """The normalised name of the project the candidate refers to""" + if self._name is None: + self._name = self.dist.canonical_name + return self._name + + @property + def name(self) -> str: + return self.project_name + + @property + def version(self) -> CandidateVersion: + if self._version is None: + self._version = self.dist.version + return self._version + + def format_for_error(self) -> str: + return "{} {} (from {})".format( + self.name, + self.version, + self._link.file_path if self._link.is_file else self._link, + ) + + def _prepare_distribution(self) -> BaseDistribution: + raise NotImplementedError("Override in subclass") + + def _check_metadata_consistency(self, dist: BaseDistribution) -> None: + """Check for consistency of project name and version of dist.""" + if self._name is not None and self._name != dist.canonical_name: + raise MetadataInconsistent( + self._ireq, + "name", + self._name, + dist.canonical_name, + ) + if self._version is not None and self._version != dist.version: + raise MetadataInconsistent( + self._ireq, + "version", + str(self._version), + str(dist.version), + ) + + def _prepare(self) -> BaseDistribution: + try: + dist = self._prepare_distribution() + except HashError as e: + # Provide HashError the underlying ireq that caused it. This + # provides context for the resulting error message to show the + # offending line to the user. + e.req = self._ireq + raise + self._check_metadata_consistency(dist) + return dist + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + requires = self.dist.iter_dependencies() if with_requires else () + for r in requires: + yield self._factory.make_requirement_from_spec(str(r), self._ireq) + yield self._factory.make_requires_python_requirement(self.dist.requires_python) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return self._ireq + + +class LinkCandidate(_InstallRequirementBackedCandidate): + is_editable = False + + def __init__( + self, + link: Link, + template: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[CandidateVersion] = None, + ) -> None: + source_link = link + cache_entry = factory.get_wheel_cache_entry(link, name) + if cache_entry is not None: + logger.debug("Using cached wheel link: %s", cache_entry.link) + link = cache_entry.link + ireq = make_install_req_from_link(link, template) + assert ireq.link == link + if ireq.link.is_wheel and not ireq.link.is_file: + wheel = Wheel(ireq.link.filename) + wheel_name = canonicalize_name(wheel.name) + assert name == wheel_name, f"{name!r} != {wheel_name!r} for wheel" + # Version may not be present for PEP 508 direct URLs + if version is not None: + wheel_version = Version(wheel.version) + assert version == wheel_version, "{!r} != {!r} for wheel {}".format( + version, wheel_version, name + ) + + if ( + cache_entry is not None + and cache_entry.persistent + and template.link is template.original_link + ): + ireq.original_link_is_in_wheel_cache = True + + super().__init__( + link=link, + source_link=source_link, + ireq=ireq, + factory=factory, + name=name, + version=version, + ) + + def _prepare_distribution(self) -> BaseDistribution: + preparer = self._factory.preparer + return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) + + +class EditableCandidate(_InstallRequirementBackedCandidate): + is_editable = True + + def __init__( + self, + link: Link, + template: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[CandidateVersion] = None, + ) -> None: + super().__init__( + link=link, + source_link=link, + ireq=make_install_req_from_editable(link, template), + factory=factory, + name=name, + version=version, + ) + + def _prepare_distribution(self) -> BaseDistribution: + return self._factory.preparer.prepare_editable_requirement(self._ireq) + + +class AlreadyInstalledCandidate(Candidate): + is_installed = True + source_link = None + + def __init__( + self, + dist: BaseDistribution, + template: InstallRequirement, + factory: "Factory", + ) -> None: + self.dist = dist + self._ireq = _make_install_req_from_dist(dist, template) + self._factory = factory + + # This is just logging some messages, so we can do it eagerly. + # The returned dist would be exactly the same as self.dist because we + # set satisfied_by in _make_install_req_from_dist. + # TODO: Supply reason based on force_reinstall and upgrade_strategy. + skip_reason = "already satisfied" + factory.preparer.prepare_installed_requirement(self._ireq, skip_reason) + + def __str__(self) -> str: + return str(self.dist) + + def __repr__(self) -> str: + return "{class_name}({distribution!r})".format( + class_name=self.__class__.__name__, + distribution=self.dist, + ) + + def __hash__(self) -> int: + return hash((self.__class__, self.name, self.version)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return self.name == other.name and self.version == other.version + return False + + @property + def project_name(self) -> NormalizedName: + return self.dist.canonical_name + + @property + def name(self) -> str: + return self.project_name + + @property + def version(self) -> CandidateVersion: + return self.dist.version + + @property + def is_editable(self) -> bool: + return self.dist.editable + + def format_for_error(self) -> str: + return f"{self.name} {self.version} (Installed)" + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + if not with_requires: + return + for r in self.dist.iter_dependencies(): + yield self._factory.make_requirement_from_spec(str(r), self._ireq) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return None + + +class ExtrasCandidate(Candidate): + """A candidate that has 'extras', indicating additional dependencies. + + Requirements can be for a project with dependencies, something like + foo[extra]. The extras don't affect the project/version being installed + directly, but indicate that we need additional dependencies. We model that + by having an artificial ExtrasCandidate that wraps the "base" candidate. + + The ExtrasCandidate differs from the base in the following ways: + + 1. It has a unique name, of the form foo[extra]. This causes the resolver + to treat it as a separate node in the dependency graph. + 2. When we're getting the candidate's dependencies, + a) We specify that we want the extra dependencies as well. + b) We add a dependency on the base candidate. + See below for why this is needed. + 3. We return None for the underlying InstallRequirement, as the base + candidate will provide it, and we don't want to end up with duplicates. + + The dependency on the base candidate is needed so that the resolver can't + decide that it should recommend foo[extra1] version 1.0 and foo[extra2] + version 2.0. Having those candidates depend on foo=1.0 and foo=2.0 + respectively forces the resolver to recognise that this is a conflict. + """ + + def __init__( + self, + base: BaseCandidate, + extras: FrozenSet[str], + ) -> None: + self.base = base + self.extras = extras + + def __str__(self) -> str: + name, rest = str(self.base).split(" ", 1) + return "{}[{}] {}".format(name, ",".join(self.extras), rest) + + def __repr__(self) -> str: + return "{class_name}(base={base!r}, extras={extras!r})".format( + class_name=self.__class__.__name__, + base=self.base, + extras=self.extras, + ) + + def __hash__(self) -> int: + return hash((self.base, self.extras)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return self.base == other.base and self.extras == other.extras + return False + + @property + def project_name(self) -> NormalizedName: + return self.base.project_name + + @property + def name(self) -> str: + """The normalised name of the project the candidate refers to""" + return format_name(self.base.project_name, self.extras) + + @property + def version(self) -> CandidateVersion: + return self.base.version + + def format_for_error(self) -> str: + return "{} [{}]".format( + self.base.format_for_error(), ", ".join(sorted(self.extras)) + ) + + @property + def is_installed(self) -> bool: + return self.base.is_installed + + @property + def is_editable(self) -> bool: + return self.base.is_editable + + @property + def source_link(self) -> Optional[Link]: + return self.base.source_link + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + factory = self.base._factory + + # Add a dependency on the exact base + # (See note 2b in the class docstring) + yield factory.make_requirement_from_candidate(self.base) + if not with_requires: + return + + # The user may have specified extras that the candidate doesn't + # support. We ignore any unsupported extras here. + valid_extras = self.extras.intersection(self.base.dist.iter_provided_extras()) + invalid_extras = self.extras.difference(self.base.dist.iter_provided_extras()) + for extra in sorted(invalid_extras): + logger.warning( + "%s %s does not provide the extra '%s'", + self.base.name, + self.version, + extra, + ) + + for r in self.base.dist.iter_dependencies(valid_extras): + requirement = factory.make_requirement_from_spec( + str(r), self.base._ireq, valid_extras + ) + if requirement: + yield requirement + + def get_install_requirement(self) -> Optional[InstallRequirement]: + # We don't return anything here, because we always + # depend on the base candidate, and we'll get the + # install requirement from that. + return None + + +class RequiresPythonCandidate(Candidate): + is_installed = False + source_link = None + + def __init__(self, py_version_info: Optional[Tuple[int, ...]]) -> None: + if py_version_info is not None: + version_info = normalize_version_info(py_version_info) + else: + version_info = sys.version_info[:3] + self._version = Version(".".join(str(c) for c in version_info)) + + # We don't need to implement __eq__() and __ne__() since there is always + # only one RequiresPythonCandidate in a resolution, i.e. the host Python. + # The built-in object.__eq__() and object.__ne__() do exactly what we want. + + def __str__(self) -> str: + return f"Python {self._version}" + + @property + def project_name(self) -> NormalizedName: + return REQUIRES_PYTHON_IDENTIFIER + + @property + def name(self) -> str: + return REQUIRES_PYTHON_IDENTIFIER + + @property + def version(self) -> CandidateVersion: + return self._version + + def format_for_error(self) -> str: + return f"Python {self.version}" + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + return () + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return None diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py new file mode 100644 index 00000000..766dc26c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py @@ -0,0 +1,701 @@ +import contextlib +import functools +import logging +from typing import ( + TYPE_CHECKING, + Dict, + FrozenSet, + Iterable, + Iterator, + List, + Mapping, + NamedTuple, + Optional, + Sequence, + Set, + Tuple, + TypeVar, + cast, +) + +from pip._vendor.packaging.requirements import InvalidRequirement +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.resolvelib import ResolutionImpossible + +from pip._internal.cache import CacheEntry, WheelCache +from pip._internal.exceptions import ( + DistributionNotFound, + InstallationError, + InstallationSubprocessError, + MetadataInconsistent, + UnsupportedPythonVersion, + UnsupportedWheel, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution, get_default_environment +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import install_req_from_link_and_ireq +from pip._internal.req.req_install import ( + InstallRequirement, + check_invalid_constraint_type, +) +from pip._internal.resolution.base import InstallRequirementProvider +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import Candidate, CandidateVersion, Constraint, Requirement +from .candidates import ( + AlreadyInstalledCandidate, + BaseCandidate, + EditableCandidate, + ExtrasCandidate, + LinkCandidate, + RequiresPythonCandidate, + as_base_candidate, +) +from .found_candidates import FoundCandidates, IndexCandidateInfo +from .requirements import ( + ExplicitRequirement, + RequiresPythonRequirement, + SpecifierRequirement, + UnsatisfiableRequirement, +) + +if TYPE_CHECKING: + from typing import Protocol + + class ConflictCause(Protocol): + requirement: RequiresPythonRequirement + parent: Candidate + + +logger = logging.getLogger(__name__) + +C = TypeVar("C") +Cache = Dict[Link, C] + + +class CollectedRootRequirements(NamedTuple): + requirements: List[Requirement] + constraints: Dict[str, Constraint] + user_requested: Dict[str, int] + + +class Factory: + def __init__( + self, + finder: PackageFinder, + preparer: RequirementPreparer, + make_install_req: InstallRequirementProvider, + wheel_cache: Optional[WheelCache], + use_user_site: bool, + force_reinstall: bool, + ignore_installed: bool, + ignore_requires_python: bool, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> None: + self._finder = finder + self.preparer = preparer + self._wheel_cache = wheel_cache + self._python_candidate = RequiresPythonCandidate(py_version_info) + self._make_install_req_from_spec = make_install_req + self._use_user_site = use_user_site + self._force_reinstall = force_reinstall + self._ignore_requires_python = ignore_requires_python + + self._build_failures: Cache[InstallationError] = {} + self._link_candidate_cache: Cache[LinkCandidate] = {} + self._editable_candidate_cache: Cache[EditableCandidate] = {} + self._installed_candidate_cache: Dict[str, AlreadyInstalledCandidate] = {} + self._extras_candidate_cache: Dict[ + Tuple[int, FrozenSet[str]], ExtrasCandidate + ] = {} + + if not ignore_installed: + env = get_default_environment() + self._installed_dists = { + dist.canonical_name: dist + for dist in env.iter_installed_distributions(local_only=False) + } + else: + self._installed_dists = {} + + @property + def force_reinstall(self) -> bool: + return self._force_reinstall + + def _fail_if_link_is_unsupported_wheel(self, link: Link) -> None: + if not link.is_wheel: + return + wheel = Wheel(link.filename) + if wheel.supported(self._finder.target_python.get_tags()): + return + msg = f"{link.filename} is not a supported wheel on this platform." + raise UnsupportedWheel(msg) + + def _make_extras_candidate( + self, base: BaseCandidate, extras: FrozenSet[str] + ) -> ExtrasCandidate: + cache_key = (id(base), extras) + try: + candidate = self._extras_candidate_cache[cache_key] + except KeyError: + candidate = ExtrasCandidate(base, extras) + self._extras_candidate_cache[cache_key] = candidate + return candidate + + def _make_candidate_from_dist( + self, + dist: BaseDistribution, + extras: FrozenSet[str], + template: InstallRequirement, + ) -> Candidate: + try: + base = self._installed_candidate_cache[dist.canonical_name] + except KeyError: + base = AlreadyInstalledCandidate(dist, template, factory=self) + self._installed_candidate_cache[dist.canonical_name] = base + if not extras: + return base + return self._make_extras_candidate(base, extras) + + def _make_candidate_from_link( + self, + link: Link, + extras: FrozenSet[str], + template: InstallRequirement, + name: Optional[NormalizedName], + version: Optional[CandidateVersion], + ) -> Optional[Candidate]: + # TODO: Check already installed candidate, and use it if the link and + # editable flag match. + + if link in self._build_failures: + # We already tried this candidate before, and it does not build. + # Don't bother trying again. + return None + + if template.editable: + if link not in self._editable_candidate_cache: + try: + self._editable_candidate_cache[link] = EditableCandidate( + link, + template, + factory=self, + name=name, + version=version, + ) + except (InstallationSubprocessError, MetadataInconsistent) as e: + logger.warning("Discarding %s. %s", link, e) + self._build_failures[link] = e + return None + base: BaseCandidate = self._editable_candidate_cache[link] + else: + if link not in self._link_candidate_cache: + try: + self._link_candidate_cache[link] = LinkCandidate( + link, + template, + factory=self, + name=name, + version=version, + ) + except (InstallationSubprocessError, MetadataInconsistent) as e: + logger.warning("Discarding %s. %s", link, e) + self._build_failures[link] = e + return None + base = self._link_candidate_cache[link] + + if not extras: + return base + return self._make_extras_candidate(base, extras) + + def _iter_found_candidates( + self, + ireqs: Sequence[InstallRequirement], + specifier: SpecifierSet, + hashes: Hashes, + prefers_installed: bool, + incompatible_ids: Set[int], + ) -> Iterable[Candidate]: + if not ireqs: + return () + + # The InstallRequirement implementation requires us to give it a + # "template". Here we just choose the first requirement to represent + # all of them. + # Hopefully the Project model can correct this mismatch in the future. + template = ireqs[0] + assert template.req, "Candidates found on index must be PEP 508" + name = canonicalize_name(template.req.name) + + extras: FrozenSet[str] = frozenset() + for ireq in ireqs: + assert ireq.req, "Candidates found on index must be PEP 508" + specifier &= ireq.req.specifier + hashes &= ireq.hashes(trust_internet=False) + extras |= frozenset(ireq.extras) + + def _get_installed_candidate() -> Optional[Candidate]: + """Get the candidate for the currently-installed version.""" + # If --force-reinstall is set, we want the version from the index + # instead, so we "pretend" there is nothing installed. + if self._force_reinstall: + return None + try: + installed_dist = self._installed_dists[name] + except KeyError: + return None + # Don't use the installed distribution if its version does not fit + # the current dependency graph. + if not specifier.contains(installed_dist.version, prereleases=True): + return None + candidate = self._make_candidate_from_dist( + dist=installed_dist, + extras=extras, + template=template, + ) + # The candidate is a known incompatiblity. Don't use it. + if id(candidate) in incompatible_ids: + return None + return candidate + + def iter_index_candidate_infos() -> Iterator[IndexCandidateInfo]: + result = self._finder.find_best_candidate( + project_name=name, + specifier=specifier, + hashes=hashes, + ) + icans = list(result.iter_applicable()) + + # PEP 592: Yanked releases must be ignored unless only yanked + # releases can satisfy the version range. So if this is false, + # all yanked icans need to be skipped. + all_yanked = all(ican.link.is_yanked for ican in icans) + + # PackageFinder returns earlier versions first, so we reverse. + for ican in reversed(icans): + if not all_yanked and ican.link.is_yanked: + continue + func = functools.partial( + self._make_candidate_from_link, + link=ican.link, + extras=extras, + template=template, + name=name, + version=ican.version, + ) + yield ican.version, func + + return FoundCandidates( + iter_index_candidate_infos, + _get_installed_candidate(), + prefers_installed, + incompatible_ids, + ) + + def _iter_explicit_candidates_from_base( + self, + base_requirements: Iterable[Requirement], + extras: FrozenSet[str], + ) -> Iterator[Candidate]: + """Produce explicit candidates from the base given an extra-ed package. + + :param base_requirements: Requirements known to the resolver. The + requirements are guaranteed to not have extras. + :param extras: The extras to inject into the explicit requirements' + candidates. + """ + for req in base_requirements: + lookup_cand, _ = req.get_candidate_lookup() + if lookup_cand is None: # Not explicit. + continue + # We've stripped extras from the identifier, and should always + # get a BaseCandidate here, unless there's a bug elsewhere. + base_cand = as_base_candidate(lookup_cand) + assert base_cand is not None, "no extras here" + yield self._make_extras_candidate(base_cand, extras) + + def _iter_candidates_from_constraints( + self, + identifier: str, + constraint: Constraint, + template: InstallRequirement, + ) -> Iterator[Candidate]: + """Produce explicit candidates from constraints. + + This creates "fake" InstallRequirement objects that are basically clones + of what "should" be the template, but with original_link set to link. + """ + for link in constraint.links: + self._fail_if_link_is_unsupported_wheel(link) + candidate = self._make_candidate_from_link( + link, + extras=frozenset(), + template=install_req_from_link_and_ireq(link, template), + name=canonicalize_name(identifier), + version=None, + ) + if candidate: + yield candidate + + def find_candidates( + self, + identifier: str, + requirements: Mapping[str, Iterable[Requirement]], + incompatibilities: Mapping[str, Iterator[Candidate]], + constraint: Constraint, + prefers_installed: bool, + ) -> Iterable[Candidate]: + # Collect basic lookup information from the requirements. + explicit_candidates: Set[Candidate] = set() + ireqs: List[InstallRequirement] = [] + for req in requirements[identifier]: + cand, ireq = req.get_candidate_lookup() + if cand is not None: + explicit_candidates.add(cand) + if ireq is not None: + ireqs.append(ireq) + + # If the current identifier contains extras, add explicit candidates + # from entries from extra-less identifier. + with contextlib.suppress(InvalidRequirement): + parsed_requirement = get_requirement(identifier) + explicit_candidates.update( + self._iter_explicit_candidates_from_base( + requirements.get(parsed_requirement.name, ()), + frozenset(parsed_requirement.extras), + ), + ) + + # Add explicit candidates from constraints. We only do this if there are + # kown ireqs, which represent requirements not already explicit. If + # there are no ireqs, we're constraining already-explicit requirements, + # which is handled later when we return the explicit candidates. + if ireqs: + try: + explicit_candidates.update( + self._iter_candidates_from_constraints( + identifier, + constraint, + template=ireqs[0], + ), + ) + except UnsupportedWheel: + # If we're constrained to install a wheel incompatible with the + # target architecture, no candidates will ever be valid. + return () + + # Since we cache all the candidates, incompatibility identification + # can be made quicker by comparing only the id() values. + incompat_ids = {id(c) for c in incompatibilities.get(identifier, ())} + + # If none of the requirements want an explicit candidate, we can ask + # the finder for candidates. + if not explicit_candidates: + return self._iter_found_candidates( + ireqs, + constraint.specifier, + constraint.hashes, + prefers_installed, + incompat_ids, + ) + + return ( + c + for c in explicit_candidates + if id(c) not in incompat_ids + and constraint.is_satisfied_by(c) + and all(req.is_satisfied_by(c) for req in requirements[identifier]) + ) + + def _make_requirement_from_install_req( + self, ireq: InstallRequirement, requested_extras: Iterable[str] + ) -> Optional[Requirement]: + if not ireq.match_markers(requested_extras): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + ireq.name, + ireq.markers, + ) + return None + if not ireq.link: + return SpecifierRequirement(ireq) + self._fail_if_link_is_unsupported_wheel(ireq.link) + cand = self._make_candidate_from_link( + ireq.link, + extras=frozenset(ireq.extras), + template=ireq, + name=canonicalize_name(ireq.name) if ireq.name else None, + version=None, + ) + if cand is None: + # There's no way we can satisfy a URL requirement if the underlying + # candidate fails to build. An unnamed URL must be user-supplied, so + # we fail eagerly. If the URL is named, an unsatisfiable requirement + # can make the resolver do the right thing, either backtrack (and + # maybe find some other requirement that's buildable) or raise a + # ResolutionImpossible eventually. + if not ireq.name: + raise self._build_failures[ireq.link] + return UnsatisfiableRequirement(canonicalize_name(ireq.name)) + return self.make_requirement_from_candidate(cand) + + def collect_root_requirements( + self, root_ireqs: List[InstallRequirement] + ) -> CollectedRootRequirements: + collected = CollectedRootRequirements([], {}, {}) + for i, ireq in enumerate(root_ireqs): + if ireq.constraint: + # Ensure we only accept valid constraints + problem = check_invalid_constraint_type(ireq) + if problem: + raise InstallationError(problem) + if not ireq.match_markers(): + continue + assert ireq.name, "Constraint must be named" + name = canonicalize_name(ireq.name) + if name in collected.constraints: + collected.constraints[name] &= ireq + else: + collected.constraints[name] = Constraint.from_ireq(ireq) + else: + req = self._make_requirement_from_install_req( + ireq, + requested_extras=(), + ) + if req is None: + continue + if ireq.user_supplied and req.name not in collected.user_requested: + collected.user_requested[req.name] = i + collected.requirements.append(req) + return collected + + def make_requirement_from_candidate( + self, candidate: Candidate + ) -> ExplicitRequirement: + return ExplicitRequirement(candidate) + + def make_requirement_from_spec( + self, + specifier: str, + comes_from: Optional[InstallRequirement], + requested_extras: Iterable[str] = (), + ) -> Optional[Requirement]: + ireq = self._make_install_req_from_spec(specifier, comes_from) + return self._make_requirement_from_install_req(ireq, requested_extras) + + def make_requires_python_requirement( + self, + specifier: SpecifierSet, + ) -> Optional[Requirement]: + if self._ignore_requires_python: + return None + # Don't bother creating a dependency for an empty Requires-Python. + if not str(specifier): + return None + return RequiresPythonRequirement(specifier, self._python_candidate) + + def get_wheel_cache_entry( + self, link: Link, name: Optional[str] + ) -> Optional[CacheEntry]: + """Look up the link in the wheel cache. + + If ``preparer.require_hashes`` is True, don't use the wheel cache, + because cached wheels, always built locally, have different hashes + than the files downloaded from the index server and thus throw false + hash mismatches. Furthermore, cached wheels at present have + nondeterministic contents due to file modification times. + """ + if self._wheel_cache is None or self.preparer.require_hashes: + return None + return self._wheel_cache.get_cache_entry( + link=link, + package_name=name, + supported_tags=get_supported(), + ) + + def get_dist_to_uninstall(self, candidate: Candidate) -> Optional[BaseDistribution]: + # TODO: Are there more cases this needs to return True? Editable? + dist = self._installed_dists.get(candidate.project_name) + if dist is None: # Not installed, no uninstallation required. + return None + + # We're installing into global site. The current installation must + # be uninstalled, no matter it's in global or user site, because the + # user site installation has precedence over global. + if not self._use_user_site: + return dist + + # We're installing into user site. Remove the user site installation. + if dist.in_usersite: + return dist + + # We're installing into user site, but the installed incompatible + # package is in global site. We can't uninstall that, and would let + # the new user installation to "shadow" it. But shadowing won't work + # in virtual environments, so we error out. + if running_under_virtualenv() and dist.in_site_packages: + message = ( + f"Will not install to the user site because it will lack " + f"sys.path precedence to {dist.raw_name} in {dist.location}" + ) + raise InstallationError(message) + return None + + def _report_requires_python_error( + self, causes: Sequence["ConflictCause"] + ) -> UnsupportedPythonVersion: + assert causes, "Requires-Python error reported with no cause" + + version = self._python_candidate.version + + if len(causes) == 1: + specifier = str(causes[0].requirement.specifier) + message = ( + f"Package {causes[0].parent.name!r} requires a different " + f"Python: {version} not in {specifier!r}" + ) + return UnsupportedPythonVersion(message) + + message = f"Packages require a different Python. {version} not in:" + for cause in causes: + package = cause.parent.format_for_error() + specifier = str(cause.requirement.specifier) + message += f"\n{specifier!r} (required by {package})" + return UnsupportedPythonVersion(message) + + def _report_single_requirement_conflict( + self, req: Requirement, parent: Optional[Candidate] + ) -> DistributionNotFound: + if parent is None: + req_disp = str(req) + else: + req_disp = f"{req} (from {parent.name})" + + cands = self._finder.find_all_candidates(req.project_name) + versions = [str(v) for v in sorted({c.version for c in cands})] + + logger.critical( + "Could not find a version that satisfies the requirement %s " + "(from versions: %s)", + req_disp, + ", ".join(versions) or "none", + ) + if str(req) == "requirements.txt": + logger.info( + "HINT: You are attempting to install a package literally " + 'named "requirements.txt" (which cannot exist). Consider ' + "using the '-r' flag to install the packages listed in " + "requirements.txt" + ) + + return DistributionNotFound(f"No matching distribution found for {req}") + + def get_installation_error( + self, + e: "ResolutionImpossible[Requirement, Candidate]", + constraints: Dict[str, Constraint], + ) -> InstallationError: + + assert e.causes, "Installation error reported with no cause" + + # If one of the things we can't solve is "we need Python X.Y", + # that is what we report. + requires_python_causes = [ + cause + for cause in e.causes + if isinstance(cause.requirement, RequiresPythonRequirement) + and not cause.requirement.is_satisfied_by(self._python_candidate) + ] + if requires_python_causes: + # The comprehension above makes sure all Requirement instances are + # RequiresPythonRequirement, so let's cast for convinience. + return self._report_requires_python_error( + cast("Sequence[ConflictCause]", requires_python_causes), + ) + + # Otherwise, we have a set of causes which can't all be satisfied + # at once. + + # The simplest case is when we have *one* cause that can't be + # satisfied. We just report that case. + if len(e.causes) == 1: + req, parent = e.causes[0] + if req.name not in constraints: + return self._report_single_requirement_conflict(req, parent) + + # OK, we now have a list of requirements that can't all be + # satisfied at once. + + # A couple of formatting helpers + def text_join(parts: List[str]) -> str: + if len(parts) == 1: + return parts[0] + + return ", ".join(parts[:-1]) + " and " + parts[-1] + + def describe_trigger(parent: Candidate) -> str: + ireq = parent.get_install_requirement() + if not ireq or not ireq.comes_from: + return f"{parent.name}=={parent.version}" + if isinstance(ireq.comes_from, InstallRequirement): + return str(ireq.comes_from.name) + return str(ireq.comes_from) + + triggers = set() + for req, parent in e.causes: + if parent is None: + # This is a root requirement, so we can report it directly + trigger = req.format_for_error() + else: + trigger = describe_trigger(parent) + triggers.add(trigger) + + if triggers: + info = text_join(sorted(triggers)) + else: + info = "the requested packages" + + msg = ( + "Cannot install {} because these package versions " + "have conflicting dependencies.".format(info) + ) + logger.critical(msg) + msg = "\nThe conflict is caused by:" + + relevant_constraints = set() + for req, parent in e.causes: + if req.name in constraints: + relevant_constraints.add(req.name) + msg = msg + "\n " + if parent: + msg = msg + f"{parent.name} {parent.version} depends on " + else: + msg = msg + "The user requested " + msg = msg + req.format_for_error() + for key in relevant_constraints: + spec = constraints[key].specifier + msg += f"\n The user requested (constraint) {key}{spec}" + + msg = ( + msg + + "\n\n" + + "To fix this you could try to:\n" + + "1. loosen the range of package versions you've specified\n" + + "2. remove package versions to allow pip attempt to solve " + + "the dependency conflict\n" + ) + + logger.info(msg) + + return DistributionNotFound( + "ResolutionImpossible: for help visit " + "https://pip.pypa.io/en/latest/user_guide/" + "#fixing-conflicting-dependencies" + ) diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py new file mode 100644 index 00000000..8663097b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py @@ -0,0 +1,155 @@ +"""Utilities to lazily create and visit candidates found. + +Creating and visiting a candidate is a *very* costly operation. It involves +fetching, extracting, potentially building modules from source, and verifying +distribution metadata. It is therefore crucial for performance to keep +everything here lazy all the way down, so we only touch candidates that we +absolutely need, and not "download the world" when we only need one version of +something. +""" + +import functools +from collections.abc import Sequence +from typing import TYPE_CHECKING, Any, Callable, Iterator, Optional, Set, Tuple + +from pip._vendor.packaging.version import _BaseVersion + +from .base import Candidate + +IndexCandidateInfo = Tuple[_BaseVersion, Callable[[], Optional[Candidate]]] + +if TYPE_CHECKING: + SequenceCandidate = Sequence[Candidate] +else: + # For compatibility: Python before 3.9 does not support using [] on the + # Sequence class. + # + # >>> from collections.abc import Sequence + # >>> Sequence[str] + # Traceback (most recent call last): + # File "", line 1, in + # TypeError: 'ABCMeta' object is not subscriptable + # + # TODO: Remove this block after dropping Python 3.8 support. + SequenceCandidate = Sequence + + +def _iter_built(infos: Iterator[IndexCandidateInfo]) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the package is not already installed. Candidates + from index come later in their normal ordering. + """ + versions_found: Set[_BaseVersion] = set() + for version, func in infos: + if version in versions_found: + continue + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + +def _iter_built_with_prepended( + installed: Candidate, infos: Iterator[IndexCandidateInfo] +) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the resolver prefers the already-installed + candidate and NOT to upgrade. The installed candidate is therefore + always yielded first, and candidates from index come later in their + normal ordering, except skipped when the version is already installed. + """ + yield installed + versions_found: Set[_BaseVersion] = {installed.version} + for version, func in infos: + if version in versions_found: + continue + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + +def _iter_built_with_inserted( + installed: Candidate, infos: Iterator[IndexCandidateInfo] +) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the resolver prefers to upgrade an + already-installed package. Candidates from index are returned in their + normal ordering, except replaced when the version is already installed. + + The implementation iterates through and yields other candidates, inserting + the installed candidate exactly once before we start yielding older or + equivalent candidates, or after all other candidates if they are all newer. + """ + versions_found: Set[_BaseVersion] = set() + for version, func in infos: + if version in versions_found: + continue + # If the installed candidate is better, yield it first. + if installed.version >= version: + yield installed + versions_found.add(installed.version) + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + # If the installed candidate is older than all other candidates. + if installed.version not in versions_found: + yield installed + + +class FoundCandidates(SequenceCandidate): + """A lazy sequence to provide candidates to the resolver. + + The intended usage is to return this from `find_matches()` so the resolver + can iterate through the sequence multiple times, but only access the index + page when remote packages are actually needed. This improve performances + when suitable candidates are already installed on disk. + """ + + def __init__( + self, + get_infos: Callable[[], Iterator[IndexCandidateInfo]], + installed: Optional[Candidate], + prefers_installed: bool, + incompatible_ids: Set[int], + ): + self._get_infos = get_infos + self._installed = installed + self._prefers_installed = prefers_installed + self._incompatible_ids = incompatible_ids + + def __getitem__(self, index: Any) -> Any: + # Implemented to satisfy the ABC check. This is not needed by the + # resolver, and should not be used by the provider either (for + # performance reasons). + raise NotImplementedError("don't do this") + + def __iter__(self) -> Iterator[Candidate]: + infos = self._get_infos() + if not self._installed: + iterator = _iter_built(infos) + elif self._prefers_installed: + iterator = _iter_built_with_prepended(self._installed, infos) + else: + iterator = _iter_built_with_inserted(self._installed, infos) + return (c for c in iterator if id(c) not in self._incompatible_ids) + + def __len__(self) -> int: + # Implemented to satisfy the ABC check. This is not needed by the + # resolver, and should not be used by the provider either (for + # performance reasons). + raise NotImplementedError("don't do this") + + @functools.lru_cache(maxsize=1) + def __bool__(self) -> bool: + if self._prefers_installed and self._installed: + return True + return any(self) diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py new file mode 100644 index 00000000..85d3b315 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py @@ -0,0 +1,215 @@ +import collections +import math +from typing import TYPE_CHECKING, Dict, Iterable, Iterator, Mapping, Sequence, Union + +from pip._vendor.resolvelib.providers import AbstractProvider + +from .base import Candidate, Constraint, Requirement +from .candidates import REQUIRES_PYTHON_IDENTIFIER +from .factory import Factory + +if TYPE_CHECKING: + from pip._vendor.resolvelib.providers import Preference + from pip._vendor.resolvelib.resolvers import RequirementInformation + + PreferenceInformation = RequirementInformation[Requirement, Candidate] + + _ProviderBase = AbstractProvider[Requirement, Candidate, str] +else: + _ProviderBase = AbstractProvider + +# Notes on the relationship between the provider, the factory, and the +# candidate and requirement classes. +# +# The provider is a direct implementation of the resolvelib class. Its role +# is to deliver the API that resolvelib expects. +# +# Rather than work with completely abstract "requirement" and "candidate" +# concepts as resolvelib does, pip has concrete classes implementing these two +# ideas. The API of Requirement and Candidate objects are defined in the base +# classes, but essentially map fairly directly to the equivalent provider +# methods. In particular, `find_matches` and `is_satisfied_by` are +# requirement methods, and `get_dependencies` is a candidate method. +# +# The factory is the interface to pip's internal mechanisms. It is stateless, +# and is created by the resolver and held as a property of the provider. It is +# responsible for creating Requirement and Candidate objects, and provides +# services to those objects (access to pip's finder and preparer). + + +class PipProvider(_ProviderBase): + """Pip's provider implementation for resolvelib. + + :params constraints: A mapping of constraints specified by the user. Keys + are canonicalized project names. + :params ignore_dependencies: Whether the user specified ``--no-deps``. + :params upgrade_strategy: The user-specified upgrade strategy. + :params user_requested: A set of canonicalized package names that the user + supplied for pip to install/upgrade. + """ + + def __init__( + self, + factory: Factory, + constraints: Dict[str, Constraint], + ignore_dependencies: bool, + upgrade_strategy: str, + user_requested: Dict[str, int], + ) -> None: + self._factory = factory + self._constraints = constraints + self._ignore_dependencies = ignore_dependencies + self._upgrade_strategy = upgrade_strategy + self._user_requested = user_requested + self._known_depths: Dict[str, float] = collections.defaultdict(lambda: math.inf) + + def identify(self, requirement_or_candidate: Union[Requirement, Candidate]) -> str: + return requirement_or_candidate.name + + def get_preference( # type: ignore + self, + identifier: str, + resolutions: Mapping[str, Candidate], + candidates: Mapping[str, Iterator[Candidate]], + information: Mapping[str, Iterable["PreferenceInformation"]], + backtrack_causes: Sequence["PreferenceInformation"], + ) -> "Preference": + """Produce a sort key for given requirement based on preference. + + The lower the return value is, the more preferred this group of + arguments is. + + Currently pip considers the followings in order: + + * Prefer if any of the known requirements is "direct", e.g. points to an + explicit URL. + * If equal, prefer if any requirement is "pinned", i.e. contains + operator ``===`` or ``==``. + * If equal, calculate an approximate "depth" and resolve requirements + closer to the user-specified requirements first. + * Order user-specified requirements by the order they are specified. + * If equal, prefers "non-free" requirements, i.e. contains at least one + operator, such as ``>=`` or ``<``. + * If equal, order alphabetically for consistency (helps debuggability). + """ + lookups = (r.get_candidate_lookup() for r, _ in information[identifier]) + candidate, ireqs = zip(*lookups) + operators = [ + specifier.operator + for specifier_set in (ireq.specifier for ireq in ireqs if ireq) + for specifier in specifier_set + ] + + direct = candidate is not None + pinned = any(op[:2] == "==" for op in operators) + unfree = bool(operators) + + try: + requested_order: Union[int, float] = self._user_requested[identifier] + except KeyError: + requested_order = math.inf + parent_depths = ( + self._known_depths[parent.name] if parent is not None else 0.0 + for _, parent in information[identifier] + ) + inferred_depth = min(d for d in parent_depths) + 1.0 + else: + inferred_depth = 1.0 + self._known_depths[identifier] = inferred_depth + + requested_order = self._user_requested.get(identifier, math.inf) + + # Requires-Python has only one candidate and the check is basically + # free, so we always do it first to avoid needless work if it fails. + requires_python = identifier == REQUIRES_PYTHON_IDENTIFIER + + # HACK: Setuptools have a very long and solid backward compatibility + # track record, and extremely few projects would request a narrow, + # non-recent version range of it since that would break a lot things. + # (Most projects specify it only to request for an installer feature, + # which does not work, but that's another topic.) Intentionally + # delaying Setuptools helps reduce branches the resolver has to check. + # This serves as a temporary fix for issues like "apache-airlfow[all]" + # while we work on "proper" branch pruning techniques. + delay_this = identifier == "setuptools" + + # Prefer the causes of backtracking on the assumption that the problem + # resolving the dependency tree is related to the failures that caused + # the backtracking + backtrack_cause = self.is_backtrack_cause(identifier, backtrack_causes) + + return ( + not requires_python, + delay_this, + not direct, + not pinned, + not backtrack_cause, + inferred_depth, + requested_order, + not unfree, + identifier, + ) + + def _get_constraint(self, identifier: str) -> Constraint: + if identifier in self._constraints: + return self._constraints[identifier] + + # HACK: Theoratically we should check whether this identifier is a valid + # "NAME[EXTRAS]" format, and parse out the name part with packaging or + # some regular expression. But since pip's resolver only spits out + # three kinds of identifiers: normalized PEP 503 names, normalized names + # plus extras, and Requires-Python, we can cheat a bit here. + name, open_bracket, _ = identifier.partition("[") + if open_bracket and name in self._constraints: + return self._constraints[name] + + return Constraint.empty() + + def find_matches( + self, + identifier: str, + requirements: Mapping[str, Iterator[Requirement]], + incompatibilities: Mapping[str, Iterator[Candidate]], + ) -> Iterable[Candidate]: + def _eligible_for_upgrade(name: str) -> bool: + """Are upgrades allowed for this project? + + This checks the upgrade strategy, and whether the project was one + that the user specified in the command line, in order to decide + whether we should upgrade if there's a newer version available. + + (Note that we don't need access to the `--upgrade` flag, because + an upgrade strategy of "to-satisfy-only" means that `--upgrade` + was not specified). + """ + if self._upgrade_strategy == "eager": + return True + elif self._upgrade_strategy == "only-if-needed": + return name in self._user_requested + return False + + return self._factory.find_candidates( + identifier=identifier, + requirements=requirements, + constraint=self._get_constraint(identifier), + prefers_installed=(not _eligible_for_upgrade(identifier)), + incompatibilities=incompatibilities, + ) + + def is_satisfied_by(self, requirement: Requirement, candidate: Candidate) -> bool: + return requirement.is_satisfied_by(candidate) + + def get_dependencies(self, candidate: Candidate) -> Sequence[Requirement]: + with_requires = not self._ignore_dependencies + return [r for r in candidate.iter_dependencies(with_requires) if r is not None] + + @staticmethod + def is_backtrack_cause( + identifier: str, backtrack_causes: Sequence["PreferenceInformation"] + ) -> bool: + for backtrack_cause in backtrack_causes: + if identifier == backtrack_cause.requirement.name: + return True + if backtrack_cause.parent and identifier == backtrack_cause.parent.name: + return True + return False diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py new file mode 100644 index 00000000..6ced5329 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py @@ -0,0 +1,68 @@ +from collections import defaultdict +from logging import getLogger +from typing import Any, DefaultDict + +from pip._vendor.resolvelib.reporters import BaseReporter + +from .base import Candidate, Requirement + +logger = getLogger(__name__) + + +class PipReporter(BaseReporter): + def __init__(self) -> None: + self.backtracks_by_package: DefaultDict[str, int] = defaultdict(int) + + self._messages_at_backtrack = { + 1: ( + "pip is looking at multiple versions of {package_name} to " + "determine which version is compatible with other " + "requirements. This could take a while." + ), + 8: ( + "pip is looking at multiple versions of {package_name} to " + "determine which version is compatible with other " + "requirements. This could take a while." + ), + 13: ( + "This is taking longer than usual. You might need to provide " + "the dependency resolver with stricter constraints to reduce " + "runtime. See https://pip.pypa.io/warnings/backtracking for " + "guidance. If you want to abort this run, press Ctrl + C." + ), + } + + def backtracking(self, candidate: Candidate) -> None: + self.backtracks_by_package[candidate.name] += 1 + + count = self.backtracks_by_package[candidate.name] + if count not in self._messages_at_backtrack: + return + + message = self._messages_at_backtrack[count] + logger.info("INFO: %s", message.format(package_name=candidate.name)) + + +class PipDebuggingReporter(BaseReporter): + """A reporter that does an info log for every event it sees.""" + + def starting(self) -> None: + logger.info("Reporter.starting()") + + def starting_round(self, index: int) -> None: + logger.info("Reporter.starting_round(%r)", index) + + def ending_round(self, index: int, state: Any) -> None: + logger.info("Reporter.ending_round(%r, state)", index) + + def ending(self, state: Any) -> None: + logger.info("Reporter.ending(%r)", state) + + def adding_requirement(self, requirement: Requirement, parent: Candidate) -> None: + logger.info("Reporter.adding_requirement(%r, %r)", requirement, parent) + + def backtracking(self, candidate: Candidate) -> None: + logger.info("Reporter.backtracking(%r)", candidate) + + def pinning(self, candidate: Candidate) -> None: + logger.info("Reporter.pinning(%r)", candidate) diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py new file mode 100644 index 00000000..c19f83c1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py @@ -0,0 +1,166 @@ +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + +from pip._internal.req.req_install import InstallRequirement + +from .base import Candidate, CandidateLookup, Requirement, format_name + + +class ExplicitRequirement(Requirement): + def __init__(self, candidate: Candidate) -> None: + self.candidate = candidate + + def __str__(self) -> str: + return str(self.candidate) + + def __repr__(self) -> str: + return "{class_name}({candidate!r})".format( + class_name=self.__class__.__name__, + candidate=self.candidate, + ) + + @property + def project_name(self) -> NormalizedName: + # No need to canonicalise - the candidate did this + return self.candidate.project_name + + @property + def name(self) -> str: + # No need to canonicalise - the candidate did this + return self.candidate.name + + def format_for_error(self) -> str: + return self.candidate.format_for_error() + + def get_candidate_lookup(self) -> CandidateLookup: + return self.candidate, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + return candidate == self.candidate + + +class SpecifierRequirement(Requirement): + def __init__(self, ireq: InstallRequirement) -> None: + assert ireq.link is None, "This is a link, not a specifier" + self._ireq = ireq + self._extras = frozenset(ireq.extras) + + def __str__(self) -> str: + return str(self._ireq.req) + + def __repr__(self) -> str: + return "{class_name}({requirement!r})".format( + class_name=self.__class__.__name__, + requirement=str(self._ireq.req), + ) + + @property + def project_name(self) -> NormalizedName: + assert self._ireq.req, "Specifier-backed ireq is always PEP 508" + return canonicalize_name(self._ireq.req.name) + + @property + def name(self) -> str: + return format_name(self.project_name, self._extras) + + def format_for_error(self) -> str: + + # Convert comma-separated specifiers into "A, B, ..., F and G" + # This makes the specifier a bit more "human readable", without + # risking a change in meaning. (Hopefully! Not all edge cases have + # been checked) + parts = [s.strip() for s in str(self).split(",")] + if len(parts) == 0: + return "" + elif len(parts) == 1: + return parts[0] + + return ", ".join(parts[:-1]) + " and " + parts[-1] + + def get_candidate_lookup(self) -> CandidateLookup: + return None, self._ireq + + def is_satisfied_by(self, candidate: Candidate) -> bool: + assert candidate.name == self.name, ( + f"Internal issue: Candidate is not for this requirement " + f"{candidate.name} vs {self.name}" + ) + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + assert self._ireq.req, "Specifier-backed ireq is always PEP 508" + spec = self._ireq.req.specifier + return spec.contains(candidate.version, prereleases=True) + + +class RequiresPythonRequirement(Requirement): + """A requirement representing Requires-Python metadata.""" + + def __init__(self, specifier: SpecifierSet, match: Candidate) -> None: + self.specifier = specifier + self._candidate = match + + def __str__(self) -> str: + return f"Python {self.specifier}" + + def __repr__(self) -> str: + return "{class_name}({specifier!r})".format( + class_name=self.__class__.__name__, + specifier=str(self.specifier), + ) + + @property + def project_name(self) -> NormalizedName: + return self._candidate.project_name + + @property + def name(self) -> str: + return self._candidate.name + + def format_for_error(self) -> str: + return str(self) + + def get_candidate_lookup(self) -> CandidateLookup: + if self.specifier.contains(self._candidate.version, prereleases=True): + return self._candidate, None + return None, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + assert candidate.name == self._candidate.name, "Not Python candidate" + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + return self.specifier.contains(candidate.version, prereleases=True) + + +class UnsatisfiableRequirement(Requirement): + """A requirement that cannot be satisfied.""" + + def __init__(self, name: NormalizedName) -> None: + self._name = name + + def __str__(self) -> str: + return f"{self._name} (unavailable)" + + def __repr__(self) -> str: + return "{class_name}({name!r})".format( + class_name=self.__class__.__name__, + name=str(self._name), + ) + + @property + def project_name(self) -> NormalizedName: + return self._name + + @property + def name(self) -> str: + return self._name + + def format_for_error(self) -> str: + return str(self) + + def get_candidate_lookup(self) -> CandidateLookup: + return None, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + return False diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py new file mode 100644 index 00000000..12f96702 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py @@ -0,0 +1,251 @@ +import functools +import logging +import os +from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple, cast + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.resolvelib import BaseReporter, ResolutionImpossible +from pip._vendor.resolvelib import Resolver as RLResolver +from pip._vendor.resolvelib.structs import DirectedGraph + +from pip._internal.cache import WheelCache +from pip._internal.index.package_finder import PackageFinder +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_set import RequirementSet +from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider +from pip._internal.resolution.resolvelib.provider import PipProvider +from pip._internal.resolution.resolvelib.reporter import ( + PipDebuggingReporter, + PipReporter, +) + +from .base import Candidate, Requirement +from .factory import Factory + +if TYPE_CHECKING: + from pip._vendor.resolvelib.resolvers import Result as RLResult + + Result = RLResult[Requirement, Candidate, str] + + +logger = logging.getLogger(__name__) + + +class Resolver(BaseResolver): + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer: RequirementPreparer, + finder: PackageFinder, + wheel_cache: Optional[WheelCache], + make_install_req: InstallRequirementProvider, + use_user_site: bool, + ignore_dependencies: bool, + ignore_installed: bool, + ignore_requires_python: bool, + force_reinstall: bool, + upgrade_strategy: str, + py_version_info: Optional[Tuple[int, ...]] = None, + ): + super().__init__() + assert upgrade_strategy in self._allowed_strategies + + self.factory = Factory( + finder=finder, + preparer=preparer, + make_install_req=make_install_req, + wheel_cache=wheel_cache, + use_user_site=use_user_site, + force_reinstall=force_reinstall, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + py_version_info=py_version_info, + ) + self.ignore_dependencies = ignore_dependencies + self.upgrade_strategy = upgrade_strategy + self._result: Optional[Result] = None + + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + collected = self.factory.collect_root_requirements(root_reqs) + provider = PipProvider( + factory=self.factory, + constraints=collected.constraints, + ignore_dependencies=self.ignore_dependencies, + upgrade_strategy=self.upgrade_strategy, + user_requested=collected.user_requested, + ) + if "PIP_RESOLVER_DEBUG" in os.environ: + reporter: BaseReporter = PipDebuggingReporter() + else: + reporter = PipReporter() + resolver: RLResolver[Requirement, Candidate, str] = RLResolver( + provider, + reporter, + ) + + try: + try_to_avoid_resolution_too_deep = 2000000 + result = self._result = resolver.resolve( + collected.requirements, max_rounds=try_to_avoid_resolution_too_deep + ) + + except ResolutionImpossible as e: + error = self.factory.get_installation_error( + cast("ResolutionImpossible[Requirement, Candidate]", e), + collected.constraints, + ) + raise error from e + + req_set = RequirementSet(check_supported_wheels=check_supported_wheels) + for candidate in result.mapping.values(): + ireq = candidate.get_install_requirement() + if ireq is None: + continue + + # Check if there is already an installation under the same name, + # and set a flag for later stages to uninstall it, if needed. + installed_dist = self.factory.get_dist_to_uninstall(candidate) + if installed_dist is None: + # There is no existing installation -- nothing to uninstall. + ireq.should_reinstall = False + elif self.factory.force_reinstall: + # The --force-reinstall flag is set -- reinstall. + ireq.should_reinstall = True + elif installed_dist.version != candidate.version: + # The installation is different in version -- reinstall. + ireq.should_reinstall = True + elif candidate.is_editable or installed_dist.editable: + # The incoming distribution is editable, or different in + # editable-ness to installation -- reinstall. + ireq.should_reinstall = True + elif candidate.source_link and candidate.source_link.is_file: + # The incoming distribution is under file:// + if candidate.source_link.is_wheel: + # is a local wheel -- do nothing. + logger.info( + "%s is already installed with the same version as the " + "provided wheel. Use --force-reinstall to force an " + "installation of the wheel.", + ireq.name, + ) + continue + + # is a local sdist or path -- reinstall + ireq.should_reinstall = True + else: + continue + + link = candidate.source_link + if link and link.is_yanked: + # The reason can contain non-ASCII characters, Unicode + # is required for Python 2. + msg = ( + "The candidate selected for download or install is a " + "yanked version: {name!r} candidate (version {version} " + "at {link})\nReason for being yanked: {reason}" + ).format( + name=candidate.name, + version=candidate.version, + link=link, + reason=link.yanked_reason or "", + ) + logger.warning(msg) + + req_set.add_named_requirement(ireq) + + reqs = req_set.all_requirements + self.factory.preparer.prepare_linked_requirements_more(reqs) + return req_set + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + """Get order for installation of requirements in RequirementSet. + + The returned list contains a requirement before another that depends on + it. This helps ensure that the environment is kept consistent as they + get installed one-by-one. + + The current implementation creates a topological ordering of the + dependency graph, while breaking any cycles in the graph at arbitrary + points. We make no guarantees about where the cycle would be broken, + other than they would be broken. + """ + assert self._result is not None, "must call resolve() first" + + graph = self._result.graph + weights = get_topological_weights( + graph, + expected_node_count=len(self._result.mapping) + 1, + ) + + sorted_items = sorted( + req_set.requirements.items(), + key=functools.partial(_req_set_item_sorter, weights=weights), + reverse=True, + ) + return [ireq for _, ireq in sorted_items] + + +def get_topological_weights( + graph: "DirectedGraph[Optional[str]]", expected_node_count: int +) -> Dict[Optional[str], int]: + """Assign weights to each node based on how "deep" they are. + + This implementation may change at any point in the future without prior + notice. + + We take the length for the longest path to any node from root, ignoring any + paths that contain a single node twice (i.e. cycles). This is done through + a depth-first search through the graph, while keeping track of the path to + the node. + + Cycles in the graph result would result in node being revisited while also + being it's own path. In this case, take no action. This helps ensure we + don't get stuck in a cycle. + + When assigning weight, the longer path (i.e. larger length) is preferred. + """ + path: Set[Optional[str]] = set() + weights: Dict[Optional[str], int] = {} + + def visit(node: Optional[str]) -> None: + if node in path: + # We hit a cycle, so we'll break it here. + return + + # Time to visit the children! + path.add(node) + for child in graph.iter_children(node): + visit(child) + path.remove(node) + + last_known_parent_count = weights.get(node, 0) + weights[node] = max(last_known_parent_count, len(path)) + + # `None` is guaranteed to be the root node by resolvelib. + visit(None) + + # Sanity checks + assert weights[None] == 0 + assert len(weights) == expected_node_count + + return weights + + +def _req_set_item_sorter( + item: Tuple[str, InstallRequirement], + weights: Dict[Optional[str], int], +) -> Tuple[int, str]: + """Key function used to sort install requirements for installation. + + Based on the "weight" mapping calculated in ``get_installation_order()``. + The canonical package name is returned as the second member as a tie- + breaker to ensure the result is predictable, which is useful in tests. + """ + name = canonicalize_name(item[0]) + return weights[name], name diff --git a/venv/Lib/site-packages/pip/_internal/self_outdated_check.py b/venv/Lib/site-packages/pip/_internal/self_outdated_check.py new file mode 100644 index 00000000..72f70fc2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/self_outdated_check.py @@ -0,0 +1,182 @@ +import datetime +import hashlib +import json +import logging +import optparse +import os.path +import sys +from typing import Any, Dict + +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import get_default_environment +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.session import PipSession +from pip._internal.utils.filesystem import adjacent_tmp_file, check_path_owner, replace +from pip._internal.utils.misc import ensure_dir + +SELFCHECK_DATE_FMT = "%Y-%m-%dT%H:%M:%SZ" + + +logger = logging.getLogger(__name__) + + +def _get_statefile_name(key: str) -> str: + key_bytes = key.encode() + name = hashlib.sha224(key_bytes).hexdigest() + return name + + +class SelfCheckState: + def __init__(self, cache_dir: str) -> None: + self.state: Dict[str, Any] = {} + self.statefile_path = None + + # Try to load the existing state + if cache_dir: + self.statefile_path = os.path.join( + cache_dir, "selfcheck", _get_statefile_name(self.key) + ) + try: + with open(self.statefile_path, encoding="utf-8") as statefile: + self.state = json.load(statefile) + except (OSError, ValueError, KeyError): + # Explicitly suppressing exceptions, since we don't want to + # error out if the cache file is invalid. + pass + + @property + def key(self) -> str: + return sys.prefix + + def save(self, pypi_version: str, current_time: datetime.datetime) -> None: + # If we do not have a path to cache in, don't bother saving. + if not self.statefile_path: + return + + # Check to make sure that we own the directory + if not check_path_owner(os.path.dirname(self.statefile_path)): + return + + # Now that we've ensured the directory is owned by this user, we'll go + # ahead and make sure that all our directories are created. + ensure_dir(os.path.dirname(self.statefile_path)) + + state = { + # Include the key so it's easy to tell which pip wrote the + # file. + "key": self.key, + "last_check": current_time.strftime(SELFCHECK_DATE_FMT), + "pypi_version": pypi_version, + } + + text = json.dumps(state, sort_keys=True, separators=(",", ":")) + + with adjacent_tmp_file(self.statefile_path) as f: + f.write(text.encode()) + + try: + # Since we have a prefix-specific state file, we can just + # overwrite whatever is there, no need to check. + replace(f.name, self.statefile_path) + except OSError: + # Best effort. + pass + + +def was_installed_by_pip(pkg: str) -> bool: + """Checks whether pkg was installed by pip + + This is used not to display the upgrade message when pip is in fact + installed by system package manager, such as dnf on Fedora. + """ + dist = get_default_environment().get_distribution(pkg) + return dist is not None and "pip" == dist.installer + + +def pip_self_version_check(session: PipSession, options: optparse.Values) -> None: + """Check for an update for pip. + + Limit the frequency of checks to once per week. State is stored either in + the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix + of the pip script path. + """ + installed_dist = get_default_environment().get_distribution("pip") + if not installed_dist: + return + + pip_version = installed_dist.version + pypi_version = None + + try: + state = SelfCheckState(cache_dir=options.cache_dir) + + current_time = datetime.datetime.utcnow() + # Determine if we need to refresh the state + if "last_check" in state.state and "pypi_version" in state.state: + last_check = datetime.datetime.strptime( + state.state["last_check"], SELFCHECK_DATE_FMT + ) + if (current_time - last_check).total_seconds() < 7 * 24 * 60 * 60: + pypi_version = state.state["pypi_version"] + + # Refresh the version if we need to or just see if we need to warn + if pypi_version is None: + # Lets use PackageFinder to see what the latest pip version is + link_collector = LinkCollector.create( + session, + options=options, + suppress_no_index=True, + ) + + # Pass allow_yanked=False so we don't suggest upgrading to a + # yanked version. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=False, # Explicitly set to False + ) + + finder = PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + best_candidate = finder.find_best_candidate("pip").best_candidate + if best_candidate is None: + return + pypi_version = str(best_candidate.version) + + # save that we've performed a check + state.save(pypi_version, current_time) + + remote_version = parse_version(pypi_version) + + local_version_is_older = ( + pip_version < remote_version + and pip_version.base_version != remote_version.base_version + and was_installed_by_pip("pip") + ) + + # Determine if our pypi_version is older + if not local_version_is_older: + return + + # We cannot tell how the current pip is available in the current + # command context, so be pragmatic here and suggest the command + # that's always available. This does not accommodate spaces in + # `sys.executable`. + pip_cmd = f"{sys.executable} -m pip" + logger.warning( + "You are using pip version %s; however, version %s is " + "available.\nYou should consider upgrading via the " + "'%s install --upgrade pip' command.", + pip_version, + pypi_version, + pip_cmd, + ) + except Exception: + logger.debug( + "There was an error checking the latest version of pip", + exc_info=True, + ) diff --git a/venv/Lib/site-packages/pip/_internal/utils/__init__.py b/venv/Lib/site-packages/pip/_internal/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_internal/utils/_log.py b/venv/Lib/site-packages/pip/_internal/utils/_log.py new file mode 100644 index 00000000..92c4c6a1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/_log.py @@ -0,0 +1,38 @@ +"""Customize logging + +Defines custom logger class for the `logger.verbose(...)` method. + +init_logging() must be called before any other modules that call logging.getLogger. +""" + +import logging +from typing import Any, cast + +# custom log level for `--verbose` output +# between DEBUG and INFO +VERBOSE = 15 + + +class VerboseLogger(logging.Logger): + """Custom Logger, defining a verbose log-level + + VERBOSE is between INFO and DEBUG. + """ + + def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None: + return self.log(VERBOSE, msg, *args, **kwargs) + + +def getLogger(name: str) -> VerboseLogger: + """logging.getLogger, but ensures our VerboseLogger class is returned""" + return cast(VerboseLogger, logging.getLogger(name)) + + +def init_logging() -> None: + """Register our VerboseLogger and VERBOSE log level. + + Should be called before any calls to getLogger(), + i.e. in pip._internal.__init__ + """ + logging.setLoggerClass(VerboseLogger) + logging.addLevelName(VERBOSE, "VERBOSE") diff --git a/venv/Lib/site-packages/pip/_internal/utils/appdirs.py b/venv/Lib/site-packages/pip/_internal/utils/appdirs.py new file mode 100644 index 00000000..16933bf8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/appdirs.py @@ -0,0 +1,52 @@ +""" +This code wraps the vendored appdirs module to so the return values are +compatible for the current pip code base. + +The intention is to rewrite current usages gradually, keeping the tests pass, +and eventually drop this after all usages are changed. +""" + +import os +import sys +from typing import List + +from pip._vendor import platformdirs as _appdirs + + +def user_cache_dir(appname: str) -> str: + return _appdirs.user_cache_dir(appname, appauthor=False) + + +def _macos_user_config_dir(appname: str, roaming: bool = True) -> str: + # Use ~/Application Support/pip, if the directory exists. + path = _appdirs.user_data_dir(appname, appauthor=False, roaming=roaming) + if os.path.isdir(path): + return path + + # Use a Linux-like ~/.config/pip, by default. + linux_like_path = "~/.config/" + if appname: + linux_like_path = os.path.join(linux_like_path, appname) + + return os.path.expanduser(linux_like_path) + + +def user_config_dir(appname: str, roaming: bool = True) -> str: + if sys.platform == "darwin": + return _macos_user_config_dir(appname, roaming) + + return _appdirs.user_config_dir(appname, appauthor=False, roaming=roaming) + + +# for the discussion regarding site_config_dir locations +# see +def site_config_dirs(appname: str) -> List[str]: + if sys.platform == "darwin": + return [_appdirs.site_data_dir(appname, appauthor=False, multipath=True)] + + dirval = _appdirs.site_config_dir(appname, appauthor=False, multipath=True) + if sys.platform == "win32": + return [dirval] + + # Unix-y system. Look in /etc as well. + return dirval.split(os.pathsep) + ["/etc"] diff --git a/venv/Lib/site-packages/pip/_internal/utils/compat.py b/venv/Lib/site-packages/pip/_internal/utils/compat.py new file mode 100644 index 00000000..3f4d300c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/compat.py @@ -0,0 +1,63 @@ +"""Stuff that differs in different Python versions and platform +distributions.""" + +import logging +import os +import sys + +__all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"] + + +logger = logging.getLogger(__name__) + + +def has_tls() -> bool: + try: + import _ssl # noqa: F401 # ignore unused + + return True + except ImportError: + pass + + from pip._vendor.urllib3.util import IS_PYOPENSSL + + return IS_PYOPENSSL + + +def get_path_uid(path: str) -> int: + """ + Return path's uid. + + Does not follow symlinks: + https://github.com/pypa/pip/pull/935#discussion_r5307003 + + Placed this function in compat due to differences on AIX and + Jython, that should eventually go away. + + :raises OSError: When path is a symlink or can't be read. + """ + if hasattr(os, "O_NOFOLLOW"): + fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) + file_uid = os.fstat(fd).st_uid + os.close(fd) + else: # AIX and Jython + # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW + if not os.path.islink(path): + # older versions of Jython don't have `os.fstat` + file_uid = os.stat(path).st_uid + else: + # raise OSError for parity with os.O_NOFOLLOW above + raise OSError(f"{path} is a symlink; Will not return uid for symlinks") + return file_uid + + +# packages in the stdlib that may have installation metadata, but should not be +# considered 'installed'. this theoretically could be determined based on +# dist.location (py27:`sysconfig.get_paths()['stdlib']`, +# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may +# make this ineffective, so hard-coding +stdlib_pkgs = {"python", "wsgiref", "argparse"} + + +# windows detection, covers cpython and ironpython +WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt") diff --git a/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py b/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py new file mode 100644 index 00000000..b6ed9a78 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py @@ -0,0 +1,165 @@ +"""Generate and work with PEP 425 Compatibility Tags. +""" + +import re +from typing import List, Optional, Tuple + +from pip._vendor.packaging.tags import ( + PythonVersion, + Tag, + compatible_tags, + cpython_tags, + generic_tags, + interpreter_name, + interpreter_version, + mac_platforms, +) + +_osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)") + + +def version_info_to_nodot(version_info: Tuple[int, ...]) -> str: + # Only use up to the first two numbers. + return "".join(map(str, version_info[:2])) + + +def _mac_platforms(arch: str) -> List[str]: + match = _osx_arch_pat.match(arch) + if match: + name, major, minor, actual_arch = match.groups() + mac_version = (int(major), int(minor)) + arches = [ + # Since we have always only checked that the platform starts + # with "macosx", for backwards-compatibility we extract the + # actual prefix provided by the user in case they provided + # something like "macosxcustom_". It may be good to remove + # this as undocumented or deprecate it in the future. + "{}_{}".format(name, arch[len("macosx_") :]) + for arch in mac_platforms(mac_version, actual_arch) + ] + else: + # arch pattern didn't match (?!) + arches = [arch] + return arches + + +def _custom_manylinux_platforms(arch: str) -> List[str]: + arches = [arch] + arch_prefix, arch_sep, arch_suffix = arch.partition("_") + if arch_prefix == "manylinux2014": + # manylinux1/manylinux2010 wheels run on most manylinux2014 systems + # with the exception of wheels depending on ncurses. PEP 599 states + # manylinux1/manylinux2010 wheels should be considered + # manylinux2014 wheels: + # https://www.python.org/dev/peps/pep-0599/#backwards-compatibility-with-manylinux2010-wheels + if arch_suffix in {"i686", "x86_64"}: + arches.append("manylinux2010" + arch_sep + arch_suffix) + arches.append("manylinux1" + arch_sep + arch_suffix) + elif arch_prefix == "manylinux2010": + # manylinux1 wheels run on most manylinux2010 systems with the + # exception of wheels depending on ncurses. PEP 571 states + # manylinux1 wheels should be considered manylinux2010 wheels: + # https://www.python.org/dev/peps/pep-0571/#backwards-compatibility-with-manylinux1-wheels + arches.append("manylinux1" + arch_sep + arch_suffix) + return arches + + +def _get_custom_platforms(arch: str) -> List[str]: + arch_prefix, arch_sep, arch_suffix = arch.partition("_") + if arch.startswith("macosx"): + arches = _mac_platforms(arch) + elif arch_prefix in ["manylinux2014", "manylinux2010"]: + arches = _custom_manylinux_platforms(arch) + else: + arches = [arch] + return arches + + +def _expand_allowed_platforms(platforms: Optional[List[str]]) -> Optional[List[str]]: + if not platforms: + return None + + seen = set() + result = [] + + for p in platforms: + if p in seen: + continue + additions = [c for c in _get_custom_platforms(p) if c not in seen] + seen.update(additions) + result.extend(additions) + + return result + + +def _get_python_version(version: str) -> PythonVersion: + if len(version) > 1: + return int(version[0]), int(version[1:]) + else: + return (int(version[0]),) + + +def _get_custom_interpreter( + implementation: Optional[str] = None, version: Optional[str] = None +) -> str: + if implementation is None: + implementation = interpreter_name() + if version is None: + version = interpreter_version() + return f"{implementation}{version}" + + +def get_supported( + version: Optional[str] = None, + platforms: Optional[List[str]] = None, + impl: Optional[str] = None, + abis: Optional[List[str]] = None, +) -> List[Tag]: + """Return a list of supported tags for each version specified in + `versions`. + + :param version: a string version, of the form "33" or "32", + or None. The version will be assumed to support our ABI. + :param platform: specify a list of platforms you want valid + tags for, or None. If None, use the local system platform. + :param impl: specify the exact implementation you want valid + tags for, or None. If None, use the local interpreter impl. + :param abis: specify a list of abis you want valid + tags for, or None. If None, use the local interpreter abi. + """ + supported: List[Tag] = [] + + python_version: Optional[PythonVersion] = None + if version is not None: + python_version = _get_python_version(version) + + interpreter = _get_custom_interpreter(impl, version) + + platforms = _expand_allowed_platforms(platforms) + + is_cpython = (impl or interpreter_name()) == "cp" + if is_cpython: + supported.extend( + cpython_tags( + python_version=python_version, + abis=abis, + platforms=platforms, + ) + ) + else: + supported.extend( + generic_tags( + interpreter=interpreter, + abis=abis, + platforms=platforms, + ) + ) + supported.extend( + compatible_tags( + python_version=python_version, + interpreter=interpreter, + platforms=platforms, + ) + ) + + return supported diff --git a/venv/Lib/site-packages/pip/_internal/utils/datetime.py b/venv/Lib/site-packages/pip/_internal/utils/datetime.py new file mode 100644 index 00000000..8668b3b0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/datetime.py @@ -0,0 +1,11 @@ +"""For when pip wants to check the date or time. +""" + +import datetime + + +def today_is_later_than(year: int, month: int, day: int) -> bool: + today = datetime.date.today() + given = datetime.date(year, month, day) + + return today > given diff --git a/venv/Lib/site-packages/pip/_internal/utils/deprecation.py b/venv/Lib/site-packages/pip/_internal/utils/deprecation.py new file mode 100644 index 00000000..72bd6f25 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/deprecation.py @@ -0,0 +1,120 @@ +""" +A module that implements tooling to enable easy warnings about deprecations. +""" + +import logging +import warnings +from typing import Any, Optional, TextIO, Type, Union + +from pip._vendor.packaging.version import parse + +from pip import __version__ as current_version # NOTE: tests patch this name. + +DEPRECATION_MSG_PREFIX = "DEPRECATION: " + + +class PipDeprecationWarning(Warning): + pass + + +_original_showwarning: Any = None + + +# Warnings <-> Logging Integration +def _showwarning( + message: Union[Warning, str], + category: Type[Warning], + filename: str, + lineno: int, + file: Optional[TextIO] = None, + line: Optional[str] = None, +) -> None: + if file is not None: + if _original_showwarning is not None: + _original_showwarning(message, category, filename, lineno, file, line) + elif issubclass(category, PipDeprecationWarning): + # We use a specially named logger which will handle all of the + # deprecation messages for pip. + logger = logging.getLogger("pip._internal.deprecations") + logger.warning(message) + else: + _original_showwarning(message, category, filename, lineno, file, line) + + +def install_warning_logger() -> None: + # Enable our Deprecation Warnings + warnings.simplefilter("default", PipDeprecationWarning, append=True) + + global _original_showwarning + + if _original_showwarning is None: + _original_showwarning = warnings.showwarning + warnings.showwarning = _showwarning + + +def deprecated( + *, + reason: str, + replacement: Optional[str], + gone_in: Optional[str], + feature_flag: Optional[str] = None, + issue: Optional[int] = None, +) -> None: + """Helper to deprecate existing functionality. + + reason: + Textual reason shown to the user about why this functionality has + been deprecated. Should be a complete sentence. + replacement: + Textual suggestion shown to the user about what alternative + functionality they can use. + gone_in: + The version of pip does this functionality should get removed in. + Raises an error if pip's current version is greater than or equal to + this. + feature_flag: + Command-line flag of the form --use-feature={feature_flag} for testing + upcoming functionality. + issue: + Issue number on the tracker that would serve as a useful place for + users to find related discussion and provide feedback. + """ + + # Determine whether or not the feature is already gone in this version. + is_gone = gone_in is not None and parse(current_version) >= parse(gone_in) + + message_parts = [ + (reason, f"{DEPRECATION_MSG_PREFIX}{{}}"), + ( + gone_in, + "pip {} will enforce this behaviour change." + if not is_gone + else "Since pip {}, this is no longer supported.", + ), + ( + replacement, + "A possible replacement is {}.", + ), + ( + feature_flag, + "You can use the flag --use-feature={} to test the upcoming behaviour." + if not is_gone + else None, + ), + ( + issue, + "Discussion can be found at https://github.com/pypa/pip/issues/{}", + ), + ] + + message = " ".join( + format_str.format(value) + for value, format_str in message_parts + if format_str is not None and value is not None + ) + + # Raise as an error if this behaviour is deprecated. + if is_gone: + raise PipDeprecationWarning(message) + + warnings.warn(message, category=PipDeprecationWarning, stacklevel=2) diff --git a/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py b/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py new file mode 100644 index 00000000..0e8e5e16 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py @@ -0,0 +1,87 @@ +from typing import Optional + +from pip._internal.models.direct_url import ArchiveInfo, DirectUrl, DirInfo, VcsInfo +from pip._internal.models.link import Link +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + + +def direct_url_as_pep440_direct_reference(direct_url: DirectUrl, name: str) -> str: + """Convert a DirectUrl to a pip requirement string.""" + direct_url.validate() # if invalid, this is a pip bug + requirement = name + " @ " + fragments = [] + if isinstance(direct_url.info, VcsInfo): + requirement += "{}+{}@{}".format( + direct_url.info.vcs, direct_url.url, direct_url.info.commit_id + ) + elif isinstance(direct_url.info, ArchiveInfo): + requirement += direct_url.url + if direct_url.info.hash: + fragments.append(direct_url.info.hash) + else: + assert isinstance(direct_url.info, DirInfo) + requirement += direct_url.url + if direct_url.subdirectory: + fragments.append("subdirectory=" + direct_url.subdirectory) + if fragments: + requirement += "#" + "&".join(fragments) + return requirement + + +def direct_url_for_editable(source_dir: str) -> DirectUrl: + return DirectUrl( + url=path_to_url(source_dir), + info=DirInfo(editable=True), + ) + + +def direct_url_from_link( + link: Link, source_dir: Optional[str] = None, link_is_in_wheel_cache: bool = False +) -> DirectUrl: + if link.is_vcs: + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend + url, requested_revision, _ = vcs_backend.get_url_rev_and_auth( + link.url_without_fragment + ) + # For VCS links, we need to find out and add commit_id. + if link_is_in_wheel_cache: + # If the requested VCS link corresponds to a cached + # wheel, it means the requested revision was an + # immutable commit hash, otherwise it would not have + # been cached. In that case we don't have a source_dir + # with the VCS checkout. + assert requested_revision + commit_id = requested_revision + else: + # If the wheel was not in cache, it means we have + # had to checkout from VCS to build and we have a source_dir + # which we can inspect to find out the commit id. + assert source_dir + commit_id = vcs_backend.get_revision(source_dir) + return DirectUrl( + url=url, + info=VcsInfo( + vcs=vcs_backend.name, + commit_id=commit_id, + requested_revision=requested_revision, + ), + subdirectory=link.subdirectory_fragment, + ) + elif link.is_existing_dir(): + return DirectUrl( + url=link.url_without_fragment, + info=DirInfo(), + subdirectory=link.subdirectory_fragment, + ) + else: + hash = None + hash_name = link.hash_name + if hash_name: + hash = f"{hash_name}={link.hash}" + return DirectUrl( + url=link.url_without_fragment, + info=ArchiveInfo(hash=hash), + subdirectory=link.subdirectory_fragment, + ) diff --git a/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py b/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py new file mode 100644 index 00000000..e4aa5b82 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py @@ -0,0 +1,42 @@ +from distutils.errors import DistutilsArgError +from distutils.fancy_getopt import FancyGetopt +from typing import Dict, List + +_options = [ + ("exec-prefix=", None, ""), + ("home=", None, ""), + ("install-base=", None, ""), + ("install-data=", None, ""), + ("install-headers=", None, ""), + ("install-lib=", None, ""), + ("install-platlib=", None, ""), + ("install-purelib=", None, ""), + ("install-scripts=", None, ""), + ("prefix=", None, ""), + ("root=", None, ""), + ("user", None, ""), +] + + +# typeshed doesn't permit Tuple[str, None, str], see python/typeshed#3469. +_distutils_getopt = FancyGetopt(_options) # type: ignore + + +def parse_distutils_args(args: List[str]) -> Dict[str, str]: + """Parse provided arguments, returning an object that has the + matched arguments. + + Any unknown arguments are ignored. + """ + result = {} + for arg in args: + try: + _, match = _distutils_getopt.getopt(args=[arg]) + except DistutilsArgError: + # We don't care about any other options, which here may be + # considered unrecognized since our option list is not + # exhaustive. + pass + else: + result.update(match.__dict__) + return result diff --git a/venv/Lib/site-packages/pip/_internal/utils/egg_link.py b/venv/Lib/site-packages/pip/_internal/utils/egg_link.py new file mode 100644 index 00000000..9e0da8d2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/egg_link.py @@ -0,0 +1,75 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import os +import re +import sys +from typing import Optional + +from pip._internal.locations import site_packages, user_site +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) + +__all__ = [ + "egg_link_path_from_sys_path", + "egg_link_path_from_location", +] + + +def _egg_link_name(raw_name: str) -> str: + """ + Convert a Name metadata value to a .egg-link name, by applying + the same substitution as pkg_resources's safe_name function. + Note: we cannot use canonicalize_name because it has a different logic. + """ + return re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link" + + +def egg_link_path_from_sys_path(raw_name: str) -> Optional[str]: + """ + Look for a .egg-link file for project name, by walking sys.path. + """ + egg_link_name = _egg_link_name(raw_name) + for path_item in sys.path: + egg_link = os.path.join(path_item, egg_link_name) + if os.path.isfile(egg_link): + return egg_link + return None + + +def egg_link_path_from_location(raw_name: str) -> Optional[str]: + """ + Return the path for the .egg-link file if it exists, otherwise, None. + + There's 3 scenarios: + 1) not in a virtualenv + try to find in site.USER_SITE, then site_packages + 2) in a no-global virtualenv + try to find in site_packages + 3) in a yes-global virtualenv + try to find in site_packages, then site.USER_SITE + (don't look in global location) + + For #1 and #3, there could be odd cases, where there's an egg-link in 2 + locations. + + This method will just return the first one found. + """ + sites = [] + if running_under_virtualenv(): + sites.append(site_packages) + if not virtualenv_no_global() and user_site: + sites.append(user_site) + else: + if user_site: + sites.append(user_site) + sites.append(site_packages) + + egg_link_name = _egg_link_name(raw_name) + for site in sites: + egglink = os.path.join(site, egg_link_name) + if os.path.isfile(egglink): + return egglink + return None diff --git a/venv/Lib/site-packages/pip/_internal/utils/encoding.py b/venv/Lib/site-packages/pip/_internal/utils/encoding.py new file mode 100644 index 00000000..1c73f6c9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/encoding.py @@ -0,0 +1,36 @@ +import codecs +import locale +import re +import sys +from typing import List, Tuple + +BOMS: List[Tuple[bytes, str]] = [ + (codecs.BOM_UTF8, "utf-8"), + (codecs.BOM_UTF16, "utf-16"), + (codecs.BOM_UTF16_BE, "utf-16-be"), + (codecs.BOM_UTF16_LE, "utf-16-le"), + (codecs.BOM_UTF32, "utf-32"), + (codecs.BOM_UTF32_BE, "utf-32-be"), + (codecs.BOM_UTF32_LE, "utf-32-le"), +] + +ENCODING_RE = re.compile(br"coding[:=]\s*([-\w.]+)") + + +def auto_decode(data: bytes) -> str: + """Check a bytes string for a BOM to correctly detect the encoding + + Fallback to locale.getpreferredencoding(False) like open() on Python3""" + for bom, encoding in BOMS: + if data.startswith(bom): + return data[len(bom) :].decode(encoding) + # Lets check the first two lines as in PEP263 + for line in data.split(b"\n")[:2]: + if line[0:1] == b"#" and ENCODING_RE.search(line): + result = ENCODING_RE.search(line) + assert result is not None + encoding = result.groups()[0].decode("ascii") + return data.decode(encoding) + return data.decode( + locale.getpreferredencoding(False) or sys.getdefaultencoding(), + ) diff --git a/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py b/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py new file mode 100644 index 00000000..1504a129 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py @@ -0,0 +1,27 @@ +import sys +from typing import List, Optional + +from pip._internal.cli.main import main + + +def _wrapper(args: Optional[List[str]] = None) -> int: + """Central wrapper for all old entrypoints. + + Historically pip has had several entrypoints defined. Because of issues + arising from PATH, sys.path, multiple Pythons, their interactions, and most + of them having a pip installed, users suffer every time an entrypoint gets + moved. + + To alleviate this pain, and provide a mechanism for warning users and + directing them to an appropriate place for help, we now define all of + our old entrypoints as wrappers for the current one. + """ + sys.stderr.write( + "WARNING: pip is being invoked by an old script wrapper. This will " + "fail in a future version of pip.\n" + "Please see https://github.com/pypa/pip/issues/5599 for advice on " + "fixing the underlying issue.\n" + "To avoid this problem you can invoke Python with '-m pip' instead of " + "running pip directly.\n" + ) + return main(args) diff --git a/venv/Lib/site-packages/pip/_internal/utils/filesystem.py b/venv/Lib/site-packages/pip/_internal/utils/filesystem.py new file mode 100644 index 00000000..b7e6191a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/filesystem.py @@ -0,0 +1,182 @@ +import fnmatch +import os +import os.path +import random +import shutil +import stat +import sys +from contextlib import contextmanager +from tempfile import NamedTemporaryFile +from typing import Any, BinaryIO, Iterator, List, Union, cast + +from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed + +from pip._internal.utils.compat import get_path_uid +from pip._internal.utils.misc import format_size + + +def check_path_owner(path: str) -> bool: + # If we don't have a way to check the effective uid of this process, then + # we'll just assume that we own the directory. + if sys.platform == "win32" or not hasattr(os, "geteuid"): + return True + + assert os.path.isabs(path) + + previous = None + while path != previous: + if os.path.lexists(path): + # Check if path is writable by current user. + if os.geteuid() == 0: + # Special handling for root user in order to handle properly + # cases where users use sudo without -H flag. + try: + path_uid = get_path_uid(path) + except OSError: + return False + return path_uid == 0 + else: + return os.access(path, os.W_OK) + else: + previous, path = path, os.path.dirname(path) + return False # assume we don't own the path + + +def copy2_fixed(src: str, dest: str) -> None: + """Wrap shutil.copy2() but map errors copying socket files to + SpecialFileError as expected. + + See also https://bugs.python.org/issue37700. + """ + try: + shutil.copy2(src, dest) + except OSError: + for f in [src, dest]: + try: + is_socket_file = is_socket(f) + except OSError: + # An error has already occurred. Another error here is not + # a problem and we can ignore it. + pass + else: + if is_socket_file: + raise shutil.SpecialFileError(f"`{f}` is a socket") + + raise + + +def is_socket(path: str) -> bool: + return stat.S_ISSOCK(os.lstat(path).st_mode) + + +@contextmanager +def adjacent_tmp_file(path: str, **kwargs: Any) -> Iterator[BinaryIO]: + """Return a file-like object pointing to a tmp file next to path. + + The file is created securely and is ensured to be written to disk + after the context reaches its end. + + kwargs will be passed to tempfile.NamedTemporaryFile to control + the way the temporary file will be opened. + """ + with NamedTemporaryFile( + delete=False, + dir=os.path.dirname(path), + prefix=os.path.basename(path), + suffix=".tmp", + **kwargs, + ) as f: + result = cast(BinaryIO, f) + try: + yield result + finally: + result.flush() + os.fsync(result.fileno()) + + +# Tenacity raises RetryError by default, explicitly raise the original exception +_replace_retry = retry(reraise=True, stop=stop_after_delay(1), wait=wait_fixed(0.25)) + +replace = _replace_retry(os.replace) + + +# test_writable_dir and _test_writable_dir_win are copied from Flit, +# with the author's agreement to also place them under pip's license. +def test_writable_dir(path: str) -> bool: + """Check if a directory is writable. + + Uses os.access() on POSIX, tries creating files on Windows. + """ + # If the directory doesn't exist, find the closest parent that does. + while not os.path.isdir(path): + parent = os.path.dirname(path) + if parent == path: + break # Should never get here, but infinite loops are bad + path = parent + + if os.name == "posix": + return os.access(path, os.W_OK) + + return _test_writable_dir_win(path) + + +def _test_writable_dir_win(path: str) -> bool: + # os.access doesn't work on Windows: http://bugs.python.org/issue2528 + # and we can't use tempfile: http://bugs.python.org/issue22107 + basename = "accesstest_deleteme_fishfingers_custard_" + alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" + for _ in range(10): + name = basename + "".join(random.choice(alphabet) for _ in range(6)) + file = os.path.join(path, name) + try: + fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL) + except FileExistsError: + pass + except PermissionError: + # This could be because there's a directory with the same name. + # But it's highly unlikely there's a directory called that, + # so we'll assume it's because the parent dir is not writable. + # This could as well be because the parent dir is not readable, + # due to non-privileged user access. + return False + else: + os.close(fd) + os.unlink(file) + return True + + # This should never be reached + raise OSError("Unexpected condition testing for writable directory") + + +def find_files(path: str, pattern: str) -> List[str]: + """Returns a list of absolute paths of files beneath path, recursively, + with filenames which match the UNIX-style shell glob pattern.""" + result: List[str] = [] + for root, _, files in os.walk(path): + matches = fnmatch.filter(files, pattern) + result.extend(os.path.join(root, f) for f in matches) + return result + + +def file_size(path: str) -> Union[int, float]: + # If it's a symlink, return 0. + if os.path.islink(path): + return 0 + return os.path.getsize(path) + + +def format_file_size(path: str) -> str: + return format_size(file_size(path)) + + +def directory_size(path: str) -> Union[int, float]: + size = 0.0 + for root, _dirs, files in os.walk(path): + for filename in files: + file_path = os.path.join(root, filename) + size += file_size(file_path) + return size + + +def format_directory_size(path: str) -> str: + return format_size(directory_size(path)) diff --git a/venv/Lib/site-packages/pip/_internal/utils/filetypes.py b/venv/Lib/site-packages/pip/_internal/utils/filetypes.py new file mode 100644 index 00000000..59485701 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/filetypes.py @@ -0,0 +1,27 @@ +"""Filetype information. +""" + +from typing import Tuple + +from pip._internal.utils.misc import splitext + +WHEEL_EXTENSION = ".whl" +BZ2_EXTENSIONS: Tuple[str, ...] = (".tar.bz2", ".tbz") +XZ_EXTENSIONS: Tuple[str, ...] = ( + ".tar.xz", + ".txz", + ".tlz", + ".tar.lz", + ".tar.lzma", +) +ZIP_EXTENSIONS: Tuple[str, ...] = (".zip", WHEEL_EXTENSION) +TAR_EXTENSIONS: Tuple[str, ...] = (".tar.gz", ".tgz", ".tar") +ARCHIVE_EXTENSIONS = ZIP_EXTENSIONS + BZ2_EXTENSIONS + TAR_EXTENSIONS + XZ_EXTENSIONS + + +def is_archive_file(name: str) -> bool: + """Return True if `name` is a considered as an archive file.""" + ext = splitext(name)[1].lower() + if ext in ARCHIVE_EXTENSIONS: + return True + return False diff --git a/venv/Lib/site-packages/pip/_internal/utils/glibc.py b/venv/Lib/site-packages/pip/_internal/utils/glibc.py new file mode 100644 index 00000000..7bd3c206 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/glibc.py @@ -0,0 +1,88 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import os +import sys +from typing import Optional, Tuple + + +def glibc_version_string() -> Optional[str]: + "Returns glibc version string, or None if not using glibc." + return glibc_version_string_confstr() or glibc_version_string_ctypes() + + +def glibc_version_string_confstr() -> Optional[str]: + "Primary implementation of glibc_version_string using os.confstr." + # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely + # to be broken or missing. This strategy is used in the standard library + # platform module: + # https://github.com/python/cpython/blob/fcf1d003bf4f0100c9d0921ff3d70e1127ca1b71/Lib/platform.py#L175-L183 + if sys.platform == "win32": + return None + try: + # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17": + _, version = os.confstr("CS_GNU_LIBC_VERSION").split() + except (AttributeError, OSError, ValueError): + # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... + return None + return version + + +def glibc_version_string_ctypes() -> Optional[str]: + "Fallback implementation of glibc_version_string using ctypes." + + try: + import ctypes + except ImportError: + return None + + # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen + # manpage says, "If filename is NULL, then the returned handle is for the + # main program". This way we can let the linker do the work to figure out + # which libc our process is actually using. + process_namespace = ctypes.CDLL(None) + try: + gnu_get_libc_version = process_namespace.gnu_get_libc_version + except AttributeError: + # Symbol doesn't exist -> therefore, we are not linked to + # glibc. + return None + + # Call gnu_get_libc_version, which returns a string like "2.5" + gnu_get_libc_version.restype = ctypes.c_char_p + version_str = gnu_get_libc_version() + # py2 / py3 compatibility: + if not isinstance(version_str, str): + version_str = version_str.decode("ascii") + + return version_str + + +# platform.libc_ver regularly returns completely nonsensical glibc +# versions. E.g. on my computer, platform says: +# +# ~$ python2.7 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.7') +# ~$ python3.5 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.9') +# +# But the truth is: +# +# ~$ ldd --version +# ldd (Debian GLIBC 2.22-11) 2.22 +# +# This is unfortunate, because it means that the linehaul data on libc +# versions that was generated by pip 8.1.2 and earlier is useless and +# misleading. Solution: instead of using platform, use our code that actually +# works. +def libc_ver() -> Tuple[str, str]: + """Try to determine the glibc version + + Returns a tuple of strings (lib, version) which default to empty strings + in case the lookup fails. + """ + glibc_version = glibc_version_string() + if glibc_version is None: + return ("", "") + else: + return ("glibc", glibc_version) diff --git a/venv/Lib/site-packages/pip/_internal/utils/hashes.py b/venv/Lib/site-packages/pip/_internal/utils/hashes.py new file mode 100644 index 00000000..82eb035a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/hashes.py @@ -0,0 +1,144 @@ +import hashlib +from typing import TYPE_CHECKING, BinaryIO, Dict, Iterator, List + +from pip._internal.exceptions import HashMismatch, HashMissing, InstallationError +from pip._internal.utils.misc import read_chunks + +if TYPE_CHECKING: + from hashlib import _Hash + + # NoReturn introduced in 3.6.2; imported only for type checking to maintain + # pip compatibility with older patch versions of Python 3.6 + from typing import NoReturn + + +# The recommended hash algo of the moment. Change this whenever the state of +# the art changes; it won't hurt backward compatibility. +FAVORITE_HASH = "sha256" + + +# Names of hashlib algorithms allowed by the --hash option and ``pip hash`` +# Currently, those are the ones at least as collision-resistant as sha256. +STRONG_HASHES = ["sha256", "sha384", "sha512"] + + +class Hashes: + """A wrapper that builds multiple hashes at once and checks them against + known-good values + + """ + + def __init__(self, hashes: Dict[str, List[str]] = None) -> None: + """ + :param hashes: A dict of algorithm names pointing to lists of allowed + hex digests + """ + allowed = {} + if hashes is not None: + for alg, keys in hashes.items(): + # Make sure values are always sorted (to ease equality checks) + allowed[alg] = sorted(keys) + self._allowed = allowed + + def __and__(self, other: "Hashes") -> "Hashes": + if not isinstance(other, Hashes): + return NotImplemented + + # If either of the Hashes object is entirely empty (i.e. no hash + # specified at all), all hashes from the other object are allowed. + if not other: + return self + if not self: + return other + + # Otherwise only hashes that present in both objects are allowed. + new = {} + for alg, values in other._allowed.items(): + if alg not in self._allowed: + continue + new[alg] = [v for v in values if v in self._allowed[alg]] + return Hashes(new) + + @property + def digest_count(self) -> int: + return sum(len(digests) for digests in self._allowed.values()) + + def is_hash_allowed(self, hash_name: str, hex_digest: str) -> bool: + """Return whether the given hex digest is allowed.""" + return hex_digest in self._allowed.get(hash_name, []) + + def check_against_chunks(self, chunks: Iterator[bytes]) -> None: + """Check good hashes against ones built from iterable of chunks of + data. + + Raise HashMismatch if none match. + + """ + gots = {} + for hash_name in self._allowed.keys(): + try: + gots[hash_name] = hashlib.new(hash_name) + except (ValueError, TypeError): + raise InstallationError(f"Unknown hash name: {hash_name}") + + for chunk in chunks: + for hash in gots.values(): + hash.update(chunk) + + for hash_name, got in gots.items(): + if got.hexdigest() in self._allowed[hash_name]: + return + self._raise(gots) + + def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": + raise HashMismatch(self._allowed, gots) + + def check_against_file(self, file: BinaryIO) -> None: + """Check good hashes against a file-like object + + Raise HashMismatch if none match. + + """ + return self.check_against_chunks(read_chunks(file)) + + def check_against_path(self, path: str) -> None: + with open(path, "rb") as file: + return self.check_against_file(file) + + def __bool__(self) -> bool: + """Return whether I know any known-good hashes.""" + return bool(self._allowed) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Hashes): + return NotImplemented + return self._allowed == other._allowed + + def __hash__(self) -> int: + return hash( + ",".join( + sorted( + ":".join((alg, digest)) + for alg, digest_list in self._allowed.items() + for digest in digest_list + ) + ) + ) + + +class MissingHashes(Hashes): + """A workalike for Hashes used when we're missing a hash for a requirement + + It computes the actual hash of the requirement and raises a HashMissing + exception showing it to the user. + + """ + + def __init__(self) -> None: + """Don't offer the ``hashes`` kwarg.""" + # Pass our favorite hash in to generate a "gotten hash". With the + # empty list, it will never match, so an error will always raise. + super().__init__(hashes={FAVORITE_HASH: []}) + + def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": + raise HashMissing(gots[FAVORITE_HASH].hexdigest()) diff --git a/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py b/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py new file mode 100644 index 00000000..276aa79b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py @@ -0,0 +1,35 @@ +"""A helper module that injects SecureTransport, on import. + +The import should be done as early as possible, to ensure all requests and +sessions (or whatever) are created after injecting SecureTransport. + +Note that we only do the injection on macOS, when the linked OpenSSL is too +old to handle TLSv1.2. +""" + +import sys + + +def inject_securetransport() -> None: + # Only relevant on macOS + if sys.platform != "darwin": + return + + try: + import ssl + except ImportError: + return + + # Checks for OpenSSL 1.0.1 + if ssl.OPENSSL_VERSION_NUMBER >= 0x1000100F: + return + + try: + from pip._vendor.urllib3.contrib import securetransport + except (ImportError, OSError): + return + + securetransport.inject_into_urllib3() + + +inject_securetransport() diff --git a/venv/Lib/site-packages/pip/_internal/utils/logging.py b/venv/Lib/site-packages/pip/_internal/utils/logging.py new file mode 100644 index 00000000..a4b828a8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/logging.py @@ -0,0 +1,358 @@ +import contextlib +import errno +import logging +import logging.handlers +import os +import sys +from logging import Filter +from typing import IO, Any, Callable, Iterator, Optional, TextIO, Type, cast + +from pip._internal.utils._log import VERBOSE, getLogger +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import DEPRECATION_MSG_PREFIX +from pip._internal.utils.misc import ensure_dir + +try: + import threading +except ImportError: + import dummy_threading as threading # type: ignore + + +try: + from pip._vendor import colorama +# Lots of different errors can come from this, including SystemError and +# ImportError. +except Exception: + colorama = None + + +_log_state = threading.local() +subprocess_logger = getLogger("pip.subprocessor") + + +class BrokenStdoutLoggingError(Exception): + """ + Raised if BrokenPipeError occurs for the stdout stream while logging. + """ + + +def _is_broken_pipe_error(exc_class: Type[BaseException], exc: BaseException) -> bool: + if exc_class is BrokenPipeError: + return True + + # On Windows, a broken pipe can show up as EINVAL rather than EPIPE: + # https://bugs.python.org/issue19612 + # https://bugs.python.org/issue30418 + if not WINDOWS: + return False + + return isinstance(exc, OSError) and exc.errno in (errno.EINVAL, errno.EPIPE) + + +@contextlib.contextmanager +def indent_log(num: int = 2) -> Iterator[None]: + """ + A context manager which will cause the log output to be indented for any + log messages emitted inside it. + """ + # For thread-safety + _log_state.indentation = get_indentation() + _log_state.indentation += num + try: + yield + finally: + _log_state.indentation -= num + + +def get_indentation() -> int: + return getattr(_log_state, "indentation", 0) + + +class IndentingFormatter(logging.Formatter): + default_time_format = "%Y-%m-%dT%H:%M:%S" + + def __init__( + self, + *args: Any, + add_timestamp: bool = False, + **kwargs: Any, + ) -> None: + """ + A logging.Formatter that obeys the indent_log() context manager. + + :param add_timestamp: A bool indicating output lines should be prefixed + with their record's timestamp. + """ + self.add_timestamp = add_timestamp + super().__init__(*args, **kwargs) + + def get_message_start(self, formatted: str, levelno: int) -> str: + """ + Return the start of the formatted log message (not counting the + prefix to add to each line). + """ + if levelno < logging.WARNING: + return "" + if formatted.startswith(DEPRECATION_MSG_PREFIX): + # Then the message already has a prefix. We don't want it to + # look like "WARNING: DEPRECATION: ...." + return "" + if levelno < logging.ERROR: + return "WARNING: " + + return "ERROR: " + + def format(self, record: logging.LogRecord) -> str: + """ + Calls the standard formatter, but will indent all of the log message + lines by our current indentation level. + """ + formatted = super().format(record) + message_start = self.get_message_start(formatted, record.levelno) + formatted = message_start + formatted + + prefix = "" + if self.add_timestamp: + prefix = f"{self.formatTime(record)} " + prefix += " " * get_indentation() + formatted = "".join([prefix + line for line in formatted.splitlines(True)]) + return formatted + + +def _color_wrap(*colors: str) -> Callable[[str], str]: + def wrapped(inp: str) -> str: + return "".join(list(colors) + [inp, colorama.Style.RESET_ALL]) + + return wrapped + + +class ColorizedStreamHandler(logging.StreamHandler): + + # Don't build up a list of colors if we don't have colorama + if colorama: + COLORS = [ + # This needs to be in order from highest logging level to lowest. + (logging.ERROR, _color_wrap(colorama.Fore.RED)), + (logging.WARNING, _color_wrap(colorama.Fore.YELLOW)), + ] + else: + COLORS = [] + + def __init__(self, stream: Optional[TextIO] = None, no_color: bool = None) -> None: + super().__init__(stream) + self._no_color = no_color + + if WINDOWS and colorama: + self.stream = colorama.AnsiToWin32(self.stream) + + def _using_stdout(self) -> bool: + """ + Return whether the handler is using sys.stdout. + """ + if WINDOWS and colorama: + # Then self.stream is an AnsiToWin32 object. + stream = cast(colorama.AnsiToWin32, self.stream) + return stream.wrapped is sys.stdout + + return self.stream is sys.stdout + + def should_color(self) -> bool: + # Don't colorize things if we do not have colorama or if told not to + if not colorama or self._no_color: + return False + + real_stream = ( + self.stream + if not isinstance(self.stream, colorama.AnsiToWin32) + else self.stream.wrapped + ) + + # If the stream is a tty we should color it + if hasattr(real_stream, "isatty") and real_stream.isatty(): + return True + + # If we have an ANSI term we should color it + if os.environ.get("TERM") == "ANSI": + return True + + # If anything else we should not color it + return False + + def format(self, record: logging.LogRecord) -> str: + msg = super().format(record) + + if self.should_color(): + for level, color in self.COLORS: + if record.levelno >= level: + msg = color(msg) + break + + return msg + + # The logging module says handleError() can be customized. + def handleError(self, record: logging.LogRecord) -> None: + exc_class, exc = sys.exc_info()[:2] + # If a broken pipe occurred while calling write() or flush() on the + # stdout stream in logging's Handler.emit(), then raise our special + # exception so we can handle it in main() instead of logging the + # broken pipe error and continuing. + if ( + exc_class + and exc + and self._using_stdout() + and _is_broken_pipe_error(exc_class, exc) + ): + raise BrokenStdoutLoggingError() + + return super().handleError(record) + + +class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler): + def _open(self) -> IO[Any]: + ensure_dir(os.path.dirname(self.baseFilename)) + return super()._open() + + +class MaxLevelFilter(Filter): + def __init__(self, level: int) -> None: + self.level = level + + def filter(self, record: logging.LogRecord) -> bool: + return record.levelno < self.level + + +class ExcludeLoggerFilter(Filter): + + """ + A logging Filter that excludes records from a logger (or its children). + """ + + def filter(self, record: logging.LogRecord) -> bool: + # The base Filter class allows only records from a logger (or its + # children). + return not super().filter(record) + + +def setup_logging(verbosity: int, no_color: bool, user_log_file: Optional[str]) -> int: + """Configures and sets up all of the logging + + Returns the requested logging level, as its integer value. + """ + + # Determine the level to be logging at. + if verbosity >= 2: + level_number = logging.DEBUG + elif verbosity == 1: + level_number = VERBOSE + elif verbosity == -1: + level_number = logging.WARNING + elif verbosity == -2: + level_number = logging.ERROR + elif verbosity <= -3: + level_number = logging.CRITICAL + else: + level_number = logging.INFO + + level = logging.getLevelName(level_number) + + # The "root" logger should match the "console" level *unless* we also need + # to log to a user log file. + include_user_log = user_log_file is not None + if include_user_log: + additional_log_file = user_log_file + root_level = "DEBUG" + else: + additional_log_file = "/dev/null" + root_level = level + + # Disable any logging besides WARNING unless we have DEBUG level logging + # enabled for vendored libraries. + vendored_log_level = "WARNING" if level in ["INFO", "ERROR"] else "DEBUG" + + # Shorthands for clarity + log_streams = { + "stdout": "ext://sys.stdout", + "stderr": "ext://sys.stderr", + } + handler_classes = { + "stream": "pip._internal.utils.logging.ColorizedStreamHandler", + "file": "pip._internal.utils.logging.BetterRotatingFileHandler", + } + handlers = ["console", "console_errors", "console_subprocess"] + ( + ["user_log"] if include_user_log else [] + ) + + logging.config.dictConfig( + { + "version": 1, + "disable_existing_loggers": False, + "filters": { + "exclude_warnings": { + "()": "pip._internal.utils.logging.MaxLevelFilter", + "level": logging.WARNING, + }, + "restrict_to_subprocess": { + "()": "logging.Filter", + "name": subprocess_logger.name, + }, + "exclude_subprocess": { + "()": "pip._internal.utils.logging.ExcludeLoggerFilter", + "name": subprocess_logger.name, + }, + }, + "formatters": { + "indent": { + "()": IndentingFormatter, + "format": "%(message)s", + }, + "indent_with_timestamp": { + "()": IndentingFormatter, + "format": "%(message)s", + "add_timestamp": True, + }, + }, + "handlers": { + "console": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stdout"], + "filters": ["exclude_subprocess", "exclude_warnings"], + "formatter": "indent", + }, + "console_errors": { + "level": "WARNING", + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["exclude_subprocess"], + "formatter": "indent", + }, + # A handler responsible for logging to the console messages + # from the "subprocessor" logger. + "console_subprocess": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["restrict_to_subprocess"], + "formatter": "indent", + }, + "user_log": { + "level": "DEBUG", + "class": handler_classes["file"], + "filename": additional_log_file, + "encoding": "utf-8", + "delay": True, + "formatter": "indent_with_timestamp", + }, + }, + "root": { + "level": root_level, + "handlers": handlers, + }, + "loggers": {"pip._vendor": {"level": vendored_log_level}}, + } + ) + + return level_number diff --git a/venv/Lib/site-packages/pip/_internal/utils/misc.py b/venv/Lib/site-packages/pip/_internal/utils/misc.py new file mode 100644 index 00000000..d3e9053e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/misc.py @@ -0,0 +1,689 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import contextlib +import errno +import getpass +import hashlib +import io +import logging +import os +import posixpath +import shutil +import stat +import sys +import urllib.parse +from io import StringIO +from itertools import filterfalse, tee, zip_longest +from types import TracebackType +from typing import ( + Any, + BinaryIO, + Callable, + ContextManager, + Iterable, + Iterator, + List, + Optional, + TextIO, + Tuple, + Type, + TypeVar, + cast, +) + +from pip._vendor.pkg_resources import Distribution +from pip._vendor.tenacity import retry, stop_after_delay, wait_fixed + +from pip import __version__ +from pip._internal.exceptions import CommandError +from pip._internal.locations import get_major_minor_version, site_packages, user_site +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.egg_link import egg_link_path_from_location +from pip._internal.utils.virtualenv import running_under_virtualenv + +__all__ = [ + "rmtree", + "display_path", + "backup_dir", + "ask", + "splitext", + "format_size", + "is_installable_dir", + "normalize_path", + "renames", + "get_prog", + "captured_stdout", + "ensure_dir", + "remove_auth_from_url", +] + + +logger = logging.getLogger(__name__) + +T = TypeVar("T") +ExcInfo = Tuple[Type[BaseException], BaseException, TracebackType] +VersionInfo = Tuple[int, int, int] +NetlocTuple = Tuple[str, Tuple[Optional[str], Optional[str]]] + + +def get_pip_version() -> str: + pip_pkg_dir = os.path.join(os.path.dirname(__file__), "..", "..") + pip_pkg_dir = os.path.abspath(pip_pkg_dir) + + return "pip {} from {} (python {})".format( + __version__, + pip_pkg_dir, + get_major_minor_version(), + ) + + +def normalize_version_info(py_version_info: Tuple[int, ...]) -> Tuple[int, int, int]: + """ + Convert a tuple of ints representing a Python version to one of length + three. + + :param py_version_info: a tuple of ints representing a Python version, + or None to specify no version. The tuple can have any length. + + :return: a tuple of length three if `py_version_info` is non-None. + Otherwise, return `py_version_info` unchanged (i.e. None). + """ + if len(py_version_info) < 3: + py_version_info += (3 - len(py_version_info)) * (0,) + elif len(py_version_info) > 3: + py_version_info = py_version_info[:3] + + return cast("VersionInfo", py_version_info) + + +def ensure_dir(path: str) -> None: + """os.path.makedirs without EEXIST.""" + try: + os.makedirs(path) + except OSError as e: + # Windows can raise spurious ENOTEMPTY errors. See #6426. + if e.errno != errno.EEXIST and e.errno != errno.ENOTEMPTY: + raise + + +def get_prog() -> str: + try: + prog = os.path.basename(sys.argv[0]) + if prog in ("__main__.py", "-c"): + return f"{sys.executable} -m pip" + else: + return prog + except (AttributeError, TypeError, IndexError): + pass + return "pip" + + +# Retry every half second for up to 3 seconds +# Tenacity raises RetryError by default, explicitly raise the original exception +@retry(reraise=True, stop=stop_after_delay(3), wait=wait_fixed(0.5)) +def rmtree(dir: str, ignore_errors: bool = False) -> None: + shutil.rmtree(dir, ignore_errors=ignore_errors, onerror=rmtree_errorhandler) + + +def rmtree_errorhandler(func: Callable[..., Any], path: str, exc_info: ExcInfo) -> None: + """On Windows, the files in .svn are read-only, so when rmtree() tries to + remove them, an exception is thrown. We catch that here, remove the + read-only attribute, and hopefully continue without problems.""" + try: + has_attr_readonly = not (os.stat(path).st_mode & stat.S_IWRITE) + except OSError: + # it's equivalent to os.path.exists + return + + if has_attr_readonly: + # convert to read/write + os.chmod(path, stat.S_IWRITE) + # use the original function to repeat the operation + func(path) + return + else: + raise + + +def display_path(path: str) -> str: + """Gives the display value for a given path, making it relative to cwd + if possible.""" + path = os.path.normcase(os.path.abspath(path)) + if path.startswith(os.getcwd() + os.path.sep): + path = "." + path[len(os.getcwd()) :] + return path + + +def backup_dir(dir: str, ext: str = ".bak") -> str: + """Figure out the name of a directory to back up the given dir to + (adding .bak, .bak2, etc)""" + n = 1 + extension = ext + while os.path.exists(dir + extension): + n += 1 + extension = ext + str(n) + return dir + extension + + +def ask_path_exists(message: str, options: Iterable[str]) -> str: + for action in os.environ.get("PIP_EXISTS_ACTION", "").split(): + if action in options: + return action + return ask(message, options) + + +def _check_no_input(message: str) -> None: + """Raise an error if no input is allowed.""" + if os.environ.get("PIP_NO_INPUT"): + raise Exception( + f"No input was expected ($PIP_NO_INPUT set); question: {message}" + ) + + +def ask(message: str, options: Iterable[str]) -> str: + """Ask the message interactively, with the given possible responses""" + while 1: + _check_no_input(message) + response = input(message) + response = response.strip().lower() + if response not in options: + print( + "Your response ({!r}) was not one of the expected responses: " + "{}".format(response, ", ".join(options)) + ) + else: + return response + + +def ask_input(message: str) -> str: + """Ask for input interactively.""" + _check_no_input(message) + return input(message) + + +def ask_password(message: str) -> str: + """Ask for a password interactively.""" + _check_no_input(message) + return getpass.getpass(message) + + +def strtobool(val: str) -> int: + """Convert a string representation of truth to true (1) or false (0). + + True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values + are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if + 'val' is anything else. + """ + val = val.lower() + if val in ("y", "yes", "t", "true", "on", "1"): + return 1 + elif val in ("n", "no", "f", "false", "off", "0"): + return 0 + else: + raise ValueError(f"invalid truth value {val!r}") + + +def format_size(bytes: float) -> str: + if bytes > 1000 * 1000: + return "{:.1f} MB".format(bytes / 1000.0 / 1000) + elif bytes > 10 * 1000: + return "{} kB".format(int(bytes / 1000)) + elif bytes > 1000: + return "{:.1f} kB".format(bytes / 1000.0) + else: + return "{} bytes".format(int(bytes)) + + +def tabulate(rows: Iterable[Iterable[Any]]) -> Tuple[List[str], List[int]]: + """Return a list of formatted rows and a list of column sizes. + + For example:: + + >>> tabulate([['foobar', 2000], [0xdeadbeef]]) + (['foobar 2000', '3735928559'], [10, 4]) + """ + rows = [tuple(map(str, row)) for row in rows] + sizes = [max(map(len, col)) for col in zip_longest(*rows, fillvalue="")] + table = [" ".join(map(str.ljust, row, sizes)).rstrip() for row in rows] + return table, sizes + + +def is_installable_dir(path: str) -> bool: + """Is path is a directory containing pyproject.toml or setup.py? + + If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for + a legacy setuptools layout by identifying setup.py. We don't check for the + setup.cfg because using it without setup.py is only available for PEP 517 + projects, which are already covered by the pyproject.toml check. + """ + if not os.path.isdir(path): + return False + if os.path.isfile(os.path.join(path, "pyproject.toml")): + return True + if os.path.isfile(os.path.join(path, "setup.py")): + return True + return False + + +def read_chunks(file: BinaryIO, size: int = io.DEFAULT_BUFFER_SIZE) -> Iterator[bytes]: + """Yield pieces of data from a file-like object until EOF.""" + while True: + chunk = file.read(size) + if not chunk: + break + yield chunk + + +def normalize_path(path: str, resolve_symlinks: bool = True) -> str: + """ + Convert a path to its canonical, case-normalized, absolute version. + + """ + path = os.path.expanduser(path) + if resolve_symlinks: + path = os.path.realpath(path) + else: + path = os.path.abspath(path) + return os.path.normcase(path) + + +def splitext(path: str) -> Tuple[str, str]: + """Like os.path.splitext, but take off .tar too""" + base, ext = posixpath.splitext(path) + if base.lower().endswith(".tar"): + ext = base[-4:] + ext + base = base[:-4] + return base, ext + + +def renames(old: str, new: str) -> None: + """Like os.renames(), but handles renaming across devices.""" + # Implementation borrowed from os.renames(). + head, tail = os.path.split(new) + if head and tail and not os.path.exists(head): + os.makedirs(head) + + shutil.move(old, new) + + head, tail = os.path.split(old) + if head and tail: + try: + os.removedirs(head) + except OSError: + pass + + +def is_local(path: str) -> bool: + """ + Return True if path is within sys.prefix, if we're running in a virtualenv. + + If we're not in a virtualenv, all paths are considered "local." + + Caution: this function assumes the head of path has been normalized + with normalize_path. + """ + if not running_under_virtualenv(): + return True + return path.startswith(normalize_path(sys.prefix)) + + +def dist_is_local(dist: Distribution) -> bool: + """ + Return True if given Distribution object is installed locally + (i.e. within current virtualenv). + + Always True if we're not in a virtualenv. + + """ + return is_local(dist_location(dist)) + + +def dist_in_usersite(dist: Distribution) -> bool: + """ + Return True if given Distribution is installed in user site. + """ + return dist_location(dist).startswith(normalize_path(user_site)) + + +def dist_in_site_packages(dist: Distribution) -> bool: + """ + Return True if given Distribution is installed in + sysconfig.get_python_lib(). + """ + return dist_location(dist).startswith(normalize_path(site_packages)) + + +def get_distribution(req_name: str) -> Optional[Distribution]: + """Given a requirement name, return the installed Distribution object. + + This searches from *all* distributions available in the environment, to + match the behavior of ``pkg_resources.get_distribution()``. + + Left for compatibility until direct pkg_resources uses are refactored out. + """ + from pip._internal.metadata import get_default_environment + from pip._internal.metadata.pkg_resources import Distribution as _Dist + + dist = get_default_environment().get_distribution(req_name) + if dist is None: + return None + return cast(_Dist, dist)._dist + + +def dist_location(dist: Distribution) -> str: + """ + Get the site-packages location of this distribution. Generally + this is dist.location, except in the case of develop-installed + packages, where dist.location is the source code location, and we + want to know where the egg-link file is. + + The returned location is normalized (in particular, with symlinks removed). + """ + egg_link = egg_link_path_from_location(dist.project_name) + if egg_link: + return normalize_path(egg_link) + return normalize_path(dist.location) + + +def write_output(msg: Any, *args: Any) -> None: + logger.info(msg, *args) + + +class StreamWrapper(StringIO): + orig_stream: TextIO = None + + @classmethod + def from_stream(cls, orig_stream: TextIO) -> "StreamWrapper": + cls.orig_stream = orig_stream + return cls() + + # compileall.compile_dir() needs stdout.encoding to print to stdout + # https://github.com/python/mypy/issues/4125 + @property + def encoding(self): # type: ignore + return self.orig_stream.encoding + + +@contextlib.contextmanager +def captured_output(stream_name: str) -> Iterator[StreamWrapper]: + """Return a context manager used by captured_stdout/stdin/stderr + that temporarily replaces the sys stream *stream_name* with a StringIO. + + Taken from Lib/support/__init__.py in the CPython repo. + """ + orig_stdout = getattr(sys, stream_name) + setattr(sys, stream_name, StreamWrapper.from_stream(orig_stdout)) + try: + yield getattr(sys, stream_name) + finally: + setattr(sys, stream_name, orig_stdout) + + +def captured_stdout() -> ContextManager[StreamWrapper]: + """Capture the output of sys.stdout: + + with captured_stdout() as stdout: + print('hello') + self.assertEqual(stdout.getvalue(), 'hello\n') + + Taken from Lib/support/__init__.py in the CPython repo. + """ + return captured_output("stdout") + + +def captured_stderr() -> ContextManager[StreamWrapper]: + """ + See captured_stdout(). + """ + return captured_output("stderr") + + +# Simulates an enum +def enum(*sequential: Any, **named: Any) -> Type[Any]: + enums = dict(zip(sequential, range(len(sequential))), **named) + reverse = {value: key for key, value in enums.items()} + enums["reverse_mapping"] = reverse + return type("Enum", (), enums) + + +def build_netloc(host: str, port: Optional[int]) -> str: + """ + Build a netloc from a host-port pair + """ + if port is None: + return host + if ":" in host: + # Only wrap host with square brackets when it is IPv6 + host = f"[{host}]" + return f"{host}:{port}" + + +def build_url_from_netloc(netloc: str, scheme: str = "https") -> str: + """ + Build a full URL from a netloc. + """ + if netloc.count(":") >= 2 and "@" not in netloc and "[" not in netloc: + # It must be a bare IPv6 address, so wrap it with brackets. + netloc = f"[{netloc}]" + return f"{scheme}://{netloc}" + + +def parse_netloc(netloc: str) -> Tuple[str, Optional[int]]: + """ + Return the host-port pair from a netloc. + """ + url = build_url_from_netloc(netloc) + parsed = urllib.parse.urlparse(url) + return parsed.hostname, parsed.port + + +def split_auth_from_netloc(netloc: str) -> NetlocTuple: + """ + Parse out and remove the auth information from a netloc. + + Returns: (netloc, (username, password)). + """ + if "@" not in netloc: + return netloc, (None, None) + + # Split from the right because that's how urllib.parse.urlsplit() + # behaves if more than one @ is present (which can be checked using + # the password attribute of urlsplit()'s return value). + auth, netloc = netloc.rsplit("@", 1) + pw: Optional[str] = None + if ":" in auth: + # Split from the left because that's how urllib.parse.urlsplit() + # behaves if more than one : is present (which again can be checked + # using the password attribute of the return value) + user, pw = auth.split(":", 1) + else: + user, pw = auth, None + + user = urllib.parse.unquote(user) + if pw is not None: + pw = urllib.parse.unquote(pw) + + return netloc, (user, pw) + + +def redact_netloc(netloc: str) -> str: + """ + Replace the sensitive data in a netloc with "****", if it exists. + + For example: + - "user:pass@example.com" returns "user:****@example.com" + - "accesstoken@example.com" returns "****@example.com" + """ + netloc, (user, password) = split_auth_from_netloc(netloc) + if user is None: + return netloc + if password is None: + user = "****" + password = "" + else: + user = urllib.parse.quote(user) + password = ":****" + return "{user}{password}@{netloc}".format( + user=user, password=password, netloc=netloc + ) + + +def _transform_url( + url: str, transform_netloc: Callable[[str], Tuple[Any, ...]] +) -> Tuple[str, NetlocTuple]: + """Transform and replace netloc in a url. + + transform_netloc is a function taking the netloc and returning a + tuple. The first element of this tuple is the new netloc. The + entire tuple is returned. + + Returns a tuple containing the transformed url as item 0 and the + original tuple returned by transform_netloc as item 1. + """ + purl = urllib.parse.urlsplit(url) + netloc_tuple = transform_netloc(purl.netloc) + # stripped url + url_pieces = (purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment) + surl = urllib.parse.urlunsplit(url_pieces) + return surl, cast("NetlocTuple", netloc_tuple) + + +def _get_netloc(netloc: str) -> NetlocTuple: + return split_auth_from_netloc(netloc) + + +def _redact_netloc(netloc: str) -> Tuple[str]: + return (redact_netloc(netloc),) + + +def split_auth_netloc_from_url(url: str) -> Tuple[str, str, Tuple[str, str]]: + """ + Parse a url into separate netloc, auth, and url with no auth. + + Returns: (url_without_auth, netloc, (username, password)) + """ + url_without_auth, (netloc, auth) = _transform_url(url, _get_netloc) + return url_without_auth, netloc, auth + + +def remove_auth_from_url(url: str) -> str: + """Return a copy of url with 'username:password@' removed.""" + # username/pass params are passed to subversion through flags + # and are not recognized in the url. + return _transform_url(url, _get_netloc)[0] + + +def redact_auth_from_url(url: str) -> str: + """Replace the password in a given url with ****.""" + return _transform_url(url, _redact_netloc)[0] + + +class HiddenText: + def __init__(self, secret: str, redacted: str) -> None: + self.secret = secret + self.redacted = redacted + + def __repr__(self) -> str: + return "".format(str(self)) + + def __str__(self) -> str: + return self.redacted + + # This is useful for testing. + def __eq__(self, other: Any) -> bool: + if type(self) != type(other): + return False + + # The string being used for redaction doesn't also have to match, + # just the raw, original string. + return self.secret == other.secret + + +def hide_value(value: str) -> HiddenText: + return HiddenText(value, redacted="****") + + +def hide_url(url: str) -> HiddenText: + redacted = redact_auth_from_url(url) + return HiddenText(url, redacted=redacted) + + +def protect_pip_from_modification_on_windows(modifying_pip: bool) -> None: + """Protection of pip.exe from modification on Windows + + On Windows, any operation modifying pip should be run as: + python -m pip ... + """ + pip_names = [ + "pip.exe", + "pip{}.exe".format(sys.version_info[0]), + "pip{}.{}.exe".format(*sys.version_info[:2]), + ] + + # See https://github.com/pypa/pip/issues/1299 for more discussion + should_show_use_python_msg = ( + modifying_pip and WINDOWS and os.path.basename(sys.argv[0]) in pip_names + ) + + if should_show_use_python_msg: + new_command = [sys.executable, "-m", "pip"] + sys.argv[1:] + raise CommandError( + "To modify pip, please run the following command:\n{}".format( + " ".join(new_command) + ) + ) + + +def is_console_interactive() -> bool: + """Is this console interactive?""" + return sys.stdin is not None and sys.stdin.isatty() + + +def hash_file(path: str, blocksize: int = 1 << 20) -> Tuple[Any, int]: + """Return (hash, length) for path using hashlib.sha256()""" + + h = hashlib.sha256() + length = 0 + with open(path, "rb") as f: + for block in read_chunks(f, size=blocksize): + length += len(block) + h.update(block) + return h, length + + +def is_wheel_installed() -> bool: + """ + Return whether the wheel package is installed. + """ + try: + import wheel # noqa: F401 + except ImportError: + return False + + return True + + +def pairwise(iterable: Iterable[Any]) -> Iterator[Tuple[Any, Any]]: + """ + Return paired elements. + + For example: + s -> (s0, s1), (s2, s3), (s4, s5), ... + """ + iterable = iter(iterable) + return zip_longest(iterable, iterable) + + +def partition( + pred: Callable[[T], bool], + iterable: Iterable[T], +) -> Tuple[Iterable[T], Iterable[T]]: + """ + Use a predicate to partition entries into false entries and true entries, + like + + partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9 + """ + t1, t2 = tee(iterable) + return filterfalse(pred, t1), filter(pred, t2) diff --git a/venv/Lib/site-packages/pip/_internal/utils/models.py b/venv/Lib/site-packages/pip/_internal/utils/models.py new file mode 100644 index 00000000..b6bb21a8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/models.py @@ -0,0 +1,39 @@ +"""Utilities for defining models +""" + +import operator +from typing import Any, Callable, Type + + +class KeyBasedCompareMixin: + """Provides comparison capabilities that is based on a key""" + + __slots__ = ["_compare_key", "_defining_class"] + + def __init__(self, key: Any, defining_class: Type["KeyBasedCompareMixin"]) -> None: + self._compare_key = key + self._defining_class = defining_class + + def __hash__(self) -> int: + return hash(self._compare_key) + + def __lt__(self, other: Any) -> bool: + return self._compare(other, operator.__lt__) + + def __le__(self, other: Any) -> bool: + return self._compare(other, operator.__le__) + + def __gt__(self, other: Any) -> bool: + return self._compare(other, operator.__gt__) + + def __ge__(self, other: Any) -> bool: + return self._compare(other, operator.__ge__) + + def __eq__(self, other: Any) -> bool: + return self._compare(other, operator.__eq__) + + def _compare(self, other: Any, method: Callable[[Any, Any], bool]) -> bool: + if not isinstance(other, self._defining_class): + return NotImplemented + + return method(self._compare_key, other._compare_key) diff --git a/venv/Lib/site-packages/pip/_internal/utils/packaging.py b/venv/Lib/site-packages/pip/_internal/utils/packaging.py new file mode 100644 index 00000000..f100473e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/packaging.py @@ -0,0 +1,84 @@ +import functools +import logging +from email.message import Message +from email.parser import FeedParser +from typing import Optional, Tuple + +from pip._vendor import pkg_resources +from pip._vendor.packaging import specifiers, version +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.pkg_resources import Distribution + +from pip._internal.exceptions import NoneMetadataError +from pip._internal.utils.misc import display_path + +logger = logging.getLogger(__name__) + + +def check_requires_python( + requires_python: Optional[str], version_info: Tuple[int, ...] +) -> bool: + """ + Check if the given Python version matches a "Requires-Python" specifier. + + :param version_info: A 3-tuple of ints representing a Python + major-minor-micro version to check (e.g. `sys.version_info[:3]`). + + :return: `True` if the given Python version satisfies the requirement. + Otherwise, return `False`. + + :raises InvalidSpecifier: If `requires_python` has an invalid format. + """ + if requires_python is None: + # The package provides no information + return True + requires_python_specifier = specifiers.SpecifierSet(requires_python) + + python_version = version.parse(".".join(map(str, version_info))) + return python_version in requires_python_specifier + + +def get_metadata(dist: Distribution) -> Message: + """ + :raises NoneMetadataError: if the distribution reports `has_metadata()` + True but `get_metadata()` returns None. + """ + metadata_name = "METADATA" + if isinstance(dist, pkg_resources.DistInfoDistribution) and dist.has_metadata( + metadata_name + ): + metadata = dist.get_metadata(metadata_name) + elif dist.has_metadata("PKG-INFO"): + metadata_name = "PKG-INFO" + metadata = dist.get_metadata(metadata_name) + else: + logger.warning("No metadata found in %s", display_path(dist.location)) + metadata = "" + + if metadata is None: + raise NoneMetadataError(dist, metadata_name) + + feed_parser = FeedParser() + # The following line errors out if with a "NoneType" TypeError if + # passed metadata=None. + feed_parser.feed(metadata) + return feed_parser.close() + + +def get_installer(dist: Distribution) -> str: + if dist.has_metadata("INSTALLER"): + for line in dist.get_metadata_lines("INSTALLER"): + if line.strip(): + return line.strip() + return "" + + +@functools.lru_cache(maxsize=512) +def get_requirement(req_string: str) -> Requirement: + """Construct a packaging.Requirement object with caching""" + # Parsing requirement strings is expensive, and is also expected to happen + # with a low diversity of different arguments (at least relative the number + # constructed). This method adds a cache to requirement object creation to + # minimize repeated parsing of the same string to construct equivalent + # Requirement objects. + return Requirement(req_string) diff --git a/venv/Lib/site-packages/pip/_internal/utils/parallel.py b/venv/Lib/site-packages/pip/_internal/utils/parallel.py new file mode 100644 index 00000000..e3185773 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/parallel.py @@ -0,0 +1,103 @@ +"""Convenient parallelization of higher order functions. + +This module provides two helper functions, with appropriate fallbacks on +Python 2 and on systems lacking support for synchronization mechanisms: + +- map_multiprocess +- map_multithread + +These helpers work like Python 3's map, with two differences: + +- They don't guarantee the order of processing of + the elements of the iterable. +- The underlying process/thread pools chop the iterable into + a number of chunks, so that for very long iterables using + a large value for chunksize can make the job complete much faster + than using the default value of 1. +""" + +__all__ = ["map_multiprocess", "map_multithread"] + +from contextlib import contextmanager +from multiprocessing import Pool as ProcessPool +from multiprocessing import pool +from multiprocessing.dummy import Pool as ThreadPool +from typing import Callable, Iterable, Iterator, TypeVar, Union + +from pip._vendor.requests.adapters import DEFAULT_POOLSIZE + +Pool = Union[pool.Pool, pool.ThreadPool] +S = TypeVar("S") +T = TypeVar("T") + +# On platforms without sem_open, multiprocessing[.dummy] Pool +# cannot be created. +try: + import multiprocessing.synchronize # noqa +except ImportError: + LACK_SEM_OPEN = True +else: + LACK_SEM_OPEN = False + +# Incredibly large timeout to work around bpo-8296 on Python 2. +TIMEOUT = 2000000 + + +@contextmanager +def closing(pool: Pool) -> Iterator[Pool]: + """Return a context manager making sure the pool closes properly.""" + try: + yield pool + finally: + # For Pool.imap*, close and join are needed + # for the returned iterator to begin yielding. + pool.close() + pool.join() + pool.terminate() + + +def _map_fallback( + func: Callable[[S], T], iterable: Iterable[S], chunksize: int = 1 +) -> Iterator[T]: + """Make an iterator applying func to each element in iterable. + + This function is the sequential fallback either on Python 2 + where Pool.imap* doesn't react to KeyboardInterrupt + or when sem_open is unavailable. + """ + return map(func, iterable) + + +def _map_multiprocess( + func: Callable[[S], T], iterable: Iterable[S], chunksize: int = 1 +) -> Iterator[T]: + """Chop iterable into chunks and submit them to a process pool. + + For very long iterables using a large value for chunksize can make + the job complete much faster than using the default value of 1. + + Return an unordered iterator of the results. + """ + with closing(ProcessPool()) as pool: + return pool.imap_unordered(func, iterable, chunksize) + + +def _map_multithread( + func: Callable[[S], T], iterable: Iterable[S], chunksize: int = 1 +) -> Iterator[T]: + """Chop iterable into chunks and submit them to a thread pool. + + For very long iterables using a large value for chunksize can make + the job complete much faster than using the default value of 1. + + Return an unordered iterator of the results. + """ + with closing(ThreadPool(DEFAULT_POOLSIZE)) as pool: + return pool.imap_unordered(func, iterable, chunksize) + + +if LACK_SEM_OPEN: + map_multiprocess = map_multithread = _map_fallback +else: + map_multiprocess = _map_multiprocess + map_multithread = _map_multithread diff --git a/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py b/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py new file mode 100644 index 00000000..bd846aa9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py @@ -0,0 +1,33 @@ +from typing import Dict, Iterable, List + +from pip._vendor.pkg_resources import yield_lines + + +class DictMetadata: + """IMetadataProvider that reads metadata files from a dictionary.""" + + def __init__(self, metadata: Dict[str, bytes]) -> None: + self._metadata = metadata + + def has_metadata(self, name: str) -> bool: + return name in self._metadata + + def get_metadata(self, name: str) -> str: + try: + return self._metadata[name].decode() + except UnicodeDecodeError as e: + # Mirrors handling done in pkg_resources.NullProvider. + e.reason += f" in {name} file" + raise + + def get_metadata_lines(self, name: str) -> Iterable[str]: + return yield_lines(self.get_metadata(name)) + + def metadata_isdir(self, name: str) -> bool: + return False + + def metadata_listdir(self, name: str) -> List[str]: + return [] + + def run_script(self, script_name: str, namespace: str) -> None: + pass diff --git a/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py b/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py new file mode 100644 index 00000000..9d65ceba --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py @@ -0,0 +1,167 @@ +import sys +from typing import List, Optional, Sequence + +# Shim to wrap setup.py invocation with setuptools +# +# We set sys.argv[0] to the path to the underlying setup.py file so +# setuptools / distutils don't take the path to the setup.py to be "-c" when +# invoking via the shim. This avoids e.g. the following manifest_maker +# warning: "warning: manifest_maker: standard file '-c' not found". +_SETUPTOOLS_SHIM = ( + "import io, os, sys, setuptools, tokenize; sys.argv[0] = {0!r}; __file__={0!r};" + "f = getattr(tokenize, 'open', open)(__file__) " + "if os.path.exists(__file__) " + "else io.StringIO('from setuptools import setup; setup()');" + "code = f.read().replace('\\r\\n', '\\n');" + "f.close();" + "exec(compile(code, __file__, 'exec'))" +) + + +def make_setuptools_shim_args( + setup_py_path: str, + global_options: Sequence[str] = None, + no_user_config: bool = False, + unbuffered_output: bool = False, +) -> List[str]: + """ + Get setuptools command arguments with shim wrapped setup file invocation. + + :param setup_py_path: The path to setup.py to be wrapped. + :param global_options: Additional global options. + :param no_user_config: If True, disables personal user configuration. + :param unbuffered_output: If True, adds the unbuffered switch to the + argument list. + """ + args = [sys.executable] + if unbuffered_output: + args += ["-u"] + args += ["-c", _SETUPTOOLS_SHIM.format(setup_py_path)] + if global_options: + args += global_options + if no_user_config: + args += ["--no-user-cfg"] + return args + + +def make_setuptools_bdist_wheel_args( + setup_py_path: str, + global_options: Sequence[str], + build_options: Sequence[str], + destination_dir: str, +) -> List[str]: + # NOTE: Eventually, we'd want to also -S to the flags here, when we're + # isolating. Currently, it breaks Python in virtualenvs, because it + # relies on site.py to find parts of the standard library outside the + # virtualenv. + args = make_setuptools_shim_args( + setup_py_path, global_options=global_options, unbuffered_output=True + ) + args += ["bdist_wheel", "-d", destination_dir] + args += build_options + return args + + +def make_setuptools_clean_args( + setup_py_path: str, + global_options: Sequence[str], +) -> List[str]: + args = make_setuptools_shim_args( + setup_py_path, global_options=global_options, unbuffered_output=True + ) + args += ["clean", "--all"] + return args + + +def make_setuptools_develop_args( + setup_py_path: str, + global_options: Sequence[str], + install_options: Sequence[str], + no_user_config: bool, + prefix: Optional[str], + home: Optional[str], + use_user_site: bool, +) -> List[str]: + assert not (use_user_site and prefix) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + ) + + args += ["develop", "--no-deps"] + + args += install_options + + if prefix: + args += ["--prefix", prefix] + if home is not None: + args += ["--install-dir", home] + + if use_user_site: + args += ["--user", "--prefix="] + + return args + + +def make_setuptools_egg_info_args( + setup_py_path: str, + egg_info_dir: Optional[str], + no_user_config: bool, +) -> List[str]: + args = make_setuptools_shim_args(setup_py_path, no_user_config=no_user_config) + + args += ["egg_info"] + + if egg_info_dir: + args += ["--egg-base", egg_info_dir] + + return args + + +def make_setuptools_install_args( + setup_py_path: str, + global_options: Sequence[str], + install_options: Sequence[str], + record_filename: str, + root: Optional[str], + prefix: Optional[str], + header_dir: Optional[str], + home: Optional[str], + use_user_site: bool, + no_user_config: bool, + pycompile: bool, +) -> List[str]: + assert not (use_user_site and prefix) + assert not (use_user_site and root) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + unbuffered_output=True, + ) + args += ["install", "--record", record_filename] + args += ["--single-version-externally-managed"] + + if root is not None: + args += ["--root", root] + if prefix is not None: + args += ["--prefix", prefix] + if home is not None: + args += ["--home", home] + if use_user_site: + args += ["--user", "--prefix="] + + if pycompile: + args += ["--compile"] + else: + args += ["--no-compile"] + + if header_dir: + args += ["--install-headers", header_dir] + + args += install_options + + return args diff --git a/venv/Lib/site-packages/pip/_internal/utils/subprocess.py b/venv/Lib/site-packages/pip/_internal/utils/subprocess.py new file mode 100644 index 00000000..f6e8b219 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/subprocess.py @@ -0,0 +1,289 @@ +import logging +import os +import shlex +import subprocess +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Iterable, + List, + Mapping, + Optional, + Union, +) + +from pip._internal.cli.spinners import SpinnerInterface, open_spinner +from pip._internal.exceptions import InstallationSubprocessError +from pip._internal.utils.logging import VERBOSE, subprocess_logger +from pip._internal.utils.misc import HiddenText + +if TYPE_CHECKING: + # Literal was introduced in Python 3.8. + # + # TODO: Remove `if TYPE_CHECKING` when dropping support for Python 3.7. + from typing import Literal + +CommandArgs = List[Union[str, HiddenText]] + + +LOG_DIVIDER = "----------------------------------------" + + +def make_command(*args: Union[str, HiddenText, CommandArgs]) -> CommandArgs: + """ + Create a CommandArgs object. + """ + command_args: CommandArgs = [] + for arg in args: + # Check for list instead of CommandArgs since CommandArgs is + # only known during type-checking. + if isinstance(arg, list): + command_args.extend(arg) + else: + # Otherwise, arg is str or HiddenText. + command_args.append(arg) + + return command_args + + +def format_command_args(args: Union[List[str], CommandArgs]) -> str: + """ + Format command arguments for display. + """ + # For HiddenText arguments, display the redacted form by calling str(). + # Also, we don't apply str() to arguments that aren't HiddenText since + # this can trigger a UnicodeDecodeError in Python 2 if the argument + # has type unicode and includes a non-ascii character. (The type + # checker doesn't ensure the annotations are correct in all cases.) + return " ".join( + shlex.quote(str(arg)) if isinstance(arg, HiddenText) else shlex.quote(arg) + for arg in args + ) + + +def reveal_command_args(args: Union[List[str], CommandArgs]) -> List[str]: + """ + Return the arguments in their raw, unredacted form. + """ + return [arg.secret if isinstance(arg, HiddenText) else arg for arg in args] + + +def make_subprocess_output_error( + cmd_args: Union[List[str], CommandArgs], + cwd: Optional[str], + lines: List[str], + exit_status: int, +) -> str: + """ + Create and return the error message to use to log a subprocess error + with command output. + + :param lines: A list of lines, each ending with a newline. + """ + command = format_command_args(cmd_args) + + # We know the joined output value ends in a newline. + output = "".join(lines) + msg = ( + # Use a unicode string to avoid "UnicodeEncodeError: 'ascii' + # codec can't encode character ..." in Python 2 when a format + # argument (e.g. `output`) has a non-ascii character. + "Command errored out with exit status {exit_status}:\n" + " command: {command_display}\n" + " cwd: {cwd_display}\n" + "Complete output ({line_count} lines):\n{output}{divider}" + ).format( + exit_status=exit_status, + command_display=command, + cwd_display=cwd, + line_count=len(lines), + output=output, + divider=LOG_DIVIDER, + ) + return msg + + +def call_subprocess( + cmd: Union[List[str], CommandArgs], + show_stdout: bool = False, + cwd: Optional[str] = None, + on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", + extra_ok_returncodes: Optional[Iterable[int]] = None, + command_desc: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + unset_environ: Optional[Iterable[str]] = None, + spinner: Optional[SpinnerInterface] = None, + log_failed_cmd: Optional[bool] = True, + stdout_only: Optional[bool] = False, +) -> str: + """ + Args: + show_stdout: if true, use INFO to log the subprocess's stderr and + stdout streams. Otherwise, use DEBUG. Defaults to False. + extra_ok_returncodes: an iterable of integer return codes that are + acceptable, in addition to 0. Defaults to None, which means []. + unset_environ: an iterable of environment variable names to unset + prior to calling subprocess.Popen(). + log_failed_cmd: if false, failed commands are not logged, only raised. + stdout_only: if true, return only stdout, else return both. When true, + logging of both stdout and stderr occurs when the subprocess has + terminated, else logging occurs as subprocess output is produced. + """ + if extra_ok_returncodes is None: + extra_ok_returncodes = [] + if unset_environ is None: + unset_environ = [] + # Most places in pip use show_stdout=False. What this means is-- + # + # - We connect the child's output (combined stderr and stdout) to a + # single pipe, which we read. + # - We log this output to stderr at DEBUG level as it is received. + # - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't + # requested), then we show a spinner so the user can still see the + # subprocess is in progress. + # - If the subprocess exits with an error, we log the output to stderr + # at ERROR level if it hasn't already been displayed to the console + # (e.g. if --verbose logging wasn't enabled). This way we don't log + # the output to the console twice. + # + # If show_stdout=True, then the above is still done, but with DEBUG + # replaced by INFO. + if show_stdout: + # Then log the subprocess output at INFO level. + log_subprocess = subprocess_logger.info + used_level = logging.INFO + else: + # Then log the subprocess output using VERBOSE. This also ensures + # it will be logged to the log file (aka user_log), if enabled. + log_subprocess = subprocess_logger.verbose + used_level = VERBOSE + + # Whether the subprocess will be visible in the console. + showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level + + # Only use the spinner if we're not showing the subprocess output + # and we have a spinner. + use_spinner = not showing_subprocess and spinner is not None + + if command_desc is None: + command_desc = format_command_args(cmd) + + log_subprocess("Running command %s", command_desc) + env = os.environ.copy() + if extra_environ: + env.update(extra_environ) + for name in unset_environ: + env.pop(name, None) + try: + proc = subprocess.Popen( + # Convert HiddenText objects to the underlying str. + reveal_command_args(cmd), + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT if not stdout_only else subprocess.PIPE, + cwd=cwd, + env=env, + errors="backslashreplace", + ) + except Exception as exc: + if log_failed_cmd: + subprocess_logger.critical( + "Error %s while executing command %s", + exc, + command_desc, + ) + raise + all_output = [] + if not stdout_only: + assert proc.stdout + assert proc.stdin + proc.stdin.close() + # In this mode, stdout and stderr are in the same pipe. + while True: + line: str = proc.stdout.readline() + if not line: + break + line = line.rstrip() + all_output.append(line + "\n") + + # Show the line immediately. + log_subprocess(line) + # Update the spinner. + if use_spinner: + assert spinner + spinner.spin() + try: + proc.wait() + finally: + if proc.stdout: + proc.stdout.close() + output = "".join(all_output) + else: + # In this mode, stdout and stderr are in different pipes. + # We must use communicate() which is the only safe way to read both. + out, err = proc.communicate() + # log line by line to preserve pip log indenting + for out_line in out.splitlines(): + log_subprocess(out_line) + all_output.append(out) + for err_line in err.splitlines(): + log_subprocess(err_line) + all_output.append(err) + output = out + + proc_had_error = proc.returncode and proc.returncode not in extra_ok_returncodes + if use_spinner: + assert spinner + if proc_had_error: + spinner.finish("error") + else: + spinner.finish("done") + if proc_had_error: + if on_returncode == "raise": + if not showing_subprocess and log_failed_cmd: + # Then the subprocess streams haven't been logged to the + # console yet. + msg = make_subprocess_output_error( + cmd_args=cmd, + cwd=cwd, + lines=all_output, + exit_status=proc.returncode, + ) + subprocess_logger.error(msg) + raise InstallationSubprocessError(proc.returncode, command_desc) + elif on_returncode == "warn": + subprocess_logger.warning( + 'Command "%s" had error code %s in %s', + command_desc, + proc.returncode, + cwd, + ) + elif on_returncode == "ignore": + pass + else: + raise ValueError(f"Invalid value: on_returncode={on_returncode!r}") + return output + + +def runner_with_spinner_message(message: str) -> Callable[..., None]: + """Provide a subprocess_runner that shows a spinner message. + + Intended for use with for pep517's Pep517HookCaller. Thus, the runner has + an API that matches what's expected by Pep517HookCaller.subprocess_runner. + """ + + def runner( + cmd: List[str], + cwd: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + ) -> None: + with open_spinner(message) as spinner: + call_subprocess( + cmd, + cwd=cwd, + extra_environ=extra_environ, + spinner=spinner, + ) + + return runner diff --git a/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py b/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py new file mode 100644 index 00000000..442679a7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py @@ -0,0 +1,246 @@ +import errno +import itertools +import logging +import os.path +import tempfile +from contextlib import ExitStack, contextmanager +from typing import Any, Dict, Iterator, Optional, TypeVar, Union + +from pip._internal.utils.misc import enum, rmtree + +logger = logging.getLogger(__name__) + +_T = TypeVar("_T", bound="TempDirectory") + + +# Kinds of temporary directories. Only needed for ones that are +# globally-managed. +tempdir_kinds = enum( + BUILD_ENV="build-env", + EPHEM_WHEEL_CACHE="ephem-wheel-cache", + REQ_BUILD="req-build", +) + + +_tempdir_manager: Optional[ExitStack] = None + + +@contextmanager +def global_tempdir_manager() -> Iterator[None]: + global _tempdir_manager + with ExitStack() as stack: + old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack + try: + yield + finally: + _tempdir_manager = old_tempdir_manager + + +class TempDirectoryTypeRegistry: + """Manages temp directory behavior""" + + def __init__(self) -> None: + self._should_delete: Dict[str, bool] = {} + + def set_delete(self, kind: str, value: bool) -> None: + """Indicate whether a TempDirectory of the given kind should be + auto-deleted. + """ + self._should_delete[kind] = value + + def get_delete(self, kind: str) -> bool: + """Get configured auto-delete flag for a given TempDirectory type, + default True. + """ + return self._should_delete.get(kind, True) + + +_tempdir_registry: Optional[TempDirectoryTypeRegistry] = None + + +@contextmanager +def tempdir_registry() -> Iterator[TempDirectoryTypeRegistry]: + """Provides a scoped global tempdir registry that can be used to dictate + whether directories should be deleted. + """ + global _tempdir_registry + old_tempdir_registry = _tempdir_registry + _tempdir_registry = TempDirectoryTypeRegistry() + try: + yield _tempdir_registry + finally: + _tempdir_registry = old_tempdir_registry + + +class _Default: + pass + + +_default = _Default() + + +class TempDirectory: + """Helper class that owns and cleans up a temporary directory. + + This class can be used as a context manager or as an OO representation of a + temporary directory. + + Attributes: + path + Location to the created temporary directory + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + Methods: + cleanup() + Deletes the temporary directory + + When used as a context manager, if the delete attribute is True, on + exiting the context the temporary directory is deleted. + """ + + def __init__( + self, + path: Optional[str] = None, + delete: Union[bool, None, _Default] = _default, + kind: str = "temp", + globally_managed: bool = False, + ): + super().__init__() + + if delete is _default: + if path is not None: + # If we were given an explicit directory, resolve delete option + # now. + delete = False + else: + # Otherwise, we wait until cleanup and see what + # tempdir_registry says. + delete = None + + # The only time we specify path is in for editables where it + # is the value of the --src option. + if path is None: + path = self._create(kind) + + self._path = path + self._deleted = False + self.delete = delete + self.kind = kind + + if globally_managed: + assert _tempdir_manager is not None + _tempdir_manager.enter_context(self) + + @property + def path(self) -> str: + assert not self._deleted, f"Attempted to access deleted path: {self._path}" + return self._path + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.path!r}>" + + def __enter__(self: _T) -> _T: + return self + + def __exit__(self, exc: Any, value: Any, tb: Any) -> None: + if self.delete is not None: + delete = self.delete + elif _tempdir_registry: + delete = _tempdir_registry.get_delete(self.kind) + else: + delete = True + + if delete: + self.cleanup() + + def _create(self, kind: str) -> str: + """Create a temporary directory and store its path in self.path""" + # We realpath here because some systems have their default tmpdir + # symlinked to another directory. This tends to confuse build + # scripts, so we canonicalize the path by traversing potential + # symlinks here. + path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) + logger.debug("Created temporary directory: %s", path) + return path + + def cleanup(self) -> None: + """Remove the temporary directory created and reset state""" + self._deleted = True + if not os.path.exists(self._path): + return + rmtree(self._path) + + +class AdjacentTempDirectory(TempDirectory): + """Helper class that creates a temporary directory adjacent to a real one. + + Attributes: + original + The original directory to create a temp directory for. + path + After calling create() or entering, contains the full + path to the temporary directory. + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + """ + + # The characters that may be used to name the temp directory + # We always prepend a ~ and then rotate through these until + # a usable name is found. + # pkg_resources raises a different error for .dist-info folder + # with leading '-' and invalid metadata + LEADING_CHARS = "-~.=%0123456789" + + def __init__(self, original: str, delete: Optional[bool] = None) -> None: + self.original = original.rstrip("/\\") + super().__init__(delete=delete) + + @classmethod + def _generate_names(cls, name: str) -> Iterator[str]: + """Generates a series of temporary names. + + The algorithm replaces the leading characters in the name + with ones that are valid filesystem characters, but are not + valid package names (for both Python and pip definitions of + package). + """ + for i in range(1, len(name)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i - 1 + ): + new_name = "~" + "".join(candidate) + name[i:] + if new_name != name: + yield new_name + + # If we make it this far, we will have to make a longer name + for i in range(len(cls.LEADING_CHARS)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i + ): + new_name = "~" + "".join(candidate) + name + if new_name != name: + yield new_name + + def _create(self, kind: str) -> str: + root, name = os.path.split(self.original) + for candidate in self._generate_names(name): + path = os.path.join(root, candidate) + try: + os.mkdir(path) + except OSError as ex: + # Continue if the name exists already + if ex.errno != errno.EEXIST: + raise + else: + path = os.path.realpath(path) + break + else: + # Final fallback on the default behavior. + path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) + + logger.debug("Created temporary directory: %s", path) + return path diff --git a/venv/Lib/site-packages/pip/_internal/utils/unpacking.py b/venv/Lib/site-packages/pip/_internal/utils/unpacking.py new file mode 100644 index 00000000..5f63f974 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/unpacking.py @@ -0,0 +1,258 @@ +"""Utilities related archives. +""" + +import logging +import os +import shutil +import stat +import tarfile +import zipfile +from typing import Iterable, List, Optional +from zipfile import ZipInfo + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.filetypes import ( + BZ2_EXTENSIONS, + TAR_EXTENSIONS, + XZ_EXTENSIONS, + ZIP_EXTENSIONS, +) +from pip._internal.utils.misc import ensure_dir + +logger = logging.getLogger(__name__) + + +SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS + +try: + import bz2 # noqa + + SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS +except ImportError: + logger.debug("bz2 module is not available") + +try: + # Only for Python 3.3+ + import lzma # noqa + + SUPPORTED_EXTENSIONS += XZ_EXTENSIONS +except ImportError: + logger.debug("lzma module is not available") + + +def current_umask() -> int: + """Get the current umask which involves having to set it temporarily.""" + mask = os.umask(0) + os.umask(mask) + return mask + + +def split_leading_dir(path: str) -> List[str]: + path = path.lstrip("/").lstrip("\\") + if "/" in path and ( + ("\\" in path and path.find("/") < path.find("\\")) or "\\" not in path + ): + return path.split("/", 1) + elif "\\" in path: + return path.split("\\", 1) + else: + return [path, ""] + + +def has_leading_dir(paths: Iterable[str]) -> bool: + """Returns true if all the paths have the same leading path name + (i.e., everything is in one subdirectory in an archive)""" + common_prefix = None + for path in paths: + prefix, rest = split_leading_dir(path) + if not prefix: + return False + elif common_prefix is None: + common_prefix = prefix + elif prefix != common_prefix: + return False + return True + + +def is_within_directory(directory: str, target: str) -> bool: + """ + Return true if the absolute path of target is within the directory + """ + abs_directory = os.path.abspath(directory) + abs_target = os.path.abspath(target) + + prefix = os.path.commonprefix([abs_directory, abs_target]) + return prefix == abs_directory + + +def set_extracted_file_to_default_mode_plus_executable(path: str) -> None: + """ + Make file present at path have execute for user/group/world + (chmod +x) is no-op on windows per python docs + """ + os.chmod(path, (0o777 & ~current_umask() | 0o111)) + + +def zip_item_is_executable(info: ZipInfo) -> bool: + mode = info.external_attr >> 16 + # if mode and regular file and any execute permissions for + # user/group/world? + return bool(mode and stat.S_ISREG(mode) and mode & 0o111) + + +def unzip_file(filename: str, location: str, flatten: bool = True) -> None: + """ + Unzip the file (with path `filename`) to the destination `location`. All + files are written based on system defaults and umask (i.e. permissions are + not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied after being + written. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + zipfp = open(filename, "rb") + try: + zip = zipfile.ZipFile(zipfp, allowZip64=True) + leading = has_leading_dir(zip.namelist()) and flatten + for info in zip.infolist(): + name = info.filename + fn = name + if leading: + fn = split_leading_dir(name)[1] + fn = os.path.join(location, fn) + dir = os.path.dirname(fn) + if not is_within_directory(location, fn): + message = ( + "The zip file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError(message.format(filename, fn, location)) + if fn.endswith("/") or fn.endswith("\\"): + # A directory + ensure_dir(fn) + else: + ensure_dir(dir) + # Don't use read() to avoid allocating an arbitrarily large + # chunk of memory for the file's content + fp = zip.open(name) + try: + with open(fn, "wb") as destfp: + shutil.copyfileobj(fp, destfp) + finally: + fp.close() + if zip_item_is_executable(info): + set_extracted_file_to_default_mode_plus_executable(fn) + finally: + zipfp.close() + + +def untar_file(filename: str, location: str) -> None: + """ + Untar the file (with path `filename`) to the destination `location`. + All files are written based on system defaults and umask (i.e. permissions + are not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied after being + written. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + if filename.lower().endswith(".gz") or filename.lower().endswith(".tgz"): + mode = "r:gz" + elif filename.lower().endswith(BZ2_EXTENSIONS): + mode = "r:bz2" + elif filename.lower().endswith(XZ_EXTENSIONS): + mode = "r:xz" + elif filename.lower().endswith(".tar"): + mode = "r" + else: + logger.warning( + "Cannot determine compression type for file %s", + filename, + ) + mode = "r:*" + tar = tarfile.open(filename, mode, encoding="utf-8") + try: + leading = has_leading_dir([member.name for member in tar.getmembers()]) + for member in tar.getmembers(): + fn = member.name + if leading: + fn = split_leading_dir(fn)[1] + path = os.path.join(location, fn) + if not is_within_directory(location, path): + message = ( + "The tar file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError(message.format(filename, path, location)) + if member.isdir(): + ensure_dir(path) + elif member.issym(): + try: + # https://github.com/python/typeshed/issues/2673 + tar._extract_member(member, path) # type: ignore + except Exception as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + "In the tar file %s the member %s is invalid: %s", + filename, + member.name, + exc, + ) + continue + else: + try: + fp = tar.extractfile(member) + except (KeyError, AttributeError) as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + "In the tar file %s the member %s is invalid: %s", + filename, + member.name, + exc, + ) + continue + ensure_dir(os.path.dirname(path)) + assert fp is not None + with open(path, "wb") as destfp: + shutil.copyfileobj(fp, destfp) + fp.close() + # Update the timestamp (useful for cython compiled files) + tar.utime(member, path) + # member have any execute permissions for user/group/world? + if member.mode & 0o111: + set_extracted_file_to_default_mode_plus_executable(path) + finally: + tar.close() + + +def unpack_file( + filename: str, + location: str, + content_type: Optional[str] = None, +) -> None: + filename = os.path.realpath(filename) + if ( + content_type == "application/zip" + or filename.lower().endswith(ZIP_EXTENSIONS) + or zipfile.is_zipfile(filename) + ): + unzip_file(filename, location, flatten=not filename.endswith(".whl")) + elif ( + content_type == "application/x-gzip" + or tarfile.is_tarfile(filename) + or filename.lower().endswith(TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS) + ): + untar_file(filename, location) + else: + # FIXME: handle? + # FIXME: magic signatures? + logger.critical( + "Cannot unpack file %s (downloaded from %s, content-type: %s); " + "cannot detect archive format", + filename, + location, + content_type, + ) + raise InstallationError(f"Cannot determine archive format of {location}") diff --git a/venv/Lib/site-packages/pip/_internal/utils/urls.py b/venv/Lib/site-packages/pip/_internal/utils/urls.py new file mode 100644 index 00000000..6ba2e04f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/urls.py @@ -0,0 +1,62 @@ +import os +import string +import urllib.parse +import urllib.request +from typing import Optional + +from .compat import WINDOWS + + +def get_url_scheme(url: str) -> Optional[str]: + if ":" not in url: + return None + return url.split(":", 1)[0].lower() + + +def path_to_url(path: str) -> str: + """ + Convert a path to a file: URL. The path will be made absolute and have + quoted path parts. + """ + path = os.path.normpath(os.path.abspath(path)) + url = urllib.parse.urljoin("file:", urllib.request.pathname2url(path)) + return url + + +def url_to_path(url: str) -> str: + """ + Convert a file: URL to a path. + """ + assert url.startswith( + "file:" + ), f"You can only turn file: urls into filenames (not {url!r})" + + _, netloc, path, _, _ = urllib.parse.urlsplit(url) + + if not netloc or netloc == "localhost": + # According to RFC 8089, same as empty authority. + netloc = "" + elif WINDOWS: + # If we have a UNC path, prepend UNC share notation. + netloc = "\\\\" + netloc + else: + raise ValueError( + f"non-local file URIs are not supported on this platform: {url!r}" + ) + + path = urllib.request.url2pathname(netloc + path) + + # On Windows, urlsplit parses the path as something like "/C:/Users/foo". + # This creates issues for path-related functions like io.open(), so we try + # to detect and strip the leading slash. + if ( + WINDOWS + and not netloc # Not UNC. + and len(path) >= 3 + and path[0] == "/" # Leading slash to strip. + and path[1] in string.ascii_letters # Drive letter. + and path[2:4] in (":", ":/") # Colon + end of string, or colon + absolute path. + ): + path = path[1:] + + return path diff --git a/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py b/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py new file mode 100644 index 00000000..c926db4c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py @@ -0,0 +1,104 @@ +import logging +import os +import re +import site +import sys +from typing import List, Optional + +logger = logging.getLogger(__name__) +_INCLUDE_SYSTEM_SITE_PACKAGES_REGEX = re.compile( + r"include-system-site-packages\s*=\s*(?Ptrue|false)" +) + + +def _running_under_venv() -> bool: + """Checks if sys.base_prefix and sys.prefix match. + + This handles PEP 405 compliant virtual environments. + """ + return sys.prefix != getattr(sys, "base_prefix", sys.prefix) + + +def _running_under_regular_virtualenv() -> bool: + """Checks if sys.real_prefix is set. + + This handles virtual environments created with pypa's virtualenv. + """ + # pypa/virtualenv case + return hasattr(sys, "real_prefix") + + +def running_under_virtualenv() -> bool: + """Return True if we're running inside a virtualenv, False otherwise.""" + return _running_under_venv() or _running_under_regular_virtualenv() + + +def _get_pyvenv_cfg_lines() -> Optional[List[str]]: + """Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines + + Returns None, if it could not read/access the file. + """ + pyvenv_cfg_file = os.path.join(sys.prefix, "pyvenv.cfg") + try: + # Although PEP 405 does not specify, the built-in venv module always + # writes with UTF-8. (pypa/pip#8717) + with open(pyvenv_cfg_file, encoding="utf-8") as f: + return f.read().splitlines() # avoids trailing newlines + except OSError: + return None + + +def _no_global_under_venv() -> bool: + """Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion + + PEP 405 specifies that when system site-packages are not supposed to be + visible from a virtual environment, `pyvenv.cfg` must contain the following + line: + + include-system-site-packages = false + + Additionally, log a warning if accessing the file fails. + """ + cfg_lines = _get_pyvenv_cfg_lines() + if cfg_lines is None: + # We're not in a "sane" venv, so assume there is no system + # site-packages access (since that's PEP 405's default state). + logger.warning( + "Could not access 'pyvenv.cfg' despite a virtual environment " + "being active. Assuming global site-packages is not accessible " + "in this environment." + ) + return True + + for line in cfg_lines: + match = _INCLUDE_SYSTEM_SITE_PACKAGES_REGEX.match(line) + if match is not None and match.group("value") == "false": + return True + return False + + +def _no_global_under_regular_virtualenv() -> bool: + """Check if "no-global-site-packages.txt" exists beside site.py + + This mirrors logic in pypa/virtualenv for determining whether system + site-packages are visible in the virtual environment. + """ + site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) + no_global_site_packages_file = os.path.join( + site_mod_dir, + "no-global-site-packages.txt", + ) + return os.path.exists(no_global_site_packages_file) + + +def virtualenv_no_global() -> bool: + """Returns a boolean, whether running in venv with no system site-packages.""" + # PEP 405 compliance needs to be checked first since virtualenv >=20 would + # return True for both checks, but is only able to use the PEP 405 config. + if _running_under_venv(): + return _no_global_under_venv() + + if _running_under_regular_virtualenv(): + return _no_global_under_regular_virtualenv() + + return False diff --git a/venv/Lib/site-packages/pip/_internal/utils/wheel.py b/venv/Lib/site-packages/pip/_internal/utils/wheel.py new file mode 100644 index 00000000..03f00e40 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/wheel.py @@ -0,0 +1,182 @@ +"""Support functions for working with wheel files. +""" + +import logging +from email.message import Message +from email.parser import Parser +from typing import Dict, Tuple +from zipfile import BadZipFile, ZipFile + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.pkg_resources import DistInfoDistribution, Distribution + +from pip._internal.exceptions import UnsupportedWheel +from pip._internal.utils.pkg_resources import DictMetadata + +VERSION_COMPATIBLE = (1, 0) + + +logger = logging.getLogger(__name__) + + +class WheelMetadata(DictMetadata): + """Metadata provider that maps metadata decoding exceptions to our + internal exception type. + """ + + def __init__(self, metadata: Dict[str, bytes], wheel_name: str) -> None: + super().__init__(metadata) + self._wheel_name = wheel_name + + def get_metadata(self, name: str) -> str: + try: + return super().get_metadata(name) + except UnicodeDecodeError as e: + # Augment the default error with the origin of the file. + raise UnsupportedWheel( + f"Error decoding metadata for {self._wheel_name}: {e}" + ) + + +def pkg_resources_distribution_for_wheel( + wheel_zip: ZipFile, name: str, location: str +) -> Distribution: + """Get a pkg_resources distribution given a wheel. + + :raises UnsupportedWheel: on any errors + """ + info_dir, _ = parse_wheel(wheel_zip, name) + + metadata_files = [p for p in wheel_zip.namelist() if p.startswith(f"{info_dir}/")] + + metadata_text: Dict[str, bytes] = {} + for path in metadata_files: + _, metadata_name = path.split("/", 1) + + try: + metadata_text[metadata_name] = read_wheel_metadata_file(wheel_zip, path) + except UnsupportedWheel as e: + raise UnsupportedWheel("{} has an invalid wheel, {}".format(name, str(e))) + + metadata = WheelMetadata(metadata_text, location) + + return DistInfoDistribution(location=location, metadata=metadata, project_name=name) + + +def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]: + """Extract information from the provided wheel, ensuring it meets basic + standards. + + Returns the name of the .dist-info directory and the parsed WHEEL metadata. + """ + try: + info_dir = wheel_dist_info_dir(wheel_zip, name) + metadata = wheel_metadata(wheel_zip, info_dir) + version = wheel_version(metadata) + except UnsupportedWheel as e: + raise UnsupportedWheel("{} has an invalid wheel, {}".format(name, str(e))) + + check_compatibility(version, name) + + return info_dir, metadata + + +def wheel_dist_info_dir(source: ZipFile, name: str) -> str: + """Returns the name of the contained .dist-info directory. + + Raises AssertionError or UnsupportedWheel if not found, >1 found, or + it doesn't match the provided name. + """ + # Zip file path separators must be / + subdirs = {p.split("/", 1)[0] for p in source.namelist()} + + info_dirs = [s for s in subdirs if s.endswith(".dist-info")] + + if not info_dirs: + raise UnsupportedWheel(".dist-info directory not found") + + if len(info_dirs) > 1: + raise UnsupportedWheel( + "multiple .dist-info directories found: {}".format(", ".join(info_dirs)) + ) + + info_dir = info_dirs[0] + + info_dir_name = canonicalize_name(info_dir) + canonical_name = canonicalize_name(name) + if not info_dir_name.startswith(canonical_name): + raise UnsupportedWheel( + ".dist-info directory {!r} does not start with {!r}".format( + info_dir, canonical_name + ) + ) + + return info_dir + + +def read_wheel_metadata_file(source: ZipFile, path: str) -> bytes: + try: + return source.read(path) + # BadZipFile for general corruption, KeyError for missing entry, + # and RuntimeError for password-protected files + except (BadZipFile, KeyError, RuntimeError) as e: + raise UnsupportedWheel(f"could not read {path!r} file: {e!r}") + + +def wheel_metadata(source: ZipFile, dist_info_dir: str) -> Message: + """Return the WHEEL metadata of an extracted wheel, if possible. + Otherwise, raise UnsupportedWheel. + """ + path = f"{dist_info_dir}/WHEEL" + # Zip file path separators must be / + wheel_contents = read_wheel_metadata_file(source, path) + + try: + wheel_text = wheel_contents.decode() + except UnicodeDecodeError as e: + raise UnsupportedWheel(f"error decoding {path!r}: {e!r}") + + # FeedParser (used by Parser) does not raise any exceptions. The returned + # message may have .defects populated, but for backwards-compatibility we + # currently ignore them. + return Parser().parsestr(wheel_text) + + +def wheel_version(wheel_data: Message) -> Tuple[int, ...]: + """Given WHEEL metadata, return the parsed Wheel-Version. + Otherwise, raise UnsupportedWheel. + """ + version_text = wheel_data["Wheel-Version"] + if version_text is None: + raise UnsupportedWheel("WHEEL is missing Wheel-Version") + + version = version_text.strip() + + try: + return tuple(map(int, version.split("."))) + except ValueError: + raise UnsupportedWheel(f"invalid Wheel-Version: {version!r}") + + +def check_compatibility(version: Tuple[int, ...], name: str) -> None: + """Raises errors or warns if called with an incompatible Wheel-Version. + + pip should refuse to install a Wheel-Version that's a major series + ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when + installing a version only minor version ahead (e.g 1.2 > 1.1). + + version: a 2-tuple representing a Wheel-Version (Major, Minor) + name: name of wheel or package to raise exception about + + :raises UnsupportedWheel: when an incompatible Wheel-Version is given + """ + if version[0] > VERSION_COMPATIBLE[0]: + raise UnsupportedWheel( + "{}'s Wheel-Version ({}) is not compatible with this version " + "of pip".format(name, ".".join(map(str, version))) + ) + elif version > VERSION_COMPATIBLE: + logger.warning( + "Installing from a newer Wheel-Version (%s)", + ".".join(map(str, version)), + ) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/__init__.py b/venv/Lib/site-packages/pip/_internal/vcs/__init__.py new file mode 100644 index 00000000..b6beddbe --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/__init__.py @@ -0,0 +1,15 @@ +# Expose a limited set of classes and functions so callers outside of +# the vcs package don't need to import deeper than `pip._internal.vcs`. +# (The test directory may still need to import from a vcs sub-package.) +# Import all vcs modules to register each VCS in the VcsSupport object. +import pip._internal.vcs.bazaar +import pip._internal.vcs.git +import pip._internal.vcs.mercurial +import pip._internal.vcs.subversion # noqa: F401 +from pip._internal.vcs.versioncontrol import ( # noqa: F401 + RemoteNotFoundError, + RemoteNotValidError, + is_url, + make_vcs_requirement_url, + vcs, +) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py b/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py new file mode 100644 index 00000000..82e75954 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py @@ -0,0 +1,93 @@ +import logging +from typing import List, Optional, Tuple + +from pip._internal.utils.misc import HiddenText, display_path +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RevOptions, + VersionControl, + vcs, +) + +logger = logging.getLogger(__name__) + + +class Bazaar(VersionControl): + name = "bzr" + dirname = ".bzr" + repo_name = "branch" + schemes = ( + "bzr+http", + "bzr+https", + "bzr+ssh", + "bzr+sftp", + "bzr+ftp", + "bzr+lp", + "bzr+file", + ) + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return ["-r", rev] + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info( + "Checking out %s%s to %s", + url, + rev_display, + display_path(dest), + ) + cmd_args = make_command("branch", "-q", rev_options.to_args(), url, dest) + self.run_command(cmd_args) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command(make_command("switch", url), cwd=dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command("pull", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it + url, rev, user_pass = super().get_url_rev_and_auth(url) + if url.startswith("ssh://"): + url = "bzr+" + url + return url, rev, user_pass + + @classmethod + def get_remote_url(cls, location: str) -> str: + urls = cls.run_command( + ["info"], show_stdout=False, stdout_only=True, cwd=location + ) + for line in urls.splitlines(): + line = line.strip() + for x in ("checkout of branch: ", "parent branch: "): + if line.startswith(x): + repo = line.split(x)[1] + if cls._is_local_repository(repo): + return path_to_url(repo) + return repo + raise RemoteNotFoundError + + @classmethod + def get_revision(cls, location: str) -> str: + revision = cls.run_command( + ["revno"], + show_stdout=False, + stdout_only=True, + cwd=location, + ) + return revision.splitlines()[-1] + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + +vcs.register(Bazaar) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/git.py b/venv/Lib/site-packages/pip/_internal/vcs/git.py new file mode 100644 index 00000000..7a78ad12 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/git.py @@ -0,0 +1,513 @@ +import logging +import os.path +import pathlib +import re +import urllib.parse +import urllib.request +from typing import List, Optional, Tuple + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import HiddenText, display_path, hide_url +from pip._internal.utils.subprocess import make_command +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RemoteNotValidError, + RevOptions, + VersionControl, + find_path_to_project_root_from_repo_root, + vcs, +) + +urlsplit = urllib.parse.urlsplit +urlunsplit = urllib.parse.urlunsplit + + +logger = logging.getLogger(__name__) + + +GIT_VERSION_REGEX = re.compile( + r"^git version " # Prefix. + r"(\d+)" # Major. + r"\.(\d+)" # Dot, minor. + r"(?:\.(\d+))?" # Optional dot, patch. + r".*$" # Suffix, including any pre- and post-release segments we don't care about. +) + +HASH_REGEX = re.compile("^[a-fA-F0-9]{40}$") + +# SCP (Secure copy protocol) shorthand. e.g. 'git@example.com:foo/bar.git' +SCP_REGEX = re.compile( + r"""^ + # Optional user, e.g. 'git@' + (\w+@)? + # Server, e.g. 'github.com'. + ([^/:]+): + # The server-side path. e.g. 'user/project.git'. Must start with an + # alphanumeric character so as not to be confusable with a Windows paths + # like 'C:/foo/bar' or 'C:\foo\bar'. + (\w[^:]*) + $""", + re.VERBOSE, +) + + +def looks_like_hash(sha: str) -> bool: + return bool(HASH_REGEX.match(sha)) + + +class Git(VersionControl): + name = "git" + dirname = ".git" + repo_name = "clone" + schemes = ( + "git+http", + "git+https", + "git+ssh", + "git+git", + "git+file", + ) + # Prevent the user's environment variables from interfering with pip: + # https://github.com/pypa/pip/issues/1130 + unset_environ = ("GIT_DIR", "GIT_WORK_TREE") + default_arg_rev = "HEAD" + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return [rev] + + def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: + _, rev_options = self.get_url_rev_options(hide_url(url)) + if not rev_options.rev: + return False + if not self.is_commit_id_equal(dest, rev_options.rev): + # the current commit is different from rev, + # which means rev was something else than a commit hash + return False + # return False in the rare case rev is both a commit hash + # and a tag or a branch; we don't want to cache in that case + # because that branch/tag could point to something else in the future + is_tag_or_branch = bool(self.get_revision_sha(dest, rev_options.rev)[0]) + return not is_tag_or_branch + + def get_git_version(self) -> Tuple[int, ...]: + version = self.run_command(["version"], show_stdout=False, stdout_only=True) + match = GIT_VERSION_REGEX.match(version) + if not match: + logger.warning("Can't parse git version: %s", version) + return () + return tuple(int(c) for c in match.groups()) + + @classmethod + def get_current_branch(cls, location: str) -> Optional[str]: + """ + Return the current branch, or None if HEAD isn't at a branch + (e.g. detached HEAD). + """ + # git-symbolic-ref exits with empty stdout if "HEAD" is a detached + # HEAD rather than a symbolic ref. In addition, the -q causes the + # command to exit with status code 1 instead of 128 in this case + # and to suppress the message to stderr. + args = ["symbolic-ref", "-q", "HEAD"] + output = cls.run_command( + args, + extra_ok_returncodes=(1,), + show_stdout=False, + stdout_only=True, + cwd=location, + ) + ref = output.strip() + + if ref.startswith("refs/heads/"): + return ref[len("refs/heads/") :] + + return None + + @classmethod + def get_revision_sha(cls, dest: str, rev: str) -> Tuple[Optional[str], bool]: + """ + Return (sha_or_none, is_branch), where sha_or_none is a commit hash + if the revision names a remote branch or tag, otherwise None. + + Args: + dest: the repository directory. + rev: the revision name. + """ + # Pass rev to pre-filter the list. + output = cls.run_command( + ["show-ref", rev], + cwd=dest, + show_stdout=False, + stdout_only=True, + on_returncode="ignore", + ) + refs = {} + # NOTE: We do not use splitlines here since that would split on other + # unicode separators, which can be maliciously used to install a + # different revision. + for line in output.strip().split("\n"): + line = line.rstrip("\r") + if not line: + continue + try: + ref_sha, ref_name = line.split(" ", maxsplit=2) + except ValueError: + # Include the offending line to simplify troubleshooting if + # this error ever occurs. + raise ValueError(f"unexpected show-ref line: {line!r}") + + refs[ref_name] = ref_sha + + branch_ref = f"refs/remotes/origin/{rev}" + tag_ref = f"refs/tags/{rev}" + + sha = refs.get(branch_ref) + if sha is not None: + return (sha, True) + + sha = refs.get(tag_ref) + + return (sha, False) + + @classmethod + def _should_fetch(cls, dest: str, rev: str) -> bool: + """ + Return true if rev is a ref or is a commit that we don't have locally. + + Branches and tags are not considered in this method because they are + assumed to be always available locally (which is a normal outcome of + ``git clone`` and ``git fetch --tags``). + """ + if rev.startswith("refs/"): + # Always fetch remote refs. + return True + + if not looks_like_hash(rev): + # Git fetch would fail with abbreviated commits. + return False + + if cls.has_commit(dest, rev): + # Don't fetch if we have the commit locally. + return False + + return True + + @classmethod + def resolve_revision( + cls, dest: str, url: HiddenText, rev_options: RevOptions + ) -> RevOptions: + """ + Resolve a revision to a new RevOptions object with the SHA1 of the + branch, tag, or ref if found. + + Args: + rev_options: a RevOptions object. + """ + rev = rev_options.arg_rev + # The arg_rev property's implementation for Git ensures that the + # rev return value is always non-None. + assert rev is not None + + sha, is_branch = cls.get_revision_sha(dest, rev) + + if sha is not None: + rev_options = rev_options.make_new(sha) + rev_options.branch_name = rev if is_branch else None + + return rev_options + + # Do not show a warning for the common case of something that has + # the form of a Git commit hash. + if not looks_like_hash(rev): + logger.warning( + "Did not find branch or tag '%s', assuming revision or ref.", + rev, + ) + + if not cls._should_fetch(dest, rev): + return rev_options + + # fetch the requested revision + cls.run_command( + make_command("fetch", "-q", url, rev_options.to_args()), + cwd=dest, + ) + # Change the revision to the SHA of the ref we fetched + sha = cls.get_revision(dest, rev="FETCH_HEAD") + rev_options = rev_options.make_new(sha) + + return rev_options + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """ + Return whether the current commit hash equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + if not name: + # Then avoid an unnecessary subprocess call. + return False + + return cls.get_revision(dest) == name + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info("Cloning %s%s to %s", url, rev_display, display_path(dest)) + if self.get_git_version() >= (2, 17): + # Git added support for partial clone in 2.17 + # https://git-scm.com/docs/partial-clone + # Speeds up cloning by functioning without a complete copy of repository + self.run_command( + make_command( + "clone", + "--filter=blob:none", + "-q", + url, + dest, + ) + ) + else: + self.run_command(make_command("clone", "-q", url, dest)) + + if rev_options.rev: + # Then a specific revision was requested. + rev_options = self.resolve_revision(dest, url, rev_options) + branch_name = getattr(rev_options, "branch_name", None) + logger.debug("Rev options %s, branch_name %s", rev_options, branch_name) + if branch_name is None: + # Only do a checkout if the current commit id doesn't match + # the requested revision. + if not self.is_commit_id_equal(dest, rev_options.rev): + cmd_args = make_command( + "checkout", + "-q", + rev_options.to_args(), + ) + self.run_command(cmd_args, cwd=dest) + elif self.get_current_branch(dest) != branch_name: + # Then a specific branch was requested, and that branch + # is not yet checked out. + track_branch = f"origin/{branch_name}" + cmd_args = [ + "checkout", + "-b", + branch_name, + "--track", + track_branch, + ] + self.run_command(cmd_args, cwd=dest) + else: + sha = self.get_revision(dest) + rev_options = rev_options.make_new(sha) + + logger.info("Resolved %s to commit %s", url, rev_options.rev) + + #: repo may contain submodules + self.update_submodules(dest) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command( + make_command("config", "remote.origin.url", url), + cwd=dest, + ) + cmd_args = make_command("checkout", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + self.update_submodules(dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + # First fetch changes from the default remote + if self.get_git_version() >= (1, 9): + # fetch tags in addition to everything else + self.run_command(["fetch", "-q", "--tags"], cwd=dest) + else: + self.run_command(["fetch", "-q"], cwd=dest) + # Then reset to wanted revision (maybe even origin/master) + rev_options = self.resolve_revision(dest, url, rev_options) + cmd_args = make_command("reset", "--hard", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + #: update submodules + self.update_submodules(dest) + + @classmethod + def get_remote_url(cls, location: str) -> str: + """ + Return URL of the first remote encountered. + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + # We need to pass 1 for extra_ok_returncodes since the command + # exits with return code 1 if there are no matching lines. + stdout = cls.run_command( + ["config", "--get-regexp", r"remote\..*\.url"], + extra_ok_returncodes=(1,), + show_stdout=False, + stdout_only=True, + cwd=location, + ) + remotes = stdout.splitlines() + try: + found_remote = remotes[0] + except IndexError: + raise RemoteNotFoundError + + for remote in remotes: + if remote.startswith("remote.origin.url "): + found_remote = remote + break + url = found_remote.split(" ")[1] + return cls._git_remote_to_pip_url(url.strip()) + + @staticmethod + def _git_remote_to_pip_url(url: str) -> str: + """ + Convert a remote url from what git uses to what pip accepts. + + There are 3 legal forms **url** may take: + + 1. A fully qualified url: ssh://git@example.com/foo/bar.git + 2. A local project.git folder: /path/to/bare/repository.git + 3. SCP shorthand for form 1: git@example.com:foo/bar.git + + Form 1 is output as-is. Form 2 must be converted to URI and form 3 must + be converted to form 1. + + See the corresponding test test_git_remote_url_to_pip() for examples of + sample inputs/outputs. + """ + if re.match(r"\w+://", url): + # This is already valid. Pass it though as-is. + return url + if os.path.exists(url): + # A local bare remote (git clone --mirror). + # Needs a file:// prefix. + return pathlib.PurePath(url).as_uri() + scp_match = SCP_REGEX.match(url) + if scp_match: + # Add an ssh:// prefix and replace the ':' with a '/'. + return scp_match.expand(r"ssh://\1\2/\3") + # Otherwise, bail out. + raise RemoteNotValidError(url) + + @classmethod + def has_commit(cls, location: str, rev: str) -> bool: + """ + Check if rev is a commit that is available in the local repository. + """ + try: + cls.run_command( + ["rev-parse", "-q", "--verify", "sha^" + rev], + cwd=location, + log_failed_cmd=False, + ) + except InstallationError: + return False + else: + return True + + @classmethod + def get_revision(cls, location: str, rev: Optional[str] = None) -> str: + if rev is None: + rev = "HEAD" + current_rev = cls.run_command( + ["rev-parse", rev], + show_stdout=False, + stdout_only=True, + cwd=location, + ) + return current_rev.strip() + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + # find the repo root + git_dir = cls.run_command( + ["rev-parse", "--git-dir"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + if not os.path.isabs(git_dir): + git_dir = os.path.join(location, git_dir) + repo_root = os.path.abspath(os.path.join(git_dir, "..")) + return find_path_to_project_root_from_repo_root(location, repo_root) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + """ + Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. + That's required because although they use SSH they sometimes don't + work with a ssh:// scheme (e.g. GitHub). But we need a scheme for + parsing. Hence we remove it again afterwards and return it as a stub. + """ + # Works around an apparent Git bug + # (see https://article.gmane.org/gmane.comp.version-control.git/146500) + scheme, netloc, path, query, fragment = urlsplit(url) + if scheme.endswith("file"): + initial_slashes = path[: -len(path.lstrip("/"))] + newpath = initial_slashes + urllib.request.url2pathname(path).replace( + "\\", "/" + ).lstrip("/") + after_plus = scheme.find("+") + 1 + url = scheme[:after_plus] + urlunsplit( + (scheme[after_plus:], netloc, newpath, query, fragment), + ) + + if "://" not in url: + assert "file:" not in url + url = url.replace("git+", "git+ssh://") + url, rev, user_pass = super().get_url_rev_and_auth(url) + url = url.replace("ssh://", "") + else: + url, rev, user_pass = super().get_url_rev_and_auth(url) + + return url, rev, user_pass + + @classmethod + def update_submodules(cls, location: str) -> None: + if not os.path.exists(os.path.join(location, ".gitmodules")): + return + cls.run_command( + ["submodule", "update", "--init", "--recursive", "-q"], + cwd=location, + ) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + loc = super().get_repository_root(location) + if loc: + return loc + try: + r = cls.run_command( + ["rev-parse", "--show-toplevel"], + cwd=location, + show_stdout=False, + stdout_only=True, + on_returncode="raise", + log_failed_cmd=False, + ) + except BadCommand: + logger.debug( + "could not determine if %s is under git control " + "because git is not available", + location, + ) + return None + except InstallationError: + return None + return os.path.normpath(r.rstrip("\r\n")) + + @staticmethod + def should_add_vcs_url_prefix(repo_url: str) -> bool: + """In either https or ssh form, requirements must be prefixed with git+.""" + return True + + +vcs.register(Git) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py b/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py new file mode 100644 index 00000000..410c79d9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py @@ -0,0 +1,153 @@ +import configparser +import logging +import os +from typing import List, Optional + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import HiddenText, display_path +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import ( + RevOptions, + VersionControl, + find_path_to_project_root_from_repo_root, + vcs, +) + +logger = logging.getLogger(__name__) + + +class Mercurial(VersionControl): + name = "hg" + dirname = ".hg" + repo_name = "clone" + schemes = ( + "hg+file", + "hg+http", + "hg+https", + "hg+ssh", + "hg+static-http", + ) + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return [rev] + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info( + "Cloning hg %s%s to %s", + url, + rev_display, + display_path(dest), + ) + self.run_command(make_command("clone", "--noupdate", "-q", url, dest)) + self.run_command( + make_command("update", "-q", rev_options.to_args()), + cwd=dest, + ) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + repo_config = os.path.join(dest, self.dirname, "hgrc") + config = configparser.RawConfigParser() + try: + config.read(repo_config) + config.set("paths", "default", url.secret) + with open(repo_config, "w") as config_file: + config.write(config_file) + except (OSError, configparser.NoSectionError) as exc: + logger.warning("Could not switch Mercurial repository to %s: %s", url, exc) + else: + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command(["pull", "-q"], cwd=dest) + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_remote_url(cls, location: str) -> str: + url = cls.run_command( + ["showconfig", "paths.default"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + if cls._is_local_repository(url): + url = path_to_url(url) + return url.strip() + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the repository-local changeset revision number, as an integer. + """ + current_revision = cls.run_command( + ["parents", "--template={rev}"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + return current_revision + + @classmethod + def get_requirement_revision(cls, location: str) -> str: + """ + Return the changeset identification hash, as a 40-character + hexadecimal string + """ + current_rev_hash = cls.run_command( + ["parents", "--template={node}"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + return current_rev_hash + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + # find the repo root + repo_root = cls.run_command( + ["root"], show_stdout=False, stdout_only=True, cwd=location + ).strip() + if not os.path.isabs(repo_root): + repo_root = os.path.abspath(os.path.join(location, repo_root)) + return find_path_to_project_root_from_repo_root(location, repo_root) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + loc = super().get_repository_root(location) + if loc: + return loc + try: + r = cls.run_command( + ["root"], + cwd=location, + show_stdout=False, + stdout_only=True, + on_returncode="raise", + log_failed_cmd=False, + ) + except BadCommand: + logger.debug( + "could not determine if %s is under hg control " + "because hg is not available", + location, + ) + return None + except InstallationError: + return None + return os.path.normpath(r.rstrip("\r\n")) + + +vcs.register(Mercurial) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/subversion.py b/venv/Lib/site-packages/pip/_internal/vcs/subversion.py new file mode 100644 index 00000000..b5b6fd5c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/subversion.py @@ -0,0 +1,318 @@ +import logging +import os +import re +from typing import List, Optional, Tuple + +from pip._internal.utils.misc import ( + HiddenText, + display_path, + is_console_interactive, + is_installable_dir, + split_auth_from_netloc, +) +from pip._internal.utils.subprocess import CommandArgs, make_command +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RevOptions, + VersionControl, + vcs, +) + +logger = logging.getLogger(__name__) + +_svn_xml_url_re = re.compile('url="([^"]+)"') +_svn_rev_re = re.compile(r'committed-rev="(\d+)"') +_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"') +_svn_info_xml_url_re = re.compile(r"(.*)") + + +class Subversion(VersionControl): + name = "svn" + dirname = ".svn" + repo_name = "checkout" + schemes = ("svn+ssh", "svn+http", "svn+https", "svn+svn", "svn+file") + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: + return True + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return ["-r", rev] + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the maximum revision for all files under a given location + """ + # Note: taken from setuptools.command.egg_info + revision = 0 + + for base, dirs, _ in os.walk(location): + if cls.dirname not in dirs: + dirs[:] = [] + continue # no sense walking uncontrolled subdirs + dirs.remove(cls.dirname) + entries_fn = os.path.join(base, cls.dirname, "entries") + if not os.path.exists(entries_fn): + # FIXME: should we warn? + continue + + dirurl, localrev = cls._get_svn_url_rev(base) + + if base == location: + assert dirurl is not None + base = dirurl + "/" # save the root url + elif not dirurl or not dirurl.startswith(base): + dirs[:] = [] + continue # not part of the same svn tree, skip it + revision = max(revision, localrev) + return str(revision) + + @classmethod + def get_netloc_and_auth( + cls, netloc: str, scheme: str + ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: + """ + This override allows the auth information to be passed to svn via the + --username and --password options instead of via the URL. + """ + if scheme == "ssh": + # The --username and --password options can't be used for + # svn+ssh URLs, so keep the auth information in the URL. + return super().get_netloc_and_auth(netloc, scheme) + + return split_auth_from_netloc(netloc) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it + url, rev, user_pass = super().get_url_rev_and_auth(url) + if url.startswith("ssh://"): + url = "svn+" + url + return url, rev, user_pass + + @staticmethod + def make_rev_args( + username: Optional[str], password: Optional[HiddenText] + ) -> CommandArgs: + extra_args: CommandArgs = [] + if username: + extra_args += ["--username", username] + if password: + extra_args += ["--password", password] + + return extra_args + + @classmethod + def get_remote_url(cls, location: str) -> str: + # In cases where the source is in a subdirectory, we have to look up in + # the location until we find a valid project root. + orig_location = location + while not is_installable_dir(location): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding a Python project. + logger.warning( + "Could not find Python project for directory %s (tried all " + "parent directories)", + orig_location, + ) + raise RemoteNotFoundError + + url, _rev = cls._get_svn_url_rev(location) + if url is None: + raise RemoteNotFoundError + + return url + + @classmethod + def _get_svn_url_rev(cls, location: str) -> Tuple[Optional[str], int]: + from pip._internal.exceptions import InstallationError + + entries_path = os.path.join(location, cls.dirname, "entries") + if os.path.exists(entries_path): + with open(entries_path) as f: + data = f.read() + else: # subversion >= 1.7 does not have the 'entries' file + data = "" + + url = None + if data.startswith("8") or data.startswith("9") or data.startswith("10"): + entries = list(map(str.splitlines, data.split("\n\x0c\n"))) + del entries[0][0] # get rid of the '8' + url = entries[0][3] + revs = [int(d[9]) for d in entries if len(d) > 9 and d[9]] + [0] + elif data.startswith("= 1.7 + # Note that using get_remote_call_options is not necessary here + # because `svn info` is being run against a local directory. + # We don't need to worry about making sure interactive mode + # is being used to prompt for passwords, because passwords + # are only potentially needed for remote server requests. + xml = cls.run_command( + ["info", "--xml", location], + show_stdout=False, + stdout_only=True, + ) + match = _svn_info_xml_url_re.search(xml) + assert match is not None + url = match.group(1) + revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)] + except InstallationError: + url, revs = None, [] + + if revs: + rev = max(revs) + else: + rev = 0 + + return url, rev + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + def __init__(self, use_interactive: bool = None) -> None: + if use_interactive is None: + use_interactive = is_console_interactive() + self.use_interactive = use_interactive + + # This member is used to cache the fetched version of the current + # ``svn`` client. + # Special value definitions: + # None: Not evaluated yet. + # Empty tuple: Could not parse version. + self._vcs_version: Optional[Tuple[int, ...]] = None + + super().__init__() + + def call_vcs_version(self) -> Tuple[int, ...]: + """Query the version of the currently installed Subversion client. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + # Example versions: + # svn, version 1.10.3 (r1842928) + # compiled Feb 25 2019, 14:20:39 on x86_64-apple-darwin17.0.0 + # svn, version 1.7.14 (r1542130) + # compiled Mar 28 2018, 08:49:13 on x86_64-pc-linux-gnu + # svn, version 1.12.0-SlikSvn (SlikSvn/1.12.0) + # compiled May 28 2019, 13:44:56 on x86_64-microsoft-windows6.2 + version_prefix = "svn, version " + version = self.run_command(["--version"], show_stdout=False, stdout_only=True) + if not version.startswith(version_prefix): + return () + + version = version[len(version_prefix) :].split()[0] + version_list = version.partition("-")[0].split(".") + try: + parsed_version = tuple(map(int, version_list)) + except ValueError: + return () + + return parsed_version + + def get_vcs_version(self) -> Tuple[int, ...]: + """Return the version of the currently installed Subversion client. + + If the version of the Subversion client has already been queried, + a cached value will be used. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + if self._vcs_version is not None: + # Use cached version, if available. + # If parsing the version failed previously (empty tuple), + # do not attempt to parse it again. + return self._vcs_version + + vcs_version = self.call_vcs_version() + self._vcs_version = vcs_version + return vcs_version + + def get_remote_call_options(self) -> CommandArgs: + """Return options to be used on calls to Subversion that contact the server. + + These options are applicable for the following ``svn`` subcommands used + in this class. + + - checkout + - switch + - update + + :return: A list of command line arguments to pass to ``svn``. + """ + if not self.use_interactive: + # --non-interactive switch is available since Subversion 0.14.4. + # Subversion < 1.8 runs in interactive mode by default. + return ["--non-interactive"] + + svn_version = self.get_vcs_version() + # By default, Subversion >= 1.8 runs in non-interactive mode if + # stdin is not a TTY. Since that is how pip invokes SVN, in + # call_subprocess(), pip must pass --force-interactive to ensure + # the user can be prompted for a password, if required. + # SVN added the --force-interactive option in SVN 1.8. Since + # e.g. RHEL/CentOS 7, which is supported until 2024, ships with + # SVN 1.7, pip should continue to support SVN 1.7. Therefore, pip + # can't safely add the option if the SVN version is < 1.8 (or unknown). + if svn_version >= (1, 8): + return ["--force-interactive"] + + return [] + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + rev_display = rev_options.to_display() + logger.info( + "Checking out %s%s to %s", + url, + rev_display, + display_path(dest), + ) + cmd_args = make_command( + "checkout", + "-q", + self.get_remote_call_options(), + rev_options.to_args(), + url, + dest, + ) + self.run_command(cmd_args) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command( + "switch", + self.get_remote_call_options(), + rev_options.to_args(), + url, + dest, + ) + self.run_command(cmd_args) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command( + "update", + self.get_remote_call_options(), + rev_options.to_args(), + dest, + ) + self.run_command(cmd_args) + + +vcs.register(Subversion) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py b/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py new file mode 100644 index 00000000..1139051f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py @@ -0,0 +1,693 @@ +"""Handles all VCS (version control) support""" + +import logging +import os +import shutil +import sys +import urllib.parse +from typing import ( + TYPE_CHECKING, + Any, + Dict, + Iterable, + Iterator, + List, + Mapping, + Optional, + Tuple, + Type, + Union, +) + +from pip._internal.cli.spinners import SpinnerInterface +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import ( + HiddenText, + ask_path_exists, + backup_dir, + display_path, + hide_url, + hide_value, + is_installable_dir, + rmtree, +) +from pip._internal.utils.subprocess import CommandArgs, call_subprocess, make_command +from pip._internal.utils.urls import get_url_scheme + +if TYPE_CHECKING: + # Literal was introduced in Python 3.8. + # + # TODO: Remove `if TYPE_CHECKING` when dropping support for Python 3.7. + from typing import Literal + + +__all__ = ["vcs"] + + +logger = logging.getLogger(__name__) + +AuthInfo = Tuple[Optional[str], Optional[str]] + + +def is_url(name: str) -> bool: + """ + Return true if the name looks like a URL. + """ + scheme = get_url_scheme(name) + if scheme is None: + return False + return scheme in ["http", "https", "file", "ftp"] + vcs.all_schemes + + +def make_vcs_requirement_url( + repo_url: str, rev: str, project_name: str, subdir: Optional[str] = None +) -> str: + """ + Return the URL for a VCS requirement. + + Args: + repo_url: the remote VCS url, with any needed VCS prefix (e.g. "git+"). + project_name: the (unescaped) project name. + """ + egg_project_name = project_name.replace("-", "_") + req = f"{repo_url}@{rev}#egg={egg_project_name}" + if subdir: + req += f"&subdirectory={subdir}" + + return req + + +def find_path_to_project_root_from_repo_root( + location: str, repo_root: str +) -> Optional[str]: + """ + Find the the Python project's root by searching up the filesystem from + `location`. Return the path to project root relative to `repo_root`. + Return None if the project root is `repo_root`, or cannot be found. + """ + # find project root. + orig_location = location + while not is_installable_dir(location): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding a Python project. + logger.warning( + "Could not find a Python project for directory %s (tried all " + "parent directories)", + orig_location, + ) + return None + + if os.path.samefile(repo_root, location): + return None + + return os.path.relpath(location, repo_root) + + +class RemoteNotFoundError(Exception): + pass + + +class RemoteNotValidError(Exception): + def __init__(self, url: str): + super().__init__(url) + self.url = url + + +class RevOptions: + + """ + Encapsulates a VCS-specific revision to install, along with any VCS + install options. + + Instances of this class should be treated as if immutable. + """ + + def __init__( + self, + vc_class: Type["VersionControl"], + rev: Optional[str] = None, + extra_args: Optional[CommandArgs] = None, + ) -> None: + """ + Args: + vc_class: a VersionControl subclass. + rev: the name of the revision to install. + extra_args: a list of extra options. + """ + if extra_args is None: + extra_args = [] + + self.extra_args = extra_args + self.rev = rev + self.vc_class = vc_class + self.branch_name: Optional[str] = None + + def __repr__(self) -> str: + return f"" + + @property + def arg_rev(self) -> Optional[str]: + if self.rev is None: + return self.vc_class.default_arg_rev + + return self.rev + + def to_args(self) -> CommandArgs: + """ + Return the VCS-specific command arguments. + """ + args: CommandArgs = [] + rev = self.arg_rev + if rev is not None: + args += self.vc_class.get_base_rev_args(rev) + args += self.extra_args + + return args + + def to_display(self) -> str: + if not self.rev: + return "" + + return f" (to revision {self.rev})" + + def make_new(self, rev: str) -> "RevOptions": + """ + Make a copy of the current instance, but with a new rev. + + Args: + rev: the name of the revision for the new object. + """ + return self.vc_class.make_rev_options(rev, extra_args=self.extra_args) + + +class VcsSupport: + _registry: Dict[str, "VersionControl"] = {} + schemes = ["ssh", "git", "hg", "bzr", "sftp", "svn"] + + def __init__(self) -> None: + # Register more schemes with urlparse for various version control + # systems + urllib.parse.uses_netloc.extend(self.schemes) + super().__init__() + + def __iter__(self) -> Iterator[str]: + return self._registry.__iter__() + + @property + def backends(self) -> List["VersionControl"]: + return list(self._registry.values()) + + @property + def dirnames(self) -> List[str]: + return [backend.dirname for backend in self.backends] + + @property + def all_schemes(self) -> List[str]: + schemes: List[str] = [] + for backend in self.backends: + schemes.extend(backend.schemes) + return schemes + + def register(self, cls: Type["VersionControl"]) -> None: + if not hasattr(cls, "name"): + logger.warning("Cannot register VCS %s", cls.__name__) + return + if cls.name not in self._registry: + self._registry[cls.name] = cls() + logger.debug("Registered VCS backend: %s", cls.name) + + def unregister(self, name: str) -> None: + if name in self._registry: + del self._registry[name] + + def get_backend_for_dir(self, location: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object if a repository of that type is found + at the given directory. + """ + vcs_backends = {} + for vcs_backend in self._registry.values(): + repo_path = vcs_backend.get_repository_root(location) + if not repo_path: + continue + logger.debug("Determine that %s uses VCS: %s", location, vcs_backend.name) + vcs_backends[repo_path] = vcs_backend + + if not vcs_backends: + return None + + # Choose the VCS in the inner-most directory. Since all repository + # roots found here would be either `location` or one of its + # parents, the longest path should have the most path components, + # i.e. the backend representing the inner-most repository. + inner_most_repo_path = max(vcs_backends, key=len) + return vcs_backends[inner_most_repo_path] + + def get_backend_for_scheme(self, scheme: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object or None. + """ + for vcs_backend in self._registry.values(): + if scheme in vcs_backend.schemes: + return vcs_backend + return None + + def get_backend(self, name: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object or None. + """ + name = name.lower() + return self._registry.get(name) + + +vcs = VcsSupport() + + +class VersionControl: + name = "" + dirname = "" + repo_name = "" + # List of supported schemes for this Version Control + schemes: Tuple[str, ...] = () + # Iterable of environment variable names to pass to call_subprocess(). + unset_environ: Tuple[str, ...] = () + default_arg_rev: Optional[str] = None + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: + """ + Return whether the vcs prefix (e.g. "git+") should be added to a + repository's remote url when used in a requirement. + """ + return not remote_url.lower().startswith(f"{cls.name}:") + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + return None + + @classmethod + def get_requirement_revision(cls, repo_dir: str) -> str: + """ + Return the revision string that should be used in a requirement. + """ + return cls.get_revision(repo_dir) + + @classmethod + def get_src_requirement(cls, repo_dir: str, project_name: str) -> str: + """ + Return the requirement string to use to redownload the files + currently at the given repository directory. + + Args: + project_name: the (unescaped) project name. + + The return value has a form similar to the following: + + {repository_url}@{revision}#egg={project_name} + """ + repo_url = cls.get_remote_url(repo_dir) + + if cls.should_add_vcs_url_prefix(repo_url): + repo_url = f"{cls.name}+{repo_url}" + + revision = cls.get_requirement_revision(repo_dir) + subdir = cls.get_subdirectory(repo_dir) + req = make_vcs_requirement_url(repo_url, revision, project_name, subdir=subdir) + + return req + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + """ + Return the base revision arguments for a vcs command. + + Args: + rev: the name of a revision to install. Cannot be None. + """ + raise NotImplementedError + + def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: + """ + Return true if the commit hash checked out at dest matches + the revision in url. + + Always return False, if the VCS does not support immutable commit + hashes. + + This method does not check if there are local uncommitted changes + in dest after checkout, as pip currently has no use case for that. + """ + return False + + @classmethod + def make_rev_options( + cls, rev: Optional[str] = None, extra_args: Optional[CommandArgs] = None + ) -> RevOptions: + """ + Return a RevOptions object. + + Args: + rev: the name of a revision to install. + extra_args: a list of extra options. + """ + return RevOptions(cls, rev, extra_args=extra_args) + + @classmethod + def _is_local_repository(cls, repo: str) -> bool: + """ + posix absolute paths start with os.path.sep, + win32 ones start with drive (like c:\\folder) + """ + drive, tail = os.path.splitdrive(repo) + return repo.startswith(os.path.sep) or bool(drive) + + @classmethod + def get_netloc_and_auth( + cls, netloc: str, scheme: str + ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: + """ + Parse the repository URL's netloc, and return the new netloc to use + along with auth information. + + Args: + netloc: the original repository URL netloc. + scheme: the repository URL's scheme without the vcs prefix. + + This is mainly for the Subversion class to override, so that auth + information can be provided via the --username and --password options + instead of through the URL. For other subclasses like Git without + such an option, auth information must stay in the URL. + + Returns: (netloc, (username, password)). + """ + return netloc, (None, None) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + """ + Parse the repository URL to use, and return the URL, revision, + and auth info to use. + + Returns: (url, rev, (username, password)). + """ + scheme, netloc, path, query, frag = urllib.parse.urlsplit(url) + if "+" not in scheme: + raise ValueError( + "Sorry, {!r} is a malformed VCS url. " + "The format is +://, " + "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp".format(url) + ) + # Remove the vcs prefix. + scheme = scheme.split("+", 1)[1] + netloc, user_pass = cls.get_netloc_and_auth(netloc, scheme) + rev = None + if "@" in path: + path, rev = path.rsplit("@", 1) + if not rev: + raise InstallationError( + "The URL {!r} has an empty revision (after @) " + "which is not supported. Include a revision after @ " + "or remove @ from the URL.".format(url) + ) + url = urllib.parse.urlunsplit((scheme, netloc, path, query, "")) + return url, rev, user_pass + + @staticmethod + def make_rev_args( + username: Optional[str], password: Optional[HiddenText] + ) -> CommandArgs: + """ + Return the RevOptions "extra arguments" to use in obtain(). + """ + return [] + + def get_url_rev_options(self, url: HiddenText) -> Tuple[HiddenText, RevOptions]: + """ + Return the URL and RevOptions object to use in obtain(), + as a tuple (url, rev_options). + """ + secret_url, rev, user_pass = self.get_url_rev_and_auth(url.secret) + username, secret_password = user_pass + password: Optional[HiddenText] = None + if secret_password is not None: + password = hide_value(secret_password) + extra_args = self.make_rev_args(username, password) + rev_options = self.make_rev_options(rev, extra_args=extra_args) + + return hide_url(secret_url), rev_options + + @staticmethod + def normalize_url(url: str) -> str: + """ + Normalize a URL for comparison by unquoting it and removing any + trailing slash. + """ + return urllib.parse.unquote(url).rstrip("/") + + @classmethod + def compare_urls(cls, url1: str, url2: str) -> bool: + """ + Compare two repo URLs for identity, ignoring incidental differences. + """ + return cls.normalize_url(url1) == cls.normalize_url(url2) + + def fetch_new(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Fetch a revision from a repository, in the case that this is the + first fetch from the repository. + + Args: + dest: the directory to fetch the repository to. + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Switch the repo at ``dest`` to point to ``URL``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Update an already-existing repo to the given ``rev_options``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """ + Return whether the id of the current commit equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + raise NotImplementedError + + def obtain(self, dest: str, url: HiddenText) -> None: + """ + Install or update in editable mode the package represented by this + VersionControl object. + + :param dest: the repository directory in which to install or update. + :param url: the repository URL starting with a vcs prefix. + """ + url, rev_options = self.get_url_rev_options(url) + + if not os.path.exists(dest): + self.fetch_new(dest, url, rev_options) + return + + rev_display = rev_options.to_display() + if self.is_repository_directory(dest): + existing_url = self.get_remote_url(dest) + if self.compare_urls(existing_url, url.secret): + logger.debug( + "%s in %s exists, and has correct URL (%s)", + self.repo_name.title(), + display_path(dest), + url, + ) + if not self.is_commit_id_equal(dest, rev_options.rev): + logger.info( + "Updating %s %s%s", + display_path(dest), + self.repo_name, + rev_display, + ) + self.update(dest, url, rev_options) + else: + logger.info("Skipping because already up-to-date.") + return + + logger.warning( + "%s %s in %s exists with URL %s", + self.name, + self.repo_name, + display_path(dest), + existing_url, + ) + prompt = ("(s)witch, (i)gnore, (w)ipe, (b)ackup ", ("s", "i", "w", "b")) + else: + logger.warning( + "Directory %s already exists, and is not a %s %s.", + dest, + self.name, + self.repo_name, + ) + # https://github.com/python/mypy/issues/1174 + prompt = ("(i)gnore, (w)ipe, (b)ackup ", ("i", "w", "b")) # type: ignore + + logger.warning( + "The plan is to install the %s repository %s", + self.name, + url, + ) + response = ask_path_exists("What to do? {}".format(prompt[0]), prompt[1]) + + if response == "a": + sys.exit(-1) + + if response == "w": + logger.warning("Deleting %s", display_path(dest)) + rmtree(dest) + self.fetch_new(dest, url, rev_options) + return + + if response == "b": + dest_dir = backup_dir(dest) + logger.warning("Backing up %s to %s", display_path(dest), dest_dir) + shutil.move(dest, dest_dir) + self.fetch_new(dest, url, rev_options) + return + + # Do nothing if the response is "i". + if response == "s": + logger.info( + "Switching %s %s to %s%s", + self.repo_name, + display_path(dest), + url, + rev_display, + ) + self.switch(dest, url, rev_options) + + def unpack(self, location: str, url: HiddenText) -> None: + """ + Clean up current location and download the url repository + (and vcs infos) into location + + :param url: the repository URL starting with a vcs prefix. + """ + if os.path.exists(location): + rmtree(location) + self.obtain(location, url=url) + + @classmethod + def get_remote_url(cls, location: str) -> str: + """ + Return the url used at location + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + raise NotImplementedError + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the current commit id of the files at the given location. + """ + raise NotImplementedError + + @classmethod + def run_command( + cls, + cmd: Union[List[str], CommandArgs], + show_stdout: bool = True, + cwd: Optional[str] = None, + on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", + extra_ok_returncodes: Optional[Iterable[int]] = None, + command_desc: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + spinner: Optional[SpinnerInterface] = None, + log_failed_cmd: bool = True, + stdout_only: bool = False, + ) -> str: + """ + Run a VCS subcommand + This is simply a wrapper around call_subprocess that adds the VCS + command name, and checks that the VCS is available + """ + cmd = make_command(cls.name, *cmd) + try: + return call_subprocess( + cmd, + show_stdout, + cwd, + on_returncode=on_returncode, + extra_ok_returncodes=extra_ok_returncodes, + command_desc=command_desc, + extra_environ=extra_environ, + unset_environ=cls.unset_environ, + spinner=spinner, + log_failed_cmd=log_failed_cmd, + stdout_only=stdout_only, + ) + except FileNotFoundError: + # errno.ENOENT = no such file or directory + # In other words, the VCS executable isn't available + raise BadCommand( + f"Cannot find command {cls.name!r} - do you have " + f"{cls.name!r} installed and in your PATH?" + ) + except PermissionError: + # errno.EACCES = Permission denied + # This error occurs, for instance, when the command is installed + # only for another user. So, the current user don't have + # permission to call the other user command. + raise BadCommand( + f"No permission to execute {cls.name!r} - install it " + f"locally, globally (ask admin), or check your PATH. " + f"See possible solutions at " + f"https://pip.pypa.io/en/latest/reference/pip_freeze/" + f"#fixing-permission-denied." + ) + + @classmethod + def is_repository_directory(cls, path: str) -> bool: + """ + Return whether a directory path is a repository directory. + """ + logger.debug("Checking in %s for %s (%s)...", path, cls.dirname, cls.name) + return os.path.exists(os.path.join(path, cls.dirname)) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + """ + Return the "root" (top-level) directory controlled by the vcs, + or `None` if the directory is not in any. + + It is meant to be overridden to implement smarter detection + mechanisms for specific vcs. + + This can do more than is_repository_directory() alone. For + example, the Git override checks that Git is actually available. + """ + if cls.is_repository_directory(location): + return location + return None diff --git a/venv/Lib/site-packages/pip/_internal/wheel_builder.py b/venv/Lib/site-packages/pip/_internal/wheel_builder.py new file mode 100644 index 00000000..a9123a0f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/wheel_builder.py @@ -0,0 +1,375 @@ +"""Orchestrator for building wheels from InstallRequirements. +""" + +import logging +import os.path +import re +import shutil +from typing import Any, Callable, Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name, canonicalize_version +from pip._vendor.packaging.version import InvalidVersion, Version + +from pip._internal.cache import WheelCache +from pip._internal.exceptions import InvalidWheelFilename, UnsupportedWheel +from pip._internal.metadata import FilesystemWheel, get_wheel_distribution +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.build.wheel import build_wheel_pep517 +from pip._internal.operations.build.wheel_editable import build_wheel_editable +from pip._internal.operations.build.wheel_legacy import build_wheel_legacy +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir, hash_file, is_wheel_installed +from pip._internal.utils.setuptools_build import make_setuptools_clean_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + +_egg_info_re = re.compile(r"([a-z0-9_.]+)-([a-z0-9_.!+-]+)", re.IGNORECASE) + +BinaryAllowedPredicate = Callable[[InstallRequirement], bool] +BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]] + + +def _contains_egg_info(s: str) -> bool: + """Determine whether the string looks like an egg_info. + + :param s: The string to parse. E.g. foo-2.1 + """ + return bool(_egg_info_re.search(s)) + + +def _should_build( + req: InstallRequirement, + need_wheel: bool, + check_binary_allowed: BinaryAllowedPredicate, +) -> bool: + """Return whether an InstallRequirement should be built into a wheel.""" + if req.constraint: + # never build requirements that are merely constraints + return False + if req.is_wheel: + if need_wheel: + logger.info( + "Skipping %s, due to already being wheel.", + req.name, + ) + return False + + if need_wheel: + # i.e. pip wheel, not pip install + return True + + # From this point, this concerns the pip install command only + # (need_wheel=False). + + if not req.source_dir: + return False + + if req.editable: + # we only build PEP 660 editable requirements + return req.supports_pyproject_editable() + + if req.use_pep517: + return True + + if not check_binary_allowed(req): + logger.info( + "Skipping wheel build for %s, due to binaries being disabled for it.", + req.name, + ) + return False + + if not is_wheel_installed(): + # we don't build legacy requirements if wheel is not installed + logger.info( + "Using legacy 'setup.py install' for %s, " + "since package 'wheel' is not installed.", + req.name, + ) + return False + + return True + + +def should_build_for_wheel_command( + req: InstallRequirement, +) -> bool: + return _should_build(req, need_wheel=True, check_binary_allowed=_always_true) + + +def should_build_for_install_command( + req: InstallRequirement, + check_binary_allowed: BinaryAllowedPredicate, +) -> bool: + return _should_build( + req, need_wheel=False, check_binary_allowed=check_binary_allowed + ) + + +def _should_cache( + req: InstallRequirement, +) -> Optional[bool]: + """ + Return whether a built InstallRequirement can be stored in the persistent + wheel cache, assuming the wheel cache is available, and _should_build() + has determined a wheel needs to be built. + """ + if req.editable or not req.source_dir: + # never cache editable requirements + return False + + if req.link and req.link.is_vcs: + # VCS checkout. Do not cache + # unless it points to an immutable commit hash. + assert not req.editable + assert req.source_dir + vcs_backend = vcs.get_backend_for_scheme(req.link.scheme) + assert vcs_backend + if vcs_backend.is_immutable_rev_checkout(req.link.url, req.source_dir): + return True + return False + + assert req.link + base, ext = req.link.splitext() + if _contains_egg_info(base): + return True + + # Otherwise, do not cache. + return False + + +def _get_cache_dir( + req: InstallRequirement, + wheel_cache: WheelCache, +) -> str: + """Return the persistent or temporary cache directory where the built + wheel need to be stored. + """ + cache_available = bool(wheel_cache.cache_dir) + assert req.link + if cache_available and _should_cache(req): + cache_dir = wheel_cache.get_path_for_link(req.link) + else: + cache_dir = wheel_cache.get_ephem_path_for_link(req.link) + return cache_dir + + +def _always_true(_: Any) -> bool: + return True + + +def _verify_one(req: InstallRequirement, wheel_path: str) -> None: + canonical_name = canonicalize_name(req.name or "") + w = Wheel(os.path.basename(wheel_path)) + if canonicalize_name(w.name) != canonical_name: + raise InvalidWheelFilename( + "Wheel has unexpected file name: expected {!r}, " + "got {!r}".format(canonical_name, w.name), + ) + dist = get_wheel_distribution(FilesystemWheel(wheel_path), canonical_name) + dist_verstr = str(dist.version) + if canonicalize_version(dist_verstr) != canonicalize_version(w.version): + raise InvalidWheelFilename( + "Wheel has unexpected file name: expected {!r}, " + "got {!r}".format(dist_verstr, w.version), + ) + metadata_version_value = dist.metadata_version + if metadata_version_value is None: + raise UnsupportedWheel("Missing Metadata-Version") + try: + metadata_version = Version(metadata_version_value) + except InvalidVersion: + msg = f"Invalid Metadata-Version: {metadata_version_value}" + raise UnsupportedWheel(msg) + if metadata_version >= Version("1.2") and not isinstance(dist.version, Version): + raise UnsupportedWheel( + "Metadata 1.2 mandates PEP 440 version, " + "but {!r} is not".format(dist_verstr) + ) + + +def _build_one( + req: InstallRequirement, + output_dir: str, + verify: bool, + build_options: List[str], + global_options: List[str], + editable: bool, +) -> Optional[str]: + """Build one wheel. + + :return: The filename of the built wheel, or None if the build failed. + """ + artifact = "editable" if editable else "wheel" + try: + ensure_dir(output_dir) + except OSError as e: + logger.warning( + "Building %s for %s failed: %s", + artifact, + req.name, + e, + ) + return None + + # Install build deps into temporary directory (PEP 518) + with req.build_env: + wheel_path = _build_one_inside_env( + req, output_dir, build_options, global_options, editable + ) + if wheel_path and verify: + try: + _verify_one(req, wheel_path) + except (InvalidWheelFilename, UnsupportedWheel) as e: + logger.warning("Built %s for %s is invalid: %s", artifact, req.name, e) + return None + return wheel_path + + +def _build_one_inside_env( + req: InstallRequirement, + output_dir: str, + build_options: List[str], + global_options: List[str], + editable: bool, +) -> Optional[str]: + with TempDirectory(kind="wheel") as temp_dir: + assert req.name + if req.use_pep517: + assert req.metadata_directory + assert req.pep517_backend + if global_options: + logger.warning( + "Ignoring --global-option when building %s using PEP 517", req.name + ) + if build_options: + logger.warning( + "Ignoring --build-option when building %s using PEP 517", req.name + ) + if editable: + wheel_path = build_wheel_editable( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_pep517( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_legacy( + name=req.name, + setup_py_path=req.setup_py_path, + source_dir=req.unpacked_source_directory, + global_options=global_options, + build_options=build_options, + tempd=temp_dir.path, + ) + + if wheel_path is not None: + wheel_name = os.path.basename(wheel_path) + dest_path = os.path.join(output_dir, wheel_name) + try: + wheel_hash, length = hash_file(wheel_path) + shutil.move(wheel_path, dest_path) + logger.info( + "Created wheel for %s: filename=%s size=%d sha256=%s", + req.name, + wheel_name, + length, + wheel_hash.hexdigest(), + ) + logger.info("Stored in directory: %s", output_dir) + return dest_path + except Exception as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, + e, + ) + # Ignore return, we can't do anything else useful. + if not req.use_pep517: + _clean_one_legacy(req, global_options) + return None + + +def _clean_one_legacy(req: InstallRequirement, global_options: List[str]) -> bool: + clean_args = make_setuptools_clean_args( + req.setup_py_path, + global_options=global_options, + ) + + logger.info("Running setup.py clean for %s", req.name) + try: + call_subprocess(clean_args, cwd=req.source_dir) + return True + except Exception: + logger.error("Failed cleaning build dir for %s", req.name) + return False + + +def build( + requirements: Iterable[InstallRequirement], + wheel_cache: WheelCache, + verify: bool, + build_options: List[str], + global_options: List[str], +) -> BuildResult: + """Build wheels. + + :return: The list of InstallRequirement that succeeded to build and + the list of InstallRequirement that failed to build. + """ + if not requirements: + return [], [] + + # Build the wheels. + logger.info( + "Building wheels for collected packages: %s", + ", ".join(req.name for req in requirements), # type: ignore + ) + + with indent_log(): + build_successes, build_failures = [], [] + for req in requirements: + assert req.name + cache_dir = _get_cache_dir(req, wheel_cache) + wheel_file = _build_one( + req, + cache_dir, + verify, + build_options, + global_options, + req.editable and req.permit_editable_wheels, + ) + if wheel_file: + # Update the link for this. + req.link = Link(path_to_url(wheel_file)) + req.local_file_path = req.link.file_path + assert req.link.is_wheel + build_successes.append(req) + else: + build_failures.append(req) + + # notify success/failure + if build_successes: + logger.info( + "Successfully built %s", + " ".join([req.name for req in build_successes]), # type: ignore + ) + if build_failures: + logger.info( + "Failed to build %s", + " ".join([req.name for req in build_failures]), # type: ignore + ) + # Return a list of requirements that failed to build + return build_successes, build_failures diff --git a/venv/Lib/site-packages/pip/_vendor/__init__.py b/venv/Lib/site-packages/pip/_vendor/__init__.py new file mode 100644 index 00000000..3843cb09 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/__init__.py @@ -0,0 +1,111 @@ +""" +pip._vendor is for vendoring dependencies of pip to prevent needing pip to +depend on something external. + +Files inside of pip._vendor should be considered immutable and should only be +updated to versions from upstream. +""" +from __future__ import absolute_import + +import glob +import os.path +import sys + +# Downstream redistributors which have debundled our dependencies should also +# patch this value to be true. This will trigger the additional patching +# to cause things like "six" to be available as pip. +DEBUNDLED = False + +# By default, look in this directory for a bunch of .whl files which we will +# add to the beginning of sys.path before attempting to import anything. This +# is done to support downstream re-distributors like Debian and Fedora who +# wish to create their own Wheels for our dependencies to aid in debundling. +WHEEL_DIR = os.path.abspath(os.path.dirname(__file__)) + + +# Define a small helper function to alias our vendored modules to the real ones +# if the vendored ones do not exist. This idea of this was taken from +# https://github.com/kennethreitz/requests/pull/2567. +def vendored(modulename): + vendored_name = "{0}.{1}".format(__name__, modulename) + + try: + __import__(modulename, globals(), locals(), level=0) + except ImportError: + # We can just silently allow import failures to pass here. If we + # got to this point it means that ``import pip._vendor.whatever`` + # failed and so did ``import whatever``. Since we're importing this + # upfront in an attempt to alias imports, not erroring here will + # just mean we get a regular import error whenever pip *actually* + # tries to import one of these modules to use it, which actually + # gives us a better error message than we would have otherwise + # gotten. + pass + else: + sys.modules[vendored_name] = sys.modules[modulename] + base, head = vendored_name.rsplit(".", 1) + setattr(sys.modules[base], head, sys.modules[modulename]) + + +# If we're operating in a debundled setup, then we want to go ahead and trigger +# the aliasing of our vendored libraries as well as looking for wheels to add +# to our sys.path. This will cause all of this code to be a no-op typically +# however downstream redistributors can enable it in a consistent way across +# all platforms. +if DEBUNDLED: + # Actually look inside of WHEEL_DIR to find .whl files and add them to the + # front of our sys.path. + sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path + + # Actually alias all of our vendored dependencies. + vendored("cachecontrol") + vendored("certifi") + vendored("colorama") + vendored("distlib") + vendored("distro") + vendored("html5lib") + vendored("six") + vendored("six.moves") + vendored("six.moves.urllib") + vendored("six.moves.urllib.parse") + vendored("packaging") + vendored("packaging.version") + vendored("packaging.specifiers") + vendored("pep517") + vendored("pkg_resources") + vendored("platformdirs") + vendored("progress") + vendored("requests") + vendored("requests.exceptions") + vendored("requests.packages") + vendored("requests.packages.urllib3") + vendored("requests.packages.urllib3._collections") + vendored("requests.packages.urllib3.connection") + vendored("requests.packages.urllib3.connectionpool") + vendored("requests.packages.urllib3.contrib") + vendored("requests.packages.urllib3.contrib.ntlmpool") + vendored("requests.packages.urllib3.contrib.pyopenssl") + vendored("requests.packages.urllib3.exceptions") + vendored("requests.packages.urllib3.fields") + vendored("requests.packages.urllib3.filepost") + vendored("requests.packages.urllib3.packages") + vendored("requests.packages.urllib3.packages.ordered_dict") + vendored("requests.packages.urllib3.packages.six") + vendored("requests.packages.urllib3.packages.ssl_match_hostname") + vendored("requests.packages.urllib3.packages.ssl_match_hostname." + "_implementation") + vendored("requests.packages.urllib3.poolmanager") + vendored("requests.packages.urllib3.request") + vendored("requests.packages.urllib3.response") + vendored("requests.packages.urllib3.util") + vendored("requests.packages.urllib3.util.connection") + vendored("requests.packages.urllib3.util.request") + vendored("requests.packages.urllib3.util.response") + vendored("requests.packages.urllib3.util.retry") + vendored("requests.packages.urllib3.util.ssl_") + vendored("requests.packages.urllib3.util.timeout") + vendored("requests.packages.urllib3.util.url") + vendored("resolvelib") + vendored("tenacity") + vendored("tomli") + vendored("urllib3") diff --git a/venv/Lib/site-packages/pip/_vendor/appdirs.py b/venv/Lib/site-packages/pip/_vendor/appdirs.py new file mode 100644 index 00000000..4b5c38bb --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/appdirs.py @@ -0,0 +1,552 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (c) 2005-2010 ActiveState Software Inc. +# Copyright (c) 2013 Eddy Petrișor + +"""Utilities for determining application-specific dirs. + +See for details and usage. +""" +# Dev Notes: +# - MSDN on where to store app data files: +# http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120 +# - macOS: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html +# - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + +__version_info__ = (1, 4, 0) +__version__ = '.'.join(map(str, __version_info__)) + + +import sys +import os + +PY3 = sys.version_info[0] == 3 + +if PY3: + unicode = str + +if sys.platform.startswith('java'): + import platform + os_name = platform.java_ver()[3][0] + if os_name.startswith('Windows'): # "Windows XP", "Windows 7", etc. + system = 'win32' + elif os_name.startswith('Mac'): # "macOS", etc. + system = 'darwin' + else: # "Linux", "SunOS", "FreeBSD", etc. + # Setting this to "linux2" is not ideal, but only Windows or Mac + # are actually checked for and the rest of the module expects + # *sys.platform* style strings. + system = 'linux2' +else: + system = sys.platform + + + +def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user data directories are: + macOS: ~/Library/Application Support/ + Unix: ~/.local/share/ # or in $XDG_DATA_HOME, if defined + Win XP (not roaming): C:\Documents and Settings\\Application Data\\ + Win XP (roaming): C:\Documents and Settings\\Local Settings\Application Data\\ + Win 7 (not roaming): C:\Users\\AppData\Local\\ + Win 7 (roaming): C:\Users\\AppData\Roaming\\ + + For Unix, we follow the XDG spec and support $XDG_DATA_HOME. + That means, by default "~/.local/share/". + """ + if system == "win32": + if appauthor is None: + appauthor = appname + const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" + path = os.path.normpath(_get_win_folder(const)) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('~/Library/Application Support/') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_DATA_HOME', os.path.expanduser("~/.local/share")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_data_dir(appname=None, appauthor=None, version=None, multipath=False): + """Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of data dirs should be + returned. By default, the first item from XDG_DATA_DIRS is + returned, or '/usr/local/share/', + if XDG_DATA_DIRS is not set + + Typical user data directories are: + macOS: /Library/Application Support/ + Unix: /usr/local/share/ or /usr/share/ + Win XP: C:\Documents and Settings\All Users\Application Data\\ + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + Win 7: C:\ProgramData\\ # Hidden, but writeable on Win 7. + + For Unix, this is using the $XDG_DATA_DIRS[0] default. + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('/Library/Application Support') + if appname: + path = os.path.join(path, appname) + else: + # XDG default for $XDG_DATA_DIRS + # only first, if multipath is False + path = os.getenv('XDG_DATA_DIRS', + os.pathsep.join(['/usr/local/share', '/usr/share'])) + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.sep.join([x, appname]) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + if appname and version: + path = os.path.join(path, version) + return path + + +def user_config_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific config dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user data directories are: + macOS: same as user_data_dir + Unix: ~/.config/ # or in $XDG_CONFIG_HOME, if defined + Win *: same as user_data_dir + + For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. + That means, by deafult "~/.config/". + """ + if system in ["win32", "darwin"]: + path = user_data_dir(appname, appauthor, None, roaming) + else: + path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_config_dir(appname=None, appauthor=None, version=None, multipath=False): + """Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of config dirs should be + returned. By default, the first item from XDG_CONFIG_DIRS is + returned, or '/etc/xdg/', if XDG_CONFIG_DIRS is not set + + Typical user data directories are: + macOS: same as site_data_dir + Unix: /etc/xdg/ or $XDG_CONFIG_DIRS[i]/ for each value in + $XDG_CONFIG_DIRS + Win *: same as site_data_dir + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + + For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system in ["win32", "darwin"]: + path = site_data_dir(appname, appauthor) + if appname and version: + path = os.path.join(path, version) + else: + # XDG default for $XDG_CONFIG_DIRS + # only first, if multipath is False + path = os.getenv('XDG_CONFIG_DIRS', '/etc/xdg') + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.sep.join([x, appname]) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + +def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific cache dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Cache" to the base app data dir for Windows. See + discussion below. + + Typical user cache directories are: + macOS: ~/Library/Caches/ + Unix: ~/.cache/ (XDG default) + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Cache + Vista: C:\Users\\AppData\Local\\\Cache + + On Windows the only suggestion in the MSDN docs is that local settings go in + the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming + app data dir (the default returned by `user_data_dir` above). Apps typically + put cache data somewhere *under* the given dir here. Some examples: + ...\Mozilla\Firefox\Profiles\\Cache + ...\Acme\SuperApp\Cache\1.0 + OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. + This can be disabled with the `opinion=False` option. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + if opinion: + path = os.path.join(path, "Cache") + elif system == 'darwin': + path = os.path.expanduser('~/Library/Caches') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific log dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Logs" to the base app data dir for Windows, and "log" to the + base cache dir for Unix. See discussion below. + + Typical user cache directories are: + macOS: ~/Library/Logs/ + Unix: ~/.cache//log # or under $XDG_CACHE_HOME if defined + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Logs + Vista: C:\Users\\AppData\Local\\\Logs + + On Windows the only suggestion in the MSDN docs is that local settings + go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in + examples of what some windows apps use for a logs dir.) + + OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA` + value for Windows and appends "log" to the user cache dir for Unix. + This can be disabled with the `opinion=False` option. + """ + if system == "darwin": + path = os.path.join( + os.path.expanduser('~/Library/Logs'), + appname) + elif system == "win32": + path = user_data_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "Logs") + else: + path = user_cache_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "log") + if appname and version: + path = os.path.join(path, version) + return path + + +class AppDirs(object): + """Convenience wrapper for getting application dirs.""" + def __init__(self, appname, appauthor=None, version=None, roaming=False, + multipath=False): + self.appname = appname + self.appauthor = appauthor + self.version = version + self.roaming = roaming + self.multipath = multipath + + @property + def user_data_dir(self): + return user_data_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_data_dir(self): + return site_data_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_config_dir(self): + return user_config_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_config_dir(self): + return site_config_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_cache_dir(self): + return user_cache_dir(self.appname, self.appauthor, + version=self.version) + + @property + def user_log_dir(self): + return user_log_dir(self.appname, self.appauthor, + version=self.version) + + +#---- internal support stuff + +def _get_win_folder_from_registry(csidl_name): + """This is a fallback technique at best. I'm not sure if using the + registry for this guarantees us the correct answer for all CSIDL_* + names. + """ + import _winreg + + shell_folder_name = { + "CSIDL_APPDATA": "AppData", + "CSIDL_COMMON_APPDATA": "Common AppData", + "CSIDL_LOCAL_APPDATA": "Local AppData", + }[csidl_name] + + key = _winreg.OpenKey( + _winreg.HKEY_CURRENT_USER, + r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" + ) + dir, type = _winreg.QueryValueEx(key, shell_folder_name) + return dir + + +def _get_win_folder_with_pywin32(csidl_name): + from win32com.shell import shellcon, shell + dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0) + # Try to make this a unicode path because SHGetFolderPath does + # not return unicode strings when there is unicode data in the + # path. + try: + dir = unicode(dir) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + try: + import win32api + dir = win32api.GetShortPathName(dir) + except ImportError: + pass + except UnicodeError: + pass + return dir + + +def _get_win_folder_with_ctypes(csidl_name): + import ctypes + + csidl_const = { + "CSIDL_APPDATA": 26, + "CSIDL_COMMON_APPDATA": 35, + "CSIDL_LOCAL_APPDATA": 28, + }[csidl_name] + + buf = ctypes.create_unicode_buffer(1024) + ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in buf: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf2 = ctypes.create_unicode_buffer(1024) + if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): + buf = buf2 + + return buf.value + +def _get_win_folder_with_jna(csidl_name): + import array + from com.sun import jna + from com.sun.jna.platform import win32 + + buf_size = win32.WinDef.MAX_PATH * 2 + buf = array.zeros('c', buf_size) + shell = win32.Shell32.INSTANCE + shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf = array.zeros('c', buf_size) + kernel = win32.Kernel32.INSTANCE + if kernal.GetShortPathName(dir, buf, buf_size): + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + return dir + +if system == "win32": + try: + import win32com.shell + _get_win_folder = _get_win_folder_with_pywin32 + except ImportError: + try: + from ctypes import windll + _get_win_folder = _get_win_folder_with_ctypes + except ImportError: + try: + import com.sun.jna + _get_win_folder = _get_win_folder_with_jna + except ImportError: + _get_win_folder = _get_win_folder_from_registry + + +#---- self test code + +if __name__ == "__main__": + appname = "MyApp" + appauthor = "MyCompany" + + props = ("user_data_dir", "site_data_dir", + "user_config_dir", "site_config_dir", + "user_cache_dir", "user_log_dir") + + print("-- app dirs (with optional 'version')") + dirs = AppDirs(appname, appauthor, version="1.0") + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'version')") + dirs = AppDirs(appname, appauthor) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'appauthor')") + dirs = AppDirs(appname) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (with disabled 'appauthor')") + dirs = AppDirs(appname, appauthor=False) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py new file mode 100644 index 00000000..a1bbbbe3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py @@ -0,0 +1,11 @@ +"""CacheControl import Interface. + +Make it easy to import from cachecontrol without long namespaces. +""" +__author__ = "Eric Larson" +__email__ = "eric@ionrock.org" +__version__ = "0.12.6" + +from .wrapper import CacheControl +from .adapter import CacheControlAdapter +from .controller import CacheController diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py new file mode 100644 index 00000000..f1e0ad94 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py @@ -0,0 +1,57 @@ +import logging + +from pip._vendor import requests + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.cache import DictCache +from pip._vendor.cachecontrol.controller import logger + +from argparse import ArgumentParser + + +def setup_logging(): + logger.setLevel(logging.DEBUG) + handler = logging.StreamHandler() + logger.addHandler(handler) + + +def get_session(): + adapter = CacheControlAdapter( + DictCache(), cache_etags=True, serializer=None, heuristic=None + ) + sess = requests.Session() + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + sess.cache_controller = adapter.controller + return sess + + +def get_args(): + parser = ArgumentParser() + parser.add_argument("url", help="The URL to try and cache") + return parser.parse_args() + + +def main(args=None): + args = get_args() + sess = get_session() + + # Make a request to get a response + resp = sess.get(args.url) + + # Turn on logging + setup_logging() + + # try setting the cache + sess.cache_controller.cache_response(resp.request, resp.raw) + + # Now try to get it + if sess.cache_controller.cached_request(resp.request): + print("Cached!") + else: + print("Not cached :(") + + +if __name__ == "__main__": + main() diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py new file mode 100644 index 00000000..815650e8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py @@ -0,0 +1,133 @@ +import types +import functools +import zlib + +from pip._vendor.requests.adapters import HTTPAdapter + +from .controller import CacheController +from .cache import DictCache +from .filewrapper import CallbackFileWrapper + + +class CacheControlAdapter(HTTPAdapter): + invalidating_methods = {"PUT", "DELETE"} + + def __init__( + self, + cache=None, + cache_etags=True, + controller_class=None, + serializer=None, + heuristic=None, + cacheable_methods=None, + *args, + **kw + ): + super(CacheControlAdapter, self).__init__(*args, **kw) + self.cache = DictCache() if cache is None else cache + self.heuristic = heuristic + self.cacheable_methods = cacheable_methods or ("GET",) + + controller_factory = controller_class or CacheController + self.controller = controller_factory( + self.cache, cache_etags=cache_etags, serializer=serializer + ) + + def send(self, request, cacheable_methods=None, **kw): + """ + Send a request. Use the request information to see if it + exists in the cache and cache the response if we need to and can. + """ + cacheable = cacheable_methods or self.cacheable_methods + if request.method in cacheable: + try: + cached_response = self.controller.cached_request(request) + except zlib.error: + cached_response = None + if cached_response: + return self.build_response(request, cached_response, from_cache=True) + + # check for etags and add headers if appropriate + request.headers.update(self.controller.conditional_headers(request)) + + resp = super(CacheControlAdapter, self).send(request, **kw) + + return resp + + def build_response( + self, request, response, from_cache=False, cacheable_methods=None + ): + """ + Build a response by making a request or using the cache. + + This will end up calling send and returning a potentially + cached response + """ + cacheable = cacheable_methods or self.cacheable_methods + if not from_cache and request.method in cacheable: + # Check for any heuristics that might update headers + # before trying to cache. + if self.heuristic: + response = self.heuristic.apply(response) + + # apply any expiration heuristics + if response.status == 304: + # We must have sent an ETag request. This could mean + # that we've been expired already or that we simply + # have an etag. In either case, we want to try and + # update the cache if that is the case. + cached_response = self.controller.update_cached_response( + request, response + ) + + if cached_response is not response: + from_cache = True + + # We are done with the server response, read a + # possible response body (compliant servers will + # not return one, but we cannot be 100% sure) and + # release the connection back to the pool. + response.read(decode_content=False) + response.release_conn() + + response = cached_response + + # We always cache the 301 responses + elif response.status == 301: + self.controller.cache_response(request, response) + else: + # Wrap the response file with a wrapper that will cache the + # response when the stream has been consumed. + response._fp = CallbackFileWrapper( + response._fp, + functools.partial( + self.controller.cache_response, request, response + ), + ) + if response.chunked: + super_update_chunk_length = response._update_chunk_length + + def _update_chunk_length(self): + super_update_chunk_length() + if self.chunk_left == 0: + self._fp._close() + + response._update_chunk_length = types.MethodType( + _update_chunk_length, response + ) + + resp = super(CacheControlAdapter, self).build_response(request, response) + + # See if we should invalidate the cache. + if request.method in self.invalidating_methods and resp.ok: + cache_url = self.controller.cache_url(request.url) + self.cache.delete(cache_url) + + # Give the request a from_cache attr to let people use it + resp.from_cache = from_cache + + return resp + + def close(self): + self.cache.close() + super(CacheControlAdapter, self).close() diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py new file mode 100644 index 00000000..94e07732 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py @@ -0,0 +1,39 @@ +""" +The cache object API for implementing caches. The default is a thread +safe in-memory dictionary. +""" +from threading import Lock + + +class BaseCache(object): + + def get(self, key): + raise NotImplementedError() + + def set(self, key, value): + raise NotImplementedError() + + def delete(self, key): + raise NotImplementedError() + + def close(self): + pass + + +class DictCache(BaseCache): + + def __init__(self, init_dict=None): + self.lock = Lock() + self.data = init_dict or {} + + def get(self, key): + return self.data.get(key, None) + + def set(self, key, value): + with self.lock: + self.data.update({key: value}) + + def delete(self, key): + with self.lock: + if key in self.data: + self.data.pop(key) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py new file mode 100644 index 00000000..0e1658fa --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py @@ -0,0 +1,2 @@ +from .file_cache import FileCache # noqa +from .redis_cache import RedisCache # noqa diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py new file mode 100644 index 00000000..607b9452 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py @@ -0,0 +1,146 @@ +import hashlib +import os +from textwrap import dedent + +from ..cache import BaseCache +from ..controller import CacheController + +try: + FileNotFoundError +except NameError: + # py2.X + FileNotFoundError = (IOError, OSError) + + +def _secure_open_write(filename, fmode): + # We only want to write to this file, so open it in write only mode + flags = os.O_WRONLY + + # os.O_CREAT | os.O_EXCL will fail if the file already exists, so we only + # will open *new* files. + # We specify this because we want to ensure that the mode we pass is the + # mode of the file. + flags |= os.O_CREAT | os.O_EXCL + + # Do not follow symlinks to prevent someone from making a symlink that + # we follow and insecurely open a cache file. + if hasattr(os, "O_NOFOLLOW"): + flags |= os.O_NOFOLLOW + + # On Windows we'll mark this file as binary + if hasattr(os, "O_BINARY"): + flags |= os.O_BINARY + + # Before we open our file, we want to delete any existing file that is + # there + try: + os.remove(filename) + except (IOError, OSError): + # The file must not exist already, so we can just skip ahead to opening + pass + + # Open our file, the use of os.O_CREAT | os.O_EXCL will ensure that if a + # race condition happens between the os.remove and this line, that an + # error will be raised. Because we utilize a lockfile this should only + # happen if someone is attempting to attack us. + fd = os.open(filename, flags, fmode) + try: + return os.fdopen(fd, "wb") + + except: + # An error occurred wrapping our FD in a file object + os.close(fd) + raise + + +class FileCache(BaseCache): + + def __init__( + self, + directory, + forever=False, + filemode=0o0600, + dirmode=0o0700, + use_dir_lock=None, + lock_class=None, + ): + + if use_dir_lock is not None and lock_class is not None: + raise ValueError("Cannot use use_dir_lock and lock_class together") + + try: + from lockfile import LockFile + from lockfile.mkdirlockfile import MkdirLockFile + except ImportError: + notice = dedent( + """ + NOTE: In order to use the FileCache you must have + lockfile installed. You can install it via pip: + pip install lockfile + """ + ) + raise ImportError(notice) + + else: + if use_dir_lock: + lock_class = MkdirLockFile + + elif lock_class is None: + lock_class = LockFile + + self.directory = directory + self.forever = forever + self.filemode = filemode + self.dirmode = dirmode + self.lock_class = lock_class + + @staticmethod + def encode(x): + return hashlib.sha224(x.encode()).hexdigest() + + def _fn(self, name): + # NOTE: This method should not change as some may depend on it. + # See: https://github.com/ionrock/cachecontrol/issues/63 + hashed = self.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key): + name = self._fn(key) + try: + with open(name, "rb") as fh: + return fh.read() + + except FileNotFoundError: + return None + + def set(self, key, value): + name = self._fn(key) + + # Make sure the directory exists + try: + os.makedirs(os.path.dirname(name), self.dirmode) + except (IOError, OSError): + pass + + with self.lock_class(name) as lock: + # Write our actual file + with _secure_open_write(lock.path, self.filemode) as fh: + fh.write(value) + + def delete(self, key): + name = self._fn(key) + if not self.forever: + try: + os.remove(name) + except FileNotFoundError: + pass + + +def url_to_file_path(url, filecache): + """Return the file cache path based on the URL. + + This does not ensure the file exists! + """ + key = CacheController.cache_url(url) + return filecache._fn(key) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py new file mode 100644 index 00000000..ed705ce7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py @@ -0,0 +1,33 @@ +from __future__ import division + +from datetime import datetime +from pip._vendor.cachecontrol.cache import BaseCache + + +class RedisCache(BaseCache): + + def __init__(self, conn): + self.conn = conn + + def get(self, key): + return self.conn.get(key) + + def set(self, key, value, expires=None): + if not expires: + self.conn.set(key, value) + else: + expires = expires - datetime.utcnow() + self.conn.setex(key, int(expires.total_seconds()), value) + + def delete(self, key): + self.conn.delete(key) + + def clear(self): + """Helper for clearing all the keys in a database. Use with + caution!""" + for key in self.conn.keys(): + self.conn.delete(key) + + def close(self): + """Redis uses connection pooling, no need to close the connection.""" + pass diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py new file mode 100644 index 00000000..33b5aed0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py @@ -0,0 +1,29 @@ +try: + from urllib.parse import urljoin +except ImportError: + from urlparse import urljoin + + +try: + import cPickle as pickle +except ImportError: + import pickle + + +# Handle the case where the requests module has been patched to not have +# urllib3 bundled as part of its source. +try: + from pip._vendor.requests.packages.urllib3.response import HTTPResponse +except ImportError: + from pip._vendor.urllib3.response import HTTPResponse + +try: + from pip._vendor.requests.packages.urllib3.util import is_fp_closed +except ImportError: + from pip._vendor.urllib3.util import is_fp_closed + +# Replicate some six behaviour +try: + text_type = unicode +except NameError: + text_type = str diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py new file mode 100644 index 00000000..dafe55ca --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py @@ -0,0 +1,376 @@ +""" +The httplib2 algorithms ported for use with requests. +""" +import logging +import re +import calendar +import time +from email.utils import parsedate_tz + +from pip._vendor.requests.structures import CaseInsensitiveDict + +from .cache import DictCache +from .serialize import Serializer + + +logger = logging.getLogger(__name__) + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + + +class CacheController(object): + """An interface to see if request should cached or not. + """ + + def __init__( + self, cache=None, cache_etags=True, serializer=None, status_codes=None + ): + self.cache = DictCache() if cache is None else cache + self.cache_etags = cache_etags + self.serializer = serializer or Serializer() + self.cacheable_status_codes = status_codes or (200, 203, 300, 301) + + @classmethod + def _urlnorm(cls, uri): + """Normalize the URL to create a safe key for the cache""" + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise Exception("Only absolute URIs are allowed. uri = %s" % uri) + + scheme = scheme.lower() + authority = authority.lower() + + if not path: + path = "/" + + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + defrag_uri = scheme + "://" + authority + request_uri + + return defrag_uri + + @classmethod + def cache_url(cls, uri): + return cls._urlnorm(uri) + + def parse_cache_control(self, headers): + known_directives = { + # https://tools.ietf.org/html/rfc7234#section-5.2 + "max-age": (int, True), + "max-stale": (int, False), + "min-fresh": (int, True), + "no-cache": (None, False), + "no-store": (None, False), + "no-transform": (None, False), + "only-if-cached": (None, False), + "must-revalidate": (None, False), + "public": (None, False), + "private": (None, False), + "proxy-revalidate": (None, False), + "s-maxage": (int, True), + } + + cc_headers = headers.get("cache-control", headers.get("Cache-Control", "")) + + retval = {} + + for cc_directive in cc_headers.split(","): + if not cc_directive.strip(): + continue + + parts = cc_directive.split("=", 1) + directive = parts[0].strip() + + try: + typ, required = known_directives[directive] + except KeyError: + logger.debug("Ignoring unknown cache-control directive: %s", directive) + continue + + if not typ or not required: + retval[directive] = None + if typ: + try: + retval[directive] = typ(parts[1].strip()) + except IndexError: + if required: + logger.debug( + "Missing value for cache-control " "directive: %s", + directive, + ) + except ValueError: + logger.debug( + "Invalid value for cache-control directive " "%s, must be %s", + directive, + typ.__name__, + ) + + return retval + + def cached_request(self, request): + """ + Return a cached response if it exists in the cache, otherwise + return False. + """ + cache_url = self.cache_url(request.url) + logger.debug('Looking up "%s" in the cache', cache_url) + cc = self.parse_cache_control(request.headers) + + # Bail out if the request insists on fresh data + if "no-cache" in cc: + logger.debug('Request header has "no-cache", cache bypassed') + return False + + if "max-age" in cc and cc["max-age"] == 0: + logger.debug('Request header has "max_age" as 0, cache bypassed') + return False + + # Request allows serving from the cache, let's see if we find something + cache_data = self.cache.get(cache_url) + if cache_data is None: + logger.debug("No cache entry available") + return False + + # Check whether it can be deserialized + resp = self.serializer.loads(request, cache_data) + if not resp: + logger.warning("Cache entry deserialization failed, entry ignored") + return False + + # If we have a cached 301, return it immediately. We don't + # need to test our response for other headers b/c it is + # intrinsically "cacheable" as it is Permanent. + # See: + # https://tools.ietf.org/html/rfc7231#section-6.4.2 + # + # Client can try to refresh the value by repeating the request + # with cache busting headers as usual (ie no-cache). + if resp.status == 301: + msg = ( + 'Returning cached "301 Moved Permanently" response ' + "(ignoring date and etag information)" + ) + logger.debug(msg) + return resp + + headers = CaseInsensitiveDict(resp.headers) + if not headers or "date" not in headers: + if "etag" not in headers: + # Without date or etag, the cached response can never be used + # and should be deleted. + logger.debug("Purging cached response: no date or etag") + self.cache.delete(cache_url) + logger.debug("Ignoring cached response: no date") + return False + + now = time.time() + date = calendar.timegm(parsedate_tz(headers["date"])) + current_age = max(0, now - date) + logger.debug("Current age based on date: %i", current_age) + + # TODO: There is an assumption that the result will be a + # urllib3 response object. This may not be best since we + # could probably avoid instantiating or constructing the + # response until we know we need it. + resp_cc = self.parse_cache_control(headers) + + # determine freshness + freshness_lifetime = 0 + + # Check the max-age pragma in the cache control header + if "max-age" in resp_cc: + freshness_lifetime = resp_cc["max-age"] + logger.debug("Freshness lifetime from max-age: %i", freshness_lifetime) + + # If there isn't a max-age, check for an expires header + elif "expires" in headers: + expires = parsedate_tz(headers["expires"]) + if expires is not None: + expire_time = calendar.timegm(expires) - date + freshness_lifetime = max(0, expire_time) + logger.debug("Freshness lifetime from expires: %i", freshness_lifetime) + + # Determine if we are setting freshness limit in the + # request. Note, this overrides what was in the response. + if "max-age" in cc: + freshness_lifetime = cc["max-age"] + logger.debug( + "Freshness lifetime from request max-age: %i", freshness_lifetime + ) + + if "min-fresh" in cc: + min_fresh = cc["min-fresh"] + # adjust our current age by our min fresh + current_age += min_fresh + logger.debug("Adjusted current age from min-fresh: %i", current_age) + + # Return entry if it is fresh enough + if freshness_lifetime > current_age: + logger.debug('The response is "fresh", returning cached response') + logger.debug("%i > %i", freshness_lifetime, current_age) + return resp + + # we're not fresh. If we don't have an Etag, clear it out + if "etag" not in headers: + logger.debug('The cached response is "stale" with no etag, purging') + self.cache.delete(cache_url) + + # return the original handler + return False + + def conditional_headers(self, request): + cache_url = self.cache_url(request.url) + resp = self.serializer.loads(request, self.cache.get(cache_url)) + new_headers = {} + + if resp: + headers = CaseInsensitiveDict(resp.headers) + + if "etag" in headers: + new_headers["If-None-Match"] = headers["ETag"] + + if "last-modified" in headers: + new_headers["If-Modified-Since"] = headers["Last-Modified"] + + return new_headers + + def cache_response(self, request, response, body=None, status_codes=None): + """ + Algorithm for caching requests. + + This assumes a requests Response object. + """ + # From httplib2: Don't cache 206's since we aren't going to + # handle byte range requests + cacheable_status_codes = status_codes or self.cacheable_status_codes + if response.status not in cacheable_status_codes: + logger.debug( + "Status code %s not in %s", response.status, cacheable_status_codes + ) + return + + response_headers = CaseInsensitiveDict(response.headers) + + # If we've been given a body, our response has a Content-Length, that + # Content-Length is valid then we can check to see if the body we've + # been given matches the expected size, and if it doesn't we'll just + # skip trying to cache it. + if ( + body is not None + and "content-length" in response_headers + and response_headers["content-length"].isdigit() + and int(response_headers["content-length"]) != len(body) + ): + return + + cc_req = self.parse_cache_control(request.headers) + cc = self.parse_cache_control(response_headers) + + cache_url = self.cache_url(request.url) + logger.debug('Updating cache with response from "%s"', cache_url) + + # Delete it from the cache if we happen to have it stored there + no_store = False + if "no-store" in cc: + no_store = True + logger.debug('Response header has "no-store"') + if "no-store" in cc_req: + no_store = True + logger.debug('Request header has "no-store"') + if no_store and self.cache.get(cache_url): + logger.debug('Purging existing cache entry to honor "no-store"') + self.cache.delete(cache_url) + if no_store: + return + + # https://tools.ietf.org/html/rfc7234#section-4.1: + # A Vary header field-value of "*" always fails to match. + # Storing such a response leads to a deserialization warning + # during cache lookup and is not allowed to ever be served, + # so storing it can be avoided. + if "*" in response_headers.get("vary", ""): + logger.debug('Response header has "Vary: *"') + return + + # If we've been given an etag, then keep the response + if self.cache_etags and "etag" in response_headers: + logger.debug("Caching due to etag") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + # Add to the cache any 301s. We do this before looking that + # the Date headers. + elif response.status == 301: + logger.debug("Caching permanant redirect") + self.cache.set(cache_url, self.serializer.dumps(request, response)) + + # Add to the cache if the response headers demand it. If there + # is no date header then we can't do anything about expiring + # the cache. + elif "date" in response_headers: + # cache when there is a max-age > 0 + if "max-age" in cc and cc["max-age"] > 0: + logger.debug("Caching b/c date exists and max-age > 0") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + # If the request can expire, it means we should cache it + # in the meantime. + elif "expires" in response_headers: + if response_headers["expires"]: + logger.debug("Caching b/c of expires header") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + def update_cached_response(self, request, response): + """On a 304 we will get a new set of headers that we want to + update our cached value with, assuming we have one. + + This should only ever be called when we've sent an ETag and + gotten a 304 as the response. + """ + cache_url = self.cache_url(request.url) + + cached_response = self.serializer.loads(request, self.cache.get(cache_url)) + + if not cached_response: + # we didn't have a cached response + return response + + # Lets update our headers with the headers from the new request: + # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 + # + # The server isn't supposed to send headers that would make + # the cached body invalid. But... just in case, we'll be sure + # to strip out ones we know that might be problmatic due to + # typical assumptions. + excluded_headers = ["content-length"] + + cached_response.headers.update( + dict( + (k, v) + for k, v in response.headers.items() + if k.lower() not in excluded_headers + ) + ) + + # we want a 200 b/c we have content via the cache + cached_response.status = 200 + + # update our cache + self.cache.set(cache_url, self.serializer.dumps(request, cached_response)) + + return cached_response diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py new file mode 100644 index 00000000..30ed4c5a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -0,0 +1,80 @@ +from io import BytesIO + + +class CallbackFileWrapper(object): + """ + Small wrapper around a fp object which will tee everything read into a + buffer, and when that file is closed it will execute a callback with the + contents of that buffer. + + All attributes are proxied to the underlying file object. + + This class uses members with a double underscore (__) leading prefix so as + not to accidentally shadow an attribute. + """ + + def __init__(self, fp, callback): + self.__buf = BytesIO() + self.__fp = fp + self.__callback = callback + + def __getattr__(self, name): + # The vaguaries of garbage collection means that self.__fp is + # not always set. By using __getattribute__ and the private + # name[0] allows looking up the attribute value and raising an + # AttributeError when it doesn't exist. This stop thigns from + # infinitely recursing calls to getattr in the case where + # self.__fp hasn't been set. + # + # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers + fp = self.__getattribute__("_CallbackFileWrapper__fp") + return getattr(fp, name) + + def __is_fp_closed(self): + try: + return self.__fp.fp is None + + except AttributeError: + pass + + try: + return self.__fp.closed + + except AttributeError: + pass + + # We just don't cache it then. + # TODO: Add some logging here... + return False + + def _close(self): + if self.__callback: + self.__callback(self.__buf.getvalue()) + + # We assign this to None here, because otherwise we can get into + # really tricky problems where the CPython interpreter dead locks + # because the callback is holding a reference to something which + # has a __del__ method. Setting this to None breaks the cycle + # and allows the garbage collector to do it's thing normally. + self.__callback = None + + def read(self, amt=None): + data = self.__fp.read(amt) + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data + + def _safe_read(self, amt): + data = self.__fp._safe_read(amt) + if amt == 2 and data == b"\r\n": + # urllib executes this read to toss the CRLF at the end + # of the chunk. + return data + + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py new file mode 100644 index 00000000..6c0e9790 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py @@ -0,0 +1,135 @@ +import calendar +import time + +from email.utils import formatdate, parsedate, parsedate_tz + +from datetime import datetime, timedelta + +TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" + + +def expire_after(delta, date=None): + date = date or datetime.utcnow() + return date + delta + + +def datetime_to_header(dt): + return formatdate(calendar.timegm(dt.timetuple())) + + +class BaseHeuristic(object): + + def warning(self, response): + """ + Return a valid 1xx warning header value describing the cache + adjustments. + + The response is provided too allow warnings like 113 + http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need + to explicitly say response is over 24 hours old. + """ + return '110 - "Response is Stale"' + + def update_headers(self, response): + """Update the response headers with any new headers. + + NOTE: This SHOULD always include some Warning header to + signify that the response was cached by the client, not + by way of the provided headers. + """ + return {} + + def apply(self, response): + updated_headers = self.update_headers(response) + + if updated_headers: + response.headers.update(updated_headers) + warning_header_value = self.warning(response) + if warning_header_value is not None: + response.headers.update({"Warning": warning_header_value}) + + return response + + +class OneDayCache(BaseHeuristic): + """ + Cache the response by providing an expires 1 day in the + future. + """ + + def update_headers(self, response): + headers = {} + + if "expires" not in response.headers: + date = parsedate(response.headers["date"]) + expires = expire_after(timedelta(days=1), date=datetime(*date[:6])) + headers["expires"] = datetime_to_header(expires) + headers["cache-control"] = "public" + return headers + + +class ExpiresAfter(BaseHeuristic): + """ + Cache **all** requests for a defined time period. + """ + + def __init__(self, **kw): + self.delta = timedelta(**kw) + + def update_headers(self, response): + expires = expire_after(self.delta) + return {"expires": datetime_to_header(expires), "cache-control": "public"} + + def warning(self, response): + tmpl = "110 - Automatically cached for %s. Response might be stale" + return tmpl % self.delta + + +class LastModified(BaseHeuristic): + """ + If there is no Expires header already, fall back on Last-Modified + using the heuristic from + http://tools.ietf.org/html/rfc7234#section-4.2.2 + to calculate a reasonable value. + + Firefox also does something like this per + https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ + http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397 + Unlike mozilla we limit this to 24-hr. + """ + cacheable_by_default_statuses = { + 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501 + } + + def update_headers(self, resp): + headers = resp.headers + + if "expires" in headers: + return {} + + if "cache-control" in headers and headers["cache-control"] != "public": + return {} + + if resp.status not in self.cacheable_by_default_statuses: + return {} + + if "date" not in headers or "last-modified" not in headers: + return {} + + date = calendar.timegm(parsedate_tz(headers["date"])) + last_modified = parsedate(headers["last-modified"]) + if date is None or last_modified is None: + return {} + + now = time.time() + current_age = max(0, now - date) + delta = date - calendar.timegm(last_modified) + freshness_lifetime = max(0, min(delta / 10, 24 * 3600)) + if freshness_lifetime <= current_age: + return {} + + expires = date + freshness_lifetime + return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))} + + def warning(self, resp): + return None diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py new file mode 100644 index 00000000..3b6ec2de --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py @@ -0,0 +1,188 @@ +import base64 +import io +import json +import zlib + +from pip._vendor import msgpack +from pip._vendor.requests.structures import CaseInsensitiveDict + +from .compat import HTTPResponse, pickle, text_type + + +def _b64_decode_bytes(b): + return base64.b64decode(b.encode("ascii")) + + +def _b64_decode_str(s): + return _b64_decode_bytes(s).decode("utf8") + + +class Serializer(object): + + def dumps(self, request, response, body=None): + response_headers = CaseInsensitiveDict(response.headers) + + if body is None: + body = response.read(decode_content=False) + + # NOTE: 99% sure this is dead code. I'm only leaving it + # here b/c I don't have a test yet to prove + # it. Basically, before using + # `cachecontrol.filewrapper.CallbackFileWrapper`, + # this made an effort to reset the file handle. The + # `CallbackFileWrapper` short circuits this code by + # setting the body as the content is consumed, the + # result being a `body` argument is *always* passed + # into cache_response, and in turn, + # `Serializer.dump`. + response._fp = io.BytesIO(body) + + # NOTE: This is all a bit weird, but it's really important that on + # Python 2.x these objects are unicode and not str, even when + # they contain only ascii. The problem here is that msgpack + # understands the difference between unicode and bytes and we + # have it set to differentiate between them, however Python 2 + # doesn't know the difference. Forcing these to unicode will be + # enough to have msgpack know the difference. + data = { + u"response": { + u"body": body, + u"headers": dict( + (text_type(k), text_type(v)) for k, v in response.headers.items() + ), + u"status": response.status, + u"version": response.version, + u"reason": text_type(response.reason), + u"strict": response.strict, + u"decode_content": response.decode_content, + } + } + + # Construct our vary headers + data[u"vary"] = {} + if u"vary" in response_headers: + varied_headers = response_headers[u"vary"].split(",") + for header in varied_headers: + header = text_type(header).strip() + header_value = request.headers.get(header, None) + if header_value is not None: + header_value = text_type(header_value) + data[u"vary"][header] = header_value + + return b",".join([b"cc=4", msgpack.dumps(data, use_bin_type=True)]) + + def loads(self, request, data): + # Short circuit if we've been given an empty set of data + if not data: + return + + # Determine what version of the serializer the data was serialized + # with + try: + ver, data = data.split(b",", 1) + except ValueError: + ver = b"cc=0" + + # Make sure that our "ver" is actually a version and isn't a false + # positive from a , being in the data stream. + if ver[:3] != b"cc=": + data = ver + data + ver = b"cc=0" + + # Get the version number out of the cc=N + ver = ver.split(b"=", 1)[-1].decode("ascii") + + # Dispatch to the actual load method for the given version + try: + return getattr(self, "_loads_v{}".format(ver))(request, data) + + except AttributeError: + # This is a version we don't have a loads function for, so we'll + # just treat it as a miss and return None + return + + def prepare_response(self, request, cached): + """Verify our vary headers match and construct a real urllib3 + HTTPResponse object. + """ + # Special case the '*' Vary value as it means we cannot actually + # determine if the cached response is suitable for this request. + # This case is also handled in the controller code when creating + # a cache entry, but is left here for backwards compatibility. + if "*" in cached.get("vary", {}): + return + + # Ensure that the Vary headers for the cached response match our + # request + for header, value in cached.get("vary", {}).items(): + if request.headers.get(header, None) != value: + return + + body_raw = cached["response"].pop("body") + + headers = CaseInsensitiveDict(data=cached["response"]["headers"]) + if headers.get("transfer-encoding", "") == "chunked": + headers.pop("transfer-encoding") + + cached["response"]["headers"] = headers + + try: + body = io.BytesIO(body_raw) + except TypeError: + # This can happen if cachecontrol serialized to v1 format (pickle) + # using Python 2. A Python 2 str(byte string) will be unpickled as + # a Python 3 str (unicode string), which will cause the above to + # fail with: + # + # TypeError: 'str' does not support the buffer interface + body = io.BytesIO(body_raw.encode("utf8")) + + return HTTPResponse(body=body, preload_content=False, **cached["response"]) + + def _loads_v0(self, request, data): + # The original legacy cache data. This doesn't contain enough + # information to construct everything we need, so we'll treat this as + # a miss. + return + + def _loads_v1(self, request, data): + try: + cached = pickle.loads(data) + except ValueError: + return + + return self.prepare_response(request, cached) + + def _loads_v2(self, request, data): + try: + cached = json.loads(zlib.decompress(data).decode("utf8")) + except (ValueError, zlib.error): + return + + # We need to decode the items that we've base64 encoded + cached["response"]["body"] = _b64_decode_bytes(cached["response"]["body"]) + cached["response"]["headers"] = dict( + (_b64_decode_str(k), _b64_decode_str(v)) + for k, v in cached["response"]["headers"].items() + ) + cached["response"]["reason"] = _b64_decode_str(cached["response"]["reason"]) + cached["vary"] = dict( + (_b64_decode_str(k), _b64_decode_str(v) if v is not None else v) + for k, v in cached["vary"].items() + ) + + return self.prepare_response(request, cached) + + def _loads_v3(self, request, data): + # Due to Python 2 encoding issues, it's impossible to know for sure + # exactly how to load v3 entries, thus we'll treat these as a miss so + # that they get rewritten out as v4 entries. + return + + def _loads_v4(self, request, data): + try: + cached = msgpack.loads(data, raw=False) + except ValueError: + return + + return self.prepare_response(request, cached) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py new file mode 100644 index 00000000..d8e6fc6a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py @@ -0,0 +1,29 @@ +from .adapter import CacheControlAdapter +from .cache import DictCache + + +def CacheControl( + sess, + cache=None, + cache_etags=True, + serializer=None, + heuristic=None, + controller_class=None, + adapter_class=None, + cacheable_methods=None, +): + + cache = DictCache() if cache is None else cache + adapter_class = adapter_class or CacheControlAdapter + adapter = adapter_class( + cache, + cache_etags=cache_etags, + serializer=serializer, + heuristic=heuristic, + controller_class=controller_class, + cacheable_methods=cacheable_methods, + ) + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + return sess diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py b/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py new file mode 100644 index 00000000..eebdf888 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py @@ -0,0 +1,3 @@ +from .core import contents, where + +__version__ = "2021.05.30" diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py b/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py new file mode 100644 index 00000000..00376349 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from pip._vendor.certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem b/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem new file mode 100644 index 00000000..96e2fc65 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem @@ -0,0 +1,4257 @@ + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946069240 +# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 +# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 +# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 +MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub +j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo +U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b +u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ +bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er +fF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2" +# Serial: 1289 +# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b +# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 +# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3" +# Serial: 1478 +# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf +# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 +# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 +# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 +# Label: "Security Communication Root CA" +# Serial: 0 +# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a +# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 +# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY +MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t +dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 +WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD +VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 +9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ +DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 +Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N +QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ +xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G +A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG +kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr +Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 +Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU +JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot +RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. +# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. +# Label: "DST Root CA X3" +# Serial: 91299735575339953335919266965803778155 +# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 +# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 +# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow +PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD +Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O +rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq +OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b +xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw +7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD +aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG +SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 +ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr +AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz +R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 +JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo +Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Label: "SwissSign Gold CA - G2" +# Serial: 13492815561806991280 +# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 +# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 +# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln +biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF +MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT +d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 +76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ +bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c +6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE +emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd +MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt +MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y +MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y +FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi +aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM +gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB +qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 +lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn +8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 +45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO +UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 +O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC +bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv +GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a +77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC +hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 +92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp +Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w +ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt +Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Label: "SwissSign Silver CA - G2" +# Serial: 5700383053117599563 +# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 +# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb +# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE +BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu +IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow +RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY +U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv +Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br +YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF +nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH +6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt +eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ +c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ +MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH +HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf +jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 +5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB +rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c +wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB +AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp +WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 +xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ +2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ +IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 +aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X +em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR +dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ +OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ +hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy +tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +# Issuer: CN=SecureTrust CA O=SecureTrust Corporation +# Subject: CN=SecureTrust CA O=SecureTrust Corporation +# Label: "SecureTrust CA" +# Serial: 17199774589125277788362757014266862032 +# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 +# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 +# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +# Issuer: CN=Secure Global CA O=SecureTrust Corporation +# Subject: CN=Secure Global CA O=SecureTrust Corporation +# Label: "Secure Global CA" +# Serial: 9751836167731051554232119481456978597 +# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de +# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b +# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx +MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg +Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ +iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa +/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ +jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI +HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 +sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w +gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw +KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG +AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L +URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO +H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm +I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY +iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=Certigna O=Dhimyotis +# Subject: CN=Certigna O=Dhimyotis +# Label: "Certigna" +# Serial: 18364802974209362175 +# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff +# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 +# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X +DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ +BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 +QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny +gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw +zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q +130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 +JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw +ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj +AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG +9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h +bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc +fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu +HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w +t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Label: "ePKI Root Certification Authority" +# Serial: 28956088682735189655030529057352760477 +# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 +# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 +# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +# Issuer: O=certSIGN OU=certSIGN ROOT CA +# Subject: O=certSIGN OU=certSIGN ROOT CA +# Label: "certSIGN ROOT CA" +# Serial: 35210227249154 +# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 +# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b +# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT +AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD +QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP +MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do +0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ +UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d +RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ +OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv +JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C +AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O +BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ +LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY +MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ +44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I +Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw +i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN +9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post +# Label: "Hongkong Post Root CA 1" +# Serial: 1000 +# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca +# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 +# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx +FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg +Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG +A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr +b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ +jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn +PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh +ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 +nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h +q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED +MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC +mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 +7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB +oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs +EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO +fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi +AmvZWg== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Label: "SecureSign RootCA11" +# Serial: 1 +# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 +# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 +# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr +MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG +A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 +MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp +Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD +QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz +i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 +h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV +MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 +UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni +8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC +h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD +VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB +AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm +KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ +X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr +QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 +pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN +QSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 6047274297262753887 +# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 +# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa +# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy +MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD +VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv +ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl +AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF +661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 +am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 +ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 +PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS +3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k +SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF +3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM +ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g +StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz +Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB +jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 +MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 +ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD +VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq +scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO +xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H +LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX +uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD +yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ +JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q +rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN +BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L +hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB +QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ +HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu +Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg +QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB +BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA +A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb +laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 +awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo +JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw +LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT +VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk +LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb +UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ +QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ +naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls +QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=EC-ACC O=Agencia Catalana de Certificacio (NIF Q-0801176-I) OU=Serveis Publics de Certificacio/Vegeu https://www.catcert.net/verarrel (c)03/Jerarquia Entitats de Certificacio Catalanes +# Subject: CN=EC-ACC O=Agencia Catalana de Certificacio (NIF Q-0801176-I) OU=Serveis Publics de Certificacio/Vegeu https://www.catcert.net/verarrel (c)03/Jerarquia Entitats de Certificacio Catalanes +# Label: "EC-ACC" +# Serial: -23701579247955709139626555126524820479 +# MD5 Fingerprint: eb:f5:9d:29:0d:61:f9:42:1f:7c:c2:ba:6d:e3:15:09 +# SHA1 Fingerprint: 28:90:3a:63:5b:52:80:fa:e6:77:4c:0b:6d:a7:d6:ba:a6:4a:f2:e8 +# SHA256 Fingerprint: 88:49:7f:01:60:2f:31:54:24:6a:e2:8c:4d:5a:ef:10:f1:d8:7e:bb:76:62:6f:4a:e0:b7:f9:5b:a7:96:87:99 +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB +8zELMAkGA1UEBhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2Vy +dGlmaWNhY2lvIChOSUYgUS0wODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1 +YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYDVQQLEyxWZWdldSBodHRwczovL3d3 +dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UECxMsSmVyYXJxdWlh +IEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMTBkVD +LUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQG +EwJFUzE7MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8g +KE5JRiBRLTA4MDExNzYtSSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBD +ZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZlZ2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQu +bmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJhcnF1aWEgRW50aXRhdHMg +ZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUNDMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R +85iKw5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm +4CgPukLjbo73FCeTae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaV +HMf5NLWUhdWZXqBIoH7nF2W4onW4HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNd +QlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0aE9jD2z3Il3rucO2n5nzbcc8t +lGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw0JDnJwIDAQAB +o4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4 +opvpXY0wfwYDVR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBo +dHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidW +ZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAwDQYJKoZIhvcN +AQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJlF7W2u++AVtd0x7Y +/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNaAl6k +SBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhy +Rp/7SNVel+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOS +Agu+TGbrIP65y7WZf+a2E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xl +nJ2lYJU6Un/10asIbvPuW/mIPX64b24D5EI= +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2011" +# Serial: 0 +# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 +# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d +# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix +RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p +YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw +NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK +EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl +cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz +dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ +fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns +bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD +75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP +FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV +HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp +5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu +b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA +A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p +6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 +dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys +Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI +l7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Label: "TeliaSonera Root CA v1" +# Serial: 199041966741090107964904287217786801558 +# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c +# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 +# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi +# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi +# Label: "E-Tugra Certification Authority" +# Serial: 7667447206703254355 +# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 +# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 +# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV +BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC +aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV +BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 +Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz +MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ +BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp +em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY +B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH +D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF +Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo +q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D +k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH +fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut +dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM +ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 +zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX +U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 +Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 +XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF +Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR +HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY +GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c +77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 ++GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK +vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 +FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl +yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P +AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD +y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d +NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 14367148294922964480859022125800977897474 +# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e +# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb +# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ +FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F +uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX +kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs +ewv4n4Q= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Label: "Staat der Nederlanden EV Root CA" +# Serial: 10000013 +# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba +# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb +# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y +MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg +TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS +b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS +M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC +UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d +Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p +rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l +pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb +j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC +KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS +/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X +cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH +1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP +px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 +MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u +2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS +v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC +wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy +CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e +vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 +Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa +Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL +eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 +FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc +7uzXLg== +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor RootCert CA-1" +# Serial: 15752444095811006489 +# MD5 Fingerprint: 6e:85:f1:dc:1a:00:d3:22:d5:b2:b2:ac:6b:37:05:45 +# SHA1 Fingerprint: ff:bd:cd:e7:82:c8:43:5e:3c:6f:26:86:5c:ca:a8:3a:45:5b:c3:0a +# SHA256 Fingerprint: d4:0e:9c:86:cd:8f:e4:68:c1:77:69:59:f4:9e:a7:74:fa:54:86:84:b6:c4:06:f3:90:92:61:f4:dc:e2:57:5c +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYD +VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk +MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29y +IFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkxMjMxMTcyMzE2WjCB +pDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFuYW1h +IENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUG +A1UECwweVHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZU +cnVzdENvciBSb290Q2VydCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAv463leLCJhJrMxnHQFgKq1mqjQCj/IDHUHuO1CAmujIS2CNUSSUQIpid +RtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4pQa81QBeCQryJ3pS/C3V +seq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0JEsq1pme +9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CV +EY4hgLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorW +hnAbJN7+KIor0Gqw/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/ +DeOxCbeKyKsZn3MzUOcwHwYDVR0jBBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD +ggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5mDo4Nvu7Zp5I +/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZ +yonnMlo2HD6CqFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djts +L1Ac59v2Z3kf9YKVmgenFK+P3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdN +zl/HHk484IkzlQsPpTLWPFp5LBk= +-----END CERTIFICATE----- + +# Issuer: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor RootCert CA-2" +# Serial: 2711694510199101698 +# MD5 Fingerprint: a2:e1:f8:18:0b:ba:45:d5:c7:41:2a:bb:37:52:45:64 +# SHA1 Fingerprint: b8:be:6d:cb:56:f1:55:b9:63:d4:12:ca:4e:06:34:c7:94:b2:1c:c0 +# SHA256 Fingerprint: 07:53:e9:40:37:8c:1b:d5:e3:83:6e:39:5d:ae:a5:cb:83:9e:50:46:f1:bd:0e:ae:19:51:cf:10:fe:c7:c9:65 +-----BEGIN CERTIFICATE----- +MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNV +BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw +IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy +dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEfMB0GA1UEAwwWVHJ1c3RDb3Ig +Um9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEyMzExNzI2MzlaMIGk +MQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEg +Q2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYD +VQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRy +dXN0Q29yIFJvb3RDZXJ0IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCnIG7CKqJiJJWQdsg4foDSq8GbZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+ +QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9NkRvRUqdw6VC0xK5mC8tkq +1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1oYxOdqHp +2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nK +DOObXUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hape +az6LMvYHL1cEksr1/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF +3wP+TfSvPd9cW436cOGlfifHhi5qjxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88 +oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQPeSghYA2FFn3XVDjxklb9tTNM +g9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+CtgrKAmrhQhJ8Z3 +mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh +8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAd +BgNVHQ4EFgQU2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6U +nrybPZx9mCAZ5YwwYrIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw +DQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/hOsh80QA9z+LqBrWyOrsGS2h60COX +dKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnpkpfbsEZC89NiqpX+ +MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv2wnL +/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RX +CI/hOWB3S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYa +ZH9bDTMJBzN7Bj8RpFxwPIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW +2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dvDDqPys/cA8GiCcjl/YBeyGBCARsaU1q7 +N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYURpFHmygk71dSTlxCnKr3 +Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANExdqtvArB +As8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp +5KeXRKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu +1uwJ +-----END CERTIFICATE----- + +# Issuer: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor ECA-1" +# Serial: 9548242946988625984 +# MD5 Fingerprint: 27:92:23:1d:0a:f5:40:7c:e9:e6:6b:9d:d8:f5:e7:6c +# SHA1 Fingerprint: 58:d1:df:95:95:67:6b:63:c0:f0:5b:1c:17:4d:8b:84:0b:c8:78:bd +# SHA256 Fingerprint: 5a:88:5d:b1:9c:01:d9:12:c5:75:93:88:93:8c:af:bb:df:03:1a:b2:d4:8e:91:ee:15:58:9b:42:97:1d:03:9c +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD +VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk +MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDlRydXN0Q29y +IEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3MjgwN1owgZwxCzAJBgNV +BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw +IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy +dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3Ig +RUNBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb +3w9U73NjKYKtR8aja+3+XzP4Q1HpGjORMRegdMTUpwHmspI+ap3tDvl0mEDTPwOA +BoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23xFUfJ3zSCNV2HykVh0A5 +3ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmcp0yJF4Ou +owReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/ +wZ0+fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZF +ZtS6mFjBAgMBAAGjYzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAf +BgNVHSMEGDAWgBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEABT41XBVwm8nHc2Fv +civUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u/ukZMjgDfxT2 +AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50 +soIipX1TH0XsJ5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BI +WJZpTdwHjFGTot+fDz2LYLSCjaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1Wi +tJ/X5g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 146587175971765017618439757810265552097 +# MD5 Fingerprint: 82:1a:ef:d4:d2:4a:f2:9f:e2:3d:97:06:14:70:72:85 +# SHA1 Fingerprint: e1:c9:50:e6:ef:22:f8:4c:56:45:72:8b:92:20:60:d7:d5:a7:a3:e8 +# SHA256 Fingerprint: 2a:57:54:71:e3:13:40:bc:21:58:1c:bd:2c:f1:3e:15:84:63:20:3e:ce:94:bc:f9:d3:cc:19:6b:f0:9a:54:72 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH +MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM +QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy +MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl +cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM +f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX +mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7 +zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P +fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc +vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4 +Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp +zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO +Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW +k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+ +DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF +lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW +Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 +d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z +XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR +gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3 +d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv +J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg +DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM ++SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy +F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9 +SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws +E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R2 O=Google Trust Services LLC +# Subject: CN=GTS Root R2 O=Google Trust Services LLC +# Label: "GTS Root R2" +# Serial: 146587176055767053814479386953112547951 +# MD5 Fingerprint: 44:ed:9a:0e:a4:09:3b:00:f2:ae:4c:a3:c6:61:b0:8b +# SHA1 Fingerprint: d2:73:96:2a:2a:5e:39:9f:73:3f:e1:c7:1e:64:3f:03:38:34:fc:4d +# SHA256 Fingerprint: c4:5d:7b:b0:8e:6d:67:e6:2e:42:35:11:0b:56:4e:5f:78:fd:92:ef:05:8c:84:0a:ea:4e:64:55:d7:58:5c:60 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBH +MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM +QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy +MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl +cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv +CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3Kg +GjSY6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9Bu +XvAuMC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOd +re7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXu +PuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1 +mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K +8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqj +x5RWIr9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsR +nTKaG73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0 +kzCqgc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9Ok +twIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBALZp +8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT +vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiT +z9D2PGcDFWEJ+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiA +pJiS4wGWAqoC7o87xdFtCjMwc3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvb +pxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3DaWsYDQvTtN6LwG1BUSw7YhN4ZKJmB +R64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5rn/WkhLx3+WuXrD5R +RaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56GtmwfuNmsk +0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC +5AwiWVIQ7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiF +izoHCBy69Y9Vmhh1fuXsgWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLn +yOd/xCxgXS/Dr55FBcOEArf9LAhST4Ldo/DUhgkC +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 146587176140553309517047991083707763997 +# MD5 Fingerprint: 1a:79:5b:6b:04:52:9c:5d:c7:74:33:1b:25:9a:f9:25 +# SHA1 Fingerprint: 30:d4:24:6f:07:ff:db:91:89:8a:0b:e9:49:66:11:eb:8c:5e:46:e5 +# SHA256 Fingerprint: 15:d5:b8:77:46:19:ea:7d:54:ce:1c:a6:d0:b0:c4:03:e0:37:a9:17:f1:31:e8:a0:4e:1e:6b:7a:71:ba:bc:e5 +-----BEGIN CERTIFICATE----- +MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout +736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2A +DDL24CejQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFuk +fCPAlaUs3L6JbyO5o91lAFJekazInXJ0glMLfalAvWhgxeG4VDvBNhcl2MG9AjEA +njWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOaKaqW04MjyaR7YbPMAuhd +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 146587176229350439916519468929765261721 +# MD5 Fingerprint: 5d:b6:6a:c4:60:17:24:6a:1a:99:a8:4b:ee:5e:b4:26 +# SHA1 Fingerprint: 2a:1d:60:27:d9:4a:b1:0a:1c:4d:91:5c:cd:33:a0:cb:3e:2d:54:cb +# SHA256 Fingerprint: 71:cc:a5:39:1f:9e:79:4b:04:80:25:30:b3:63:e1:21:da:8a:30:43:bb:26:66:2f:ea:4d:ca:7f:c9:51:a4:bd +-----BEGIN CERTIFICATE----- +MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu +hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/l +xKvRHYqjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0 +CMRw3J5QdCHojXohw0+WbhXRIjVhLfoIN+4Zba3bssx9BzT1YBkstTTZbyACMANx +sbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11xzPKwTdb+mciUqXWi4w== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL +BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ +SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n +a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5 +NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT +CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u +Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO +dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI +VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV +9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY +2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY +vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt +bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb +x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+ +l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK +TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj +Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e +i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw +DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG +7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk +MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr +gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk +GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS +3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm +Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+ +l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c +JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP +L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa +LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G4" +# Serial: 289383649854506086828220374796556676440 +# MD5 Fingerprint: 89:53:f1:83:23:b7:7c:8e:05:f1:8c:71:38:4e:1f:88 +# SHA1 Fingerprint: 14:88:4e:86:26:37:b0:26:af:59:62:5c:40:77:ec:35:29:ba:96:01 +# SHA256 Fingerprint: db:35:17:d1:f6:73:2a:2d:5a:b9:7c:53:3e:c7:07:79:ee:32:70:a6:2f:b4:ac:42:38:37:24:60:e6:f0:1e:88 +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw +gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL +Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg +MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw +BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0 +MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1 +c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ +bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ +2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E +T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j +5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM +C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T +DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX +wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A +2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm +nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl +N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj +c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS +5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS +Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr +hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/ +B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI +AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw +H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+ +b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk +2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol +IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk +5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY +n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft ECC Root Certificate Authority 2017" +# Serial: 136839042543790627607696632466672567020 +# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 +# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 +# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft RSA Root Certificate Authority 2017" +# Serial: 40975477897264996090493496164228220339 +# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 +# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 +# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Label: "e-Szigno Root CA 2017" +# Serial: 411379200276854331539784714 +# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 +# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 +# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE----- + +# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Label: "certSIGN Root CA G2" +# Serial: 313609486401300475190 +# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 +# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 +# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global Certification Authority" +# Serial: 1846098327275375458322922162 +# MD5 Fingerprint: f8:1c:18:2d:2f:ba:5f:6d:a1:6c:bc:c7:ab:91:c7:0e +# SHA1 Fingerprint: 2f:8f:36:4f:e1:58:97:44:21:59:87:a5:2a:9a:d0:69:95:26:7f:b5 +# SHA256 Fingerprint: 97:55:20:15:f5:dd:fc:3c:87:88:c0:06:94:45:55:40:88:94:45:00:84:f1:00:86:70:86:bc:1a:2b:b5:8d:c8 +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw +CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x +ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 +c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx +OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI +SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn +swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu +7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 +1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW +80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP +JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l +RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw +hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 +coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc +BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n +twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud +DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W +0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe +uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q +lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB +aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE +sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT +MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe +qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh +VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 +h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 +EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK +yeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P256 Certification Authority" +# Serial: 4151900041497450638097112925 +# MD5 Fingerprint: 5b:44:e3:8d:5d:36:86:26:e8:0d:05:d2:59:a7:83:54 +# SHA1 Fingerprint: b4:90:82:dd:45:0c:be:8b:5b:b1:66:d3:e2:a4:08:26:cd:ed:42:cf +# SHA256 Fingerprint: 94:5b:bc:82:5e:a5:54:f4:89:d1:fd:51:a7:3d:df:2e:a6:24:ac:70:19:a0:52:05:22:5c:22:a7:8c:cf:a8:b4 +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG +SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN +FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w +DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw +CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh +DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P384 Certification Authority" +# Serial: 2704997926503831671788816187 +# MD5 Fingerprint: ea:cf:60:c4:3b:b9:15:29:40:a1:97:ed:78:27:93:d6 +# SHA1 Fingerprint: e7:f3:a3:c8:cf:6f:c3:04:2e:6d:0e:67:32:c5:9e:68:95:0d:5e:d2 +# SHA256 Fingerprint: 55:90:38:59:c8:c0:c3:eb:b8:75:9e:ce:4e:25:57:22:5f:f5:75:8b:bd:38:eb:d4:82:76:60:1e:1b:d5:80:97 +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB +BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ +j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF +1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G +A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 +AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC +MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu +Sw== +-----END CERTIFICATE----- + +# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Label: "NAVER Global Root Certification Authority" +# Serial: 9013692873798656336226253319739695165984492813 +# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b +# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 +# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE----- + +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Serial: 131542671362353147877283741781055151509 +# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb +# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a +# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Label: "GlobalSign Root R46" +# Serial: 1552617688466950547958867513931858518042577 +# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef +# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 +# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Label: "GlobalSign Root E46" +# Serial: 1552617690338932563915843282459653771421763 +# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f +# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 +# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH +# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH +# Label: "GLOBALTRUST 2020" +# Serial: 109160994242082918454945253 +# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8 +# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2 +# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG +A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw +FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx +MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u +aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b +RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z +YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3 +QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw +yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+ +BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ +SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH +r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0 +4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me +dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw +q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2 +nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu +H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC +XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd +6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf ++I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi +kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7 +wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB +TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C +MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn +4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I +aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy +qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + +# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Label: "ANF Secure Server Root CA" +# Serial: 996390341000653745 +# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 +# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 +# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 +-----BEGIN CERTIFICATE----- +MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV +BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk +YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV +BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN +MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF +UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD +VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v +dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj +cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q +yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH +2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX +H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL +zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR +p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz +W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/ +SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn +LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3 +n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B +u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj +o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L +9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej +rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK +pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0 +vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq +OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ +/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9 +2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI ++PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2 +MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo +tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= +-----END CERTIFICATE----- + +# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum EC-384 CA" +# Serial: 160250656287871593594747141429395092468 +# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 +# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed +# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Root CA" +# Serial: 40870380103424195783807378461123655149 +# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 +# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 +# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd +-----BEGIN CERTIFICATE----- +MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6 +MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu +MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV +BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw +MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg +U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ +n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q +p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq +NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF +8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3 +HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa +mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi +7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF +ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P +qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ +v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6 +Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 +vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD +ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4 +WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo +zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR +5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ +GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf +5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq +0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D +P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM +qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP +0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf +E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb +-----END CERTIFICATE----- diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/core.py b/venv/Lib/site-packages/pip/_vendor/certifi/core.py new file mode 100644 index 00000000..b8140cf1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/core.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem or its contents. +""" +import os + + +class _PipPatchedCertificate(Exception): + pass + + +try: + # Return a certificate file on disk for a standalone pip zipapp running in + # an isolated build environment to use. Passing --cert to the standalone + # pip does not work since requests calls where() unconditionally on import. + _PIP_STANDALONE_CERT = os.environ.get("_PIP_STANDALONE_CERT") + if _PIP_STANDALONE_CERT: + def where(): + return _PIP_STANDALONE_CERT + raise _PipPatchedCertificate() + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where(): + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("pip._vendor.certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + + return _CACERT_PATH + +except _PipPatchedCertificate: + pass + +except ImportError: + # This fallback will work for Python versions prior to 3.7 that lack the + # importlib.resources module but relies on the existing `where` function + # so won't address issues with environments like PyOxidizer that don't set + # __file__ on modules. + def read_text(_module, _path, encoding="ascii"): + with open(where(), "r", encoding=encoding) as data: + return data.read() + + # If we don't have importlib.resources, then we will just do the old logic + # of assuming we're on the filesystem and munge the path directly. + def where(): + f = os.path.dirname(__file__) + + return os.path.join(f, "cacert.pem") + + +def contents(): + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py b/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py new file mode 100644 index 00000000..80ad2546 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py @@ -0,0 +1,83 @@ +######################## BEGIN LICENSE BLOCK ######################## +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +from .universaldetector import UniversalDetector +from .enums import InputState +from .version import __version__, VERSION + + +__all__ = ['UniversalDetector', 'detect', 'detect_all', '__version__', 'VERSION'] + + +def detect(byte_str): + """ + Detect the encoding of the given byte string. + + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + detector = UniversalDetector() + detector.feed(byte_str) + return detector.close() + + +def detect_all(byte_str): + """ + Detect all the possible encodings of the given byte string. + + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + + detector = UniversalDetector() + detector.feed(byte_str) + detector.close() + + if detector._input_state == InputState.HIGH_BYTE: + results = [] + for prober in detector._charset_probers: + if prober.get_confidence() > detector.MINIMUM_THRESHOLD: + charset_name = prober.charset_name + lower_charset_name = prober.charset_name.lower() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if detector._has_win_bytes: + charset_name = detector.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + results.append({ + 'encoding': charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language, + }) + if len(results) > 0: + return sorted(results, key=lambda result: -result['confidence']) + + return [detector.result] diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py b/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py new file mode 100644 index 00000000..38f32517 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py @@ -0,0 +1,386 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Big5 frequency table +# by Taiwan's Mandarin Promotion Council +# +# +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +#Char to FreqOrder table +BIG5_TABLE_SIZE = 5376 + +BIG5_CHAR_TO_FREQ_ORDER = ( + 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 +3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 +1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 + 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 +3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 +4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 +5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 + 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 + 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 + 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 +2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 +1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 +3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 + 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 +3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 +2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 + 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 +3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 +1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 +5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 + 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 +5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 +1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 + 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 + 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 +3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 +3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 + 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 +2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 +2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 + 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 + 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 +3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 +1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 +1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 +1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 +2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 + 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 +4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 +1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 +5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 +2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 + 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 + 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 + 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 + 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 +5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 + 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 +1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 + 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 + 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 +5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 +1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 + 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 +3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 +4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 +3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 + 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 + 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 +1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 +4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 +3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 +3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 +2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 +5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 +3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 +5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 +1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 +2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 +1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 + 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 +1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 +4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 +3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 + 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 + 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 + 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 +2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 +5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 +1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 +2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 +1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 +1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 +5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 +5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 +5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 +3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 +4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 +4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 +2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 +5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 +3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 + 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 +5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 +5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 +1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 +2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 +3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 +4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 +5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 +3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 +4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 +1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 +1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 +4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 +1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 + 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 +1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 +1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 +3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 + 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 +5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 +2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 +1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 +1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 +5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 + 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 +4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 + 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 +2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 + 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 +1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 +1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 + 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 +4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 +4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 +1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 +3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 +5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 +5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 +1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 +2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 +1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 +3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 +2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 +3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 +2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 +4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 +4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 +3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 + 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 +3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 + 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 +3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 +4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 +3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 +1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 +5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 + 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 +5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 +1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 + 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 +4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 +4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 + 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 +2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 +2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 +3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 +1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 +4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 +2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 +1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 +1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 +2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 +3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 +1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 +5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 +1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 +4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 +1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 + 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 +1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 +4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 +4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 +2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 +1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 +4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 + 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 +5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 +2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 +3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 +4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 + 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 +5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 +5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 +1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 +4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 +4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 +2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 +3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 +3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 +2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 +1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 +4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 +3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 +3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 +2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 +4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 +5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 +3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 +2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 +3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 +1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 +2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 +3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 +4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 +2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 +2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 +5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 +1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 +2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 +1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 +3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 +4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 +2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 +3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 +3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 +2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 +4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 +2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 +3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 +4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 +5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 +3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 + 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 +1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 +4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 +1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 +4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 +5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 + 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 +5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 +5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 +2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 +3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 +2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 +2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 + 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 +1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 +4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 +3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 +3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 + 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 +2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 + 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 +2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 +4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 +1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 +4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 +1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 +3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 + 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 +3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 +5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 +5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 +3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 +3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 +1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 +2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 +5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 +1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 +1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 +3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 + 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 +1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 +4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 +5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 +2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 +3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 + 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 +1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 +2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 +2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 +5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 +5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 +5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 +2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 +2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 +1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 +4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 +3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 +3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 +4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 +4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 +2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 +2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 +5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 +4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 +5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 +4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 + 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 + 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 +1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 +3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 +4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 +1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 +5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 +2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 +2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 +3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 +5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 +1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 +3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 +5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 +1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 +5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 +2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 +3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 +2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 +3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 +3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 +3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 +4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 + 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 +2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 +4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 +3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 +5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 +1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 +5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 + 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 +1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 + 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 +4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 +1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 +4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 +1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 + 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 +3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 +4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 +5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 + 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 +3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 + 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 +2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 +) + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py b/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py new file mode 100644 index 00000000..98f99701 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py @@ -0,0 +1,47 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import Big5DistributionAnalysis +from .mbcssm import BIG5_SM_MODEL + + +class Big5Prober(MultiByteCharSetProber): + def __init__(self): + super(Big5Prober, self).__init__() + self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) + self.distribution_analyzer = Big5DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "Big5" + + @property + def language(self): + return "Chinese" diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py b/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py new file mode 100644 index 00000000..c0395f4a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, + EUCTW_TYPICAL_DISTRIBUTION_RATIO) +from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, + EUCKR_TYPICAL_DISTRIBUTION_RATIO) +from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, + GB2312_TYPICAL_DISTRIBUTION_RATIO) +from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, + BIG5_TYPICAL_DISTRIBUTION_RATIO) +from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, + JIS_TYPICAL_DISTRIBUTION_RATIO) + + +class CharDistributionAnalysis(object): + ENOUGH_DATA_THRESHOLD = 1024 + SURE_YES = 0.99 + SURE_NO = 0.01 + MINIMUM_DATA_THRESHOLD = 3 + + def __init__(self): + # Mapping table to get frequency order from char order (get from + # GetOrder()) + self._char_to_freq_order = None + self._table_size = None # Size of above table + # This is a constant value which varies from language to language, + # used in calculating confidence. See + # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html + # for further detail. + self.typical_distribution_ratio = None + self._done = None + self._total_chars = None + self._freq_chars = None + self.reset() + + def reset(self): + """reset analyser, clear any state""" + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + self._total_chars = 0 # Total characters encountered + # The number of characters whose frequency order is less than 512 + self._freq_chars = 0 + + def feed(self, char, char_len): + """feed a character with known length""" + if char_len == 2: + # we only care about 2-bytes character in our distribution analysis + order = self.get_order(char) + else: + order = -1 + if order >= 0: + self._total_chars += 1 + # order is valid + if order < self._table_size: + if 512 > self._char_to_freq_order[order]: + self._freq_chars += 1 + + def get_confidence(self): + """return confidence based on existing data""" + # if we didn't receive any character in our consideration range, + # return negative answer + if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: + return self.SURE_NO + + if self._total_chars != self._freq_chars: + r = (self._freq_chars / ((self._total_chars - self._freq_chars) + * self.typical_distribution_ratio)) + if r < self.SURE_YES: + return r + + # normalize confidence (we don't want to be 100% sure) + return self.SURE_YES + + def got_enough_data(self): + # It is not necessary to receive all data to draw conclusion. + # For charset detection, certain amount of data is enough + return self._total_chars > self.ENOUGH_DATA_THRESHOLD + + def get_order(self, byte_str): + # We do not handle characters based on the original encoding string, + # but convert this encoding string to a number, here called order. + # This allows multiple encodings of a language to share one frequency + # table. + return -1 + + +class EUCTWDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCTWDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER + self._table_size = EUCTW_TABLE_SIZE + self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-TW encoding, we are interested + # first byte range: 0xc4 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xC4: + return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 + else: + return -1 + + +class EUCKRDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCKRDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER + self._table_size = EUCKR_TABLE_SIZE + self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-KR encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xB0: + return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 + else: + return -1 + + +class GB2312DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(GB2312DistributionAnalysis, self).__init__() + self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER + self._table_size = GB2312_TABLE_SIZE + self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for GB2312 encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0xB0) and (second_char >= 0xA1): + return 94 * (first_char - 0xB0) + second_char - 0xA1 + else: + return -1 + + +class Big5DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(Big5DistributionAnalysis, self).__init__() + self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER + self._table_size = BIG5_TABLE_SIZE + self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for big5 encoding, we are interested + # first byte range: 0xa4 -- 0xfe + # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if first_char >= 0xA4: + if second_char >= 0xA1: + return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 + else: + return 157 * (first_char - 0xA4) + second_char - 0x40 + else: + return -1 + + +class SJISDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(SJISDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for sjis encoding, we are interested + # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe + # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0x81) and (first_char <= 0x9F): + order = 188 * (first_char - 0x81) + elif (first_char >= 0xE0) and (first_char <= 0xEF): + order = 188 * (first_char - 0xE0 + 31) + else: + return -1 + order = order + second_char - 0x40 + if second_char > 0x7F: + order = -1 + return order + + +class EUCJPDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCJPDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-JP encoding, we are interested + # first byte range: 0xa0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + char = byte_str[0] + if char >= 0xA0: + return 94 * (char - 0xA1) + byte_str[1] - 0xa1 + else: + return -1 diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py new file mode 100644 index 00000000..5812cef0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py @@ -0,0 +1,107 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState +from .charsetprober import CharSetProber + + +class CharSetGroupProber(CharSetProber): + def __init__(self, lang_filter=None): + super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) + self._active_num = 0 + self.probers = [] + self._best_guess_prober = None + + def reset(self): + super(CharSetGroupProber, self).reset() + self._active_num = 0 + for prober in self.probers: + if prober: + prober.reset() + prober.active = True + self._active_num += 1 + self._best_guess_prober = None + + @property + def charset_name(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.charset_name + + @property + def language(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.language + + def feed(self, byte_str): + for prober in self.probers: + if not prober: + continue + if not prober.active: + continue + state = prober.feed(byte_str) + if not state: + continue + if state == ProbingState.FOUND_IT: + self._best_guess_prober = prober + self._state = ProbingState.FOUND_IT + return self.state + elif state == ProbingState.NOT_ME: + prober.active = False + self._active_num -= 1 + if self._active_num <= 0: + self._state = ProbingState.NOT_ME + return self.state + return self.state + + def get_confidence(self): + state = self.state + if state == ProbingState.FOUND_IT: + return 0.99 + elif state == ProbingState.NOT_ME: + return 0.01 + best_conf = 0.0 + self._best_guess_prober = None + for prober in self.probers: + if not prober: + continue + if not prober.active: + self.logger.debug('%s not active', prober.charset_name) + continue + conf = prober.get_confidence() + self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) + if best_conf < conf: + best_conf = conf + self._best_guess_prober = prober + if not self._best_guess_prober: + return 0.0 + return best_conf diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py new file mode 100644 index 00000000..eac4e598 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging +import re + +from .enums import ProbingState + + +class CharSetProber(object): + + SHORTCUT_THRESHOLD = 0.95 + + def __init__(self, lang_filter=None): + self._state = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + + def reset(self): + self._state = ProbingState.DETECTING + + @property + def charset_name(self): + return None + + def feed(self, buf): + pass + + @property + def state(self): + return self._state + + def get_confidence(self): + return 0.0 + + @staticmethod + def filter_high_byte_only(buf): + buf = re.sub(b'([\x00-\x7F])+', b' ', buf) + return buf + + @staticmethod + def filter_international_words(buf): + """ + We define three types of bytes: + alphabet: english alphabets [a-zA-Z] + international: international characters [\x80-\xFF] + marker: everything else [^a-zA-Z\x80-\xFF] + + The input buffer can be thought to contain a series of words delimited + by markers. This function works to filter all words that contain at + least one international character. All contiguous sequences of markers + are replaced by a single space ascii character. + + This filter applies to all scripts which do not use English characters. + """ + filtered = bytearray() + + # This regex expression filters out only words that have at-least one + # international character. The word may include one marker character at + # the end. + words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', + buf) + + for word in words: + filtered.extend(word[:-1]) + + # If the last character in the word is a marker, replace it with a + # space as markers shouldn't affect our analysis (they are used + # similarly across all languages and may thus have similar + # frequencies). + last_char = word[-1:] + if not last_char.isalpha() and last_char < b'\x80': + last_char = b' ' + filtered.extend(last_char) + + return filtered + + @staticmethod + def filter_with_english_letters(buf): + """ + Returns a copy of ``buf`` that retains only the sequences of English + alphabet and high byte characters that are not between <> characters. + Also retains English alphabet and high byte characters immediately + before occurrences of >. + + This filter can be applied to all scripts which contain both English + characters and extended ASCII characters, but is currently only used by + ``Latin1Prober``. + """ + filtered = bytearray() + in_tag = False + prev = 0 + + for curr in range(len(buf)): + # Slice here to get bytes instead of an int with Python 3 + buf_char = buf[curr:curr + 1] + # Check if we're coming out of or entering an HTML tag + if buf_char == b'>': + in_tag = False + elif buf_char == b'<': + in_tag = True + + # If current character is not extended-ASCII and not alphabetic... + if buf_char < b'\x80' and not buf_char.isalpha(): + # ...and we're not in a tag + if curr > prev and not in_tag: + # Keep everything after last non-extended-ASCII, + # non-alphabetic character + filtered.extend(buf[prev:curr]) + # Output a space to delimit stretch we kept + filtered.extend(b' ') + prev = curr + 1 + + # If we're not in a tag... + if not in_tag: + # Keep everything after last non-extended-ASCII, non-alphabetic + # character + filtered.extend(buf[prev:]) + + return filtered diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py b/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py @@ -0,0 +1 @@ + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py b/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py new file mode 100644 index 00000000..6d6f93aa --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py @@ -0,0 +1,84 @@ +""" +Script which takes one or more file paths and reports on their detected +encodings + +Example:: + + % chardetect somefile someotherfile + somefile: windows-1252 with confidence 0.5 + someotherfile: ascii with confidence 1.0 + +If no paths are provided, it takes its input from stdin. + +""" + +from __future__ import absolute_import, print_function, unicode_literals + +import argparse +import sys + +from pip._vendor.chardet import __version__ +from pip._vendor.chardet.compat import PY2 +from pip._vendor.chardet.universaldetector import UniversalDetector + + +def description_of(lines, name='stdin'): + """ + Return a string describing the probable encoding of a file or + list of strings. + + :param lines: The lines to get the encoding of. + :type lines: Iterable of bytes + :param name: Name of file or collection of lines + :type name: str + """ + u = UniversalDetector() + for line in lines: + line = bytearray(line) + u.feed(line) + # shortcut out of the loop to save reading further - particularly useful if we read a BOM. + if u.done: + break + u.close() + result = u.result + if PY2: + name = name.decode(sys.getfilesystemencoding(), 'ignore') + if result['encoding']: + return '{}: {} with confidence {}'.format(name, result['encoding'], + result['confidence']) + else: + return '{}: no result'.format(name) + + +def main(argv=None): + """ + Handles command line arguments and gets things started. + + :param argv: List of arguments, as if specified on the command-line. + If None, ``sys.argv[1:]`` is used instead. + :type argv: list of str + """ + # Get command line arguments + parser = argparse.ArgumentParser( + description="Takes one or more file paths and reports their detected \ + encodings") + parser.add_argument('input', + help='File whose encoding we would like to determine. \ + (default: stdin)', + type=argparse.FileType('rb'), nargs='*', + default=[sys.stdin if PY2 else sys.stdin.buffer]) + parser.add_argument('--version', action='version', + version='%(prog)s {}'.format(__version__)) + args = parser.parse_args(argv) + + for f in args.input: + if f.isatty(): + print("You are running chardetect interactively. Press " + + "CTRL-D twice at the start of a blank line to signal the " + + "end of your input. If you want help, run chardetect " + + "--help\n", file=sys.stderr) + print(description_of(f, f.name)) + + +if __name__ == '__main__': + main() diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py b/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py new file mode 100644 index 00000000..68fba44f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py @@ -0,0 +1,88 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging + +from .enums import MachineState + + +class CodingStateMachine(object): + """ + A state machine to verify a byte sequence for a particular encoding. For + each byte the detector receives, it will feed that byte to every active + state machine available, one byte at a time. The state machine changes its + state based on its previous state and the byte it receives. There are 3 + states in a state machine that are of interest to an auto-detector: + + START state: This is the state to start with, or a legal byte sequence + (i.e. a valid code point) for character has been identified. + + ME state: This indicates that the state machine identified a byte sequence + that is specific to the charset it is designed for and that + there is no other possible encoding which can contain this byte + sequence. This will to lead to an immediate positive answer for + the detector. + + ERROR state: This indicates the state machine identified an illegal byte + sequence for that encoding. This will lead to an immediate + negative answer for this encoding. Detector will exclude this + encoding from consideration from here on. + """ + def __init__(self, sm): + self._model = sm + self._curr_byte_pos = 0 + self._curr_char_len = 0 + self._curr_state = None + self.logger = logging.getLogger(__name__) + self.reset() + + def reset(self): + self._curr_state = MachineState.START + + def next_state(self, c): + # for each byte we get its class + # if it is first byte, we also get byte length + byte_class = self._model['class_table'][c] + if self._curr_state == MachineState.START: + self._curr_byte_pos = 0 + self._curr_char_len = self._model['char_len_table'][byte_class] + # from byte's class and state_table, we get its next state + curr_state = (self._curr_state * self._model['class_factor'] + + byte_class) + self._curr_state = self._model['state_table'][curr_state] + self._curr_byte_pos += 1 + return self._curr_state + + def get_current_charlen(self): + return self._curr_char_len + + def get_coding_state_machine(self): + return self._model['name'] + + @property + def language(self): + return self._model['language'] diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/compat.py b/venv/Lib/site-packages/pip/_vendor/chardet/compat.py new file mode 100644 index 00000000..8941572b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/compat.py @@ -0,0 +1,36 @@ +######################## BEGIN LICENSE BLOCK ######################## +# Contributor(s): +# Dan Blanchard +# Ian Cordasco +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import sys + + +if sys.version_info < (3, 0): + PY2 = True + PY3 = False + string_types = (str, unicode) + text_type = unicode + iteritems = dict.iteritems +else: + PY2 = False + PY3 = True + string_types = (bytes, str) + text_type = str + iteritems = dict.items diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py b/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py new file mode 100644 index 00000000..efd793ab --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py @@ -0,0 +1,49 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .chardistribution import EUCKRDistributionAnalysis +from .codingstatemachine import CodingStateMachine +from .mbcharsetprober import MultiByteCharSetProber +from .mbcssm import CP949_SM_MODEL + + +class CP949Prober(MultiByteCharSetProber): + def __init__(self): + super(CP949Prober, self).__init__() + self.coding_sm = CodingStateMachine(CP949_SM_MODEL) + # NOTE: CP949 is a superset of EUC-KR, so the distribution should be + # not different. + self.distribution_analyzer = EUCKRDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "CP949" + + @property + def language(self): + return "Korean" diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/enums.py b/venv/Lib/site-packages/pip/_vendor/chardet/enums.py new file mode 100644 index 00000000..04512072 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/enums.py @@ -0,0 +1,76 @@ +""" +All of the Enums that are used throughout the chardet package. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + + +class InputState(object): + """ + This enum represents the different states a universal detector can be in. + """ + PURE_ASCII = 0 + ESC_ASCII = 1 + HIGH_BYTE = 2 + + +class LanguageFilter(object): + """ + This enum represents the different language filters we can apply to a + ``UniversalDetector``. + """ + CHINESE_SIMPLIFIED = 0x01 + CHINESE_TRADITIONAL = 0x02 + JAPANESE = 0x04 + KOREAN = 0x08 + NON_CJK = 0x10 + ALL = 0x1F + CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL + CJK = CHINESE | JAPANESE | KOREAN + + +class ProbingState(object): + """ + This enum represents the different states a prober can be in. + """ + DETECTING = 0 + FOUND_IT = 1 + NOT_ME = 2 + + +class MachineState(object): + """ + This enum represents the different states a state machine can be in. + """ + START = 0 + ERROR = 1 + ITS_ME = 2 + + +class SequenceLikelihood(object): + """ + This enum represents the likelihood of a character following the previous one. + """ + NEGATIVE = 0 + UNLIKELY = 1 + LIKELY = 2 + POSITIVE = 3 + + @classmethod + def get_num_categories(cls): + """:returns: The number of likelihood categories in the enum.""" + return 4 + + +class CharacterCategory(object): + """ + This enum represents the different categories language models for + ``SingleByteCharsetProber`` put characters into. + + Anything less than CONTROL is considered a letter. + """ + UNDEFINED = 255 + LINE_BREAK = 254 + SYMBOL = 253 + DIGIT = 252 + CONTROL = 251 diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py new file mode 100644 index 00000000..c70493f2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py @@ -0,0 +1,101 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .codingstatemachine import CodingStateMachine +from .enums import LanguageFilter, ProbingState, MachineState +from .escsm import (HZ_SM_MODEL, ISO2022CN_SM_MODEL, ISO2022JP_SM_MODEL, + ISO2022KR_SM_MODEL) + + +class EscCharSetProber(CharSetProber): + """ + This CharSetProber uses a "code scheme" approach for detecting encodings, + whereby easily recognizable escape or shift sequences are relied on to + identify these encodings. + """ + + def __init__(self, lang_filter=None): + super(EscCharSetProber, self).__init__(lang_filter=lang_filter) + self.coding_sm = [] + if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED: + self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL)) + self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL)) + if self.lang_filter & LanguageFilter.JAPANESE: + self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL)) + if self.lang_filter & LanguageFilter.KOREAN: + self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL)) + self.active_sm_count = None + self._detected_charset = None + self._detected_language = None + self._state = None + self.reset() + + def reset(self): + super(EscCharSetProber, self).reset() + for coding_sm in self.coding_sm: + if not coding_sm: + continue + coding_sm.active = True + coding_sm.reset() + self.active_sm_count = len(self.coding_sm) + self._detected_charset = None + self._detected_language = None + + @property + def charset_name(self): + return self._detected_charset + + @property + def language(self): + return self._detected_language + + def get_confidence(self): + if self._detected_charset: + return 0.99 + else: + return 0.00 + + def feed(self, byte_str): + for c in byte_str: + for coding_sm in self.coding_sm: + if not coding_sm or not coding_sm.active: + continue + coding_state = coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + coding_sm.active = False + self.active_sm_count -= 1 + if self.active_sm_count <= 0: + self._state = ProbingState.NOT_ME + return self.state + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + self._detected_charset = coding_sm.get_coding_state_machine() + self._detected_language = coding_sm.language + return self.state + + return self.state diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py b/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py new file mode 100644 index 00000000..0069523a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py @@ -0,0 +1,246 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +HZ_CLS = ( +1,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,0,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,4,0,5,2,0, # 78 - 7f +1,1,1,1,1,1,1,1, # 80 - 87 +1,1,1,1,1,1,1,1, # 88 - 8f +1,1,1,1,1,1,1,1, # 90 - 97 +1,1,1,1,1,1,1,1, # 98 - 9f +1,1,1,1,1,1,1,1, # a0 - a7 +1,1,1,1,1,1,1,1, # a8 - af +1,1,1,1,1,1,1,1, # b0 - b7 +1,1,1,1,1,1,1,1, # b8 - bf +1,1,1,1,1,1,1,1, # c0 - c7 +1,1,1,1,1,1,1,1, # c8 - cf +1,1,1,1,1,1,1,1, # d0 - d7 +1,1,1,1,1,1,1,1, # d8 - df +1,1,1,1,1,1,1,1, # e0 - e7 +1,1,1,1,1,1,1,1, # e8 - ef +1,1,1,1,1,1,1,1, # f0 - f7 +1,1,1,1,1,1,1,1, # f8 - ff +) + +HZ_ST = ( +MachineState.START,MachineState.ERROR, 3,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START, 4,MachineState.ERROR,# 10-17 + 5,MachineState.ERROR, 6,MachineState.ERROR, 5, 5, 4,MachineState.ERROR,# 18-1f + 4,MachineState.ERROR, 4, 4, 4,MachineState.ERROR, 4,MachineState.ERROR,# 20-27 + 4,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 28-2f +) + +HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +HZ_SM_MODEL = {'class_table': HZ_CLS, + 'class_factor': 6, + 'state_table': HZ_ST, + 'char_len_table': HZ_CHAR_LEN_TABLE, + 'name': "HZ-GB-2312", + 'language': 'Chinese'} + +ISO2022CN_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,3,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,4,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022CN_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 20-27 + 5, 6,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,# 38-3f +) + +ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022CN_SM_MODEL = {'class_table': ISO2022CN_CLS, + 'class_factor': 9, + 'state_table': ISO2022CN_ST, + 'char_len_table': ISO2022CN_CHAR_LEN_TABLE, + 'name': "ISO-2022-CN", + 'language': 'Chinese'} + +ISO2022JP_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,2,2, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,7,0,0,0, # 20 - 27 +3,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +6,0,4,0,8,0,0,0, # 40 - 47 +0,9,5,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022JP_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 20-27 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 6,MachineState.ITS_ME,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 38-3f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.START,# 40-47 +) + +ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022JP_SM_MODEL = {'class_table': ISO2022JP_CLS, + 'class_factor': 10, + 'state_table': ISO2022JP_ST, + 'char_len_table': ISO2022JP_CHAR_LEN_TABLE, + 'name': "ISO-2022-JP", + 'language': 'Japanese'} + +ISO2022KR_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,3,0,0,0, # 20 - 27 +0,4,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,5,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022KR_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 10-17 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 20-27 +) + +ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +ISO2022KR_SM_MODEL = {'class_table': ISO2022KR_CLS, + 'class_factor': 6, + 'state_table': ISO2022KR_ST, + 'char_len_table': ISO2022KR_CHAR_LEN_TABLE, + 'name': "ISO-2022-KR", + 'language': 'Korean'} + + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py new file mode 100644 index 00000000..20ce8f7d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState, MachineState +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCJPDistributionAnalysis +from .jpcntx import EUCJPContextAnalysis +from .mbcssm import EUCJP_SM_MODEL + + +class EUCJPProber(MultiByteCharSetProber): + def __init__(self): + super(EUCJPProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) + self.distribution_analyzer = EUCJPDistributionAnalysis() + self.context_analyzer = EUCJPContextAnalysis() + self.reset() + + def reset(self): + super(EUCJPProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return "EUC-JP" + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + # PY3K: byte_str is a byte array, so byte_str[i] is an int, not a byte + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char, char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py b/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py new file mode 100644 index 00000000..b68078cb --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py @@ -0,0 +1,195 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology + +# 128 --> 0.79 +# 256 --> 0.92 +# 512 --> 0.986 +# 1024 --> 0.99944 +# 2048 --> 0.99999 +# +# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 +# Random Distribution Ration = 512 / (2350-512) = 0.279. +# +# Typical Distribution Ratio + +EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 + +EUCKR_TABLE_SIZE = 2352 + +# Char to FreqOrder table , +EUCKR_CHAR_TO_FREQ_ORDER = ( + 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, +1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, +1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, + 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, + 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, + 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, +1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, + 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, + 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, +1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, +1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, +1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, +1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, +1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, + 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, +1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, +1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, +1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, +1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, + 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, +1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, + 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, + 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, +1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, + 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, +1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, + 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, + 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, +1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, +1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, +1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, +1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, + 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, +1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, + 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, + 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, +1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, +1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, +1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, +1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, +1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, +1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, + 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, + 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, + 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, +1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, + 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, +1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, + 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, + 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, +2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, + 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, + 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, +2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, +2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, +2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, + 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, + 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, +2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, + 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, +1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, +2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, +1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, +2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, +2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, +1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, + 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, +2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, +2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, + 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, + 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, +2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, +1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, +2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, +2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, +2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, +2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, +2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, +2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, +1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, +2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, +2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, +2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, +2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, +2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, +1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, +1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, +2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, +1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, +2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, +1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, + 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, +2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, + 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, +2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, + 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, +2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, +2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, + 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, +2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, +1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, + 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, +1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, +2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, +1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, +2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, + 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, +2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, +1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, +2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, +1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, +2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, +1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, + 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, +2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, +2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, + 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, + 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, +1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, +1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, + 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, +2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, +2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, + 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, + 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, + 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, +2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, + 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, + 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, +2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, +2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, + 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, +2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, +1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, + 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, +2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, +2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, +2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, + 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, + 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, + 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, +2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, +2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, +2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, +1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, +2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, + 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 +) + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py new file mode 100644 index 00000000..345a060d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py @@ -0,0 +1,47 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCKRDistributionAnalysis +from .mbcssm import EUCKR_SM_MODEL + + +class EUCKRProber(MultiByteCharSetProber): + def __init__(self): + super(EUCKRProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) + self.distribution_analyzer = EUCKRDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-KR" + + @property + def language(self): + return "Korean" diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py b/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py new file mode 100644 index 00000000..ed7a995a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py @@ -0,0 +1,387 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# EUCTW frequency table +# Converted from big5 work +# by Taiwan's Mandarin Promotion Council +# + +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +# Char to FreqOrder table , +EUCTW_TABLE_SIZE = 5376 + +EUCTW_CHAR_TO_FREQ_ORDER = ( + 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 +3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 +1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 + 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 +3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 +4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 +7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 + 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 + 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 + 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 +2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 +1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 +3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 + 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 +3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 +2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 + 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 +3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 +1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 +7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 + 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 +7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 +1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 + 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 + 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 +3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 +3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 + 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 +2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 +2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 + 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 + 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 +3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 +1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 +1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 +1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 +2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 + 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 +4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 +1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 +7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 +2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 + 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 + 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 + 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 + 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 +7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 + 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 +1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 + 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 + 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 +7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 +1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 + 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 +3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 +4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 +3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 + 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 + 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 +1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 +4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 +3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 +3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 +2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 +7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 +3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 +7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 +1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 +2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 +1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 + 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 +1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 +4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 +3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 + 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 + 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 + 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 +2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 +7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 +1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 +2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 +1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 +1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 +7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 +7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 +7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 +3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 +4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 +1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 +7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 +2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 +7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 +3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 +3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 +7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 +2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 +7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 + 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 +4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 +2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 +7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 +3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 +2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 +2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 + 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 +2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 +1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 +1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 +2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 +1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 +7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 +7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 +2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 +4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 +1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 +7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 + 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 +4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 + 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 +2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 + 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 +1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 +1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 + 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 +3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 +3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 +1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 +3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 +7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 +7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 +1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 +2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 +1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 +3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 +2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 +3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 +2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 +4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 +4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 +3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 + 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 +3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 + 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 +3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 +3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 +3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 +1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 +7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 + 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 +7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 +1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 + 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 +4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 +3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 + 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 +2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 +2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 +3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 +1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 +4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 +2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 +1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 +1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 +2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 +3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 +1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 +7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 +1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 +4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 +1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 + 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 +1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 +3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 +3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 +2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 +1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 +4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 + 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 +7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 +2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 +3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 +4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 + 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 +7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 +7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 +1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 +4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 +3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 +2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 +3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 +3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 +2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 +1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 +4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 +3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 +3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 +2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 +4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 +7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 +3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 +2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 +3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 +1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 +2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 +3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 +4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 +2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 +2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 +7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 +1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 +2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 +1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 +3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 +4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 +2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 +3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 +3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 +2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 +4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 +2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 +3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 +4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 +7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 +3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 + 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 +1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 +4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 +1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 +4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 +7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 + 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 +7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 +2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 +1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 +1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 +3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 + 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 + 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 + 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 +3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 +2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 + 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 +7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 +1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 +3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 +7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 +1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 +7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 +4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 +1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 +2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 +2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 +4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 + 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 + 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 +3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 +3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 +1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 +2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 +7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 +1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 +1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 +3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 + 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 +1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 +4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 +7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 +2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 +3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 + 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 +1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 +2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 +2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 +7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 +7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 +7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 +2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 +2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 +1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 +4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 +3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 +3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 +4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 +4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 +2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 +2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 +7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 +4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 +7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 +2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 +1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 +3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 +4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 +2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 + 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 +2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 +1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 +2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 +2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 +4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 +7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 +1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 +3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 +7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 +1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 +8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 +2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 +8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 +2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 +2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 +8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 +8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 +8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 + 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 +8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 +4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 +3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 +8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 +1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 +8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 + 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 +1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 + 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 +4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 +1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 +4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 +1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 + 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 +3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 +4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 +8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 + 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 +3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 + 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 +2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 +) + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py new file mode 100644 index 00000000..35669cc4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCTWDistributionAnalysis +from .mbcssm import EUCTW_SM_MODEL + +class EUCTWProber(MultiByteCharSetProber): + def __init__(self): + super(EUCTWProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) + self.distribution_analyzer = EUCTWDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-TW" + + @property + def language(self): + return "Taiwan" diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py b/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py new file mode 100644 index 00000000..697837bd --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py @@ -0,0 +1,283 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# GB2312 most frequently used character table +# +# Char to FreqOrder table , from hz6763 + +# 512 --> 0.79 -- 0.79 +# 1024 --> 0.92 -- 0.13 +# 2048 --> 0.98 -- 0.06 +# 6768 --> 1.00 -- 0.02 +# +# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 +# Random Distribution Ration = 512 / (3755 - 512) = 0.157 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR + +GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 + +GB2312_TABLE_SIZE = 3760 + +GB2312_CHAR_TO_FREQ_ORDER = ( +1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, +2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, +2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, + 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, +1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, +1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, + 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, +1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, +2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, +3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, + 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, +1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, + 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, +2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, + 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, +2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, +1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, +3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, + 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, +1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, + 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, +2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, +1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, +3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, +1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, +2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, +1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, + 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, +3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, +3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, + 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, +3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, + 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, +1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, +3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, +2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, +1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, + 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, +1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, +4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, + 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, +3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, +3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, + 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, +1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, +2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, +1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, +1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, + 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, +3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, +3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, +4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, + 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, +3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, +1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, +1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, +4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, + 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, + 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, +3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, +1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, + 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, +1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, +2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, + 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, + 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, + 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, +3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, +4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, +3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, + 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, +2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, +2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, +2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, + 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, +2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, + 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, + 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, + 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, +3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, +2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, +2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, +1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, + 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, +2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, + 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, + 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, +1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, +1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, + 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, + 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, +1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, +2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, +3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, +2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, +2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, +2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, +3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, +1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, +1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, +2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, +1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, +3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, +1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, +1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, +3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, + 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, +2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, +1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, +4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, +1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, +1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, +3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, +1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, + 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, + 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, +1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, + 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, +1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, +1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, + 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, +3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, +4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, +3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, +2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, +2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, +1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, +3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, +2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, +1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, +1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, + 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, +2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, +2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, +3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, +4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, +3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, + 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, +3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, +2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, +1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, + 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, + 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, +3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, +4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, +2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, +1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, +1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, + 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, +1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, +3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, + 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, + 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, +1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, + 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, +1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, + 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, +2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, + 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, +2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, +2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, +1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, +1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, +2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, + 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, +1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, +1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, +2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, +2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, +3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, +1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, +4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, + 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, + 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, +3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, +1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, + 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, +3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, +1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, +4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, +1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, +2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, +1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, + 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, +1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, +3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, + 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, +2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, + 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, +1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, +1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, +1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, +3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, +2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, +3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, +3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, +3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, + 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, +2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, + 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, +2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, + 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, +1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, + 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, + 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, +1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, +3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, +3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, +1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, +1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, +3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, +2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, +2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, +1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, +3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, + 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, +4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, +1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, +2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, +3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, +3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, +1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, + 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, + 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, +2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, + 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, +1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, + 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, +1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, +1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, +1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, +1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, +1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, + 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, + 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 +) + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py b/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py new file mode 100644 index 00000000..8446d2dd --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import GB2312DistributionAnalysis +from .mbcssm import GB2312_SM_MODEL + +class GB2312Prober(MultiByteCharSetProber): + def __init__(self): + super(GB2312Prober, self).__init__() + self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) + self.distribution_analyzer = GB2312DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "GB2312" + + @property + def language(self): + return "Chinese" diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py new file mode 100644 index 00000000..b0e1bf49 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py @@ -0,0 +1,292 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Shy Shalom +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +# This prober doesn't actually recognize a language or a charset. +# It is a helper prober for the use of the Hebrew model probers + +### General ideas of the Hebrew charset recognition ### +# +# Four main charsets exist in Hebrew: +# "ISO-8859-8" - Visual Hebrew +# "windows-1255" - Logical Hebrew +# "ISO-8859-8-I" - Logical Hebrew +# "x-mac-hebrew" - ?? Logical Hebrew ?? +# +# Both "ISO" charsets use a completely identical set of code points, whereas +# "windows-1255" and "x-mac-hebrew" are two different proper supersets of +# these code points. windows-1255 defines additional characters in the range +# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific +# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6. +# x-mac-hebrew defines similar additional code points but with a different +# mapping. +# +# As far as an average Hebrew text with no diacritics is concerned, all four +# charsets are identical with respect to code points. Meaning that for the +# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters +# (including final letters). +# +# The dominant difference between these charsets is their directionality. +# "Visual" directionality means that the text is ordered as if the renderer is +# not aware of a BIDI rendering algorithm. The renderer sees the text and +# draws it from left to right. The text itself when ordered naturally is read +# backwards. A buffer of Visual Hebrew generally looks like so: +# "[last word of first line spelled backwards] [whole line ordered backwards +# and spelled backwards] [first word of first line spelled backwards] +# [end of line] [last word of second line] ... etc' " +# adding punctuation marks, numbers and English text to visual text is +# naturally also "visual" and from left to right. +# +# "Logical" directionality means the text is ordered "naturally" according to +# the order it is read. It is the responsibility of the renderer to display +# the text from right to left. A BIDI algorithm is used to place general +# punctuation marks, numbers and English text in the text. +# +# Texts in x-mac-hebrew are almost impossible to find on the Internet. From +# what little evidence I could find, it seems that its general directionality +# is Logical. +# +# To sum up all of the above, the Hebrew probing mechanism knows about two +# charsets: +# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are +# backwards while line order is natural. For charset recognition purposes +# the line order is unimportant (In fact, for this implementation, even +# word order is unimportant). +# Logical Hebrew - "windows-1255" - normal, naturally ordered text. +# +# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be +# specifically identified. +# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew +# that contain special punctuation marks or diacritics is displayed with +# some unconverted characters showing as question marks. This problem might +# be corrected using another model prober for x-mac-hebrew. Due to the fact +# that x-mac-hebrew texts are so rare, writing another model prober isn't +# worth the effort and performance hit. +# +#### The Prober #### +# +# The prober is divided between two SBCharSetProbers and a HebrewProber, +# all of which are managed, created, fed data, inquired and deleted by the +# SBCSGroupProber. The two SBCharSetProbers identify that the text is in +# fact some kind of Hebrew, Logical or Visual. The final decision about which +# one is it is made by the HebrewProber by combining final-letter scores +# with the scores of the two SBCharSetProbers to produce a final answer. +# +# The SBCSGroupProber is responsible for stripping the original text of HTML +# tags, English characters, numbers, low-ASCII punctuation characters, spaces +# and new lines. It reduces any sequence of such characters to a single space. +# The buffer fed to each prober in the SBCS group prober is pure text in +# high-ASCII. +# The two SBCharSetProbers (model probers) share the same language model: +# Win1255Model. +# The first SBCharSetProber uses the model normally as any other +# SBCharSetProber does, to recognize windows-1255, upon which this model was +# built. The second SBCharSetProber is told to make the pair-of-letter +# lookup in the language model backwards. This in practice exactly simulates +# a visual Hebrew model using the windows-1255 logical Hebrew model. +# +# The HebrewProber is not using any language model. All it does is look for +# final-letter evidence suggesting the text is either logical Hebrew or visual +# Hebrew. Disjointed from the model probers, the results of the HebrewProber +# alone are meaningless. HebrewProber always returns 0.00 as confidence +# since it never identifies a charset by itself. Instead, the pointer to the +# HebrewProber is passed to the model probers as a helper "Name Prober". +# When the Group prober receives a positive identification from any prober, +# it asks for the name of the charset identified. If the prober queried is a +# Hebrew model prober, the model prober forwards the call to the +# HebrewProber to make the final decision. In the HebrewProber, the +# decision is made according to the final-letters scores maintained and Both +# model probers scores. The answer is returned in the form of the name of the +# charset identified, either "windows-1255" or "ISO-8859-8". + +class HebrewProber(CharSetProber): + # windows-1255 / ISO-8859-8 code points of interest + FINAL_KAF = 0xea + NORMAL_KAF = 0xeb + FINAL_MEM = 0xed + NORMAL_MEM = 0xee + FINAL_NUN = 0xef + NORMAL_NUN = 0xf0 + FINAL_PE = 0xf3 + NORMAL_PE = 0xf4 + FINAL_TSADI = 0xf5 + NORMAL_TSADI = 0xf6 + + # Minimum Visual vs Logical final letter score difference. + # If the difference is below this, don't rely solely on the final letter score + # distance. + MIN_FINAL_CHAR_DISTANCE = 5 + + # Minimum Visual vs Logical model score difference. + # If the difference is below this, don't rely at all on the model score + # distance. + MIN_MODEL_DISTANCE = 0.01 + + VISUAL_HEBREW_NAME = "ISO-8859-8" + LOGICAL_HEBREW_NAME = "windows-1255" + + def __init__(self): + super(HebrewProber, self).__init__() + self._final_char_logical_score = None + self._final_char_visual_score = None + self._prev = None + self._before_prev = None + self._logical_prober = None + self._visual_prober = None + self.reset() + + def reset(self): + self._final_char_logical_score = 0 + self._final_char_visual_score = 0 + # The two last characters seen in the previous buffer, + # mPrev and mBeforePrev are initialized to space in order to simulate + # a word delimiter at the beginning of the data + self._prev = ' ' + self._before_prev = ' ' + # These probers are owned by the group prober. + + def set_model_probers(self, logicalProber, visualProber): + self._logical_prober = logicalProber + self._visual_prober = visualProber + + def is_final(self, c): + return c in [self.FINAL_KAF, self.FINAL_MEM, self.FINAL_NUN, + self.FINAL_PE, self.FINAL_TSADI] + + def is_non_final(self, c): + # The normal Tsadi is not a good Non-Final letter due to words like + # 'lechotet' (to chat) containing an apostrophe after the tsadi. This + # apostrophe is converted to a space in FilterWithoutEnglishLetters + # causing the Non-Final tsadi to appear at an end of a word even + # though this is not the case in the original text. + # The letters Pe and Kaf rarely display a related behavior of not being + # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak' + # for example legally end with a Non-Final Pe or Kaf. However, the + # benefit of these letters as Non-Final letters outweighs the damage + # since these words are quite rare. + return c in [self.NORMAL_KAF, self.NORMAL_MEM, + self.NORMAL_NUN, self.NORMAL_PE] + + def feed(self, byte_str): + # Final letter analysis for logical-visual decision. + # Look for evidence that the received buffer is either logical Hebrew + # or visual Hebrew. + # The following cases are checked: + # 1) A word longer than 1 letter, ending with a final letter. This is + # an indication that the text is laid out "naturally" since the + # final letter really appears at the end. +1 for logical score. + # 2) A word longer than 1 letter, ending with a Non-Final letter. In + # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, + # should not end with the Non-Final form of that letter. Exceptions + # to this rule are mentioned above in isNonFinal(). This is an + # indication that the text is laid out backwards. +1 for visual + # score + # 3) A word longer than 1 letter, starting with a final letter. Final + # letters should not appear at the beginning of a word. This is an + # indication that the text is laid out backwards. +1 for visual + # score. + # + # The visual score and logical score are accumulated throughout the + # text and are finally checked against each other in GetCharSetName(). + # No checking for final letters in the middle of words is done since + # that case is not an indication for either Logical or Visual text. + # + # We automatically filter out all 7-bit characters (replace them with + # spaces) so the word boundary detection works properly. [MAP] + + if self.state == ProbingState.NOT_ME: + # Both model probers say it's not them. No reason to continue. + return ProbingState.NOT_ME + + byte_str = self.filter_high_byte_only(byte_str) + + for cur in byte_str: + if cur == ' ': + # We stand on a space - a word just ended + if self._before_prev != ' ': + # next-to-last char was not a space so self._prev is not a + # 1 letter word + if self.is_final(self._prev): + # case (1) [-2:not space][-1:final letter][cur:space] + self._final_char_logical_score += 1 + elif self.is_non_final(self._prev): + # case (2) [-2:not space][-1:Non-Final letter][ + # cur:space] + self._final_char_visual_score += 1 + else: + # Not standing on a space + if ((self._before_prev == ' ') and + (self.is_final(self._prev)) and (cur != ' ')): + # case (3) [-2:space][-1:final letter][cur:not space] + self._final_char_visual_score += 1 + self._before_prev = self._prev + self._prev = cur + + # Forever detecting, till the end or until both model probers return + # ProbingState.NOT_ME (handled above) + return ProbingState.DETECTING + + @property + def charset_name(self): + # Make the decision: is it Logical or Visual? + # If the final letter score distance is dominant enough, rely on it. + finalsub = self._final_char_logical_score - self._final_char_visual_score + if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # It's not dominant enough, try to rely on the model scores instead. + modelsub = (self._logical_prober.get_confidence() + - self._visual_prober.get_confidence()) + if modelsub > self.MIN_MODEL_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if modelsub < -self.MIN_MODEL_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # Still no good, back to final letter distance, maybe it'll save the + # day. + if finalsub < 0.0: + return self.VISUAL_HEBREW_NAME + + # (finalsub > 0 - Logical) or (don't know what to do) default to + # Logical. + return self.LOGICAL_HEBREW_NAME + + @property + def language(self): + return 'Hebrew' + + @property + def state(self): + # Remain active as long as any of the model probers are active. + if (self._logical_prober.state == ProbingState.NOT_ME) and \ + (self._visual_prober.state == ProbingState.NOT_ME): + return ProbingState.NOT_ME + return ProbingState.DETECTING diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py b/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py new file mode 100644 index 00000000..83fc082b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py @@ -0,0 +1,325 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology +# +# Japanese frequency table, applied to both S-JIS and EUC-JP +# They are sorted in order. + +# 128 --> 0.77094 +# 256 --> 0.85710 +# 512 --> 0.92635 +# 1024 --> 0.97130 +# 2048 --> 0.99431 +# +# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 +# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 +# +# Typical Distribution Ratio, 25% of IDR + +JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 + +# Char to FreqOrder table , +JIS_TABLE_SIZE = 4368 + +JIS_CHAR_TO_FREQ_ORDER = ( + 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 +3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 +1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 +2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 +2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 +5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 +1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 +5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 +5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 +5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 +5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 +5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 +5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 +1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 +1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 +1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 +2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 +3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 +3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 + 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 + 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 +1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 + 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 +5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 + 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 + 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 + 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 + 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 + 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 +5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 +5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 +5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 +4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 +5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 +5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 +5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 +5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 +5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 +5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 +5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 +5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 +5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 +3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 +5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 +5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 +5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 +5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 +5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 +5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 +5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 +5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 +5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 +5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 +5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 +5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 +5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 +5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 +5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 +5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 +5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 +5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 +5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 +5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 +5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 +5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 +5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 +5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 +5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 +5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 +5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 +5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 +5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 +5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 +5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 +5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 +5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 +5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 +5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 +5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 +5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 +5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 +6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 +6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 +6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 +6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 +6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 +6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 +6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 +6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 +4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 + 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 + 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 +1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 +1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 + 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 +3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 +3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 + 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 +3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 +3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 + 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 +2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 + 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 +3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 +1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 + 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 +1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 + 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 +2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 +2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 +2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 +2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 +1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 +1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 +1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 +1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 +2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 +1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 +2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 +1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 +1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 +1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 +1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 +1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 +1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 + 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 + 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 +1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 +2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 +2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 +2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 +3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 +3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 + 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 +3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 +1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 + 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 +2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 +1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 + 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 +3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 +4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 +2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 +1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 +2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 +1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 + 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 + 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 +1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 +2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 +2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 +2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 +3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 +1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 +2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 + 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 + 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 + 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 +1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 +2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 + 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 +1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 +1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 + 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 +1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 +1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 +1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 + 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 +2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 + 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 +2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 +3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 +2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 +1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 +6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 +1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 +2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 +1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 + 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 + 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 +3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 +3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 +1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 +1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 +1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 +1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 + 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 + 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 +2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 + 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 +3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 +2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 + 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 +1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 +2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 + 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 +1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 + 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 +4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 +2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 +1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 + 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 +1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 +2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 + 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 +6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 +1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 +1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 +2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 +3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 + 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 +3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 +1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 + 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 +1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 + 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 +3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 + 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 +2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 + 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 +4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 +2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 +1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 +1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 +1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 + 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 +1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 +3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 +1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 +3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 + 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 + 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 + 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 +2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 +1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 + 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 +1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 + 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 +1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 + 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 + 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 + 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 +1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 +1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 +2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 +4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 + 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 +1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 + 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 +1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 +3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 +1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 +2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 +2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 +1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 +1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 +2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 + 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 +2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 +1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 +1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 +1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 +1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 +3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 +2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 +2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 + 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 +3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 +3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 +1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 +2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 +1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 +2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 +) + + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py b/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py new file mode 100644 index 00000000..20044e4b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +# This is hiragana 2-char sequence table, the number in each cell represents its frequency category +jp2CharContext = ( +(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1), +(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4), +(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2), +(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4), +(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4), +(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3), +(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3), +(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3), +(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4), +(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3), +(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4), +(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3), +(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5), +(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3), +(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5), +(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4), +(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4), +(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3), +(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3), +(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3), +(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5), +(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4), +(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5), +(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3), +(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4), +(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4), +(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4), +(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1), +(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), +(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3), +(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0), +(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3), +(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3), +(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5), +(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4), +(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5), +(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3), +(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3), +(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3), +(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3), +(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4), +(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4), +(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2), +(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3), +(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3), +(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3), +(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3), +(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4), +(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3), +(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4), +(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3), +(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3), +(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4), +(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4), +(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3), +(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4), +(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4), +(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3), +(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4), +(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4), +(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4), +(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3), +(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2), +(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2), +(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3), +(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3), +(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5), +(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3), +(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4), +(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4), +(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1), +(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2), +(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3), +(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1), +) + +class JapaneseContextAnalysis(object): + NUM_OF_CATEGORY = 6 + DONT_KNOW = -1 + ENOUGH_REL_THRESHOLD = 100 + MAX_REL_THRESHOLD = 1000 + MINIMUM_DATA_THRESHOLD = 4 + + def __init__(self): + self._total_rel = None + self._rel_sample = None + self._need_to_skip_char_num = None + self._last_char_order = None + self._done = None + self.reset() + + def reset(self): + self._total_rel = 0 # total sequence received + # category counters, each integer counts sequence in its category + self._rel_sample = [0] * self.NUM_OF_CATEGORY + # if last byte in current buffer is not the last byte of a character, + # we need to know how many bytes to skip in next buffer + self._need_to_skip_char_num = 0 + self._last_char_order = -1 # The order of previous char + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + + def feed(self, byte_str, num_bytes): + if self._done: + return + + # The buffer we got is byte oriented, and a character may span in more than one + # buffers. In case the last one or two byte in last buffer is not + # complete, we record how many byte needed to complete that character + # and skip these bytes here. We can choose to record those bytes as + # well and analyse the character once it is complete, but since a + # character will not make much difference, by simply skipping + # this character will simply our logic and improve performance. + i = self._need_to_skip_char_num + while i < num_bytes: + order, char_len = self.get_order(byte_str[i:i + 2]) + i += char_len + if i > num_bytes: + self._need_to_skip_char_num = i - num_bytes + self._last_char_order = -1 + else: + if (order != -1) and (self._last_char_order != -1): + self._total_rel += 1 + if self._total_rel > self.MAX_REL_THRESHOLD: + self._done = True + break + self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 + self._last_char_order = order + + def got_enough_data(self): + return self._total_rel > self.ENOUGH_REL_THRESHOLD + + def get_confidence(self): + # This is just one way to calculate confidence. It works well for me. + if self._total_rel > self.MINIMUM_DATA_THRESHOLD: + return (self._total_rel - self._rel_sample[0]) / self._total_rel + else: + return self.DONT_KNOW + + def get_order(self, byte_str): + return -1, 1 + +class SJISContextAnalysis(JapaneseContextAnalysis): + def __init__(self): + super(SJISContextAnalysis, self).__init__() + self._charset_name = "SHIFT_JIS" + + @property + def charset_name(self): + return self._charset_name + + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): + char_len = 2 + if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): + self._charset_name = "CP932" + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 202) and (0x9F <= second_char <= 0xF1): + return second_char - 0x9F, char_len + + return -1, char_len + +class EUCJPContextAnalysis(JapaneseContextAnalysis): + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): + char_len = 2 + elif first_char == 0x8F: + char_len = 3 + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): + return second_char - 0xA1, char_len + + return -1, char_len + + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py new file mode 100644 index 00000000..e963a509 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py @@ -0,0 +1,4650 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +BULGARIAN_LANG_MODEL = { + 63: { # 'e' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 1, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 1, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 45: { # '\xad' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 1, # 'М' + 36: 0, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 31: { # 'А' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 2, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 1, # 'К' + 46: 2, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 1, # 'О' + 30: 2, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 2, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 1, # 'е' + 23: 1, # 'ж' + 15: 2, # 'з' + 2: 0, # 'и' + 26: 2, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 0, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 1, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 32: { # 'Б' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 2, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 1, # 'Е' + 55: 1, # 'Ж' + 47: 2, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 1, # 'Щ' + 61: 2, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 1, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 35: { # 'В' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 2, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 2, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 43: { # 'Г' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 1, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 1, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 37: { # 'Д' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 2, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 44: { # 'Е' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 2, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 2, # 'Ф' + 49: 1, # 'Х' + 53: 2, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 0, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 0, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 1, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 55: { # 'Ж' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 47: { # 'З' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 2, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 1, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 40: { # 'И' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 2, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 2, # 'Л' + 38: 2, # 'М' + 36: 2, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 2, # 'Я' + 1: 1, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 1, # 'е' + 23: 0, # 'ж' + 15: 3, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 0, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 0, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 59: { # 'Й' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 1, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 33: { # 'К' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 46: { # 'Л' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 2, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 38: { # 'М' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 0, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 36: { # 'Н' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 2, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 1, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 1, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 2, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 41: { # 'О' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 1, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 1, # 'Й' + 33: 2, # 'К' + 46: 2, # 'Л' + 38: 2, # 'М' + 36: 2, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 0, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 1, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 0, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 0, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 2, # 'ч' + 27: 0, # 'ш' + 24: 2, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 30: { # 'П' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 2, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 39: { # 'Р' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 2, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 1, # 'с' + 5: 0, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 28: { # 'С' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 3, # 'А' + 32: 2, # 'Б' + 35: 2, # 'В' + 43: 1, # 'Г' + 37: 2, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 2, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 1, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 34: { # 'Т' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 2, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 2, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 1, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 1, # 'Ъ' + 60: 0, # 'Ю' + 56: 1, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 3, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 51: { # 'У' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 2, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 2, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 2, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 2, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 2, # 'с' + 5: 1, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 48: { # 'Ф' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 2, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 1, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 2, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 49: { # 'Х' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 1, # 'П' + 39: 1, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 53: { # 'Ц' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 2, # 'И' + 59: 0, # 'Й' + 33: 2, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 2, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 1, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 50: { # 'Ч' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 2, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 2, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 54: { # 'Ш' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 1, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 1, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 2, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 1, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 57: { # 'Щ' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 1, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 1, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 1, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 61: { # 'Ъ' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 1, # 'Ж' + 47: 1, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 2, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 1, # 'П' + 39: 2, # 'Р' + 28: 1, # 'С' + 34: 1, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 1, # 'Х' + 53: 1, # 'Ц' + 50: 1, # 'Ч' + 54: 1, # 'Ш' + 57: 1, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 1, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 60: { # 'Ю' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 1, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 0, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 0, # 'е' + 23: 2, # 'ж' + 15: 1, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 0, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 56: { # 'Я' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 1, # 'В' + 43: 1, # 'Г' + 37: 1, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 1, # 'Л' + 38: 1, # 'М' + 36: 1, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 2, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 1, # 'и' + 26: 1, # 'й' + 12: 1, # 'к' + 10: 1, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 0, # 'о' + 13: 2, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 1: { # 'а' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 1, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 18: { # 'б' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 3, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 0, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 2, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 3, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 9: { # 'в' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 1, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 0, # 'в' + 20: 2, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 20: { # 'г' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 11: { # 'д' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 2, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 1, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 3: { # 'е' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 2, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 23: { # 'ж' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 15: { # 'з' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 2: { # 'и' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 1, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 1, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 1, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 1, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 26: { # 'й' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 2, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 2, # 'з' + 2: 1, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 12: { # 'к' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 1, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 1, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 3, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 10: { # 'л' + 63: 1, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 1, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 1, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 3, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 14: { # 'м' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 1, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 1, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 6: { # 'н' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 1, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 2, # 'б' + 9: 2, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 2, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 3, # 'ф' + 25: 2, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 2, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 4: { # 'о' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 2, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 3, # 'и' + 26: 3, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 2, # 'у' + 29: 3, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 3, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 13: { # 'п' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 3, # 'л' + 14: 1, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 7: { # 'р' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 3, # 'е' + 23: 3, # 'ж' + 15: 2, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 1, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 3, # 'х' + 22: 3, # 'ц' + 21: 2, # 'ч' + 27: 3, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 1, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 8: { # 'с' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 2, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 2, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 2, # 'ш' + 24: 0, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 5: { # 'т' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 2, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 3, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 2, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 3, # 'ъ' + 52: 2, # 'ь' + 42: 2, # 'ю' + 16: 3, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 19: { # 'у' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 2, # 'и' + 26: 2, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 2, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 3, # 'ш' + 24: 2, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 29: { # 'ф' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 1, # 'в' + 20: 1, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 2, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 2, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 25: { # 'х' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 2, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 1, # 'п' + 7: 3, # 'р' + 8: 1, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 1, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 22: { # 'ц' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 2, # 'в' + 20: 1, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 1, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 2, # 'к' + 10: 1, # 'л' + 14: 1, # 'м' + 6: 1, # 'н' + 4: 2, # 'о' + 13: 1, # 'п' + 7: 1, # 'р' + 8: 1, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 1, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 0, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 21: { # 'ч' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 1, # 'б' + 9: 3, # 'в' + 20: 1, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 1, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 2, # 'р' + 8: 0, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 1, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 27: { # 'ш' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 2, # 'в' + 20: 0, # 'г' + 11: 1, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 3, # 'к' + 10: 2, # 'л' + 14: 1, # 'м' + 6: 3, # 'н' + 4: 2, # 'о' + 13: 2, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 1, # 'т' + 19: 2, # 'у' + 29: 1, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 1, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 2, # 'ъ' + 52: 1, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 24: { # 'щ' + 63: 1, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 3, # 'а' + 18: 0, # 'б' + 9: 1, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 3, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 3, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 2, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 1, # 'р' + 8: 0, # 'с' + 5: 2, # 'т' + 19: 3, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 1, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 2, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 17: { # 'ъ' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 3, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 3, # 'ж' + 15: 3, # 'з' + 2: 1, # 'и' + 26: 2, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 3, # 'о' + 13: 3, # 'п' + 7: 3, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 2, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 2, # 'ш' + 24: 3, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 2, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 52: { # 'ь' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 1, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 1, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 1, # 'н' + 4: 3, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 1, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 1, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 1, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 42: { # 'ю' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 1, # 'а' + 18: 2, # 'б' + 9: 1, # 'в' + 20: 2, # 'г' + 11: 2, # 'д' + 3: 1, # 'е' + 23: 2, # 'ж' + 15: 2, # 'з' + 2: 1, # 'и' + 26: 1, # 'й' + 12: 2, # 'к' + 10: 2, # 'л' + 14: 2, # 'м' + 6: 2, # 'н' + 4: 1, # 'о' + 13: 1, # 'п' + 7: 2, # 'р' + 8: 2, # 'с' + 5: 2, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 1, # 'х' + 22: 2, # 'ц' + 21: 3, # 'ч' + 27: 1, # 'ш' + 24: 1, # 'щ' + 17: 1, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 16: { # 'я' + 63: 0, # 'e' + 45: 1, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 3, # 'б' + 9: 3, # 'в' + 20: 2, # 'г' + 11: 3, # 'д' + 3: 2, # 'е' + 23: 1, # 'ж' + 15: 2, # 'з' + 2: 1, # 'и' + 26: 2, # 'й' + 12: 3, # 'к' + 10: 3, # 'л' + 14: 3, # 'м' + 6: 3, # 'н' + 4: 1, # 'о' + 13: 2, # 'п' + 7: 2, # 'р' + 8: 3, # 'с' + 5: 3, # 'т' + 19: 1, # 'у' + 29: 1, # 'ф' + 25: 3, # 'х' + 22: 2, # 'ц' + 21: 1, # 'ч' + 27: 1, # 'ш' + 24: 2, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 1, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 58: { # 'є' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, + 62: { # '№' + 63: 0, # 'e' + 45: 0, # '\xad' + 31: 0, # 'А' + 32: 0, # 'Б' + 35: 0, # 'В' + 43: 0, # 'Г' + 37: 0, # 'Д' + 44: 0, # 'Е' + 55: 0, # 'Ж' + 47: 0, # 'З' + 40: 0, # 'И' + 59: 0, # 'Й' + 33: 0, # 'К' + 46: 0, # 'Л' + 38: 0, # 'М' + 36: 0, # 'Н' + 41: 0, # 'О' + 30: 0, # 'П' + 39: 0, # 'Р' + 28: 0, # 'С' + 34: 0, # 'Т' + 51: 0, # 'У' + 48: 0, # 'Ф' + 49: 0, # 'Х' + 53: 0, # 'Ц' + 50: 0, # 'Ч' + 54: 0, # 'Ш' + 57: 0, # 'Щ' + 61: 0, # 'Ъ' + 60: 0, # 'Ю' + 56: 0, # 'Я' + 1: 0, # 'а' + 18: 0, # 'б' + 9: 0, # 'в' + 20: 0, # 'г' + 11: 0, # 'д' + 3: 0, # 'е' + 23: 0, # 'ж' + 15: 0, # 'з' + 2: 0, # 'и' + 26: 0, # 'й' + 12: 0, # 'к' + 10: 0, # 'л' + 14: 0, # 'м' + 6: 0, # 'н' + 4: 0, # 'о' + 13: 0, # 'п' + 7: 0, # 'р' + 8: 0, # 'с' + 5: 0, # 'т' + 19: 0, # 'у' + 29: 0, # 'ф' + 25: 0, # 'х' + 22: 0, # 'ц' + 21: 0, # 'ч' + 27: 0, # 'ш' + 24: 0, # 'щ' + 17: 0, # 'ъ' + 52: 0, # 'ь' + 42: 0, # 'ю' + 16: 0, # 'я' + 58: 0, # 'є' + 62: 0, # '№' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +ISO_8859_5_BULGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 77, # 'A' + 66: 90, # 'B' + 67: 99, # 'C' + 68: 100, # 'D' + 69: 72, # 'E' + 70: 109, # 'F' + 71: 107, # 'G' + 72: 101, # 'H' + 73: 79, # 'I' + 74: 185, # 'J' + 75: 81, # 'K' + 76: 102, # 'L' + 77: 76, # 'M' + 78: 94, # 'N' + 79: 82, # 'O' + 80: 110, # 'P' + 81: 186, # 'Q' + 82: 108, # 'R' + 83: 91, # 'S' + 84: 74, # 'T' + 85: 119, # 'U' + 86: 84, # 'V' + 87: 96, # 'W' + 88: 111, # 'X' + 89: 187, # 'Y' + 90: 115, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 65, # 'a' + 98: 69, # 'b' + 99: 70, # 'c' + 100: 66, # 'd' + 101: 63, # 'e' + 102: 68, # 'f' + 103: 112, # 'g' + 104: 103, # 'h' + 105: 92, # 'i' + 106: 194, # 'j' + 107: 104, # 'k' + 108: 95, # 'l' + 109: 86, # 'm' + 110: 87, # 'n' + 111: 71, # 'o' + 112: 116, # 'p' + 113: 195, # 'q' + 114: 85, # 'r' + 115: 93, # 's' + 116: 97, # 't' + 117: 113, # 'u' + 118: 196, # 'v' + 119: 197, # 'w' + 120: 198, # 'x' + 121: 199, # 'y' + 122: 200, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 194, # '\x80' + 129: 195, # '\x81' + 130: 196, # '\x82' + 131: 197, # '\x83' + 132: 198, # '\x84' + 133: 199, # '\x85' + 134: 200, # '\x86' + 135: 201, # '\x87' + 136: 202, # '\x88' + 137: 203, # '\x89' + 138: 204, # '\x8a' + 139: 205, # '\x8b' + 140: 206, # '\x8c' + 141: 207, # '\x8d' + 142: 208, # '\x8e' + 143: 209, # '\x8f' + 144: 210, # '\x90' + 145: 211, # '\x91' + 146: 212, # '\x92' + 147: 213, # '\x93' + 148: 214, # '\x94' + 149: 215, # '\x95' + 150: 216, # '\x96' + 151: 217, # '\x97' + 152: 218, # '\x98' + 153: 219, # '\x99' + 154: 220, # '\x9a' + 155: 221, # '\x9b' + 156: 222, # '\x9c' + 157: 223, # '\x9d' + 158: 224, # '\x9e' + 159: 225, # '\x9f' + 160: 81, # '\xa0' + 161: 226, # 'Ё' + 162: 227, # 'Ђ' + 163: 228, # 'Ѓ' + 164: 229, # 'Є' + 165: 230, # 'Ѕ' + 166: 105, # 'І' + 167: 231, # 'Ї' + 168: 232, # 'Ј' + 169: 233, # 'Љ' + 170: 234, # 'Њ' + 171: 235, # 'Ћ' + 172: 236, # 'Ќ' + 173: 45, # '\xad' + 174: 237, # 'Ў' + 175: 238, # 'Џ' + 176: 31, # 'А' + 177: 32, # 'Б' + 178: 35, # 'В' + 179: 43, # 'Г' + 180: 37, # 'Д' + 181: 44, # 'Е' + 182: 55, # 'Ж' + 183: 47, # 'З' + 184: 40, # 'И' + 185: 59, # 'Й' + 186: 33, # 'К' + 187: 46, # 'Л' + 188: 38, # 'М' + 189: 36, # 'Н' + 190: 41, # 'О' + 191: 30, # 'П' + 192: 39, # 'Р' + 193: 28, # 'С' + 194: 34, # 'Т' + 195: 51, # 'У' + 196: 48, # 'Ф' + 197: 49, # 'Х' + 198: 53, # 'Ц' + 199: 50, # 'Ч' + 200: 54, # 'Ш' + 201: 57, # 'Щ' + 202: 61, # 'Ъ' + 203: 239, # 'Ы' + 204: 67, # 'Ь' + 205: 240, # 'Э' + 206: 60, # 'Ю' + 207: 56, # 'Я' + 208: 1, # 'а' + 209: 18, # 'б' + 210: 9, # 'в' + 211: 20, # 'г' + 212: 11, # 'д' + 213: 3, # 'е' + 214: 23, # 'ж' + 215: 15, # 'з' + 216: 2, # 'и' + 217: 26, # 'й' + 218: 12, # 'к' + 219: 10, # 'л' + 220: 14, # 'м' + 221: 6, # 'н' + 222: 4, # 'о' + 223: 13, # 'п' + 224: 7, # 'р' + 225: 8, # 'с' + 226: 5, # 'т' + 227: 19, # 'у' + 228: 29, # 'ф' + 229: 25, # 'х' + 230: 22, # 'ц' + 231: 21, # 'ч' + 232: 27, # 'ш' + 233: 24, # 'щ' + 234: 17, # 'ъ' + 235: 75, # 'ы' + 236: 52, # 'ь' + 237: 241, # 'э' + 238: 42, # 'ю' + 239: 16, # 'я' + 240: 62, # '№' + 241: 242, # 'ё' + 242: 243, # 'ђ' + 243: 244, # 'ѓ' + 244: 58, # 'є' + 245: 245, # 'ѕ' + 246: 98, # 'і' + 247: 246, # 'ї' + 248: 247, # 'ј' + 249: 248, # 'љ' + 250: 249, # 'њ' + 251: 250, # 'ћ' + 252: 251, # 'ќ' + 253: 91, # '§' + 254: 252, # 'ў' + 255: 253, # 'џ' +} + +ISO_8859_5_BULGARIAN_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-5', + language='Bulgarian', + char_to_order_map=ISO_8859_5_BULGARIAN_CHAR_TO_ORDER, + language_model=BULGARIAN_LANG_MODEL, + typical_positive_ratio=0.969392, + keep_ascii_letters=False, + alphabet='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя') + +WINDOWS_1251_BULGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 77, # 'A' + 66: 90, # 'B' + 67: 99, # 'C' + 68: 100, # 'D' + 69: 72, # 'E' + 70: 109, # 'F' + 71: 107, # 'G' + 72: 101, # 'H' + 73: 79, # 'I' + 74: 185, # 'J' + 75: 81, # 'K' + 76: 102, # 'L' + 77: 76, # 'M' + 78: 94, # 'N' + 79: 82, # 'O' + 80: 110, # 'P' + 81: 186, # 'Q' + 82: 108, # 'R' + 83: 91, # 'S' + 84: 74, # 'T' + 85: 119, # 'U' + 86: 84, # 'V' + 87: 96, # 'W' + 88: 111, # 'X' + 89: 187, # 'Y' + 90: 115, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 65, # 'a' + 98: 69, # 'b' + 99: 70, # 'c' + 100: 66, # 'd' + 101: 63, # 'e' + 102: 68, # 'f' + 103: 112, # 'g' + 104: 103, # 'h' + 105: 92, # 'i' + 106: 194, # 'j' + 107: 104, # 'k' + 108: 95, # 'l' + 109: 86, # 'm' + 110: 87, # 'n' + 111: 71, # 'o' + 112: 116, # 'p' + 113: 195, # 'q' + 114: 85, # 'r' + 115: 93, # 's' + 116: 97, # 't' + 117: 113, # 'u' + 118: 196, # 'v' + 119: 197, # 'w' + 120: 198, # 'x' + 121: 199, # 'y' + 122: 200, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 206, # 'Ђ' + 129: 207, # 'Ѓ' + 130: 208, # '‚' + 131: 209, # 'ѓ' + 132: 210, # '„' + 133: 211, # '…' + 134: 212, # '†' + 135: 213, # '‡' + 136: 120, # '€' + 137: 214, # '‰' + 138: 215, # 'Љ' + 139: 216, # '‹' + 140: 217, # 'Њ' + 141: 218, # 'Ќ' + 142: 219, # 'Ћ' + 143: 220, # 'Џ' + 144: 221, # 'ђ' + 145: 78, # '‘' + 146: 64, # '’' + 147: 83, # '“' + 148: 121, # '”' + 149: 98, # '•' + 150: 117, # '–' + 151: 105, # '—' + 152: 222, # None + 153: 223, # '™' + 154: 224, # 'љ' + 155: 225, # '›' + 156: 226, # 'њ' + 157: 227, # 'ќ' + 158: 228, # 'ћ' + 159: 229, # 'џ' + 160: 88, # '\xa0' + 161: 230, # 'Ў' + 162: 231, # 'ў' + 163: 232, # 'Ј' + 164: 233, # '¤' + 165: 122, # 'Ґ' + 166: 89, # '¦' + 167: 106, # '§' + 168: 234, # 'Ё' + 169: 235, # '©' + 170: 236, # 'Є' + 171: 237, # '«' + 172: 238, # '¬' + 173: 45, # '\xad' + 174: 239, # '®' + 175: 240, # 'Ї' + 176: 73, # '°' + 177: 80, # '±' + 178: 118, # 'І' + 179: 114, # 'і' + 180: 241, # 'ґ' + 181: 242, # 'µ' + 182: 243, # '¶' + 183: 244, # '·' + 184: 245, # 'ё' + 185: 62, # '№' + 186: 58, # 'є' + 187: 246, # '»' + 188: 247, # 'ј' + 189: 248, # 'Ѕ' + 190: 249, # 'ѕ' + 191: 250, # 'ї' + 192: 31, # 'А' + 193: 32, # 'Б' + 194: 35, # 'В' + 195: 43, # 'Г' + 196: 37, # 'Д' + 197: 44, # 'Е' + 198: 55, # 'Ж' + 199: 47, # 'З' + 200: 40, # 'И' + 201: 59, # 'Й' + 202: 33, # 'К' + 203: 46, # 'Л' + 204: 38, # 'М' + 205: 36, # 'Н' + 206: 41, # 'О' + 207: 30, # 'П' + 208: 39, # 'Р' + 209: 28, # 'С' + 210: 34, # 'Т' + 211: 51, # 'У' + 212: 48, # 'Ф' + 213: 49, # 'Х' + 214: 53, # 'Ц' + 215: 50, # 'Ч' + 216: 54, # 'Ш' + 217: 57, # 'Щ' + 218: 61, # 'Ъ' + 219: 251, # 'Ы' + 220: 67, # 'Ь' + 221: 252, # 'Э' + 222: 60, # 'Ю' + 223: 56, # 'Я' + 224: 1, # 'а' + 225: 18, # 'б' + 226: 9, # 'в' + 227: 20, # 'г' + 228: 11, # 'д' + 229: 3, # 'е' + 230: 23, # 'ж' + 231: 15, # 'з' + 232: 2, # 'и' + 233: 26, # 'й' + 234: 12, # 'к' + 235: 10, # 'л' + 236: 14, # 'м' + 237: 6, # 'н' + 238: 4, # 'о' + 239: 13, # 'п' + 240: 7, # 'р' + 241: 8, # 'с' + 242: 5, # 'т' + 243: 19, # 'у' + 244: 29, # 'ф' + 245: 25, # 'х' + 246: 22, # 'ц' + 247: 21, # 'ч' + 248: 27, # 'ш' + 249: 24, # 'щ' + 250: 17, # 'ъ' + 251: 75, # 'ы' + 252: 52, # 'ь' + 253: 253, # 'э' + 254: 42, # 'ю' + 255: 16, # 'я' +} + +WINDOWS_1251_BULGARIAN_MODEL = SingleByteCharSetModel(charset_name='windows-1251', + language='Bulgarian', + char_to_order_map=WINDOWS_1251_BULGARIAN_CHAR_TO_ORDER, + language_model=BULGARIAN_LANG_MODEL, + typical_positive_ratio=0.969392, + keep_ascii_letters=False, + alphabet='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py new file mode 100644 index 00000000..d99528ed --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py @@ -0,0 +1,4398 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +GREEK_LANG_MODEL = { + 60: { # 'e' + 60: 2, # 'e' + 55: 1, # 'o' + 58: 2, # 't' + 36: 1, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 55: { # 'o' + 60: 0, # 'e' + 55: 2, # 'o' + 58: 2, # 't' + 36: 1, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 1, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 58: { # 't' + 60: 2, # 'e' + 55: 1, # 'o' + 58: 1, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 1, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 36: { # '·' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 61: { # 'Ά' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 1, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 1, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 46: { # 'Έ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 2, # 'β' + 20: 2, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 2, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 1, # 'σ' + 2: 2, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 54: { # 'Ό' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 2, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 31: { # 'Α' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 2, # 'Β' + 43: 2, # 'Γ' + 41: 1, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 2, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 1, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 2, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 2, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 1, # 'θ' + 5: 0, # 'ι' + 11: 2, # 'κ' + 16: 3, # 'λ' + 10: 2, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 2, # 'ς' + 7: 2, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 51: { # 'Β' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 1, # 'Ι' + 44: 0, # 'Κ' + 53: 1, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 2, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 43: { # 'Γ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 1, # 'Α' + 51: 0, # 'Β' + 43: 2, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 1, # 'Κ' + 53: 1, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 1, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 41: { # 'Δ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 1, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 34: { # 'Ε' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 2, # 'Γ' + 41: 2, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 1, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 2, # 'Χ' + 57: 2, # 'Ω' + 17: 3, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 3, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 1, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 1, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 2, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 2, # 'τ' + 12: 2, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 1, # 'ύ' + 27: 0, # 'ώ' + }, + 40: { # 'Η' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 1, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 2, # 'Θ' + 47: 0, # 'Ι' + 44: 2, # 'Κ' + 53: 0, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 52: { # 'Θ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 1, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 47: { # 'Ι' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 1, # 'Β' + 43: 1, # 'Γ' + 41: 2, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 2, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 1, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 1, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 44: { # 'Κ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 1, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 1, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 1, # 'Ω' + 17: 3, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 53: { # 'Λ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 2, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 2, # 'Σ' + 33: 0, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 1, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 38: { # 'Μ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 2, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 2, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 2, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 49: { # 'Ν' + 60: 2, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 1, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 1, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 59: { # 'Ξ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 1, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 39: { # 'Ο' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 1, # 'Β' + 43: 2, # 'Γ' + 41: 2, # 'Δ' + 34: 2, # 'Ε' + 40: 1, # 'Η' + 52: 2, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 2, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 2, # 'Φ' + 50: 2, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 2, # 'κ' + 16: 2, # 'λ' + 10: 2, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 2, # 'υ' + 28: 1, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 35: { # 'Π' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 2, # 'Λ' + 38: 1, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 2, # 'Ω' + 17: 2, # 'ά' + 18: 1, # 'έ' + 22: 1, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 3, # 'ώ' + }, + 48: { # 'Ρ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 1, # 'Γ' + 41: 1, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 1, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 1, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 37: { # 'Σ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 1, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 0, # 'Λ' + 38: 2, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 2, # 'Υ' + 56: 0, # 'Φ' + 50: 2, # 'Χ' + 57: 2, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 2, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 2, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 2, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 33: { # 'Τ' + 60: 0, # 'e' + 55: 1, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 2, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 2, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 1, # 'Τ' + 45: 1, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 2, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 2, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 3, # 'ώ' + }, + 45: { # 'Υ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 2, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 2, # 'Η' + 52: 2, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 1, # 'Λ' + 38: 2, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 2, # 'Π' + 48: 1, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 56: { # 'Φ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 1, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 1, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 2, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 1, # 'ύ' + 27: 1, # 'ώ' + }, + 50: { # 'Χ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 1, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 2, # 'Ε' + 40: 2, # 'Η' + 52: 0, # 'Θ' + 47: 2, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 1, # 'Ν' + 59: 0, # 'Ξ' + 39: 1, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 1, # 'Χ' + 57: 1, # 'Ω' + 17: 2, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 2, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 57: { # 'Ω' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 1, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 1, # 'Λ' + 38: 0, # 'Μ' + 49: 2, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 2, # 'Ρ' + 37: 2, # 'Σ' + 33: 2, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 2, # 'ρ' + 14: 2, # 'ς' + 7: 2, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 17: { # 'ά' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 3, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 3, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 18: { # 'έ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 3, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 22: { # 'ή' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 1, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 15: { # 'ί' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 3, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 1, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 1: { # 'α' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 0, # 'ή' + 15: 3, # 'ί' + 1: 0, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 2, # 'ε' + 32: 3, # 'ζ' + 13: 1, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 0, # 'ώ' + }, + 29: { # 'β' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 2, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 3, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 2, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 20: { # 'γ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 3, # 'ώ' + }, + 21: { # 'δ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 3: { # 'ε' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 3, # 'ί' + 1: 2, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 2, # 'ε' + 32: 2, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 2, # 'ό' + 26: 3, # 'ύ' + 27: 2, # 'ώ' + }, + 32: { # 'ζ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 2, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 1, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 2, # 'ώ' + }, + 13: { # 'η' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 25: { # 'θ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 1, # 'λ' + 10: 3, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 5: { # 'ι' + 60: 0, # 'e' + 55: 1, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 0, # 'ί' + 1: 3, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 0, # 'ύ' + 27: 3, # 'ώ' + }, + 11: { # 'κ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 2, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 16: { # 'λ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 1, # 'β' + 20: 2, # 'γ' + 21: 1, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 2, # 'κ' + 16: 3, # 'λ' + 10: 2, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 10: { # 'μ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 1, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 3, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 2, # 'υ' + 28: 3, # 'φ' + 23: 0, # 'χ' + 42: 2, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 6: { # 'ν' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 1, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 30: { # 'ξ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 2, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 2, # 'ό' + 26: 3, # 'ύ' + 27: 1, # 'ώ' + }, + 4: { # 'ο' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 2, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 2, # 'ω' + 19: 1, # 'ό' + 26: 3, # 'ύ' + 27: 2, # 'ώ' + }, + 9: { # 'π' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 3, # 'λ' + 10: 0, # 'μ' + 6: 2, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 2, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 3, # 'ώ' + }, + 8: { # 'ρ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 1, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 3, # 'ο' + 9: 2, # 'π' + 8: 2, # 'ρ' + 14: 0, # 'ς' + 7: 2, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 14: { # 'ς' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 2, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 0, # 'θ' + 5: 0, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 0, # 'τ' + 12: 0, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 7: { # 'σ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 3, # 'β' + 20: 0, # 'γ' + 21: 2, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 3, # 'θ' + 5: 3, # 'ι' + 11: 3, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 3, # 'φ' + 23: 3, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 2, # 'ώ' + }, + 2: { # 'τ' + 60: 0, # 'e' + 55: 2, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 2, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 3, # 'ι' + 11: 2, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 2, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 12: { # 'υ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 2, # 'ί' + 1: 3, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 2, # 'ε' + 32: 2, # 'ζ' + 13: 2, # 'η' + 25: 3, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 3, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 2, # 'ω' + 19: 2, # 'ό' + 26: 0, # 'ύ' + 27: 2, # 'ώ' + }, + 28: { # 'φ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 3, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 0, # 'μ' + 6: 1, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 1, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 2, # 'ύ' + 27: 2, # 'ώ' + }, + 23: { # 'χ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 3, # 'ά' + 18: 2, # 'έ' + 22: 3, # 'ή' + 15: 3, # 'ί' + 1: 3, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 2, # 'θ' + 5: 3, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 2, # 'μ' + 6: 3, # 'ν' + 30: 0, # 'ξ' + 4: 3, # 'ο' + 9: 0, # 'π' + 8: 3, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 3, # 'τ' + 12: 3, # 'υ' + 28: 0, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 3, # 'ω' + 19: 3, # 'ό' + 26: 3, # 'ύ' + 27: 3, # 'ώ' + }, + 42: { # 'ψ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 2, # 'ά' + 18: 2, # 'έ' + 22: 1, # 'ή' + 15: 2, # 'ί' + 1: 2, # 'α' + 29: 0, # 'β' + 20: 0, # 'γ' + 21: 0, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 3, # 'η' + 25: 0, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 0, # 'λ' + 10: 0, # 'μ' + 6: 0, # 'ν' + 30: 0, # 'ξ' + 4: 2, # 'ο' + 9: 0, # 'π' + 8: 0, # 'ρ' + 14: 0, # 'ς' + 7: 0, # 'σ' + 2: 2, # 'τ' + 12: 1, # 'υ' + 28: 0, # 'φ' + 23: 0, # 'χ' + 42: 0, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 24: { # 'ω' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 1, # 'ά' + 18: 0, # 'έ' + 22: 2, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 2, # 'β' + 20: 3, # 'γ' + 21: 2, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 0, # 'η' + 25: 3, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 0, # 'ξ' + 4: 0, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 2, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 19: { # 'ό' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 3, # 'β' + 20: 3, # 'γ' + 21: 3, # 'δ' + 3: 1, # 'ε' + 32: 2, # 'ζ' + 13: 2, # 'η' + 25: 2, # 'θ' + 5: 2, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 1, # 'ξ' + 4: 2, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 3, # 'χ' + 42: 2, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 26: { # 'ύ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 2, # 'α' + 29: 2, # 'β' + 20: 2, # 'γ' + 21: 1, # 'δ' + 3: 3, # 'ε' + 32: 0, # 'ζ' + 13: 2, # 'η' + 25: 3, # 'θ' + 5: 0, # 'ι' + 11: 3, # 'κ' + 16: 3, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 2, # 'ξ' + 4: 3, # 'ο' + 9: 3, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 2, # 'φ' + 23: 2, # 'χ' + 42: 2, # 'ψ' + 24: 2, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, + 27: { # 'ώ' + 60: 0, # 'e' + 55: 0, # 'o' + 58: 0, # 't' + 36: 0, # '·' + 61: 0, # 'Ά' + 46: 0, # 'Έ' + 54: 0, # 'Ό' + 31: 0, # 'Α' + 51: 0, # 'Β' + 43: 0, # 'Γ' + 41: 0, # 'Δ' + 34: 0, # 'Ε' + 40: 0, # 'Η' + 52: 0, # 'Θ' + 47: 0, # 'Ι' + 44: 0, # 'Κ' + 53: 0, # 'Λ' + 38: 0, # 'Μ' + 49: 0, # 'Ν' + 59: 0, # 'Ξ' + 39: 0, # 'Ο' + 35: 0, # 'Π' + 48: 0, # 'Ρ' + 37: 0, # 'Σ' + 33: 0, # 'Τ' + 45: 0, # 'Υ' + 56: 0, # 'Φ' + 50: 0, # 'Χ' + 57: 0, # 'Ω' + 17: 0, # 'ά' + 18: 0, # 'έ' + 22: 0, # 'ή' + 15: 0, # 'ί' + 1: 0, # 'α' + 29: 1, # 'β' + 20: 0, # 'γ' + 21: 3, # 'δ' + 3: 0, # 'ε' + 32: 0, # 'ζ' + 13: 1, # 'η' + 25: 2, # 'θ' + 5: 2, # 'ι' + 11: 0, # 'κ' + 16: 2, # 'λ' + 10: 3, # 'μ' + 6: 3, # 'ν' + 30: 1, # 'ξ' + 4: 0, # 'ο' + 9: 2, # 'π' + 8: 3, # 'ρ' + 14: 3, # 'ς' + 7: 3, # 'σ' + 2: 3, # 'τ' + 12: 0, # 'υ' + 28: 1, # 'φ' + 23: 1, # 'χ' + 42: 0, # 'ψ' + 24: 0, # 'ω' + 19: 0, # 'ό' + 26: 0, # 'ύ' + 27: 0, # 'ώ' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +WINDOWS_1253_GREEK_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 82, # 'A' + 66: 100, # 'B' + 67: 104, # 'C' + 68: 94, # 'D' + 69: 98, # 'E' + 70: 101, # 'F' + 71: 116, # 'G' + 72: 102, # 'H' + 73: 111, # 'I' + 74: 187, # 'J' + 75: 117, # 'K' + 76: 92, # 'L' + 77: 88, # 'M' + 78: 113, # 'N' + 79: 85, # 'O' + 80: 79, # 'P' + 81: 118, # 'Q' + 82: 105, # 'R' + 83: 83, # 'S' + 84: 67, # 'T' + 85: 114, # 'U' + 86: 119, # 'V' + 87: 95, # 'W' + 88: 99, # 'X' + 89: 109, # 'Y' + 90: 188, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 72, # 'a' + 98: 70, # 'b' + 99: 80, # 'c' + 100: 81, # 'd' + 101: 60, # 'e' + 102: 96, # 'f' + 103: 93, # 'g' + 104: 89, # 'h' + 105: 68, # 'i' + 106: 120, # 'j' + 107: 97, # 'k' + 108: 77, # 'l' + 109: 86, # 'm' + 110: 69, # 'n' + 111: 55, # 'o' + 112: 78, # 'p' + 113: 115, # 'q' + 114: 65, # 'r' + 115: 66, # 's' + 116: 58, # 't' + 117: 76, # 'u' + 118: 106, # 'v' + 119: 103, # 'w' + 120: 87, # 'x' + 121: 107, # 'y' + 122: 112, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 255, # '€' + 129: 255, # None + 130: 255, # '‚' + 131: 255, # 'ƒ' + 132: 255, # '„' + 133: 255, # '…' + 134: 255, # '†' + 135: 255, # '‡' + 136: 255, # None + 137: 255, # '‰' + 138: 255, # None + 139: 255, # '‹' + 140: 255, # None + 141: 255, # None + 142: 255, # None + 143: 255, # None + 144: 255, # None + 145: 255, # '‘' + 146: 255, # '’' + 147: 255, # '“' + 148: 255, # '”' + 149: 255, # '•' + 150: 255, # '–' + 151: 255, # '—' + 152: 255, # None + 153: 255, # '™' + 154: 255, # None + 155: 255, # '›' + 156: 255, # None + 157: 255, # None + 158: 255, # None + 159: 255, # None + 160: 253, # '\xa0' + 161: 233, # '΅' + 162: 61, # 'Ά' + 163: 253, # '£' + 164: 253, # '¤' + 165: 253, # '¥' + 166: 253, # '¦' + 167: 253, # '§' + 168: 253, # '¨' + 169: 253, # '©' + 170: 253, # None + 171: 253, # '«' + 172: 253, # '¬' + 173: 74, # '\xad' + 174: 253, # '®' + 175: 253, # '―' + 176: 253, # '°' + 177: 253, # '±' + 178: 253, # '²' + 179: 253, # '³' + 180: 247, # '΄' + 181: 253, # 'µ' + 182: 253, # '¶' + 183: 36, # '·' + 184: 46, # 'Έ' + 185: 71, # 'Ή' + 186: 73, # 'Ί' + 187: 253, # '»' + 188: 54, # 'Ό' + 189: 253, # '½' + 190: 108, # 'Ύ' + 191: 123, # 'Ώ' + 192: 110, # 'ΐ' + 193: 31, # 'Α' + 194: 51, # 'Β' + 195: 43, # 'Γ' + 196: 41, # 'Δ' + 197: 34, # 'Ε' + 198: 91, # 'Ζ' + 199: 40, # 'Η' + 200: 52, # 'Θ' + 201: 47, # 'Ι' + 202: 44, # 'Κ' + 203: 53, # 'Λ' + 204: 38, # 'Μ' + 205: 49, # 'Ν' + 206: 59, # 'Ξ' + 207: 39, # 'Ο' + 208: 35, # 'Π' + 209: 48, # 'Ρ' + 210: 250, # None + 211: 37, # 'Σ' + 212: 33, # 'Τ' + 213: 45, # 'Υ' + 214: 56, # 'Φ' + 215: 50, # 'Χ' + 216: 84, # 'Ψ' + 217: 57, # 'Ω' + 218: 120, # 'Ϊ' + 219: 121, # 'Ϋ' + 220: 17, # 'ά' + 221: 18, # 'έ' + 222: 22, # 'ή' + 223: 15, # 'ί' + 224: 124, # 'ΰ' + 225: 1, # 'α' + 226: 29, # 'β' + 227: 20, # 'γ' + 228: 21, # 'δ' + 229: 3, # 'ε' + 230: 32, # 'ζ' + 231: 13, # 'η' + 232: 25, # 'θ' + 233: 5, # 'ι' + 234: 11, # 'κ' + 235: 16, # 'λ' + 236: 10, # 'μ' + 237: 6, # 'ν' + 238: 30, # 'ξ' + 239: 4, # 'ο' + 240: 9, # 'π' + 241: 8, # 'ρ' + 242: 14, # 'ς' + 243: 7, # 'σ' + 244: 2, # 'τ' + 245: 12, # 'υ' + 246: 28, # 'φ' + 247: 23, # 'χ' + 248: 42, # 'ψ' + 249: 24, # 'ω' + 250: 64, # 'ϊ' + 251: 75, # 'ϋ' + 252: 19, # 'ό' + 253: 26, # 'ύ' + 254: 27, # 'ώ' + 255: 253, # None +} + +WINDOWS_1253_GREEK_MODEL = SingleByteCharSetModel(charset_name='windows-1253', + language='Greek', + char_to_order_map=WINDOWS_1253_GREEK_CHAR_TO_ORDER, + language_model=GREEK_LANG_MODEL, + typical_positive_ratio=0.982851, + keep_ascii_letters=False, + alphabet='ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωόύώ') + +ISO_8859_7_GREEK_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 82, # 'A' + 66: 100, # 'B' + 67: 104, # 'C' + 68: 94, # 'D' + 69: 98, # 'E' + 70: 101, # 'F' + 71: 116, # 'G' + 72: 102, # 'H' + 73: 111, # 'I' + 74: 187, # 'J' + 75: 117, # 'K' + 76: 92, # 'L' + 77: 88, # 'M' + 78: 113, # 'N' + 79: 85, # 'O' + 80: 79, # 'P' + 81: 118, # 'Q' + 82: 105, # 'R' + 83: 83, # 'S' + 84: 67, # 'T' + 85: 114, # 'U' + 86: 119, # 'V' + 87: 95, # 'W' + 88: 99, # 'X' + 89: 109, # 'Y' + 90: 188, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 72, # 'a' + 98: 70, # 'b' + 99: 80, # 'c' + 100: 81, # 'd' + 101: 60, # 'e' + 102: 96, # 'f' + 103: 93, # 'g' + 104: 89, # 'h' + 105: 68, # 'i' + 106: 120, # 'j' + 107: 97, # 'k' + 108: 77, # 'l' + 109: 86, # 'm' + 110: 69, # 'n' + 111: 55, # 'o' + 112: 78, # 'p' + 113: 115, # 'q' + 114: 65, # 'r' + 115: 66, # 's' + 116: 58, # 't' + 117: 76, # 'u' + 118: 106, # 'v' + 119: 103, # 'w' + 120: 87, # 'x' + 121: 107, # 'y' + 122: 112, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 255, # '\x80' + 129: 255, # '\x81' + 130: 255, # '\x82' + 131: 255, # '\x83' + 132: 255, # '\x84' + 133: 255, # '\x85' + 134: 255, # '\x86' + 135: 255, # '\x87' + 136: 255, # '\x88' + 137: 255, # '\x89' + 138: 255, # '\x8a' + 139: 255, # '\x8b' + 140: 255, # '\x8c' + 141: 255, # '\x8d' + 142: 255, # '\x8e' + 143: 255, # '\x8f' + 144: 255, # '\x90' + 145: 255, # '\x91' + 146: 255, # '\x92' + 147: 255, # '\x93' + 148: 255, # '\x94' + 149: 255, # '\x95' + 150: 255, # '\x96' + 151: 255, # '\x97' + 152: 255, # '\x98' + 153: 255, # '\x99' + 154: 255, # '\x9a' + 155: 255, # '\x9b' + 156: 255, # '\x9c' + 157: 255, # '\x9d' + 158: 255, # '\x9e' + 159: 255, # '\x9f' + 160: 253, # '\xa0' + 161: 233, # '‘' + 162: 90, # '’' + 163: 253, # '£' + 164: 253, # '€' + 165: 253, # '₯' + 166: 253, # '¦' + 167: 253, # '§' + 168: 253, # '¨' + 169: 253, # '©' + 170: 253, # 'ͺ' + 171: 253, # '«' + 172: 253, # '¬' + 173: 74, # '\xad' + 174: 253, # None + 175: 253, # '―' + 176: 253, # '°' + 177: 253, # '±' + 178: 253, # '²' + 179: 253, # '³' + 180: 247, # '΄' + 181: 248, # '΅' + 182: 61, # 'Ά' + 183: 36, # '·' + 184: 46, # 'Έ' + 185: 71, # 'Ή' + 186: 73, # 'Ί' + 187: 253, # '»' + 188: 54, # 'Ό' + 189: 253, # '½' + 190: 108, # 'Ύ' + 191: 123, # 'Ώ' + 192: 110, # 'ΐ' + 193: 31, # 'Α' + 194: 51, # 'Β' + 195: 43, # 'Γ' + 196: 41, # 'Δ' + 197: 34, # 'Ε' + 198: 91, # 'Ζ' + 199: 40, # 'Η' + 200: 52, # 'Θ' + 201: 47, # 'Ι' + 202: 44, # 'Κ' + 203: 53, # 'Λ' + 204: 38, # 'Μ' + 205: 49, # 'Ν' + 206: 59, # 'Ξ' + 207: 39, # 'Ο' + 208: 35, # 'Π' + 209: 48, # 'Ρ' + 210: 250, # None + 211: 37, # 'Σ' + 212: 33, # 'Τ' + 213: 45, # 'Υ' + 214: 56, # 'Φ' + 215: 50, # 'Χ' + 216: 84, # 'Ψ' + 217: 57, # 'Ω' + 218: 120, # 'Ϊ' + 219: 121, # 'Ϋ' + 220: 17, # 'ά' + 221: 18, # 'έ' + 222: 22, # 'ή' + 223: 15, # 'ί' + 224: 124, # 'ΰ' + 225: 1, # 'α' + 226: 29, # 'β' + 227: 20, # 'γ' + 228: 21, # 'δ' + 229: 3, # 'ε' + 230: 32, # 'ζ' + 231: 13, # 'η' + 232: 25, # 'θ' + 233: 5, # 'ι' + 234: 11, # 'κ' + 235: 16, # 'λ' + 236: 10, # 'μ' + 237: 6, # 'ν' + 238: 30, # 'ξ' + 239: 4, # 'ο' + 240: 9, # 'π' + 241: 8, # 'ρ' + 242: 14, # 'ς' + 243: 7, # 'σ' + 244: 2, # 'τ' + 245: 12, # 'υ' + 246: 28, # 'φ' + 247: 23, # 'χ' + 248: 42, # 'ψ' + 249: 24, # 'ω' + 250: 64, # 'ϊ' + 251: 75, # 'ϋ' + 252: 19, # 'ό' + 253: 26, # 'ύ' + 254: 27, # 'ώ' + 255: 253, # None +} + +ISO_8859_7_GREEK_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-7', + language='Greek', + char_to_order_map=ISO_8859_7_GREEK_CHAR_TO_ORDER, + language_model=GREEK_LANG_MODEL, + typical_positive_ratio=0.982851, + keep_ascii_letters=False, + alphabet='ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωόύώ') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py new file mode 100644 index 00000000..484c652a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py @@ -0,0 +1,4383 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +HEBREW_LANG_MODEL = { + 50: { # 'a' + 50: 0, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 2, # 'l' + 54: 2, # 'n' + 49: 0, # 'o' + 51: 2, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 1, # 'ק' + 7: 0, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 60: { # 'c' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 0, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 0, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 61: { # 'd' + 50: 1, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 2, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 0, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 1, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 42: { # 'e' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 2, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 2, # 'l' + 54: 2, # 'n' + 49: 1, # 'o' + 51: 2, # 'r' + 43: 2, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 1, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 53: { # 'i' + 50: 1, # 'a' + 60: 2, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 0, # 'i' + 56: 1, # 'l' + 54: 2, # 'n' + 49: 2, # 'o' + 51: 1, # 'r' + 43: 2, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 56: { # 'l' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 2, # 'e' + 53: 2, # 'i' + 56: 2, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 54: { # 'n' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 49: { # 'o' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 2, # 'n' + 49: 1, # 'o' + 51: 2, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 51: { # 'r' + 50: 2, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 2, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 2, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 43: { # 's' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 0, # 'd' + 42: 2, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 2, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 44: { # 't' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 0, # 'd' + 42: 2, # 'e' + 53: 2, # 'i' + 56: 1, # 'l' + 54: 0, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 2, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 63: { # 'u' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 0, # 'o' + 51: 1, # 'r' + 43: 2, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 34: { # '\xa0' + 50: 1, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 0, # 'e' + 53: 1, # 'i' + 56: 0, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 2, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 55: { # '´' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 1, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 2, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 1, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 48: { # '¼' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 39: { # '½' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 57: { # '¾' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 30: { # 'ְ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 2, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 1, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 2, # 'ע' + 26: 0, # 'ף' + 18: 2, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 59: { # 'ֱ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 1, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 0, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 41: { # 'ֲ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 0, # 'ם' + 6: 2, # 'מ' + 23: 0, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 33: { # 'ִ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 1, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 0, # 'ַ' + 29: 1, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 2, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 37: { # 'ֵ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 1, # 'ַ' + 29: 1, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 1, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 36: { # 'ֶ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 1, # 'ַ' + 29: 1, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 1, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 2, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 31: { # 'ַ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 1, # 'ֶ' + 31: 0, # 'ַ' + 29: 2, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 2, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 29: { # 'ָ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 1, # 'ַ' + 29: 2, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 2, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 35: { # 'ֹ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 2, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 2, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 62: { # 'ֻ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 2, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 1, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 28: { # 'ּ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 3, # 'ְ' + 59: 0, # 'ֱ' + 41: 1, # 'ֲ' + 33: 3, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 3, # 'ַ' + 29: 3, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 2, # 'ׁ' + 45: 1, # 'ׂ' + 9: 2, # 'א' + 8: 2, # 'ב' + 20: 1, # 'ג' + 16: 2, # 'ד' + 3: 1, # 'ה' + 2: 2, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 2, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 2, # 'ל' + 11: 1, # 'ם' + 6: 2, # 'מ' + 23: 1, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 2, # 'ר' + 10: 2, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 38: { # 'ׁ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 2, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 45: { # 'ׂ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 2, # 'ֶ' + 31: 1, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 2, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 0, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 9: { # 'א' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 2, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 2, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 8: { # 'ב' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 3, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 1, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 20: { # 'ג' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 2, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 1, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 0, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 16: { # 'ד' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 1, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 3: { # 'ה' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 1, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 3, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 0, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 2: { # 'ו' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 3, # 'ֹ' + 62: 0, # 'ֻ' + 28: 3, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 3, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 24: { # 'ז' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 1, # 'ֲ' + 33: 1, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 2, # 'ב' + 20: 2, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 2, # 'ח' + 22: 1, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 2, # 'נ' + 19: 1, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 1, # 'ש' + 5: 2, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 14: { # 'ח' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 1, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 2, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 1, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 22: { # 'ט' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 1, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 1, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 3, # 'ר' + 10: 2, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 1: { # 'י' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 3, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 25: { # 'ך' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 2, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 1, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 15: { # 'כ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 3, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 2, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 2, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 4: { # 'ל' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 3, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 11: { # 'ם' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 1, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 6: { # 'מ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 0, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 23: { # 'ן' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 1, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 1, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 12: { # 'נ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 19: { # 'ס' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 1, # 'ָ' + 35: 1, # 'ֹ' + 62: 2, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 1, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 3, # 'ף' + 18: 3, # 'פ' + 27: 0, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 1, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 13: { # 'ע' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 1, # 'ֱ' + 41: 2, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 1, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 2, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 2, # 'ע' + 26: 1, # 'ף' + 18: 2, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 26: { # 'ף' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 1, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 18: { # 'פ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 1, # 'ֵ' + 36: 2, # 'ֶ' + 31: 1, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 2, # 'ב' + 20: 3, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 2, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 2, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 27: { # 'ץ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 1, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 0, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 21: { # 'צ' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 1, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 1, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 0, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 17: { # 'ק' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 1, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 1, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 2, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 1, # 'ך' + 15: 1, # 'כ' + 4: 3, # 'ל' + 11: 2, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 2, # 'ץ' + 21: 3, # 'צ' + 17: 2, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 7: { # 'ר' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 2, # '´' + 48: 1, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 1, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 2, # 'ֹ' + 62: 1, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 3, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 3, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 3, # 'ץ' + 21: 3, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 10: { # 'ש' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 1, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 1, # 'ִ' + 37: 1, # 'ֵ' + 36: 1, # 'ֶ' + 31: 1, # 'ַ' + 29: 1, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 3, # 'ׁ' + 45: 2, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 3, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 3, # 'ט' + 1: 3, # 'י' + 25: 3, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 2, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 1, # '…' + }, + 5: { # 'ת' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 1, # '\xa0' + 55: 0, # '´' + 48: 1, # '¼' + 39: 1, # '½' + 57: 0, # '¾' + 30: 2, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 2, # 'ִ' + 37: 2, # 'ֵ' + 36: 2, # 'ֶ' + 31: 2, # 'ַ' + 29: 2, # 'ָ' + 35: 1, # 'ֹ' + 62: 1, # 'ֻ' + 28: 2, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 3, # 'א' + 8: 3, # 'ב' + 20: 3, # 'ג' + 16: 2, # 'ד' + 3: 3, # 'ה' + 2: 3, # 'ו' + 24: 2, # 'ז' + 14: 3, # 'ח' + 22: 2, # 'ט' + 1: 3, # 'י' + 25: 2, # 'ך' + 15: 3, # 'כ' + 4: 3, # 'ל' + 11: 3, # 'ם' + 6: 3, # 'מ' + 23: 3, # 'ן' + 12: 3, # 'נ' + 19: 2, # 'ס' + 13: 3, # 'ע' + 26: 2, # 'ף' + 18: 3, # 'פ' + 27: 1, # 'ץ' + 21: 2, # 'צ' + 17: 3, # 'ק' + 7: 3, # 'ר' + 10: 3, # 'ש' + 5: 3, # 'ת' + 32: 1, # '–' + 52: 1, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, + 32: { # '–' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 1, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 1, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 52: { # '’' + 50: 1, # 'a' + 60: 0, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 1, # 'r' + 43: 2, # 's' + 44: 2, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 1, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 47: { # '“' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 1, # 'l' + 54: 1, # 'n' + 49: 1, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 1, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 2, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 1, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 1, # 'ח' + 22: 1, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 1, # 'ס' + 13: 1, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 1, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 46: { # '”' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 1, # 'ב' + 20: 1, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 1, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 0, # '†' + 40: 0, # '…' + }, + 58: { # '†' + 50: 0, # 'a' + 60: 0, # 'c' + 61: 0, # 'd' + 42: 0, # 'e' + 53: 0, # 'i' + 56: 0, # 'l' + 54: 0, # 'n' + 49: 0, # 'o' + 51: 0, # 'r' + 43: 0, # 's' + 44: 0, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 0, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 0, # 'ה' + 2: 0, # 'ו' + 24: 0, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 0, # 'י' + 25: 0, # 'ך' + 15: 0, # 'כ' + 4: 0, # 'ל' + 11: 0, # 'ם' + 6: 0, # 'מ' + 23: 0, # 'ן' + 12: 0, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 0, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 0, # 'ר' + 10: 0, # 'ש' + 5: 0, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 0, # '”' + 58: 2, # '†' + 40: 0, # '…' + }, + 40: { # '…' + 50: 1, # 'a' + 60: 1, # 'c' + 61: 1, # 'd' + 42: 1, # 'e' + 53: 1, # 'i' + 56: 0, # 'l' + 54: 1, # 'n' + 49: 0, # 'o' + 51: 1, # 'r' + 43: 1, # 's' + 44: 1, # 't' + 63: 0, # 'u' + 34: 0, # '\xa0' + 55: 0, # '´' + 48: 0, # '¼' + 39: 0, # '½' + 57: 0, # '¾' + 30: 0, # 'ְ' + 59: 0, # 'ֱ' + 41: 0, # 'ֲ' + 33: 0, # 'ִ' + 37: 0, # 'ֵ' + 36: 0, # 'ֶ' + 31: 0, # 'ַ' + 29: 0, # 'ָ' + 35: 0, # 'ֹ' + 62: 0, # 'ֻ' + 28: 0, # 'ּ' + 38: 0, # 'ׁ' + 45: 0, # 'ׂ' + 9: 1, # 'א' + 8: 0, # 'ב' + 20: 0, # 'ג' + 16: 0, # 'ד' + 3: 1, # 'ה' + 2: 1, # 'ו' + 24: 1, # 'ז' + 14: 0, # 'ח' + 22: 0, # 'ט' + 1: 1, # 'י' + 25: 0, # 'ך' + 15: 1, # 'כ' + 4: 1, # 'ל' + 11: 0, # 'ם' + 6: 1, # 'מ' + 23: 0, # 'ן' + 12: 1, # 'נ' + 19: 0, # 'ס' + 13: 0, # 'ע' + 26: 0, # 'ף' + 18: 1, # 'פ' + 27: 0, # 'ץ' + 21: 0, # 'צ' + 17: 0, # 'ק' + 7: 1, # 'ר' + 10: 1, # 'ש' + 5: 1, # 'ת' + 32: 0, # '–' + 52: 0, # '’' + 47: 0, # '“' + 46: 1, # '”' + 58: 0, # '†' + 40: 2, # '…' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +WINDOWS_1255_HEBREW_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 69, # 'A' + 66: 91, # 'B' + 67: 79, # 'C' + 68: 80, # 'D' + 69: 92, # 'E' + 70: 89, # 'F' + 71: 97, # 'G' + 72: 90, # 'H' + 73: 68, # 'I' + 74: 111, # 'J' + 75: 112, # 'K' + 76: 82, # 'L' + 77: 73, # 'M' + 78: 95, # 'N' + 79: 85, # 'O' + 80: 78, # 'P' + 81: 121, # 'Q' + 82: 86, # 'R' + 83: 71, # 'S' + 84: 67, # 'T' + 85: 102, # 'U' + 86: 107, # 'V' + 87: 84, # 'W' + 88: 114, # 'X' + 89: 103, # 'Y' + 90: 115, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 50, # 'a' + 98: 74, # 'b' + 99: 60, # 'c' + 100: 61, # 'd' + 101: 42, # 'e' + 102: 76, # 'f' + 103: 70, # 'g' + 104: 64, # 'h' + 105: 53, # 'i' + 106: 105, # 'j' + 107: 93, # 'k' + 108: 56, # 'l' + 109: 65, # 'm' + 110: 54, # 'n' + 111: 49, # 'o' + 112: 66, # 'p' + 113: 110, # 'q' + 114: 51, # 'r' + 115: 43, # 's' + 116: 44, # 't' + 117: 63, # 'u' + 118: 81, # 'v' + 119: 77, # 'w' + 120: 98, # 'x' + 121: 75, # 'y' + 122: 108, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 124, # '€' + 129: 202, # None + 130: 203, # '‚' + 131: 204, # 'ƒ' + 132: 205, # '„' + 133: 40, # '…' + 134: 58, # '†' + 135: 206, # '‡' + 136: 207, # 'ˆ' + 137: 208, # '‰' + 138: 209, # None + 139: 210, # '‹' + 140: 211, # None + 141: 212, # None + 142: 213, # None + 143: 214, # None + 144: 215, # None + 145: 83, # '‘' + 146: 52, # '’' + 147: 47, # '“' + 148: 46, # '”' + 149: 72, # '•' + 150: 32, # '–' + 151: 94, # '—' + 152: 216, # '˜' + 153: 113, # '™' + 154: 217, # None + 155: 109, # '›' + 156: 218, # None + 157: 219, # None + 158: 220, # None + 159: 221, # None + 160: 34, # '\xa0' + 161: 116, # '¡' + 162: 222, # '¢' + 163: 118, # '£' + 164: 100, # '₪' + 165: 223, # '¥' + 166: 224, # '¦' + 167: 117, # '§' + 168: 119, # '¨' + 169: 104, # '©' + 170: 125, # '×' + 171: 225, # '«' + 172: 226, # '¬' + 173: 87, # '\xad' + 174: 99, # '®' + 175: 227, # '¯' + 176: 106, # '°' + 177: 122, # '±' + 178: 123, # '²' + 179: 228, # '³' + 180: 55, # '´' + 181: 229, # 'µ' + 182: 230, # '¶' + 183: 101, # '·' + 184: 231, # '¸' + 185: 232, # '¹' + 186: 120, # '÷' + 187: 233, # '»' + 188: 48, # '¼' + 189: 39, # '½' + 190: 57, # '¾' + 191: 234, # '¿' + 192: 30, # 'ְ' + 193: 59, # 'ֱ' + 194: 41, # 'ֲ' + 195: 88, # 'ֳ' + 196: 33, # 'ִ' + 197: 37, # 'ֵ' + 198: 36, # 'ֶ' + 199: 31, # 'ַ' + 200: 29, # 'ָ' + 201: 35, # 'ֹ' + 202: 235, # None + 203: 62, # 'ֻ' + 204: 28, # 'ּ' + 205: 236, # 'ֽ' + 206: 126, # '־' + 207: 237, # 'ֿ' + 208: 238, # '׀' + 209: 38, # 'ׁ' + 210: 45, # 'ׂ' + 211: 239, # '׃' + 212: 240, # 'װ' + 213: 241, # 'ױ' + 214: 242, # 'ײ' + 215: 243, # '׳' + 216: 127, # '״' + 217: 244, # None + 218: 245, # None + 219: 246, # None + 220: 247, # None + 221: 248, # None + 222: 249, # None + 223: 250, # None + 224: 9, # 'א' + 225: 8, # 'ב' + 226: 20, # 'ג' + 227: 16, # 'ד' + 228: 3, # 'ה' + 229: 2, # 'ו' + 230: 24, # 'ז' + 231: 14, # 'ח' + 232: 22, # 'ט' + 233: 1, # 'י' + 234: 25, # 'ך' + 235: 15, # 'כ' + 236: 4, # 'ל' + 237: 11, # 'ם' + 238: 6, # 'מ' + 239: 23, # 'ן' + 240: 12, # 'נ' + 241: 19, # 'ס' + 242: 13, # 'ע' + 243: 26, # 'ף' + 244: 18, # 'פ' + 245: 27, # 'ץ' + 246: 21, # 'צ' + 247: 17, # 'ק' + 248: 7, # 'ר' + 249: 10, # 'ש' + 250: 5, # 'ת' + 251: 251, # None + 252: 252, # None + 253: 128, # '\u200e' + 254: 96, # '\u200f' + 255: 253, # None +} + +WINDOWS_1255_HEBREW_MODEL = SingleByteCharSetModel(charset_name='windows-1255', + language='Hebrew', + char_to_order_map=WINDOWS_1255_HEBREW_CHAR_TO_ORDER, + language_model=HEBREW_LANG_MODEL, + typical_positive_ratio=0.984004, + keep_ascii_letters=False, + alphabet='אבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py new file mode 100644 index 00000000..bbc5cda6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py @@ -0,0 +1,4650 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +HUNGARIAN_LANG_MODEL = { + 28: { # 'A' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 2, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 2, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 2, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 1, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 1, # 'Á' + 44: 0, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 40: { # 'B' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 0, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 3, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 54: { # 'C' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 0, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 3, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 45: { # 'D' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 0, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 1, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 32: { # 'E' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 2, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 1, # 't' + 21: 2, # 'u' + 19: 1, # 'v' + 62: 1, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 50: { # 'F' + 28: 1, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 0, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 49: { # 'G' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 2, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 38: { # 'H' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 0, # 'D' + 32: 1, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 1, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 1, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 0, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 2, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 2, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 39: { # 'I' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 2, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 0, # 'e' + 27: 1, # 'f' + 12: 2, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 53: { # 'J' + 28: 2, # 'A' + 40: 0, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 1, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 0, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 36: { # 'K' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 2, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 41: { # 'L' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 1, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 34: { # 'M' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 3, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 1, # 'ű' + }, + 35: { # 'N' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 2, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 2, # 'Y' + 52: 1, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 47: { # 'O' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 2, # 'K' + 41: 2, # 'L' + 34: 2, # 'M' + 35: 2, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 2, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 1, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 1, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 46: { # 'P' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 0, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 3, # 'á' + 15: 2, # 'é' + 30: 0, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 0, # 'ű' + }, + 43: { # 'R' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 2, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 2, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 33: { # 'S' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 3, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 1, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 1, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 37: { # 'T' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 1, # 'S' + 37: 2, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 2, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 1, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 0, # 't' + 21: 2, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 2, # 'Á' + 44: 2, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 57: { # 'U' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 2, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 48: { # 'V' + 28: 2, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 0, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 2, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 2, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 2, # 'o' + 23: 0, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 2, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 0, # 'Ú' + 63: 1, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 55: { # 'Y' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 1, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 2, # 'Z' + 2: 1, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 0, # 'r' + 5: 0, # 's' + 3: 0, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 1, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 52: { # 'Z' + 28: 2, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 2, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 2, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 2, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 1, # 'U' + 48: 1, # 'V' + 55: 1, # 'Y' + 52: 1, # 'Z' + 2: 1, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 1, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 1, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 2, # 's' + 3: 0, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 2, # 'Á' + 44: 1, # 'É' + 61: 1, # 'Í' + 58: 1, # 'Ó' + 59: 1, # 'Ö' + 60: 1, # 'Ú' + 63: 1, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 2: { # 'a' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 2, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 2, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 18: { # 'b' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 2, # 's' + 3: 1, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 26: { # 'c' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 1, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 1, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 2, # 't' + 21: 2, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 2, # 'á' + 15: 2, # 'é' + 30: 2, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 17: { # 'd' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 2, # 'k' + 6: 1, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 1: { # 'e' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 3, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 2, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 2, # 'u' + 19: 3, # 'v' + 62: 2, # 'x' + 16: 2, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 27: { # 'f' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 3, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 2, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 3, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 12: { # 'g' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 2, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 2, # 'k' + 6: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 3, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 20: { # 'h' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 3, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 2, # 's' + 3: 1, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 1, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 9: { # 'i' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 3, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 2, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 3, # 'ó' + 24: 1, # 'ö' + 31: 2, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 1, # 'ű' + }, + 22: { # 'j' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 1, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 1, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 7: { # 'k' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 2, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 2, # 'ó' + 24: 3, # 'ö' + 31: 1, # 'ú' + 29: 3, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 6: { # 'l' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 1, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 3, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 3, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 3, # 'ő' + 56: 1, # 'ű' + }, + 13: { # 'm' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 1, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 3, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 3, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 2, # 'ű' + }, + 4: { # 'n' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 1, # 'x' + 16: 3, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 8: { # 'o' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 1, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 2, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 23: { # 'p' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 3, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 10: { # 'r' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 2, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 2, # 'ű' + }, + 5: { # 's' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 2, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 3: { # 't' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 1, # 'g' + 20: 3, # 'h' + 9: 3, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 3, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 3, # 'ú' + 29: 3, # 'ü' + 42: 3, # 'ő' + 56: 2, # 'ű' + }, + 21: { # 'u' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 2, # 'b' + 26: 2, # 'c' + 17: 3, # 'd' + 1: 2, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 1, # 'u' + 19: 3, # 'v' + 62: 1, # 'x' + 16: 1, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 2, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 0, # 'ö' + 31: 1, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 19: { # 'v' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 2, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 2, # 'ö' + 31: 1, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 1, # 'ű' + }, + 62: { # 'x' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 0, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 1, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 1, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 1, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 16: { # 'y' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 3, # 'e' + 27: 2, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 2, # 'j' + 7: 2, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 2, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 2, # 'í' + 25: 2, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 2, # 'ü' + 42: 1, # 'ő' + 56: 2, # 'ű' + }, + 11: { # 'z' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 3, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 3, # 'd' + 1: 3, # 'e' + 27: 1, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 3, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 3, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 3, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 3, # 'á' + 15: 3, # 'é' + 30: 3, # 'í' + 25: 3, # 'ó' + 24: 3, # 'ö' + 31: 2, # 'ú' + 29: 3, # 'ü' + 42: 2, # 'ő' + 56: 1, # 'ű' + }, + 51: { # 'Á' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 1, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 44: { # 'É' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 1, # 'E' + 50: 0, # 'F' + 49: 2, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 2, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 2, # 'R' + 33: 2, # 'S' + 37: 2, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 3, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 61: { # 'Í' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 0, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 2, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 1, # 'm' + 4: 0, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 0, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 58: { # 'Ó' + 28: 1, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 1, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 2, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 2, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 0, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 1, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 59: { # 'Ö' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 1, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 0, # 'b' + 26: 1, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 0, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 2, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 60: { # 'Ú' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 1, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 1, # 'F' + 49: 1, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 0, # 'b' + 26: 0, # 'c' + 17: 0, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 2, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 2, # 'j' + 7: 0, # 'k' + 6: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 0, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 0, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 63: { # 'Ü' + 28: 0, # 'A' + 40: 1, # 'B' + 54: 0, # 'C' + 45: 1, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 1, # 'G' + 38: 1, # 'H' + 39: 0, # 'I' + 53: 1, # 'J' + 36: 1, # 'K' + 41: 1, # 'L' + 34: 1, # 'M' + 35: 1, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 1, # 'R' + 33: 1, # 'S' + 37: 1, # 'T' + 57: 0, # 'U' + 48: 1, # 'V' + 55: 0, # 'Y' + 52: 1, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 0, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 0, # 'f' + 12: 1, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 0, # 'j' + 7: 0, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 1, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 14: { # 'á' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 3, # 'b' + 26: 3, # 'c' + 17: 3, # 'd' + 1: 1, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 2, # 'i' + 22: 3, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 2, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 1, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 2, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 15: { # 'é' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 3, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 3, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 3, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 0, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 30: { # 'í' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 0, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 0, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 0, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 2, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 2, # 's' + 3: 3, # 't' + 21: 0, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 25: { # 'ó' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 2, # 'a' + 18: 3, # 'b' + 26: 2, # 'c' + 17: 3, # 'd' + 1: 1, # 'e' + 27: 2, # 'f' + 12: 2, # 'g' + 20: 2, # 'h' + 9: 2, # 'i' + 22: 2, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 8: 1, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 1, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 1, # 'ö' + 31: 1, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 24: { # 'ö' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 0, # 'a' + 18: 3, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 0, # 'e' + 27: 1, # 'f' + 12: 2, # 'g' + 20: 1, # 'h' + 9: 0, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 8: 0, # 'o' + 23: 2, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 3, # 't' + 21: 0, # 'u' + 19: 3, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 3, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 31: { # 'ú' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 2, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 2, # 'f' + 12: 3, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 3, # 'j' + 7: 1, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 3, # 'r' + 5: 3, # 's' + 3: 2, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 1, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 29: { # 'ü' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 3, # 'g' + 20: 2, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 3, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 8: 0, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 0, # 'u' + 19: 2, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 1, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 42: { # 'ő' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 2, # 'b' + 26: 1, # 'c' + 17: 2, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 2, # 'k' + 6: 3, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 8: 1, # 'o' + 23: 1, # 'p' + 10: 2, # 'r' + 5: 2, # 's' + 3: 2, # 't' + 21: 1, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 1, # 'é' + 30: 1, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 1, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, + 56: { # 'ű' + 28: 0, # 'A' + 40: 0, # 'B' + 54: 0, # 'C' + 45: 0, # 'D' + 32: 0, # 'E' + 50: 0, # 'F' + 49: 0, # 'G' + 38: 0, # 'H' + 39: 0, # 'I' + 53: 0, # 'J' + 36: 0, # 'K' + 41: 0, # 'L' + 34: 0, # 'M' + 35: 0, # 'N' + 47: 0, # 'O' + 46: 0, # 'P' + 43: 0, # 'R' + 33: 0, # 'S' + 37: 0, # 'T' + 57: 0, # 'U' + 48: 0, # 'V' + 55: 0, # 'Y' + 52: 0, # 'Z' + 2: 1, # 'a' + 18: 1, # 'b' + 26: 0, # 'c' + 17: 1, # 'd' + 1: 1, # 'e' + 27: 1, # 'f' + 12: 1, # 'g' + 20: 1, # 'h' + 9: 1, # 'i' + 22: 1, # 'j' + 7: 1, # 'k' + 6: 1, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 8: 0, # 'o' + 23: 0, # 'p' + 10: 1, # 'r' + 5: 1, # 's' + 3: 1, # 't' + 21: 0, # 'u' + 19: 1, # 'v' + 62: 0, # 'x' + 16: 0, # 'y' + 11: 2, # 'z' + 51: 0, # 'Á' + 44: 0, # 'É' + 61: 0, # 'Í' + 58: 0, # 'Ó' + 59: 0, # 'Ö' + 60: 0, # 'Ú' + 63: 0, # 'Ü' + 14: 0, # 'á' + 15: 0, # 'é' + 30: 0, # 'í' + 25: 0, # 'ó' + 24: 0, # 'ö' + 31: 0, # 'ú' + 29: 0, # 'ü' + 42: 0, # 'ő' + 56: 0, # 'ű' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +WINDOWS_1250_HUNGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 28, # 'A' + 66: 40, # 'B' + 67: 54, # 'C' + 68: 45, # 'D' + 69: 32, # 'E' + 70: 50, # 'F' + 71: 49, # 'G' + 72: 38, # 'H' + 73: 39, # 'I' + 74: 53, # 'J' + 75: 36, # 'K' + 76: 41, # 'L' + 77: 34, # 'M' + 78: 35, # 'N' + 79: 47, # 'O' + 80: 46, # 'P' + 81: 72, # 'Q' + 82: 43, # 'R' + 83: 33, # 'S' + 84: 37, # 'T' + 85: 57, # 'U' + 86: 48, # 'V' + 87: 64, # 'W' + 88: 68, # 'X' + 89: 55, # 'Y' + 90: 52, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 2, # 'a' + 98: 18, # 'b' + 99: 26, # 'c' + 100: 17, # 'd' + 101: 1, # 'e' + 102: 27, # 'f' + 103: 12, # 'g' + 104: 20, # 'h' + 105: 9, # 'i' + 106: 22, # 'j' + 107: 7, # 'k' + 108: 6, # 'l' + 109: 13, # 'm' + 110: 4, # 'n' + 111: 8, # 'o' + 112: 23, # 'p' + 113: 67, # 'q' + 114: 10, # 'r' + 115: 5, # 's' + 116: 3, # 't' + 117: 21, # 'u' + 118: 19, # 'v' + 119: 65, # 'w' + 120: 62, # 'x' + 121: 16, # 'y' + 122: 11, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 161, # '€' + 129: 162, # None + 130: 163, # '‚' + 131: 164, # None + 132: 165, # '„' + 133: 166, # '…' + 134: 167, # '†' + 135: 168, # '‡' + 136: 169, # None + 137: 170, # '‰' + 138: 171, # 'Š' + 139: 172, # '‹' + 140: 173, # 'Ś' + 141: 174, # 'Ť' + 142: 175, # 'Ž' + 143: 176, # 'Ź' + 144: 177, # None + 145: 178, # '‘' + 146: 179, # '’' + 147: 180, # '“' + 148: 78, # '”' + 149: 181, # '•' + 150: 69, # '–' + 151: 182, # '—' + 152: 183, # None + 153: 184, # '™' + 154: 185, # 'š' + 155: 186, # '›' + 156: 187, # 'ś' + 157: 188, # 'ť' + 158: 189, # 'ž' + 159: 190, # 'ź' + 160: 191, # '\xa0' + 161: 192, # 'ˇ' + 162: 193, # '˘' + 163: 194, # 'Ł' + 164: 195, # '¤' + 165: 196, # 'Ą' + 166: 197, # '¦' + 167: 76, # '§' + 168: 198, # '¨' + 169: 199, # '©' + 170: 200, # 'Ş' + 171: 201, # '«' + 172: 202, # '¬' + 173: 203, # '\xad' + 174: 204, # '®' + 175: 205, # 'Ż' + 176: 81, # '°' + 177: 206, # '±' + 178: 207, # '˛' + 179: 208, # 'ł' + 180: 209, # '´' + 181: 210, # 'µ' + 182: 211, # '¶' + 183: 212, # '·' + 184: 213, # '¸' + 185: 214, # 'ą' + 186: 215, # 'ş' + 187: 216, # '»' + 188: 217, # 'Ľ' + 189: 218, # '˝' + 190: 219, # 'ľ' + 191: 220, # 'ż' + 192: 221, # 'Ŕ' + 193: 51, # 'Á' + 194: 83, # 'Â' + 195: 222, # 'Ă' + 196: 80, # 'Ä' + 197: 223, # 'Ĺ' + 198: 224, # 'Ć' + 199: 225, # 'Ç' + 200: 226, # 'Č' + 201: 44, # 'É' + 202: 227, # 'Ę' + 203: 228, # 'Ë' + 204: 229, # 'Ě' + 205: 61, # 'Í' + 206: 230, # 'Î' + 207: 231, # 'Ď' + 208: 232, # 'Đ' + 209: 233, # 'Ń' + 210: 234, # 'Ň' + 211: 58, # 'Ó' + 212: 235, # 'Ô' + 213: 66, # 'Ő' + 214: 59, # 'Ö' + 215: 236, # '×' + 216: 237, # 'Ř' + 217: 238, # 'Ů' + 218: 60, # 'Ú' + 219: 70, # 'Ű' + 220: 63, # 'Ü' + 221: 239, # 'Ý' + 222: 240, # 'Ţ' + 223: 241, # 'ß' + 224: 84, # 'ŕ' + 225: 14, # 'á' + 226: 75, # 'â' + 227: 242, # 'ă' + 228: 71, # 'ä' + 229: 82, # 'ĺ' + 230: 243, # 'ć' + 231: 73, # 'ç' + 232: 244, # 'č' + 233: 15, # 'é' + 234: 85, # 'ę' + 235: 79, # 'ë' + 236: 86, # 'ě' + 237: 30, # 'í' + 238: 77, # 'î' + 239: 87, # 'ď' + 240: 245, # 'đ' + 241: 246, # 'ń' + 242: 247, # 'ň' + 243: 25, # 'ó' + 244: 74, # 'ô' + 245: 42, # 'ő' + 246: 24, # 'ö' + 247: 248, # '÷' + 248: 249, # 'ř' + 249: 250, # 'ů' + 250: 31, # 'ú' + 251: 56, # 'ű' + 252: 29, # 'ü' + 253: 251, # 'ý' + 254: 252, # 'ţ' + 255: 253, # '˙' +} + +WINDOWS_1250_HUNGARIAN_MODEL = SingleByteCharSetModel(charset_name='windows-1250', + language='Hungarian', + char_to_order_map=WINDOWS_1250_HUNGARIAN_CHAR_TO_ORDER, + language_model=HUNGARIAN_LANG_MODEL, + typical_positive_ratio=0.947368, + keep_ascii_letters=True, + alphabet='ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvzÁÉÍÓÖÚÜáéíóöúüŐőŰű') + +ISO_8859_2_HUNGARIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 28, # 'A' + 66: 40, # 'B' + 67: 54, # 'C' + 68: 45, # 'D' + 69: 32, # 'E' + 70: 50, # 'F' + 71: 49, # 'G' + 72: 38, # 'H' + 73: 39, # 'I' + 74: 53, # 'J' + 75: 36, # 'K' + 76: 41, # 'L' + 77: 34, # 'M' + 78: 35, # 'N' + 79: 47, # 'O' + 80: 46, # 'P' + 81: 71, # 'Q' + 82: 43, # 'R' + 83: 33, # 'S' + 84: 37, # 'T' + 85: 57, # 'U' + 86: 48, # 'V' + 87: 64, # 'W' + 88: 68, # 'X' + 89: 55, # 'Y' + 90: 52, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 2, # 'a' + 98: 18, # 'b' + 99: 26, # 'c' + 100: 17, # 'd' + 101: 1, # 'e' + 102: 27, # 'f' + 103: 12, # 'g' + 104: 20, # 'h' + 105: 9, # 'i' + 106: 22, # 'j' + 107: 7, # 'k' + 108: 6, # 'l' + 109: 13, # 'm' + 110: 4, # 'n' + 111: 8, # 'o' + 112: 23, # 'p' + 113: 67, # 'q' + 114: 10, # 'r' + 115: 5, # 's' + 116: 3, # 't' + 117: 21, # 'u' + 118: 19, # 'v' + 119: 65, # 'w' + 120: 62, # 'x' + 121: 16, # 'y' + 122: 11, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 159, # '\x80' + 129: 160, # '\x81' + 130: 161, # '\x82' + 131: 162, # '\x83' + 132: 163, # '\x84' + 133: 164, # '\x85' + 134: 165, # '\x86' + 135: 166, # '\x87' + 136: 167, # '\x88' + 137: 168, # '\x89' + 138: 169, # '\x8a' + 139: 170, # '\x8b' + 140: 171, # '\x8c' + 141: 172, # '\x8d' + 142: 173, # '\x8e' + 143: 174, # '\x8f' + 144: 175, # '\x90' + 145: 176, # '\x91' + 146: 177, # '\x92' + 147: 178, # '\x93' + 148: 179, # '\x94' + 149: 180, # '\x95' + 150: 181, # '\x96' + 151: 182, # '\x97' + 152: 183, # '\x98' + 153: 184, # '\x99' + 154: 185, # '\x9a' + 155: 186, # '\x9b' + 156: 187, # '\x9c' + 157: 188, # '\x9d' + 158: 189, # '\x9e' + 159: 190, # '\x9f' + 160: 191, # '\xa0' + 161: 192, # 'Ą' + 162: 193, # '˘' + 163: 194, # 'Ł' + 164: 195, # '¤' + 165: 196, # 'Ľ' + 166: 197, # 'Ś' + 167: 75, # '§' + 168: 198, # '¨' + 169: 199, # 'Š' + 170: 200, # 'Ş' + 171: 201, # 'Ť' + 172: 202, # 'Ź' + 173: 203, # '\xad' + 174: 204, # 'Ž' + 175: 205, # 'Ż' + 176: 79, # '°' + 177: 206, # 'ą' + 178: 207, # '˛' + 179: 208, # 'ł' + 180: 209, # '´' + 181: 210, # 'ľ' + 182: 211, # 'ś' + 183: 212, # 'ˇ' + 184: 213, # '¸' + 185: 214, # 'š' + 186: 215, # 'ş' + 187: 216, # 'ť' + 188: 217, # 'ź' + 189: 218, # '˝' + 190: 219, # 'ž' + 191: 220, # 'ż' + 192: 221, # 'Ŕ' + 193: 51, # 'Á' + 194: 81, # 'Â' + 195: 222, # 'Ă' + 196: 78, # 'Ä' + 197: 223, # 'Ĺ' + 198: 224, # 'Ć' + 199: 225, # 'Ç' + 200: 226, # 'Č' + 201: 44, # 'É' + 202: 227, # 'Ę' + 203: 228, # 'Ë' + 204: 229, # 'Ě' + 205: 61, # 'Í' + 206: 230, # 'Î' + 207: 231, # 'Ď' + 208: 232, # 'Đ' + 209: 233, # 'Ń' + 210: 234, # 'Ň' + 211: 58, # 'Ó' + 212: 235, # 'Ô' + 213: 66, # 'Ő' + 214: 59, # 'Ö' + 215: 236, # '×' + 216: 237, # 'Ř' + 217: 238, # 'Ů' + 218: 60, # 'Ú' + 219: 69, # 'Ű' + 220: 63, # 'Ü' + 221: 239, # 'Ý' + 222: 240, # 'Ţ' + 223: 241, # 'ß' + 224: 82, # 'ŕ' + 225: 14, # 'á' + 226: 74, # 'â' + 227: 242, # 'ă' + 228: 70, # 'ä' + 229: 80, # 'ĺ' + 230: 243, # 'ć' + 231: 72, # 'ç' + 232: 244, # 'č' + 233: 15, # 'é' + 234: 83, # 'ę' + 235: 77, # 'ë' + 236: 84, # 'ě' + 237: 30, # 'í' + 238: 76, # 'î' + 239: 85, # 'ď' + 240: 245, # 'đ' + 241: 246, # 'ń' + 242: 247, # 'ň' + 243: 25, # 'ó' + 244: 73, # 'ô' + 245: 42, # 'ő' + 246: 24, # 'ö' + 247: 248, # '÷' + 248: 249, # 'ř' + 249: 250, # 'ů' + 250: 31, # 'ú' + 251: 56, # 'ű' + 252: 29, # 'ü' + 253: 251, # 'ý' + 254: 252, # 'ţ' + 255: 253, # '˙' +} + +ISO_8859_2_HUNGARIAN_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-2', + language='Hungarian', + char_to_order_map=ISO_8859_2_HUNGARIAN_CHAR_TO_ORDER, + language_model=HUNGARIAN_LANG_MODEL, + typical_positive_ratio=0.947368, + keep_ascii_letters=True, + alphabet='ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnoprstuvzÁÉÍÓÖÚÜáéíóöúüŐőŰű') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py new file mode 100644 index 00000000..5594452b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py @@ -0,0 +1,5718 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +RUSSIAN_LANG_MODEL = { + 37: { # 'А' + 37: 0, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 2, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 1, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 0, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 44: { # 'Б' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 2, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 33: { # 'В' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 2, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 1, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 0, # 'ю' + 16: 1, # 'я' + }, + 46: { # 'Г' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 41: { # 'Д' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 2, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 3, # 'ж' + 20: 1, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 48: { # 'Е' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 2, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 2, # 'Р' + 32: 2, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 2, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 1, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 1, # 'р' + 7: 3, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 56: { # 'Ж' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 1, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 2, # 'ю' + 16: 0, # 'я' + }, + 51: { # 'З' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 1, # 'я' + }, + 42: { # 'И' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 2, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 2, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 2, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 1, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 60: { # 'Й' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 1, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 36: { # 'К' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 2, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 1, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 49: { # 'Л' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 0, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 0, # 'м' + 5: 1, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 2, # 'ю' + 16: 1, # 'я' + }, + 38: { # 'М' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 0, # 'Ь' + 47: 1, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 31: { # 'Н' + 37: 2, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 2, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 34: { # 'О' + 37: 0, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 2, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 1, # 'З' + 42: 1, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 2, # 'Л' + 38: 1, # 'М' + 31: 2, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 2, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 1, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 1, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 35: { # 'П' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 2, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 1, # 'с' + 6: 1, # 'т' + 14: 2, # 'у' + 39: 1, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 2, # 'я' + }, + 45: { # 'Р' + 37: 2, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 2, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 2, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 2, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 2, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 2, # 'я' + }, + 32: { # 'С' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 2, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 2, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 2, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 1, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 40: { # 'Т' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 2, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 1, # 'Ь' + 47: 1, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 1, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 52: { # 'У' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 1, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 1, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 1, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 2, # 'и' + 23: 1, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 1, # 'н' + 1: 2, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 0, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 53: { # 'Ф' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 1, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 55: { # 'Х' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 2, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 0, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 58: { # 'Ц' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 1, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 50: { # 'Ч' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 1, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 1, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 1, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 1, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 57: { # 'Ш' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 1, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 2, # 'о' + 15: 2, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 63: { # 'Щ' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 1, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 1, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 1, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 62: { # 'Ы' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 1, # 'Ц' + 50: 0, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 0, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 61: { # 'Ь' + 37: 0, # 'А' + 44: 1, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 1, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 1, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 1, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 0, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 47: { # 'Э' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 1, # 'Й' + 36: 1, # 'К' + 49: 1, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 1, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 2, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 59: { # 'Ю' + 37: 1, # 'А' + 44: 1, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 1, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 0, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 0, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 1, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 43: { # 'Я' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 1, # 'В' + 46: 1, # 'Г' + 41: 0, # 'Д' + 48: 1, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 1, # 'С' + 40: 1, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 1, # 'Х' + 58: 0, # 'Ц' + 50: 1, # 'Ч' + 57: 0, # 'Ш' + 63: 1, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 1, # 'Ю' + 43: 1, # 'Я' + 3: 0, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 0, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 1, # 'й' + 11: 1, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 1, # 'п' + 9: 1, # 'р' + 7: 1, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 3: { # 'а' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 1, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 21: { # 'б' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 1, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 2, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 3, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 10: { # 'в' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 19: { # 'г' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 13: { # 'д' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 3, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 2: { # 'е' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 24: { # 'ж' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 1, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 0, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 20: { # 'з' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 1, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 4: { # 'и' + 37: 1, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 23: { # 'й' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 1, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 2, # 'з' + 4: 1, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 2, # 'я' + }, + 11: { # 'к' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 3, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 1, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 8: { # 'л' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 3, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 1, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 1, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 12: { # 'м' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 5: { # 'н' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 3, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 2, # 'щ' + 54: 1, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 1: { # 'о' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 3, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 15: { # 'п' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 3, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 0, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 1, # 'ш' + 29: 1, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 2, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 3, # 'я' + }, + 9: { # 'р' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 2, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 2, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 7: { # 'с' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 1, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 2, # 'ш' + 29: 1, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 6: { # 'т' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 2, # 'щ' + 54: 2, # 'ъ' + 18: 3, # 'ы' + 17: 3, # 'ь' + 30: 2, # 'э' + 27: 2, # 'ю' + 16: 3, # 'я' + }, + 14: { # 'у' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 3, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 2, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 2, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 2, # 'э' + 27: 3, # 'ю' + 16: 2, # 'я' + }, + 39: { # 'ф' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 0, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 2, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 1, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 2, # 'ы' + 17: 1, # 'ь' + 30: 2, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 26: { # 'х' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 3, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 1, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 1, # 'п' + 9: 3, # 'р' + 7: 2, # 'с' + 6: 2, # 'т' + 14: 2, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 1, # 'ъ' + 18: 0, # 'ы' + 17: 1, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 28: { # 'ц' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 1, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 2, # 'к' + 8: 1, # 'л' + 12: 1, # 'м' + 5: 1, # 'н' + 1: 3, # 'о' + 15: 0, # 'п' + 9: 1, # 'р' + 7: 0, # 'с' + 6: 1, # 'т' + 14: 3, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 1, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 3, # 'ы' + 17: 1, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 22: { # 'ч' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 2, # 'л' + 12: 1, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 3, # 'т' + 14: 3, # 'у' + 39: 1, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 1, # 'ч' + 25: 2, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 3, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 25: { # 'ш' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 1, # 'б' + 10: 2, # 'в' + 19: 1, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 2, # 'м' + 5: 3, # 'н' + 1: 3, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 1, # 'с' + 6: 2, # 'т' + 14: 3, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 1, # 'ц' + 22: 1, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 3, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 0, # 'я' + }, + 29: { # 'щ' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 3, # 'а' + 21: 0, # 'б' + 10: 1, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 3, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 3, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 1, # 'м' + 5: 2, # 'н' + 1: 1, # 'о' + 15: 0, # 'п' + 9: 2, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 2, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 2, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 0, # 'я' + }, + 54: { # 'ъ' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 0, # 'б' + 10: 0, # 'в' + 19: 0, # 'г' + 13: 0, # 'д' + 2: 2, # 'е' + 24: 0, # 'ж' + 20: 0, # 'з' + 4: 0, # 'и' + 23: 0, # 'й' + 11: 0, # 'к' + 8: 0, # 'л' + 12: 0, # 'м' + 5: 0, # 'н' + 1: 0, # 'о' + 15: 0, # 'п' + 9: 0, # 'р' + 7: 0, # 'с' + 6: 0, # 'т' + 14: 0, # 'у' + 39: 0, # 'ф' + 26: 0, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 0, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 1, # 'ю' + 16: 2, # 'я' + }, + 18: { # 'ы' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 3, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 2, # 'и' + 23: 3, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 1, # 'о' + 15: 3, # 'п' + 9: 3, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 0, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 3, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 0, # 'ю' + 16: 2, # 'я' + }, + 17: { # 'ь' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 2, # 'б' + 10: 2, # 'в' + 19: 2, # 'г' + 13: 2, # 'д' + 2: 3, # 'е' + 24: 1, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 0, # 'й' + 11: 3, # 'к' + 8: 0, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 2, # 'о' + 15: 2, # 'п' + 9: 1, # 'р' + 7: 3, # 'с' + 6: 2, # 'т' + 14: 0, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 3, # 'ш' + 29: 2, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 3, # 'ю' + 16: 3, # 'я' + }, + 30: { # 'э' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 1, # 'М' + 31: 1, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 1, # 'Р' + 32: 1, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 1, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 1, # 'б' + 10: 1, # 'в' + 19: 1, # 'г' + 13: 2, # 'д' + 2: 1, # 'е' + 24: 0, # 'ж' + 20: 1, # 'з' + 4: 0, # 'и' + 23: 2, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 2, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 2, # 'ф' + 26: 1, # 'х' + 28: 0, # 'ц' + 22: 0, # 'ч' + 25: 1, # 'ш' + 29: 0, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 1, # 'ю' + 16: 1, # 'я' + }, + 27: { # 'ю' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 2, # 'а' + 21: 3, # 'б' + 10: 1, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 1, # 'е' + 24: 2, # 'ж' + 20: 2, # 'з' + 4: 1, # 'и' + 23: 1, # 'й' + 11: 2, # 'к' + 8: 2, # 'л' + 12: 2, # 'м' + 5: 2, # 'н' + 1: 1, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 0, # 'у' + 39: 1, # 'ф' + 26: 2, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 1, # 'э' + 27: 2, # 'ю' + 16: 1, # 'я' + }, + 16: { # 'я' + 37: 0, # 'А' + 44: 0, # 'Б' + 33: 0, # 'В' + 46: 0, # 'Г' + 41: 0, # 'Д' + 48: 0, # 'Е' + 56: 0, # 'Ж' + 51: 0, # 'З' + 42: 0, # 'И' + 60: 0, # 'Й' + 36: 0, # 'К' + 49: 0, # 'Л' + 38: 0, # 'М' + 31: 0, # 'Н' + 34: 0, # 'О' + 35: 0, # 'П' + 45: 0, # 'Р' + 32: 0, # 'С' + 40: 0, # 'Т' + 52: 0, # 'У' + 53: 0, # 'Ф' + 55: 0, # 'Х' + 58: 0, # 'Ц' + 50: 0, # 'Ч' + 57: 0, # 'Ш' + 63: 0, # 'Щ' + 62: 0, # 'Ы' + 61: 0, # 'Ь' + 47: 0, # 'Э' + 59: 0, # 'Ю' + 43: 0, # 'Я' + 3: 0, # 'а' + 21: 2, # 'б' + 10: 3, # 'в' + 19: 2, # 'г' + 13: 3, # 'д' + 2: 3, # 'е' + 24: 3, # 'ж' + 20: 3, # 'з' + 4: 2, # 'и' + 23: 2, # 'й' + 11: 3, # 'к' + 8: 3, # 'л' + 12: 3, # 'м' + 5: 3, # 'н' + 1: 0, # 'о' + 15: 2, # 'п' + 9: 2, # 'р' + 7: 3, # 'с' + 6: 3, # 'т' + 14: 1, # 'у' + 39: 1, # 'ф' + 26: 3, # 'х' + 28: 2, # 'ц' + 22: 2, # 'ч' + 25: 2, # 'ш' + 29: 3, # 'щ' + 54: 0, # 'ъ' + 18: 0, # 'ы' + 17: 0, # 'ь' + 30: 0, # 'э' + 27: 2, # 'ю' + 16: 2, # 'я' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +IBM866_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 37, # 'А' + 129: 44, # 'Б' + 130: 33, # 'В' + 131: 46, # 'Г' + 132: 41, # 'Д' + 133: 48, # 'Е' + 134: 56, # 'Ж' + 135: 51, # 'З' + 136: 42, # 'И' + 137: 60, # 'Й' + 138: 36, # 'К' + 139: 49, # 'Л' + 140: 38, # 'М' + 141: 31, # 'Н' + 142: 34, # 'О' + 143: 35, # 'П' + 144: 45, # 'Р' + 145: 32, # 'С' + 146: 40, # 'Т' + 147: 52, # 'У' + 148: 53, # 'Ф' + 149: 55, # 'Х' + 150: 58, # 'Ц' + 151: 50, # 'Ч' + 152: 57, # 'Ш' + 153: 63, # 'Щ' + 154: 70, # 'Ъ' + 155: 62, # 'Ы' + 156: 61, # 'Ь' + 157: 47, # 'Э' + 158: 59, # 'Ю' + 159: 43, # 'Я' + 160: 3, # 'а' + 161: 21, # 'б' + 162: 10, # 'в' + 163: 19, # 'г' + 164: 13, # 'д' + 165: 2, # 'е' + 166: 24, # 'ж' + 167: 20, # 'з' + 168: 4, # 'и' + 169: 23, # 'й' + 170: 11, # 'к' + 171: 8, # 'л' + 172: 12, # 'м' + 173: 5, # 'н' + 174: 1, # 'о' + 175: 15, # 'п' + 176: 191, # '░' + 177: 192, # '▒' + 178: 193, # '▓' + 179: 194, # '│' + 180: 195, # '┤' + 181: 196, # '╡' + 182: 197, # '╢' + 183: 198, # '╖' + 184: 199, # '╕' + 185: 200, # '╣' + 186: 201, # '║' + 187: 202, # '╗' + 188: 203, # '╝' + 189: 204, # '╜' + 190: 205, # '╛' + 191: 206, # '┐' + 192: 207, # '└' + 193: 208, # '┴' + 194: 209, # '┬' + 195: 210, # '├' + 196: 211, # '─' + 197: 212, # '┼' + 198: 213, # '╞' + 199: 214, # '╟' + 200: 215, # '╚' + 201: 216, # '╔' + 202: 217, # '╩' + 203: 218, # '╦' + 204: 219, # '╠' + 205: 220, # '═' + 206: 221, # '╬' + 207: 222, # '╧' + 208: 223, # '╨' + 209: 224, # '╤' + 210: 225, # '╥' + 211: 226, # '╙' + 212: 227, # '╘' + 213: 228, # '╒' + 214: 229, # '╓' + 215: 230, # '╫' + 216: 231, # '╪' + 217: 232, # '┘' + 218: 233, # '┌' + 219: 234, # '█' + 220: 235, # '▄' + 221: 236, # '▌' + 222: 237, # '▐' + 223: 238, # '▀' + 224: 9, # 'р' + 225: 7, # 'с' + 226: 6, # 'т' + 227: 14, # 'у' + 228: 39, # 'ф' + 229: 26, # 'х' + 230: 28, # 'ц' + 231: 22, # 'ч' + 232: 25, # 'ш' + 233: 29, # 'щ' + 234: 54, # 'ъ' + 235: 18, # 'ы' + 236: 17, # 'ь' + 237: 30, # 'э' + 238: 27, # 'ю' + 239: 16, # 'я' + 240: 239, # 'Ё' + 241: 68, # 'ё' + 242: 240, # 'Є' + 243: 241, # 'є' + 244: 242, # 'Ї' + 245: 243, # 'ї' + 246: 244, # 'Ў' + 247: 245, # 'ў' + 248: 246, # '°' + 249: 247, # '∙' + 250: 248, # '·' + 251: 249, # '√' + 252: 250, # '№' + 253: 251, # '¤' + 254: 252, # '■' + 255: 255, # '\xa0' +} + +IBM866_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='IBM866', + language='Russian', + char_to_order_map=IBM866_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +WINDOWS_1251_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # 'Ђ' + 129: 192, # 'Ѓ' + 130: 193, # '‚' + 131: 194, # 'ѓ' + 132: 195, # '„' + 133: 196, # '…' + 134: 197, # '†' + 135: 198, # '‡' + 136: 199, # '€' + 137: 200, # '‰' + 138: 201, # 'Љ' + 139: 202, # '‹' + 140: 203, # 'Њ' + 141: 204, # 'Ќ' + 142: 205, # 'Ћ' + 143: 206, # 'Џ' + 144: 207, # 'ђ' + 145: 208, # '‘' + 146: 209, # '’' + 147: 210, # '“' + 148: 211, # '”' + 149: 212, # '•' + 150: 213, # '–' + 151: 214, # '—' + 152: 215, # None + 153: 216, # '™' + 154: 217, # 'љ' + 155: 218, # '›' + 156: 219, # 'њ' + 157: 220, # 'ќ' + 158: 221, # 'ћ' + 159: 222, # 'џ' + 160: 223, # '\xa0' + 161: 224, # 'Ў' + 162: 225, # 'ў' + 163: 226, # 'Ј' + 164: 227, # '¤' + 165: 228, # 'Ґ' + 166: 229, # '¦' + 167: 230, # '§' + 168: 231, # 'Ё' + 169: 232, # '©' + 170: 233, # 'Є' + 171: 234, # '«' + 172: 235, # '¬' + 173: 236, # '\xad' + 174: 237, # '®' + 175: 238, # 'Ї' + 176: 239, # '°' + 177: 240, # '±' + 178: 241, # 'І' + 179: 242, # 'і' + 180: 243, # 'ґ' + 181: 244, # 'µ' + 182: 245, # '¶' + 183: 246, # '·' + 184: 68, # 'ё' + 185: 247, # '№' + 186: 248, # 'є' + 187: 249, # '»' + 188: 250, # 'ј' + 189: 251, # 'Ѕ' + 190: 252, # 'ѕ' + 191: 253, # 'ї' + 192: 37, # 'А' + 193: 44, # 'Б' + 194: 33, # 'В' + 195: 46, # 'Г' + 196: 41, # 'Д' + 197: 48, # 'Е' + 198: 56, # 'Ж' + 199: 51, # 'З' + 200: 42, # 'И' + 201: 60, # 'Й' + 202: 36, # 'К' + 203: 49, # 'Л' + 204: 38, # 'М' + 205: 31, # 'Н' + 206: 34, # 'О' + 207: 35, # 'П' + 208: 45, # 'Р' + 209: 32, # 'С' + 210: 40, # 'Т' + 211: 52, # 'У' + 212: 53, # 'Ф' + 213: 55, # 'Х' + 214: 58, # 'Ц' + 215: 50, # 'Ч' + 216: 57, # 'Ш' + 217: 63, # 'Щ' + 218: 70, # 'Ъ' + 219: 62, # 'Ы' + 220: 61, # 'Ь' + 221: 47, # 'Э' + 222: 59, # 'Ю' + 223: 43, # 'Я' + 224: 3, # 'а' + 225: 21, # 'б' + 226: 10, # 'в' + 227: 19, # 'г' + 228: 13, # 'д' + 229: 2, # 'е' + 230: 24, # 'ж' + 231: 20, # 'з' + 232: 4, # 'и' + 233: 23, # 'й' + 234: 11, # 'к' + 235: 8, # 'л' + 236: 12, # 'м' + 237: 5, # 'н' + 238: 1, # 'о' + 239: 15, # 'п' + 240: 9, # 'р' + 241: 7, # 'с' + 242: 6, # 'т' + 243: 14, # 'у' + 244: 39, # 'ф' + 245: 26, # 'х' + 246: 28, # 'ц' + 247: 22, # 'ч' + 248: 25, # 'ш' + 249: 29, # 'щ' + 250: 54, # 'ъ' + 251: 18, # 'ы' + 252: 17, # 'ь' + 253: 30, # 'э' + 254: 27, # 'ю' + 255: 16, # 'я' +} + +WINDOWS_1251_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='windows-1251', + language='Russian', + char_to_order_map=WINDOWS_1251_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +IBM855_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # 'ђ' + 129: 192, # 'Ђ' + 130: 193, # 'ѓ' + 131: 194, # 'Ѓ' + 132: 68, # 'ё' + 133: 195, # 'Ё' + 134: 196, # 'є' + 135: 197, # 'Є' + 136: 198, # 'ѕ' + 137: 199, # 'Ѕ' + 138: 200, # 'і' + 139: 201, # 'І' + 140: 202, # 'ї' + 141: 203, # 'Ї' + 142: 204, # 'ј' + 143: 205, # 'Ј' + 144: 206, # 'љ' + 145: 207, # 'Љ' + 146: 208, # 'њ' + 147: 209, # 'Њ' + 148: 210, # 'ћ' + 149: 211, # 'Ћ' + 150: 212, # 'ќ' + 151: 213, # 'Ќ' + 152: 214, # 'ў' + 153: 215, # 'Ў' + 154: 216, # 'џ' + 155: 217, # 'Џ' + 156: 27, # 'ю' + 157: 59, # 'Ю' + 158: 54, # 'ъ' + 159: 70, # 'Ъ' + 160: 3, # 'а' + 161: 37, # 'А' + 162: 21, # 'б' + 163: 44, # 'Б' + 164: 28, # 'ц' + 165: 58, # 'Ц' + 166: 13, # 'д' + 167: 41, # 'Д' + 168: 2, # 'е' + 169: 48, # 'Е' + 170: 39, # 'ф' + 171: 53, # 'Ф' + 172: 19, # 'г' + 173: 46, # 'Г' + 174: 218, # '«' + 175: 219, # '»' + 176: 220, # '░' + 177: 221, # '▒' + 178: 222, # '▓' + 179: 223, # '│' + 180: 224, # '┤' + 181: 26, # 'х' + 182: 55, # 'Х' + 183: 4, # 'и' + 184: 42, # 'И' + 185: 225, # '╣' + 186: 226, # '║' + 187: 227, # '╗' + 188: 228, # '╝' + 189: 23, # 'й' + 190: 60, # 'Й' + 191: 229, # '┐' + 192: 230, # '└' + 193: 231, # '┴' + 194: 232, # '┬' + 195: 233, # '├' + 196: 234, # '─' + 197: 235, # '┼' + 198: 11, # 'к' + 199: 36, # 'К' + 200: 236, # '╚' + 201: 237, # '╔' + 202: 238, # '╩' + 203: 239, # '╦' + 204: 240, # '╠' + 205: 241, # '═' + 206: 242, # '╬' + 207: 243, # '¤' + 208: 8, # 'л' + 209: 49, # 'Л' + 210: 12, # 'м' + 211: 38, # 'М' + 212: 5, # 'н' + 213: 31, # 'Н' + 214: 1, # 'о' + 215: 34, # 'О' + 216: 15, # 'п' + 217: 244, # '┘' + 218: 245, # '┌' + 219: 246, # '█' + 220: 247, # '▄' + 221: 35, # 'П' + 222: 16, # 'я' + 223: 248, # '▀' + 224: 43, # 'Я' + 225: 9, # 'р' + 226: 45, # 'Р' + 227: 7, # 'с' + 228: 32, # 'С' + 229: 6, # 'т' + 230: 40, # 'Т' + 231: 14, # 'у' + 232: 52, # 'У' + 233: 24, # 'ж' + 234: 56, # 'Ж' + 235: 10, # 'в' + 236: 33, # 'В' + 237: 17, # 'ь' + 238: 61, # 'Ь' + 239: 249, # '№' + 240: 250, # '\xad' + 241: 18, # 'ы' + 242: 62, # 'Ы' + 243: 20, # 'з' + 244: 51, # 'З' + 245: 25, # 'ш' + 246: 57, # 'Ш' + 247: 30, # 'э' + 248: 47, # 'Э' + 249: 29, # 'щ' + 250: 63, # 'Щ' + 251: 22, # 'ч' + 252: 50, # 'Ч' + 253: 251, # '§' + 254: 252, # '■' + 255: 255, # '\xa0' +} + +IBM855_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='IBM855', + language='Russian', + char_to_order_map=IBM855_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +KOI8_R_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # '─' + 129: 192, # '│' + 130: 193, # '┌' + 131: 194, # '┐' + 132: 195, # '└' + 133: 196, # '┘' + 134: 197, # '├' + 135: 198, # '┤' + 136: 199, # '┬' + 137: 200, # '┴' + 138: 201, # '┼' + 139: 202, # '▀' + 140: 203, # '▄' + 141: 204, # '█' + 142: 205, # '▌' + 143: 206, # '▐' + 144: 207, # '░' + 145: 208, # '▒' + 146: 209, # '▓' + 147: 210, # '⌠' + 148: 211, # '■' + 149: 212, # '∙' + 150: 213, # '√' + 151: 214, # '≈' + 152: 215, # '≤' + 153: 216, # '≥' + 154: 217, # '\xa0' + 155: 218, # '⌡' + 156: 219, # '°' + 157: 220, # '²' + 158: 221, # '·' + 159: 222, # '÷' + 160: 223, # '═' + 161: 224, # '║' + 162: 225, # '╒' + 163: 68, # 'ё' + 164: 226, # '╓' + 165: 227, # '╔' + 166: 228, # '╕' + 167: 229, # '╖' + 168: 230, # '╗' + 169: 231, # '╘' + 170: 232, # '╙' + 171: 233, # '╚' + 172: 234, # '╛' + 173: 235, # '╜' + 174: 236, # '╝' + 175: 237, # '╞' + 176: 238, # '╟' + 177: 239, # '╠' + 178: 240, # '╡' + 179: 241, # 'Ё' + 180: 242, # '╢' + 181: 243, # '╣' + 182: 244, # '╤' + 183: 245, # '╥' + 184: 246, # '╦' + 185: 247, # '╧' + 186: 248, # '╨' + 187: 249, # '╩' + 188: 250, # '╪' + 189: 251, # '╫' + 190: 252, # '╬' + 191: 253, # '©' + 192: 27, # 'ю' + 193: 3, # 'а' + 194: 21, # 'б' + 195: 28, # 'ц' + 196: 13, # 'д' + 197: 2, # 'е' + 198: 39, # 'ф' + 199: 19, # 'г' + 200: 26, # 'х' + 201: 4, # 'и' + 202: 23, # 'й' + 203: 11, # 'к' + 204: 8, # 'л' + 205: 12, # 'м' + 206: 5, # 'н' + 207: 1, # 'о' + 208: 15, # 'п' + 209: 16, # 'я' + 210: 9, # 'р' + 211: 7, # 'с' + 212: 6, # 'т' + 213: 14, # 'у' + 214: 24, # 'ж' + 215: 10, # 'в' + 216: 17, # 'ь' + 217: 18, # 'ы' + 218: 20, # 'з' + 219: 25, # 'ш' + 220: 30, # 'э' + 221: 29, # 'щ' + 222: 22, # 'ч' + 223: 54, # 'ъ' + 224: 59, # 'Ю' + 225: 37, # 'А' + 226: 44, # 'Б' + 227: 58, # 'Ц' + 228: 41, # 'Д' + 229: 48, # 'Е' + 230: 53, # 'Ф' + 231: 46, # 'Г' + 232: 55, # 'Х' + 233: 42, # 'И' + 234: 60, # 'Й' + 235: 36, # 'К' + 236: 49, # 'Л' + 237: 38, # 'М' + 238: 31, # 'Н' + 239: 34, # 'О' + 240: 35, # 'П' + 241: 43, # 'Я' + 242: 45, # 'Р' + 243: 32, # 'С' + 244: 40, # 'Т' + 245: 52, # 'У' + 246: 56, # 'Ж' + 247: 33, # 'В' + 248: 61, # 'Ь' + 249: 62, # 'Ы' + 250: 51, # 'З' + 251: 57, # 'Ш' + 252: 47, # 'Э' + 253: 63, # 'Щ' + 254: 50, # 'Ч' + 255: 70, # 'Ъ' +} + +KOI8_R_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='KOI8-R', + language='Russian', + char_to_order_map=KOI8_R_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +MACCYRILLIC_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 37, # 'А' + 129: 44, # 'Б' + 130: 33, # 'В' + 131: 46, # 'Г' + 132: 41, # 'Д' + 133: 48, # 'Е' + 134: 56, # 'Ж' + 135: 51, # 'З' + 136: 42, # 'И' + 137: 60, # 'Й' + 138: 36, # 'К' + 139: 49, # 'Л' + 140: 38, # 'М' + 141: 31, # 'Н' + 142: 34, # 'О' + 143: 35, # 'П' + 144: 45, # 'Р' + 145: 32, # 'С' + 146: 40, # 'Т' + 147: 52, # 'У' + 148: 53, # 'Ф' + 149: 55, # 'Х' + 150: 58, # 'Ц' + 151: 50, # 'Ч' + 152: 57, # 'Ш' + 153: 63, # 'Щ' + 154: 70, # 'Ъ' + 155: 62, # 'Ы' + 156: 61, # 'Ь' + 157: 47, # 'Э' + 158: 59, # 'Ю' + 159: 43, # 'Я' + 160: 191, # '†' + 161: 192, # '°' + 162: 193, # 'Ґ' + 163: 194, # '£' + 164: 195, # '§' + 165: 196, # '•' + 166: 197, # '¶' + 167: 198, # 'І' + 168: 199, # '®' + 169: 200, # '©' + 170: 201, # '™' + 171: 202, # 'Ђ' + 172: 203, # 'ђ' + 173: 204, # '≠' + 174: 205, # 'Ѓ' + 175: 206, # 'ѓ' + 176: 207, # '∞' + 177: 208, # '±' + 178: 209, # '≤' + 179: 210, # '≥' + 180: 211, # 'і' + 181: 212, # 'µ' + 182: 213, # 'ґ' + 183: 214, # 'Ј' + 184: 215, # 'Є' + 185: 216, # 'є' + 186: 217, # 'Ї' + 187: 218, # 'ї' + 188: 219, # 'Љ' + 189: 220, # 'љ' + 190: 221, # 'Њ' + 191: 222, # 'њ' + 192: 223, # 'ј' + 193: 224, # 'Ѕ' + 194: 225, # '¬' + 195: 226, # '√' + 196: 227, # 'ƒ' + 197: 228, # '≈' + 198: 229, # '∆' + 199: 230, # '«' + 200: 231, # '»' + 201: 232, # '…' + 202: 233, # '\xa0' + 203: 234, # 'Ћ' + 204: 235, # 'ћ' + 205: 236, # 'Ќ' + 206: 237, # 'ќ' + 207: 238, # 'ѕ' + 208: 239, # '–' + 209: 240, # '—' + 210: 241, # '“' + 211: 242, # '”' + 212: 243, # '‘' + 213: 244, # '’' + 214: 245, # '÷' + 215: 246, # '„' + 216: 247, # 'Ў' + 217: 248, # 'ў' + 218: 249, # 'Џ' + 219: 250, # 'џ' + 220: 251, # '№' + 221: 252, # 'Ё' + 222: 68, # 'ё' + 223: 16, # 'я' + 224: 3, # 'а' + 225: 21, # 'б' + 226: 10, # 'в' + 227: 19, # 'г' + 228: 13, # 'д' + 229: 2, # 'е' + 230: 24, # 'ж' + 231: 20, # 'з' + 232: 4, # 'и' + 233: 23, # 'й' + 234: 11, # 'к' + 235: 8, # 'л' + 236: 12, # 'м' + 237: 5, # 'н' + 238: 1, # 'о' + 239: 15, # 'п' + 240: 9, # 'р' + 241: 7, # 'с' + 242: 6, # 'т' + 243: 14, # 'у' + 244: 39, # 'ф' + 245: 26, # 'х' + 246: 28, # 'ц' + 247: 22, # 'ч' + 248: 25, # 'ш' + 249: 29, # 'щ' + 250: 54, # 'ъ' + 251: 18, # 'ы' + 252: 17, # 'ь' + 253: 30, # 'э' + 254: 27, # 'ю' + 255: 255, # '€' +} + +MACCYRILLIC_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='MacCyrillic', + language='Russian', + char_to_order_map=MACCYRILLIC_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + +ISO_8859_5_RUSSIAN_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 142, # 'A' + 66: 143, # 'B' + 67: 144, # 'C' + 68: 145, # 'D' + 69: 146, # 'E' + 70: 147, # 'F' + 71: 148, # 'G' + 72: 149, # 'H' + 73: 150, # 'I' + 74: 151, # 'J' + 75: 152, # 'K' + 76: 74, # 'L' + 77: 153, # 'M' + 78: 75, # 'N' + 79: 154, # 'O' + 80: 155, # 'P' + 81: 156, # 'Q' + 82: 157, # 'R' + 83: 158, # 'S' + 84: 159, # 'T' + 85: 160, # 'U' + 86: 161, # 'V' + 87: 162, # 'W' + 88: 163, # 'X' + 89: 164, # 'Y' + 90: 165, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 71, # 'a' + 98: 172, # 'b' + 99: 66, # 'c' + 100: 173, # 'd' + 101: 65, # 'e' + 102: 174, # 'f' + 103: 76, # 'g' + 104: 175, # 'h' + 105: 64, # 'i' + 106: 176, # 'j' + 107: 177, # 'k' + 108: 77, # 'l' + 109: 72, # 'm' + 110: 178, # 'n' + 111: 69, # 'o' + 112: 67, # 'p' + 113: 179, # 'q' + 114: 78, # 'r' + 115: 73, # 's' + 116: 180, # 't' + 117: 181, # 'u' + 118: 79, # 'v' + 119: 182, # 'w' + 120: 183, # 'x' + 121: 184, # 'y' + 122: 185, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 191, # '\x80' + 129: 192, # '\x81' + 130: 193, # '\x82' + 131: 194, # '\x83' + 132: 195, # '\x84' + 133: 196, # '\x85' + 134: 197, # '\x86' + 135: 198, # '\x87' + 136: 199, # '\x88' + 137: 200, # '\x89' + 138: 201, # '\x8a' + 139: 202, # '\x8b' + 140: 203, # '\x8c' + 141: 204, # '\x8d' + 142: 205, # '\x8e' + 143: 206, # '\x8f' + 144: 207, # '\x90' + 145: 208, # '\x91' + 146: 209, # '\x92' + 147: 210, # '\x93' + 148: 211, # '\x94' + 149: 212, # '\x95' + 150: 213, # '\x96' + 151: 214, # '\x97' + 152: 215, # '\x98' + 153: 216, # '\x99' + 154: 217, # '\x9a' + 155: 218, # '\x9b' + 156: 219, # '\x9c' + 157: 220, # '\x9d' + 158: 221, # '\x9e' + 159: 222, # '\x9f' + 160: 223, # '\xa0' + 161: 224, # 'Ё' + 162: 225, # 'Ђ' + 163: 226, # 'Ѓ' + 164: 227, # 'Є' + 165: 228, # 'Ѕ' + 166: 229, # 'І' + 167: 230, # 'Ї' + 168: 231, # 'Ј' + 169: 232, # 'Љ' + 170: 233, # 'Њ' + 171: 234, # 'Ћ' + 172: 235, # 'Ќ' + 173: 236, # '\xad' + 174: 237, # 'Ў' + 175: 238, # 'Џ' + 176: 37, # 'А' + 177: 44, # 'Б' + 178: 33, # 'В' + 179: 46, # 'Г' + 180: 41, # 'Д' + 181: 48, # 'Е' + 182: 56, # 'Ж' + 183: 51, # 'З' + 184: 42, # 'И' + 185: 60, # 'Й' + 186: 36, # 'К' + 187: 49, # 'Л' + 188: 38, # 'М' + 189: 31, # 'Н' + 190: 34, # 'О' + 191: 35, # 'П' + 192: 45, # 'Р' + 193: 32, # 'С' + 194: 40, # 'Т' + 195: 52, # 'У' + 196: 53, # 'Ф' + 197: 55, # 'Х' + 198: 58, # 'Ц' + 199: 50, # 'Ч' + 200: 57, # 'Ш' + 201: 63, # 'Щ' + 202: 70, # 'Ъ' + 203: 62, # 'Ы' + 204: 61, # 'Ь' + 205: 47, # 'Э' + 206: 59, # 'Ю' + 207: 43, # 'Я' + 208: 3, # 'а' + 209: 21, # 'б' + 210: 10, # 'в' + 211: 19, # 'г' + 212: 13, # 'д' + 213: 2, # 'е' + 214: 24, # 'ж' + 215: 20, # 'з' + 216: 4, # 'и' + 217: 23, # 'й' + 218: 11, # 'к' + 219: 8, # 'л' + 220: 12, # 'м' + 221: 5, # 'н' + 222: 1, # 'о' + 223: 15, # 'п' + 224: 9, # 'р' + 225: 7, # 'с' + 226: 6, # 'т' + 227: 14, # 'у' + 228: 39, # 'ф' + 229: 26, # 'х' + 230: 28, # 'ц' + 231: 22, # 'ч' + 232: 25, # 'ш' + 233: 29, # 'щ' + 234: 54, # 'ъ' + 235: 18, # 'ы' + 236: 17, # 'ь' + 237: 30, # 'э' + 238: 27, # 'ю' + 239: 16, # 'я' + 240: 239, # '№' + 241: 68, # 'ё' + 242: 240, # 'ђ' + 243: 241, # 'ѓ' + 244: 242, # 'є' + 245: 243, # 'ѕ' + 246: 244, # 'і' + 247: 245, # 'ї' + 248: 246, # 'ј' + 249: 247, # 'љ' + 250: 248, # 'њ' + 251: 249, # 'ћ' + 252: 250, # 'ќ' + 253: 251, # '§' + 254: 252, # 'ў' + 255: 255, # 'џ' +} + +ISO_8859_5_RUSSIAN_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-5', + language='Russian', + char_to_order_map=ISO_8859_5_RUSSIAN_CHAR_TO_ORDER, + language_model=RUSSIAN_LANG_MODEL, + typical_positive_ratio=0.976601, + keep_ascii_letters=False, + alphabet='ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py new file mode 100644 index 00000000..9a37db57 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py @@ -0,0 +1,4383 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +THAI_LANG_MODEL = { + 5: { # 'ก' + 5: 2, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 3, # 'ฎ' + 57: 2, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 2, # 'ณ' + 20: 2, # 'ด' + 19: 3, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 1, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 1, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 2, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 3, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 2, # 'ื' + 32: 2, # 'ุ' + 35: 1, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 3, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 30: { # 'ข' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 2, # 'ณ' + 20: 0, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 2, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 2, # 'ี' + 40: 3, # 'ึ' + 27: 1, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 2, # '่' + 7: 3, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 24: { # 'ค' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 2, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 0, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 2, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 3, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 8: { # 'ง' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 2, # 'ง' + 26: 2, # 'จ' + 52: 1, # 'ฉ' + 34: 2, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 2, # 'ศ' + 46: 1, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 1, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 1, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 3, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 26: { # 'จ' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 0, # 'ค' + 8: 2, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 3, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 2, # 'ิ' + 13: 1, # 'ี' + 40: 3, # 'ึ' + 27: 1, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 52: { # 'ฉ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 3, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 3, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 1, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 1, # 'ั' + 1: 1, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 34: { # 'ช' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 1, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 1, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 1, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 51: { # 'ซ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 1, # 'ั' + 1: 1, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 2, # 'ี' + 40: 3, # 'ึ' + 27: 2, # 'ื' + 32: 1, # 'ุ' + 35: 1, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 1, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 47: { # 'ญ' + 5: 1, # 'ก' + 30: 1, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 3, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 2, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 58: { # 'ฎ' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 1, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 57: { # 'ฏ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 49: { # 'ฐ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 53: { # 'ฑ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 55: { # 'ฒ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 43: { # 'ณ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 3, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 3, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 3, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 20: { # 'ด' + 5: 2, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 3, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 2, # 'า' + 36: 2, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 1, # 'ึ' + 27: 2, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 2, # 'ๆ' + 37: 2, # '็' + 6: 1, # '่' + 7: 3, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 19: { # 'ต' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 2, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 2, # 'ภ' + 9: 1, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 0, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 1, # 'ึ' + 27: 1, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 2, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 44: { # 'ถ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 1, # 'ี' + 40: 3, # 'ึ' + 27: 2, # 'ื' + 32: 2, # 'ุ' + 35: 3, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 14: { # 'ท' + 5: 1, # 'ก' + 30: 1, # 'ข' + 24: 3, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 3, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 1, # 'ฤ' + 15: 1, # 'ล' + 12: 2, # 'ว' + 42: 3, # 'ศ' + 46: 1, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 1, # 'ื' + 32: 3, # 'ุ' + 35: 1, # 'ู' + 11: 0, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 48: { # 'ธ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 2, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 2, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 3: { # 'น' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 1, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 2, # 'ถ' + 14: 3, # 'ท' + 48: 3, # 'ธ' + 3: 2, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 1, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 3, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 3, # 'โ' + 29: 3, # 'ใ' + 33: 3, # 'ไ' + 50: 2, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 17: { # 'บ' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 1, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 2, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 2, # 'ื' + 32: 3, # 'ุ' + 35: 2, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 2, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 25: { # 'ป' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 1, # 'ฎ' + 57: 3, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 1, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 1, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 3, # 'ั' + 1: 1, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 2, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 3, # '็' + 6: 1, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 39: { # 'ผ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 1, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 1, # 'ื' + 32: 0, # 'ุ' + 35: 3, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 1, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 62: { # 'ฝ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 1, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 1, # 'ี' + 40: 2, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 2, # '่' + 7: 1, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 31: { # 'พ' + 5: 1, # 'ก' + 30: 1, # 'ข' + 24: 1, # 'ค' + 8: 1, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 2, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 1, # 'ึ' + 27: 3, # 'ื' + 32: 1, # 'ุ' + 35: 2, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 1, # '็' + 6: 0, # '่' + 7: 1, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 54: { # 'ฟ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 2, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 1, # 'ื' + 32: 1, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 45: { # 'ภ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 2, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 9: { # 'ม' + 5: 2, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 3, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 2, # 'ร' + 61: 2, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 1, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 2, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 16: { # 'ย' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 2, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 3, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 1, # 'ึ' + 27: 2, # 'ื' + 32: 2, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 2, # 'ๆ' + 37: 1, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 2: { # 'ร' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 2, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 3, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 3, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 3, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 2, # 'น' + 17: 2, # 'บ' + 25: 3, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 2, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 2, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 1, # 'ฯ' + 22: 3, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 3, # 'ู' + 11: 3, # 'เ' + 28: 3, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 3, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 3, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 61: { # 'ฤ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 2, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 15: { # 'ล' + 5: 2, # 'ก' + 30: 3, # 'ข' + 24: 1, # 'ค' + 8: 3, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 3, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 3, # 'อ' + 63: 2, # 'ฯ' + 22: 3, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 3, # 'ื' + 32: 2, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 2, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 12: { # 'ว' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 1, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 3, # 'ิ' + 13: 2, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 2, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 42: { # 'ศ' + 5: 1, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 1, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 2, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 2, # 'ิ' + 13: 0, # 'ี' + 40: 3, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 2, # 'ู' + 11: 0, # 'เ' + 28: 1, # 'แ' + 41: 0, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 46: { # 'ษ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 2, # 'ฎ' + 57: 1, # 'ฏ' + 49: 2, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 3, # 'ณ' + 20: 0, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 2, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 18: { # 'ส' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 2, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 3, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 2, # 'ภ' + 9: 3, # 'ม' + 16: 1, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 3, # 'ำ' + 23: 3, # 'ิ' + 13: 3, # 'ี' + 40: 2, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 3, # 'ู' + 11: 2, # 'เ' + 28: 0, # 'แ' + 41: 1, # 'โ' + 29: 0, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 1, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 21: { # 'ห' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 1, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 3, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 0, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 0, # 'ำ' + 23: 1, # 'ิ' + 13: 1, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 1, # 'ุ' + 35: 1, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 3, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 4: { # 'อ' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 2, # 'ะ' + 10: 3, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 2, # 'ิ' + 13: 3, # 'ี' + 40: 0, # 'ึ' + 27: 3, # 'ื' + 32: 3, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 1, # '็' + 6: 2, # '่' + 7: 2, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 63: { # 'ฯ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 22: { # 'ะ' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 1, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 2, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 1, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 10: { # 'ั' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 3, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 3, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 2, # 'ฐ' + 53: 0, # 'ฑ' + 55: 3, # 'ฒ' + 43: 3, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 1: { # 'า' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 3, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 1, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 3, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 2, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 1, # 'ฝ' + 31: 3, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 3, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 3, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 36: { # 'ำ' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 3, # 'ค' + 8: 2, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 3, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 23: { # 'ิ' + 5: 3, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 3, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 3, # 'พ' + 54: 1, # 'ฟ' + 45: 2, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 3, # 'ศ' + 46: 2, # 'ษ' + 18: 2, # 'ส' + 21: 3, # 'ห' + 4: 1, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 2, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 13: { # 'ี' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 1, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 3, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 2, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 40: { # 'ึ' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 3, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 1, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 27: { # 'ื' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 3, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 32: { # 'ุ' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 3, # 'ค' + 8: 3, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 1, # 'ฒ' + 43: 3, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 2, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 1, # 'ภ' + 9: 3, # 'ม' + 16: 1, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 1, # 'ว' + 42: 1, # 'ศ' + 46: 2, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 1, # 'โ' + 29: 0, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 2, # '้' + 38: 1, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 35: { # 'ู' + 5: 3, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 2, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 2, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 2, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 2, # 'น' + 17: 0, # 'บ' + 25: 3, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 1, # 'แ' + 41: 1, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 3, # '่' + 7: 3, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 11: { # 'เ' + 5: 3, # 'ก' + 30: 3, # 'ข' + 24: 3, # 'ค' + 8: 2, # 'ง' + 26: 3, # 'จ' + 52: 3, # 'ฉ' + 34: 3, # 'ช' + 51: 2, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 1, # 'ณ' + 20: 3, # 'ด' + 19: 3, # 'ต' + 44: 1, # 'ถ' + 14: 3, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 3, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 3, # 'พ' + 54: 1, # 'ฟ' + 45: 3, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 3, # 'ว' + 42: 2, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 28: { # 'แ' + 5: 3, # 'ก' + 30: 2, # 'ข' + 24: 2, # 'ค' + 8: 1, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 3, # 'ต' + 44: 2, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 2, # 'ป' + 39: 3, # 'ผ' + 62: 0, # 'ฝ' + 31: 2, # 'พ' + 54: 2, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 41: { # 'โ' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 1, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 3, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 1, # 'ภ' + 9: 1, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 3, # 'ล' + 12: 0, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 0, # 'ห' + 4: 2, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 29: { # 'ใ' + 5: 2, # 'ก' + 30: 0, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 3, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 1, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 3, # 'ส' + 21: 3, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 33: { # 'ไ' + 5: 1, # 'ก' + 30: 2, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 3, # 'ด' + 19: 1, # 'ต' + 44: 0, # 'ถ' + 14: 3, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 1, # 'บ' + 25: 3, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 2, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 0, # 'ย' + 2: 3, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 2, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 50: { # 'ๆ' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 37: { # '็' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 2, # 'ง' + 26: 3, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 1, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 0, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 3, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 1, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 2, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 0, # 'ห' + 4: 1, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 1, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 6: { # '่' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 1, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 1, # 'ธ' + 3: 3, # 'น' + 17: 1, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 1, # 'ฝ' + 31: 1, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 3, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 2, # 'ล' + 12: 3, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 1, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 1, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 3, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 1, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 7: { # '้' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 2, # 'ค' + 8: 3, # 'ง' + 26: 2, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 1, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 1, # 'ด' + 19: 2, # 'ต' + 44: 1, # 'ถ' + 14: 2, # 'ท' + 48: 0, # 'ธ' + 3: 3, # 'น' + 17: 2, # 'บ' + 25: 2, # 'ป' + 39: 2, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 0, # 'ภ' + 9: 3, # 'ม' + 16: 2, # 'ย' + 2: 2, # 'ร' + 61: 0, # 'ฤ' + 15: 1, # 'ล' + 12: 3, # 'ว' + 42: 1, # 'ศ' + 46: 0, # 'ษ' + 18: 2, # 'ส' + 21: 2, # 'ห' + 4: 3, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 3, # 'า' + 36: 2, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 2, # 'ใ' + 33: 2, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 38: { # '์' + 5: 2, # 'ก' + 30: 1, # 'ข' + 24: 1, # 'ค' + 8: 0, # 'ง' + 26: 1, # 'จ' + 52: 0, # 'ฉ' + 34: 1, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 2, # 'ด' + 19: 1, # 'ต' + 44: 1, # 'ถ' + 14: 1, # 'ท' + 48: 0, # 'ธ' + 3: 1, # 'น' + 17: 1, # 'บ' + 25: 1, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 1, # 'พ' + 54: 1, # 'ฟ' + 45: 0, # 'ภ' + 9: 2, # 'ม' + 16: 0, # 'ย' + 2: 1, # 'ร' + 61: 1, # 'ฤ' + 15: 1, # 'ล' + 12: 1, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 1, # 'ส' + 21: 1, # 'ห' + 4: 2, # 'อ' + 63: 1, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 2, # 'เ' + 28: 2, # 'แ' + 41: 1, # 'โ' + 29: 1, # 'ใ' + 33: 1, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 0, # '๑' + 59: 0, # '๒' + 60: 0, # '๕' + }, + 56: { # '๑' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 2, # '๑' + 59: 1, # '๒' + 60: 1, # '๕' + }, + 59: { # '๒' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 1, # '๑' + 59: 1, # '๒' + 60: 3, # '๕' + }, + 60: { # '๕' + 5: 0, # 'ก' + 30: 0, # 'ข' + 24: 0, # 'ค' + 8: 0, # 'ง' + 26: 0, # 'จ' + 52: 0, # 'ฉ' + 34: 0, # 'ช' + 51: 0, # 'ซ' + 47: 0, # 'ญ' + 58: 0, # 'ฎ' + 57: 0, # 'ฏ' + 49: 0, # 'ฐ' + 53: 0, # 'ฑ' + 55: 0, # 'ฒ' + 43: 0, # 'ณ' + 20: 0, # 'ด' + 19: 0, # 'ต' + 44: 0, # 'ถ' + 14: 0, # 'ท' + 48: 0, # 'ธ' + 3: 0, # 'น' + 17: 0, # 'บ' + 25: 0, # 'ป' + 39: 0, # 'ผ' + 62: 0, # 'ฝ' + 31: 0, # 'พ' + 54: 0, # 'ฟ' + 45: 0, # 'ภ' + 9: 0, # 'ม' + 16: 0, # 'ย' + 2: 0, # 'ร' + 61: 0, # 'ฤ' + 15: 0, # 'ล' + 12: 0, # 'ว' + 42: 0, # 'ศ' + 46: 0, # 'ษ' + 18: 0, # 'ส' + 21: 0, # 'ห' + 4: 0, # 'อ' + 63: 0, # 'ฯ' + 22: 0, # 'ะ' + 10: 0, # 'ั' + 1: 0, # 'า' + 36: 0, # 'ำ' + 23: 0, # 'ิ' + 13: 0, # 'ี' + 40: 0, # 'ึ' + 27: 0, # 'ื' + 32: 0, # 'ุ' + 35: 0, # 'ู' + 11: 0, # 'เ' + 28: 0, # 'แ' + 41: 0, # 'โ' + 29: 0, # 'ใ' + 33: 0, # 'ไ' + 50: 0, # 'ๆ' + 37: 0, # '็' + 6: 0, # '่' + 7: 0, # '้' + 38: 0, # '์' + 56: 2, # '๑' + 59: 1, # '๒' + 60: 0, # '๕' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +TIS_620_THAI_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 254, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 254, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 253, # ' ' + 33: 253, # '!' + 34: 253, # '"' + 35: 253, # '#' + 36: 253, # '$' + 37: 253, # '%' + 38: 253, # '&' + 39: 253, # "'" + 40: 253, # '(' + 41: 253, # ')' + 42: 253, # '*' + 43: 253, # '+' + 44: 253, # ',' + 45: 253, # '-' + 46: 253, # '.' + 47: 253, # '/' + 48: 252, # '0' + 49: 252, # '1' + 50: 252, # '2' + 51: 252, # '3' + 52: 252, # '4' + 53: 252, # '5' + 54: 252, # '6' + 55: 252, # '7' + 56: 252, # '8' + 57: 252, # '9' + 58: 253, # ':' + 59: 253, # ';' + 60: 253, # '<' + 61: 253, # '=' + 62: 253, # '>' + 63: 253, # '?' + 64: 253, # '@' + 65: 182, # 'A' + 66: 106, # 'B' + 67: 107, # 'C' + 68: 100, # 'D' + 69: 183, # 'E' + 70: 184, # 'F' + 71: 185, # 'G' + 72: 101, # 'H' + 73: 94, # 'I' + 74: 186, # 'J' + 75: 187, # 'K' + 76: 108, # 'L' + 77: 109, # 'M' + 78: 110, # 'N' + 79: 111, # 'O' + 80: 188, # 'P' + 81: 189, # 'Q' + 82: 190, # 'R' + 83: 89, # 'S' + 84: 95, # 'T' + 85: 112, # 'U' + 86: 113, # 'V' + 87: 191, # 'W' + 88: 192, # 'X' + 89: 193, # 'Y' + 90: 194, # 'Z' + 91: 253, # '[' + 92: 253, # '\\' + 93: 253, # ']' + 94: 253, # '^' + 95: 253, # '_' + 96: 253, # '`' + 97: 64, # 'a' + 98: 72, # 'b' + 99: 73, # 'c' + 100: 114, # 'd' + 101: 74, # 'e' + 102: 115, # 'f' + 103: 116, # 'g' + 104: 102, # 'h' + 105: 81, # 'i' + 106: 201, # 'j' + 107: 117, # 'k' + 108: 90, # 'l' + 109: 103, # 'm' + 110: 78, # 'n' + 111: 82, # 'o' + 112: 96, # 'p' + 113: 202, # 'q' + 114: 91, # 'r' + 115: 79, # 's' + 116: 84, # 't' + 117: 104, # 'u' + 118: 105, # 'v' + 119: 97, # 'w' + 120: 98, # 'x' + 121: 92, # 'y' + 122: 203, # 'z' + 123: 253, # '{' + 124: 253, # '|' + 125: 253, # '}' + 126: 253, # '~' + 127: 253, # '\x7f' + 128: 209, # '\x80' + 129: 210, # '\x81' + 130: 211, # '\x82' + 131: 212, # '\x83' + 132: 213, # '\x84' + 133: 88, # '\x85' + 134: 214, # '\x86' + 135: 215, # '\x87' + 136: 216, # '\x88' + 137: 217, # '\x89' + 138: 218, # '\x8a' + 139: 219, # '\x8b' + 140: 220, # '\x8c' + 141: 118, # '\x8d' + 142: 221, # '\x8e' + 143: 222, # '\x8f' + 144: 223, # '\x90' + 145: 224, # '\x91' + 146: 99, # '\x92' + 147: 85, # '\x93' + 148: 83, # '\x94' + 149: 225, # '\x95' + 150: 226, # '\x96' + 151: 227, # '\x97' + 152: 228, # '\x98' + 153: 229, # '\x99' + 154: 230, # '\x9a' + 155: 231, # '\x9b' + 156: 232, # '\x9c' + 157: 233, # '\x9d' + 158: 234, # '\x9e' + 159: 235, # '\x9f' + 160: 236, # None + 161: 5, # 'ก' + 162: 30, # 'ข' + 163: 237, # 'ฃ' + 164: 24, # 'ค' + 165: 238, # 'ฅ' + 166: 75, # 'ฆ' + 167: 8, # 'ง' + 168: 26, # 'จ' + 169: 52, # 'ฉ' + 170: 34, # 'ช' + 171: 51, # 'ซ' + 172: 119, # 'ฌ' + 173: 47, # 'ญ' + 174: 58, # 'ฎ' + 175: 57, # 'ฏ' + 176: 49, # 'ฐ' + 177: 53, # 'ฑ' + 178: 55, # 'ฒ' + 179: 43, # 'ณ' + 180: 20, # 'ด' + 181: 19, # 'ต' + 182: 44, # 'ถ' + 183: 14, # 'ท' + 184: 48, # 'ธ' + 185: 3, # 'น' + 186: 17, # 'บ' + 187: 25, # 'ป' + 188: 39, # 'ผ' + 189: 62, # 'ฝ' + 190: 31, # 'พ' + 191: 54, # 'ฟ' + 192: 45, # 'ภ' + 193: 9, # 'ม' + 194: 16, # 'ย' + 195: 2, # 'ร' + 196: 61, # 'ฤ' + 197: 15, # 'ล' + 198: 239, # 'ฦ' + 199: 12, # 'ว' + 200: 42, # 'ศ' + 201: 46, # 'ษ' + 202: 18, # 'ส' + 203: 21, # 'ห' + 204: 76, # 'ฬ' + 205: 4, # 'อ' + 206: 66, # 'ฮ' + 207: 63, # 'ฯ' + 208: 22, # 'ะ' + 209: 10, # 'ั' + 210: 1, # 'า' + 211: 36, # 'ำ' + 212: 23, # 'ิ' + 213: 13, # 'ี' + 214: 40, # 'ึ' + 215: 27, # 'ื' + 216: 32, # 'ุ' + 217: 35, # 'ู' + 218: 86, # 'ฺ' + 219: 240, # None + 220: 241, # None + 221: 242, # None + 222: 243, # None + 223: 244, # '฿' + 224: 11, # 'เ' + 225: 28, # 'แ' + 226: 41, # 'โ' + 227: 29, # 'ใ' + 228: 33, # 'ไ' + 229: 245, # 'ๅ' + 230: 50, # 'ๆ' + 231: 37, # '็' + 232: 6, # '่' + 233: 7, # '้' + 234: 67, # '๊' + 235: 77, # '๋' + 236: 38, # '์' + 237: 93, # 'ํ' + 238: 246, # '๎' + 239: 247, # '๏' + 240: 68, # '๐' + 241: 56, # '๑' + 242: 59, # '๒' + 243: 65, # '๓' + 244: 69, # '๔' + 245: 60, # '๕' + 246: 70, # '๖' + 247: 80, # '๗' + 248: 71, # '๘' + 249: 87, # '๙' + 250: 248, # '๚' + 251: 249, # '๛' + 252: 250, # None + 253: 251, # None + 254: 252, # None + 255: 253, # None +} + +TIS_620_THAI_MODEL = SingleByteCharSetModel(charset_name='TIS-620', + language='Thai', + char_to_order_map=TIS_620_THAI_CHAR_TO_ORDER, + language_model=THAI_LANG_MODEL, + typical_positive_ratio=0.926386, + keep_ascii_letters=False, + alphabet='กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py b/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py new file mode 100644 index 00000000..43f4230a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py @@ -0,0 +1,4383 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel + + +# 3: Positive +# 2: Likely +# 1: Unlikely +# 0: Negative + +TURKISH_LANG_MODEL = { + 23: { # 'A' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 1, # 'i' + 24: 0, # 'j' + 10: 2, # 'k' + 5: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 37: { # 'B' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 2, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 47: { # 'C' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 2, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 39: { # 'D' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 0, # 'ş' + }, + 29: { # 'E' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 1, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 52: { # 'F' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 1, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 1, # 'c' + 12: 1, # 'd' + 2: 0, # 'e' + 18: 1, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 2, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 2, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 2, # 'ş' + }, + 36: { # 'G' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 2, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 2, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 1, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 1, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 45: { # 'H' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 2, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 2, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 53: { # 'I' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 60: { # 'J' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 0, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 16: { # 'K' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 1, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 0, # 'u' + 32: 3, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 49: { # 'L' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 2, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 2, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 2, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 1, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 20: { # 'M' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 0, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 46: { # 'N' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 42: { # 'O' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 2, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 2, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 48: { # 'P' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 2, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 44: { # 'R' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 1, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 1, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, + 35: { # 'S' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 1, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 2, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 2, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 31: { # 'T' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 2, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 2, # 'r' + 8: 0, # 's' + 9: 2, # 't' + 14: 2, # 'u' + 32: 1, # 'v' + 57: 1, # 'w' + 58: 1, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 51: { # 'U' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 1, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 38: { # 'V' + 23: 1, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 2, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 1, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 62: { # 'W' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 43: { # 'Y' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 2, # 'N' + 42: 0, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 1, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 1, # 'Ü' + 59: 1, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 56: { # 'Z' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 2, # 'Z' + 1: 2, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 1, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 1: { # 'a' + 23: 3, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 2, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 1, # 'î' + 34: 1, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 21: { # 'b' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 3, # 'g' + 25: 1, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 1, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 2, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 28: { # 'c' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 2, # 'E' + 52: 0, # 'F' + 36: 2, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 2, # 'T' + 51: 2, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 3, # 'Y' + 56: 0, # 'Z' + 1: 1, # 'a' + 21: 1, # 'b' + 28: 2, # 'c' + 12: 2, # 'd' + 2: 1, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 1, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 1, # 'î' + 34: 2, # 'ö' + 17: 2, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 2, # 'ş' + }, + 12: { # 'd' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 2: { # 'e' + 23: 2, # 'A' + 37: 0, # 'B' + 47: 2, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 18: { # 'f' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 1, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 1, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 27: { # 'g' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 2, # 'r' + 8: 2, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 25: { # 'h' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 3: { # 'i' + 23: 2, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 1, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 3, # 'g' + 25: 1, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 1, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 1, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 1, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 24: { # 'j' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 2, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 2, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 10: { # 'k' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 2, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 3, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 5: { # 'l' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 1, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 1, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 2, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 13: { # 'm' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 2, # 'u' + 32: 2, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 4: { # 'n' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 3, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 3, # 'p' + 7: 2, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 15: { # 'o' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 2, # 'L' + 20: 0, # 'M' + 46: 2, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 2, # 'ğ' + 41: 2, # 'İ' + 6: 3, # 'ı' + 40: 2, # 'Ş' + 19: 2, # 'ş' + }, + 26: { # 'p' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 2, # 'r' + 8: 1, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 1, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 7: { # 'r' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 1, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 1, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 3, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 8: { # 's' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 2, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 9: { # 't' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 2, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 0, # 'w' + 58: 2, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 14: { # 'u' + 23: 3, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 2, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 3, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 2, # 'Z' + 1: 2, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 2, # 'e' + 18: 2, # 'f' + 27: 3, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 2, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 32: { # 'v' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 1, # 'k' + 5: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 1, # 'r' + 8: 2, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 57: { # 'w' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 1, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 1, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 1, # 's' + 9: 0, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 2, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 58: { # 'x' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 1, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 2, # 's' + 9: 1, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 11: { # 'y' + 23: 1, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 2, # 'r' + 8: 1, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 3, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 22: { # 'z' + 23: 2, # 'A' + 37: 2, # 'B' + 47: 1, # 'C' + 39: 2, # 'D' + 29: 3, # 'E' + 52: 1, # 'F' + 36: 2, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 2, # 'N' + 42: 2, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 3, # 'T' + 51: 2, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 1, # 'Z' + 1: 1, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 2, # 'd' + 2: 2, # 'e' + 18: 3, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 0, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 3, # 'y' + 22: 2, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 2, # 'Ü' + 59: 1, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 2, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 3, # 'ı' + 40: 1, # 'Ş' + 19: 2, # 'ş' + }, + 63: { # '·' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 1, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 54: { # 'Ç' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 1, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 0, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 3, # 'i' + 24: 0, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 2, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 2, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 0, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 2, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 50: { # 'Ö' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 2, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 2, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 1, # 'N' + 42: 2, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 1, # 'f' + 27: 1, # 'g' + 25: 1, # 'h' + 3: 2, # 'i' + 24: 0, # 'j' + 10: 2, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 2, # 'p' + 7: 3, # 'r' + 8: 1, # 's' + 9: 2, # 't' + 14: 0, # 'u' + 32: 1, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 2, # 'ü' + 30: 1, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 55: { # 'Ü' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 1, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 1, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 1, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 1, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 1, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 0, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 59: { # 'â' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 0, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 2, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 2, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 0, # 'ş' + }, + 33: { # 'ç' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 3, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 0, # 'Z' + 1: 0, # 'a' + 21: 3, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 2, # 'f' + 27: 1, # 'g' + 25: 3, # 'h' + 3: 3, # 'i' + 24: 0, # 'j' + 10: 3, # 'k' + 5: 0, # 'l' + 13: 0, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 2, # 's' + 9: 3, # 't' + 14: 0, # 'u' + 32: 2, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 1, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 61: { # 'î' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 0, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 0, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 2, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 1, # 'j' + 10: 0, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 1, # 'n' + 15: 0, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 1, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 1, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 1, # 'î' + 34: 0, # 'ö' + 17: 0, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 1, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 34: { # 'ö' + 23: 0, # 'A' + 37: 1, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 1, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 1, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 2, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 2, # 'h' + 3: 1, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 2, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 0, # 'r' + 8: 3, # 's' + 9: 1, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 1, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 2, # 'ğ' + 41: 1, # 'İ' + 6: 1, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 17: { # 'ü' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 0, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 1, # 'J' + 16: 1, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 0, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 0, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 0, # 'c' + 12: 1, # 'd' + 2: 3, # 'e' + 18: 1, # 'f' + 27: 2, # 'g' + 25: 0, # 'h' + 3: 1, # 'i' + 24: 1, # 'j' + 10: 2, # 'k' + 5: 3, # 'l' + 13: 2, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 2, # 'p' + 7: 2, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 3, # 'u' + 32: 1, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 2, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 30: { # 'ğ' + 23: 0, # 'A' + 37: 2, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 1, # 'M' + 46: 2, # 'N' + 42: 2, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 0, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 2, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 0, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 2, # 'e' + 18: 0, # 'f' + 27: 0, # 'g' + 25: 0, # 'h' + 3: 0, # 'i' + 24: 3, # 'j' + 10: 1, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 1, # 'o' + 26: 0, # 'p' + 7: 1, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 2, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 2, # 'İ' + 6: 2, # 'ı' + 40: 2, # 'Ş' + 19: 1, # 'ş' + }, + 41: { # 'İ' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 2, # 'G' + 45: 2, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 0, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 0, # 'Z' + 1: 1, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 2, # 'd' + 2: 1, # 'e' + 18: 0, # 'f' + 27: 3, # 'g' + 25: 2, # 'h' + 3: 2, # 'i' + 24: 2, # 'j' + 10: 2, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 15: 1, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 2, # 't' + 14: 0, # 'u' + 32: 0, # 'v' + 57: 1, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 1, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 1, # 'ö' + 17: 1, # 'ü' + 30: 2, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 1, # 'ş' + }, + 6: { # 'ı' + 23: 2, # 'A' + 37: 0, # 'B' + 47: 0, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 2, # 'J' + 16: 3, # 'K' + 49: 0, # 'L' + 20: 3, # 'M' + 46: 1, # 'N' + 42: 0, # 'O' + 48: 0, # 'P' + 44: 0, # 'R' + 35: 0, # 'S' + 31: 2, # 'T' + 51: 0, # 'U' + 38: 0, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 1, # 'Z' + 1: 3, # 'a' + 21: 2, # 'b' + 28: 1, # 'c' + 12: 3, # 'd' + 2: 3, # 'e' + 18: 3, # 'f' + 27: 3, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 3, # 'j' + 10: 3, # 'k' + 5: 3, # 'l' + 13: 3, # 'm' + 4: 3, # 'n' + 15: 0, # 'o' + 26: 3, # 'p' + 7: 3, # 'r' + 8: 3, # 's' + 9: 3, # 't' + 14: 3, # 'u' + 32: 3, # 'v' + 57: 1, # 'w' + 58: 1, # 'x' + 11: 3, # 'y' + 22: 0, # 'z' + 63: 1, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 2, # 'ç' + 61: 0, # 'î' + 34: 0, # 'ö' + 17: 3, # 'ü' + 30: 0, # 'ğ' + 41: 0, # 'İ' + 6: 3, # 'ı' + 40: 0, # 'Ş' + 19: 0, # 'ş' + }, + 40: { # 'Ş' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 1, # 'D' + 29: 1, # 'E' + 52: 0, # 'F' + 36: 1, # 'G' + 45: 2, # 'H' + 53: 1, # 'I' + 60: 0, # 'J' + 16: 0, # 'K' + 49: 0, # 'L' + 20: 2, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 2, # 'P' + 44: 2, # 'R' + 35: 1, # 'S' + 31: 1, # 'T' + 51: 0, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 2, # 'Y' + 56: 1, # 'Z' + 1: 0, # 'a' + 21: 2, # 'b' + 28: 0, # 'c' + 12: 2, # 'd' + 2: 0, # 'e' + 18: 3, # 'f' + 27: 0, # 'g' + 25: 2, # 'h' + 3: 3, # 'i' + 24: 2, # 'j' + 10: 1, # 'k' + 5: 0, # 'l' + 13: 1, # 'm' + 4: 3, # 'n' + 15: 2, # 'o' + 26: 0, # 'p' + 7: 3, # 'r' + 8: 2, # 's' + 9: 2, # 't' + 14: 1, # 'u' + 32: 3, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 2, # 'y' + 22: 0, # 'z' + 63: 0, # '·' + 54: 0, # 'Ç' + 50: 0, # 'Ö' + 55: 1, # 'Ü' + 59: 0, # 'â' + 33: 0, # 'ç' + 61: 0, # 'î' + 34: 2, # 'ö' + 17: 1, # 'ü' + 30: 2, # 'ğ' + 41: 0, # 'İ' + 6: 2, # 'ı' + 40: 1, # 'Ş' + 19: 2, # 'ş' + }, + 19: { # 'ş' + 23: 0, # 'A' + 37: 0, # 'B' + 47: 1, # 'C' + 39: 0, # 'D' + 29: 0, # 'E' + 52: 2, # 'F' + 36: 1, # 'G' + 45: 0, # 'H' + 53: 0, # 'I' + 60: 0, # 'J' + 16: 3, # 'K' + 49: 2, # 'L' + 20: 0, # 'M' + 46: 1, # 'N' + 42: 1, # 'O' + 48: 1, # 'P' + 44: 1, # 'R' + 35: 1, # 'S' + 31: 0, # 'T' + 51: 1, # 'U' + 38: 1, # 'V' + 62: 0, # 'W' + 43: 1, # 'Y' + 56: 0, # 'Z' + 1: 3, # 'a' + 21: 1, # 'b' + 28: 2, # 'c' + 12: 0, # 'd' + 2: 3, # 'e' + 18: 0, # 'f' + 27: 2, # 'g' + 25: 1, # 'h' + 3: 1, # 'i' + 24: 0, # 'j' + 10: 2, # 'k' + 5: 2, # 'l' + 13: 3, # 'm' + 4: 0, # 'n' + 15: 0, # 'o' + 26: 1, # 'p' + 7: 3, # 'r' + 8: 0, # 's' + 9: 0, # 't' + 14: 3, # 'u' + 32: 0, # 'v' + 57: 0, # 'w' + 58: 0, # 'x' + 11: 0, # 'y' + 22: 2, # 'z' + 63: 0, # '·' + 54: 1, # 'Ç' + 50: 2, # 'Ö' + 55: 0, # 'Ü' + 59: 0, # 'â' + 33: 1, # 'ç' + 61: 1, # 'î' + 34: 2, # 'ö' + 17: 0, # 'ü' + 30: 1, # 'ğ' + 41: 1, # 'İ' + 6: 1, # 'ı' + 40: 1, # 'Ş' + 19: 1, # 'ş' + }, +} + +# 255: Undefined characters that did not exist in training text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 +# 251: Control characters + +# Character Mapping Table(s): +ISO_8859_9_TURKISH_CHAR_TO_ORDER = { + 0: 255, # '\x00' + 1: 255, # '\x01' + 2: 255, # '\x02' + 3: 255, # '\x03' + 4: 255, # '\x04' + 5: 255, # '\x05' + 6: 255, # '\x06' + 7: 255, # '\x07' + 8: 255, # '\x08' + 9: 255, # '\t' + 10: 255, # '\n' + 11: 255, # '\x0b' + 12: 255, # '\x0c' + 13: 255, # '\r' + 14: 255, # '\x0e' + 15: 255, # '\x0f' + 16: 255, # '\x10' + 17: 255, # '\x11' + 18: 255, # '\x12' + 19: 255, # '\x13' + 20: 255, # '\x14' + 21: 255, # '\x15' + 22: 255, # '\x16' + 23: 255, # '\x17' + 24: 255, # '\x18' + 25: 255, # '\x19' + 26: 255, # '\x1a' + 27: 255, # '\x1b' + 28: 255, # '\x1c' + 29: 255, # '\x1d' + 30: 255, # '\x1e' + 31: 255, # '\x1f' + 32: 255, # ' ' + 33: 255, # '!' + 34: 255, # '"' + 35: 255, # '#' + 36: 255, # '$' + 37: 255, # '%' + 38: 255, # '&' + 39: 255, # "'" + 40: 255, # '(' + 41: 255, # ')' + 42: 255, # '*' + 43: 255, # '+' + 44: 255, # ',' + 45: 255, # '-' + 46: 255, # '.' + 47: 255, # '/' + 48: 255, # '0' + 49: 255, # '1' + 50: 255, # '2' + 51: 255, # '3' + 52: 255, # '4' + 53: 255, # '5' + 54: 255, # '6' + 55: 255, # '7' + 56: 255, # '8' + 57: 255, # '9' + 58: 255, # ':' + 59: 255, # ';' + 60: 255, # '<' + 61: 255, # '=' + 62: 255, # '>' + 63: 255, # '?' + 64: 255, # '@' + 65: 23, # 'A' + 66: 37, # 'B' + 67: 47, # 'C' + 68: 39, # 'D' + 69: 29, # 'E' + 70: 52, # 'F' + 71: 36, # 'G' + 72: 45, # 'H' + 73: 53, # 'I' + 74: 60, # 'J' + 75: 16, # 'K' + 76: 49, # 'L' + 77: 20, # 'M' + 78: 46, # 'N' + 79: 42, # 'O' + 80: 48, # 'P' + 81: 69, # 'Q' + 82: 44, # 'R' + 83: 35, # 'S' + 84: 31, # 'T' + 85: 51, # 'U' + 86: 38, # 'V' + 87: 62, # 'W' + 88: 65, # 'X' + 89: 43, # 'Y' + 90: 56, # 'Z' + 91: 255, # '[' + 92: 255, # '\\' + 93: 255, # ']' + 94: 255, # '^' + 95: 255, # '_' + 96: 255, # '`' + 97: 1, # 'a' + 98: 21, # 'b' + 99: 28, # 'c' + 100: 12, # 'd' + 101: 2, # 'e' + 102: 18, # 'f' + 103: 27, # 'g' + 104: 25, # 'h' + 105: 3, # 'i' + 106: 24, # 'j' + 107: 10, # 'k' + 108: 5, # 'l' + 109: 13, # 'm' + 110: 4, # 'n' + 111: 15, # 'o' + 112: 26, # 'p' + 113: 64, # 'q' + 114: 7, # 'r' + 115: 8, # 's' + 116: 9, # 't' + 117: 14, # 'u' + 118: 32, # 'v' + 119: 57, # 'w' + 120: 58, # 'x' + 121: 11, # 'y' + 122: 22, # 'z' + 123: 255, # '{' + 124: 255, # '|' + 125: 255, # '}' + 126: 255, # '~' + 127: 255, # '\x7f' + 128: 180, # '\x80' + 129: 179, # '\x81' + 130: 178, # '\x82' + 131: 177, # '\x83' + 132: 176, # '\x84' + 133: 175, # '\x85' + 134: 174, # '\x86' + 135: 173, # '\x87' + 136: 172, # '\x88' + 137: 171, # '\x89' + 138: 170, # '\x8a' + 139: 169, # '\x8b' + 140: 168, # '\x8c' + 141: 167, # '\x8d' + 142: 166, # '\x8e' + 143: 165, # '\x8f' + 144: 164, # '\x90' + 145: 163, # '\x91' + 146: 162, # '\x92' + 147: 161, # '\x93' + 148: 160, # '\x94' + 149: 159, # '\x95' + 150: 101, # '\x96' + 151: 158, # '\x97' + 152: 157, # '\x98' + 153: 156, # '\x99' + 154: 155, # '\x9a' + 155: 154, # '\x9b' + 156: 153, # '\x9c' + 157: 152, # '\x9d' + 158: 151, # '\x9e' + 159: 106, # '\x9f' + 160: 150, # '\xa0' + 161: 149, # '¡' + 162: 148, # '¢' + 163: 147, # '£' + 164: 146, # '¤' + 165: 145, # '¥' + 166: 144, # '¦' + 167: 100, # '§' + 168: 143, # '¨' + 169: 142, # '©' + 170: 141, # 'ª' + 171: 140, # '«' + 172: 139, # '¬' + 173: 138, # '\xad' + 174: 137, # '®' + 175: 136, # '¯' + 176: 94, # '°' + 177: 80, # '±' + 178: 93, # '²' + 179: 135, # '³' + 180: 105, # '´' + 181: 134, # 'µ' + 182: 133, # '¶' + 183: 63, # '·' + 184: 132, # '¸' + 185: 131, # '¹' + 186: 130, # 'º' + 187: 129, # '»' + 188: 128, # '¼' + 189: 127, # '½' + 190: 126, # '¾' + 191: 125, # '¿' + 192: 124, # 'À' + 193: 104, # 'Á' + 194: 73, # 'Â' + 195: 99, # 'Ã' + 196: 79, # 'Ä' + 197: 85, # 'Å' + 198: 123, # 'Æ' + 199: 54, # 'Ç' + 200: 122, # 'È' + 201: 98, # 'É' + 202: 92, # 'Ê' + 203: 121, # 'Ë' + 204: 120, # 'Ì' + 205: 91, # 'Í' + 206: 103, # 'Î' + 207: 119, # 'Ï' + 208: 68, # 'Ğ' + 209: 118, # 'Ñ' + 210: 117, # 'Ò' + 211: 97, # 'Ó' + 212: 116, # 'Ô' + 213: 115, # 'Õ' + 214: 50, # 'Ö' + 215: 90, # '×' + 216: 114, # 'Ø' + 217: 113, # 'Ù' + 218: 112, # 'Ú' + 219: 111, # 'Û' + 220: 55, # 'Ü' + 221: 41, # 'İ' + 222: 40, # 'Ş' + 223: 86, # 'ß' + 224: 89, # 'à' + 225: 70, # 'á' + 226: 59, # 'â' + 227: 78, # 'ã' + 228: 71, # 'ä' + 229: 82, # 'å' + 230: 88, # 'æ' + 231: 33, # 'ç' + 232: 77, # 'è' + 233: 66, # 'é' + 234: 84, # 'ê' + 235: 83, # 'ë' + 236: 110, # 'ì' + 237: 75, # 'í' + 238: 61, # 'î' + 239: 96, # 'ï' + 240: 30, # 'ğ' + 241: 67, # 'ñ' + 242: 109, # 'ò' + 243: 74, # 'ó' + 244: 87, # 'ô' + 245: 102, # 'õ' + 246: 34, # 'ö' + 247: 95, # '÷' + 248: 81, # 'ø' + 249: 108, # 'ù' + 250: 76, # 'ú' + 251: 72, # 'û' + 252: 17, # 'ü' + 253: 6, # 'ı' + 254: 19, # 'ş' + 255: 107, # 'ÿ' +} + +ISO_8859_9_TURKISH_MODEL = SingleByteCharSetModel(charset_name='ISO-8859-9', + language='Turkish', + char_to_order_map=ISO_8859_9_TURKISH_CHAR_TO_ORDER, + language_model=TURKISH_LANG_MODEL, + typical_positive_ratio=0.97029, + keep_ascii_letters=True, + alphabet='ABCDEFGHIJKLMNOPRSTUVYZabcdefghijklmnoprstuvyzÂÇÎÖÛÜâçîöûüĞğİıŞş') + diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py b/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py new file mode 100644 index 00000000..7d1e8c20 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +FREQ_CAT_NUM = 4 + +UDF = 0 # undefined +OTH = 1 # other +ASC = 2 # ascii capital letter +ASS = 3 # ascii small letter +ACV = 4 # accent capital vowel +ACO = 5 # accent capital other +ASV = 6 # accent small vowel +ASO = 7 # accent small other +CLASS_NUM = 8 # total classes + +Latin1_CharToClass = ( + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F + OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 + ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F + OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 + ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F + OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 + OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F + UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 + OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF + ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 + ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF + ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 + ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF + ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 + ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF + ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 + ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF +) + +# 0 : illegal +# 1 : very unlikely +# 2 : normal +# 3 : very likely +Latin1ClassModel = ( +# UDF OTH ASC ASS ACV ACO ASV ASO + 0, 0, 0, 0, 0, 0, 0, 0, # UDF + 0, 3, 3, 3, 3, 3, 3, 3, # OTH + 0, 3, 3, 3, 3, 3, 3, 3, # ASC + 0, 3, 3, 3, 1, 1, 3, 3, # ASS + 0, 3, 3, 3, 1, 2, 1, 2, # ACV + 0, 3, 3, 3, 3, 3, 3, 3, # ACO + 0, 3, 1, 3, 1, 1, 1, 3, # ASV + 0, 3, 1, 3, 1, 1, 3, 3, # ASO +) + + +class Latin1Prober(CharSetProber): + def __init__(self): + super(Latin1Prober, self).__init__() + self._last_char_class = None + self._freq_counter = None + self.reset() + + def reset(self): + self._last_char_class = OTH + self._freq_counter = [0] * FREQ_CAT_NUM + CharSetProber.reset(self) + + @property + def charset_name(self): + return "ISO-8859-1" + + @property + def language(self): + return "" + + def feed(self, byte_str): + byte_str = self.filter_with_english_letters(byte_str) + for c in byte_str: + char_class = Latin1_CharToClass[c] + freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + + char_class] + if freq == 0: + self._state = ProbingState.NOT_ME + break + self._freq_counter[freq] += 1 + self._last_char_class = char_class + + return self.state + + def get_confidence(self): + if self.state == ProbingState.NOT_ME: + return 0.01 + + total = sum(self._freq_counter) + if total < 0.01: + confidence = 0.0 + else: + confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) + / total) + if confidence < 0.0: + confidence = 0.0 + # lower the confidence of latin1 so that other more accurate + # detector can take priority. + confidence = confidence * 0.73 + return confidence diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py new file mode 100644 index 00000000..6256ecfd --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py @@ -0,0 +1,91 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState + + +class MultiByteCharSetProber(CharSetProber): + """ + MultiByteCharSetProber + """ + + def __init__(self, lang_filter=None): + super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) + self.distribution_analyzer = None + self.coding_sm = None + self._last_char = [0, 0] + + def reset(self): + super(MultiByteCharSetProber, self).reset() + if self.coding_sm: + self.coding_sm.reset() + if self.distribution_analyzer: + self.distribution_analyzer.reset() + self._last_char = [0, 0] + + @property + def charset_name(self): + raise NotImplementedError + + @property + def language(self): + raise NotImplementedError + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.distribution_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + return self.distribution_analyzer.get_confidence() diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py new file mode 100644 index 00000000..530abe75 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py @@ -0,0 +1,54 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .utf8prober import UTF8Prober +from .sjisprober import SJISProber +from .eucjpprober import EUCJPProber +from .gb2312prober import GB2312Prober +from .euckrprober import EUCKRProber +from .cp949prober import CP949Prober +from .big5prober import Big5Prober +from .euctwprober import EUCTWProber + + +class MBCSGroupProber(CharSetGroupProber): + def __init__(self, lang_filter=None): + super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) + self.probers = [ + UTF8Prober(), + SJISProber(), + EUCJPProber(), + GB2312Prober(), + EUCKRProber(), + CP949Prober(), + Big5Prober(), + EUCTWProber() + ] + self.reset() diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py b/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py new file mode 100644 index 00000000..8360d0f2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py @@ -0,0 +1,572 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +# BIG5 + +BIG5_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 4,4,4,4,4,4,4,4, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 4,3,3,3,3,3,3,3, # a0 - a7 + 3,3,3,3,3,3,3,3, # a8 - af + 3,3,3,3,3,3,3,3, # b0 - b7 + 3,3,3,3,3,3,3,3, # b8 - bf + 3,3,3,3,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +BIG5_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 +) + +BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) + +BIG5_SM_MODEL = {'class_table': BIG5_CLS, + 'class_factor': 5, + 'state_table': BIG5_ST, + 'char_len_table': BIG5_CHAR_LEN_TABLE, + 'name': 'Big5'} + +# CP949 + +CP949_CLS = ( + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f + 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f + 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f + 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f + 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f + 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f + 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f + 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f + 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af + 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf + 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff +) + +CP949_ST = ( +#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 +) + +CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) + +CP949_SM_MODEL = {'class_table': CP949_CLS, + 'class_factor': 10, + 'state_table': CP949_ST, + 'char_len_table': CP949_CHAR_LEN_TABLE, + 'name': 'CP949'} + +# EUC-JP + +EUCJP_CLS = ( + 4,4,4,4,4,4,4,4, # 00 - 07 + 4,4,4,4,4,4,5,5, # 08 - 0f + 4,4,4,4,4,4,4,4, # 10 - 17 + 4,4,4,5,4,4,4,4, # 18 - 1f + 4,4,4,4,4,4,4,4, # 20 - 27 + 4,4,4,4,4,4,4,4, # 28 - 2f + 4,4,4,4,4,4,4,4, # 30 - 37 + 4,4,4,4,4,4,4,4, # 38 - 3f + 4,4,4,4,4,4,4,4, # 40 - 47 + 4,4,4,4,4,4,4,4, # 48 - 4f + 4,4,4,4,4,4,4,4, # 50 - 57 + 4,4,4,4,4,4,4,4, # 58 - 5f + 4,4,4,4,4,4,4,4, # 60 - 67 + 4,4,4,4,4,4,4,4, # 68 - 6f + 4,4,4,4,4,4,4,4, # 70 - 77 + 4,4,4,4,4,4,4,4, # 78 - 7f + 5,5,5,5,5,5,5,5, # 80 - 87 + 5,5,5,5,5,5,1,3, # 88 - 8f + 5,5,5,5,5,5,5,5, # 90 - 97 + 5,5,5,5,5,5,5,5, # 98 - 9f + 5,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,0,5 # f8 - ff +) + +EUCJP_ST = ( + 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f + 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 +) + +EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) + +EUCJP_SM_MODEL = {'class_table': EUCJP_CLS, + 'class_factor': 6, + 'state_table': EUCJP_ST, + 'char_len_table': EUCJP_CHAR_LEN_TABLE, + 'name': 'EUC-JP'} + +# EUC-KR + +EUCKR_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,3,3,3, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,3,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 2,2,2,2,2,2,2,2, # e0 - e7 + 2,2,2,2,2,2,2,2, # e8 - ef + 2,2,2,2,2,2,2,2, # f0 - f7 + 2,2,2,2,2,2,2,0 # f8 - ff +) + +EUCKR_ST = ( + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f +) + +EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) + +EUCKR_SM_MODEL = {'class_table': EUCKR_CLS, + 'class_factor': 4, + 'state_table': EUCKR_ST, + 'char_len_table': EUCKR_CHAR_LEN_TABLE, + 'name': 'EUC-KR'} + +# EUC-TW + +EUCTW_CLS = ( + 2,2,2,2,2,2,2,2, # 00 - 07 + 2,2,2,2,2,2,0,0, # 08 - 0f + 2,2,2,2,2,2,2,2, # 10 - 17 + 2,2,2,0,2,2,2,2, # 18 - 1f + 2,2,2,2,2,2,2,2, # 20 - 27 + 2,2,2,2,2,2,2,2, # 28 - 2f + 2,2,2,2,2,2,2,2, # 30 - 37 + 2,2,2,2,2,2,2,2, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,2, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,6,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,3,4,4,4,4,4,4, # a0 - a7 + 5,5,1,1,1,1,1,1, # a8 - af + 1,1,1,1,1,1,1,1, # b0 - b7 + 1,1,1,1,1,1,1,1, # b8 - bf + 1,1,3,1,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +EUCTW_ST = ( + MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 + MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 + MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) + +EUCTW_SM_MODEL = {'class_table': EUCTW_CLS, + 'class_factor': 7, + 'state_table': EUCTW_ST, + 'char_len_table': EUCTW_CHAR_LEN_TABLE, + 'name': 'x-euc-tw'} + +# GB2312 + +GB2312_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 3,3,3,3,3,3,3,3, # 30 - 37 + 3,3,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,4, # 78 - 7f + 5,6,6,6,6,6,6,6, # 80 - 87 + 6,6,6,6,6,6,6,6, # 88 - 8f + 6,6,6,6,6,6,6,6, # 90 - 97 + 6,6,6,6,6,6,6,6, # 98 - 9f + 6,6,6,6,6,6,6,6, # a0 - a7 + 6,6,6,6,6,6,6,6, # a8 - af + 6,6,6,6,6,6,6,6, # b0 - b7 + 6,6,6,6,6,6,6,6, # b8 - bf + 6,6,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 6,6,6,6,6,6,6,6, # e0 - e7 + 6,6,6,6,6,6,6,6, # e8 - ef + 6,6,6,6,6,6,6,6, # f0 - f7 + 6,6,6,6,6,6,6,0 # f8 - ff +) + +GB2312_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 + 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +# To be accurate, the length of class 6 can be either 2 or 4. +# But it is not necessary to discriminate between the two since +# it is used for frequency analysis only, and we are validating +# each code range there as well. So it is safe to set it to be +# 2 here. +GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) + +GB2312_SM_MODEL = {'class_table': GB2312_CLS, + 'class_factor': 7, + 'state_table': GB2312_ST, + 'char_len_table': GB2312_CHAR_LEN_TABLE, + 'name': 'GB2312'} + +# Shift_JIS + +SJIS_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 3,3,3,3,3,2,2,3, # 80 - 87 + 3,3,3,3,3,3,3,3, # 88 - 8f + 3,3,3,3,3,3,3,3, # 90 - 97 + 3,3,3,3,3,3,3,3, # 98 - 9f + #0xa0 is illegal in sjis encoding, but some pages does + #contain such byte. We need to be more error forgiven. + 2,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,4,4,4, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,0,0,0) # f8 - ff + + +SJIS_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 +) + +SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) + +SJIS_SM_MODEL = {'class_table': SJIS_CLS, + 'class_factor': 6, + 'state_table': SJIS_ST, + 'char_len_table': SJIS_CHAR_LEN_TABLE, + 'name': 'Shift_JIS'} + +# UCS2-BE + +UCS2BE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2BE_ST = ( + 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 + 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f + 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 + 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f + 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) + +UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS, + 'class_factor': 6, + 'state_table': UCS2BE_ST, + 'char_len_table': UCS2BE_CHAR_LEN_TABLE, + 'name': 'UTF-16BE'} + +# UCS2-LE + +UCS2LE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2LE_ST = ( + 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f + 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 + 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) + +UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS, + 'class_factor': 6, + 'state_table': UCS2LE_ST, + 'char_len_table': UCS2LE_CHAR_LEN_TABLE, + 'name': 'UTF-16LE'} + +# UTF-8 + +UTF8_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 2,2,2,2,3,3,3,3, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 5,5,5,5,5,5,5,5, # a0 - a7 + 5,5,5,5,5,5,5,5, # a8 - af + 5,5,5,5,5,5,5,5, # b0 - b7 + 5,5,5,5,5,5,5,5, # b8 - bf + 0,0,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 7,8,8,8,8,8,8,8, # e0 - e7 + 8,8,8,8,8,9,8,8, # e8 - ef + 10,11,11,11,11,11,11,11, # f0 - f7 + 12,13,13,13,14,15,0,0 # f8 - ff +) + +UTF8_ST = ( + MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 + 9, 11, 8, 7, 6, 5, 4, 3,#08-0f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f + MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f + MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f + MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f + MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af + MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf +) + +UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) + +UTF8_SM_MODEL = {'class_table': UTF8_CLS, + 'class_factor': 16, + 'state_table': UTF8_ST, + 'char_len_table': UTF8_CHAR_LEN_TABLE, + 'name': 'UTF-8'} diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py b/venv/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py b/venv/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py new file mode 100644 index 00000000..3237d5ab --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py @@ -0,0 +1,310 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Metadata about languages used by our model training code for our +SingleByteCharSetProbers. Could be used for other things in the future. + +This code is based on the language metadata from the uchardet project. +""" +from __future__ import absolute_import, print_function + +from string import ascii_letters + + +# TODO: Add Ukranian (KOI8-U) + +class Language(object): + """Metadata about a language useful for training models + + :ivar name: The human name for the language, in English. + :type name: str + :ivar iso_code: 2-letter ISO 639-1 if possible, 3-letter ISO code otherwise, + or use another catalog as a last resort. + :type iso_code: str + :ivar use_ascii: Whether or not ASCII letters should be included in trained + models. + :type use_ascii: bool + :ivar charsets: The charsets we want to support and create data for. + :type charsets: list of str + :ivar alphabet: The characters in the language's alphabet. If `use_ascii` is + `True`, you only need to add those not in the ASCII set. + :type alphabet: str + :ivar wiki_start_pages: The Wikipedia pages to start from if we're crawling + Wikipedia for training data. + :type wiki_start_pages: list of str + """ + def __init__(self, name=None, iso_code=None, use_ascii=True, charsets=None, + alphabet=None, wiki_start_pages=None): + super(Language, self).__init__() + self.name = name + self.iso_code = iso_code + self.use_ascii = use_ascii + self.charsets = charsets + if self.use_ascii: + if alphabet: + alphabet += ascii_letters + else: + alphabet = ascii_letters + elif not alphabet: + raise ValueError('Must supply alphabet if use_ascii is False') + self.alphabet = ''.join(sorted(set(alphabet))) if alphabet else None + self.wiki_start_pages = wiki_start_pages + + def __repr__(self): + return '{}({})'.format(self.__class__.__name__, + ', '.join('{}={!r}'.format(k, v) + for k, v in self.__dict__.items() + if not k.startswith('_'))) + + +LANGUAGES = {'Arabic': Language(name='Arabic', + iso_code='ar', + use_ascii=False, + # We only support encodings that use isolated + # forms, because the current recommendation is + # that the rendering system handles presentation + # forms. This means we purposefully skip IBM864. + charsets=['ISO-8859-6', 'WINDOWS-1256', + 'CP720', 'CP864'], + alphabet=u'ءآأؤإئابةتثجحخدذرزسشصضطظعغػؼؽؾؿـفقكلمنهوىيًٌٍَُِّ', + wiki_start_pages=[u'الصفحة_الرئيسية']), + 'Belarusian': Language(name='Belarusian', + iso_code='be', + use_ascii=False, + charsets=['ISO-8859-5', 'WINDOWS-1251', + 'IBM866', 'MacCyrillic'], + alphabet=(u'АБВГДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШЫЬЭЮЯ' + u'абвгдеёжзійклмнопрстуўфхцчшыьэюяʼ'), + wiki_start_pages=[u'Галоўная_старонка']), + 'Bulgarian': Language(name='Bulgarian', + iso_code='bg', + use_ascii=False, + charsets=['ISO-8859-5', 'WINDOWS-1251', + 'IBM855'], + alphabet=(u'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯ' + u'абвгдежзийклмнопрстуфхцчшщъьюя'), + wiki_start_pages=[u'Начална_страница']), + 'Czech': Language(name='Czech', + iso_code='cz', + use_ascii=True, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=u'áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ', + wiki_start_pages=[u'Hlavní_strana']), + 'Danish': Language(name='Danish', + iso_code='da', + use_ascii=True, + charsets=['ISO-8859-1', 'ISO-8859-15', + 'WINDOWS-1252'], + alphabet=u'æøåÆØÅ', + wiki_start_pages=[u'Forside']), + 'German': Language(name='German', + iso_code='de', + use_ascii=True, + charsets=['ISO-8859-1', 'WINDOWS-1252'], + alphabet=u'äöüßÄÖÜ', + wiki_start_pages=[u'Wikipedia:Hauptseite']), + 'Greek': Language(name='Greek', + iso_code='el', + use_ascii=False, + charsets=['ISO-8859-7', 'WINDOWS-1253'], + alphabet=(u'αβγδεζηθικλμνξοπρσςτυφχψωάέήίόύώ' + u'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΣΤΥΦΧΨΩΆΈΉΊΌΎΏ'), + wiki_start_pages=[u'Πύλη:Κύρια']), + 'English': Language(name='English', + iso_code='en', + use_ascii=True, + charsets=['ISO-8859-1', 'WINDOWS-1252'], + wiki_start_pages=[u'Main_Page']), + 'Esperanto': Language(name='Esperanto', + iso_code='eo', + # Q, W, X, and Y not used at all + use_ascii=False, + charsets=['ISO-8859-3'], + alphabet=(u'abcĉdefgĝhĥijĵklmnoprsŝtuŭvz' + u'ABCĈDEFGĜHĤIJĴKLMNOPRSŜTUŬVZ'), + wiki_start_pages=[u'Vikipedio:Ĉefpaĝo']), + 'Spanish': Language(name='Spanish', + iso_code='es', + use_ascii=True, + charsets=['ISO-8859-1', 'ISO-8859-15', + 'WINDOWS-1252'], + alphabet=u'ñáéíóúüÑÁÉÍÓÚÜ', + wiki_start_pages=[u'Wikipedia:Portada']), + 'Estonian': Language(name='Estonian', + iso_code='et', + use_ascii=False, + charsets=['ISO-8859-4', 'ISO-8859-13', + 'WINDOWS-1257'], + # C, F, Š, Q, W, X, Y, Z, Ž are only for + # loanwords + alphabet=(u'ABDEGHIJKLMNOPRSTUVÕÄÖÜ' + u'abdeghijklmnoprstuvõäöü'), + wiki_start_pages=[u'Esileht']), + 'Finnish': Language(name='Finnish', + iso_code='fi', + use_ascii=True, + charsets=['ISO-8859-1', 'ISO-8859-15', + 'WINDOWS-1252'], + alphabet=u'ÅÄÖŠŽåäöšž', + wiki_start_pages=[u'Wikipedia:Etusivu']), + 'French': Language(name='French', + iso_code='fr', + use_ascii=True, + charsets=['ISO-8859-1', 'ISO-8859-15', + 'WINDOWS-1252'], + alphabet=u'œàâçèéîïùûêŒÀÂÇÈÉÎÏÙÛÊ', + wiki_start_pages=[u'Wikipédia:Accueil_principal', + u'Bœuf (animal)']), + 'Hebrew': Language(name='Hebrew', + iso_code='he', + use_ascii=False, + charsets=['ISO-8859-8', 'WINDOWS-1255'], + alphabet=u'אבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ', + wiki_start_pages=[u'עמוד_ראשי']), + 'Croatian': Language(name='Croatian', + iso_code='hr', + # Q, W, X, Y are only used for foreign words. + use_ascii=False, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=(u'abcčćdđefghijklmnoprsštuvzž' + u'ABCČĆDĐEFGHIJKLMNOPRSŠTUVZŽ'), + wiki_start_pages=[u'Glavna_stranica']), + 'Hungarian': Language(name='Hungarian', + iso_code='hu', + # Q, W, X, Y are only used for foreign words. + use_ascii=False, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=(u'abcdefghijklmnoprstuvzáéíóöőúüű' + u'ABCDEFGHIJKLMNOPRSTUVZÁÉÍÓÖŐÚÜŰ'), + wiki_start_pages=[u'Kezdőlap']), + 'Italian': Language(name='Italian', + iso_code='it', + use_ascii=True, + charsets=['ISO-8859-1', 'ISO-8859-15', + 'WINDOWS-1252'], + alphabet=u'ÀÈÉÌÒÓÙàèéìòóù', + wiki_start_pages=[u'Pagina_principale']), + 'Lithuanian': Language(name='Lithuanian', + iso_code='lt', + use_ascii=False, + charsets=['ISO-8859-13', 'WINDOWS-1257', + 'ISO-8859-4'], + # Q, W, and X not used at all + alphabet=(u'AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽ' + u'aąbcčdeęėfghiįyjklmnoprsštuųūvzž'), + wiki_start_pages=[u'Pagrindinis_puslapis']), + 'Latvian': Language(name='Latvian', + iso_code='lv', + use_ascii=False, + charsets=['ISO-8859-13', 'WINDOWS-1257', + 'ISO-8859-4'], + # Q, W, X, Y are only for loanwords + alphabet=(u'AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ' + u'aābcčdeēfgģhiījkķlļmnņoprsštuūvzž'), + wiki_start_pages=[u'Sākumlapa']), + 'Macedonian': Language(name='Macedonian', + iso_code='mk', + use_ascii=False, + charsets=['ISO-8859-5', 'WINDOWS-1251', + 'MacCyrillic', 'IBM855'], + alphabet=(u'АБВГДЃЕЖЗЅИЈКЛЉМНЊОПРСТЌУФХЦЧЏШ' + u'абвгдѓежзѕијклљмнњопрстќуфхцчџш'), + wiki_start_pages=[u'Главна_страница']), + 'Dutch': Language(name='Dutch', + iso_code='nl', + use_ascii=True, + charsets=['ISO-8859-1', 'WINDOWS-1252'], + wiki_start_pages=[u'Hoofdpagina']), + 'Polish': Language(name='Polish', + iso_code='pl', + # Q and X are only used for foreign words. + use_ascii=False, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=(u'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻ' + u'aąbcćdeęfghijklłmnńoóprsśtuwyzźż'), + wiki_start_pages=[u'Wikipedia:Strona_główna']), + 'Portuguese': Language(name='Portuguese', + iso_code='pt', + use_ascii=True, + charsets=['ISO-8859-1', 'ISO-8859-15', + 'WINDOWS-1252'], + alphabet=u'ÁÂÃÀÇÉÊÍÓÔÕÚáâãàçéêíóôõú', + wiki_start_pages=[u'Wikipédia:Página_principal']), + 'Romanian': Language(name='Romanian', + iso_code='ro', + use_ascii=True, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=u'ăâîșțĂÂÎȘȚ', + wiki_start_pages=[u'Pagina_principală']), + 'Russian': Language(name='Russian', + iso_code='ru', + use_ascii=False, + charsets=['ISO-8859-5', 'WINDOWS-1251', + 'KOI8-R', 'MacCyrillic', 'IBM866', + 'IBM855'], + alphabet=(u'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' + u'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'), + wiki_start_pages=[u'Заглавная_страница']), + 'Slovak': Language(name='Slovak', + iso_code='sk', + use_ascii=True, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=u'áäčďéíĺľňóôŕšťúýžÁÄČĎÉÍĹĽŇÓÔŔŠŤÚÝŽ', + wiki_start_pages=[u'Hlavná_stránka']), + 'Slovene': Language(name='Slovene', + iso_code='sl', + # Q, W, X, Y are only used for foreign words. + use_ascii=False, + charsets=['ISO-8859-2', 'WINDOWS-1250'], + alphabet=(u'abcčdefghijklmnoprsštuvzž' + u'ABCČDEFGHIJKLMNOPRSŠTUVZŽ'), + wiki_start_pages=[u'Glavna_stran']), + # Serbian can be written in both Latin and Cyrillic, but there's no + # simple way to get the Latin alphabet pages from Wikipedia through + # the API, so for now we just support Cyrillic. + 'Serbian': Language(name='Serbian', + iso_code='sr', + alphabet=(u'АБВГДЂЕЖЗИЈКЛЉМНЊОПРСТЋУФХЦЧЏШ' + u'абвгдђежзијклљмнњопрстћуфхцчџш'), + charsets=['ISO-8859-5', 'WINDOWS-1251', + 'MacCyrillic', 'IBM855'], + wiki_start_pages=[u'Главна_страна']), + 'Thai': Language(name='Thai', + iso_code='th', + use_ascii=False, + charsets=['ISO-8859-11', 'TIS-620', 'CP874'], + alphabet=u'กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛', + wiki_start_pages=[u'หน้าหลัก']), + 'Turkish': Language(name='Turkish', + iso_code='tr', + # Q, W, and X are not used by Turkish + use_ascii=False, + charsets=['ISO-8859-3', 'ISO-8859-9', + 'WINDOWS-1254'], + alphabet=(u'abcçdefgğhıijklmnoöprsştuüvyzâîû' + u'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZÂÎÛ'), + wiki_start_pages=[u'Ana_Sayfa']), + 'Vietnamese': Language(name='Vietnamese', + iso_code='vi', + use_ascii=False, + # Windows-1258 is the only common 8-bit + # Vietnamese encoding supported by Python. + # From Wikipedia: + # For systems that lack support for Unicode, + # dozens of 8-bit Vietnamese code pages are + # available.[1] The most common are VISCII + # (TCVN 5712:1993), VPS, and Windows-1258.[3] + # Where ASCII is required, such as when + # ensuring readability in plain text e-mail, + # Vietnamese letters are often encoded + # according to Vietnamese Quoted-Readable + # (VIQR) or VSCII Mnemonic (VSCII-MNEM),[4] + # though usage of either variable-width + # scheme has declined dramatically following + # the adoption of Unicode on the World Wide + # Web. + charsets=['WINDOWS-1258'], + alphabet=(u'aăâbcdđeêghiklmnoôơpqrstuưvxy' + u'AĂÂBCDĐEÊGHIKLMNOÔƠPQRSTUƯVXY'), + wiki_start_pages=[u'Chữ_Quốc_ngữ']), + } diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py new file mode 100644 index 00000000..46ba835c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from collections import namedtuple + +from .charsetprober import CharSetProber +from .enums import CharacterCategory, ProbingState, SequenceLikelihood + + +SingleByteCharSetModel = namedtuple('SingleByteCharSetModel', + ['charset_name', + 'language', + 'char_to_order_map', + 'language_model', + 'typical_positive_ratio', + 'keep_ascii_letters', + 'alphabet']) + + +class SingleByteCharSetProber(CharSetProber): + SAMPLE_SIZE = 64 + SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 + POSITIVE_SHORTCUT_THRESHOLD = 0.95 + NEGATIVE_SHORTCUT_THRESHOLD = 0.05 + + def __init__(self, model, reversed=False, name_prober=None): + super(SingleByteCharSetProber, self).__init__() + self._model = model + # TRUE if we need to reverse every pair in the model lookup + self._reversed = reversed + # Optional auxiliary prober for name decision + self._name_prober = name_prober + self._last_order = None + self._seq_counters = None + self._total_seqs = None + self._total_char = None + self._freq_char = None + self.reset() + + def reset(self): + super(SingleByteCharSetProber, self).reset() + # char order of last character + self._last_order = 255 + self._seq_counters = [0] * SequenceLikelihood.get_num_categories() + self._total_seqs = 0 + self._total_char = 0 + # characters that fall in our sampling range + self._freq_char = 0 + + @property + def charset_name(self): + if self._name_prober: + return self._name_prober.charset_name + else: + return self._model.charset_name + + @property + def language(self): + if self._name_prober: + return self._name_prober.language + else: + return self._model.language + + def feed(self, byte_str): + # TODO: Make filter_international_words keep things in self.alphabet + if not self._model.keep_ascii_letters: + byte_str = self.filter_international_words(byte_str) + if not byte_str: + return self.state + char_to_order_map = self._model.char_to_order_map + language_model = self._model.language_model + for char in byte_str: + order = char_to_order_map.get(char, CharacterCategory.UNDEFINED) + # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but + # CharacterCategory.SYMBOL is actually 253, so we use CONTROL + # to make it closer to the original intent. The only difference + # is whether or not we count digits and control characters for + # _total_char purposes. + if order < CharacterCategory.CONTROL: + self._total_char += 1 + # TODO: Follow uchardet's lead and discount confidence for frequent + # control characters. + # See https://github.com/BYVoid/uchardet/commit/55b4f23971db61 + if order < self.SAMPLE_SIZE: + self._freq_char += 1 + if self._last_order < self.SAMPLE_SIZE: + self._total_seqs += 1 + if not self._reversed: + lm_cat = language_model[self._last_order][order] + else: + lm_cat = language_model[order][self._last_order] + self._seq_counters[lm_cat] += 1 + self._last_order = order + + charset_name = self._model.charset_name + if self.state == ProbingState.DETECTING: + if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: + confidence = self.get_confidence() + if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, we have a winner', + charset_name, confidence) + self._state = ProbingState.FOUND_IT + elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, below negative ' + 'shortcut threshhold %s', charset_name, + confidence, + self.NEGATIVE_SHORTCUT_THRESHOLD) + self._state = ProbingState.NOT_ME + + return self.state + + def get_confidence(self): + r = 0.01 + if self._total_seqs > 0: + r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / + self._total_seqs / self._model.typical_positive_ratio) + r = r * self._freq_char / self._total_char + if r >= 1.0: + r = 0.99 + return r diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py new file mode 100644 index 00000000..bdeef4e1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py @@ -0,0 +1,83 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .hebrewprober import HebrewProber +from .langbulgarianmodel import (ISO_8859_5_BULGARIAN_MODEL, + WINDOWS_1251_BULGARIAN_MODEL) +from .langgreekmodel import ISO_8859_7_GREEK_MODEL, WINDOWS_1253_GREEK_MODEL +from .langhebrewmodel import WINDOWS_1255_HEBREW_MODEL +# from .langhungarianmodel import (ISO_8859_2_HUNGARIAN_MODEL, +# WINDOWS_1250_HUNGARIAN_MODEL) +from .langrussianmodel import (IBM855_RUSSIAN_MODEL, IBM866_RUSSIAN_MODEL, + ISO_8859_5_RUSSIAN_MODEL, KOI8_R_RUSSIAN_MODEL, + MACCYRILLIC_RUSSIAN_MODEL, + WINDOWS_1251_RUSSIAN_MODEL) +from .langthaimodel import TIS_620_THAI_MODEL +from .langturkishmodel import ISO_8859_9_TURKISH_MODEL +from .sbcharsetprober import SingleByteCharSetProber + + +class SBCSGroupProber(CharSetGroupProber): + def __init__(self): + super(SBCSGroupProber, self).__init__() + hebrew_prober = HebrewProber() + logical_hebrew_prober = SingleByteCharSetProber(WINDOWS_1255_HEBREW_MODEL, + False, hebrew_prober) + # TODO: See if using ISO-8859-8 Hebrew model works better here, since + # it's actually the visual one + visual_hebrew_prober = SingleByteCharSetProber(WINDOWS_1255_HEBREW_MODEL, + True, hebrew_prober) + hebrew_prober.set_model_probers(logical_hebrew_prober, + visual_hebrew_prober) + # TODO: ORDER MATTERS HERE. I changed the order vs what was in master + # and several tests failed that did not before. Some thought + # should be put into the ordering, and we should consider making + # order not matter here, because that is very counter-intuitive. + self.probers = [ + SingleByteCharSetProber(WINDOWS_1251_RUSSIAN_MODEL), + SingleByteCharSetProber(KOI8_R_RUSSIAN_MODEL), + SingleByteCharSetProber(ISO_8859_5_RUSSIAN_MODEL), + SingleByteCharSetProber(MACCYRILLIC_RUSSIAN_MODEL), + SingleByteCharSetProber(IBM866_RUSSIAN_MODEL), + SingleByteCharSetProber(IBM855_RUSSIAN_MODEL), + SingleByteCharSetProber(ISO_8859_7_GREEK_MODEL), + SingleByteCharSetProber(WINDOWS_1253_GREEK_MODEL), + SingleByteCharSetProber(ISO_8859_5_BULGARIAN_MODEL), + SingleByteCharSetProber(WINDOWS_1251_BULGARIAN_MODEL), + # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) + # after we retrain model. + # SingleByteCharSetProber(ISO_8859_2_HUNGARIAN_MODEL), + # SingleByteCharSetProber(WINDOWS_1250_HUNGARIAN_MODEL), + SingleByteCharSetProber(TIS_620_THAI_MODEL), + SingleByteCharSetProber(ISO_8859_9_TURKISH_MODEL), + hebrew_prober, + logical_hebrew_prober, + visual_hebrew_prober, + ] + self.reset() diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py b/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py new file mode 100644 index 00000000..9e29623b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import SJISDistributionAnalysis +from .jpcntx import SJISContextAnalysis +from .mbcssm import SJIS_SM_MODEL +from .enums import ProbingState, MachineState + + +class SJISProber(MultiByteCharSetProber): + def __init__(self): + super(SJISProber, self).__init__() + self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) + self.distribution_analyzer = SJISDistributionAnalysis() + self.context_analyzer = SJISContextAnalysis() + self.reset() + + def reset(self): + super(SJISProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return self.context_analyzer.charset_name + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char[2 - char_len:], + char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 + - char_len], char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py b/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py new file mode 100644 index 00000000..055a8ac1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py @@ -0,0 +1,286 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### +""" +Module containing the UniversalDetector detector class, which is the primary +class a user of ``chardet`` should use. + +:author: Mark Pilgrim (initial port to Python) +:author: Shy Shalom (original C code) +:author: Dan Blanchard (major refactoring for 3.0) +:author: Ian Cordasco +""" + + +import codecs +import logging +import re + +from .charsetgroupprober import CharSetGroupProber +from .enums import InputState, LanguageFilter, ProbingState +from .escprober import EscCharSetProber +from .latin1prober import Latin1Prober +from .mbcsgroupprober import MBCSGroupProber +from .sbcsgroupprober import SBCSGroupProber + + +class UniversalDetector(object): + """ + The ``UniversalDetector`` class underlies the ``chardet.detect`` function + and coordinates all of the different charset probers. + + To get a ``dict`` containing an encoding and its confidence, you can simply + run: + + .. code:: + + u = UniversalDetector() + u.feed(some_bytes) + u.close() + detected = u.result + + """ + + MINIMUM_THRESHOLD = 0.20 + HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') + ESC_DETECTOR = re.compile(b'(\033|~{)') + WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') + ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', + 'iso-8859-2': 'Windows-1250', + 'iso-8859-5': 'Windows-1251', + 'iso-8859-6': 'Windows-1256', + 'iso-8859-7': 'Windows-1253', + 'iso-8859-8': 'Windows-1255', + 'iso-8859-9': 'Windows-1254', + 'iso-8859-13': 'Windows-1257'} + + def __init__(self, lang_filter=LanguageFilter.ALL): + self._esc_charset_prober = None + self._charset_probers = [] + self.result = None + self.done = None + self._got_data = None + self._input_state = None + self._last_char = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + self._has_win_bytes = None + self.reset() + + def reset(self): + """ + Reset the UniversalDetector and all of its probers back to their + initial states. This is called by ``__init__``, so you only need to + call this directly in between analyses of different documents. + """ + self.result = {'encoding': None, 'confidence': 0.0, 'language': None} + self.done = False + self._got_data = False + self._has_win_bytes = False + self._input_state = InputState.PURE_ASCII + self._last_char = b'' + if self._esc_charset_prober: + self._esc_charset_prober.reset() + for prober in self._charset_probers: + prober.reset() + + def feed(self, byte_str): + """ + Takes a chunk of a document and feeds it through all of the relevant + charset probers. + + After calling ``feed``, you can check the value of the ``done`` + attribute to see if you need to continue feeding the + ``UniversalDetector`` more data, or if it has made a prediction + (in the ``result`` attribute). + + .. note:: + You should always call ``close`` when you're done feeding in your + document if ``done`` is not already ``True``. + """ + if self.done: + return + + if not len(byte_str): + return + + if not isinstance(byte_str, bytearray): + byte_str = bytearray(byte_str) + + # First check for known BOMs, since these are guaranteed to be correct + if not self._got_data: + # If the data starts with BOM, we know it is UTF + if byte_str.startswith(codecs.BOM_UTF8): + # EF BB BF UTF-8 with BOM + self.result = {'encoding': "UTF-8-SIG", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_UTF32_LE, + codecs.BOM_UTF32_BE)): + # FF FE 00 00 UTF-32, little-endian BOM + # 00 00 FE FF UTF-32, big-endian BOM + self.result = {'encoding': "UTF-32", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\xFE\xFF\x00\x00'): + # FE FF 00 00 UCS-4, unusual octet order BOM (3412) + self.result = {'encoding': "X-ISO-10646-UCS-4-3412", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\x00\x00\xFF\xFE'): + # 00 00 FF FE UCS-4, unusual octet order BOM (2143) + self.result = {'encoding': "X-ISO-10646-UCS-4-2143", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): + # FF FE UTF-16, little endian BOM + # FE FF UTF-16, big endian BOM + self.result = {'encoding': "UTF-16", + 'confidence': 1.0, + 'language': ''} + + self._got_data = True + if self.result['encoding'] is not None: + self.done = True + return + + # If none of those matched and we've only see ASCII so far, check + # for high bytes and escape sequences + if self._input_state == InputState.PURE_ASCII: + if self.HIGH_BYTE_DETECTOR.search(byte_str): + self._input_state = InputState.HIGH_BYTE + elif self._input_state == InputState.PURE_ASCII and \ + self.ESC_DETECTOR.search(self._last_char + byte_str): + self._input_state = InputState.ESC_ASCII + + self._last_char = byte_str[-1:] + + # If we've seen escape sequences, use the EscCharSetProber, which + # uses a simple state machine to check for known escape sequences in + # HZ and ISO-2022 encodings, since those are the only encodings that + # use such sequences. + if self._input_state == InputState.ESC_ASCII: + if not self._esc_charset_prober: + self._esc_charset_prober = EscCharSetProber(self.lang_filter) + if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': + self._esc_charset_prober.charset_name, + 'confidence': + self._esc_charset_prober.get_confidence(), + 'language': + self._esc_charset_prober.language} + self.done = True + # If we've seen high bytes (i.e., those with values greater than 127), + # we need to do more complicated checks using all our multi-byte and + # single-byte probers that are left. The single-byte probers + # use character bigram distributions to determine the encoding, whereas + # the multi-byte probers use a combination of character unigram and + # bigram distributions. + elif self._input_state == InputState.HIGH_BYTE: + if not self._charset_probers: + self._charset_probers = [MBCSGroupProber(self.lang_filter)] + # If we're checking non-CJK encodings, use single-byte prober + if self.lang_filter & LanguageFilter.NON_CJK: + self._charset_probers.append(SBCSGroupProber()) + self._charset_probers.append(Latin1Prober()) + for prober in self._charset_probers: + if prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': prober.charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language} + self.done = True + break + if self.WIN_BYTE_DETECTOR.search(byte_str): + self._has_win_bytes = True + + def close(self): + """ + Stop analyzing the current document and come up with a final + prediction. + + :returns: The ``result`` attribute, a ``dict`` with the keys + `encoding`, `confidence`, and `language`. + """ + # Don't bother with checks if we're already done + if self.done: + return self.result + self.done = True + + if not self._got_data: + self.logger.debug('no data received!') + + # Default to ASCII if it is all we've seen so far + elif self._input_state == InputState.PURE_ASCII: + self.result = {'encoding': 'ascii', + 'confidence': 1.0, + 'language': ''} + + # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD + elif self._input_state == InputState.HIGH_BYTE: + prober_confidence = None + max_prober_confidence = 0.0 + max_prober = None + for prober in self._charset_probers: + if not prober: + continue + prober_confidence = prober.get_confidence() + if prober_confidence > max_prober_confidence: + max_prober_confidence = prober_confidence + max_prober = prober + if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): + charset_name = max_prober.charset_name + lower_charset_name = max_prober.charset_name.lower() + confidence = max_prober.get_confidence() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if self._has_win_bytes: + charset_name = self.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + self.result = {'encoding': charset_name, + 'confidence': confidence, + 'language': max_prober.language} + + # Log all prober confidences if none met MINIMUM_THRESHOLD + if self.logger.getEffectiveLevel() <= logging.DEBUG: + if self.result['encoding'] is None: + self.logger.debug('no probers hit minimum threshold') + for group_prober in self._charset_probers: + if not group_prober: + continue + if isinstance(group_prober, CharSetGroupProber): + for prober in group_prober.probers: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + else: + self.logger.debug('%s %s confidence = %s', + group_prober.charset_name, + group_prober.language, + group_prober.get_confidence()) + return self.result diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py b/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py new file mode 100644 index 00000000..6c3196cc --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py @@ -0,0 +1,82 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState +from .codingstatemachine import CodingStateMachine +from .mbcssm import UTF8_SM_MODEL + + + +class UTF8Prober(CharSetProber): + ONE_CHAR_PROB = 0.5 + + def __init__(self): + super(UTF8Prober, self).__init__() + self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) + self._num_mb_chars = None + self.reset() + + def reset(self): + super(UTF8Prober, self).reset() + self.coding_sm.reset() + self._num_mb_chars = 0 + + @property + def charset_name(self): + return "utf-8" + + @property + def language(self): + return "" + + def feed(self, byte_str): + for c in byte_str: + coding_state = self.coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + if self.coding_sm.get_current_charlen() >= 2: + self._num_mb_chars += 1 + + if self.state == ProbingState.DETECTING: + if self.get_confidence() > self.SHORTCUT_THRESHOLD: + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + unlike = 0.99 + if self._num_mb_chars < 6: + unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars + return 1.0 - unlike + else: + return unlike diff --git a/venv/Lib/site-packages/pip/_vendor/chardet/version.py b/venv/Lib/site-packages/pip/_vendor/chardet/version.py new file mode 100644 index 00000000..70369b9d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/chardet/version.py @@ -0,0 +1,9 @@ +""" +This module exists only to simplify retrieving the version number of chardet +from within setup.py and from chardet subpackages. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + +__version__ = "4.0.0" +VERSION = __version__.split('.') diff --git a/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py b/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py new file mode 100644 index 00000000..b149ed79 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py @@ -0,0 +1,6 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from .initialise import init, deinit, reinit, colorama_text +from .ansi import Fore, Back, Style, Cursor +from .ansitowin32 import AnsiToWin32 + +__version__ = '0.4.4' diff --git a/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py b/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py new file mode 100644 index 00000000..11ec695f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py @@ -0,0 +1,102 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +''' +This module generates ANSI character codes to printing colors to terminals. +See: http://en.wikipedia.org/wiki/ANSI_escape_code +''' + +CSI = '\033[' +OSC = '\033]' +BEL = '\a' + + +def code_to_chars(code): + return CSI + str(code) + 'm' + +def set_title(title): + return OSC + '2;' + title + BEL + +def clear_screen(mode=2): + return CSI + str(mode) + 'J' + +def clear_line(mode=2): + return CSI + str(mode) + 'K' + + +class AnsiCodes(object): + def __init__(self): + # the subclasses declare class attributes which are numbers. + # Upon instantiation we define instance attributes, which are the same + # as the class attributes but wrapped with the ANSI escape sequence + for name in dir(self): + if not name.startswith('_'): + value = getattr(self, name) + setattr(self, name, code_to_chars(value)) + + +class AnsiCursor(object): + def UP(self, n=1): + return CSI + str(n) + 'A' + def DOWN(self, n=1): + return CSI + str(n) + 'B' + def FORWARD(self, n=1): + return CSI + str(n) + 'C' + def BACK(self, n=1): + return CSI + str(n) + 'D' + def POS(self, x=1, y=1): + return CSI + str(y) + ';' + str(x) + 'H' + + +class AnsiFore(AnsiCodes): + BLACK = 30 + RED = 31 + GREEN = 32 + YELLOW = 33 + BLUE = 34 + MAGENTA = 35 + CYAN = 36 + WHITE = 37 + RESET = 39 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 90 + LIGHTRED_EX = 91 + LIGHTGREEN_EX = 92 + LIGHTYELLOW_EX = 93 + LIGHTBLUE_EX = 94 + LIGHTMAGENTA_EX = 95 + LIGHTCYAN_EX = 96 + LIGHTWHITE_EX = 97 + + +class AnsiBack(AnsiCodes): + BLACK = 40 + RED = 41 + GREEN = 42 + YELLOW = 43 + BLUE = 44 + MAGENTA = 45 + CYAN = 46 + WHITE = 47 + RESET = 49 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 100 + LIGHTRED_EX = 101 + LIGHTGREEN_EX = 102 + LIGHTYELLOW_EX = 103 + LIGHTBLUE_EX = 104 + LIGHTMAGENTA_EX = 105 + LIGHTCYAN_EX = 106 + LIGHTWHITE_EX = 107 + + +class AnsiStyle(AnsiCodes): + BRIGHT = 1 + DIM = 2 + NORMAL = 22 + RESET_ALL = 0 + +Fore = AnsiFore() +Back = AnsiBack() +Style = AnsiStyle() +Cursor = AnsiCursor() diff --git a/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py b/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py new file mode 100644 index 00000000..6039a054 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py @@ -0,0 +1,258 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import re +import sys +import os + +from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style, BEL +from .winterm import WinTerm, WinColor, WinStyle +from .win32 import windll, winapi_test + + +winterm = None +if windll is not None: + winterm = WinTerm() + + +class StreamWrapper(object): + ''' + Wraps a stream (such as stdout), acting as a transparent proxy for all + attribute access apart from method 'write()', which is delegated to our + Converter instance. + ''' + def __init__(self, wrapped, converter): + # double-underscore everything to prevent clashes with names of + # attributes on the wrapped stream object. + self.__wrapped = wrapped + self.__convertor = converter + + def __getattr__(self, name): + return getattr(self.__wrapped, name) + + def __enter__(self, *args, **kwargs): + # special method lookup bypasses __getattr__/__getattribute__, see + # https://stackoverflow.com/questions/12632894/why-doesnt-getattr-work-with-exit + # thus, contextlib magic methods are not proxied via __getattr__ + return self.__wrapped.__enter__(*args, **kwargs) + + def __exit__(self, *args, **kwargs): + return self.__wrapped.__exit__(*args, **kwargs) + + def write(self, text): + self.__convertor.write(text) + + def isatty(self): + stream = self.__wrapped + if 'PYCHARM_HOSTED' in os.environ: + if stream is not None and (stream is sys.__stdout__ or stream is sys.__stderr__): + return True + try: + stream_isatty = stream.isatty + except AttributeError: + return False + else: + return stream_isatty() + + @property + def closed(self): + stream = self.__wrapped + try: + return stream.closed + except AttributeError: + return True + + +class AnsiToWin32(object): + ''' + Implements a 'write()' method which, on Windows, will strip ANSI character + sequences from the text, and if outputting to a tty, will convert them into + win32 function calls. + ''' + ANSI_CSI_RE = re.compile('\001?\033\\[((?:\\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer + ANSI_OSC_RE = re.compile('\001?\033\\]([^\a]*)(\a)\002?') # Operating System Command + + def __init__(self, wrapped, convert=None, strip=None, autoreset=False): + # The wrapped stream (normally sys.stdout or sys.stderr) + self.wrapped = wrapped + + # should we reset colors to defaults after every .write() + self.autoreset = autoreset + + # create the proxy wrapping our output stream + self.stream = StreamWrapper(wrapped, self) + + on_windows = os.name == 'nt' + # We test if the WinAPI works, because even if we are on Windows + # we may be using a terminal that doesn't support the WinAPI + # (e.g. Cygwin Terminal). In this case it's up to the terminal + # to support the ANSI codes. + conversion_supported = on_windows and winapi_test() + + # should we strip ANSI sequences from our output? + if strip is None: + strip = conversion_supported or (not self.stream.closed and not self.stream.isatty()) + self.strip = strip + + # should we should convert ANSI sequences into win32 calls? + if convert is None: + convert = conversion_supported and not self.stream.closed and self.stream.isatty() + self.convert = convert + + # dict of ansi codes to win32 functions and parameters + self.win32_calls = self.get_win32_calls() + + # are we wrapping stderr? + self.on_stderr = self.wrapped is sys.stderr + + def should_wrap(self): + ''' + True if this class is actually needed. If false, then the output + stream will not be affected, nor will win32 calls be issued, so + wrapping stdout is not actually required. This will generally be + False on non-Windows platforms, unless optional functionality like + autoreset has been requested using kwargs to init() + ''' + return self.convert or self.strip or self.autoreset + + def get_win32_calls(self): + if self.convert and winterm: + return { + AnsiStyle.RESET_ALL: (winterm.reset_all, ), + AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), + AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), + AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), + AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), + AnsiFore.RED: (winterm.fore, WinColor.RED), + AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), + AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), + AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), + AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), + AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), + AnsiFore.WHITE: (winterm.fore, WinColor.GREY), + AnsiFore.RESET: (winterm.fore, ), + AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), + AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), + AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), + AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), + AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), + AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), + AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), + AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), + AnsiBack.BLACK: (winterm.back, WinColor.BLACK), + AnsiBack.RED: (winterm.back, WinColor.RED), + AnsiBack.GREEN: (winterm.back, WinColor.GREEN), + AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), + AnsiBack.BLUE: (winterm.back, WinColor.BLUE), + AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), + AnsiBack.CYAN: (winterm.back, WinColor.CYAN), + AnsiBack.WHITE: (winterm.back, WinColor.GREY), + AnsiBack.RESET: (winterm.back, ), + AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), + AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), + AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), + AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), + AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), + AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), + AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), + AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), + } + return dict() + + def write(self, text): + if self.strip or self.convert: + self.write_and_convert(text) + else: + self.wrapped.write(text) + self.wrapped.flush() + if self.autoreset: + self.reset_all() + + + def reset_all(self): + if self.convert: + self.call_win32('m', (0,)) + elif not self.strip and not self.stream.closed: + self.wrapped.write(Style.RESET_ALL) + + + def write_and_convert(self, text): + ''' + Write the given text to our wrapped stream, stripping any ANSI + sequences from the text, and optionally converting them into win32 + calls. + ''' + cursor = 0 + text = self.convert_osc(text) + for match in self.ANSI_CSI_RE.finditer(text): + start, end = match.span() + self.write_plain_text(text, cursor, start) + self.convert_ansi(*match.groups()) + cursor = end + self.write_plain_text(text, cursor, len(text)) + + + def write_plain_text(self, text, start, end): + if start < end: + self.wrapped.write(text[start:end]) + self.wrapped.flush() + + + def convert_ansi(self, paramstring, command): + if self.convert: + params = self.extract_params(command, paramstring) + self.call_win32(command, params) + + + def extract_params(self, command, paramstring): + if command in 'Hf': + params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) + while len(params) < 2: + # defaults: + params = params + (1,) + else: + params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) + if len(params) == 0: + # defaults: + if command in 'JKm': + params = (0,) + elif command in 'ABCD': + params = (1,) + + return params + + + def call_win32(self, command, params): + if command == 'm': + for param in params: + if param in self.win32_calls: + func_args = self.win32_calls[param] + func = func_args[0] + args = func_args[1:] + kwargs = dict(on_stderr=self.on_stderr) + func(*args, **kwargs) + elif command in 'J': + winterm.erase_screen(params[0], on_stderr=self.on_stderr) + elif command in 'K': + winterm.erase_line(params[0], on_stderr=self.on_stderr) + elif command in 'Hf': # cursor position - absolute + winterm.set_cursor_position(params, on_stderr=self.on_stderr) + elif command in 'ABCD': # cursor position - relative + n = params[0] + # A - up, B - down, C - forward, D - back + x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] + winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) + + + def convert_osc(self, text): + for match in self.ANSI_OSC_RE.finditer(text): + start, end = match.span() + text = text[:start] + text[end:] + paramstring, command = match.groups() + if command == BEL: + if paramstring.count(";") == 1: + params = paramstring.split(";") + # 0 - change title and icon (we will only change title) + # 1 - change icon (we don't support this) + # 2 - change title + if params[0] in '02': + winterm.set_title(params[1]) + return text diff --git a/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py b/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py new file mode 100644 index 00000000..430d0668 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py @@ -0,0 +1,80 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import atexit +import contextlib +import sys + +from .ansitowin32 import AnsiToWin32 + + +orig_stdout = None +orig_stderr = None + +wrapped_stdout = None +wrapped_stderr = None + +atexit_done = False + + +def reset_all(): + if AnsiToWin32 is not None: # Issue #74: objects might become None at exit + AnsiToWin32(orig_stdout).reset_all() + + +def init(autoreset=False, convert=None, strip=None, wrap=True): + + if not wrap and any([autoreset, convert, strip]): + raise ValueError('wrap=False conflicts with any other arg=True') + + global wrapped_stdout, wrapped_stderr + global orig_stdout, orig_stderr + + orig_stdout = sys.stdout + orig_stderr = sys.stderr + + if sys.stdout is None: + wrapped_stdout = None + else: + sys.stdout = wrapped_stdout = \ + wrap_stream(orig_stdout, convert, strip, autoreset, wrap) + if sys.stderr is None: + wrapped_stderr = None + else: + sys.stderr = wrapped_stderr = \ + wrap_stream(orig_stderr, convert, strip, autoreset, wrap) + + global atexit_done + if not atexit_done: + atexit.register(reset_all) + atexit_done = True + + +def deinit(): + if orig_stdout is not None: + sys.stdout = orig_stdout + if orig_stderr is not None: + sys.stderr = orig_stderr + + +@contextlib.contextmanager +def colorama_text(*args, **kwargs): + init(*args, **kwargs) + try: + yield + finally: + deinit() + + +def reinit(): + if wrapped_stdout is not None: + sys.stdout = wrapped_stdout + if wrapped_stderr is not None: + sys.stderr = wrapped_stderr + + +def wrap_stream(stream, convert, strip, autoreset, wrap): + if wrap: + wrapper = AnsiToWin32(stream, + convert=convert, strip=strip, autoreset=autoreset) + if wrapper.should_wrap(): + stream = wrapper.stream + return stream diff --git a/venv/Lib/site-packages/pip/_vendor/colorama/win32.py b/venv/Lib/site-packages/pip/_vendor/colorama/win32.py new file mode 100644 index 00000000..c2d83603 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/colorama/win32.py @@ -0,0 +1,152 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. + +# from winbase.h +STDOUT = -11 +STDERR = -12 + +try: + import ctypes + from ctypes import LibraryLoader + windll = LibraryLoader(ctypes.WinDLL) + from ctypes import wintypes +except (AttributeError, ImportError): + windll = None + SetConsoleTextAttribute = lambda *_: None + winapi_test = lambda *_: None +else: + from ctypes import byref, Structure, c_char, POINTER + + COORD = wintypes._COORD + + class CONSOLE_SCREEN_BUFFER_INFO(Structure): + """struct in wincon.h.""" + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + def __str__(self): + return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % ( + self.dwSize.Y, self.dwSize.X + , self.dwCursorPosition.Y, self.dwCursorPosition.X + , self.wAttributes + , self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right + , self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X + ) + + _GetStdHandle = windll.kernel32.GetStdHandle + _GetStdHandle.argtypes = [ + wintypes.DWORD, + ] + _GetStdHandle.restype = wintypes.HANDLE + + _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo + _GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + POINTER(CONSOLE_SCREEN_BUFFER_INFO), + ] + _GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute + _SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + ] + _SetConsoleTextAttribute.restype = wintypes.BOOL + + _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition + _SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + COORD, + ] + _SetConsoleCursorPosition.restype = wintypes.BOOL + + _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA + _FillConsoleOutputCharacterA.argtypes = [ + wintypes.HANDLE, + c_char, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputCharacterA.restype = wintypes.BOOL + + _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute + _FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputAttribute.restype = wintypes.BOOL + + _SetConsoleTitleW = windll.kernel32.SetConsoleTitleW + _SetConsoleTitleW.argtypes = [ + wintypes.LPCWSTR + ] + _SetConsoleTitleW.restype = wintypes.BOOL + + def _winapi_test(handle): + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return bool(success) + + def winapi_test(): + return any(_winapi_test(h) for h in + (_GetStdHandle(STDOUT), _GetStdHandle(STDERR))) + + def GetConsoleScreenBufferInfo(stream_id=STDOUT): + handle = _GetStdHandle(stream_id) + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return csbi + + def SetConsoleTextAttribute(stream_id, attrs): + handle = _GetStdHandle(stream_id) + return _SetConsoleTextAttribute(handle, attrs) + + def SetConsoleCursorPosition(stream_id, position, adjust=True): + position = COORD(*position) + # If the position is out of range, do nothing. + if position.Y <= 0 or position.X <= 0: + return + # Adjust for Windows' SetConsoleCursorPosition: + # 1. being 0-based, while ANSI is 1-based. + # 2. expecting (x,y), while ANSI uses (y,x). + adjusted_position = COORD(position.Y - 1, position.X - 1) + if adjust: + # Adjust for viewport's scroll position + sr = GetConsoleScreenBufferInfo(STDOUT).srWindow + adjusted_position.Y += sr.Top + adjusted_position.X += sr.Left + # Resume normal processing + handle = _GetStdHandle(stream_id) + return _SetConsoleCursorPosition(handle, adjusted_position) + + def FillConsoleOutputCharacter(stream_id, char, length, start): + handle = _GetStdHandle(stream_id) + char = c_char(char.encode()) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + success = _FillConsoleOutputCharacterA( + handle, char, length, start, byref(num_written)) + return num_written.value + + def FillConsoleOutputAttribute(stream_id, attr, length, start): + ''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )''' + handle = _GetStdHandle(stream_id) + attribute = wintypes.WORD(attr) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + return _FillConsoleOutputAttribute( + handle, attribute, length, start, byref(num_written)) + + def SetConsoleTitle(title): + return _SetConsoleTitleW(title) diff --git a/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py b/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py new file mode 100644 index 00000000..0fdb4ec4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py @@ -0,0 +1,169 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from . import win32 + + +# from wincon.h +class WinColor(object): + BLACK = 0 + BLUE = 1 + GREEN = 2 + CYAN = 3 + RED = 4 + MAGENTA = 5 + YELLOW = 6 + GREY = 7 + +# from wincon.h +class WinStyle(object): + NORMAL = 0x00 # dim text, dim background + BRIGHT = 0x08 # bright text, dim background + BRIGHT_BACKGROUND = 0x80 # dim text, bright background + +class WinTerm(object): + + def __init__(self): + self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes + self.set_attrs(self._default) + self._default_fore = self._fore + self._default_back = self._back + self._default_style = self._style + # In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style. + # So that LIGHT_EX colors and BRIGHT style do not clobber each other, + # we track them separately, since LIGHT_EX is overwritten by Fore/Back + # and BRIGHT is overwritten by Style codes. + self._light = 0 + + def get_attrs(self): + return self._fore + self._back * 16 + (self._style | self._light) + + def set_attrs(self, value): + self._fore = value & 7 + self._back = (value >> 4) & 7 + self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) + + def reset_all(self, on_stderr=None): + self.set_attrs(self._default) + self.set_console(attrs=self._default) + self._light = 0 + + def fore(self, fore=None, light=False, on_stderr=False): + if fore is None: + fore = self._default_fore + self._fore = fore + # Emulate LIGHT_EX with BRIGHT Style + if light: + self._light |= WinStyle.BRIGHT + else: + self._light &= ~WinStyle.BRIGHT + self.set_console(on_stderr=on_stderr) + + def back(self, back=None, light=False, on_stderr=False): + if back is None: + back = self._default_back + self._back = back + # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style + if light: + self._light |= WinStyle.BRIGHT_BACKGROUND + else: + self._light &= ~WinStyle.BRIGHT_BACKGROUND + self.set_console(on_stderr=on_stderr) + + def style(self, style=None, on_stderr=False): + if style is None: + style = self._default_style + self._style = style + self.set_console(on_stderr=on_stderr) + + def set_console(self, attrs=None, on_stderr=False): + if attrs is None: + attrs = self.get_attrs() + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleTextAttribute(handle, attrs) + + def get_position(self, handle): + position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition + # Because Windows coordinates are 0-based, + # and win32.SetConsoleCursorPosition expects 1-based. + position.X += 1 + position.Y += 1 + return position + + def set_cursor_position(self, position=None, on_stderr=False): + if position is None: + # I'm not currently tracking the position, so there is no default. + # position = self.get_position() + return + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleCursorPosition(handle, position) + + def cursor_adjust(self, x, y, on_stderr=False): + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + position = self.get_position(handle) + adjusted_position = (position.Y + y, position.X + x) + win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) + + def erase_screen(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the screen. + # 1 should clear from the cursor to the beginning of the screen. + # 2 should clear the entire screen, and move cursor to (1,1) + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + # get the number of character cells in the current buffer + cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y + # get number of character cells before current cursor position + cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = cells_in_screen - cells_before_cursor + elif mode == 1: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_before_cursor + elif mode == 2: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_in_screen + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + if mode == 2: + # put the cursor where needed + win32.SetConsoleCursorPosition(handle, (1, 1)) + + def erase_line(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the line. + # 1 should clear from the cursor to the beginning of the line. + # 2 should clear the entire line. + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X + elif mode == 1: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwCursorPosition.X + elif mode == 2: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwSize.X + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + + def set_title(self, title): + win32.SetConsoleTitle(title) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py b/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py new file mode 100644 index 00000000..11549481 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2019 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import logging + +__version__ = '0.3.3' + +class DistlibException(Exception): + pass + +try: + from logging import NullHandler +except ImportError: # pragma: no cover + class NullHandler(logging.Handler): + def handle(self, record): pass + def emit(self, record): pass + def createLock(self): self.lock = None + +logger = logging.getLogger(__name__) +logger.addHandler(NullHandler()) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py new file mode 100644 index 00000000..f7dbf4c9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py @@ -0,0 +1,6 @@ +"""Modules copied from Python 3 standard libraries, for internal use only. + +Individual classes and functions are found in d2._backport.misc. Intended +usage is to always import things missing from 3.1 from that module: the +built-in/stdlib objects will be used if found. +""" diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py new file mode 100644 index 00000000..cfb318d3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Backports for individual classes and functions.""" + +import os +import sys + +__all__ = ['cache_from_source', 'callable', 'fsencode'] + + +try: + from imp import cache_from_source +except ImportError: + def cache_from_source(py_file, debug=__debug__): + ext = debug and 'c' or 'o' + return py_file + ext + + +try: + callable = callable +except NameError: + from collections import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode +except AttributeError: + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, str): + return filename.encode(sys.getfilesystemencoding()) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py new file mode 100644 index 00000000..10ed3625 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py @@ -0,0 +1,764 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Utility functions for copying and archiving files and directory trees. + +XXX The functions here don't copy the resource fork or other metadata on Mac. + +""" + +import os +import sys +import stat +from os.path import abspath +import fnmatch +try: + from collections.abc import Callable +except ImportError: + from collections import Callable +import errno +from . import tarfile + +try: + import bz2 + _BZ2_SUPPORTED = True +except ImportError: + _BZ2_SUPPORTED = False + +try: + from pwd import getpwnam +except ImportError: + getpwnam = None + +try: + from grp import getgrnam +except ImportError: + getgrnam = None + +__all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2", + "copytree", "move", "rmtree", "Error", "SpecialFileError", + "ExecError", "make_archive", "get_archive_formats", + "register_archive_format", "unregister_archive_format", + "get_unpack_formats", "register_unpack_format", + "unregister_unpack_format", "unpack_archive", "ignore_patterns"] + +class Error(EnvironmentError): + pass + +class SpecialFileError(EnvironmentError): + """Raised when trying to do a kind of operation (e.g. copying) which is + not supported on a special file (e.g. a named pipe)""" + +class ExecError(EnvironmentError): + """Raised when a command could not be executed""" + +class ReadError(EnvironmentError): + """Raised when an archive cannot be read""" + +class RegistryError(Exception): + """Raised when a registry operation with the archiving + and unpacking registries fails""" + + +try: + WindowsError +except NameError: + WindowsError = None + +def copyfileobj(fsrc, fdst, length=16*1024): + """copy data from file-like object fsrc to file-like object fdst""" + while 1: + buf = fsrc.read(length) + if not buf: + break + fdst.write(buf) + +def _samefile(src, dst): + # Macintosh, Unix. + if hasattr(os.path, 'samefile'): + try: + return os.path.samefile(src, dst) + except OSError: + return False + + # All other platforms: check for same pathname. + return (os.path.normcase(os.path.abspath(src)) == + os.path.normcase(os.path.abspath(dst))) + +def copyfile(src, dst): + """Copy data from src to dst""" + if _samefile(src, dst): + raise Error("`%s` and `%s` are the same file" % (src, dst)) + + for fn in [src, dst]: + try: + st = os.stat(fn) + except OSError: + # File most likely does not exist + pass + else: + # XXX What about other special files? (sockets, devices...) + if stat.S_ISFIFO(st.st_mode): + raise SpecialFileError("`%s` is a named pipe" % fn) + + with open(src, 'rb') as fsrc: + with open(dst, 'wb') as fdst: + copyfileobj(fsrc, fdst) + +def copymode(src, dst): + """Copy mode bits from src to dst""" + if hasattr(os, 'chmod'): + st = os.stat(src) + mode = stat.S_IMODE(st.st_mode) + os.chmod(dst, mode) + +def copystat(src, dst): + """Copy all stat info (mode bits, atime, mtime, flags) from src to dst""" + st = os.stat(src) + mode = stat.S_IMODE(st.st_mode) + if hasattr(os, 'utime'): + os.utime(dst, (st.st_atime, st.st_mtime)) + if hasattr(os, 'chmod'): + os.chmod(dst, mode) + if hasattr(os, 'chflags') and hasattr(st, 'st_flags'): + try: + os.chflags(dst, st.st_flags) + except OSError as why: + if (not hasattr(errno, 'EOPNOTSUPP') or + why.errno != errno.EOPNOTSUPP): + raise + +def copy(src, dst): + """Copy data and mode bits ("cp src dst"). + + The destination may be a directory. + + """ + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) + copymode(src, dst) + +def copy2(src, dst): + """Copy data and all stat info ("cp -p src dst"). + + The destination may be a directory. + + """ + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) + copystat(src, dst) + +def ignore_patterns(*patterns): + """Function that can be used as copytree() ignore parameter. + + Patterns is a sequence of glob-style patterns + that are used to exclude files""" + def _ignore_patterns(path, names): + ignored_names = [] + for pattern in patterns: + ignored_names.extend(fnmatch.filter(names, pattern)) + return set(ignored_names) + return _ignore_patterns + +def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, + ignore_dangling_symlinks=False): + """Recursively copy a directory tree. + + The destination directory must not already exist. + If exception(s) occur, an Error is raised with a list of reasons. + + If the optional symlinks flag is true, symbolic links in the + source tree result in symbolic links in the destination tree; if + it is false, the contents of the files pointed to by symbolic + links are copied. If the file pointed by the symlink doesn't + exist, an exception will be added in the list of errors raised in + an Error exception at the end of the copy process. + + You can set the optional ignore_dangling_symlinks flag to true if you + want to silence this exception. Notice that this has no effect on + platforms that don't support os.symlink. + + The optional ignore argument is a callable. If given, it + is called with the `src` parameter, which is the directory + being visited by copytree(), and `names` which is the list of + `src` contents, as returned by os.listdir(): + + callable(src, names) -> ignored_names + + Since copytree() is called recursively, the callable will be + called once for each directory that is copied. It returns a + list of names relative to the `src` directory that should + not be copied. + + The optional copy_function argument is a callable that will be used + to copy each file. It will be called with the source path and the + destination path as arguments. By default, copy2() is used, but any + function that supports the same signature (like copy()) can be used. + + """ + names = os.listdir(src) + if ignore is not None: + ignored_names = ignore(src, names) + else: + ignored_names = set() + + os.makedirs(dst) + errors = [] + for name in names: + if name in ignored_names: + continue + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) + try: + if os.path.islink(srcname): + linkto = os.readlink(srcname) + if symlinks: + os.symlink(linkto, dstname) + else: + # ignore dangling symlink if the flag is on + if not os.path.exists(linkto) and ignore_dangling_symlinks: + continue + # otherwise let the copy occurs. copy2 will raise an error + copy_function(srcname, dstname) + elif os.path.isdir(srcname): + copytree(srcname, dstname, symlinks, ignore, copy_function) + else: + # Will raise a SpecialFileError for unsupported file types + copy_function(srcname, dstname) + # catch the Error from the recursive copytree so that we can + # continue with other files + except Error as err: + errors.extend(err.args[0]) + except EnvironmentError as why: + errors.append((srcname, dstname, str(why))) + try: + copystat(src, dst) + except OSError as why: + if WindowsError is not None and isinstance(why, WindowsError): + # Copying file access times may fail on Windows + pass + else: + errors.extend((src, dst, str(why))) + if errors: + raise Error(errors) + +def rmtree(path, ignore_errors=False, onerror=None): + """Recursively delete a directory tree. + + If ignore_errors is set, errors are ignored; otherwise, if onerror + is set, it is called to handle the error with arguments (func, + path, exc_info) where func is os.listdir, os.remove, or os.rmdir; + path is the argument to that function that caused it to fail; and + exc_info is a tuple returned by sys.exc_info(). If ignore_errors + is false and onerror is None, an exception is raised. + + """ + if ignore_errors: + def onerror(*args): + pass + elif onerror is None: + def onerror(*args): + raise + try: + if os.path.islink(path): + # symlinks to directories are forbidden, see bug #1669 + raise OSError("Cannot call rmtree on a symbolic link") + except OSError: + onerror(os.path.islink, path, sys.exc_info()) + # can't continue even if onerror hook returns + return + names = [] + try: + names = os.listdir(path) + except os.error: + onerror(os.listdir, path, sys.exc_info()) + for name in names: + fullname = os.path.join(path, name) + try: + mode = os.lstat(fullname).st_mode + except os.error: + mode = 0 + if stat.S_ISDIR(mode): + rmtree(fullname, ignore_errors, onerror) + else: + try: + os.remove(fullname) + except os.error: + onerror(os.remove, fullname, sys.exc_info()) + try: + os.rmdir(path) + except os.error: + onerror(os.rmdir, path, sys.exc_info()) + + +def _basename(path): + # A basename() variant which first strips the trailing slash, if present. + # Thus we always get the last component of the path, even for directories. + return os.path.basename(path.rstrip(os.path.sep)) + +def move(src, dst): + """Recursively move a file or directory to another location. This is + similar to the Unix "mv" command. + + If the destination is a directory or a symlink to a directory, the source + is moved inside the directory. The destination path must not already + exist. + + If the destination already exists but is not a directory, it may be + overwritten depending on os.rename() semantics. + + If the destination is on our current filesystem, then rename() is used. + Otherwise, src is copied to the destination and then removed. + A lot more could be done here... A look at a mv.c shows a lot of + the issues this implementation glosses over. + + """ + real_dst = dst + if os.path.isdir(dst): + if _samefile(src, dst): + # We might be on a case insensitive filesystem, + # perform the rename anyway. + os.rename(src, dst) + return + + real_dst = os.path.join(dst, _basename(src)) + if os.path.exists(real_dst): + raise Error("Destination path '%s' already exists" % real_dst) + try: + os.rename(src, real_dst) + except OSError: + if os.path.isdir(src): + if _destinsrc(src, dst): + raise Error("Cannot move a directory '%s' into itself '%s'." % (src, dst)) + copytree(src, real_dst, symlinks=True) + rmtree(src) + else: + copy2(src, real_dst) + os.unlink(src) + +def _destinsrc(src, dst): + src = abspath(src) + dst = abspath(dst) + if not src.endswith(os.path.sep): + src += os.path.sep + if not dst.endswith(os.path.sep): + dst += os.path.sep + return dst.startswith(src) + +def _get_gid(name): + """Returns a gid, given a group name.""" + if getgrnam is None or name is None: + return None + try: + result = getgrnam(name) + except KeyError: + result = None + if result is not None: + return result[2] + return None + +def _get_uid(name): + """Returns an uid, given a user name.""" + if getpwnam is None or name is None: + return None + try: + result = getpwnam(name) + except KeyError: + result = None + if result is not None: + return result[2] + return None + +def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, + owner=None, group=None, logger=None): + """Create a (possibly compressed) tar file from all the files under + 'base_dir'. + + 'compress' must be "gzip" (the default), "bzip2", or None. + + 'owner' and 'group' can be used to define an owner and a group for the + archive that is being built. If not provided, the current owner and group + will be used. + + The output tar file will be named 'base_name' + ".tar", possibly plus + the appropriate compression extension (".gz", or ".bz2"). + + Returns the output filename. + """ + tar_compression = {'gzip': 'gz', None: ''} + compress_ext = {'gzip': '.gz'} + + if _BZ2_SUPPORTED: + tar_compression['bzip2'] = 'bz2' + compress_ext['bzip2'] = '.bz2' + + # flags for compression program, each element of list will be an argument + if compress is not None and compress not in compress_ext: + raise ValueError("bad value for 'compress', or compression format not " + "supported : {0}".format(compress)) + + archive_name = base_name + '.tar' + compress_ext.get(compress, '') + archive_dir = os.path.dirname(archive_name) + + if not os.path.exists(archive_dir): + if logger is not None: + logger.info("creating %s", archive_dir) + if not dry_run: + os.makedirs(archive_dir) + + # creating the tarball + if logger is not None: + logger.info('Creating tar archive') + + uid = _get_uid(owner) + gid = _get_gid(group) + + def _set_uid_gid(tarinfo): + if gid is not None: + tarinfo.gid = gid + tarinfo.gname = group + if uid is not None: + tarinfo.uid = uid + tarinfo.uname = owner + return tarinfo + + if not dry_run: + tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress]) + try: + tar.add(base_dir, filter=_set_uid_gid) + finally: + tar.close() + + return archive_name + +def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False): + # XXX see if we want to keep an external call here + if verbose: + zipoptions = "-r" + else: + zipoptions = "-rq" + from distutils.errors import DistutilsExecError + from distutils.spawn import spawn + try: + spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run) + except DistutilsExecError: + # XXX really should distinguish between "couldn't find + # external 'zip' command" and "zip failed". + raise ExecError("unable to create zip file '%s': " + "could neither import the 'zipfile' module nor " + "find a standalone zip utility") % zip_filename + +def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): + """Create a zip file from all the files under 'base_dir'. + + The output zip file will be named 'base_name' + ".zip". Uses either the + "zipfile" Python module (if available) or the InfoZIP "zip" utility + (if installed and found on the default search path). If neither tool is + available, raises ExecError. Returns the name of the output zip + file. + """ + zip_filename = base_name + ".zip" + archive_dir = os.path.dirname(base_name) + + if not os.path.exists(archive_dir): + if logger is not None: + logger.info("creating %s", archive_dir) + if not dry_run: + os.makedirs(archive_dir) + + # If zipfile module is not available, try spawning an external 'zip' + # command. + try: + import zipfile + except ImportError: + zipfile = None + + if zipfile is None: + _call_external_zip(base_dir, zip_filename, verbose, dry_run) + else: + if logger is not None: + logger.info("creating '%s' and adding '%s' to it", + zip_filename, base_dir) + + if not dry_run: + zip = zipfile.ZipFile(zip_filename, "w", + compression=zipfile.ZIP_DEFLATED) + + for dirpath, dirnames, filenames in os.walk(base_dir): + for name in filenames: + path = os.path.normpath(os.path.join(dirpath, name)) + if os.path.isfile(path): + zip.write(path, path) + if logger is not None: + logger.info("adding '%s'", path) + zip.close() + + return zip_filename + +_ARCHIVE_FORMATS = { + 'gztar': (_make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"), + 'bztar': (_make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"), + 'tar': (_make_tarball, [('compress', None)], "uncompressed tar file"), + 'zip': (_make_zipfile, [], "ZIP file"), + } + +if _BZ2_SUPPORTED: + _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bzip2')], + "bzip2'ed tar-file") + +def get_archive_formats(): + """Returns a list of supported formats for archiving and unarchiving. + + Each element of the returned sequence is a tuple (name, description) + """ + formats = [(name, registry[2]) for name, registry in + _ARCHIVE_FORMATS.items()] + formats.sort() + return formats + +def register_archive_format(name, function, extra_args=None, description=''): + """Registers an archive format. + + name is the name of the format. function is the callable that will be + used to create archives. If provided, extra_args is a sequence of + (name, value) tuples that will be passed as arguments to the callable. + description can be provided to describe the format, and will be returned + by the get_archive_formats() function. + """ + if extra_args is None: + extra_args = [] + if not isinstance(function, Callable): + raise TypeError('The %s object is not callable' % function) + if not isinstance(extra_args, (tuple, list)): + raise TypeError('extra_args needs to be a sequence') + for element in extra_args: + if not isinstance(element, (tuple, list)) or len(element) !=2: + raise TypeError('extra_args elements are : (arg_name, value)') + + _ARCHIVE_FORMATS[name] = (function, extra_args, description) + +def unregister_archive_format(name): + del _ARCHIVE_FORMATS[name] + +def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, + dry_run=0, owner=None, group=None, logger=None): + """Create an archive file (eg. zip or tar). + + 'base_name' is the name of the file to create, minus any format-specific + extension; 'format' is the archive format: one of "zip", "tar", "bztar" + or "gztar". + + 'root_dir' is a directory that will be the root directory of the + archive; ie. we typically chdir into 'root_dir' before creating the + archive. 'base_dir' is the directory where we start archiving from; + ie. 'base_dir' will be the common prefix of all files and + directories in the archive. 'root_dir' and 'base_dir' both default + to the current directory. Returns the name of the archive file. + + 'owner' and 'group' are used when creating a tar archive. By default, + uses the current owner and group. + """ + save_cwd = os.getcwd() + if root_dir is not None: + if logger is not None: + logger.debug("changing into '%s'", root_dir) + base_name = os.path.abspath(base_name) + if not dry_run: + os.chdir(root_dir) + + if base_dir is None: + base_dir = os.curdir + + kwargs = {'dry_run': dry_run, 'logger': logger} + + try: + format_info = _ARCHIVE_FORMATS[format] + except KeyError: + raise ValueError("unknown archive format '%s'" % format) + + func = format_info[0] + for arg, val in format_info[1]: + kwargs[arg] = val + + if format != 'zip': + kwargs['owner'] = owner + kwargs['group'] = group + + try: + filename = func(base_name, base_dir, **kwargs) + finally: + if root_dir is not None: + if logger is not None: + logger.debug("changing back to '%s'", save_cwd) + os.chdir(save_cwd) + + return filename + + +def get_unpack_formats(): + """Returns a list of supported formats for unpacking. + + Each element of the returned sequence is a tuple + (name, extensions, description) + """ + formats = [(name, info[0], info[3]) for name, info in + _UNPACK_FORMATS.items()] + formats.sort() + return formats + +def _check_unpack_options(extensions, function, extra_args): + """Checks what gets registered as an unpacker.""" + # first make sure no other unpacker is registered for this extension + existing_extensions = {} + for name, info in _UNPACK_FORMATS.items(): + for ext in info[0]: + existing_extensions[ext] = name + + for extension in extensions: + if extension in existing_extensions: + msg = '%s is already registered for "%s"' + raise RegistryError(msg % (extension, + existing_extensions[extension])) + + if not isinstance(function, Callable): + raise TypeError('The registered function must be a callable') + + +def register_unpack_format(name, extensions, function, extra_args=None, + description=''): + """Registers an unpack format. + + `name` is the name of the format. `extensions` is a list of extensions + corresponding to the format. + + `function` is the callable that will be + used to unpack archives. The callable will receive archives to unpack. + If it's unable to handle an archive, it needs to raise a ReadError + exception. + + If provided, `extra_args` is a sequence of + (name, value) tuples that will be passed as arguments to the callable. + description can be provided to describe the format, and will be returned + by the get_unpack_formats() function. + """ + if extra_args is None: + extra_args = [] + _check_unpack_options(extensions, function, extra_args) + _UNPACK_FORMATS[name] = extensions, function, extra_args, description + +def unregister_unpack_format(name): + """Removes the pack format from the registry.""" + del _UNPACK_FORMATS[name] + +def _ensure_directory(path): + """Ensure that the parent directory of `path` exists""" + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + +def _unpack_zipfile(filename, extract_dir): + """Unpack zip `filename` to `extract_dir` + """ + try: + import zipfile + except ImportError: + raise ReadError('zlib not supported, cannot unpack this archive.') + + if not zipfile.is_zipfile(filename): + raise ReadError("%s is not a zip file" % filename) + + zip = zipfile.ZipFile(filename) + try: + for info in zip.infolist(): + name = info.filename + + # don't extract absolute paths or ones with .. in them + if name.startswith('/') or '..' in name: + continue + + target = os.path.join(extract_dir, *name.split('/')) + if not target: + continue + + _ensure_directory(target) + if not name.endswith('/'): + # file + data = zip.read(info.filename) + f = open(target, 'wb') + try: + f.write(data) + finally: + f.close() + del data + finally: + zip.close() + +def _unpack_tarfile(filename, extract_dir): + """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir` + """ + try: + tarobj = tarfile.open(filename) + except tarfile.TarError: + raise ReadError( + "%s is not a compressed or uncompressed tar file" % filename) + try: + tarobj.extractall(extract_dir) + finally: + tarobj.close() + +_UNPACK_FORMATS = { + 'gztar': (['.tar.gz', '.tgz'], _unpack_tarfile, [], "gzip'ed tar-file"), + 'tar': (['.tar'], _unpack_tarfile, [], "uncompressed tar file"), + 'zip': (['.zip'], _unpack_zipfile, [], "ZIP file") + } + +if _BZ2_SUPPORTED: + _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], + "bzip2'ed tar-file") + +def _find_unpack_format(filename): + for name, info in _UNPACK_FORMATS.items(): + for extension in info[0]: + if filename.endswith(extension): + return name + return None + +def unpack_archive(filename, extract_dir=None, format=None): + """Unpack an archive. + + `filename` is the name of the archive. + + `extract_dir` is the name of the target directory, where the archive + is unpacked. If not provided, the current working directory is used. + + `format` is the archive format: one of "zip", "tar", or "gztar". Or any + other registered format. If not provided, unpack_archive will use the + filename extension and see if an unpacker was registered for that + extension. + + In case none is found, a ValueError is raised. + """ + if extract_dir is None: + extract_dir = os.getcwd() + + if format is not None: + try: + format_info = _UNPACK_FORMATS[format] + except KeyError: + raise ValueError("Unknown unpack format '{0}'".format(format)) + + func = format_info[1] + func(filename, extract_dir, **dict(format_info[2])) + else: + # we need to look at the registered unpackers supported extensions + format = _find_unpack_format(filename) + if format is None: + raise ReadError("Unknown archive format '{0}'".format(filename)) + + func = _UNPACK_FORMATS[format][1] + kwargs = dict(_UNPACK_FORMATS[format][2]) + func(filename, extract_dir, **kwargs) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg new file mode 100644 index 00000000..1746bd01 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg @@ -0,0 +1,84 @@ +[posix_prefix] +# Configuration directories. Some of these come straight out of the +# configure script. They are for implementing the other variables, not to +# be used directly in [resource_locations]. +confdir = /etc +datadir = /usr/share +libdir = /usr/lib +statedir = /var +# User resource directory +local = ~/.local/{distribution.name} + +stdlib = {base}/lib/python{py_version_short} +platstdlib = {platbase}/lib/python{py_version_short} +purelib = {base}/lib/python{py_version_short}/site-packages +platlib = {platbase}/lib/python{py_version_short}/site-packages +include = {base}/include/python{py_version_short}{abiflags} +platinclude = {platbase}/include/python{py_version_short}{abiflags} +data = {base} + +[posix_home] +stdlib = {base}/lib/python +platstdlib = {base}/lib/python +purelib = {base}/lib/python +platlib = {base}/lib/python +include = {base}/include/python +platinclude = {base}/include/python +scripts = {base}/bin +data = {base} + +[nt] +stdlib = {base}/Lib +platstdlib = {base}/Lib +purelib = {base}/Lib/site-packages +platlib = {base}/Lib/site-packages +include = {base}/Include +platinclude = {base}/Include +scripts = {base}/Scripts +data = {base} + +[os2] +stdlib = {base}/Lib +platstdlib = {base}/Lib +purelib = {base}/Lib/site-packages +platlib = {base}/Lib/site-packages +include = {base}/Include +platinclude = {base}/Include +scripts = {base}/Scripts +data = {base} + +[os2_home] +stdlib = {userbase}/lib/python{py_version_short} +platstdlib = {userbase}/lib/python{py_version_short} +purelib = {userbase}/lib/python{py_version_short}/site-packages +platlib = {userbase}/lib/python{py_version_short}/site-packages +include = {userbase}/include/python{py_version_short} +scripts = {userbase}/bin +data = {userbase} + +[nt_user] +stdlib = {userbase}/Python{py_version_nodot} +platstdlib = {userbase}/Python{py_version_nodot} +purelib = {userbase}/Python{py_version_nodot}/site-packages +platlib = {userbase}/Python{py_version_nodot}/site-packages +include = {userbase}/Python{py_version_nodot}/Include +scripts = {userbase}/Scripts +data = {userbase} + +[posix_user] +stdlib = {userbase}/lib/python{py_version_short} +platstdlib = {userbase}/lib/python{py_version_short} +purelib = {userbase}/lib/python{py_version_short}/site-packages +platlib = {userbase}/lib/python{py_version_short}/site-packages +include = {userbase}/include/python{py_version_short} +scripts = {userbase}/bin +data = {userbase} + +[osx_framework_user] +stdlib = {userbase}/lib/python +platstdlib = {userbase}/lib/python +purelib = {userbase}/lib/python/site-packages +platlib = {userbase}/lib/python/site-packages +include = {userbase}/include +scripts = {userbase}/bin +data = {userbase} diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py new file mode 100644 index 00000000..b470a373 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py @@ -0,0 +1,786 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Access to Python's configuration information.""" + +import codecs +import os +import re +import sys +from os.path import pardir, realpath +try: + import configparser +except ImportError: + import ConfigParser as configparser + + +__all__ = [ + 'get_config_h_filename', + 'get_config_var', + 'get_config_vars', + 'get_makefile_filename', + 'get_path', + 'get_path_names', + 'get_paths', + 'get_platform', + 'get_python_version', + 'get_scheme_names', + 'parse_config_h', +] + + +def _safe_realpath(path): + try: + return realpath(path) + except OSError: + return path + + +if sys.executable: + _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable)) +else: + # sys.executable can be empty if argv[0] has been changed and Python is + # unable to retrieve the real program name + _PROJECT_BASE = _safe_realpath(os.getcwd()) + +if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) +# PC/VS7.1 +if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) +# PC/AMD64 +if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) + + +def is_python_build(): + for fn in ("Setup.dist", "Setup.local"): + if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)): + return True + return False + +_PYTHON_BUILD = is_python_build() + +_cfg_read = False + +def _ensure_cfg_read(): + global _cfg_read + if not _cfg_read: + from ..resources import finder + backport_package = __name__.rsplit('.', 1)[0] + _finder = finder(backport_package) + _cfgfile = _finder.find('sysconfig.cfg') + assert _cfgfile, 'sysconfig.cfg exists' + with _cfgfile.as_stream() as s: + _SCHEMES.readfp(s) + if _PYTHON_BUILD: + for scheme in ('posix_prefix', 'posix_home'): + _SCHEMES.set(scheme, 'include', '{srcdir}/Include') + _SCHEMES.set(scheme, 'platinclude', '{projectbase}/.') + + _cfg_read = True + + +_SCHEMES = configparser.RawConfigParser() +_VAR_REPL = re.compile(r'\{([^{]*?)\}') + +def _expand_globals(config): + _ensure_cfg_read() + if config.has_section('globals'): + globals = config.items('globals') + else: + globals = tuple() + + sections = config.sections() + for section in sections: + if section == 'globals': + continue + for option, value in globals: + if config.has_option(section, option): + continue + config.set(section, option, value) + config.remove_section('globals') + + # now expanding local variables defined in the cfg file + # + for section in config.sections(): + variables = dict(config.items(section)) + + def _replacer(matchobj): + name = matchobj.group(1) + if name in variables: + return variables[name] + return matchobj.group(0) + + for option, value in config.items(section): + config.set(section, option, _VAR_REPL.sub(_replacer, value)) + +#_expand_globals(_SCHEMES) + +_PY_VERSION = '%s.%s.%s' % sys.version_info[:3] +_PY_VERSION_SHORT = '%s.%s' % sys.version_info[:2] +_PY_VERSION_SHORT_NO_DOT = '%s%s' % sys.version_info[:2] +_PREFIX = os.path.normpath(sys.prefix) +_EXEC_PREFIX = os.path.normpath(sys.exec_prefix) +_CONFIG_VARS = None +_USER_BASE = None + + +def _subst_vars(path, local_vars): + """In the string `path`, replace tokens like {some.thing} with the + corresponding value from the map `local_vars`. + + If there is no corresponding value, leave the token unchanged. + """ + def _replacer(matchobj): + name = matchobj.group(1) + if name in local_vars: + return local_vars[name] + elif name in os.environ: + return os.environ[name] + return matchobj.group(0) + return _VAR_REPL.sub(_replacer, path) + + +def _extend_dict(target_dict, other_dict): + target_keys = target_dict.keys() + for key, value in other_dict.items(): + if key in target_keys: + continue + target_dict[key] = value + + +def _expand_vars(scheme, vars): + res = {} + if vars is None: + vars = {} + _extend_dict(vars, get_config_vars()) + + for key, value in _SCHEMES.items(scheme): + if os.name in ('posix', 'nt'): + value = os.path.expanduser(value) + res[key] = os.path.normpath(_subst_vars(value, vars)) + return res + + +def format_value(value, vars): + def _replacer(matchobj): + name = matchobj.group(1) + if name in vars: + return vars[name] + return matchobj.group(0) + return _VAR_REPL.sub(_replacer, value) + + +def _get_default_scheme(): + if os.name == 'posix': + # the default scheme for posix is posix_prefix + return 'posix_prefix' + return os.name + + +def _getuserbase(): + env_base = os.environ.get("PYTHONUSERBASE", None) + + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + + # what about 'os2emx', 'riscos' ? + if os.name == "nt": + base = os.environ.get("APPDATA") or "~" + if env_base: + return env_base + else: + return joinuser(base, "Python") + + if sys.platform == "darwin": + framework = get_config_var("PYTHONFRAMEWORK") + if framework: + if env_base: + return env_base + else: + return joinuser("~", "Library", framework, "%d.%d" % + sys.version_info[:2]) + + if env_base: + return env_base + else: + return joinuser("~", ".local") + + +def _parse_makefile(filename, vars=None): + """Parse a Makefile-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + # Regexes needed for parsing Makefile (and similar syntaxes, + # like old-style Setup files). + _variable_rx = re.compile(r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") + _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") + _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") + + if vars is None: + vars = {} + done = {} + notdone = {} + + with codecs.open(filename, encoding='utf-8', errors="surrogateescape") as f: + lines = f.readlines() + + for line in lines: + if line.startswith('#') or line.strip() == '': + continue + m = _variable_rx.match(line) + if m: + n, v = m.group(1, 2) + v = v.strip() + # `$$' is a literal `$' in make + tmpv = v.replace('$$', '') + + if "$" in tmpv: + notdone[n] = v + else: + try: + v = int(v) + except ValueError: + # insert literal `$' + done[n] = v.replace('$$', '$') + else: + done[n] = v + + # do variable interpolation here + variables = list(notdone.keys()) + + # Variables with a 'PY_' prefix in the makefile. These need to + # be made available without that prefix through sysconfig. + # Special care is needed to ensure that variable expansion works, even + # if the expansion uses the name without a prefix. + renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') + + while len(variables) > 0: + for name in tuple(variables): + value = notdone[name] + m = _findvar1_rx.search(value) or _findvar2_rx.search(value) + if m is not None: + n = m.group(1) + found = True + if n in done: + item = str(done[n]) + elif n in notdone: + # get it on a subsequent round + found = False + elif n in os.environ: + # do it like make: fall back to environment + item = os.environ[n] + + elif n in renamed_variables: + if (name.startswith('PY_') and + name[3:] in renamed_variables): + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + n]) + + else: + done[n] = item = "" + + if found: + after = value[m.end():] + value = value[:m.start()] + item + after + if "$" in after: + notdone[name] = value + else: + try: + value = int(value) + except ValueError: + done[name] = value.strip() + else: + done[name] = value + variables.remove(name) + + if (name.startswith('PY_') and + name[3:] in renamed_variables): + + name = name[3:] + if name not in done: + done[name] = value + + else: + # bogus variable reference (e.g. "prefix=$/opt/python"); + # just drop it since we can't deal + done[name] = value + variables.remove(name) + + # strip spurious spaces + for k, v in done.items(): + if isinstance(v, str): + done[k] = v.strip() + + # save the results in the global dictionary + vars.update(done) + return vars + + +def get_makefile_filename(): + """Return the path of the Makefile.""" + if _PYTHON_BUILD: + return os.path.join(_PROJECT_BASE, "Makefile") + if hasattr(sys, 'abiflags'): + config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags) + else: + config_dir_name = 'config' + return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile') + + +def _init_posix(vars): + """Initialize the module as appropriate for POSIX systems.""" + # load the installed Makefile: + makefile = get_makefile_filename() + try: + _parse_makefile(makefile, vars) + except IOError as e: + msg = "invalid Python installation: unable to open %s" % makefile + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + # load the installed pyconfig.h: + config_h = get_config_h_filename() + try: + with open(config_h) as f: + parse_config_h(f, vars) + except IOError as e: + msg = "invalid Python installation: unable to open %s" % config_h + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + # On AIX, there are wrong paths to the linker scripts in the Makefile + # -- these paths are relative to the Python source, but when installed + # the scripts are in another directory. + if _PYTHON_BUILD: + vars['LDSHARED'] = vars['BLDSHARED'] + + +def _init_non_posix(vars): + """Initialize the module as appropriate for NT""" + # set basic install directories + vars['LIBDEST'] = get_path('stdlib') + vars['BINLIBDEST'] = get_path('platstdlib') + vars['INCLUDEPY'] = get_path('include') + vars['SO'] = '.pyd' + vars['EXE'] = '.exe' + vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT + vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) + +# +# public APIs +# + + +def parse_config_h(fp, vars=None): + """Parse a config.h-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + if vars is None: + vars = {} + define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") + undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") + + while True: + line = fp.readline() + if not line: + break + m = define_rx.match(line) + if m: + n, v = m.group(1, 2) + try: + v = int(v) + except ValueError: + pass + vars[n] = v + else: + m = undef_rx.match(line) + if m: + vars[m.group(1)] = 0 + return vars + + +def get_config_h_filename(): + """Return the path of pyconfig.h.""" + if _PYTHON_BUILD: + if os.name == "nt": + inc_dir = os.path.join(_PROJECT_BASE, "PC") + else: + inc_dir = _PROJECT_BASE + else: + inc_dir = get_path('platinclude') + return os.path.join(inc_dir, 'pyconfig.h') + + +def get_scheme_names(): + """Return a tuple containing the schemes names.""" + return tuple(sorted(_SCHEMES.sections())) + + +def get_path_names(): + """Return a tuple containing the paths names.""" + # xxx see if we want a static list + return _SCHEMES.options('posix_prefix') + + +def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): + """Return a mapping containing an install scheme. + + ``scheme`` is the install scheme name. If not provided, it will + return the default scheme for the current platform. + """ + _ensure_cfg_read() + if expand: + return _expand_vars(scheme, vars) + else: + return dict(_SCHEMES.items(scheme)) + + +def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True): + """Return a path corresponding to the scheme. + + ``scheme`` is the install scheme name. + """ + return get_paths(scheme, vars, expand)[name] + + +def get_config_vars(*args): + """With no arguments, return a dictionary of all configuration + variables relevant for the current platform. + + On Unix, this means every variable defined in Python's installed Makefile; + On Windows and Mac OS it's a much smaller set. + + With arguments, return a list of values that result from looking up + each argument in the configuration variable dictionary. + """ + global _CONFIG_VARS + if _CONFIG_VARS is None: + _CONFIG_VARS = {} + # Normalized versions of prefix and exec_prefix are handy to have; + # in fact, these are the standard versions used most places in the + # distutils2 module. + _CONFIG_VARS['prefix'] = _PREFIX + _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX + _CONFIG_VARS['py_version'] = _PY_VERSION + _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT + _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2] + _CONFIG_VARS['base'] = _PREFIX + _CONFIG_VARS['platbase'] = _EXEC_PREFIX + _CONFIG_VARS['projectbase'] = _PROJECT_BASE + try: + _CONFIG_VARS['abiflags'] = sys.abiflags + except AttributeError: + # sys.abiflags may not be defined on all platforms. + _CONFIG_VARS['abiflags'] = '' + + if os.name in ('nt', 'os2'): + _init_non_posix(_CONFIG_VARS) + if os.name == 'posix': + _init_posix(_CONFIG_VARS) + # Setting 'userbase' is done below the call to the + # init function to enable using 'get_config_var' in + # the init-function. + if sys.version >= '2.6': + _CONFIG_VARS['userbase'] = _getuserbase() + + if 'srcdir' not in _CONFIG_VARS: + _CONFIG_VARS['srcdir'] = _PROJECT_BASE + else: + _CONFIG_VARS['srcdir'] = _safe_realpath(_CONFIG_VARS['srcdir']) + + # Convert srcdir into an absolute path if it appears necessary. + # Normally it is relative to the build directory. However, during + # testing, for example, we might be running a non-installed python + # from a different directory. + if _PYTHON_BUILD and os.name == "posix": + base = _PROJECT_BASE + try: + cwd = os.getcwd() + except OSError: + cwd = None + if (not os.path.isabs(_CONFIG_VARS['srcdir']) and + base != cwd): + # srcdir is relative and we are not in the same directory + # as the executable. Assume executable is in the build + # directory and make srcdir absolute. + srcdir = os.path.join(base, _CONFIG_VARS['srcdir']) + _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir) + + if sys.platform == 'darwin': + kernel_version = os.uname()[2] # Kernel version (8.4.3) + major_version = int(kernel_version.split('.')[0]) + + if major_version < 8: + # On Mac OS X before 10.4, check if -arch and -isysroot + # are in CFLAGS or LDFLAGS and remove them if they are. + # This is needed when building extensions on a 10.3 system + # using a universal build of python. + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + flags = _CONFIG_VARS[key] + flags = re.sub(r'-arch\s+\w+\s', ' ', flags) + flags = re.sub('-isysroot [^ \t]*', ' ', flags) + _CONFIG_VARS[key] = flags + else: + # Allow the user to override the architecture flags using + # an environment variable. + # NOTE: This name was introduced by Apple in OSX 10.5 and + # is used by several scripting languages distributed with + # that OS release. + if 'ARCHFLAGS' in os.environ: + arch = os.environ['ARCHFLAGS'] + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub(r'-arch\s+\w+\s', ' ', flags) + flags = flags + ' ' + arch + _CONFIG_VARS[key] = flags + + # If we're on OSX 10.5 or later and the user tries to + # compiles an extension using an SDK that is not present + # on the current machine it is better to not use an SDK + # than to fail. + # + # The major usecase for this is users using a Python.org + # binary installer on OSX 10.6: that installer uses + # the 10.4u SDK, but that SDK is not installed by default + # when you install Xcode. + # + CFLAGS = _CONFIG_VARS.get('CFLAGS', '') + m = re.search(r'-isysroot\s+(\S+)', CFLAGS) + if m is not None: + sdk = m.group(1) + if not os.path.exists(sdk): + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub(r'-isysroot\s+\S+(\s|$)', ' ', flags) + _CONFIG_VARS[key] = flags + + if args: + vals = [] + for name in args: + vals.append(_CONFIG_VARS.get(name)) + return vals + else: + return _CONFIG_VARS + + +def get_config_var(name): + """Return the value of a single variable using the dictionary returned by + 'get_config_vars()'. + + Equivalent to get_config_vars().get(name) + """ + return get_config_vars().get(name) + + +def get_platform(): + """Return a string that identifies the current platform. + + This is used mainly to distinguish platform-specific build directories and + platform-specific built distributions. Typically includes the OS name + and version and the architecture (as supplied by 'os.uname()'), + although the exact information included depends on the OS; eg. for IRIX + the architecture isn't particularly important (IRIX only runs on SGI + hardware), but for Linux the kernel version isn't particularly + important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + irix-5.3 + irix64-6.2 + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win-ia64 (64bit Windows on Itanium) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + """ + if os.name == 'nt': + # sniff sys.version for architecture. + prefix = " bit (" + i = sys.version.find(prefix) + if i == -1: + return sys.platform + j = sys.version.find(")", i) + look = sys.version[i+len(prefix):j].lower() + if look == 'amd64': + return 'win-amd64' + if look == 'itanium': + return 'win-ia64' + return sys.platform + + if os.name != "posix" or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + osname, host, release, version, machine = os.uname() + + # Convert the OS name to lowercase, remove '/' characters + # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_') + machine = machine.replace('/', '-') + + if osname[:5] == "linux": + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + elif osname[:5] == "sunos": + if release[0] >= "5": # SunOS 5 == Solaris 2 + osname = "solaris" + release = "%d.%s" % (int(release[0]) - 3, release[2:]) + # fall through to standard osname-release-machine representation + elif osname[:4] == "irix": # could be "irix64"! + return "%s-%s" % (osname, release) + elif osname[:3] == "aix": + return "%s-%s.%s" % (osname, version, release) + elif osname[:6] == "cygwin": + osname = "cygwin" + rel_re = re.compile(r'[\d.]+') + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == "darwin": + # + # For our purposes, we'll assume that the system version from + # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set + # to. This makes the compatibility story a bit more sane because the + # machine is going to compile and link as if it were + # MACOSX_DEPLOYMENT_TARGET. + cfgvars = get_config_vars() + macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') + + if True: + # Always calculate the release of the running machine, + # needed to determine if we can build fat binaries or not. + + macrelease = macver + # Get the system version. Reading this plist is a documented + # way to get the system version (see the documentation for + # the Gestalt Manager) + try: + f = open('/System/Library/CoreServices/SystemVersion.plist') + except IOError: + # We're on a plain darwin box, fall back to the default + # behaviour. + pass + else: + try: + m = re.search(r'ProductUserVisibleVersion\s*' + r'(.*?)', f.read()) + finally: + f.close() + if m is not None: + macrelease = '.'.join(m.group(1).split('.')[:2]) + # else: fall back to the default behaviour + + if not macver: + macver = macrelease + + if macver: + release = macver + osname = "macosx" + + if ((macrelease + '.') >= '10.4.' and + '-arch' in get_config_vars().get('CFLAGS', '').strip()): + # The universal build will build fat binaries, but not on + # systems before 10.4 + # + # Try to detect 4-way universal builds, those have machine-type + # 'universal' instead of 'fat'. + + machine = 'fat' + cflags = get_config_vars().get('CFLAGS') + + archs = re.findall(r'-arch\s+(\S+)', cflags) + archs = tuple(sorted(set(archs))) + + if len(archs) == 1: + machine = archs[0] + elif archs == ('i386', 'ppc'): + machine = 'fat' + elif archs == ('i386', 'x86_64'): + machine = 'intel' + elif archs == ('i386', 'ppc', 'x86_64'): + machine = 'fat3' + elif archs == ('ppc64', 'x86_64'): + machine = 'fat64' + elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): + machine = 'universal' + else: + raise ValueError( + "Don't know machine value for archs=%r" % (archs,)) + + elif machine == 'i386': + # On OSX the machine type returned by uname is always the + # 32-bit variant, even if the executable architecture is + # the 64-bit variant + if sys.maxsize >= 2**32: + machine = 'x86_64' + + elif machine in ('PowerPC', 'Power_Macintosh'): + # Pick a sane name for the PPC architecture. + # See 'i386' case + if sys.maxsize >= 2**32: + machine = 'ppc64' + else: + machine = 'ppc' + + return "%s-%s-%s" % (osname, release, machine) + + +def get_python_version(): + return _PY_VERSION_SHORT + + +def _print_dict(title, data): + for index, (key, value) in enumerate(sorted(data.items())): + if index == 0: + print('%s: ' % (title)) + print('\t%s = "%s"' % (key, value)) + + +def _main(): + """Display all information sysconfig detains.""" + print('Platform: "%s"' % get_platform()) + print('Python version: "%s"' % get_python_version()) + print('Current installation scheme: "%s"' % _get_default_scheme()) + print() + _print_dict('Paths', get_paths()) + print() + _print_dict('Variables', get_config_vars()) + + +if __name__ == '__main__': + _main() diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py new file mode 100644 index 00000000..d66d8566 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py @@ -0,0 +1,2607 @@ +#------------------------------------------------------------------- +# tarfile.py +#------------------------------------------------------------------- +# Copyright (C) 2002 Lars Gustaebel +# All rights reserved. +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +from __future__ import print_function + +"""Read from and write to tar format archives. +""" + +__version__ = "$Revision$" + +version = "0.9.0" +__author__ = "Lars Gust\u00e4bel (lars@gustaebel.de)" +__date__ = "$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $" +__cvsid__ = "$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $" +__credits__ = "Gustavo Niemeyer, Niels Gust\u00e4bel, Richard Townsend." + +#--------- +# Imports +#--------- +import sys +import os +import stat +import errno +import time +import struct +import copy +import re + +try: + import grp, pwd +except ImportError: + grp = pwd = None + +# os.symlink on Windows prior to 6.0 raises NotImplementedError +symlink_exception = (AttributeError, NotImplementedError) +try: + # WindowsError (1314) will be raised if the caller does not hold the + # SeCreateSymbolicLinkPrivilege privilege + symlink_exception += (WindowsError,) +except NameError: + pass + +# from tarfile import * +__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"] + +if sys.version_info[0] < 3: + import __builtin__ as builtins +else: + import builtins + +_open = builtins.open # Since 'open' is TarFile.open + +#--------------------------------------------------------- +# tar constants +#--------------------------------------------------------- +NUL = b"\0" # the null character +BLOCKSIZE = 512 # length of processing blocks +RECORDSIZE = BLOCKSIZE * 20 # length of records +GNU_MAGIC = b"ustar \0" # magic gnu tar string +POSIX_MAGIC = b"ustar\x0000" # magic posix tar string + +LENGTH_NAME = 100 # maximum length of a filename +LENGTH_LINK = 100 # maximum length of a linkname +LENGTH_PREFIX = 155 # maximum length of the prefix field + +REGTYPE = b"0" # regular file +AREGTYPE = b"\0" # regular file +LNKTYPE = b"1" # link (inside tarfile) +SYMTYPE = b"2" # symbolic link +CHRTYPE = b"3" # character special device +BLKTYPE = b"4" # block special device +DIRTYPE = b"5" # directory +FIFOTYPE = b"6" # fifo special device +CONTTYPE = b"7" # contiguous file + +GNUTYPE_LONGNAME = b"L" # GNU tar longname +GNUTYPE_LONGLINK = b"K" # GNU tar longlink +GNUTYPE_SPARSE = b"S" # GNU tar sparse file + +XHDTYPE = b"x" # POSIX.1-2001 extended header +XGLTYPE = b"g" # POSIX.1-2001 global header +SOLARIS_XHDTYPE = b"X" # Solaris extended header + +USTAR_FORMAT = 0 # POSIX.1-1988 (ustar) format +GNU_FORMAT = 1 # GNU tar format +PAX_FORMAT = 2 # POSIX.1-2001 (pax) format +DEFAULT_FORMAT = GNU_FORMAT + +#--------------------------------------------------------- +# tarfile constants +#--------------------------------------------------------- +# File types that tarfile supports: +SUPPORTED_TYPES = (REGTYPE, AREGTYPE, LNKTYPE, + SYMTYPE, DIRTYPE, FIFOTYPE, + CONTTYPE, CHRTYPE, BLKTYPE, + GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, + GNUTYPE_SPARSE) + +# File types that will be treated as a regular file. +REGULAR_TYPES = (REGTYPE, AREGTYPE, + CONTTYPE, GNUTYPE_SPARSE) + +# File types that are part of the GNU tar format. +GNU_TYPES = (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, + GNUTYPE_SPARSE) + +# Fields from a pax header that override a TarInfo attribute. +PAX_FIELDS = ("path", "linkpath", "size", "mtime", + "uid", "gid", "uname", "gname") + +# Fields from a pax header that are affected by hdrcharset. +PAX_NAME_FIELDS = set(("path", "linkpath", "uname", "gname")) + +# Fields in a pax header that are numbers, all other fields +# are treated as strings. +PAX_NUMBER_FIELDS = { + "atime": float, + "ctime": float, + "mtime": float, + "uid": int, + "gid": int, + "size": int +} + +#--------------------------------------------------------- +# Bits used in the mode field, values in octal. +#--------------------------------------------------------- +S_IFLNK = 0o120000 # symbolic link +S_IFREG = 0o100000 # regular file +S_IFBLK = 0o060000 # block device +S_IFDIR = 0o040000 # directory +S_IFCHR = 0o020000 # character device +S_IFIFO = 0o010000 # fifo + +TSUID = 0o4000 # set UID on execution +TSGID = 0o2000 # set GID on execution +TSVTX = 0o1000 # reserved + +TUREAD = 0o400 # read by owner +TUWRITE = 0o200 # write by owner +TUEXEC = 0o100 # execute/search by owner +TGREAD = 0o040 # read by group +TGWRITE = 0o020 # write by group +TGEXEC = 0o010 # execute/search by group +TOREAD = 0o004 # read by other +TOWRITE = 0o002 # write by other +TOEXEC = 0o001 # execute/search by other + +#--------------------------------------------------------- +# initialization +#--------------------------------------------------------- +if os.name in ("nt", "ce"): + ENCODING = "utf-8" +else: + ENCODING = sys.getfilesystemencoding() + +#--------------------------------------------------------- +# Some useful functions +#--------------------------------------------------------- + +def stn(s, length, encoding, errors): + """Convert a string to a null-terminated bytes object. + """ + s = s.encode(encoding, errors) + return s[:length] + (length - len(s)) * NUL + +def nts(s, encoding, errors): + """Convert a null-terminated bytes object to a string. + """ + p = s.find(b"\0") + if p != -1: + s = s[:p] + return s.decode(encoding, errors) + +def nti(s): + """Convert a number field to a python number. + """ + # There are two possible encodings for a number field, see + # itn() below. + if s[0] != chr(0o200): + try: + n = int(nts(s, "ascii", "strict") or "0", 8) + except ValueError: + raise InvalidHeaderError("invalid header") + else: + n = 0 + for i in range(len(s) - 1): + n <<= 8 + n += ord(s[i + 1]) + return n + +def itn(n, digits=8, format=DEFAULT_FORMAT): + """Convert a python number to a number field. + """ + # POSIX 1003.1-1988 requires numbers to be encoded as a string of + # octal digits followed by a null-byte, this allows values up to + # (8**(digits-1))-1. GNU tar allows storing numbers greater than + # that if necessary. A leading 0o200 byte indicates this particular + # encoding, the following digits-1 bytes are a big-endian + # representation. This allows values up to (256**(digits-1))-1. + if 0 <= n < 8 ** (digits - 1): + s = ("%0*o" % (digits - 1, n)).encode("ascii") + NUL + else: + if format != GNU_FORMAT or n >= 256 ** (digits - 1): + raise ValueError("overflow in number field") + + if n < 0: + # XXX We mimic GNU tar's behaviour with negative numbers, + # this could raise OverflowError. + n = struct.unpack("L", struct.pack("l", n))[0] + + s = bytearray() + for i in range(digits - 1): + s.insert(0, n & 0o377) + n >>= 8 + s.insert(0, 0o200) + return s + +def calc_chksums(buf): + """Calculate the checksum for a member's header by summing up all + characters except for the chksum field which is treated as if + it was filled with spaces. According to the GNU tar sources, + some tars (Sun and NeXT) calculate chksum with signed char, + which will be different if there are chars in the buffer with + the high bit set. So we calculate two checksums, unsigned and + signed. + """ + unsigned_chksum = 256 + sum(struct.unpack("148B", buf[:148]) + struct.unpack("356B", buf[156:512])) + signed_chksum = 256 + sum(struct.unpack("148b", buf[:148]) + struct.unpack("356b", buf[156:512])) + return unsigned_chksum, signed_chksum + +def copyfileobj(src, dst, length=None): + """Copy length bytes from fileobj src to fileobj dst. + If length is None, copy the entire content. + """ + if length == 0: + return + if length is None: + while True: + buf = src.read(16*1024) + if not buf: + break + dst.write(buf) + return + + BUFSIZE = 16 * 1024 + blocks, remainder = divmod(length, BUFSIZE) + for b in range(blocks): + buf = src.read(BUFSIZE) + if len(buf) < BUFSIZE: + raise IOError("end of file reached") + dst.write(buf) + + if remainder != 0: + buf = src.read(remainder) + if len(buf) < remainder: + raise IOError("end of file reached") + dst.write(buf) + return + +filemode_table = ( + ((S_IFLNK, "l"), + (S_IFREG, "-"), + (S_IFBLK, "b"), + (S_IFDIR, "d"), + (S_IFCHR, "c"), + (S_IFIFO, "p")), + + ((TUREAD, "r"),), + ((TUWRITE, "w"),), + ((TUEXEC|TSUID, "s"), + (TSUID, "S"), + (TUEXEC, "x")), + + ((TGREAD, "r"),), + ((TGWRITE, "w"),), + ((TGEXEC|TSGID, "s"), + (TSGID, "S"), + (TGEXEC, "x")), + + ((TOREAD, "r"),), + ((TOWRITE, "w"),), + ((TOEXEC|TSVTX, "t"), + (TSVTX, "T"), + (TOEXEC, "x")) +) + +def filemode(mode): + """Convert a file's mode to a string of the form + -rwxrwxrwx. + Used by TarFile.list() + """ + perm = [] + for table in filemode_table: + for bit, char in table: + if mode & bit == bit: + perm.append(char) + break + else: + perm.append("-") + return "".join(perm) + +class TarError(Exception): + """Base exception.""" + pass +class ExtractError(TarError): + """General exception for extract errors.""" + pass +class ReadError(TarError): + """Exception for unreadable tar archives.""" + pass +class CompressionError(TarError): + """Exception for unavailable compression methods.""" + pass +class StreamError(TarError): + """Exception for unsupported operations on stream-like TarFiles.""" + pass +class HeaderError(TarError): + """Base exception for header errors.""" + pass +class EmptyHeaderError(HeaderError): + """Exception for empty headers.""" + pass +class TruncatedHeaderError(HeaderError): + """Exception for truncated headers.""" + pass +class EOFHeaderError(HeaderError): + """Exception for end of file headers.""" + pass +class InvalidHeaderError(HeaderError): + """Exception for invalid headers.""" + pass +class SubsequentHeaderError(HeaderError): + """Exception for missing and invalid extended headers.""" + pass + +#--------------------------- +# internal stream interface +#--------------------------- +class _LowLevelFile(object): + """Low-level file object. Supports reading and writing. + It is used instead of a regular file object for streaming + access. + """ + + def __init__(self, name, mode): + mode = { + "r": os.O_RDONLY, + "w": os.O_WRONLY | os.O_CREAT | os.O_TRUNC, + }[mode] + if hasattr(os, "O_BINARY"): + mode |= os.O_BINARY + self.fd = os.open(name, mode, 0o666) + + def close(self): + os.close(self.fd) + + def read(self, size): + return os.read(self.fd, size) + + def write(self, s): + os.write(self.fd, s) + +class _Stream(object): + """Class that serves as an adapter between TarFile and + a stream-like object. The stream-like object only + needs to have a read() or write() method and is accessed + blockwise. Use of gzip or bzip2 compression is possible. + A stream-like object could be for example: sys.stdin, + sys.stdout, a socket, a tape device etc. + + _Stream is intended to be used only internally. + """ + + def __init__(self, name, mode, comptype, fileobj, bufsize): + """Construct a _Stream object. + """ + self._extfileobj = True + if fileobj is None: + fileobj = _LowLevelFile(name, mode) + self._extfileobj = False + + if comptype == '*': + # Enable transparent compression detection for the + # stream interface + fileobj = _StreamProxy(fileobj) + comptype = fileobj.getcomptype() + + self.name = name or "" + self.mode = mode + self.comptype = comptype + self.fileobj = fileobj + self.bufsize = bufsize + self.buf = b"" + self.pos = 0 + self.closed = False + + try: + if comptype == "gz": + try: + import zlib + except ImportError: + raise CompressionError("zlib module is not available") + self.zlib = zlib + self.crc = zlib.crc32(b"") + if mode == "r": + self._init_read_gz() + else: + self._init_write_gz() + + if comptype == "bz2": + try: + import bz2 + except ImportError: + raise CompressionError("bz2 module is not available") + if mode == "r": + self.dbuf = b"" + self.cmp = bz2.BZ2Decompressor() + else: + self.cmp = bz2.BZ2Compressor() + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + def __del__(self): + if hasattr(self, "closed") and not self.closed: + self.close() + + def _init_write_gz(self): + """Initialize for writing with gzip compression. + """ + self.cmp = self.zlib.compressobj(9, self.zlib.DEFLATED, + -self.zlib.MAX_WBITS, + self.zlib.DEF_MEM_LEVEL, + 0) + timestamp = struct.pack(" self.bufsize: + self.fileobj.write(self.buf[:self.bufsize]) + self.buf = self.buf[self.bufsize:] + + def close(self): + """Close the _Stream object. No operation should be + done on it afterwards. + """ + if self.closed: + return + + if self.mode == "w" and self.comptype != "tar": + self.buf += self.cmp.flush() + + if self.mode == "w" and self.buf: + self.fileobj.write(self.buf) + self.buf = b"" + if self.comptype == "gz": + # The native zlib crc is an unsigned 32-bit integer, but + # the Python wrapper implicitly casts that to a signed C + # long. So, on a 32-bit box self.crc may "look negative", + # while the same crc on a 64-bit box may "look positive". + # To avoid irksome warnings from the `struct` module, force + # it to look positive on all boxes. + self.fileobj.write(struct.pack("= 0: + blocks, remainder = divmod(pos - self.pos, self.bufsize) + for i in range(blocks): + self.read(self.bufsize) + self.read(remainder) + else: + raise StreamError("seeking backwards is not allowed") + return self.pos + + def read(self, size=None): + """Return the next size number of bytes from the stream. + If size is not defined, return all bytes of the stream + up to EOF. + """ + if size is None: + t = [] + while True: + buf = self._read(self.bufsize) + if not buf: + break + t.append(buf) + buf = "".join(t) + else: + buf = self._read(size) + self.pos += len(buf) + return buf + + def _read(self, size): + """Return size bytes from the stream. + """ + if self.comptype == "tar": + return self.__read(size) + + c = len(self.dbuf) + while c < size: + buf = self.__read(self.bufsize) + if not buf: + break + try: + buf = self.cmp.decompress(buf) + except IOError: + raise ReadError("invalid compressed data") + self.dbuf += buf + c += len(buf) + buf = self.dbuf[:size] + self.dbuf = self.dbuf[size:] + return buf + + def __read(self, size): + """Return size bytes from stream. If internal buffer is empty, + read another block from the stream. + """ + c = len(self.buf) + while c < size: + buf = self.fileobj.read(self.bufsize) + if not buf: + break + self.buf += buf + c += len(buf) + buf = self.buf[:size] + self.buf = self.buf[size:] + return buf +# class _Stream + +class _StreamProxy(object): + """Small proxy class that enables transparent compression + detection for the Stream interface (mode 'r|*'). + """ + + def __init__(self, fileobj): + self.fileobj = fileobj + self.buf = self.fileobj.read(BLOCKSIZE) + + def read(self, size): + self.read = self.fileobj.read + return self.buf + + def getcomptype(self): + if self.buf.startswith(b"\037\213\010"): + return "gz" + if self.buf.startswith(b"BZh91"): + return "bz2" + return "tar" + + def close(self): + self.fileobj.close() +# class StreamProxy + +class _BZ2Proxy(object): + """Small proxy class that enables external file object + support for "r:bz2" and "w:bz2" modes. This is actually + a workaround for a limitation in bz2 module's BZ2File + class which (unlike gzip.GzipFile) has no support for + a file object argument. + """ + + blocksize = 16 * 1024 + + def __init__(self, fileobj, mode): + self.fileobj = fileobj + self.mode = mode + self.name = getattr(self.fileobj, "name", None) + self.init() + + def init(self): + import bz2 + self.pos = 0 + if self.mode == "r": + self.bz2obj = bz2.BZ2Decompressor() + self.fileobj.seek(0) + self.buf = b"" + else: + self.bz2obj = bz2.BZ2Compressor() + + def read(self, size): + x = len(self.buf) + while x < size: + raw = self.fileobj.read(self.blocksize) + if not raw: + break + data = self.bz2obj.decompress(raw) + self.buf += data + x += len(data) + + buf = self.buf[:size] + self.buf = self.buf[size:] + self.pos += len(buf) + return buf + + def seek(self, pos): + if pos < self.pos: + self.init() + self.read(pos - self.pos) + + def tell(self): + return self.pos + + def write(self, data): + self.pos += len(data) + raw = self.bz2obj.compress(data) + self.fileobj.write(raw) + + def close(self): + if self.mode == "w": + raw = self.bz2obj.flush() + self.fileobj.write(raw) +# class _BZ2Proxy + +#------------------------ +# Extraction file object +#------------------------ +class _FileInFile(object): + """A thin wrapper around an existing file object that + provides a part of its data as an individual file + object. + """ + + def __init__(self, fileobj, offset, size, blockinfo=None): + self.fileobj = fileobj + self.offset = offset + self.size = size + self.position = 0 + + if blockinfo is None: + blockinfo = [(0, size)] + + # Construct a map with data and zero blocks. + self.map_index = 0 + self.map = [] + lastpos = 0 + realpos = self.offset + for offset, size in blockinfo: + if offset > lastpos: + self.map.append((False, lastpos, offset, None)) + self.map.append((True, offset, offset + size, realpos)) + realpos += size + lastpos = offset + size + if lastpos < self.size: + self.map.append((False, lastpos, self.size, None)) + + def seekable(self): + if not hasattr(self.fileobj, "seekable"): + # XXX gzip.GzipFile and bz2.BZ2File + return True + return self.fileobj.seekable() + + def tell(self): + """Return the current file position. + """ + return self.position + + def seek(self, position): + """Seek to a position in the file. + """ + self.position = position + + def read(self, size=None): + """Read data from the file. + """ + if size is None: + size = self.size - self.position + else: + size = min(size, self.size - self.position) + + buf = b"" + while size > 0: + while True: + data, start, stop, offset = self.map[self.map_index] + if start <= self.position < stop: + break + else: + self.map_index += 1 + if self.map_index == len(self.map): + self.map_index = 0 + length = min(size, stop - self.position) + if data: + self.fileobj.seek(offset + (self.position - start)) + buf += self.fileobj.read(length) + else: + buf += NUL * length + size -= length + self.position += length + return buf +#class _FileInFile + + +class ExFileObject(object): + """File-like object for reading an archive member. + Is returned by TarFile.extractfile(). + """ + blocksize = 1024 + + def __init__(self, tarfile, tarinfo): + self.fileobj = _FileInFile(tarfile.fileobj, + tarinfo.offset_data, + tarinfo.size, + tarinfo.sparse) + self.name = tarinfo.name + self.mode = "r" + self.closed = False + self.size = tarinfo.size + + self.position = 0 + self.buffer = b"" + + def readable(self): + return True + + def writable(self): + return False + + def seekable(self): + return self.fileobj.seekable() + + def read(self, size=None): + """Read at most size bytes from the file. If size is not + present or None, read all data until EOF is reached. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + buf = b"" + if self.buffer: + if size is None: + buf = self.buffer + self.buffer = b"" + else: + buf = self.buffer[:size] + self.buffer = self.buffer[size:] + + if size is None: + buf += self.fileobj.read() + else: + buf += self.fileobj.read(size - len(buf)) + + self.position += len(buf) + return buf + + # XXX TextIOWrapper uses the read1() method. + read1 = read + + def readline(self, size=-1): + """Read one entire line from the file. If size is present + and non-negative, return a string with at most that + size, which may be an incomplete line. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + while True: + buf = self.fileobj.read(self.blocksize) + self.buffer += buf + if not buf or b"\n" in buf: + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + pos = len(self.buffer) + break + + if size != -1: + pos = min(size, pos) + + buf = self.buffer[:pos] + self.buffer = self.buffer[pos:] + self.position += len(buf) + return buf + + def readlines(self): + """Return a list with all remaining lines. + """ + result = [] + while True: + line = self.readline() + if not line: break + result.append(line) + return result + + def tell(self): + """Return the current file position. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + return self.position + + def seek(self, pos, whence=os.SEEK_SET): + """Seek to a position in the file. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + if whence == os.SEEK_SET: + self.position = min(max(pos, 0), self.size) + elif whence == os.SEEK_CUR: + if pos < 0: + self.position = max(self.position + pos, 0) + else: + self.position = min(self.position + pos, self.size) + elif whence == os.SEEK_END: + self.position = max(min(self.size + pos, self.size), 0) + else: + raise ValueError("Invalid argument") + + self.buffer = b"" + self.fileobj.seek(self.position) + + def close(self): + """Close the file object. + """ + self.closed = True + + def __iter__(self): + """Get an iterator over the file's lines. + """ + while True: + line = self.readline() + if not line: + break + yield line +#class ExFileObject + +#------------------ +# Exported Classes +#------------------ +class TarInfo(object): + """Informational class which holds the details about an + archive member given by a tar header block. + TarInfo objects are returned by TarFile.getmember(), + TarFile.getmembers() and TarFile.gettarinfo() and are + usually created internally. + """ + + __slots__ = ("name", "mode", "uid", "gid", "size", "mtime", + "chksum", "type", "linkname", "uname", "gname", + "devmajor", "devminor", + "offset", "offset_data", "pax_headers", "sparse", + "tarfile", "_sparse_structs", "_link_target") + + def __init__(self, name=""): + """Construct a TarInfo object. name is the optional name + of the member. + """ + self.name = name # member name + self.mode = 0o644 # file permissions + self.uid = 0 # user id + self.gid = 0 # group id + self.size = 0 # file size + self.mtime = 0 # modification time + self.chksum = 0 # header checksum + self.type = REGTYPE # member type + self.linkname = "" # link name + self.uname = "" # user name + self.gname = "" # group name + self.devmajor = 0 # device major number + self.devminor = 0 # device minor number + + self.offset = 0 # the tar header starts here + self.offset_data = 0 # the file's data starts here + + self.sparse = None # sparse member information + self.pax_headers = {} # pax header information + + # In pax headers the "name" and "linkname" field are called + # "path" and "linkpath". + def _getpath(self): + return self.name + def _setpath(self, name): + self.name = name + path = property(_getpath, _setpath) + + def _getlinkpath(self): + return self.linkname + def _setlinkpath(self, linkname): + self.linkname = linkname + linkpath = property(_getlinkpath, _setlinkpath) + + def __repr__(self): + return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self)) + + def get_info(self): + """Return the TarInfo's attributes as a dictionary. + """ + info = { + "name": self.name, + "mode": self.mode & 0o7777, + "uid": self.uid, + "gid": self.gid, + "size": self.size, + "mtime": self.mtime, + "chksum": self.chksum, + "type": self.type, + "linkname": self.linkname, + "uname": self.uname, + "gname": self.gname, + "devmajor": self.devmajor, + "devminor": self.devminor + } + + if info["type"] == DIRTYPE and not info["name"].endswith("/"): + info["name"] += "/" + + return info + + def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"): + """Return a tar header as a string of 512 byte blocks. + """ + info = self.get_info() + + if format == USTAR_FORMAT: + return self.create_ustar_header(info, encoding, errors) + elif format == GNU_FORMAT: + return self.create_gnu_header(info, encoding, errors) + elif format == PAX_FORMAT: + return self.create_pax_header(info, encoding) + else: + raise ValueError("invalid format") + + def create_ustar_header(self, info, encoding, errors): + """Return the object as a ustar header block. + """ + info["magic"] = POSIX_MAGIC + + if len(info["linkname"]) > LENGTH_LINK: + raise ValueError("linkname is too long") + + if len(info["name"]) > LENGTH_NAME: + info["prefix"], info["name"] = self._posix_split_name(info["name"]) + + return self._create_header(info, USTAR_FORMAT, encoding, errors) + + def create_gnu_header(self, info, encoding, errors): + """Return the object as a GNU header block sequence. + """ + info["magic"] = GNU_MAGIC + + buf = b"" + if len(info["linkname"]) > LENGTH_LINK: + buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK, encoding, errors) + + if len(info["name"]) > LENGTH_NAME: + buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME, encoding, errors) + + return buf + self._create_header(info, GNU_FORMAT, encoding, errors) + + def create_pax_header(self, info, encoding): + """Return the object as a ustar header block. If it cannot be + represented this way, prepend a pax extended header sequence + with supplement information. + """ + info["magic"] = POSIX_MAGIC + pax_headers = self.pax_headers.copy() + + # Test string fields for values that exceed the field length or cannot + # be represented in ASCII encoding. + for name, hname, length in ( + ("name", "path", LENGTH_NAME), ("linkname", "linkpath", LENGTH_LINK), + ("uname", "uname", 32), ("gname", "gname", 32)): + + if hname in pax_headers: + # The pax header has priority. + continue + + # Try to encode the string as ASCII. + try: + info[name].encode("ascii", "strict") + except UnicodeEncodeError: + pax_headers[hname] = info[name] + continue + + if len(info[name]) > length: + pax_headers[hname] = info[name] + + # Test number fields for values that exceed the field limit or values + # that like to be stored as float. + for name, digits in (("uid", 8), ("gid", 8), ("size", 12), ("mtime", 12)): + if name in pax_headers: + # The pax header has priority. Avoid overflow. + info[name] = 0 + continue + + val = info[name] + if not 0 <= val < 8 ** (digits - 1) or isinstance(val, float): + pax_headers[name] = str(val) + info[name] = 0 + + # Create a pax extended header if necessary. + if pax_headers: + buf = self._create_pax_generic_header(pax_headers, XHDTYPE, encoding) + else: + buf = b"" + + return buf + self._create_header(info, USTAR_FORMAT, "ascii", "replace") + + @classmethod + def create_pax_global_header(cls, pax_headers): + """Return the object as a pax global header block sequence. + """ + return cls._create_pax_generic_header(pax_headers, XGLTYPE, "utf8") + + def _posix_split_name(self, name): + """Split a name longer than 100 chars into a prefix + and a name part. + """ + prefix = name[:LENGTH_PREFIX + 1] + while prefix and prefix[-1] != "/": + prefix = prefix[:-1] + + name = name[len(prefix):] + prefix = prefix[:-1] + + if not prefix or len(name) > LENGTH_NAME: + raise ValueError("name is too long") + return prefix, name + + @staticmethod + def _create_header(info, format, encoding, errors): + """Return a header block. info is a dictionary with file + information, format must be one of the *_FORMAT constants. + """ + parts = [ + stn(info.get("name", ""), 100, encoding, errors), + itn(info.get("mode", 0) & 0o7777, 8, format), + itn(info.get("uid", 0), 8, format), + itn(info.get("gid", 0), 8, format), + itn(info.get("size", 0), 12, format), + itn(info.get("mtime", 0), 12, format), + b" ", # checksum field + info.get("type", REGTYPE), + stn(info.get("linkname", ""), 100, encoding, errors), + info.get("magic", POSIX_MAGIC), + stn(info.get("uname", ""), 32, encoding, errors), + stn(info.get("gname", ""), 32, encoding, errors), + itn(info.get("devmajor", 0), 8, format), + itn(info.get("devminor", 0), 8, format), + stn(info.get("prefix", ""), 155, encoding, errors) + ] + + buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts)) + chksum = calc_chksums(buf[-BLOCKSIZE:])[0] + buf = buf[:-364] + ("%06o\0" % chksum).encode("ascii") + buf[-357:] + return buf + + @staticmethod + def _create_payload(payload): + """Return the string payload filled with zero bytes + up to the next 512 byte border. + """ + blocks, remainder = divmod(len(payload), BLOCKSIZE) + if remainder > 0: + payload += (BLOCKSIZE - remainder) * NUL + return payload + + @classmethod + def _create_gnu_long_header(cls, name, type, encoding, errors): + """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence + for name. + """ + name = name.encode(encoding, errors) + NUL + + info = {} + info["name"] = "././@LongLink" + info["type"] = type + info["size"] = len(name) + info["magic"] = GNU_MAGIC + + # create extended header + name blocks. + return cls._create_header(info, USTAR_FORMAT, encoding, errors) + \ + cls._create_payload(name) + + @classmethod + def _create_pax_generic_header(cls, pax_headers, type, encoding): + """Return a POSIX.1-2008 extended or global header sequence + that contains a list of keyword, value pairs. The values + must be strings. + """ + # Check if one of the fields contains surrogate characters and thereby + # forces hdrcharset=BINARY, see _proc_pax() for more information. + binary = False + for keyword, value in pax_headers.items(): + try: + value.encode("utf8", "strict") + except UnicodeEncodeError: + binary = True + break + + records = b"" + if binary: + # Put the hdrcharset field at the beginning of the header. + records += b"21 hdrcharset=BINARY\n" + + for keyword, value in pax_headers.items(): + keyword = keyword.encode("utf8") + if binary: + # Try to restore the original byte representation of `value'. + # Needless to say, that the encoding must match the string. + value = value.encode(encoding, "surrogateescape") + else: + value = value.encode("utf8") + + l = len(keyword) + len(value) + 3 # ' ' + '=' + '\n' + n = p = 0 + while True: + n = l + len(str(p)) + if n == p: + break + p = n + records += bytes(str(p), "ascii") + b" " + keyword + b"=" + value + b"\n" + + # We use a hardcoded "././@PaxHeader" name like star does + # instead of the one that POSIX recommends. + info = {} + info["name"] = "././@PaxHeader" + info["type"] = type + info["size"] = len(records) + info["magic"] = POSIX_MAGIC + + # Create pax header + record blocks. + return cls._create_header(info, USTAR_FORMAT, "ascii", "replace") + \ + cls._create_payload(records) + + @classmethod + def frombuf(cls, buf, encoding, errors): + """Construct a TarInfo object from a 512 byte bytes object. + """ + if len(buf) == 0: + raise EmptyHeaderError("empty header") + if len(buf) != BLOCKSIZE: + raise TruncatedHeaderError("truncated header") + if buf.count(NUL) == BLOCKSIZE: + raise EOFHeaderError("end of file header") + + chksum = nti(buf[148:156]) + if chksum not in calc_chksums(buf): + raise InvalidHeaderError("bad checksum") + + obj = cls() + obj.name = nts(buf[0:100], encoding, errors) + obj.mode = nti(buf[100:108]) + obj.uid = nti(buf[108:116]) + obj.gid = nti(buf[116:124]) + obj.size = nti(buf[124:136]) + obj.mtime = nti(buf[136:148]) + obj.chksum = chksum + obj.type = buf[156:157] + obj.linkname = nts(buf[157:257], encoding, errors) + obj.uname = nts(buf[265:297], encoding, errors) + obj.gname = nts(buf[297:329], encoding, errors) + obj.devmajor = nti(buf[329:337]) + obj.devminor = nti(buf[337:345]) + prefix = nts(buf[345:500], encoding, errors) + + # Old V7 tar format represents a directory as a regular + # file with a trailing slash. + if obj.type == AREGTYPE and obj.name.endswith("/"): + obj.type = DIRTYPE + + # The old GNU sparse format occupies some of the unused + # space in the buffer for up to 4 sparse structures. + # Save the them for later processing in _proc_sparse(). + if obj.type == GNUTYPE_SPARSE: + pos = 386 + structs = [] + for i in range(4): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[482]) + origsize = nti(buf[483:495]) + obj._sparse_structs = (structs, isextended, origsize) + + # Remove redundant slashes from directories. + if obj.isdir(): + obj.name = obj.name.rstrip("/") + + # Reconstruct a ustar longname. + if prefix and obj.type not in GNU_TYPES: + obj.name = prefix + "/" + obj.name + return obj + + @classmethod + def fromtarfile(cls, tarfile): + """Return the next TarInfo object from TarFile object + tarfile. + """ + buf = tarfile.fileobj.read(BLOCKSIZE) + obj = cls.frombuf(buf, tarfile.encoding, tarfile.errors) + obj.offset = tarfile.fileobj.tell() - BLOCKSIZE + return obj._proc_member(tarfile) + + #-------------------------------------------------------------------------- + # The following are methods that are called depending on the type of a + # member. The entry point is _proc_member() which can be overridden in a + # subclass to add custom _proc_*() methods. A _proc_*() method MUST + # implement the following + # operations: + # 1. Set self.offset_data to the position where the data blocks begin, + # if there is data that follows. + # 2. Set tarfile.offset to the position where the next member's header will + # begin. + # 3. Return self or another valid TarInfo object. + def _proc_member(self, tarfile): + """Choose the right processing method depending on + the type and call it. + """ + if self.type in (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK): + return self._proc_gnulong(tarfile) + elif self.type == GNUTYPE_SPARSE: + return self._proc_sparse(tarfile) + elif self.type in (XHDTYPE, XGLTYPE, SOLARIS_XHDTYPE): + return self._proc_pax(tarfile) + else: + return self._proc_builtin(tarfile) + + def _proc_builtin(self, tarfile): + """Process a builtin type or an unknown type which + will be treated as a regular file. + """ + self.offset_data = tarfile.fileobj.tell() + offset = self.offset_data + if self.isreg() or self.type not in SUPPORTED_TYPES: + # Skip the following data blocks. + offset += self._block(self.size) + tarfile.offset = offset + + # Patch the TarInfo object with saved global + # header information. + self._apply_pax_info(tarfile.pax_headers, tarfile.encoding, tarfile.errors) + + return self + + def _proc_gnulong(self, tarfile): + """Process the blocks that hold a GNU longname + or longlink member. + """ + buf = tarfile.fileobj.read(self._block(self.size)) + + # Fetch the next header and process it. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Patch the TarInfo object from the next header with + # the longname information. + next.offset = self.offset + if self.type == GNUTYPE_LONGNAME: + next.name = nts(buf, tarfile.encoding, tarfile.errors) + elif self.type == GNUTYPE_LONGLINK: + next.linkname = nts(buf, tarfile.encoding, tarfile.errors) + + return next + + def _proc_sparse(self, tarfile): + """Process a GNU sparse header plus extra headers. + """ + # We already collected some sparse structures in frombuf(). + structs, isextended, origsize = self._sparse_structs + del self._sparse_structs + + # Collect sparse structures from extended header blocks. + while isextended: + buf = tarfile.fileobj.read(BLOCKSIZE) + pos = 0 + for i in range(21): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + if offset and numbytes: + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[504]) + self.sparse = structs + + self.offset_data = tarfile.fileobj.tell() + tarfile.offset = self.offset_data + self._block(self.size) + self.size = origsize + return self + + def _proc_pax(self, tarfile): + """Process an extended or global header as described in + POSIX.1-2008. + """ + # Read the header information. + buf = tarfile.fileobj.read(self._block(self.size)) + + # A pax header stores supplemental information for either + # the following file (extended) or all following files + # (global). + if self.type == XGLTYPE: + pax_headers = tarfile.pax_headers + else: + pax_headers = tarfile.pax_headers.copy() + + # Check if the pax header contains a hdrcharset field. This tells us + # the encoding of the path, linkpath, uname and gname fields. Normally, + # these fields are UTF-8 encoded but since POSIX.1-2008 tar + # implementations are allowed to store them as raw binary strings if + # the translation to UTF-8 fails. + match = re.search(br"\d+ hdrcharset=([^\n]+)\n", buf) + if match is not None: + pax_headers["hdrcharset"] = match.group(1).decode("utf8") + + # For the time being, we don't care about anything other than "BINARY". + # The only other value that is currently allowed by the standard is + # "ISO-IR 10646 2000 UTF-8" in other words UTF-8. + hdrcharset = pax_headers.get("hdrcharset") + if hdrcharset == "BINARY": + encoding = tarfile.encoding + else: + encoding = "utf8" + + # Parse pax header information. A record looks like that: + # "%d %s=%s\n" % (length, keyword, value). length is the size + # of the complete record including the length field itself and + # the newline. keyword and value are both UTF-8 encoded strings. + regex = re.compile(br"(\d+) ([^=]+)=") + pos = 0 + while True: + match = regex.match(buf, pos) + if not match: + break + + length, keyword = match.groups() + length = int(length) + value = buf[match.end(2) + 1:match.start(1) + length - 1] + + # Normally, we could just use "utf8" as the encoding and "strict" + # as the error handler, but we better not take the risk. For + # example, GNU tar <= 1.23 is known to store filenames it cannot + # translate to UTF-8 as raw strings (unfortunately without a + # hdrcharset=BINARY header). + # We first try the strict standard encoding, and if that fails we + # fall back on the user's encoding and error handler. + keyword = self._decode_pax_field(keyword, "utf8", "utf8", + tarfile.errors) + if keyword in PAX_NAME_FIELDS: + value = self._decode_pax_field(value, encoding, tarfile.encoding, + tarfile.errors) + else: + value = self._decode_pax_field(value, "utf8", "utf8", + tarfile.errors) + + pax_headers[keyword] = value + pos += length + + # Fetch the next header. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Process GNU sparse information. + if "GNU.sparse.map" in pax_headers: + # GNU extended sparse format version 0.1. + self._proc_gnusparse_01(next, pax_headers) + + elif "GNU.sparse.size" in pax_headers: + # GNU extended sparse format version 0.0. + self._proc_gnusparse_00(next, pax_headers, buf) + + elif pax_headers.get("GNU.sparse.major") == "1" and pax_headers.get("GNU.sparse.minor") == "0": + # GNU extended sparse format version 1.0. + self._proc_gnusparse_10(next, pax_headers, tarfile) + + if self.type in (XHDTYPE, SOLARIS_XHDTYPE): + # Patch the TarInfo object with the extended header info. + next._apply_pax_info(pax_headers, tarfile.encoding, tarfile.errors) + next.offset = self.offset + + if "size" in pax_headers: + # If the extended header replaces the size field, + # we need to recalculate the offset where the next + # header starts. + offset = next.offset_data + if next.isreg() or next.type not in SUPPORTED_TYPES: + offset += next._block(next.size) + tarfile.offset = offset + + return next + + def _proc_gnusparse_00(self, next, pax_headers, buf): + """Process a GNU tar extended sparse header, version 0.0. + """ + offsets = [] + for match in re.finditer(br"\d+ GNU.sparse.offset=(\d+)\n", buf): + offsets.append(int(match.group(1))) + numbytes = [] + for match in re.finditer(br"\d+ GNU.sparse.numbytes=(\d+)\n", buf): + numbytes.append(int(match.group(1))) + next.sparse = list(zip(offsets, numbytes)) + + def _proc_gnusparse_01(self, next, pax_headers): + """Process a GNU tar extended sparse header, version 0.1. + """ + sparse = [int(x) for x in pax_headers["GNU.sparse.map"].split(",")] + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _proc_gnusparse_10(self, next, pax_headers, tarfile): + """Process a GNU tar extended sparse header, version 1.0. + """ + fields = None + sparse = [] + buf = tarfile.fileobj.read(BLOCKSIZE) + fields, buf = buf.split(b"\n", 1) + fields = int(fields) + while len(sparse) < fields * 2: + if b"\n" not in buf: + buf += tarfile.fileobj.read(BLOCKSIZE) + number, buf = buf.split(b"\n", 1) + sparse.append(int(number)) + next.offset_data = tarfile.fileobj.tell() + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _apply_pax_info(self, pax_headers, encoding, errors): + """Replace fields with supplemental information from a previous + pax extended or global header. + """ + for keyword, value in pax_headers.items(): + if keyword == "GNU.sparse.name": + setattr(self, "path", value) + elif keyword == "GNU.sparse.size": + setattr(self, "size", int(value)) + elif keyword == "GNU.sparse.realsize": + setattr(self, "size", int(value)) + elif keyword in PAX_FIELDS: + if keyword in PAX_NUMBER_FIELDS: + try: + value = PAX_NUMBER_FIELDS[keyword](value) + except ValueError: + value = 0 + if keyword == "path": + value = value.rstrip("/") + setattr(self, keyword, value) + + self.pax_headers = pax_headers.copy() + + def _decode_pax_field(self, value, encoding, fallback_encoding, fallback_errors): + """Decode a single field from a pax record. + """ + try: + return value.decode(encoding, "strict") + except UnicodeDecodeError: + return value.decode(fallback_encoding, fallback_errors) + + def _block(self, count): + """Round up a byte count by BLOCKSIZE and return it, + e.g. _block(834) => 1024. + """ + blocks, remainder = divmod(count, BLOCKSIZE) + if remainder: + blocks += 1 + return blocks * BLOCKSIZE + + def isreg(self): + return self.type in REGULAR_TYPES + def isfile(self): + return self.isreg() + def isdir(self): + return self.type == DIRTYPE + def issym(self): + return self.type == SYMTYPE + def islnk(self): + return self.type == LNKTYPE + def ischr(self): + return self.type == CHRTYPE + def isblk(self): + return self.type == BLKTYPE + def isfifo(self): + return self.type == FIFOTYPE + def issparse(self): + return self.sparse is not None + def isdev(self): + return self.type in (CHRTYPE, BLKTYPE, FIFOTYPE) +# class TarInfo + +class TarFile(object): + """The TarFile Class provides an interface to tar archives. + """ + + debug = 0 # May be set from 0 (no msgs) to 3 (all msgs) + + dereference = False # If true, add content of linked file to the + # tar file, else the link. + + ignore_zeros = False # If true, skips empty or invalid blocks and + # continues processing. + + errorlevel = 1 # If 0, fatal errors only appear in debug + # messages (if debug >= 0). If > 0, errors + # are passed to the caller as exceptions. + + format = DEFAULT_FORMAT # The format to use when creating an archive. + + encoding = ENCODING # Encoding for 8-bit character strings. + + errors = None # Error handler for unicode conversion. + + tarinfo = TarInfo # The default TarInfo class to use. + + fileobject = ExFileObject # The default ExFileObject class to use. + + def __init__(self, name=None, mode="r", fileobj=None, format=None, + tarinfo=None, dereference=None, ignore_zeros=None, encoding=None, + errors="surrogateescape", pax_headers=None, debug=None, errorlevel=None): + """Open an (uncompressed) tar archive `name'. `mode' is either 'r' to + read from an existing archive, 'a' to append data to an existing + file or 'w' to create a new file overwriting an existing one. `mode' + defaults to 'r'. + If `fileobj' is given, it is used for reading or writing data. If it + can be determined, `mode' is overridden by `fileobj's mode. + `fileobj' is not closed, when TarFile is closed. + """ + if len(mode) > 1 or mode not in "raw": + raise ValueError("mode must be 'r', 'a' or 'w'") + self.mode = mode + self._mode = {"r": "rb", "a": "r+b", "w": "wb"}[mode] + + if not fileobj: + if self.mode == "a" and not os.path.exists(name): + # Create nonexistent files in append mode. + self.mode = "w" + self._mode = "wb" + fileobj = bltn_open(name, self._mode) + self._extfileobj = False + else: + if name is None and hasattr(fileobj, "name"): + name = fileobj.name + if hasattr(fileobj, "mode"): + self._mode = fileobj.mode + self._extfileobj = True + self.name = os.path.abspath(name) if name else None + self.fileobj = fileobj + + # Init attributes. + if format is not None: + self.format = format + if tarinfo is not None: + self.tarinfo = tarinfo + if dereference is not None: + self.dereference = dereference + if ignore_zeros is not None: + self.ignore_zeros = ignore_zeros + if encoding is not None: + self.encoding = encoding + self.errors = errors + + if pax_headers is not None and self.format == PAX_FORMAT: + self.pax_headers = pax_headers + else: + self.pax_headers = {} + + if debug is not None: + self.debug = debug + if errorlevel is not None: + self.errorlevel = errorlevel + + # Init datastructures. + self.closed = False + self.members = [] # list of members as TarInfo objects + self._loaded = False # flag if all members have been read + self.offset = self.fileobj.tell() + # current position in the archive file + self.inodes = {} # dictionary caching the inodes of + # archive members already added + + try: + if self.mode == "r": + self.firstmember = None + self.firstmember = self.next() + + if self.mode == "a": + # Move to the end of the archive, + # before the first empty block. + while True: + self.fileobj.seek(self.offset) + try: + tarinfo = self.tarinfo.fromtarfile(self) + self.members.append(tarinfo) + except EOFHeaderError: + self.fileobj.seek(self.offset) + break + except HeaderError as e: + raise ReadError(str(e)) + + if self.mode in "aw": + self._loaded = True + + if self.pax_headers: + buf = self.tarinfo.create_pax_global_header(self.pax_headers.copy()) + self.fileobj.write(buf) + self.offset += len(buf) + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + #-------------------------------------------------------------------------- + # Below are the classmethods which act as alternate constructors to the + # TarFile class. The open() method is the only one that is needed for + # public use; it is the "super"-constructor and is able to select an + # adequate "sub"-constructor for a particular compression using the mapping + # from OPEN_METH. + # + # This concept allows one to subclass TarFile without losing the comfort of + # the super-constructor. A sub-constructor is registered and made available + # by adding it to the mapping in OPEN_METH. + + @classmethod + def open(cls, name=None, mode="r", fileobj=None, bufsize=RECORDSIZE, **kwargs): + """Open a tar archive for reading, writing or appending. Return + an appropriate TarFile class. + + mode: + 'r' or 'r:*' open for reading with transparent compression + 'r:' open for reading exclusively uncompressed + 'r:gz' open for reading with gzip compression + 'r:bz2' open for reading with bzip2 compression + 'a' or 'a:' open for appending, creating the file if necessary + 'w' or 'w:' open for writing without compression + 'w:gz' open for writing with gzip compression + 'w:bz2' open for writing with bzip2 compression + + 'r|*' open a stream of tar blocks with transparent compression + 'r|' open an uncompressed stream of tar blocks for reading + 'r|gz' open a gzip compressed stream of tar blocks + 'r|bz2' open a bzip2 compressed stream of tar blocks + 'w|' open an uncompressed stream for writing + 'w|gz' open a gzip compressed stream for writing + 'w|bz2' open a bzip2 compressed stream for writing + """ + + if not name and not fileobj: + raise ValueError("nothing to open") + + if mode in ("r", "r:*"): + # Find out which *open() is appropriate for opening the file. + for comptype in cls.OPEN_METH: + func = getattr(cls, cls.OPEN_METH[comptype]) + if fileobj is not None: + saved_pos = fileobj.tell() + try: + return func(name, "r", fileobj, **kwargs) + except (ReadError, CompressionError) as e: + if fileobj is not None: + fileobj.seek(saved_pos) + continue + raise ReadError("file could not be opened successfully") + + elif ":" in mode: + filemode, comptype = mode.split(":", 1) + filemode = filemode or "r" + comptype = comptype or "tar" + + # Select the *open() function according to + # given compression. + if comptype in cls.OPEN_METH: + func = getattr(cls, cls.OPEN_METH[comptype]) + else: + raise CompressionError("unknown compression type %r" % comptype) + return func(name, filemode, fileobj, **kwargs) + + elif "|" in mode: + filemode, comptype = mode.split("|", 1) + filemode = filemode or "r" + comptype = comptype or "tar" + + if filemode not in "rw": + raise ValueError("mode must be 'r' or 'w'") + + stream = _Stream(name, filemode, comptype, fileobj, bufsize) + try: + t = cls(name, filemode, stream, **kwargs) + except: + stream.close() + raise + t._extfileobj = False + return t + + elif mode in "aw": + return cls.taropen(name, mode, fileobj, **kwargs) + + raise ValueError("undiscernible mode") + + @classmethod + def taropen(cls, name, mode="r", fileobj=None, **kwargs): + """Open uncompressed tar archive name for reading or writing. + """ + if len(mode) > 1 or mode not in "raw": + raise ValueError("mode must be 'r', 'a' or 'w'") + return cls(name, mode, fileobj, **kwargs) + + @classmethod + def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): + """Open gzip compressed tar archive name for reading or writing. + Appending is not allowed. + """ + if len(mode) > 1 or mode not in "rw": + raise ValueError("mode must be 'r' or 'w'") + + try: + import gzip + gzip.GzipFile + except (ImportError, AttributeError): + raise CompressionError("gzip module is not available") + + extfileobj = fileobj is not None + try: + fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj) + t = cls.taropen(name, mode, fileobj, **kwargs) + except IOError: + if not extfileobj and fileobj is not None: + fileobj.close() + if fileobj is None: + raise + raise ReadError("not a gzip file") + except: + if not extfileobj and fileobj is not None: + fileobj.close() + raise + t._extfileobj = extfileobj + return t + + @classmethod + def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): + """Open bzip2 compressed tar archive name for reading or writing. + Appending is not allowed. + """ + if len(mode) > 1 or mode not in "rw": + raise ValueError("mode must be 'r' or 'w'.") + + try: + import bz2 + except ImportError: + raise CompressionError("bz2 module is not available") + + if fileobj is not None: + fileobj = _BZ2Proxy(fileobj, mode) + else: + fileobj = bz2.BZ2File(name, mode, compresslevel=compresslevel) + + try: + t = cls.taropen(name, mode, fileobj, **kwargs) + except (IOError, EOFError): + fileobj.close() + raise ReadError("not a bzip2 file") + t._extfileobj = False + return t + + # All *open() methods are registered here. + OPEN_METH = { + "tar": "taropen", # uncompressed tar + "gz": "gzopen", # gzip compressed tar + "bz2": "bz2open" # bzip2 compressed tar + } + + #-------------------------------------------------------------------------- + # The public methods which TarFile provides: + + def close(self): + """Close the TarFile. In write-mode, two finishing zero blocks are + appended to the archive. + """ + if self.closed: + return + + if self.mode in "aw": + self.fileobj.write(NUL * (BLOCKSIZE * 2)) + self.offset += (BLOCKSIZE * 2) + # fill up the end with zero-blocks + # (like option -b20 for tar does) + blocks, remainder = divmod(self.offset, RECORDSIZE) + if remainder > 0: + self.fileobj.write(NUL * (RECORDSIZE - remainder)) + + if not self._extfileobj: + self.fileobj.close() + self.closed = True + + def getmember(self, name): + """Return a TarInfo object for member `name'. If `name' can not be + found in the archive, KeyError is raised. If a member occurs more + than once in the archive, its last occurrence is assumed to be the + most up-to-date version. + """ + tarinfo = self._getmember(name) + if tarinfo is None: + raise KeyError("filename %r not found" % name) + return tarinfo + + def getmembers(self): + """Return the members of the archive as a list of TarInfo objects. The + list has the same order as the members in the archive. + """ + self._check() + if not self._loaded: # if we want to obtain a list of + self._load() # all members, we first have to + # scan the whole archive. + return self.members + + def getnames(self): + """Return the members of the archive as a list of their names. It has + the same order as the list returned by getmembers(). + """ + return [tarinfo.name for tarinfo in self.getmembers()] + + def gettarinfo(self, name=None, arcname=None, fileobj=None): + """Create a TarInfo object for either the file `name' or the file + object `fileobj' (using os.fstat on its file descriptor). You can + modify some of the TarInfo's attributes before you add it using + addfile(). If given, `arcname' specifies an alternative name for the + file in the archive. + """ + self._check("aw") + + # When fileobj is given, replace name by + # fileobj's real name. + if fileobj is not None: + name = fileobj.name + + # Building the name of the member in the archive. + # Backward slashes are converted to forward slashes, + # Absolute paths are turned to relative paths. + if arcname is None: + arcname = name + drv, arcname = os.path.splitdrive(arcname) + arcname = arcname.replace(os.sep, "/") + arcname = arcname.lstrip("/") + + # Now, fill the TarInfo object with + # information specific for the file. + tarinfo = self.tarinfo() + tarinfo.tarfile = self + + # Use os.stat or os.lstat, depending on platform + # and if symlinks shall be resolved. + if fileobj is None: + if hasattr(os, "lstat") and not self.dereference: + statres = os.lstat(name) + else: + statres = os.stat(name) + else: + statres = os.fstat(fileobj.fileno()) + linkname = "" + + stmd = statres.st_mode + if stat.S_ISREG(stmd): + inode = (statres.st_ino, statres.st_dev) + if not self.dereference and statres.st_nlink > 1 and \ + inode in self.inodes and arcname != self.inodes[inode]: + # Is it a hardlink to an already + # archived file? + type = LNKTYPE + linkname = self.inodes[inode] + else: + # The inode is added only if its valid. + # For win32 it is always 0. + type = REGTYPE + if inode[0]: + self.inodes[inode] = arcname + elif stat.S_ISDIR(stmd): + type = DIRTYPE + elif stat.S_ISFIFO(stmd): + type = FIFOTYPE + elif stat.S_ISLNK(stmd): + type = SYMTYPE + linkname = os.readlink(name) + elif stat.S_ISCHR(stmd): + type = CHRTYPE + elif stat.S_ISBLK(stmd): + type = BLKTYPE + else: + return None + + # Fill the TarInfo object with all + # information we can get. + tarinfo.name = arcname + tarinfo.mode = stmd + tarinfo.uid = statres.st_uid + tarinfo.gid = statres.st_gid + if type == REGTYPE: + tarinfo.size = statres.st_size + else: + tarinfo.size = 0 + tarinfo.mtime = statres.st_mtime + tarinfo.type = type + tarinfo.linkname = linkname + if pwd: + try: + tarinfo.uname = pwd.getpwuid(tarinfo.uid)[0] + except KeyError: + pass + if grp: + try: + tarinfo.gname = grp.getgrgid(tarinfo.gid)[0] + except KeyError: + pass + + if type in (CHRTYPE, BLKTYPE): + if hasattr(os, "major") and hasattr(os, "minor"): + tarinfo.devmajor = os.major(statres.st_rdev) + tarinfo.devminor = os.minor(statres.st_rdev) + return tarinfo + + def list(self, verbose=True): + """Print a table of contents to sys.stdout. If `verbose' is False, only + the names of the members are printed. If it is True, an `ls -l'-like + output is produced. + """ + self._check() + + for tarinfo in self: + if verbose: + print(filemode(tarinfo.mode), end=' ') + print("%s/%s" % (tarinfo.uname or tarinfo.uid, + tarinfo.gname or tarinfo.gid), end=' ') + if tarinfo.ischr() or tarinfo.isblk(): + print("%10s" % ("%d,%d" \ + % (tarinfo.devmajor, tarinfo.devminor)), end=' ') + else: + print("%10d" % tarinfo.size, end=' ') + print("%d-%02d-%02d %02d:%02d:%02d" \ + % time.localtime(tarinfo.mtime)[:6], end=' ') + + print(tarinfo.name + ("/" if tarinfo.isdir() else ""), end=' ') + + if verbose: + if tarinfo.issym(): + print("->", tarinfo.linkname, end=' ') + if tarinfo.islnk(): + print("link to", tarinfo.linkname, end=' ') + print() + + def add(self, name, arcname=None, recursive=True, exclude=None, filter=None): + """Add the file `name' to the archive. `name' may be any type of file + (directory, fifo, symbolic link, etc.). If given, `arcname' + specifies an alternative name for the file in the archive. + Directories are added recursively by default. This can be avoided by + setting `recursive' to False. `exclude' is a function that should + return True for each filename to be excluded. `filter' is a function + that expects a TarInfo object argument and returns the changed + TarInfo object, if it returns None the TarInfo object will be + excluded from the archive. + """ + self._check("aw") + + if arcname is None: + arcname = name + + # Exclude pathnames. + if exclude is not None: + import warnings + warnings.warn("use the filter argument instead", + DeprecationWarning, 2) + if exclude(name): + self._dbg(2, "tarfile: Excluded %r" % name) + return + + # Skip if somebody tries to archive the archive... + if self.name is not None and os.path.abspath(name) == self.name: + self._dbg(2, "tarfile: Skipped %r" % name) + return + + self._dbg(1, name) + + # Create a TarInfo object from the file. + tarinfo = self.gettarinfo(name, arcname) + + if tarinfo is None: + self._dbg(1, "tarfile: Unsupported type %r" % name) + return + + # Change or exclude the TarInfo object. + if filter is not None: + tarinfo = filter(tarinfo) + if tarinfo is None: + self._dbg(2, "tarfile: Excluded %r" % name) + return + + # Append the tar header and data to the archive. + if tarinfo.isreg(): + f = bltn_open(name, "rb") + self.addfile(tarinfo, f) + f.close() + + elif tarinfo.isdir(): + self.addfile(tarinfo) + if recursive: + for f in os.listdir(name): + self.add(os.path.join(name, f), os.path.join(arcname, f), + recursive, exclude, filter=filter) + + else: + self.addfile(tarinfo) + + def addfile(self, tarinfo, fileobj=None): + """Add the TarInfo object `tarinfo' to the archive. If `fileobj' is + given, tarinfo.size bytes are read from it and added to the archive. + You can create TarInfo objects using gettarinfo(). + On Windows platforms, `fileobj' should always be opened with mode + 'rb' to avoid irritation about the file size. + """ + self._check("aw") + + tarinfo = copy.copy(tarinfo) + + buf = tarinfo.tobuf(self.format, self.encoding, self.errors) + self.fileobj.write(buf) + self.offset += len(buf) + + # If there's data to follow, append it. + if fileobj is not None: + copyfileobj(fileobj, self.fileobj, tarinfo.size) + blocks, remainder = divmod(tarinfo.size, BLOCKSIZE) + if remainder > 0: + self.fileobj.write(NUL * (BLOCKSIZE - remainder)) + blocks += 1 + self.offset += blocks * BLOCKSIZE + + self.members.append(tarinfo) + + def extractall(self, path=".", members=None): + """Extract all members from the archive to the current working + directory and set owner, modification time and permissions on + directories afterwards. `path' specifies a different directory + to extract to. `members' is optional and must be a subset of the + list returned by getmembers(). + """ + directories = [] + + if members is None: + members = self + + for tarinfo in members: + if tarinfo.isdir(): + # Extract directories with a safe mode. + directories.append(tarinfo) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 0o700 + # Do not set_attrs directories, as we will do that further down + self.extract(tarinfo, path, set_attrs=not tarinfo.isdir()) + + # Reverse sort directories. + directories.sort(key=lambda a: a.name) + directories.reverse() + + # Set correct owner, mtime and filemode on directories. + for tarinfo in directories: + dirpath = os.path.join(path, tarinfo.name) + try: + self.chown(tarinfo, dirpath) + self.utime(tarinfo, dirpath) + self.chmod(tarinfo, dirpath) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extract(self, member, path="", set_attrs=True): + """Extract a member from the archive to the current working directory, + using its full name. Its file information is extracted as accurately + as possible. `member' may be a filename or a TarInfo object. You can + specify a different directory using `path'. File attributes (owner, + mtime, mode) are set unless `set_attrs' is False. + """ + self._check("r") + + if isinstance(member, str): + tarinfo = self.getmember(member) + else: + tarinfo = member + + # Prepare the link target for makelink(). + if tarinfo.islnk(): + tarinfo._link_target = os.path.join(path, tarinfo.linkname) + + try: + self._extract_member(tarinfo, os.path.join(path, tarinfo.name), + set_attrs=set_attrs) + except EnvironmentError as e: + if self.errorlevel > 0: + raise + else: + if e.filename is None: + self._dbg(1, "tarfile: %s" % e.strerror) + else: + self._dbg(1, "tarfile: %s %r" % (e.strerror, e.filename)) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extractfile(self, member): + """Extract a member from the archive as a file object. `member' may be + a filename or a TarInfo object. If `member' is a regular file, a + file-like object is returned. If `member' is a link, a file-like + object is constructed from the link's target. If `member' is none of + the above, None is returned. + The file-like object is read-only and provides the following + methods: read(), readline(), readlines(), seek() and tell() + """ + self._check("r") + + if isinstance(member, str): + tarinfo = self.getmember(member) + else: + tarinfo = member + + if tarinfo.isreg(): + return self.fileobject(self, tarinfo) + + elif tarinfo.type not in SUPPORTED_TYPES: + # If a member's type is unknown, it is treated as a + # regular file. + return self.fileobject(self, tarinfo) + + elif tarinfo.islnk() or tarinfo.issym(): + if isinstance(self.fileobj, _Stream): + # A small but ugly workaround for the case that someone tries + # to extract a (sym)link as a file-object from a non-seekable + # stream of tar blocks. + raise StreamError("cannot extract (sym)link as file object") + else: + # A (sym)link's file object is its target's file object. + return self.extractfile(self._find_link_target(tarinfo)) + else: + # If there's no data associated with the member (directory, chrdev, + # blkdev, etc.), return None instead of a file object. + return None + + def _extract_member(self, tarinfo, targetpath, set_attrs=True): + """Extract the TarInfo object tarinfo to a physical + file called targetpath. + """ + # Fetch the TarInfo object for the given name + # and build the destination pathname, replacing + # forward slashes to platform specific separators. + targetpath = targetpath.rstrip("/") + targetpath = targetpath.replace("/", os.sep) + + # Create all upper directories. + upperdirs = os.path.dirname(targetpath) + if upperdirs and not os.path.exists(upperdirs): + # Create directories that are not part of the archive with + # default permissions. + os.makedirs(upperdirs) + + if tarinfo.islnk() or tarinfo.issym(): + self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname)) + else: + self._dbg(1, tarinfo.name) + + if tarinfo.isreg(): + self.makefile(tarinfo, targetpath) + elif tarinfo.isdir(): + self.makedir(tarinfo, targetpath) + elif tarinfo.isfifo(): + self.makefifo(tarinfo, targetpath) + elif tarinfo.ischr() or tarinfo.isblk(): + self.makedev(tarinfo, targetpath) + elif tarinfo.islnk() or tarinfo.issym(): + self.makelink(tarinfo, targetpath) + elif tarinfo.type not in SUPPORTED_TYPES: + self.makeunknown(tarinfo, targetpath) + else: + self.makefile(tarinfo, targetpath) + + if set_attrs: + self.chown(tarinfo, targetpath) + if not tarinfo.issym(): + self.chmod(tarinfo, targetpath) + self.utime(tarinfo, targetpath) + + #-------------------------------------------------------------------------- + # Below are the different file methods. They are called via + # _extract_member() when extract() is called. They can be replaced in a + # subclass to implement other functionality. + + def makedir(self, tarinfo, targetpath): + """Make a directory called targetpath. + """ + try: + # Use a safe mode for the directory, the real mode is set + # later in _extract_member(). + os.mkdir(targetpath, 0o700) + except EnvironmentError as e: + if e.errno != errno.EEXIST: + raise + + def makefile(self, tarinfo, targetpath): + """Make a file called targetpath. + """ + source = self.fileobj + source.seek(tarinfo.offset_data) + target = bltn_open(targetpath, "wb") + if tarinfo.sparse is not None: + for offset, size in tarinfo.sparse: + target.seek(offset) + copyfileobj(source, target, size) + else: + copyfileobj(source, target, tarinfo.size) + target.seek(tarinfo.size) + target.truncate() + target.close() + + def makeunknown(self, tarinfo, targetpath): + """Make a file from a TarInfo object with an unknown type + at targetpath. + """ + self.makefile(tarinfo, targetpath) + self._dbg(1, "tarfile: Unknown file type %r, " \ + "extracted as regular file." % tarinfo.type) + + def makefifo(self, tarinfo, targetpath): + """Make a fifo called targetpath. + """ + if hasattr(os, "mkfifo"): + os.mkfifo(targetpath) + else: + raise ExtractError("fifo not supported by system") + + def makedev(self, tarinfo, targetpath): + """Make a character or block device called targetpath. + """ + if not hasattr(os, "mknod") or not hasattr(os, "makedev"): + raise ExtractError("special devices not supported by system") + + mode = tarinfo.mode + if tarinfo.isblk(): + mode |= stat.S_IFBLK + else: + mode |= stat.S_IFCHR + + os.mknod(targetpath, mode, + os.makedev(tarinfo.devmajor, tarinfo.devminor)) + + def makelink(self, tarinfo, targetpath): + """Make a (symbolic) link called targetpath. If it cannot be created + (platform limitation), we try to make a copy of the referenced file + instead of a link. + """ + try: + # For systems that support symbolic and hard links. + if tarinfo.issym(): + os.symlink(tarinfo.linkname, targetpath) + else: + # See extract(). + if os.path.exists(tarinfo._link_target): + os.link(tarinfo._link_target, targetpath) + else: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except symlink_exception: + if tarinfo.issym(): + linkpath = os.path.join(os.path.dirname(tarinfo.name), + tarinfo.linkname) + else: + linkpath = tarinfo.linkname + else: + try: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except KeyError: + raise ExtractError("unable to resolve link inside archive") + + def chown(self, tarinfo, targetpath): + """Set owner of targetpath according to tarinfo. + """ + if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: + # We have to be root to do so. + try: + g = grp.getgrnam(tarinfo.gname)[2] + except KeyError: + g = tarinfo.gid + try: + u = pwd.getpwnam(tarinfo.uname)[2] + except KeyError: + u = tarinfo.uid + try: + if tarinfo.issym() and hasattr(os, "lchown"): + os.lchown(targetpath, u, g) + else: + if sys.platform != "os2emx": + os.chown(targetpath, u, g) + except EnvironmentError as e: + raise ExtractError("could not change owner") + + def chmod(self, tarinfo, targetpath): + """Set file permissions of targetpath according to tarinfo. + """ + if hasattr(os, 'chmod'): + try: + os.chmod(targetpath, tarinfo.mode) + except EnvironmentError as e: + raise ExtractError("could not change mode") + + def utime(self, tarinfo, targetpath): + """Set modification time of targetpath according to tarinfo. + """ + if not hasattr(os, 'utime'): + return + try: + os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime)) + except EnvironmentError as e: + raise ExtractError("could not change modification time") + + #-------------------------------------------------------------------------- + def next(self): + """Return the next member of the archive as a TarInfo object, when + TarFile is opened for reading. Return None if there is no more + available. + """ + self._check("ra") + if self.firstmember is not None: + m = self.firstmember + self.firstmember = None + return m + + # Read the next block. + self.fileobj.seek(self.offset) + tarinfo = None + while True: + try: + tarinfo = self.tarinfo.fromtarfile(self) + except EOFHeaderError as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + except InvalidHeaderError as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + elif self.offset == 0: + raise ReadError(str(e)) + except EmptyHeaderError: + if self.offset == 0: + raise ReadError("empty file") + except TruncatedHeaderError as e: + if self.offset == 0: + raise ReadError(str(e)) + except SubsequentHeaderError as e: + raise ReadError(str(e)) + break + + if tarinfo is not None: + self.members.append(tarinfo) + else: + self._loaded = True + + return tarinfo + + #-------------------------------------------------------------------------- + # Little helper methods: + + def _getmember(self, name, tarinfo=None, normalize=False): + """Find an archive member by name from bottom to top. + If tarinfo is given, it is used as the starting point. + """ + # Ensure that all members have been loaded. + members = self.getmembers() + + # Limit the member search list up to tarinfo. + if tarinfo is not None: + members = members[:members.index(tarinfo)] + + if normalize: + name = os.path.normpath(name) + + for member in reversed(members): + if normalize: + member_name = os.path.normpath(member.name) + else: + member_name = member.name + + if name == member_name: + return member + + def _load(self): + """Read through the entire archive file and look for readable + members. + """ + while True: + tarinfo = self.next() + if tarinfo is None: + break + self._loaded = True + + def _check(self, mode=None): + """Check if TarFile is still open, and if the operation's mode + corresponds to TarFile's mode. + """ + if self.closed: + raise IOError("%s is closed" % self.__class__.__name__) + if mode is not None and self.mode not in mode: + raise IOError("bad operation for mode %r" % self.mode) + + def _find_link_target(self, tarinfo): + """Find the target member of a symlink or hardlink member in the + archive. + """ + if tarinfo.issym(): + # Always search the entire archive. + linkname = os.path.dirname(tarinfo.name) + "/" + tarinfo.linkname + limit = None + else: + # Search the archive before the link, because a hard link is + # just a reference to an already archived file. + linkname = tarinfo.linkname + limit = tarinfo + + member = self._getmember(linkname, tarinfo=limit, normalize=True) + if member is None: + raise KeyError("linkname %r not found" % linkname) + return member + + def __iter__(self): + """Provide an iterator object. + """ + if self._loaded: + return iter(self.members) + else: + return TarIter(self) + + def _dbg(self, level, msg): + """Write debugging output to sys.stderr. + """ + if level <= self.debug: + print(msg, file=sys.stderr) + + def __enter__(self): + self._check() + return self + + def __exit__(self, type, value, traceback): + if type is None: + self.close() + else: + # An exception occurred. We must not call close() because + # it would try to write end-of-archive blocks and padding. + if not self._extfileobj: + self.fileobj.close() + self.closed = True +# class TarFile + +class TarIter(object): + """Iterator Class. + + for tarinfo in TarFile(...): + suite... + """ + + def __init__(self, tarfile): + """Construct a TarIter object. + """ + self.tarfile = tarfile + self.index = 0 + def __iter__(self): + """Return iterator object. + """ + return self + + def __next__(self): + """Return the next item using TarFile's next() method. + When all members have been read, set TarFile as _loaded. + """ + # Fix for SF #1100429: Under rare circumstances it can + # happen that getmembers() is called during iteration, + # which will cause TarIter to stop prematurely. + if not self.tarfile._loaded: + tarinfo = self.tarfile.next() + if not tarinfo: + self.tarfile._loaded = True + raise StopIteration + else: + try: + tarinfo = self.tarfile.members[self.index] + except IndexError: + raise StopIteration + self.index += 1 + return tarinfo + + next = __next__ # for Python 2.x + +#-------------------- +# exported functions +#-------------------- +def is_tarfile(name): + """Return True if name points to a tar archive that we + are able to handle, else return False. + """ + try: + t = open(name) + t.close() + return True + except TarError: + return False + +bltn_open = open +open = TarFile.open diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/compat.py b/venv/Lib/site-packages/pip/_vendor/distlib/compat.py new file mode 100644 index 00000000..e5941069 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/compat.py @@ -0,0 +1,1122 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import absolute_import + +import os +import re +import sys + +try: + import ssl +except ImportError: # pragma: no cover + ssl = None + +if sys.version_info[0] < 3: # pragma: no cover + from StringIO import StringIO + string_types = basestring, + text_type = unicode + from types import FileType as file_type + import __builtin__ as builtins + import ConfigParser as configparser + from ._backport import shutil + from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit + from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, + pathname2url, ContentTooShortError, splittype) + + def quote(s): + if isinstance(s, unicode): + s = s.encode('utf-8') + return _quote(s) + + import urllib2 + from urllib2 import (Request, urlopen, URLError, HTTPError, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib2 import HTTPSHandler + import httplib + import xmlrpclib + import Queue as queue + from HTMLParser import HTMLParser + import htmlentitydefs + raw_input = raw_input + from itertools import ifilter as filter + from itertools import ifilterfalse as filterfalse + + # Leaving this around for now, in case it needs resurrecting in some way + # _userprog = None + # def splituser(host): + # """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" + # global _userprog + # if _userprog is None: + # import re + # _userprog = re.compile('^(.*)@(.*)$') + + # match = _userprog.match(host) + # if match: return match.group(1, 2) + # return None, host + +else: # pragma: no cover + from io import StringIO + string_types = str, + text_type = str + from io import TextIOWrapper as file_type + import builtins + import configparser + import shutil + from urllib.parse import (urlparse, urlunparse, urljoin, quote, + unquote, urlsplit, urlunsplit, splittype) + from urllib.request import (urlopen, urlretrieve, Request, url2pathname, + pathname2url, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib.request import HTTPSHandler + from urllib.error import HTTPError, URLError, ContentTooShortError + import http.client as httplib + import urllib.request as urllib2 + import xmlrpc.client as xmlrpclib + import queue + from html.parser import HTMLParser + import html.entities as htmlentitydefs + raw_input = input + from itertools import filterfalse + filter = filter + + +try: + from ssl import match_hostname, CertificateError +except ImportError: # pragma: no cover + class CertificateError(ValueError): + pass + + + def _dnsname_match(dn, hostname, max_wildcards=1): + """Matching according to RFC 6125, section 6.4.3 + + http://tools.ietf.org/html/rfc6125#section-6.4.3 + """ + pats = [] + if not dn: + return False + + parts = dn.split('.') + leftmost, remainder = parts[0], parts[1:] + + wildcards = leftmost.count('*') + if wildcards > max_wildcards: + # Issue #17980: avoid denials of service by refusing more + # than one wildcard per fragment. A survey of established + # policy among SSL implementations showed it to be a + # reasonable choice. + raise CertificateError( + "too many wildcards in certificate DNS name: " + repr(dn)) + + # speed up common case w/o wildcards + if not wildcards: + return dn.lower() == hostname.lower() + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in which + # the wildcard character comprises a label other than the left-most label. + if leftmost == '*': + # When '*' is a fragment by itself, it matches a non-empty dotless + # fragment. + pats.append('[^.]+') + elif leftmost.startswith('xn--') or hostname.startswith('xn--'): + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + pats.append(re.escape(leftmost)) + else: + # Otherwise, '*' matches any dotless string, e.g. www* + pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) + + # add the remaining fragments, ignore any wildcards + for frag in remainder: + pats.append(re.escape(frag)) + + pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) + return pat.match(hostname) + + + def match_hostname(cert, hostname): + """Verify that *cert* (in decoded format as returned by + SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 + rules are followed, but IP addresses are not accepted for *hostname*. + + CertificateError is raised on failure. On success, the function + returns nothing. + """ + if not cert: + raise ValueError("empty or no certificate, match_hostname needs a " + "SSL socket or SSL context with either " + "CERT_OPTIONAL or CERT_REQUIRED") + dnsnames = [] + san = cert.get('subjectAltName', ()) + for key, value in san: + if key == 'DNS': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if not dnsnames: + # The subject is only checked when there is no dNSName entry + # in subjectAltName + for sub in cert.get('subject', ()): + for key, value in sub: + # XXX according to RFC 2818, the most specific Common Name + # must be used. + if key == 'commonName': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if len(dnsnames) > 1: + raise CertificateError("hostname %r " + "doesn't match either of %s" + % (hostname, ', '.join(map(repr, dnsnames)))) + elif len(dnsnames) == 1: + raise CertificateError("hostname %r " + "doesn't match %r" + % (hostname, dnsnames[0])) + else: + raise CertificateError("no appropriate commonName or " + "subjectAltName fields were found") + + +try: + from types import SimpleNamespace as Container +except ImportError: # pragma: no cover + class Container(object): + """ + A generic container for when multiple values need to be returned + """ + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +try: + from shutil import which +except ImportError: # pragma: no cover + # Implementation from Python 3.3 + def which(cmd, mode=os.F_OK | os.X_OK, path=None): + """Given a command, mode, and a PATH string, return the path which + conforms to the given mode on the PATH, or None if there is no such + file. + + `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result + of os.environ.get("PATH"), or can be overridden with a custom search + path. + + """ + # Check that a given file can be accessed with the correct mode. + # Additionally check that `file` is not a directory, as on Windows + # directories pass the os.access check. + def _access_check(fn, mode): + return (os.path.exists(fn) and os.access(fn, mode) + and not os.path.isdir(fn)) + + # If we're given a path with a directory part, look it up directly rather + # than referring to PATH directories. This includes checking relative to the + # current directory, e.g. ./script + if os.path.dirname(cmd): + if _access_check(cmd, mode): + return cmd + return None + + if path is None: + path = os.environ.get("PATH", os.defpath) + if not path: + return None + path = path.split(os.pathsep) + + if sys.platform == "win32": + # The current directory takes precedence on Windows. + if not os.curdir in path: + path.insert(0, os.curdir) + + # PATHEXT is necessary to check on Windows. + pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + # See if the given file matches any of the expected path extensions. + # This will allow us to short circuit when given "python.exe". + # If it does match, only test that one, otherwise we have to try + # others. + if any(cmd.lower().endswith(ext.lower()) for ext in pathext): + files = [cmd] + else: + files = [cmd + ext for ext in pathext] + else: + # On other platforms you don't have things like PATHEXT to tell you + # what file suffixes are executable, so just pass on cmd as-is. + files = [cmd] + + seen = set() + for dir in path: + normdir = os.path.normcase(dir) + if not normdir in seen: + seen.add(normdir) + for thefile in files: + name = os.path.join(dir, thefile) + if _access_check(name, mode): + return name + return None + + +# ZipFile is a context manager in 2.7, but not in 2.6 + +from zipfile import ZipFile as BaseZipFile + +if hasattr(BaseZipFile, '__enter__'): # pragma: no cover + ZipFile = BaseZipFile +else: # pragma: no cover + from zipfile import ZipExtFile as BaseZipExtFile + + class ZipExtFile(BaseZipExtFile): + def __init__(self, base): + self.__dict__.update(base.__dict__) + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + class ZipFile(BaseZipFile): + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + def open(self, *args, **kwargs): + base = BaseZipFile.open(self, *args, **kwargs) + return ZipExtFile(base) + +try: + from platform import python_implementation +except ImportError: # pragma: no cover + def python_implementation(): + """Return a string identifying the Python implementation.""" + if 'PyPy' in sys.version: + return 'PyPy' + if os.name == 'java': + return 'Jython' + if sys.version.startswith('IronPython'): + return 'IronPython' + return 'CPython' + +try: + import sysconfig +except ImportError: # pragma: no cover + from ._backport import sysconfig + +try: + callable = callable +except NameError: # pragma: no cover + from collections.abc import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode + fsdecode = os.fsdecode +except AttributeError: # pragma: no cover + # Issue #99: on some systems (e.g. containerised), + # sys.getfilesystemencoding() returns None, and we need a real value, + # so fall back to utf-8. From the CPython 2.7 docs relating to Unix and + # sys.getfilesystemencoding(): the return value is "the user’s preference + # according to the result of nl_langinfo(CODESET), or None if the + # nl_langinfo(CODESET) failed." + _fsencoding = sys.getfilesystemencoding() or 'utf-8' + if _fsencoding == 'mbcs': + _fserrors = 'strict' + else: + _fserrors = 'surrogateescape' + + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, text_type): + return filename.encode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + + def fsdecode(filename): + if isinstance(filename, text_type): + return filename + elif isinstance(filename, bytes): + return filename.decode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + +try: + from tokenize import detect_encoding +except ImportError: # pragma: no cover + from codecs import BOM_UTF8, lookup + import re + + cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") + + def _get_normal_name(orig_enc): + """Imitates get_normal_name in tokenizer.c.""" + # Only care about the first 12 characters. + enc = orig_enc[:12].lower().replace("_", "-") + if enc == "utf-8" or enc.startswith("utf-8-"): + return "utf-8" + if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \ + enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")): + return "iso-8859-1" + return orig_enc + + def detect_encoding(readline): + """ + The detect_encoding() function is used to detect the encoding that should + be used to decode a Python source file. It requires one argument, readline, + in the same way as the tokenize() generator. + + It will call readline a maximum of twice, and return the encoding used + (as a string) and a list of any lines (left as bytes) it has read in. + + It detects the encoding from the presence of a utf-8 bom or an encoding + cookie as specified in pep-0263. If both a bom and a cookie are present, + but disagree, a SyntaxError will be raised. If the encoding cookie is an + invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, + 'utf-8-sig' is returned. + + If no encoding is specified, then the default of 'utf-8' will be returned. + """ + try: + filename = readline.__self__.name + except AttributeError: + filename = None + bom_found = False + encoding = None + default = 'utf-8' + def read_or_stop(): + try: + return readline() + except StopIteration: + return b'' + + def find_cookie(line): + try: + # Decode as UTF-8. Either the line is an encoding declaration, + # in which case it should be pure ASCII, or it must be UTF-8 + # per default encoding. + line_string = line.decode('utf-8') + except UnicodeDecodeError: + msg = "invalid or missing encoding declaration" + if filename is not None: + msg = '{} for {!r}'.format(msg, filename) + raise SyntaxError(msg) + + matches = cookie_re.findall(line_string) + if not matches: + return None + encoding = _get_normal_name(matches[0]) + try: + codec = lookup(encoding) + except LookupError: + # This behaviour mimics the Python interpreter + if filename is None: + msg = "unknown encoding: " + encoding + else: + msg = "unknown encoding for {!r}: {}".format(filename, + encoding) + raise SyntaxError(msg) + + if bom_found: + if codec.name != 'utf-8': + # This behaviour mimics the Python interpreter + if filename is None: + msg = 'encoding problem: utf-8' + else: + msg = 'encoding problem for {!r}: utf-8'.format(filename) + raise SyntaxError(msg) + encoding += '-sig' + return encoding + + first = read_or_stop() + if first.startswith(BOM_UTF8): + bom_found = True + first = first[3:] + default = 'utf-8-sig' + if not first: + return default, [] + + encoding = find_cookie(first) + if encoding: + return encoding, [first] + + second = read_or_stop() + if not second: + return default, [first] + + encoding = find_cookie(second) + if encoding: + return encoding, [first, second] + + return default, [first, second] + +# For converting & <-> & etc. +try: + from html import escape +except ImportError: + from cgi import escape +if sys.version_info[:2] < (3, 4): + unescape = HTMLParser().unescape +else: + from html import unescape + +try: + from collections import ChainMap +except ImportError: # pragma: no cover + from collections import MutableMapping + + try: + from reprlib import recursive_repr as _recursive_repr + except ImportError: + def _recursive_repr(fillvalue='...'): + ''' + Decorator to make a repr function return fillvalue for a recursive + call + ''' + + def decorating_function(user_function): + repr_running = set() + + def wrapper(self): + key = id(self), get_ident() + if key in repr_running: + return fillvalue + repr_running.add(key) + try: + result = user_function(self) + finally: + repr_running.discard(key) + return result + + # Can't use functools.wraps() here because of bootstrap issues + wrapper.__module__ = getattr(user_function, '__module__') + wrapper.__doc__ = getattr(user_function, '__doc__') + wrapper.__name__ = getattr(user_function, '__name__') + wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) + return wrapper + + return decorating_function + + class ChainMap(MutableMapping): + ''' A ChainMap groups multiple dicts (or other mappings) together + to create a single, updateable view. + + The underlying mappings are stored in a list. That list is public and can + accessed or updated using the *maps* attribute. There is no other state. + + Lookups search the underlying mappings successively until a key is found. + In contrast, writes, updates, and deletions only operate on the first + mapping. + + ''' + + def __init__(self, *maps): + '''Initialize a ChainMap by setting *maps* to the given mappings. + If no mappings are provided, a single empty dictionary is used. + + ''' + self.maps = list(maps) or [{}] # always at least one map + + def __missing__(self, key): + raise KeyError(key) + + def __getitem__(self, key): + for mapping in self.maps: + try: + return mapping[key] # can't use 'key in mapping' with defaultdict + except KeyError: + pass + return self.__missing__(key) # support subclasses that define __missing__ + + def get(self, key, default=None): + return self[key] if key in self else default + + def __len__(self): + return len(set().union(*self.maps)) # reuses stored hash values if possible + + def __iter__(self): + return iter(set().union(*self.maps)) + + def __contains__(self, key): + return any(key in m for m in self.maps) + + def __bool__(self): + return any(self.maps) + + @_recursive_repr() + def __repr__(self): + return '{0.__class__.__name__}({1})'.format( + self, ', '.join(map(repr, self.maps))) + + @classmethod + def fromkeys(cls, iterable, *args): + 'Create a ChainMap with a single dict created from the iterable.' + return cls(dict.fromkeys(iterable, *args)) + + def copy(self): + 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' + return self.__class__(self.maps[0].copy(), *self.maps[1:]) + + __copy__ = copy + + def new_child(self): # like Django's Context.push() + 'New ChainMap with a new dict followed by all previous maps.' + return self.__class__({}, *self.maps) + + @property + def parents(self): # like Django's Context.pop() + 'New ChainMap from maps[1:].' + return self.__class__(*self.maps[1:]) + + def __setitem__(self, key, value): + self.maps[0][key] = value + + def __delitem__(self, key): + try: + del self.maps[0][key] + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def popitem(self): + 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' + try: + return self.maps[0].popitem() + except KeyError: + raise KeyError('No keys found in the first mapping.') + + def pop(self, key, *args): + 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' + try: + return self.maps[0].pop(key, *args) + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def clear(self): + 'Clear maps[0], leaving maps[1:] intact.' + self.maps[0].clear() + +try: + from importlib.util import cache_from_source # Python >= 3.4 +except ImportError: # pragma: no cover + try: + from imp import cache_from_source + except ImportError: # pragma: no cover + def cache_from_source(path, debug_override=None): + assert path.endswith('.py') + if debug_override is None: + debug_override = __debug__ + if debug_override: + suffix = 'c' + else: + suffix = 'o' + return path + suffix + +try: + from collections import OrderedDict +except ImportError: # pragma: no cover +## {{{ http://code.activestate.com/recipes/576693/ (r9) +# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. +# Passes Python2.7's test suite and incorporates all the latest updates. + try: + from thread import get_ident as _get_ident + except ImportError: + from dummy_thread import get_ident as _get_ident + + try: + from _abcoll import KeysView, ValuesView, ItemsView + except ImportError: + pass + + + class OrderedDict(dict): + 'Dictionary that remembers insertion order' + # An inherited dict maps keys to values. + # The inherited dict provides __getitem__, __len__, __contains__, and get. + # The remaining methods are order-aware. + # Big-O running times for all methods are the same as for regular dictionaries. + + # The internal self.__map dictionary maps keys to links in a doubly linked list. + # The circular doubly linked list starts and ends with a sentinel element. + # The sentinel element never gets deleted (this simplifies the algorithm). + # Each link is stored as a list of length three: [PREV, NEXT, KEY]. + + def __init__(self, *args, **kwds): + '''Initialize an ordered dictionary. Signature is the same as for + regular dictionaries, but keyword arguments are not recommended + because their insertion order is arbitrary. + + ''' + if len(args) > 1: + raise TypeError('expected at most 1 arguments, got %d' % len(args)) + try: + self.__root + except AttributeError: + self.__root = root = [] # sentinel node + root[:] = [root, root, None] + self.__map = {} + self.__update(*args, **kwds) + + def __setitem__(self, key, value, dict_setitem=dict.__setitem__): + 'od.__setitem__(i, y) <==> od[i]=y' + # Setting a new item creates a new link which goes at the end of the linked + # list, and the inherited dictionary is updated with the new key/value pair. + if key not in self: + root = self.__root + last = root[0] + last[1] = root[0] = self.__map[key] = [last, root, key] + dict_setitem(self, key, value) + + def __delitem__(self, key, dict_delitem=dict.__delitem__): + 'od.__delitem__(y) <==> del od[y]' + # Deleting an existing item uses self.__map to find the link which is + # then removed by updating the links in the predecessor and successor nodes. + dict_delitem(self, key) + link_prev, link_next, key = self.__map.pop(key) + link_prev[1] = link_next + link_next[0] = link_prev + + def __iter__(self): + 'od.__iter__() <==> iter(od)' + root = self.__root + curr = root[1] + while curr is not root: + yield curr[2] + curr = curr[1] + + def __reversed__(self): + 'od.__reversed__() <==> reversed(od)' + root = self.__root + curr = root[0] + while curr is not root: + yield curr[2] + curr = curr[0] + + def clear(self): + 'od.clear() -> None. Remove all items from od.' + try: + for node in self.__map.itervalues(): + del node[:] + root = self.__root + root[:] = [root, root, None] + self.__map.clear() + except AttributeError: + pass + dict.clear(self) + + def popitem(self, last=True): + '''od.popitem() -> (k, v), return and remove a (key, value) pair. + Pairs are returned in LIFO order if last is true or FIFO order if false. + + ''' + if not self: + raise KeyError('dictionary is empty') + root = self.__root + if last: + link = root[0] + link_prev = link[0] + link_prev[1] = root + root[0] = link_prev + else: + link = root[1] + link_next = link[1] + root[1] = link_next + link_next[0] = root + key = link[2] + del self.__map[key] + value = dict.pop(self, key) + return key, value + + # -- the following methods do not depend on the internal structure -- + + def keys(self): + 'od.keys() -> list of keys in od' + return list(self) + + def values(self): + 'od.values() -> list of values in od' + return [self[key] for key in self] + + def items(self): + 'od.items() -> list of (key, value) pairs in od' + return [(key, self[key]) for key in self] + + def iterkeys(self): + 'od.iterkeys() -> an iterator over the keys in od' + return iter(self) + + def itervalues(self): + 'od.itervalues -> an iterator over the values in od' + for k in self: + yield self[k] + + def iteritems(self): + 'od.iteritems -> an iterator over the (key, value) items in od' + for k in self: + yield (k, self[k]) + + def update(*args, **kwds): + '''od.update(E, **F) -> None. Update od from dict/iterable E and F. + + If E is a dict instance, does: for k in E: od[k] = E[k] + If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] + Or if E is an iterable of items, does: for k, v in E: od[k] = v + In either case, this is followed by: for k, v in F.items(): od[k] = v + + ''' + if len(args) > 2: + raise TypeError('update() takes at most 2 positional ' + 'arguments (%d given)' % (len(args),)) + elif not args: + raise TypeError('update() takes at least 1 argument (0 given)') + self = args[0] + # Make progressively weaker assumptions about "other" + other = () + if len(args) == 2: + other = args[1] + if isinstance(other, dict): + for key in other: + self[key] = other[key] + elif hasattr(other, 'keys'): + for key in other.keys(): + self[key] = other[key] + else: + for key, value in other: + self[key] = value + for key, value in kwds.items(): + self[key] = value + + __update = update # let subclasses override update without breaking __init__ + + __marker = object() + + def pop(self, key, default=__marker): + '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. + If key is not found, d is returned if given, otherwise KeyError is raised. + + ''' + if key in self: + result = self[key] + del self[key] + return result + if default is self.__marker: + raise KeyError(key) + return default + + def setdefault(self, key, default=None): + 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' + if key in self: + return self[key] + self[key] = default + return default + + def __repr__(self, _repr_running=None): + 'od.__repr__() <==> repr(od)' + if not _repr_running: _repr_running = {} + call_key = id(self), _get_ident() + if call_key in _repr_running: + return '...' + _repr_running[call_key] = 1 + try: + if not self: + return '%s()' % (self.__class__.__name__,) + return '%s(%r)' % (self.__class__.__name__, self.items()) + finally: + del _repr_running[call_key] + + def __reduce__(self): + 'Return state information for pickling' + items = [[k, self[k]] for k in self] + inst_dict = vars(self).copy() + for k in vars(OrderedDict()): + inst_dict.pop(k, None) + if inst_dict: + return (self.__class__, (items,), inst_dict) + return self.__class__, (items,) + + def copy(self): + 'od.copy() -> a shallow copy of od' + return self.__class__(self) + + @classmethod + def fromkeys(cls, iterable, value=None): + '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S + and values equal to v (which defaults to None). + + ''' + d = cls() + for key in iterable: + d[key] = value + return d + + def __eq__(self, other): + '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive + while comparison to a regular mapping is order-insensitive. + + ''' + if isinstance(other, OrderedDict): + return len(self)==len(other) and self.items() == other.items() + return dict.__eq__(self, other) + + def __ne__(self, other): + return not self == other + + # -- the following methods are only used in Python 2.7 -- + + def viewkeys(self): + "od.viewkeys() -> a set-like object providing a view on od's keys" + return KeysView(self) + + def viewvalues(self): + "od.viewvalues() -> an object providing a view on od's values" + return ValuesView(self) + + def viewitems(self): + "od.viewitems() -> a set-like object providing a view on od's items" + return ItemsView(self) + +try: + from logging.config import BaseConfigurator, valid_ident +except ImportError: # pragma: no cover + IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) + + + def valid_ident(s): + m = IDENTIFIER.match(s) + if not m: + raise ValueError('Not a valid Python identifier: %r' % s) + return True + + + # The ConvertingXXX classes are wrappers around standard Python containers, + # and they serve to convert any suitable values in the container. The + # conversion converts base dicts, lists and tuples to their wrapped + # equivalents, whereas strings which match a conversion format are converted + # appropriately. + # + # Each wrapper should have a configurator attribute holding the actual + # configurator to use for conversion. + + class ConvertingDict(dict): + """A converting dictionary wrapper.""" + + def __getitem__(self, key): + value = dict.__getitem__(self, key) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def get(self, key, default=None): + value = dict.get(self, key, default) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, key, default=None): + value = dict.pop(self, key, default) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class ConvertingList(list): + """A converting list wrapper.""" + def __getitem__(self, key): + value = list.__getitem__(self, key) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, idx=-1): + value = list.pop(self, idx) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + return result + + class ConvertingTuple(tuple): + """A converting tuple wrapper.""" + def __getitem__(self, key): + value = tuple.__getitem__(self, key) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class BaseConfigurator(object): + """ + The configurator base class which defines some useful defaults. + """ + + CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') + + WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') + DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') + INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') + DIGIT_PATTERN = re.compile(r'^\d+$') + + value_converters = { + 'ext' : 'ext_convert', + 'cfg' : 'cfg_convert', + } + + # We might want to use a different one, e.g. importlib + importer = staticmethod(__import__) + + def __init__(self, config): + self.config = ConvertingDict(config) + self.config.configurator = self + + def resolve(self, s): + """ + Resolve strings to objects using standard import and attribute + syntax. + """ + name = s.split('.') + used = name.pop(0) + try: + found = self.importer(used) + for frag in name: + used += '.' + frag + try: + found = getattr(found, frag) + except AttributeError: + self.importer(used) + found = getattr(found, frag) + return found + except ImportError: + e, tb = sys.exc_info()[1:] + v = ValueError('Cannot resolve %r: %s' % (s, e)) + v.__cause__, v.__traceback__ = e, tb + raise v + + def ext_convert(self, value): + """Default converter for the ext:// protocol.""" + return self.resolve(value) + + def cfg_convert(self, value): + """Default converter for the cfg:// protocol.""" + rest = value + m = self.WORD_PATTERN.match(rest) + if m is None: + raise ValueError("Unable to convert %r" % value) + else: + rest = rest[m.end():] + d = self.config[m.groups()[0]] + #print d, rest + while rest: + m = self.DOT_PATTERN.match(rest) + if m: + d = d[m.groups()[0]] + else: + m = self.INDEX_PATTERN.match(rest) + if m: + idx = m.groups()[0] + if not self.DIGIT_PATTERN.match(idx): + d = d[idx] + else: + try: + n = int(idx) # try as number first (most likely) + d = d[n] + except TypeError: + d = d[idx] + if m: + rest = rest[m.end():] + else: + raise ValueError('Unable to convert ' + '%r at %r' % (value, rest)) + #rest should be empty + return d + + def convert(self, value): + """ + Convert values to an appropriate type. dicts, lists and tuples are + replaced by their converting alternatives. Strings are checked to + see if they have a conversion format and are converted if they do. + """ + if not isinstance(value, ConvertingDict) and isinstance(value, dict): + value = ConvertingDict(value) + value.configurator = self + elif not isinstance(value, ConvertingList) and isinstance(value, list): + value = ConvertingList(value) + value.configurator = self + elif not isinstance(value, ConvertingTuple) and\ + isinstance(value, tuple): + value = ConvertingTuple(value) + value.configurator = self + elif isinstance(value, string_types): + m = self.CONVERT_PATTERN.match(value) + if m: + d = m.groupdict() + prefix = d['prefix'] + converter = self.value_converters.get(prefix, None) + if converter: + suffix = d['suffix'] + converter = getattr(self, converter) + value = converter(suffix) + return value + + def configure_custom(self, config): + """Configure an object with a user-supplied factory.""" + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) + result = c(**kwargs) + if props: + for name, value in props.items(): + setattr(result, name, value) + return result + + def as_tuple(self, value): + """Utility function which converts lists to tuples.""" + if isinstance(value, list): + value = tuple(value) + return value diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/database.py b/venv/Lib/site-packages/pip/_vendor/distlib/database.py new file mode 100644 index 00000000..0a90c300 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/database.py @@ -0,0 +1,1339 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2017 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""PEP 376 implementation.""" + +from __future__ import unicode_literals + +import base64 +import codecs +import contextlib +import hashlib +import logging +import os +import posixpath +import sys +import zipimport + +from . import DistlibException, resources +from .compat import StringIO +from .version import get_scheme, UnsupportedVersionError +from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME) +from .util import (parse_requirement, cached_property, parse_name_and_version, + read_exports, write_exports, CSVReader, CSVWriter) + + +__all__ = ['Distribution', 'BaseInstalledDistribution', + 'InstalledDistribution', 'EggInfoDistribution', + 'DistributionPath'] + + +logger = logging.getLogger(__name__) + +EXPORTS_FILENAME = 'pydist-exports.json' +COMMANDS_FILENAME = 'pydist-commands.json' + +DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', + 'RESOURCES', EXPORTS_FILENAME, 'SHARED') + +DISTINFO_EXT = '.dist-info' + + +class _Cache(object): + """ + A simple cache mapping names and .dist-info paths to distributions + """ + def __init__(self): + """ + Initialise an instance. There is normally one for each DistributionPath. + """ + self.name = {} + self.path = {} + self.generated = False + + def clear(self): + """ + Clear the cache, setting it to its initial state. + """ + self.name.clear() + self.path.clear() + self.generated = False + + def add(self, dist): + """ + Add a distribution to the cache. + :param dist: The distribution to add. + """ + if dist.path not in self.path: + self.path[dist.path] = dist + self.name.setdefault(dist.key, []).append(dist) + + +class DistributionPath(object): + """ + Represents a set of distributions installed on a path (typically sys.path). + """ + def __init__(self, path=None, include_egg=False): + """ + Create an instance from a path, optionally including legacy (distutils/ + setuptools/distribute) distributions. + :param path: The path to use, as a list of directories. If not specified, + sys.path is used. + :param include_egg: If True, this instance will look for and return legacy + distributions as well as those based on PEP 376. + """ + if path is None: + path = sys.path + self.path = path + self._include_dist = True + self._include_egg = include_egg + + self._cache = _Cache() + self._cache_egg = _Cache() + self._cache_enabled = True + self._scheme = get_scheme('default') + + def _get_cache_enabled(self): + return self._cache_enabled + + def _set_cache_enabled(self, value): + self._cache_enabled = value + + cache_enabled = property(_get_cache_enabled, _set_cache_enabled) + + def clear_cache(self): + """ + Clears the internal cache. + """ + self._cache.clear() + self._cache_egg.clear() + + + def _yield_distributions(self): + """ + Yield .dist-info and/or .egg(-info) distributions. + """ + # We need to check if we've seen some resources already, because on + # some Linux systems (e.g. some Debian/Ubuntu variants) there are + # symlinks which alias other files in the environment. + seen = set() + for path in self.path: + finder = resources.finder_for_path(path) + if finder is None: + continue + r = finder.find('') + if not r or not r.is_container: + continue + rset = sorted(r.resources) + for entry in rset: + r = finder.find(entry) + if not r or r.path in seen: + continue + if self._include_dist and entry.endswith(DISTINFO_EXT): + possible_filenames = [METADATA_FILENAME, + WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME] + for metadata_filename in possible_filenames: + metadata_path = posixpath.join(entry, metadata_filename) + pydist = finder.find(metadata_path) + if pydist: + break + else: + continue + + with contextlib.closing(pydist.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + logger.debug('Found %s', r.path) + seen.add(r.path) + yield new_dist_class(r.path, metadata=metadata, + env=self) + elif self._include_egg and entry.endswith(('.egg-info', + '.egg')): + logger.debug('Found %s', r.path) + seen.add(r.path) + yield old_dist_class(r.path, self) + + def _generate_cache(self): + """ + Scan the path for distributions and populate the cache with + those that are found. + """ + gen_dist = not self._cache.generated + gen_egg = self._include_egg and not self._cache_egg.generated + if gen_dist or gen_egg: + for dist in self._yield_distributions(): + if isinstance(dist, InstalledDistribution): + self._cache.add(dist) + else: + self._cache_egg.add(dist) + + if gen_dist: + self._cache.generated = True + if gen_egg: + self._cache_egg.generated = True + + @classmethod + def distinfo_dirname(cls, name, version): + """ + The *name* and *version* parameters are converted into their + filename-escaped form, i.e. any ``'-'`` characters are replaced + with ``'_'`` other than the one in ``'dist-info'`` and the one + separating the name from the version number. + + :parameter name: is converted to a standard distribution name by replacing + any runs of non- alphanumeric characters with a single + ``'-'``. + :type name: string + :parameter version: is converted to a standard version string. Spaces + become dots, and all other non-alphanumeric characters + (except dots) become dashes, with runs of multiple + dashes condensed to a single dash. + :type version: string + :returns: directory name + :rtype: string""" + name = name.replace('-', '_') + return '-'.join([name, version]) + DISTINFO_EXT + + def get_distributions(self): + """ + Provides an iterator that looks for distributions and returns + :class:`InstalledDistribution` or + :class:`EggInfoDistribution` instances for each one of them. + + :rtype: iterator of :class:`InstalledDistribution` and + :class:`EggInfoDistribution` instances + """ + if not self._cache_enabled: + for dist in self._yield_distributions(): + yield dist + else: + self._generate_cache() + + for dist in self._cache.path.values(): + yield dist + + if self._include_egg: + for dist in self._cache_egg.path.values(): + yield dist + + def get_distribution(self, name): + """ + Looks for a named distribution on the path. + + This function only returns the first result found, as no more than one + value is expected. If nothing is found, ``None`` is returned. + + :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` + or ``None`` + """ + result = None + name = name.lower() + if not self._cache_enabled: + for dist in self._yield_distributions(): + if dist.key == name: + result = dist + break + else: + self._generate_cache() + + if name in self._cache.name: + result = self._cache.name[name][0] + elif self._include_egg and name in self._cache_egg.name: + result = self._cache_egg.name[name][0] + return result + + def provides_distribution(self, name, version=None): + """ + Iterates over all distributions to find which distributions provide *name*. + If a *version* is provided, it will be used to filter the results. + + This function only returns the first result found, since no more than + one values are expected. If the directory is not found, returns ``None``. + + :parameter version: a version specifier that indicates the version + required, conforming to the format in ``PEP-345`` + + :type name: string + :type version: string + """ + matcher = None + if version is not None: + try: + matcher = self._scheme.matcher('%s (%s)' % (name, version)) + except ValueError: + raise DistlibException('invalid name or version: %r, %r' % + (name, version)) + + for dist in self.get_distributions(): + # We hit a problem on Travis where enum34 was installed and doesn't + # have a provides attribute ... + if not hasattr(dist, 'provides'): + logger.debug('No "provides": %s', dist) + else: + provided = dist.provides + + for p in provided: + p_name, p_ver = parse_name_and_version(p) + if matcher is None: + if p_name == name: + yield dist + break + else: + if p_name == name and matcher.match(p_ver): + yield dist + break + + def get_file_path(self, name, relative_path): + """ + Return the path to a resource file. + """ + dist = self.get_distribution(name) + if dist is None: + raise LookupError('no distribution named %r found' % name) + return dist.get_resource_path(relative_path) + + def get_exported_entries(self, category, name=None): + """ + Return all of the exported entries in a particular category. + + :param category: The category to search for entries. + :param name: If specified, only entries with that name are returned. + """ + for dist in self.get_distributions(): + r = dist.exports + if category in r: + d = r[category] + if name is not None: + if name in d: + yield d[name] + else: + for v in d.values(): + yield v + + +class Distribution(object): + """ + A base class for distributions, whether installed or from indexes. + Either way, it must have some metadata, so that's all that's needed + for construction. + """ + + build_time_dependency = False + """ + Set to True if it's known to be only a build-time dependency (i.e. + not needed after installation). + """ + + requested = False + """A boolean that indicates whether the ``REQUESTED`` metadata file is + present (in other words, whether the package was installed by user + request or it was installed as a dependency).""" + + def __init__(self, metadata): + """ + Initialise an instance. + :param metadata: The instance of :class:`Metadata` describing this + distribution. + """ + self.metadata = metadata + self.name = metadata.name + self.key = self.name.lower() # for case-insensitive comparisons + self.version = metadata.version + self.locator = None + self.digest = None + self.extras = None # additional features requested + self.context = None # environment marker overrides + self.download_urls = set() + self.digests = {} + + @property + def source_url(self): + """ + The source archive download URL for this distribution. + """ + return self.metadata.source_url + + download_url = source_url # Backward compatibility + + @property + def name_and_version(self): + """ + A utility property which displays the name and version in parentheses. + """ + return '%s (%s)' % (self.name, self.version) + + @property + def provides(self): + """ + A set of distribution names and versions provided by this distribution. + :return: A set of "name (version)" strings. + """ + plist = self.metadata.provides + s = '%s (%s)' % (self.name, self.version) + if s not in plist: + plist.append(s) + return plist + + def _get_requirements(self, req_attr): + md = self.metadata + logger.debug('Getting requirements from metadata %r', md.todict()) + reqts = getattr(md, req_attr) + return set(md.get_requirements(reqts, extras=self.extras, + env=self.context)) + + @property + def run_requires(self): + return self._get_requirements('run_requires') + + @property + def meta_requires(self): + return self._get_requirements('meta_requires') + + @property + def build_requires(self): + return self._get_requirements('build_requires') + + @property + def test_requires(self): + return self._get_requirements('test_requires') + + @property + def dev_requires(self): + return self._get_requirements('dev_requires') + + def matches_requirement(self, req): + """ + Say if this instance matches (fulfills) a requirement. + :param req: The requirement to match. + :rtype req: str + :return: True if it matches, else False. + """ + # Requirement may contain extras - parse to lose those + # from what's passed to the matcher + r = parse_requirement(req) + scheme = get_scheme(self.metadata.scheme) + try: + matcher = scheme.matcher(r.requirement) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + result = False + for p in self.provides: + p_name, p_ver = parse_name_and_version(p) + if p_name != name: + continue + try: + result = matcher.match(p_ver) + break + except UnsupportedVersionError: + pass + return result + + def __repr__(self): + """ + Return a textual representation of this instance, + """ + if self.source_url: + suffix = ' [%s]' % self.source_url + else: + suffix = '' + return '' % (self.name, self.version, suffix) + + def __eq__(self, other): + """ + See if this distribution is the same as another. + :param other: The distribution to compare with. To be equal to one + another. distributions must have the same type, name, + version and source_url. + :return: True if it is the same, else False. + """ + if type(other) is not type(self): + result = False + else: + result = (self.name == other.name and + self.version == other.version and + self.source_url == other.source_url) + return result + + def __hash__(self): + """ + Compute hash in a way which matches the equality test. + """ + return hash(self.name) + hash(self.version) + hash(self.source_url) + + +class BaseInstalledDistribution(Distribution): + """ + This is the base class for installed distributions (whether PEP 376 or + legacy). + """ + + hasher = None + + def __init__(self, metadata, path, env=None): + """ + Initialise an instance. + :param metadata: An instance of :class:`Metadata` which describes the + distribution. This will normally have been initialised + from a metadata file in the ``path``. + :param path: The path of the ``.dist-info`` or ``.egg-info`` + directory for the distribution. + :param env: This is normally the :class:`DistributionPath` + instance where this distribution was found. + """ + super(BaseInstalledDistribution, self).__init__(metadata) + self.path = path + self.dist_path = env + + def get_hash(self, data, hasher=None): + """ + Get the hash of some data, using a particular hash algorithm, if + specified. + + :param data: The data to be hashed. + :type data: bytes + :param hasher: The name of a hash implementation, supported by hashlib, + or ``None``. Examples of valid values are ``'sha1'``, + ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and + ``'sha512'``. If no hasher is specified, the ``hasher`` + attribute of the :class:`InstalledDistribution` instance + is used. If the hasher is determined to be ``None``, MD5 + is used as the hashing algorithm. + :returns: The hash of the data. If a hasher was explicitly specified, + the returned hash will be prefixed with the specified hasher + followed by '='. + :rtype: str + """ + if hasher is None: + hasher = self.hasher + if hasher is None: + hasher = hashlib.md5 + prefix = '' + else: + hasher = getattr(hashlib, hasher) + prefix = '%s=' % self.hasher + digest = hasher(data).digest() + digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') + return '%s%s' % (prefix, digest) + + +class InstalledDistribution(BaseInstalledDistribution): + """ + Created with the *path* of the ``.dist-info`` directory provided to the + constructor. It reads the metadata contained in ``pydist.json`` when it is + instantiated., or uses a passed in Metadata instance (useful for when + dry-run mode is being used). + """ + + hasher = 'sha256' + + def __init__(self, path, metadata=None, env=None): + self.modules = [] + self.finder = finder = resources.finder_for_path(path) + if finder is None: + raise ValueError('finder unavailable for %s' % path) + if env and env._cache_enabled and path in env._cache.path: + metadata = env._cache.path[path].metadata + elif metadata is None: + r = finder.find(METADATA_FILENAME) + # Temporary - for Wheel 0.23 support + if r is None: + r = finder.find(WHEEL_METADATA_FILENAME) + # Temporary - for legacy support + if r is None: + r = finder.find(LEGACY_METADATA_FILENAME) + if r is None: + raise ValueError('no %s found in %s' % (METADATA_FILENAME, + path)) + with contextlib.closing(r.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + + super(InstalledDistribution, self).__init__(metadata, path, env) + + if env and env._cache_enabled: + env._cache.add(self) + + r = finder.find('REQUESTED') + self.requested = r is not None + p = os.path.join(path, 'top_level.txt') + if os.path.exists(p): + with open(p, 'rb') as f: + data = f.read().decode('utf-8') + self.modules = data.splitlines() + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def _get_records(self): + """ + Get the list of installed files for the distribution + :return: A list of tuples of path, hash and size. Note that hash and + size might be ``None`` for some entries. The path is exactly + as stored in the file (which is as in PEP 376). + """ + results = [] + r = self.get_distinfo_resource('RECORD') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as record_reader: + # Base location is parent dir of .dist-info dir + #base_location = os.path.dirname(self.path) + #base_location = os.path.abspath(base_location) + for row in record_reader: + missing = [None for i in range(len(row), 3)] + path, checksum, size = row + missing + #if not os.path.isabs(path): + # path = path.replace('/', os.sep) + # path = os.path.join(base_location, path) + results.append((path, checksum, size)) + return results + + @cached_property + def exports(self): + """ + Return the information exported by this distribution. + :return: A dictionary of exports, mapping an export category to a dict + of :class:`ExportEntry` instances describing the individual + export entries, and keyed by name. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + result = self.read_exports() + return result + + def read_exports(self): + """ + Read exports data from a file in .ini format. + + :return: A dictionary of exports, mapping an export category to a list + of :class:`ExportEntry` instances describing the individual + export entries. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + with contextlib.closing(r.as_stream()) as stream: + result = read_exports(stream) + return result + + def write_exports(self, exports): + """ + Write a dictionary of exports to a file in .ini format. + :param exports: A dictionary of exports, mapping an export category to + a list of :class:`ExportEntry` instances describing the + individual export entries. + """ + rf = self.get_distinfo_file(EXPORTS_FILENAME) + with open(rf, 'w') as f: + write_exports(exports, f) + + def get_resource_path(self, relative_path): + """ + NOTE: This API may change in the future. + + Return the absolute path to a resource file with the given relative + path. + + :param relative_path: The path, relative to .dist-info, of the resource + of interest. + :return: The absolute path where the resource is to be found. + """ + r = self.get_distinfo_resource('RESOURCES') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as resources_reader: + for relative, destination in resources_reader: + if relative == relative_path: + return destination + raise KeyError('no resource file with relative path %r ' + 'is installed' % relative_path) + + def list_installed_files(self): + """ + Iterates over the ``RECORD`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: iterator of (path, hash, size) + """ + for result in self._get_records(): + yield result + + def write_installed_files(self, paths, prefix, dry_run=False): + """ + Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any + existing ``RECORD`` file is silently overwritten. + + prefix is used to determine when to write absolute paths. + """ + prefix = os.path.join(prefix, '') + base = os.path.dirname(self.path) + base_under_prefix = base.startswith(prefix) + base = os.path.join(base, '') + record_path = self.get_distinfo_file('RECORD') + logger.info('creating %s', record_path) + if dry_run: + return None + with CSVWriter(record_path) as writer: + for path in paths: + if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): + # do not put size and hash, as in PEP-376 + hash_value = size = '' + else: + size = '%d' % os.path.getsize(path) + with open(path, 'rb') as fp: + hash_value = self.get_hash(fp.read()) + if path.startswith(base) or (base_under_prefix and + path.startswith(prefix)): + path = os.path.relpath(path, base) + writer.writerow((path, hash_value, size)) + + # add the RECORD file itself + if record_path.startswith(base): + record_path = os.path.relpath(record_path, base) + writer.writerow((record_path, '', '')) + return record_path + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + base = os.path.dirname(self.path) + record_path = self.get_distinfo_file('RECORD') + for path, hash_value, size in self.list_installed_files(): + if not os.path.isabs(path): + path = os.path.join(base, path) + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + elif os.path.isfile(path): + actual_size = str(os.path.getsize(path)) + if size and actual_size != size: + mismatches.append((path, 'size', size, actual_size)) + elif hash_value: + if '=' in hash_value: + hasher = hash_value.split('=', 1)[0] + else: + hasher = None + + with open(path, 'rb') as f: + actual_hash = self.get_hash(f.read(), hasher) + if actual_hash != hash_value: + mismatches.append((path, 'hash', hash_value, actual_hash)) + return mismatches + + @cached_property + def shared_locations(self): + """ + A dictionary of shared locations whose keys are in the set 'prefix', + 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. + The corresponding value is the absolute path of that category for + this distribution, and takes into account any paths selected by the + user at installation time (e.g. via command-line arguments). In the + case of the 'namespace' key, this would be a list of absolute paths + for the roots of namespace packages in this distribution. + + The first time this property is accessed, the relevant information is + read from the SHARED file in the .dist-info directory. + """ + result = {} + shared_path = os.path.join(self.path, 'SHARED') + if os.path.isfile(shared_path): + with codecs.open(shared_path, 'r', encoding='utf-8') as f: + lines = f.read().splitlines() + for line in lines: + key, value = line.split('=', 1) + if key == 'namespace': + result.setdefault(key, []).append(value) + else: + result[key] = value + return result + + def write_shared_locations(self, paths, dry_run=False): + """ + Write shared location information to the SHARED file in .dist-info. + :param paths: A dictionary as described in the documentation for + :meth:`shared_locations`. + :param dry_run: If True, the action is logged but no file is actually + written. + :return: The path of the file written to. + """ + shared_path = os.path.join(self.path, 'SHARED') + logger.info('creating %s', shared_path) + if dry_run: + return None + lines = [] + for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): + path = paths[key] + if os.path.isdir(paths[key]): + lines.append('%s=%s' % (key, path)) + for ns in paths.get('namespace', ()): + lines.append('namespace=%s' % ns) + + with codecs.open(shared_path, 'w', encoding='utf-8') as f: + f.write('\n'.join(lines)) + return shared_path + + def get_distinfo_resource(self, path): + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + finder = resources.finder_for_path(self.path) + if finder is None: + raise DistlibException('Unable to get a finder for %s' % self.path) + return finder.find(path) + + def get_distinfo_file(self, path): + """ + Returns a path located under the ``.dist-info`` directory. Returns a + string representing the path. + + :parameter path: a ``'/'``-separated path relative to the + ``.dist-info`` directory or an absolute path; + If *path* is an absolute path and doesn't start + with the ``.dist-info`` directory path, + a :class:`DistlibException` is raised + :type path: str + :rtype: str + """ + # Check if it is an absolute path # XXX use relpath, add tests + if path.find(os.sep) >= 0: + # it's an absolute path? + distinfo_dirname, path = path.split(os.sep)[-2:] + if distinfo_dirname != self.path.split(os.sep)[-1]: + raise DistlibException( + 'dist-info file %r does not belong to the %r %s ' + 'distribution' % (path, self.name, self.version)) + + # The file must be relative + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + + return os.path.join(self.path, path) + + def list_distinfo_files(self): + """ + Iterates over the ``RECORD`` entries and returns paths for each line if + the path is pointing to a file located in the ``.dist-info`` directory + or one of its subdirectories. + + :returns: iterator of paths + """ + base = os.path.dirname(self.path) + for path, checksum, size in self._get_records(): + # XXX add separator or use real relpath algo + if not os.path.isabs(path): + path = os.path.join(base, path) + if path.startswith(self.path): + yield path + + def __eq__(self, other): + return (isinstance(other, InstalledDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + + +class EggInfoDistribution(BaseInstalledDistribution): + """Created with the *path* of the ``.egg-info`` directory or file provided + to the constructor. It reads the metadata contained in the file itself, or + if the given path happens to be a directory, the metadata is read from the + file ``PKG-INFO`` under that directory.""" + + requested = True # as we have no way of knowing, assume it was + shared_locations = {} + + def __init__(self, path, env=None): + def set_name_and_version(s, n, v): + s.name = n + s.key = n.lower() # for case-insensitive comparisons + s.version = v + + self.path = path + self.dist_path = env + if env and env._cache_enabled and path in env._cache_egg.path: + metadata = env._cache_egg.path[path].metadata + set_name_and_version(self, metadata.name, metadata.version) + else: + metadata = self._get_metadata(path) + + # Need to be set before caching + set_name_and_version(self, metadata.name, metadata.version) + + if env and env._cache_enabled: + env._cache_egg.add(self) + super(EggInfoDistribution, self).__init__(metadata, path, env) + + def _get_metadata(self, path): + requires = None + + def parse_requires_data(data): + """Create a list of dependencies from a requires.txt file. + + *data*: the contents of a setuptools-produced requires.txt file. + """ + reqs = [] + lines = data.splitlines() + for line in lines: + line = line.strip() + if line.startswith('['): + logger.warning('Unexpected line: quitting requirement scan: %r', + line) + break + r = parse_requirement(line) + if not r: + logger.warning('Not recognised as a requirement: %r', line) + continue + if r.extras: + logger.warning('extra requirements in requires.txt are ' + 'not supported') + if not r.constraints: + reqs.append(r.name) + else: + cons = ', '.join('%s%s' % c for c in r.constraints) + reqs.append('%s (%s)' % (r.name, cons)) + return reqs + + def parse_requires_path(req_path): + """Create a list of dependencies from a requires.txt file. + + *req_path*: the path to a setuptools-produced requires.txt file. + """ + + reqs = [] + try: + with codecs.open(req_path, 'r', 'utf-8') as fp: + reqs = parse_requires_data(fp.read()) + except IOError: + pass + return reqs + + tl_path = tl_data = None + if path.endswith('.egg'): + if os.path.isdir(path): + p = os.path.join(path, 'EGG-INFO') + meta_path = os.path.join(p, 'PKG-INFO') + metadata = Metadata(path=meta_path, scheme='legacy') + req_path = os.path.join(p, 'requires.txt') + tl_path = os.path.join(p, 'top_level.txt') + requires = parse_requires_path(req_path) + else: + # FIXME handle the case where zipfile is not available + zipf = zipimport.zipimporter(path) + fileobj = StringIO( + zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) + metadata = Metadata(fileobj=fileobj, scheme='legacy') + try: + data = zipf.get_data('EGG-INFO/requires.txt') + tl_data = zipf.get_data('EGG-INFO/top_level.txt').decode('utf-8') + requires = parse_requires_data(data.decode('utf-8')) + except IOError: + requires = None + elif path.endswith('.egg-info'): + if os.path.isdir(path): + req_path = os.path.join(path, 'requires.txt') + requires = parse_requires_path(req_path) + path = os.path.join(path, 'PKG-INFO') + tl_path = os.path.join(path, 'top_level.txt') + metadata = Metadata(path=path, scheme='legacy') + else: + raise DistlibException('path must end with .egg-info or .egg, ' + 'got %r' % path) + + if requires: + metadata.add_requirements(requires) + # look for top-level modules in top_level.txt, if present + if tl_data is None: + if tl_path is not None and os.path.exists(tl_path): + with open(tl_path, 'rb') as f: + tl_data = f.read().decode('utf-8') + if not tl_data: + tl_data = [] + else: + tl_data = tl_data.splitlines() + self.modules = tl_data + return metadata + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + for path, _, _ in self.list_installed_files(): + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + return mismatches + + def list_installed_files(self): + """ + Iterates over the ``installed-files.txt`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: a list of (path, hash, size) + """ + + def _md5(path): + f = open(path, 'rb') + try: + content = f.read() + finally: + f.close() + return hashlib.md5(content).hexdigest() + + def _size(path): + return os.stat(path).st_size + + record_path = os.path.join(self.path, 'installed-files.txt') + result = [] + if os.path.exists(record_path): + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + p = os.path.normpath(os.path.join(self.path, line)) + # "./" is present as a marker between installed files + # and installation metadata files + if not os.path.exists(p): + logger.warning('Non-existent file: %s', p) + if p.endswith(('.pyc', '.pyo')): + continue + #otherwise fall through and fail + if not os.path.isdir(p): + result.append((p, _md5(p), _size(p))) + result.append((record_path, None, None)) + return result + + def list_distinfo_files(self, absolute=False): + """ + Iterates over the ``installed-files.txt`` entries and returns paths for + each line if the path is pointing to a file located in the + ``.egg-info`` directory or one of its subdirectories. + + :parameter absolute: If *absolute* is ``True``, each returned path is + transformed into a local absolute path. Otherwise the + raw value from ``installed-files.txt`` is returned. + :type absolute: boolean + :returns: iterator of paths + """ + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + skip = True + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line == './': + skip = False + continue + if not skip: + p = os.path.normpath(os.path.join(self.path, line)) + if p.startswith(self.path): + if absolute: + yield p + else: + yield line + + def __eq__(self, other): + return (isinstance(other, EggInfoDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + +new_dist_class = InstalledDistribution +old_dist_class = EggInfoDistribution + + +class DependencyGraph(object): + """ + Represents a dependency graph between distributions. + + The dependency relationships are stored in an ``adjacency_list`` that maps + distributions to a list of ``(other, label)`` tuples where ``other`` + is a distribution and the edge is labeled with ``label`` (i.e. the version + specifier, if such was provided). Also, for more efficient traversal, for + every distribution ``x``, a list of predecessors is kept in + ``reverse_list[x]``. An edge from distribution ``a`` to + distribution ``b`` means that ``a`` depends on ``b``. If any missing + dependencies are found, they are stored in ``missing``, which is a + dictionary that maps distributions to a list of requirements that were not + provided by any other distributions. + """ + + def __init__(self): + self.adjacency_list = {} + self.reverse_list = {} + self.missing = {} + + def add_distribution(self, distribution): + """Add the *distribution* to the graph. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + """ + self.adjacency_list[distribution] = [] + self.reverse_list[distribution] = [] + #self.missing[distribution] = [] + + def add_edge(self, x, y, label=None): + """Add an edge from distribution *x* to distribution *y* with the given + *label*. + + :type x: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type y: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type label: ``str`` or ``None`` + """ + self.adjacency_list[x].append((y, label)) + # multiple edges are allowed, so be careful + if x not in self.reverse_list[y]: + self.reverse_list[y].append(x) + + def add_missing(self, distribution, requirement): + """ + Add a missing *requirement* for the given *distribution*. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + :type requirement: ``str`` + """ + logger.debug('%s missing %r', distribution, requirement) + self.missing.setdefault(distribution, []).append(requirement) + + def _repr_dist(self, dist): + return '%s %s' % (dist.name, dist.version) + + def repr_node(self, dist, level=1): + """Prints only a subgraph""" + output = [self._repr_dist(dist)] + for other, label in self.adjacency_list[dist]: + dist = self._repr_dist(other) + if label is not None: + dist = '%s [%s]' % (dist, label) + output.append(' ' * level + str(dist)) + suboutput = self.repr_node(other, level + 1) + subs = suboutput.split('\n') + output.extend(subs[1:]) + return '\n'.join(output) + + def to_dot(self, f, skip_disconnected=True): + """Writes a DOT output for the graph to the provided file *f*. + + If *skip_disconnected* is set to ``True``, then all distributions + that are not dependent on any other distribution are skipped. + + :type f: has to support ``file``-like operations + :type skip_disconnected: ``bool`` + """ + disconnected = [] + + f.write("digraph dependencies {\n") + for dist, adjs in self.adjacency_list.items(): + if len(adjs) == 0 and not skip_disconnected: + disconnected.append(dist) + for other, label in adjs: + if not label is None: + f.write('"%s" -> "%s" [label="%s"]\n' % + (dist.name, other.name, label)) + else: + f.write('"%s" -> "%s"\n' % (dist.name, other.name)) + if not skip_disconnected and len(disconnected) > 0: + f.write('subgraph disconnected {\n') + f.write('label = "Disconnected"\n') + f.write('bgcolor = red\n') + + for dist in disconnected: + f.write('"%s"' % dist.name) + f.write('\n') + f.write('}\n') + f.write('}\n') + + def topological_sort(self): + """ + Perform a topological sort of the graph. + :return: A tuple, the first element of which is a topologically sorted + list of distributions, and the second element of which is a + list of distributions that cannot be sorted because they have + circular dependencies and so form a cycle. + """ + result = [] + # Make a shallow copy of the adjacency list + alist = {} + for k, v in self.adjacency_list.items(): + alist[k] = v[:] + while True: + # See what we can remove in this run + to_remove = [] + for k, v in list(alist.items())[:]: + if not v: + to_remove.append(k) + del alist[k] + if not to_remove: + # What's left in alist (if anything) is a cycle. + break + # Remove from the adjacency list of others + for k, v in alist.items(): + alist[k] = [(d, r) for d, r in v if d not in to_remove] + logger.debug('Moving to result: %s', + ['%s (%s)' % (d.name, d.version) for d in to_remove]) + result.extend(to_remove) + return result, list(alist.keys()) + + def __repr__(self): + """Representation of the graph""" + output = [] + for dist, adjs in self.adjacency_list.items(): + output.append(self.repr_node(dist)) + return '\n'.join(output) + + +def make_graph(dists, scheme='default'): + """Makes a dependency graph from the given distributions. + + :parameter dists: a list of distributions + :type dists: list of :class:`distutils2.database.InstalledDistribution` and + :class:`distutils2.database.EggInfoDistribution` instances + :rtype: a :class:`DependencyGraph` instance + """ + scheme = get_scheme(scheme) + graph = DependencyGraph() + provided = {} # maps names to lists of (version, dist) tuples + + # first, build the graph and find out what's provided + for dist in dists: + graph.add_distribution(dist) + + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + provided.setdefault(name, []).append((version, dist)) + + # now make the edges + for dist in dists: + requires = (dist.run_requires | dist.meta_requires | + dist.build_requires | dist.dev_requires) + for req in requires: + try: + matcher = scheme.matcher(req) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + matched = False + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + graph.add_edge(dist, provider, req) + matched = True + break + if not matched: + graph.add_missing(dist, req) + return graph + + +def get_dependent_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + dependent on *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + dep = [dist] # dependent distributions + todo = graph.reverse_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop() + dep.append(d) + for succ in graph.reverse_list[d]: + if succ not in dep: + todo.append(succ) + + dep.pop(0) # remove dist from dep, was there to prevent infinite loops + return dep + + +def get_required_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + required by *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + req = [] # required distributions + todo = graph.adjacency_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop()[0] + req.append(d) + for pred in graph.adjacency_list[d]: + if pred not in req: + todo.append(pred) + + return req + + +def make_dist(name, version, **kwargs): + """ + A convenience method for making a dist given just a name and version. + """ + summary = kwargs.pop('summary', 'Placeholder for summary') + md = Metadata(**kwargs) + md.name = name + md.version = version + md.summary = summary or 'Placeholder for summary' + return Distribution(md) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/index.py b/venv/Lib/site-packages/pip/_vendor/distlib/index.py new file mode 100644 index 00000000..b1fbbf8e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/index.py @@ -0,0 +1,509 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import hashlib +import logging +import os +import shutil +import subprocess +import tempfile +try: + from threading import Thread +except ImportError: + from dummy_threading import Thread + +from . import DistlibException +from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, + urlparse, build_opener, string_types) +from .util import zip_dir, ServerProxy + +logger = logging.getLogger(__name__) + +DEFAULT_INDEX = 'https://pypi.org/pypi' +DEFAULT_REALM = 'pypi' + +class PackageIndex(object): + """ + This class represents a package index compatible with PyPI, the Python + Package Index. + """ + + boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' + + def __init__(self, url=None): + """ + Initialise an instance. + + :param url: The URL of the index. If not specified, the URL for PyPI is + used. + """ + self.url = url or DEFAULT_INDEX + self.read_configuration() + scheme, netloc, path, params, query, frag = urlparse(self.url) + if params or query or frag or scheme not in ('http', 'https'): + raise DistlibException('invalid repository: %s' % self.url) + self.password_handler = None + self.ssl_verifier = None + self.gpg = None + self.gpg_home = None + with open(os.devnull, 'w') as sink: + # Use gpg by default rather than gpg2, as gpg2 insists on + # prompting for passwords + for s in ('gpg', 'gpg2'): + try: + rc = subprocess.check_call([s, '--version'], stdout=sink, + stderr=sink) + if rc == 0: + self.gpg = s + break + except OSError: + pass + + def _get_pypirc_command(self): + """ + Get the distutils command for interacting with PyPI configurations. + :return: the command. + """ + from .util import _get_pypirc_command as cmd + return cmd() + + def read_configuration(self): + """ + Read the PyPI access configuration as supported by distutils. This populates + ``username``, ``password``, ``realm`` and ``url`` attributes from the + configuration. + """ + from .util import _load_pypirc + cfg = _load_pypirc(self) + self.username = cfg.get('username') + self.password = cfg.get('password') + self.realm = cfg.get('realm', 'pypi') + self.url = cfg.get('repository', self.url) + + def save_configuration(self): + """ + Save the PyPI access configuration. You must have set ``username`` and + ``password`` attributes before calling this method. + """ + self.check_credentials() + from .util import _store_pypirc + _store_pypirc(self) + + def check_credentials(self): + """ + Check that ``username`` and ``password`` have been set, and raise an + exception if not. + """ + if self.username is None or self.password is None: + raise DistlibException('username and password must be set') + pm = HTTPPasswordMgr() + _, netloc, _, _, _, _ = urlparse(self.url) + pm.add_password(self.realm, netloc, self.username, self.password) + self.password_handler = HTTPBasicAuthHandler(pm) + + def register(self, metadata): + """ + Register a distribution on PyPI, using the provided metadata. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the distribution to be + registered. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + metadata.validate() + d = metadata.todict() + d[':action'] = 'verify' + request = self.encode_request(d.items(), []) + response = self.send_request(request) + d[':action'] = 'submit' + request = self.encode_request(d.items(), []) + return self.send_request(request) + + def _reader(self, name, stream, outbuf): + """ + Thread runner for reading lines of from a subprocess into a buffer. + + :param name: The logical name of the stream (used for logging only). + :param stream: The stream to read from. This will typically a pipe + connected to the output stream of a subprocess. + :param outbuf: The list to append the read lines to. + """ + while True: + s = stream.readline() + if not s: + break + s = s.decode('utf-8').rstrip() + outbuf.append(s) + logger.debug('%s: %s' % (name, s)) + stream.close() + + def get_sign_command(self, filename, signer, sign_password, + keystore=None): + """ + Return a suitable command for signing a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The signing command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + if sign_password is not None: + cmd.extend(['--batch', '--passphrase-fd', '0']) + td = tempfile.mkdtemp() + sf = os.path.join(td, os.path.basename(filename) + '.asc') + cmd.extend(['--detach-sign', '--armor', '--local-user', + signer, '--output', sf, filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd, sf + + def run_command(self, cmd, input_data=None): + """ + Run a command in a child process , passing it any input data specified. + + :param cmd: The command to run. + :param input_data: If specified, this must be a byte string containing + data to be sent to the child process. + :return: A tuple consisting of the subprocess' exit code, a list of + lines read from the subprocess' ``stdout``, and a list of + lines read from the subprocess' ``stderr``. + """ + kwargs = { + 'stdout': subprocess.PIPE, + 'stderr': subprocess.PIPE, + } + if input_data is not None: + kwargs['stdin'] = subprocess.PIPE + stdout = [] + stderr = [] + p = subprocess.Popen(cmd, **kwargs) + # We don't use communicate() here because we may need to + # get clever with interacting with the command + t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) + t1.start() + t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) + t2.start() + if input_data is not None: + p.stdin.write(input_data) + p.stdin.close() + + p.wait() + t1.join() + t2.join() + return p.returncode, stdout, stderr + + def sign_file(self, filename, signer, sign_password, keystore=None): + """ + Sign a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The absolute pathname of the file where the signature is + stored. + """ + cmd, sig_file = self.get_sign_command(filename, signer, sign_password, + keystore) + rc, stdout, stderr = self.run_command(cmd, + sign_password.encode('utf-8')) + if rc != 0: + raise DistlibException('sign command failed with error ' + 'code %s' % rc) + return sig_file + + def upload_file(self, metadata, filename, signer=None, sign_password=None, + filetype='sdist', pyversion='source', keystore=None): + """ + Upload a release file to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the file to be uploaded. + :param filename: The pathname of the file to be uploaded. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param filetype: The type of the file being uploaded. This is the + distutils command which produced that file, e.g. + ``sdist`` or ``bdist_wheel``. + :param pyversion: The version of Python which the release relates + to. For code compatible with any Python, this would + be ``source``, otherwise it would be e.g. ``3.2``. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.exists(filename): + raise DistlibException('not found: %s' % filename) + metadata.validate() + d = metadata.todict() + sig_file = None + if signer: + if not self.gpg: + logger.warning('no signing program available - not signed') + else: + sig_file = self.sign_file(filename, signer, sign_password, + keystore) + with open(filename, 'rb') as f: + file_data = f.read() + md5_digest = hashlib.md5(file_data).hexdigest() + sha256_digest = hashlib.sha256(file_data).hexdigest() + d.update({ + ':action': 'file_upload', + 'protocol_version': '1', + 'filetype': filetype, + 'pyversion': pyversion, + 'md5_digest': md5_digest, + 'sha256_digest': sha256_digest, + }) + files = [('content', os.path.basename(filename), file_data)] + if sig_file: + with open(sig_file, 'rb') as f: + sig_data = f.read() + files.append(('gpg_signature', os.path.basename(sig_file), + sig_data)) + shutil.rmtree(os.path.dirname(sig_file)) + request = self.encode_request(d.items(), files) + return self.send_request(request) + + def upload_documentation(self, metadata, doc_dir): + """ + Upload documentation to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the documentation to be + uploaded. + :param doc_dir: The pathname of the directory which contains the + documentation. This should be the directory that + contains the ``index.html`` for the documentation. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.isdir(doc_dir): + raise DistlibException('not a directory: %r' % doc_dir) + fn = os.path.join(doc_dir, 'index.html') + if not os.path.exists(fn): + raise DistlibException('not found: %r' % fn) + metadata.validate() + name, version = metadata.name, metadata.version + zip_data = zip_dir(doc_dir).getvalue() + fields = [(':action', 'doc_upload'), + ('name', name), ('version', version)] + files = [('content', name, zip_data)] + request = self.encode_request(fields, files) + return self.send_request(request) + + def get_verify_command(self, signature_filename, data_filename, + keystore=None): + """ + Return a suitable command for verifying a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The verifying command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + cmd.extend(['--verify', signature_filename, data_filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd + + def verify_signature(self, signature_filename, data_filename, + keystore=None): + """ + Verify a signature for a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: True if the signature was verified, else False. + """ + if not self.gpg: + raise DistlibException('verification unavailable because gpg ' + 'unavailable') + cmd = self.get_verify_command(signature_filename, data_filename, + keystore) + rc, stdout, stderr = self.run_command(cmd) + if rc not in (0, 1): + raise DistlibException('verify command failed with error ' + 'code %s' % rc) + return rc == 0 + + def download_file(self, url, destfile, digest=None, reporthook=None): + """ + This is a convenience method for downloading a file from an URL. + Normally, this will be a file from the index, though currently + no check is made for this (i.e. a file can be downloaded from + anywhere). + + The method is just like the :func:`urlretrieve` function in the + standard library, except that it allows digest computation to be + done during download and checking that the downloaded data + matched any expected value. + + :param url: The URL of the file to be downloaded (assumed to be + available via an HTTP GET request). + :param destfile: The pathname where the downloaded file is to be + saved. + :param digest: If specified, this must be a (hasher, value) + tuple, where hasher is the algorithm used (e.g. + ``'md5'``) and ``value`` is the expected value. + :param reporthook: The same as for :func:`urlretrieve` in the + standard library. + """ + if digest is None: + digester = None + logger.debug('No digest specified') + else: + if isinstance(digest, (list, tuple)): + hasher, digest = digest + else: + hasher = 'md5' + digester = getattr(hashlib, hasher)() + logger.debug('Digest specified: %s' % digest) + # The following code is equivalent to urlretrieve. + # We need to do it this way so that we can compute the + # digest of the file as we go. + with open(destfile, 'wb') as dfp: + # addinfourl is not a context manager on 2.x + # so we have to use try/finally + sfp = self.send_request(Request(url)) + try: + headers = sfp.info() + blocksize = 8192 + size = -1 + read = 0 + blocknum = 0 + if "content-length" in headers: + size = int(headers["Content-Length"]) + if reporthook: + reporthook(blocknum, blocksize, size) + while True: + block = sfp.read(blocksize) + if not block: + break + read += len(block) + dfp.write(block) + if digester: + digester.update(block) + blocknum += 1 + if reporthook: + reporthook(blocknum, blocksize, size) + finally: + sfp.close() + + # check that we got the whole file, if we can + if size >= 0 and read < size: + raise DistlibException( + 'retrieval incomplete: got only %d out of %d bytes' + % (read, size)) + # if we have a digest, it must match. + if digester: + actual = digester.hexdigest() + if digest != actual: + raise DistlibException('%s digest mismatch for %s: expected ' + '%s, got %s' % (hasher, destfile, + digest, actual)) + logger.debug('Digest verified: %s', digest) + + def send_request(self, req): + """ + Send a standard library :class:`Request` to PyPI and return its + response. + + :param req: The request to send. + :return: The HTTP response from PyPI (a standard library HTTPResponse). + """ + handlers = [] + if self.password_handler: + handlers.append(self.password_handler) + if self.ssl_verifier: + handlers.append(self.ssl_verifier) + opener = build_opener(*handlers) + return opener.open(req) + + def encode_request(self, fields, files): + """ + Encode fields and files for posting to an HTTP server. + + :param fields: The fields to send as a list of (fieldname, value) + tuples. + :param files: The files to send as a list of (fieldname, filename, + file_bytes) tuple. + """ + # Adapted from packaging, which in turn was adapted from + # http://code.activestate.com/recipes/146306 + + parts = [] + boundary = self.boundary + for k, values in fields: + if not isinstance(values, (list, tuple)): + values = [values] + + for v in values: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"' % + k).encode('utf-8'), + b'', + v.encode('utf-8'))) + for key, filename, value in files: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"; filename="%s"' % + (key, filename)).encode('utf-8'), + b'', + value)) + + parts.extend((b'--' + boundary + b'--', b'')) + + body = b'\r\n'.join(parts) + ct = b'multipart/form-data; boundary=' + boundary + headers = { + 'Content-type': ct, + 'Content-length': str(len(body)) + } + return Request(self.url, body, headers) + + def search(self, terms, operator=None): + if isinstance(terms, string_types): + terms = {'name': terms} + rpc_proxy = ServerProxy(self.url, timeout=3.0) + try: + return rpc_proxy.search(terms, operator or 'and') + finally: + rpc_proxy('close')() diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/locators.py b/venv/Lib/site-packages/pip/_vendor/distlib/locators.py new file mode 100644 index 00000000..0c7d6391 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/locators.py @@ -0,0 +1,1300 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# + +import gzip +from io import BytesIO +import json +import logging +import os +import posixpath +import re +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import zlib + +from . import DistlibException +from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, + queue, quote, unescape, build_opener, + HTTPRedirectHandler as BaseRedirectHandler, text_type, + Request, HTTPError, URLError) +from .database import Distribution, DistributionPath, make_dist +from .metadata import Metadata, MetadataInvalidError +from .util import (cached_property, ensure_slash, split_filename, get_project_data, + parse_requirement, parse_name_and_version, ServerProxy, + normalize_name) +from .version import get_scheme, UnsupportedVersionError +from .wheel import Wheel, is_compatible + +logger = logging.getLogger(__name__) + +HASHER_HASH = re.compile(r'^(\w+)=([a-f0-9]+)') +CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) +HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') +DEFAULT_INDEX = 'https://pypi.org/pypi' + +def get_all_distribution_names(url=None): + """ + Return all distribution names known by an index. + :param url: The URL of the index. + :return: A list of all known distribution names. + """ + if url is None: + url = DEFAULT_INDEX + client = ServerProxy(url, timeout=3.0) + try: + return client.list_packages() + finally: + client('close')() + +class RedirectHandler(BaseRedirectHandler): + """ + A class to work around a bug in some Python 3.2.x releases. + """ + # There's a bug in the base version for some 3.2.x + # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header + # returns e.g. /abc, it bails because it says the scheme '' + # is bogus, when actually it should use the request's + # URL for the scheme. See Python issue #13696. + def http_error_302(self, req, fp, code, msg, headers): + # Some servers (incorrectly) return multiple Location headers + # (so probably same goes for URI). Use first header. + newurl = None + for key in ('location', 'uri'): + if key in headers: + newurl = headers[key] + break + if newurl is None: # pragma: no cover + return + urlparts = urlparse(newurl) + if urlparts.scheme == '': + newurl = urljoin(req.get_full_url(), newurl) + if hasattr(headers, 'replace_header'): + headers.replace_header(key, newurl) + else: + headers[key] = newurl + return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, + headers) + + http_error_301 = http_error_303 = http_error_307 = http_error_302 + +class Locator(object): + """ + A base class for locators - things that locate distributions. + """ + source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') + binary_extensions = ('.egg', '.exe', '.whl') + excluded_extensions = ('.pdf',) + + # A list of tags indicating which wheels you want to match. The default + # value of None matches against the tags compatible with the running + # Python. If you want to match other values, set wheel_tags on a locator + # instance to a list of tuples (pyver, abi, arch) which you want to match. + wheel_tags = None + + downloadable_extensions = source_extensions + ('.whl',) + + def __init__(self, scheme='default'): + """ + Initialise an instance. + :param scheme: Because locators look for most recent versions, they + need to know the version scheme to use. This specifies + the current PEP-recommended scheme - use ``'legacy'`` + if you need to support existing distributions on PyPI. + """ + self._cache = {} + self.scheme = scheme + # Because of bugs in some of the handlers on some of the platforms, + # we use our own opener rather than just using urlopen. + self.opener = build_opener(RedirectHandler()) + # If get_project() is called from locate(), the matcher instance + # is set from the requirement passed to locate(). See issue #18 for + # why this can be useful to know. + self.matcher = None + self.errors = queue.Queue() + + def get_errors(self): + """ + Return any errors which have occurred. + """ + result = [] + while not self.errors.empty(): # pragma: no cover + try: + e = self.errors.get(False) + result.append(e) + except self.errors.Empty: + continue + self.errors.task_done() + return result + + def clear_errors(self): + """ + Clear any errors which may have been logged. + """ + # Just get the errors and throw them away + self.get_errors() + + def clear_cache(self): + self._cache.clear() + + def _get_scheme(self): + return self._scheme + + def _set_scheme(self, value): + self._scheme = value + + scheme = property(_get_scheme, _set_scheme) + + def _get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This should be implemented in subclasses. + + If called from a locate() request, self.matcher will be set to a + matcher for the requirement to satisfy, otherwise it will be None. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This calls _get_project to do all the work, and just implements a caching layer on top. + """ + if self._cache is None: # pragma: no cover + result = self._get_project(name) + elif name in self._cache: + result = self._cache[name] + else: + self.clear_errors() + result = self._get_project(name) + self._cache[name] = result + return result + + def score_url(self, url): + """ + Give an url a score which can be used to choose preferred URLs + for a given project release. + """ + t = urlparse(url) + basename = posixpath.basename(t.path) + compatible = True + is_wheel = basename.endswith('.whl') + is_downloadable = basename.endswith(self.downloadable_extensions) + if is_wheel: + compatible = is_compatible(Wheel(basename), self.wheel_tags) + return (t.scheme == 'https', 'pypi.org' in t.netloc, + is_downloadable, is_wheel, compatible, basename) + + def prefer_url(self, url1, url2): + """ + Choose one of two URLs where both are candidates for distribution + archives for the same version of a distribution (for example, + .tar.gz vs. zip). + + The current implementation favours https:// URLs over http://, archives + from PyPI over those from other locations, wheel compatibility (if a + wheel) and then the archive name. + """ + result = url2 + if url1: + s1 = self.score_url(url1) + s2 = self.score_url(url2) + if s1 > s2: + result = url1 + if result != url2: + logger.debug('Not replacing %r with %r', url1, url2) + else: + logger.debug('Replacing %r with %r', url1, url2) + return result + + def split_filename(self, filename, project_name): + """ + Attempt to split a filename in project name, version and Python version. + """ + return split_filename(filename, project_name) + + def convert_url_to_download_info(self, url, project_name): + """ + See if a URL is a candidate for a download URL for a project (the URL + has typically been scraped from an HTML page). + + If it is, a dictionary is returned with keys "name", "version", + "filename" and "url"; otherwise, None is returned. + """ + def same_project(name1, name2): + return normalize_name(name1) == normalize_name(name2) + + result = None + scheme, netloc, path, params, query, frag = urlparse(url) + if frag.lower().startswith('egg='): # pragma: no cover + logger.debug('%s: version hint in fragment: %r', + project_name, frag) + m = HASHER_HASH.match(frag) + if m: + algo, digest = m.groups() + else: + algo, digest = None, None + origpath = path + if path and path[-1] == '/': # pragma: no cover + path = path[:-1] + if path.endswith('.whl'): + try: + wheel = Wheel(path) + if not is_compatible(wheel, self.wheel_tags): + logger.debug('Wheel not compatible: %s', path) + else: + if project_name is None: + include = True + else: + include = same_project(wheel.name, project_name) + if include: + result = { + 'name': wheel.name, + 'version': wheel.version, + 'filename': wheel.filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + 'python-version': ', '.join( + ['.'.join(list(v[2:])) for v in wheel.pyver]), + } + except Exception as e: # pragma: no cover + logger.warning('invalid path for wheel: %s', path) + elif not path.endswith(self.downloadable_extensions): # pragma: no cover + logger.debug('Not downloadable: %s', path) + else: # downloadable extension + path = filename = posixpath.basename(path) + for ext in self.downloadable_extensions: + if path.endswith(ext): + path = path[:-len(ext)] + t = self.split_filename(path, project_name) + if not t: # pragma: no cover + logger.debug('No match for project/version: %s', path) + else: + name, version, pyver = t + if not project_name or same_project(project_name, name): + result = { + 'name': name, + 'version': version, + 'filename': filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + #'packagetype': 'sdist', + } + if pyver: # pragma: no cover + result['python-version'] = pyver + break + if result and algo: + result['%s_digest' % algo] = digest + return result + + def _get_digest(self, info): + """ + Get a digest from a dictionary by looking at a "digests" dictionary + or keys of the form 'algo_digest'. + + Returns a 2-tuple (algo, digest) if found, else None. Currently + looks only for SHA256, then MD5. + """ + result = None + if 'digests' in info: + digests = info['digests'] + for algo in ('sha256', 'md5'): + if algo in digests: + result = (algo, digests[algo]) + break + if not result: + for algo in ('sha256', 'md5'): + key = '%s_digest' % algo + if key in info: + result = (algo, info[key]) + break + return result + + def _update_version_data(self, result, info): + """ + Update a result dictionary (the final result from _get_project) with a + dictionary for a specific version, which typically holds information + gleaned from a filename or URL for an archive for the distribution. + """ + name = info.pop('name') + version = info.pop('version') + if version in result: + dist = result[version] + md = dist.metadata + else: + dist = make_dist(name, version, scheme=self.scheme) + md = dist.metadata + dist.digest = digest = self._get_digest(info) + url = info['url'] + result['digests'][url] = digest + if md.source_url != info['url']: + md.source_url = self.prefer_url(md.source_url, url) + result['urls'].setdefault(version, set()).add(url) + dist.locator = self + result[version] = dist + + def locate(self, requirement, prereleases=False): + """ + Find the most recent distribution which matches the given + requirement. + + :param requirement: A requirement of the form 'foo (1.0)' or perhaps + 'foo (>= 1.0, < 2.0, != 1.3)' + :param prereleases: If ``True``, allow pre-release versions + to be located. Otherwise, pre-release versions + are not returned. + :return: A :class:`Distribution` instance, or ``None`` if no such + distribution could be located. + """ + result = None + r = parse_requirement(requirement) + if r is None: # pragma: no cover + raise DistlibException('Not a valid requirement: %r' % requirement) + scheme = get_scheme(self.scheme) + self.matcher = matcher = scheme.matcher(r.requirement) + logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) + versions = self.get_project(r.name) + if len(versions) > 2: # urls and digests keys are present + # sometimes, versions are invalid + slist = [] + vcls = matcher.version_class + for k in versions: + if k in ('urls', 'digests'): + continue + try: + if not matcher.match(k): + pass # logger.debug('%s did not match %r', matcher, k) + else: + if prereleases or not vcls(k).is_prerelease: + slist.append(k) + # else: + # logger.debug('skipping pre-release ' + # 'version %s of %s', k, matcher.name) + except Exception: # pragma: no cover + logger.warning('error matching %s with %r', matcher, k) + pass # slist.append(k) + if len(slist) > 1: + slist = sorted(slist, key=scheme.key) + if slist: + logger.debug('sorted list: %s', slist) + version = slist[-1] + result = versions[version] + if result: + if r.extras: + result.extras = r.extras + result.download_urls = versions.get('urls', {}).get(version, set()) + d = {} + sd = versions.get('digests', {}) + for url in result.download_urls: + if url in sd: # pragma: no cover + d[url] = sd[url] + result.digests = d + self.matcher = None + return result + + +class PyPIRPCLocator(Locator): + """ + This locator uses XML-RPC to locate distributions. It therefore + cannot be used with simple mirrors (that only mirror file content). + """ + def __init__(self, url, **kwargs): + """ + Initialise an instance. + + :param url: The URL to use for XML-RPC. + :param kwargs: Passed to the superclass constructor. + """ + super(PyPIRPCLocator, self).__init__(**kwargs) + self.base_url = url + self.client = ServerProxy(url, timeout=3.0) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + return set(self.client.list_packages()) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + versions = self.client.package_releases(name, True) + for v in versions: + urls = self.client.release_urls(name, v) + data = self.client.release_data(name, v) + metadata = Metadata(scheme=self.scheme) + metadata.name = data['name'] + metadata.version = data['version'] + metadata.license = data.get('license') + metadata.keywords = data.get('keywords', []) + metadata.summary = data.get('summary') + dist = Distribution(metadata) + if urls: + info = urls[0] + metadata.source_url = info['url'] + dist.digest = self._get_digest(info) + dist.locator = self + result[v] = dist + for info in urls: + url = info['url'] + digest = self._get_digest(info) + result['urls'].setdefault(v, set()).add(url) + result['digests'][url] = digest + return result + +class PyPIJSONLocator(Locator): + """ + This locator uses PyPI's JSON interface. It's very limited in functionality + and probably not worth using. + """ + def __init__(self, url, **kwargs): + super(PyPIJSONLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + url = urljoin(self.base_url, '%s/json' % quote(name)) + try: + resp = self.opener.open(url) + data = resp.read().decode() # for now + d = json.loads(data) + md = Metadata(scheme=self.scheme) + data = d['info'] + md.name = data['name'] + md.version = data['version'] + md.license = data.get('license') + md.keywords = data.get('keywords', []) + md.summary = data.get('summary') + dist = Distribution(md) + dist.locator = self + urls = d['urls'] + result[md.version] = dist + for info in d['urls']: + url = info['url'] + dist.download_urls.add(url) + dist.digests[url] = self._get_digest(info) + result['urls'].setdefault(md.version, set()).add(url) + result['digests'][url] = self._get_digest(info) + # Now get other releases + for version, infos in d['releases'].items(): + if version == md.version: + continue # already done + omd = Metadata(scheme=self.scheme) + omd.name = md.name + omd.version = version + odist = Distribution(omd) + odist.locator = self + result[version] = odist + for info in infos: + url = info['url'] + odist.download_urls.add(url) + odist.digests[url] = self._get_digest(info) + result['urls'].setdefault(version, set()).add(url) + result['digests'][url] = self._get_digest(info) +# for info in urls: +# md.source_url = info['url'] +# dist.digest = self._get_digest(info) +# dist.locator = self +# for info in urls: +# url = info['url'] +# result['urls'].setdefault(md.version, set()).add(url) +# result['digests'][url] = self._get_digest(info) + except Exception as e: + self.errors.put(text_type(e)) + logger.exception('JSON fetch failed: %s', e) + return result + + +class Page(object): + """ + This class represents a scraped HTML page. + """ + # The following slightly hairy-looking regex just looks for the contents of + # an anchor link, which has an attribute "href" either immediately preceded + # or immediately followed by a "rel" attribute. The attribute values can be + # declared with double quotes, single quotes or no quotes - which leads to + # the length of the expression. + _href = re.compile(""" +(rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*))\\s+)? +href\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)) +(\\s+rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)))? +""", re.I | re.S | re.X) + _base = re.compile(r"""]+)""", re.I | re.S) + + def __init__(self, data, url): + """ + Initialise an instance with the Unicode page contents and the URL they + came from. + """ + self.data = data + self.base_url = self.url = url + m = self._base.search(self.data) + if m: + self.base_url = m.group(1) + + _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) + + @cached_property + def links(self): + """ + Return the URLs of all the links on a page together with information + about their "rel" attribute, for determining which ones to treat as + downloads and which ones to queue for further scraping. + """ + def clean(url): + "Tidy up an URL." + scheme, netloc, path, params, query, frag = urlparse(url) + return urlunparse((scheme, netloc, quote(path), + params, query, frag)) + + result = set() + for match in self._href.finditer(self.data): + d = match.groupdict('') + rel = (d['rel1'] or d['rel2'] or d['rel3'] or + d['rel4'] or d['rel5'] or d['rel6']) + url = d['url1'] or d['url2'] or d['url3'] + url = urljoin(self.base_url, url) + url = unescape(url) + url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) + result.add((url, rel)) + # We sort the result, hoping to bring the most recent versions + # to the front + result = sorted(result, key=lambda t: t[0], reverse=True) + return result + + +class SimpleScrapingLocator(Locator): + """ + A locator which scrapes HTML pages to locate downloads for a distribution. + This runs multiple threads to do the I/O; performance is at least as good + as pip's PackageFinder, which works in an analogous fashion. + """ + + # These are used to deal with various Content-Encoding schemes. + decoders = { + 'deflate': zlib.decompress, + 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(b)).read(), + 'none': lambda b: b, + } + + def __init__(self, url, timeout=None, num_workers=10, **kwargs): + """ + Initialise an instance. + :param url: The root URL to use for scraping. + :param timeout: The timeout, in seconds, to be applied to requests. + This defaults to ``None`` (no timeout specified). + :param num_workers: The number of worker threads you want to do I/O, + This defaults to 10. + :param kwargs: Passed to the superclass. + """ + super(SimpleScrapingLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + self.timeout = timeout + self._page_cache = {} + self._seen = set() + self._to_fetch = queue.Queue() + self._bad_hosts = set() + self.skip_externals = False + self.num_workers = num_workers + self._lock = threading.RLock() + # See issue #45: we need to be resilient when the locator is used + # in a thread, e.g. with concurrent.futures. We can't use self._lock + # as it is for coordinating our internal threads - the ones created + # in _prepare_threads. + self._gplock = threading.RLock() + self.platform_check = False # See issue #112 + + def _prepare_threads(self): + """ + Threads are created only when get_project is called, and terminate + before it returns. They are there primarily to parallelise I/O (i.e. + fetching web pages). + """ + self._threads = [] + for i in range(self.num_workers): + t = threading.Thread(target=self._fetch) + t.setDaemon(True) + t.start() + self._threads.append(t) + + def _wait_threads(self): + """ + Tell all the threads to terminate (by sending a sentinel value) and + wait for them to do so. + """ + # Note that you need two loops, since you can't say which + # thread will get each sentinel + for t in self._threads: + self._to_fetch.put(None) # sentinel + for t in self._threads: + t.join() + self._threads = [] + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + with self._gplock: + self.result = result + self.project_name = name + url = urljoin(self.base_url, '%s/' % quote(name)) + self._seen.clear() + self._page_cache.clear() + self._prepare_threads() + try: + logger.debug('Queueing %s', url) + self._to_fetch.put(url) + self._to_fetch.join() + finally: + self._wait_threads() + del self.result + return result + + platform_dependent = re.compile(r'\b(linux_(i\d86|x86_64|arm\w+)|' + r'win(32|_amd64)|macosx_?\d+)\b', re.I) + + def _is_platform_dependent(self, url): + """ + Does an URL refer to a platform-specific download? + """ + return self.platform_dependent.search(url) + + def _process_download(self, url): + """ + See if an URL is a suitable download for a project. + + If it is, register information in the result dictionary (for + _get_project) about the specific version it's for. + + Note that the return value isn't actually used other than as a boolean + value. + """ + if self.platform_check and self._is_platform_dependent(url): + info = None + else: + info = self.convert_url_to_download_info(url, self.project_name) + logger.debug('process_download: %s -> %s', url, info) + if info: + with self._lock: # needed because self.result is shared + self._update_version_data(self.result, info) + return info + + def _should_queue(self, link, referrer, rel): + """ + Determine whether a link URL from a referring page and with a + particular "rel" attribute should be queued for scraping. + """ + scheme, netloc, path, _, _, _ = urlparse(link) + if path.endswith(self.source_extensions + self.binary_extensions + + self.excluded_extensions): + result = False + elif self.skip_externals and not link.startswith(self.base_url): + result = False + elif not referrer.startswith(self.base_url): + result = False + elif rel not in ('homepage', 'download'): + result = False + elif scheme not in ('http', 'https', 'ftp'): + result = False + elif self._is_platform_dependent(link): + result = False + else: + host = netloc.split(':', 1)[0] + if host.lower() == 'localhost': + result = False + else: + result = True + logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, + referrer, result) + return result + + def _fetch(self): + """ + Get a URL to fetch from the work queue, get the HTML page, examine its + links for download candidates and candidates for further scraping. + + This is a handy method to run in a thread. + """ + while True: + url = self._to_fetch.get() + try: + if url: + page = self.get_page(url) + if page is None: # e.g. after an error + continue + for link, rel in page.links: + if link not in self._seen: + try: + self._seen.add(link) + if (not self._process_download(link) and + self._should_queue(link, url, rel)): + logger.debug('Queueing %s from %s', link, url) + self._to_fetch.put(link) + except MetadataInvalidError: # e.g. invalid versions + pass + except Exception as e: # pragma: no cover + self.errors.put(text_type(e)) + finally: + # always do this, to avoid hangs :-) + self._to_fetch.task_done() + if not url: + #logger.debug('Sentinel seen, quitting.') + break + + def get_page(self, url): + """ + Get the HTML for an URL, possibly from an in-memory cache. + + XXX TODO Note: this cache is never actually cleared. It's assumed that + the data won't get stale over the lifetime of a locator instance (not + necessarily true for the default_locator). + """ + # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api + scheme, netloc, path, _, _, _ = urlparse(url) + if scheme == 'file' and os.path.isdir(url2pathname(path)): + url = urljoin(ensure_slash(url), 'index.html') + + if url in self._page_cache: + result = self._page_cache[url] + logger.debug('Returning %s from cache: %s', url, result) + else: + host = netloc.split(':', 1)[0] + result = None + if host in self._bad_hosts: + logger.debug('Skipping %s due to bad host %s', url, host) + else: + req = Request(url, headers={'Accept-encoding': 'identity'}) + try: + logger.debug('Fetching %s', url) + resp = self.opener.open(req, timeout=self.timeout) + logger.debug('Fetched %s', url) + headers = resp.info() + content_type = headers.get('Content-Type', '') + if HTML_CONTENT_TYPE.match(content_type): + final_url = resp.geturl() + data = resp.read() + encoding = headers.get('Content-Encoding') + if encoding: + decoder = self.decoders[encoding] # fail if not found + data = decoder(data) + encoding = 'utf-8' + m = CHARSET.search(content_type) + if m: + encoding = m.group(1) + try: + data = data.decode(encoding) + except UnicodeError: # pragma: no cover + data = data.decode('latin-1') # fallback + result = Page(data, final_url) + self._page_cache[final_url] = result + except HTTPError as e: + if e.code != 404: + logger.exception('Fetch failed: %s: %s', url, e) + except URLError as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + with self._lock: + self._bad_hosts.add(host) + except Exception as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + finally: + self._page_cache[url] = result # even if None (failure) + return result + + _distname_re = re.compile(']*>([^<]+)<') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + page = self.get_page(self.base_url) + if not page: + raise DistlibException('Unable to get %s' % self.base_url) + for match in self._distname_re.finditer(page.data): + result.add(match.group(1)) + return result + +class DirectoryLocator(Locator): + """ + This class locates distributions in a directory tree. + """ + + def __init__(self, path, **kwargs): + """ + Initialise an instance. + :param path: The root of the directory tree to search. + :param kwargs: Passed to the superclass constructor, + except for: + * recursive - if True (the default), subdirectories are + recursed into. If False, only the top-level directory + is searched, + """ + self.recursive = kwargs.pop('recursive', True) + super(DirectoryLocator, self).__init__(**kwargs) + path = os.path.abspath(path) + if not os.path.isdir(path): # pragma: no cover + raise DistlibException('Not a directory: %r' % path) + self.base_dir = path + + def should_include(self, filename, parent): + """ + Should a filename be considered as a candidate for a distribution + archive? As well as the filename, the directory which contains it + is provided, though not used by the current implementation. + """ + return filename.endswith(self.downloadable_extensions) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, name) + if info: + self._update_version_data(result, info) + if not self.recursive: + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, None) + if info: + result.add(info['name']) + if not self.recursive: + break + return result + +class JSONLocator(Locator): + """ + This locator uses special extended metadata (not available on PyPI) and is + the basis of performant dependency resolution in distlib. Other locators + require archive downloads before dependencies can be determined! As you + might imagine, that can be slow. + """ + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + data = get_project_data(name) + if data: + for info in data.get('files', []): + if info['ptype'] != 'sdist' or info['pyversion'] != 'source': + continue + # We don't store summary in project metadata as it makes + # the data bigger for no benefit during dependency + # resolution + dist = make_dist(data['name'], info['version'], + summary=data.get('summary', + 'Placeholder for summary'), + scheme=self.scheme) + md = dist.metadata + md.source_url = info['url'] + # TODO SHA256 digest + if 'digest' in info and info['digest']: + dist.digest = ('md5', info['digest']) + md.dependencies = info.get('requirements', {}) + dist.exports = info.get('exports', {}) + result[dist.version] = dist + result['urls'].setdefault(dist.version, set()).add(info['url']) + return result + +class DistPathLocator(Locator): + """ + This locator finds installed distributions in a path. It can be useful for + adding to an :class:`AggregatingLocator`. + """ + def __init__(self, distpath, **kwargs): + """ + Initialise an instance. + + :param distpath: A :class:`DistributionPath` instance to search. + """ + super(DistPathLocator, self).__init__(**kwargs) + assert isinstance(distpath, DistributionPath) + self.distpath = distpath + + def _get_project(self, name): + dist = self.distpath.get_distribution(name) + if dist is None: + result = {'urls': {}, 'digests': {}} + else: + result = { + dist.version: dist, + 'urls': {dist.version: set([dist.source_url])}, + 'digests': {dist.version: set([None])} + } + return result + + +class AggregatingLocator(Locator): + """ + This class allows you to chain and/or merge a list of locators. + """ + def __init__(self, *locators, **kwargs): + """ + Initialise an instance. + + :param locators: The list of locators to search. + :param kwargs: Passed to the superclass constructor, + except for: + * merge - if False (the default), the first successful + search from any of the locators is returned. If True, + the results from all locators are merged (this can be + slow). + """ + self.merge = kwargs.pop('merge', False) + self.locators = locators + super(AggregatingLocator, self).__init__(**kwargs) + + def clear_cache(self): + super(AggregatingLocator, self).clear_cache() + for locator in self.locators: + locator.clear_cache() + + def _set_scheme(self, value): + self._scheme = value + for locator in self.locators: + locator.scheme = value + + scheme = property(Locator.scheme.fget, _set_scheme) + + def _get_project(self, name): + result = {} + for locator in self.locators: + d = locator.get_project(name) + if d: + if self.merge: + files = result.get('urls', {}) + digests = result.get('digests', {}) + # next line could overwrite result['urls'], result['digests'] + result.update(d) + df = result.get('urls') + if files and df: + for k, v in files.items(): + if k in df: + df[k] |= v + else: + df[k] = v + dd = result.get('digests') + if digests and dd: + dd.update(digests) + else: + # See issue #18. If any dists are found and we're looking + # for specific constraints, we only return something if + # a match is found. For example, if a DirectoryLocator + # returns just foo (1.0) while we're looking for + # foo (>= 2.0), we'll pretend there was nothing there so + # that subsequent locators can be queried. Otherwise we + # would just return foo (1.0) which would then lead to a + # failure to find foo (>= 2.0), because other locators + # weren't searched. Note that this only matters when + # merge=False. + if self.matcher is None: + found = True + else: + found = False + for k in d: + if self.matcher.match(k): + found = True + break + if found: + result = d + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for locator in self.locators: + try: + result |= locator.get_distribution_names() + except NotImplementedError: + pass + return result + + +# We use a legacy scheme simply because most of the dists on PyPI use legacy +# versions which don't conform to PEP 426 / PEP 440. +default_locator = AggregatingLocator( + JSONLocator(), + SimpleScrapingLocator('https://pypi.org/simple/', + timeout=3.0), + scheme='legacy') + +locate = default_locator.locate + + +class DependencyFinder(object): + """ + Locate dependencies for distributions. + """ + + def __init__(self, locator=None): + """ + Initialise an instance, using the specified locator + to locate distributions. + """ + self.locator = locator or default_locator + self.scheme = get_scheme(self.locator.scheme) + + def add_distribution(self, dist): + """ + Add a distribution to the finder. This will update internal information + about who provides what. + :param dist: The distribution to add. + """ + logger.debug('adding distribution %s', dist) + name = dist.key + self.dists_by_name[name] = dist + self.dists[(name, dist.version)] = dist + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + self.provided.setdefault(name, set()).add((version, dist)) + + def remove_distribution(self, dist): + """ + Remove a distribution from the finder. This will update internal + information about who provides what. + :param dist: The distribution to remove. + """ + logger.debug('removing distribution %s', dist) + name = dist.key + del self.dists_by_name[name] + del self.dists[(name, dist.version)] + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Remove from provided: %s, %s, %s', name, version, dist) + s = self.provided[name] + s.remove((version, dist)) + if not s: + del self.provided[name] + + def get_matcher(self, reqt): + """ + Get a version matcher for a requirement. + :param reqt: The requirement + :type reqt: str + :return: A version matcher (an instance of + :class:`distlib.version.Matcher`). + """ + try: + matcher = self.scheme.matcher(reqt) + except UnsupportedVersionError: # pragma: no cover + # XXX compat-mode if cannot read the version + name = reqt.split()[0] + matcher = self.scheme.matcher(name) + return matcher + + def find_providers(self, reqt): + """ + Find the distributions which can fulfill a requirement. + + :param reqt: The requirement. + :type reqt: str + :return: A set of distribution which can fulfill the requirement. + """ + matcher = self.get_matcher(reqt) + name = matcher.key # case-insensitive + result = set() + provided = self.provided + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + result.add(provider) + break + return result + + def try_to_replace(self, provider, other, problems): + """ + Attempt to replace one provider with another. This is typically used + when resolving dependencies from multiple sources, e.g. A requires + (B >= 1.0) while C requires (B >= 1.1). + + For successful replacement, ``provider`` must meet all the requirements + which ``other`` fulfills. + + :param provider: The provider we are trying to replace with. + :param other: The provider we're trying to replace. + :param problems: If False is returned, this will contain what + problems prevented replacement. This is currently + a tuple of the literal string 'cantreplace', + ``provider``, ``other`` and the set of requirements + that ``provider`` couldn't fulfill. + :return: True if we can replace ``other`` with ``provider``, else + False. + """ + rlist = self.reqts[other] + unmatched = set() + for s in rlist: + matcher = self.get_matcher(s) + if not matcher.match(provider.version): + unmatched.add(s) + if unmatched: + # can't replace other with provider + problems.add(('cantreplace', provider, other, + frozenset(unmatched))) + result = False + else: + # can replace other with provider + self.remove_distribution(other) + del self.reqts[other] + for s in rlist: + self.reqts.setdefault(provider, set()).add(s) + self.add_distribution(provider) + result = True + return result + + def find(self, requirement, meta_extras=None, prereleases=False): + """ + Find a distribution and all distributions it depends on. + + :param requirement: The requirement specifying the distribution to + find, or a Distribution instance. + :param meta_extras: A list of meta extras such as :test:, :build: and + so on. + :param prereleases: If ``True``, allow pre-release versions to be + returned - otherwise, don't return prereleases + unless they're all that's available. + + Return a set of :class:`Distribution` instances and a set of + problems. + + The distributions returned should be such that they have the + :attr:`required` attribute set to ``True`` if they were + from the ``requirement`` passed to ``find()``, and they have the + :attr:`build_time_dependency` attribute set to ``True`` unless they + are post-installation dependencies of the ``requirement``. + + The problems should be a tuple consisting of the string + ``'unsatisfied'`` and the requirement which couldn't be satisfied + by any distribution known to the locator. + """ + + self.provided = {} + self.dists = {} + self.dists_by_name = {} + self.reqts = {} + + meta_extras = set(meta_extras or []) + if ':*:' in meta_extras: + meta_extras.remove(':*:') + # :meta: and :run: are implicitly included + meta_extras |= set([':test:', ':build:', ':dev:']) + + if isinstance(requirement, Distribution): + dist = odist = requirement + logger.debug('passed %s as requirement', odist) + else: + dist = odist = self.locator.locate(requirement, + prereleases=prereleases) + if dist is None: + raise DistlibException('Unable to locate %r' % requirement) + logger.debug('located %s', odist) + dist.requested = True + problems = set() + todo = set([dist]) + install_dists = set([odist]) + while todo: + dist = todo.pop() + name = dist.key # case-insensitive + if name not in self.dists_by_name: + self.add_distribution(dist) + else: + #import pdb; pdb.set_trace() + other = self.dists_by_name[name] + if other != dist: + self.try_to_replace(dist, other, problems) + + ireqts = dist.run_requires | dist.meta_requires + sreqts = dist.build_requires + ereqts = set() + if meta_extras and dist in install_dists: + for key in ('test', 'build', 'dev'): + e = ':%s:' % key + if e in meta_extras: + ereqts |= getattr(dist, '%s_requires' % key) + all_reqts = ireqts | sreqts | ereqts + for r in all_reqts: + providers = self.find_providers(r) + if not providers: + logger.debug('No providers found for %r', r) + provider = self.locator.locate(r, prereleases=prereleases) + # If no provider is found and we didn't consider + # prereleases, consider them now. + if provider is None and not prereleases: + provider = self.locator.locate(r, prereleases=True) + if provider is None: + logger.debug('Cannot satisfy %r', r) + problems.add(('unsatisfied', r)) + else: + n, v = provider.key, provider.version + if (n, v) not in self.dists: + todo.add(provider) + providers.add(provider) + if r in ireqts and dist in install_dists: + install_dists.add(provider) + logger.debug('Adding %s to install_dists', + provider.name_and_version) + for p in providers: + name = p.key + if name not in self.dists_by_name: + self.reqts.setdefault(p, set()).add(r) + else: + other = self.dists_by_name[name] + if other != p: + # see if other can be replaced by p + self.try_to_replace(p, other, problems) + + dists = set(self.dists.values()) + for dist in dists: + dist.build_time_dependency = dist not in install_dists + if dist.build_time_dependency: + logger.debug('%s is a build-time dependency only.', + dist.name_and_version) + logger.debug('find done for %s', odist) + return dists, problems diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py b/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py new file mode 100644 index 00000000..ca0fe442 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py @@ -0,0 +1,393 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2013 Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Class representing the list of files in a distribution. + +Equivalent to distutils.filelist, but fixes some problems. +""" +import fnmatch +import logging +import os +import re +import sys + +from . import DistlibException +from .compat import fsdecode +from .util import convert_path + + +__all__ = ['Manifest'] + +logger = logging.getLogger(__name__) + +# a \ followed by some spaces + EOL +_COLLAPSE_PATTERN = re.compile('\\\\w*\n', re.M) +_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) + +# +# Due to the different results returned by fnmatch.translate, we need +# to do slightly different processing for Python 2.7 and 3.2 ... this needed +# to be brought in for Python 3.6 onwards. +# +_PYTHON_VERSION = sys.version_info[:2] + +class Manifest(object): + """A list of files built by on exploring the filesystem and filtered by + applying various patterns to what we find there. + """ + + def __init__(self, base=None): + """ + Initialise an instance. + + :param base: The base directory to explore under. + """ + self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) + self.prefix = self.base + os.sep + self.allfiles = None + self.files = set() + + # + # Public API + # + + def findall(self): + """Find all files under the base and set ``allfiles`` to the absolute + pathnames of files found. + """ + from stat import S_ISREG, S_ISDIR, S_ISLNK + + self.allfiles = allfiles = [] + root = self.base + stack = [root] + pop = stack.pop + push = stack.append + + while stack: + root = pop() + names = os.listdir(root) + + for name in names: + fullname = os.path.join(root, name) + + # Avoid excess stat calls -- just one will do, thank you! + stat = os.stat(fullname) + mode = stat.st_mode + if S_ISREG(mode): + allfiles.append(fsdecode(fullname)) + elif S_ISDIR(mode) and not S_ISLNK(mode): + push(fullname) + + def add(self, item): + """ + Add a file to the manifest. + + :param item: The pathname to add. This can be relative to the base. + """ + if not item.startswith(self.prefix): + item = os.path.join(self.base, item) + self.files.add(os.path.normpath(item)) + + def add_many(self, items): + """ + Add a list of files to the manifest. + + :param items: The pathnames to add. These can be relative to the base. + """ + for item in items: + self.add(item) + + def sorted(self, wantdirs=False): + """ + Return sorted files in directory order + """ + + def add_dir(dirs, d): + dirs.add(d) + logger.debug('add_dir added %s', d) + if d != self.base: + parent, _ = os.path.split(d) + assert parent not in ('', '/') + add_dir(dirs, parent) + + result = set(self.files) # make a copy! + if wantdirs: + dirs = set() + for f in result: + add_dir(dirs, os.path.dirname(f)) + result |= dirs + return [os.path.join(*path_tuple) for path_tuple in + sorted(os.path.split(path) for path in result)] + + def clear(self): + """Clear all collected files.""" + self.files = set() + self.allfiles = [] + + def process_directive(self, directive): + """ + Process a directive which either adds some files from ``allfiles`` to + ``files``, or removes some files from ``files``. + + :param directive: The directive to process. This should be in a format + compatible with distutils ``MANIFEST.in`` files: + + http://docs.python.org/distutils/sourcedist.html#commands + """ + # Parse the line: split it up, make sure the right number of words + # is there, and return the relevant words. 'action' is always + # defined: it's the first word of the line. Which of the other + # three are defined depends on the action; it'll be either + # patterns, (dir and patterns), or (dirpattern). + action, patterns, thedir, dirpattern = self._parse_directive(directive) + + # OK, now we know that the action is valid and we have the + # right number of words on the line for that action -- so we + # can proceed with minimal error-checking. + if action == 'include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=True): + logger.warning('no files found matching %r', pattern) + + elif action == 'exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=True) + #if not found: + # logger.warning('no previously-included files ' + # 'found matching %r', pattern) + + elif action == 'global-include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=False): + logger.warning('no files found matching %r ' + 'anywhere in distribution', pattern) + + elif action == 'global-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=False) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found anywhere in ' + # 'distribution', pattern) + + elif action == 'recursive-include': + for pattern in patterns: + if not self._include_pattern(pattern, prefix=thedir): + logger.warning('no files found matching %r ' + 'under directory %r', pattern, thedir) + + elif action == 'recursive-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, prefix=thedir) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found under directory %r', + # pattern, thedir) + + elif action == 'graft': + if not self._include_pattern(None, prefix=dirpattern): + logger.warning('no directories found matching %r', + dirpattern) + + elif action == 'prune': + if not self._exclude_pattern(None, prefix=dirpattern): + logger.warning('no previously-included directories found ' + 'matching %r', dirpattern) + else: # pragma: no cover + # This should never happen, as it should be caught in + # _parse_template_line + raise DistlibException( + 'invalid action %r' % action) + + # + # Private API + # + + def _parse_directive(self, directive): + """ + Validate a directive. + :param directive: The directive to validate. + :return: A tuple of action, patterns, thedir, dir_patterns + """ + words = directive.split() + if len(words) == 1 and words[0] not in ('include', 'exclude', + 'global-include', + 'global-exclude', + 'recursive-include', + 'recursive-exclude', + 'graft', 'prune'): + # no action given, let's use the default 'include' + words.insert(0, 'include') + + action = words[0] + patterns = thedir = dir_pattern = None + + if action in ('include', 'exclude', + 'global-include', 'global-exclude'): + if len(words) < 2: + raise DistlibException( + '%r expects ...' % action) + + patterns = [convert_path(word) for word in words[1:]] + + elif action in ('recursive-include', 'recursive-exclude'): + if len(words) < 3: + raise DistlibException( + '%r expects ...' % action) + + thedir = convert_path(words[1]) + patterns = [convert_path(word) for word in words[2:]] + + elif action in ('graft', 'prune'): + if len(words) != 2: + raise DistlibException( + '%r expects a single ' % action) + + dir_pattern = convert_path(words[1]) + + else: + raise DistlibException('unknown action %r' % action) + + return action, patterns, thedir, dir_pattern + + def _include_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Select strings (presumably filenames) from 'self.files' that + match 'pattern', a Unix-style wildcard (glob) pattern. + + Patterns are not quite the same as implemented by the 'fnmatch' + module: '*' and '?' match non-special characters, where "special" + is platform-dependent: slash on Unix; colon, slash, and backslash on + DOS/Windows; and colon on Mac OS. + + If 'anchor' is true (the default), then the pattern match is more + stringent: "*.py" will match "foo.py" but not "foo/bar.py". If + 'anchor' is false, both of these will match. + + If 'prefix' is supplied, then only filenames starting with 'prefix' + (itself a pattern) and ending with 'pattern', with anything in between + them, will match. 'anchor' is ignored in this case. + + If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and + 'pattern' is assumed to be either a string containing a regex or a + regex object -- no translation is done, the regex is just compiled + and used as-is. + + Selected strings will be added to self.files. + + Return True if files are found. + """ + # XXX docstring lying about what the special chars are? + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + + # delayed loading of allfiles list + if self.allfiles is None: + self.findall() + + for name in self.allfiles: + if pattern_re.search(name): + self.files.add(name) + found = True + return found + + def _exclude_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Remove strings (presumably filenames) from 'files' that match + 'pattern'. + + Other parameters are the same as for 'include_pattern()', above. + The list 'self.files' is modified in place. Return True if files are + found. + + This API is public to allow e.g. exclusion of SCM subdirs, e.g. when + packaging source distributions + """ + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + for f in list(self.files): + if pattern_re.search(f): + self.files.remove(f) + found = True + return found + + def _translate_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Translate a shell-like wildcard pattern to a compiled regular + expression. + + Return the compiled regex. If 'is_regex' true, + then 'pattern' is directly compiled to a regex (if it's a string) + or just returned as-is (assumes it's a regex object). + """ + if is_regex: + if isinstance(pattern, str): + return re.compile(pattern) + else: + return pattern + + if _PYTHON_VERSION > (3, 2): + # ditch start and end characters + start, _, end = self._glob_to_re('_').partition('_') + + if pattern: + pattern_re = self._glob_to_re(pattern) + if _PYTHON_VERSION > (3, 2): + assert pattern_re.startswith(start) and pattern_re.endswith(end) + else: + pattern_re = '' + + base = re.escape(os.path.join(self.base, '')) + if prefix is not None: + # ditch end of pattern character + if _PYTHON_VERSION <= (3, 2): + empty_pattern = self._glob_to_re('') + prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] + else: + prefix_re = self._glob_to_re(prefix) + assert prefix_re.startswith(start) and prefix_re.endswith(end) + prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] + sep = os.sep + if os.sep == '\\': + sep = r'\\' + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + sep.join((prefix_re, + '.*' + pattern_re)) + else: + pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] + pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, + pattern_re, end) + else: # no prefix -- respect anchor flag + if anchor: + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + pattern_re + else: + pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) + + return re.compile(pattern_re) + + def _glob_to_re(self, pattern): + """Translate a shell-like glob pattern to a regular expression. + + Return a string containing the regex. Differs from + 'fnmatch.translate()' in that '*' does not match "special characters" + (which are platform-specific). + """ + pattern_re = fnmatch.translate(pattern) + + # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which + # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, + # and by extension they shouldn't match such "special characters" under + # any OS. So change all non-escaped dots in the RE to match any + # character except the special characters (currently: just os.sep). + sep = os.sep + if os.sep == '\\': + # we're using a regex to manipulate a regex, so we need + # to escape the backslash twice + sep = r'\\\\' + escaped = r'\1[^%s]' % sep + pattern_re = re.sub(r'((? y, + '!=': lambda x, y: x != y, + '<': lambda x, y: x < y, + '<=': lambda x, y: x == y or x < y, + '>': lambda x, y: x > y, + '>=': lambda x, y: x == y or x > y, + 'and': lambda x, y: x and y, + 'or': lambda x, y: x or y, + 'in': lambda x, y: x in y, + 'not in': lambda x, y: x not in y, + } + + def evaluate(self, expr, context): + """ + Evaluate a marker expression returned by the :func:`parse_requirement` + function in the specified context. + """ + if isinstance(expr, string_types): + if expr[0] in '\'"': + result = expr[1:-1] + else: + if expr not in context: + raise SyntaxError('unknown variable: %s' % expr) + result = context[expr] + else: + assert isinstance(expr, dict) + op = expr['op'] + if op not in self.operations: + raise NotImplementedError('op not implemented: %s' % op) + elhs = expr['lhs'] + erhs = expr['rhs'] + if _is_literal(expr['lhs']) and _is_literal(expr['rhs']): + raise SyntaxError('invalid comparison: %s %s %s' % (elhs, op, erhs)) + + lhs = self.evaluate(elhs, context) + rhs = self.evaluate(erhs, context) + if ((elhs == 'python_version' or erhs == 'python_version') and + op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')): + lhs = NV(lhs) + rhs = NV(rhs) + elif elhs == 'python_version' and op in ('in', 'not in'): + lhs = NV(lhs) + rhs = _get_versions(rhs) + result = self.operations[op](lhs, rhs) + return result + +def default_context(): + def format_full_version(info): + version = '%s.%s.%s' % (info.major, info.minor, info.micro) + kind = info.releaselevel + if kind != 'final': + version += kind[0] + str(info.serial) + return version + + if hasattr(sys, 'implementation'): + implementation_version = format_full_version(sys.implementation.version) + implementation_name = sys.implementation.name + else: + implementation_version = '0' + implementation_name = '' + + result = { + 'implementation_name': implementation_name, + 'implementation_version': implementation_version, + 'os_name': os.name, + 'platform_machine': platform.machine(), + 'platform_python_implementation': platform.python_implementation(), + 'platform_release': platform.release(), + 'platform_system': platform.system(), + 'platform_version': platform.version(), + 'platform_in_venv': str(in_venv()), + 'python_full_version': platform.python_version(), + 'python_version': platform.python_version()[:3], + 'sys_platform': sys.platform, + } + return result + +DEFAULT_CONTEXT = default_context() +del default_context + +evaluator = Evaluator() + +def interpret(marker, execution_context=None): + """ + Interpret a marker and return a result depending on environment. + + :param marker: The marker to interpret. + :type marker: str + :param execution_context: The context used for name lookup. + :type execution_context: mapping + """ + try: + expr, rest = parse_marker(marker) + except Exception as e: + raise SyntaxError('Unable to interpret marker syntax: %s: %s' % (marker, e)) + if rest and rest[0] != '#': + raise SyntaxError('unexpected trailing data in marker: %s: %s' % (marker, rest)) + context = dict(DEFAULT_CONTEXT) + if execution_context: + context.update(execution_context) + return evaluator.evaluate(expr, context) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py b/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py new file mode 100644 index 00000000..6a26b0ab --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py @@ -0,0 +1,1058 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Implementation of the Metadata for Python packages PEPs. + +Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and withdrawn 2.0). +""" +from __future__ import unicode_literals + +import codecs +from email import message_from_file +import json +import logging +import re + + +from . import DistlibException, __version__ +from .compat import StringIO, string_types, text_type +from .markers import interpret +from .util import extract_by_key, get_extras +from .version import get_scheme, PEP440_VERSION_RE + +logger = logging.getLogger(__name__) + + +class MetadataMissingError(DistlibException): + """A required metadata is missing""" + + +class MetadataConflictError(DistlibException): + """Attempt to read or write metadata fields that are conflictual.""" + + +class MetadataUnrecognizedVersionError(DistlibException): + """Unknown metadata version number.""" + + +class MetadataInvalidError(DistlibException): + """A metadata value is invalid""" + +# public API of this module +__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] + +# Encoding used for the PKG-INFO files +PKG_INFO_ENCODING = 'utf-8' + +# preferred version. Hopefully will be changed +# to 1.2 once PEP 345 is supported everywhere +PKG_INFO_PREFERRED_VERSION = '1.1' + +_LINE_PREFIX_1_2 = re.compile('\n \\|') +_LINE_PREFIX_PRE_1_2 = re.compile('\n ') +_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License') + +_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License', 'Classifier', 'Download-URL', 'Obsoletes', + 'Provides', 'Requires') + +_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', + 'Download-URL') + +_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External') + +_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', + 'Obsoletes-Dist', 'Requires-External', 'Maintainer', + 'Maintainer-email', 'Project-URL') + +_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External', 'Private-Version', + 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', + 'Provides-Extra') + +_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', + 'Setup-Requires-Dist', 'Extension') + +# See issue #106: Sometimes 'Requires' and 'Provides' occur wrongly in +# the metadata. Include them in the tuple literal below to allow them +# (for now). +# Ditto for Obsoletes - see issue #140. +_566_FIELDS = _426_FIELDS + ('Description-Content-Type', + 'Requires', 'Provides', 'Obsoletes') + +_566_MARKERS = ('Description-Content-Type',) + +_ALL_FIELDS = set() +_ALL_FIELDS.update(_241_FIELDS) +_ALL_FIELDS.update(_314_FIELDS) +_ALL_FIELDS.update(_345_FIELDS) +_ALL_FIELDS.update(_426_FIELDS) +_ALL_FIELDS.update(_566_FIELDS) + +EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') + + +def _version2fieldlist(version): + if version == '1.0': + return _241_FIELDS + elif version == '1.1': + return _314_FIELDS + elif version == '1.2': + return _345_FIELDS + elif version in ('1.3', '2.1'): + # avoid adding field names if already there + return _345_FIELDS + tuple(f for f in _566_FIELDS if f not in _345_FIELDS) + elif version == '2.0': + return _426_FIELDS + raise MetadataUnrecognizedVersionError(version) + + +def _best_version(fields): + """Detect the best version depending on the fields used.""" + def _has_marker(keys, markers): + for marker in markers: + if marker in keys: + return True + return False + + keys = [] + for key, value in fields.items(): + if value in ([], 'UNKNOWN', None): + continue + keys.append(key) + + possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.0', '2.1'] + + # first let's try to see if a field is not part of one of the version + for key in keys: + if key not in _241_FIELDS and '1.0' in possible_versions: + possible_versions.remove('1.0') + logger.debug('Removed 1.0 due to %s', key) + if key not in _314_FIELDS and '1.1' in possible_versions: + possible_versions.remove('1.1') + logger.debug('Removed 1.1 due to %s', key) + if key not in _345_FIELDS and '1.2' in possible_versions: + possible_versions.remove('1.2') + logger.debug('Removed 1.2 due to %s', key) + if key not in _566_FIELDS and '1.3' in possible_versions: + possible_versions.remove('1.3') + logger.debug('Removed 1.3 due to %s', key) + if key not in _566_FIELDS and '2.1' in possible_versions: + if key != 'Description': # In 2.1, description allowed after headers + possible_versions.remove('2.1') + logger.debug('Removed 2.1 due to %s', key) + if key not in _426_FIELDS and '2.0' in possible_versions: + possible_versions.remove('2.0') + logger.debug('Removed 2.0 due to %s', key) + + # possible_version contains qualified versions + if len(possible_versions) == 1: + return possible_versions[0] # found ! + elif len(possible_versions) == 0: + logger.debug('Out of options - unknown metadata set: %s', fields) + raise MetadataConflictError('Unknown metadata set') + + # let's see if one unique marker is found + is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) + is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) + is_2_1 = '2.1' in possible_versions and _has_marker(keys, _566_MARKERS) + is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) + if int(is_1_1) + int(is_1_2) + int(is_2_1) + int(is_2_0) > 1: + raise MetadataConflictError('You used incompatible 1.1/1.2/2.0/2.1 fields') + + # we have the choice, 1.0, or 1.2, or 2.0 + # - 1.0 has a broken Summary field but works with all tools + # - 1.1 is to avoid + # - 1.2 fixes Summary but has little adoption + # - 2.0 adds more features and is very new + if not is_1_1 and not is_1_2 and not is_2_1 and not is_2_0: + # we couldn't find any specific marker + if PKG_INFO_PREFERRED_VERSION in possible_versions: + return PKG_INFO_PREFERRED_VERSION + if is_1_1: + return '1.1' + if is_1_2: + return '1.2' + if is_2_1: + return '2.1' + + return '2.0' + +# This follows the rules about transforming keys as described in +# https://www.python.org/dev/peps/pep-0566/#id17 +_ATTR2FIELD = { + name.lower().replace("-", "_"): name for name in _ALL_FIELDS +} +_FIELD2ATTR = {field: attr for attr, field in _ATTR2FIELD.items()} + +_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') +_VERSIONS_FIELDS = ('Requires-Python',) +_VERSION_FIELDS = ('Version',) +_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', + 'Requires', 'Provides', 'Obsoletes-Dist', + 'Provides-Dist', 'Requires-Dist', 'Requires-External', + 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', + 'Provides-Extra', 'Extension') +_LISTTUPLEFIELDS = ('Project-URL',) + +_ELEMENTSFIELD = ('Keywords',) + +_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') + +_MISSING = object() + +_FILESAFE = re.compile('[^A-Za-z0-9.]+') + + +def _get_name_and_version(name, version, for_filename=False): + """Return the distribution name with version. + + If for_filename is true, return a filename-escaped form.""" + if for_filename: + # For both name and version any runs of non-alphanumeric or '.' + # characters are replaced with a single '-'. Additionally any + # spaces in the version string become '.' + name = _FILESAFE.sub('-', name) + version = _FILESAFE.sub('-', version.replace(' ', '.')) + return '%s-%s' % (name, version) + + +class LegacyMetadata(object): + """The legacy metadata of a release. + + Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can + instantiate the class with one of these arguments (or none): + - *path*, the path to a metadata file + - *fileobj* give a file-like object with metadata as content + - *mapping* is a dict-like object + - *scheme* is a version scheme name + """ + # TODO document the mapping API and UNKNOWN default key + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._fields = {} + self.requires_files = [] + self._dependencies = None + self.scheme = scheme + if path is not None: + self.read(path) + elif fileobj is not None: + self.read_file(fileobj) + elif mapping is not None: + self.update(mapping) + self.set_metadata_version() + + def set_metadata_version(self): + self._fields['Metadata-Version'] = _best_version(self._fields) + + def _write_field(self, fileobj, name, value): + fileobj.write('%s: %s\n' % (name, value)) + + def __getitem__(self, name): + return self.get(name) + + def __setitem__(self, name, value): + return self.set(name, value) + + def __delitem__(self, name): + field_name = self._convert_name(name) + try: + del self._fields[field_name] + except KeyError: + raise KeyError(name) + + def __contains__(self, name): + return (name in self._fields or + self._convert_name(name) in self._fields) + + def _convert_name(self, name): + if name in _ALL_FIELDS: + return name + name = name.replace('-', '_').lower() + return _ATTR2FIELD.get(name, name) + + def _default_value(self, name): + if name in _LISTFIELDS or name in _ELEMENTSFIELD: + return [] + return 'UNKNOWN' + + def _remove_line_prefix(self, value): + if self.metadata_version in ('1.0', '1.1'): + return _LINE_PREFIX_PRE_1_2.sub('\n', value) + else: + return _LINE_PREFIX_1_2.sub('\n', value) + + def __getattr__(self, name): + if name in _ATTR2FIELD: + return self[name] + raise AttributeError(name) + + # + # Public API + # + +# dependencies = property(_get_dependencies, _set_dependencies) + + def get_fullname(self, filesafe=False): + """Return the distribution name with version. + + If filesafe is true, return a filename-escaped form.""" + return _get_name_and_version(self['Name'], self['Version'], filesafe) + + def is_field(self, name): + """return True if name is a valid metadata key""" + name = self._convert_name(name) + return name in _ALL_FIELDS + + def is_multi_field(self, name): + name = self._convert_name(name) + return name in _LISTFIELDS + + def read(self, filepath): + """Read the metadata values from a file path.""" + fp = codecs.open(filepath, 'r', encoding='utf-8') + try: + self.read_file(fp) + finally: + fp.close() + + def read_file(self, fileob): + """Read the metadata values from a file object.""" + msg = message_from_file(fileob) + self._fields['Metadata-Version'] = msg['metadata-version'] + + # When reading, get all the fields we can + for field in _ALL_FIELDS: + if field not in msg: + continue + if field in _LISTFIELDS: + # we can have multiple lines + values = msg.get_all(field) + if field in _LISTTUPLEFIELDS and values is not None: + values = [tuple(value.split(',')) for value in values] + self.set(field, values) + else: + # single line + value = msg[field] + if value is not None and value != 'UNKNOWN': + self.set(field, value) + + # PEP 566 specifies that the body be used for the description, if + # available + body = msg.get_payload() + self["Description"] = body if body else self["Description"] + # logger.debug('Attempting to set metadata for %s', self) + # self.set_metadata_version() + + def write(self, filepath, skip_unknown=False): + """Write the metadata fields to filepath.""" + fp = codecs.open(filepath, 'w', encoding='utf-8') + try: + self.write_file(fp, skip_unknown) + finally: + fp.close() + + def write_file(self, fileobject, skip_unknown=False): + """Write the PKG-INFO format data to a file object.""" + self.set_metadata_version() + + for field in _version2fieldlist(self['Metadata-Version']): + values = self.get(field) + if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): + continue + if field in _ELEMENTSFIELD: + self._write_field(fileobject, field, ','.join(values)) + continue + if field not in _LISTFIELDS: + if field == 'Description': + if self.metadata_version in ('1.0', '1.1'): + values = values.replace('\n', '\n ') + else: + values = values.replace('\n', '\n |') + values = [values] + + if field in _LISTTUPLEFIELDS: + values = [','.join(value) for value in values] + + for value in values: + self._write_field(fileobject, field, value) + + def update(self, other=None, **kwargs): + """Set metadata values from the given iterable `other` and kwargs. + + Behavior is like `dict.update`: If `other` has a ``keys`` method, + they are looped over and ``self[key]`` is assigned ``other[key]``. + Else, ``other`` is an iterable of ``(key, value)`` iterables. + + Keys that don't match a metadata field or that have an empty value are + dropped. + """ + def _set(key, value): + if key in _ATTR2FIELD and value: + self.set(self._convert_name(key), value) + + if not other: + # other is None or empty container + pass + elif hasattr(other, 'keys'): + for k in other.keys(): + _set(k, other[k]) + else: + for k, v in other: + _set(k, v) + + if kwargs: + for k, v in kwargs.items(): + _set(k, v) + + def set(self, name, value): + """Control then set a metadata field.""" + name = self._convert_name(name) + + if ((name in _ELEMENTSFIELD or name == 'Platform') and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [v.strip() for v in value.split(',')] + else: + value = [] + elif (name in _LISTFIELDS and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [value] + else: + value = [] + + if logger.isEnabledFor(logging.WARNING): + project_name = self['Name'] + + scheme = get_scheme(self.scheme) + if name in _PREDICATE_FIELDS and value is not None: + for v in value: + # check that the values are valid + if not scheme.is_valid_matcher(v.split(';')[0]): + logger.warning( + "'%s': '%s' is not valid (field '%s')", + project_name, v, name) + # FIXME this rejects UNKNOWN, is that right? + elif name in _VERSIONS_FIELDS and value is not None: + if not scheme.is_valid_constraint_list(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + elif name in _VERSION_FIELDS and value is not None: + if not scheme.is_valid_version(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + + if name in _UNICODEFIELDS: + if name == 'Description': + value = self._remove_line_prefix(value) + + self._fields[name] = value + + def get(self, name, default=_MISSING): + """Get a metadata field.""" + name = self._convert_name(name) + if name not in self._fields: + if default is _MISSING: + default = self._default_value(name) + return default + if name in _UNICODEFIELDS: + value = self._fields[name] + return value + elif name in _LISTFIELDS: + value = self._fields[name] + if value is None: + return [] + res = [] + for val in value: + if name not in _LISTTUPLEFIELDS: + res.append(val) + else: + # That's for Project-URL + res.append((val[0], val[1])) + return res + + elif name in _ELEMENTSFIELD: + value = self._fields[name] + if isinstance(value, string_types): + return value.split(',') + return self._fields[name] + + def check(self, strict=False): + """Check if the metadata is compliant. If strict is True then raise if + no Name or Version are provided""" + self.set_metadata_version() + + # XXX should check the versions (if the file was loaded) + missing, warnings = [], [] + + for attr in ('Name', 'Version'): # required by PEP 345 + if attr not in self: + missing.append(attr) + + if strict and missing != []: + msg = 'missing required metadata: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + + for attr in ('Home-page', 'Author'): + if attr not in self: + missing.append(attr) + + # checking metadata 1.2 (XXX needs to check 1.1, 1.0) + if self['Metadata-Version'] != '1.2': + return missing, warnings + + scheme = get_scheme(self.scheme) + + def are_valid_constraints(value): + for v in value: + if not scheme.is_valid_matcher(v.split(';')[0]): + return False + return True + + for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), + (_VERSIONS_FIELDS, + scheme.is_valid_constraint_list), + (_VERSION_FIELDS, + scheme.is_valid_version)): + for field in fields: + value = self.get(field, None) + if value is not None and not controller(value): + warnings.append("Wrong value for '%s': %s" % (field, value)) + + return missing, warnings + + def todict(self, skip_missing=False): + """Return fields as a dict. + + Field names will be converted to use the underscore-lowercase style + instead of hyphen-mixed case (i.e. home_page instead of Home-page). + This is as per https://www.python.org/dev/peps/pep-0566/#id17. + """ + self.set_metadata_version() + + fields = _version2fieldlist(self['Metadata-Version']) + + data = {} + + for field_name in fields: + if not skip_missing or field_name in self._fields: + key = _FIELD2ATTR[field_name] + if key != 'project_url': + data[key] = self[field_name] + else: + data[key] = [','.join(u) for u in self[field_name]] + + return data + + def add_requirements(self, requirements): + if self['Metadata-Version'] == '1.1': + # we can't have 1.1 metadata *and* Setuptools requires + for field in ('Obsoletes', 'Requires', 'Provides'): + if field in self: + del self[field] + self['Requires-Dist'] += requirements + + # Mapping API + # TODO could add iter* variants + + def keys(self): + return list(_version2fieldlist(self['Metadata-Version'])) + + def __iter__(self): + for key in self.keys(): + yield key + + def values(self): + return [self[key] for key in self.keys()] + + def items(self): + return [(key, self[key]) for key in self.keys()] + + def __repr__(self): + return '<%s %s %s>' % (self.__class__.__name__, self.name, + self.version) + + +METADATA_FILENAME = 'pydist.json' +WHEEL_METADATA_FILENAME = 'metadata.json' +LEGACY_METADATA_FILENAME = 'METADATA' + + +class Metadata(object): + """ + The metadata of a release. This implementation uses 2.0 (JSON) + metadata where possible. If not possible, it wraps a LegacyMetadata + instance which handles the key-value metadata format. + """ + + METADATA_VERSION_MATCHER = re.compile(r'^\d+(\.\d+)*$') + + NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) + + VERSION_MATCHER = PEP440_VERSION_RE + + SUMMARY_MATCHER = re.compile('.{1,2047}') + + METADATA_VERSION = '2.0' + + GENERATOR = 'distlib (%s)' % __version__ + + MANDATORY_KEYS = { + 'name': (), + 'version': (), + 'summary': ('legacy',), + } + + INDEX_KEYS = ('name version license summary description author ' + 'author_email keywords platform home_page classifiers ' + 'download_url') + + DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' + 'dev_requires provides meta_requires obsoleted_by ' + 'supports_environments') + + SYNTAX_VALIDATORS = { + 'metadata_version': (METADATA_VERSION_MATCHER, ()), + 'name': (NAME_MATCHER, ('legacy',)), + 'version': (VERSION_MATCHER, ('legacy',)), + 'summary': (SUMMARY_MATCHER, ('legacy',)), + } + + __slots__ = ('_legacy', '_data', 'scheme') + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._legacy = None + self._data = None + self.scheme = scheme + #import pdb; pdb.set_trace() + if mapping is not None: + try: + self._validate_mapping(mapping, scheme) + self._data = mapping + except MetadataUnrecognizedVersionError: + self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) + self.validate() + else: + data = None + if path: + with open(path, 'rb') as f: + data = f.read() + elif fileobj: + data = fileobj.read() + if data is None: + # Initialised with no args - to be added + self._data = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + else: + if not isinstance(data, text_type): + data = data.decode('utf-8') + try: + self._data = json.loads(data) + self._validate_mapping(self._data, scheme) + except ValueError: + # Note: MetadataUnrecognizedVersionError does not + # inherit from ValueError (it's a DistlibException, + # which should not inherit from ValueError). + # The ValueError comes from the json.load - if that + # succeeds and we get a validation error, we want + # that to propagate + self._legacy = LegacyMetadata(fileobj=StringIO(data), + scheme=scheme) + self.validate() + + common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) + + none_list = (None, list) + none_dict = (None, dict) + + mapped_keys = { + 'run_requires': ('Requires-Dist', list), + 'build_requires': ('Setup-Requires-Dist', list), + 'dev_requires': none_list, + 'test_requires': none_list, + 'meta_requires': none_list, + 'extras': ('Provides-Extra', list), + 'modules': none_list, + 'namespaces': none_list, + 'exports': none_dict, + 'commands': none_dict, + 'classifiers': ('Classifier', list), + 'source_url': ('Download-URL', None), + 'metadata_version': ('Metadata-Version', None), + } + + del none_list, none_dict + + def __getattribute__(self, key): + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, maker = mapped[key] + if self._legacy: + if lk is None: + result = None if maker is None else maker() + else: + result = self._legacy.get(lk) + else: + value = None if maker is None else maker() + if key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + result = self._data.get(key, value) + else: + # special cases for PEP 459 + sentinel = object() + result = sentinel + d = self._data.get('extensions') + if d: + if key == 'commands': + result = d.get('python.commands', value) + elif key == 'classifiers': + d = d.get('python.details') + if d: + result = d.get(key, value) + else: + d = d.get('python.exports') + if not d: + d = self._data.get('python.exports') + if d: + result = d.get(key, value) + if result is sentinel: + result = value + elif key not in common: + result = object.__getattribute__(self, key) + elif self._legacy: + result = self._legacy.get(key) + else: + result = self._data.get(key) + return result + + def _validate_value(self, key, value, scheme=None): + if key in self.SYNTAX_VALIDATORS: + pattern, exclusions = self.SYNTAX_VALIDATORS[key] + if (scheme or self.scheme) not in exclusions: + m = pattern.match(value) + if not m: + raise MetadataInvalidError("'%s' is an invalid value for " + "the '%s' property" % (value, + key)) + + def __setattr__(self, key, value): + self._validate_value(key, value) + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, _ = mapped[key] + if self._legacy: + if lk is None: + raise NotImplementedError + self._legacy[lk] = value + elif key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + self._data[key] = value + else: + # special cases for PEP 459 + d = self._data.setdefault('extensions', {}) + if key == 'commands': + d['python.commands'] = value + elif key == 'classifiers': + d = d.setdefault('python.details', {}) + d[key] = value + else: + d = d.setdefault('python.exports', {}) + d[key] = value + elif key not in common: + object.__setattr__(self, key, value) + else: + if key == 'keywords': + if isinstance(value, string_types): + value = value.strip() + if value: + value = value.split() + else: + value = [] + if self._legacy: + self._legacy[key] = value + else: + self._data[key] = value + + @property + def name_and_version(self): + return _get_name_and_version(self.name, self.version, True) + + @property + def provides(self): + if self._legacy: + result = self._legacy['Provides-Dist'] + else: + result = self._data.setdefault('provides', []) + s = '%s (%s)' % (self.name, self.version) + if s not in result: + result.append(s) + return result + + @provides.setter + def provides(self, value): + if self._legacy: + self._legacy['Provides-Dist'] = value + else: + self._data['provides'] = value + + def get_requirements(self, reqts, extras=None, env=None): + """ + Base method to get dependencies, given a set of extras + to satisfy and an optional environment context. + :param reqts: A list of sometimes-wanted dependencies, + perhaps dependent on extras and environment. + :param extras: A list of optional components being requested. + :param env: An optional environment for marker evaluation. + """ + if self._legacy: + result = reqts + else: + result = [] + extras = get_extras(extras or [], self.extras) + for d in reqts: + if 'extra' not in d and 'environment' not in d: + # unconditional + include = True + else: + if 'extra' not in d: + # Not extra-dependent - only environment-dependent + include = True + else: + include = d.get('extra') in extras + if include: + # Not excluded because of extras, check environment + marker = d.get('environment') + if marker: + include = interpret(marker, env) + if include: + result.extend(d['requires']) + for key in ('build', 'dev', 'test'): + e = ':%s:' % key + if e in extras: + extras.remove(e) + # A recursive call, but it should terminate since 'test' + # has been removed from the extras + reqts = self._data.get('%s_requires' % key, []) + result.extend(self.get_requirements(reqts, extras=extras, + env=env)) + return result + + @property + def dictionary(self): + if self._legacy: + return self._from_legacy() + return self._data + + @property + def dependencies(self): + if self._legacy: + raise NotImplementedError + else: + return extract_by_key(self._data, self.DEPENDENCY_KEYS) + + @dependencies.setter + def dependencies(self, value): + if self._legacy: + raise NotImplementedError + else: + self._data.update(value) + + def _validate_mapping(self, mapping, scheme): + if mapping.get('metadata_version') != self.METADATA_VERSION: + raise MetadataUnrecognizedVersionError() + missing = [] + for key, exclusions in self.MANDATORY_KEYS.items(): + if key not in mapping: + if scheme not in exclusions: + missing.append(key) + if missing: + msg = 'Missing metadata items: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + for k, v in mapping.items(): + self._validate_value(k, v, scheme) + + def validate(self): + if self._legacy: + missing, warnings = self._legacy.check(True) + if missing or warnings: + logger.warning('Metadata: missing: %s, warnings: %s', + missing, warnings) + else: + self._validate_mapping(self._data, self.scheme) + + def todict(self): + if self._legacy: + return self._legacy.todict(True) + else: + result = extract_by_key(self._data, self.INDEX_KEYS) + return result + + def _from_legacy(self): + assert self._legacy and not self._data + result = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + lmd = self._legacy.todict(True) # skip missing ones + for k in ('name', 'version', 'license', 'summary', 'description', + 'classifier'): + if k in lmd: + if k == 'classifier': + nk = 'classifiers' + else: + nk = k + result[nk] = lmd[k] + kw = lmd.get('Keywords', []) + if kw == ['']: + kw = [] + result['keywords'] = kw + keys = (('requires_dist', 'run_requires'), + ('setup_requires_dist', 'build_requires')) + for ok, nk in keys: + if ok in lmd and lmd[ok]: + result[nk] = [{'requires': lmd[ok]}] + result['provides'] = self.provides + author = {} + maintainer = {} + return result + + LEGACY_MAPPING = { + 'name': 'Name', + 'version': 'Version', + ('extensions', 'python.details', 'license'): 'License', + 'summary': 'Summary', + 'description': 'Description', + ('extensions', 'python.project', 'project_urls', 'Home'): 'Home-page', + ('extensions', 'python.project', 'contacts', 0, 'name'): 'Author', + ('extensions', 'python.project', 'contacts', 0, 'email'): 'Author-email', + 'source_url': 'Download-URL', + ('extensions', 'python.details', 'classifiers'): 'Classifier', + } + + def _to_legacy(self): + def process_entries(entries): + reqts = set() + for e in entries: + extra = e.get('extra') + env = e.get('environment') + rlist = e['requires'] + for r in rlist: + if not env and not extra: + reqts.add(r) + else: + marker = '' + if extra: + marker = 'extra == "%s"' % extra + if env: + if marker: + marker = '(%s) and %s' % (env, marker) + else: + marker = env + reqts.add(';'.join((r, marker))) + return reqts + + assert self._data and not self._legacy + result = LegacyMetadata() + nmd = self._data + # import pdb; pdb.set_trace() + for nk, ok in self.LEGACY_MAPPING.items(): + if not isinstance(nk, tuple): + if nk in nmd: + result[ok] = nmd[nk] + else: + d = nmd + found = True + for k in nk: + try: + d = d[k] + except (KeyError, IndexError): + found = False + break + if found: + result[ok] = d + r1 = process_entries(self.run_requires + self.meta_requires) + r2 = process_entries(self.build_requires + self.dev_requires) + if self.extras: + result['Provides-Extra'] = sorted(self.extras) + result['Requires-Dist'] = sorted(r1) + result['Setup-Requires-Dist'] = sorted(r2) + # TODO: any other fields wanted + return result + + def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): + if [path, fileobj].count(None) != 1: + raise ValueError('Exactly one of path and fileobj is needed') + self.validate() + if legacy: + if self._legacy: + legacy_md = self._legacy + else: + legacy_md = self._to_legacy() + if path: + legacy_md.write(path, skip_unknown=skip_unknown) + else: + legacy_md.write_file(fileobj, skip_unknown=skip_unknown) + else: + if self._legacy: + d = self._from_legacy() + else: + d = self._data + if fileobj: + json.dump(d, fileobj, ensure_ascii=True, indent=2, + sort_keys=True) + else: + with codecs.open(path, 'w', 'utf-8') as f: + json.dump(d, f, ensure_ascii=True, indent=2, + sort_keys=True) + + def add_requirements(self, requirements): + if self._legacy: + self._legacy.add_requirements(requirements) + else: + run_requires = self._data.setdefault('run_requires', []) + always = None + for entry in run_requires: + if 'environment' not in entry and 'extra' not in entry: + always = entry + break + if always is None: + always = { 'requires': requirements } + run_requires.insert(0, always) + else: + rset = set(always['requires']) | set(requirements) + always['requires'] = sorted(rset) + + def __repr__(self): + name = self.name or '(no name)' + version = self.version or 'no version' + return '<%s %s %s (%s)>' % (self.__class__.__name__, + self.metadata_version, name, version) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/resources.py b/venv/Lib/site-packages/pip/_vendor/distlib/resources.py new file mode 100644 index 00000000..fef52aa1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/resources.py @@ -0,0 +1,358 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import unicode_literals + +import bisect +import io +import logging +import os +import pkgutil +import sys +import types +import zipimport + +from . import DistlibException +from .util import cached_property, get_cache_base, Cache + +logger = logging.getLogger(__name__) + + +cache = None # created when needed + + +class ResourceCache(Cache): + def __init__(self, base=None): + if base is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('resource-cache')) + super(ResourceCache, self).__init__(base) + + def is_stale(self, resource, path): + """ + Is the cache stale for the given resource? + + :param resource: The :class:`Resource` being cached. + :param path: The path of the resource in the cache. + :return: True if the cache is stale. + """ + # Cache invalidation is a hard problem :-) + return True + + def get(self, resource): + """ + Get a resource into the cache, + + :param resource: A :class:`Resource` instance. + :return: The pathname of the resource in the cache. + """ + prefix, path = resource.finder.get_cache_info(resource) + if prefix is None: + result = path + else: + result = os.path.join(self.base, self.prefix_to_dir(prefix), path) + dirname = os.path.dirname(result) + if not os.path.isdir(dirname): + os.makedirs(dirname) + if not os.path.exists(result): + stale = True + else: + stale = self.is_stale(resource, path) + if stale: + # write the bytes of the resource to the cache location + with open(result, 'wb') as f: + f.write(resource.bytes) + return result + + +class ResourceBase(object): + def __init__(self, finder, name): + self.finder = finder + self.name = name + + +class Resource(ResourceBase): + """ + A class representing an in-package resource, such as a data file. This is + not normally instantiated by user code, but rather by a + :class:`ResourceFinder` which manages the resource. + """ + is_container = False # Backwards compatibility + + def as_stream(self): + """ + Get the resource as a stream. + + This is not a property to make it obvious that it returns a new stream + each time. + """ + return self.finder.get_stream(self) + + @cached_property + def file_path(self): + global cache + if cache is None: + cache = ResourceCache() + return cache.get(self) + + @cached_property + def bytes(self): + return self.finder.get_bytes(self) + + @cached_property + def size(self): + return self.finder.get_size(self) + + +class ResourceContainer(ResourceBase): + is_container = True # Backwards compatibility + + @cached_property + def resources(self): + return self.finder.get_resources(self) + + +class ResourceFinder(object): + """ + Resource finder for file system resources. + """ + + if sys.platform.startswith('java'): + skipped_extensions = ('.pyc', '.pyo', '.class') + else: + skipped_extensions = ('.pyc', '.pyo') + + def __init__(self, module): + self.module = module + self.loader = getattr(module, '__loader__', None) + self.base = os.path.dirname(getattr(module, '__file__', '')) + + def _adjust_path(self, path): + return os.path.realpath(path) + + def _make_path(self, resource_name): + # Issue #50: need to preserve type of path on Python 2.x + # like os.path._get_sep + if isinstance(resource_name, bytes): # should only happen on 2.x + sep = b'/' + else: + sep = '/' + parts = resource_name.split(sep) + parts.insert(0, self.base) + result = os.path.join(*parts) + return self._adjust_path(result) + + def _find(self, path): + return os.path.exists(path) + + def get_cache_info(self, resource): + return None, resource.path + + def find(self, resource_name): + path = self._make_path(resource_name) + if not self._find(path): + result = None + else: + if self._is_directory(path): + result = ResourceContainer(self, resource_name) + else: + result = Resource(self, resource_name) + result.path = path + return result + + def get_stream(self, resource): + return open(resource.path, 'rb') + + def get_bytes(self, resource): + with open(resource.path, 'rb') as f: + return f.read() + + def get_size(self, resource): + return os.path.getsize(resource.path) + + def get_resources(self, resource): + def allowed(f): + return (f != '__pycache__' and not + f.endswith(self.skipped_extensions)) + return set([f for f in os.listdir(resource.path) if allowed(f)]) + + def is_container(self, resource): + return self._is_directory(resource.path) + + _is_directory = staticmethod(os.path.isdir) + + def iterator(self, resource_name): + resource = self.find(resource_name) + if resource is not None: + todo = [resource] + while todo: + resource = todo.pop(0) + yield resource + if resource.is_container: + rname = resource.name + for name in resource.resources: + if not rname: + new_name = name + else: + new_name = '/'.join([rname, name]) + child = self.find(new_name) + if child.is_container: + todo.append(child) + else: + yield child + + +class ZipResourceFinder(ResourceFinder): + """ + Resource finder for resources in .zip files. + """ + def __init__(self, module): + super(ZipResourceFinder, self).__init__(module) + archive = self.loader.archive + self.prefix_len = 1 + len(archive) + # PyPy doesn't have a _files attr on zipimporter, and you can't set one + if hasattr(self.loader, '_files'): + self._files = self.loader._files + else: + self._files = zipimport._zip_directory_cache[archive] + self.index = sorted(self._files) + + def _adjust_path(self, path): + return path + + def _find(self, path): + path = path[self.prefix_len:] + if path in self._files: + result = True + else: + if path and path[-1] != os.sep: + path = path + os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + if not result: + logger.debug('_find failed: %r %r', path, self.loader.prefix) + else: + logger.debug('_find worked: %r %r', path, self.loader.prefix) + return result + + def get_cache_info(self, resource): + prefix = self.loader.archive + path = resource.path[1 + len(prefix):] + return prefix, path + + def get_bytes(self, resource): + return self.loader.get_data(resource.path) + + def get_stream(self, resource): + return io.BytesIO(self.get_bytes(resource)) + + def get_size(self, resource): + path = resource.path[self.prefix_len:] + return self._files[path][3] + + def get_resources(self, resource): + path = resource.path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + plen = len(path) + result = set() + i = bisect.bisect(self.index, path) + while i < len(self.index): + if not self.index[i].startswith(path): + break + s = self.index[i][plen:] + result.add(s.split(os.sep, 1)[0]) # only immediate children + i += 1 + return result + + def _is_directory(self, path): + path = path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + return result + + +_finder_registry = { + type(None): ResourceFinder, + zipimport.zipimporter: ZipResourceFinder +} + +try: + # In Python 3.6, _frozen_importlib -> _frozen_importlib_external + try: + import _frozen_importlib_external as _fi + except ImportError: + import _frozen_importlib as _fi + _finder_registry[_fi.SourceFileLoader] = ResourceFinder + _finder_registry[_fi.FileFinder] = ResourceFinder + # See issue #146 + _finder_registry[_fi.SourcelessFileLoader] = ResourceFinder + del _fi +except (ImportError, AttributeError): + pass + + +def register_finder(loader, finder_maker): + _finder_registry[type(loader)] = finder_maker + + +_finder_cache = {} + + +def finder(package): + """ + Return a resource finder for a package. + :param package: The name of the package. + :return: A :class:`ResourceFinder` instance for the package. + """ + if package in _finder_cache: + result = _finder_cache[package] + else: + if package not in sys.modules: + __import__(package) + module = sys.modules[package] + path = getattr(module, '__path__', None) + if path is None: + raise DistlibException('You cannot get a finder for a module, ' + 'only for a package') + loader = getattr(module, '__loader__', None) + finder_maker = _finder_registry.get(type(loader)) + if finder_maker is None: + raise DistlibException('Unable to locate finder for %r' % package) + result = finder_maker(module) + _finder_cache[package] = result + return result + + +_dummy_module = types.ModuleType(str('__dummy__')) + + +def finder_for_path(path): + """ + Return a resource finder for a path, which should represent a container. + + :param path: The path. + :return: A :class:`ResourceFinder` instance for the path. + """ + result = None + # calls any path hooks, gets importer into cache + pkgutil.get_importer(path) + loader = sys.path_importer_cache.get(path) + finder = _finder_registry.get(type(loader)) + if finder: + module = _dummy_module + module.__file__ = os.path.join(path, '') + module.__loader__ = loader + result = finder(module) + return result diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py b/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py new file mode 100644 index 00000000..913912c7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py @@ -0,0 +1,429 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from io import BytesIO +import logging +import os +import re +import struct +import sys + +from .compat import sysconfig, detect_encoding, ZipFile +from .resources import finder +from .util import (FileOperator, get_export_entry, convert_path, + get_executable, get_platform, in_venv) + +logger = logging.getLogger(__name__) + +_DEFAULT_MANIFEST = ''' + + + + + + + + + + + + +'''.strip() + +# check if Python is called on the first line with this expression +FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') +SCRIPT_TEMPLATE = r'''# -*- coding: utf-8 -*- +import re +import sys +from %(module)s import %(import_name)s +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(%(func)s()) +''' + + +def enquote_executable(executable): + if ' ' in executable: + # make sure we quote only the executable in case of env + # for example /usr/bin/env "/dir with spaces/bin/jython" + # instead of "/usr/bin/env /dir with spaces/bin/jython" + # otherwise whole + if executable.startswith('/usr/bin/env '): + env, _executable = executable.split(' ', 1) + if ' ' in _executable and not _executable.startswith('"'): + executable = '%s "%s"' % (env, _executable) + else: + if not executable.startswith('"'): + executable = '"%s"' % executable + return executable + +# Keep the old name around (for now), as there is at least one project using it! +_enquote_executable = enquote_executable + +class ScriptMaker(object): + """ + A class to copy or create scripts from source scripts or callable + specifications. + """ + script_template = SCRIPT_TEMPLATE + + executable = None # for shebangs + + def __init__(self, source_dir, target_dir, add_launchers=True, + dry_run=False, fileop=None): + self.source_dir = source_dir + self.target_dir = target_dir + self.add_launchers = add_launchers + self.force = False + self.clobber = False + # It only makes sense to set mode bits on POSIX. + self.set_mode = (os.name == 'posix') or (os.name == 'java' and + os._name == 'posix') + self.variants = set(('', 'X.Y')) + self._fileop = fileop or FileOperator(dry_run) + + self._is_nt = os.name == 'nt' or ( + os.name == 'java' and os._name == 'nt') + self.version_info = sys.version_info + + def _get_alternate_executable(self, executable, options): + if options.get('gui', False) and self._is_nt: # pragma: no cover + dn, fn = os.path.split(executable) + fn = fn.replace('python', 'pythonw') + executable = os.path.join(dn, fn) + return executable + + if sys.platform.startswith('java'): # pragma: no cover + def _is_shell(self, executable): + """ + Determine if the specified executable is a script + (contains a #! line) + """ + try: + with open(executable) as fp: + return fp.read(2) == '#!' + except (OSError, IOError): + logger.warning('Failed to open %s', executable) + return False + + def _fix_jython_executable(self, executable): + if self._is_shell(executable): + # Workaround for Jython is not needed on Linux systems. + import java + + if java.lang.System.getProperty('os.name') == 'Linux': + return executable + elif executable.lower().endswith('jython.exe'): + # Use wrapper exe for Jython on Windows + return executable + return '/usr/bin/env %s' % executable + + def _build_shebang(self, executable, post_interp): + """ + Build a shebang line. In the simple case (on Windows, or a shebang line + which is not too long or contains spaces) use a simple formulation for + the shebang. Otherwise, use /bin/sh as the executable, with a contrived + shebang which allows the script to run either under Python or sh, using + suitable quoting. Thanks to Harald Nordgren for his input. + + See also: http://www.in-ulm.de/~mascheck/various/shebang/#length + https://hg.mozilla.org/mozilla-central/file/tip/mach + """ + if os.name != 'posix': + simple_shebang = True + else: + # Add 3 for '#!' prefix and newline suffix. + shebang_length = len(executable) + len(post_interp) + 3 + if sys.platform == 'darwin': + max_shebang_length = 512 + else: + max_shebang_length = 127 + simple_shebang = ((b' ' not in executable) and + (shebang_length <= max_shebang_length)) + + if simple_shebang: + result = b'#!' + executable + post_interp + b'\n' + else: + result = b'#!/bin/sh\n' + result += b"'''exec' " + executable + post_interp + b' "$0" "$@"\n' + result += b"' '''" + return result + + def _get_shebang(self, encoding, post_interp=b'', options=None): + enquote = True + if self.executable: + executable = self.executable + enquote = False # assume this will be taken care of + elif not sysconfig.is_python_build(): + executable = get_executable() + elif in_venv(): # pragma: no cover + executable = os.path.join(sysconfig.get_path('scripts'), + 'python%s' % sysconfig.get_config_var('EXE')) + else: # pragma: no cover + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s%s' % (sysconfig.get_config_var('VERSION'), + sysconfig.get_config_var('EXE'))) + if not os.path.isfile(executable): + # for Python builds from source on Windows, no Python executables with + # a version suffix are created, so we use python.exe + executable = os.path.join(sysconfig.get_config_var('BINDIR'), + 'python%s' % (sysconfig.get_config_var('EXE'))) + if options: + executable = self._get_alternate_executable(executable, options) + + if sys.platform.startswith('java'): # pragma: no cover + executable = self._fix_jython_executable(executable) + + # Normalise case for Windows - COMMENTED OUT + # executable = os.path.normcase(executable) + # N.B. The normalising operation above has been commented out: See + # issue #124. Although paths in Windows are generally case-insensitive, + # they aren't always. For example, a path containing a ẞ (which is a + # LATIN CAPITAL LETTER SHARP S - U+1E9E) is normcased to ß (which is a + # LATIN SMALL LETTER SHARP S' - U+00DF). The two are not considered by + # Windows as equivalent in path names. + + # If the user didn't specify an executable, it may be necessary to + # cater for executable paths with spaces (not uncommon on Windows) + if enquote: + executable = enquote_executable(executable) + # Issue #51: don't use fsencode, since we later try to + # check that the shebang is decodable using utf-8. + executable = executable.encode('utf-8') + # in case of IronPython, play safe and enable frames support + if (sys.platform == 'cli' and '-X:Frames' not in post_interp + and '-X:FullFrames' not in post_interp): # pragma: no cover + post_interp += b' -X:Frames' + shebang = self._build_shebang(executable, post_interp) + # Python parser starts to read a script using UTF-8 until + # it gets a #coding:xxx cookie. The shebang has to be the + # first line of a file, the #coding:xxx cookie cannot be + # written before. So the shebang has to be decodable from + # UTF-8. + try: + shebang.decode('utf-8') + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable from utf-8' % shebang) + # If the script is encoded to a custom encoding (use a + # #coding:xxx cookie), the shebang has to be decodable from + # the script encoding too. + if encoding != 'utf-8': + try: + shebang.decode(encoding) + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable ' + 'from the script encoding (%r)' % (shebang, encoding)) + return shebang + + def _get_script_text(self, entry): + return self.script_template % dict(module=entry.prefix, + import_name=entry.suffix.split('.')[0], + func=entry.suffix) + + manifest = _DEFAULT_MANIFEST + + def get_manifest(self, exename): + base = os.path.basename(exename) + return self.manifest % base + + def _write_script(self, names, shebang, script_bytes, filenames, ext): + use_launcher = self.add_launchers and self._is_nt + linesep = os.linesep.encode('utf-8') + if not shebang.endswith(linesep): + shebang += linesep + if not use_launcher: + script_bytes = shebang + script_bytes + else: # pragma: no cover + if ext == 'py': + launcher = self._get_launcher('t') + else: + launcher = self._get_launcher('w') + stream = BytesIO() + with ZipFile(stream, 'w') as zf: + zf.writestr('__main__.py', script_bytes) + zip_data = stream.getvalue() + script_bytes = launcher + shebang + zip_data + for name in names: + outname = os.path.join(self.target_dir, name) + if use_launcher: # pragma: no cover + n, e = os.path.splitext(outname) + if e.startswith('.py'): + outname = n + outname = '%s.exe' % outname + try: + self._fileop.write_binary_file(outname, script_bytes) + except Exception: + # Failed writing an executable - it might be in use. + logger.warning('Failed to write executable - trying to ' + 'use .deleteme logic') + dfname = '%s.deleteme' % outname + if os.path.exists(dfname): + os.remove(dfname) # Not allowed to fail here + os.rename(outname, dfname) # nor here + self._fileop.write_binary_file(outname, script_bytes) + logger.debug('Able to replace executable using ' + '.deleteme logic') + try: + os.remove(dfname) + except Exception: + pass # still in use - ignore error + else: + if self._is_nt and not outname.endswith('.' + ext): # pragma: no cover + outname = '%s.%s' % (outname, ext) + if os.path.exists(outname) and not self.clobber: + logger.warning('Skipping existing file %s', outname) + continue + self._fileop.write_binary_file(outname, script_bytes) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + + variant_separator = '-' + + def get_script_filenames(self, name): + result = set() + if '' in self.variants: + result.add(name) + if 'X' in self.variants: + result.add('%s%s' % (name, self.version_info[0])) + if 'X.Y' in self.variants: + result.add('%s%s%s.%s' % (name, self.variant_separator, + self.version_info[0], self.version_info[1])) + return result + + def _make_script(self, entry, filenames, options=None): + post_interp = b'' + if options: + args = options.get('interpreter_args', []) + if args: + args = ' %s' % ' '.join(args) + post_interp = args.encode('utf-8') + shebang = self._get_shebang('utf-8', post_interp, options=options) + script = self._get_script_text(entry).encode('utf-8') + scriptnames = self.get_script_filenames(entry.name) + if options and options.get('gui', False): + ext = 'pyw' + else: + ext = 'py' + self._write_script(scriptnames, shebang, script, filenames, ext) + + def _copy_script(self, script, filenames): + adjust = False + script = os.path.join(self.source_dir, convert_path(script)) + outname = os.path.join(self.target_dir, os.path.basename(script)) + if not self.force and not self._fileop.newer(script, outname): + logger.debug('not copying %s (up-to-date)', script) + return + + # Always open the file, but ignore failures in dry-run mode -- + # that way, we'll get accurate feedback if we can read the + # script. + try: + f = open(script, 'rb') + except IOError: # pragma: no cover + if not self.dry_run: + raise + f = None + else: + first_line = f.readline() + if not first_line: # pragma: no cover + logger.warning('%s is an empty file (skipping)', script) + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) + if match: + adjust = True + post_interp = match.group(1) or b'' + + if not adjust: + if f: + f.close() + self._fileop.copy_file(script, outname) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + else: + logger.info('copying and adjusting %s -> %s', script, + self.target_dir) + if not self._fileop.dry_run: + encoding, lines = detect_encoding(f.readline) + f.seek(0) + shebang = self._get_shebang(encoding, post_interp) + if b'pythonw' in first_line: # pragma: no cover + ext = 'pyw' + else: + ext = 'py' + n = os.path.basename(outname) + self._write_script([n], shebang, f.read(), filenames, ext) + if f: + f.close() + + @property + def dry_run(self): + return self._fileop.dry_run + + @dry_run.setter + def dry_run(self, value): + self._fileop.dry_run = value + + if os.name == 'nt' or (os.name == 'java' and os._name == 'nt'): # pragma: no cover + # Executable launcher support. + # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ + + def _get_launcher(self, kind): + if struct.calcsize('P') == 8: # 64-bit + bits = '64' + else: + bits = '32' + platform_suffix = '-arm' if get_platform() == 'win-arm64' else '' + name = '%s%s%s.exe' % (kind, bits, platform_suffix) + # Issue 31: don't hardcode an absolute package name, but + # determine it relative to the current package + distlib_package = __name__.rsplit('.', 1)[0] + resource = finder(distlib_package).find(name) + if not resource: + msg = ('Unable to find resource %s in package %s' % (name, + distlib_package)) + raise ValueError(msg) + return resource.bytes + + # Public API follows + + def make(self, specification, options=None): + """ + Make a script. + + :param specification: The specification, which is either a valid export + entry specification (to make a script from a + callable) or a filename (to make a script by + copying from a source location). + :param options: A dictionary of options controlling script generation. + :return: A list of all absolute pathnames written to. + """ + filenames = [] + entry = get_export_entry(specification) + if entry is None: + self._copy_script(specification, filenames) + else: + self._make_script(entry, filenames, options=options) + return filenames + + def make_multiple(self, specifications, options=None): + """ + Take a list of specifications and make scripts from them, + :param specifications: A list of specifications. + :return: A list of all absolute pathnames written to, + """ + filenames = [] + for specification in specifications: + filenames.extend(self.make(specification, options)) + return filenames diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe b/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe new file mode 100644 index 0000000000000000000000000000000000000000..8932a18e4596952373a38c60b81b7116d4ef9ee8 GIT binary patch literal 96768 zcmeFaeSB2awLg3&Gf5_4k~2Vp;XOi7B#6;~5{KX*Oo&QwFfv1g09K6SNEP86z)B$T zWNc0jqu8r$y;oW(+DogqrLDa95=;nYprS^6qs3}$sqXP`HI^6#i8;UT+UHCX)Z5$V z^LbwWdC<(+XYaM&)?Rz4eT?bf^RzDLUc-tGBo<-7CmygPs1jg|S|zh~9$ z)3UNM3#_8I{_g1d!yUhvl>A%zv#Tc^!TVbk8I$7tIcrjkKb@0)hiB`q%O|~t=i!c> zlYY$OT^9UI>v;`--gM_}Au98mJ@ESkVSz1G*mCjL%aUoGLW*sOEmIKQMa+|Cto;f+ z-T0$U5;iEDA_%F1jUxJ=LI>V~ysLU`z@xXG0}?D{;LrXCMG8eZHenV8R@#K8{1o`c zzZRR&n1N<|AqZo>ku><#FWSx@qb@;MVm56sSbun$bo)jLZ=>GE54DT>N`pS=Up`tj zZSAUCrCTwsQ;~o&g=zTvGyVqs^8z8$Ofccll}N}(#Z;#A{00E7W!lR_gos}J><*Bnawx}4@P}q)&JkExL|lv4&zgr&qAP4O za)mChpjGr1zsA0gsdc2ytO-T@&o!MpzouUVk~Ja0AKFMY3CWrc=6**__GC?3g)>-e zM9X^p;(^qbX>$bsB32I)McX1R(&*I?9 zO$`J?KSiBUUvIGyTIoR{YHhDt+r{ogHN{6fG4avX(35~z#Ks$j5l#sjaxeR0G&m`q z-FbrWxawo6y?utE94b&3pHh7ZPpsCi)+PX%AfQ7gaL55l58Eo)8##hdsdcdul&2iZ z_r#%|Tvx)%5 zMDAvHqXIlp#k**h)>Yi%IU_#S5_$>UP~}s8wwR)QrwV=D;Z#&x1>naA>SZBxT{$#W zt2k+|=nM;&R4_xv|Gmlw0y{H`_xxq*OptnGLuJ6z;n6JzI#K?a;{iYW@@vDW(T42r zMFg-?gE2@|tGo1@sSAXv`%;Qq!UAZom;KT#ke9V*xFBc=G&eT7g%|WJ3PJ(VdE*T| zyGCp0;(L>2}rEMTLwXi;TXmsujyQ4JxNxf$%g#b{6-ja)SLGq+eA9 zniv}hg-Yj`L>@qLz{quif{`MX>GuXh!Vsc_Za=8O&k8tByEQ(Bk8`@p@$|{pMSThX z%WgmtCFuEsibQ_~ij;E*Fc@IVfgq5ir(J$qw-@)6QG3(C{i{}J?PhZWT9=WVgN7&< z3E`BmEi446D8G?gPV=iP(j&W!TrUA6(qvm1@|omIlX%#UkZ%rkA%hT_I|fk2EnYMI zWTO7m`~CC&klIji9B-Hil>yA0U{IY`FviH8NtGOr&MR>H!)x%^=nrR98o5P?MzJns zQ-OPpoQgtqj9MrUJ@>QWy@pZ0wV;u>R1sm9=akHxF60c&b$H(L0E(R+^s_6f z2^Tr4R4`eaF$-Yf9^+j<5?8TqkVVWl(x|Z0&$bUWDP48}xYq=h-$I5gt=g%yJGFE1*U)~vgk7QO zR3^I>6j6L6(gHqL8S*1)5xWv?iQbA*%Kn>i=lF)RqSR6Ss8(f{bhagR+e1KN5Ko~SQl~+(o?-L}ay61hs z=vlD{J->%Yg{5eZ(M$1>==M%LYgE^@?dDR-{(^VycyUYQ1T7u=IZDPNt}3b!?=SAD z(q8o(Uzgi7wC<}c$yN7Nrj$O%b9n9NdW!Z1vh`554xa5}NEcOA!Dyr#?A+g;CKR3y zREC|Q_}4VArlXa#Mirm%oTfazJkRfuhmhPLQ>Ln_=pK63lx(L*KP~+iBuS18la|KG zpYUOv7@C|7B6$=<66SS>Q&yORwJDh)(|(4=%F`w@p5?;Ol4O>vcoq|W!FRw%BgcUU ze?Z+%PgV&Mr9~@ZQ0up%6hG_kq1Kmhz|ejwmMCl|fE~>=O($7B|d<^<46Z zMoxiwaWTQqYE99{j00a^04`9YY#BE}E)2VuM(5{;C-|8Qn-xMGM>hBr$J|EL0v^jL zH0oI4w~B~HPJ*COk{=~So9RW1Mg1u?np0^>sfiqszbriXWm{xsy594yANox6HEPYb}{ZC&TDx8lszW}M z31OWL<6@&rO#@eQpdab%3_%Hy33xGB-fOhQF5Ow<`J*%pBO&f{((rcGl(;3V;MHxw zRT1GT2lWsVoW+KP2054g8iiSis-RuKVMD(Gq+IJVar2=H8Hddz9tC6s*sy#WP1;C6 z9C8Ji?LxxbNp${Eq$r2Re6!~#Q7G^E9aM(dWZI2LmjWH&S~K#mp!IVlxB_NIUVx3H z-gTLav!5M-R92;?B|E!FxxH5iki3T437>ahPpfs&7NAGYEAjP8!`X3U0j@IH8wg;x zqB^&Cw1~D^?)SM{U>!3tPaR(g& zZ-#QpUEER`Eb+O;hNBp2kZ$CJJc^A)i><+E0ZH!1&~J%9Ljbj|h#`FlAvPyk(Z!08 z0Qpzhm?Ow@3O^M0IXp^Y&e|*`amxlw?|gAz7ua$at>}mzLeXhFx&@1(QQ?;6)j&wN zrpD7Hwdpg7pv8T5KfCm5K|ogXJ>Ad7;vMvCuBFH(?gLsWXDa19Ebhbq?S-v%wY|b} zDP5~bD7UWpdIgq1vy-KM46P85?*lziPwS~8oaQfJ#ps^Z(|1Q&J=Jg1DqN8x(q9X| zK##J&(W4IZs6*Um`&N%yd5_SpW7Mt=sg1YmU}3919Q4H}5mAbQ35m`mDXEeqq;s7c z?g<2yQlddY&SP6=VbCtt{v4t0 z=+UD)S^~73=PXAN>HFz;N>B5&*QRUjJ1HgX@Uu=YHEQQmWwZ~F$AujMbq1xe*m()5 z;ZaMLw-q0Io{H8}cM!blN>N(#m4lA@vvuHLn?4QqEeC`f5JBx=Ya&&1MCu^WYF{az zjBouUO>=;P49V$fmmH`oMZFx^udP431{pTJzM{Bgc^kWJt{~KvZXy&)sq8X5j2ToH zbAxRU;&r@>p02eM>ibrr?hT`~*9#A~o=sI+-HX_cd4f>C&?VHNYkH>Ao{zm+2nbFN z7r2~~$f+Hnw7C6D0x%@5`f?K^TQ zBP)$)%2W>8u6R{it1z2%g&8Y))LA59#5yf2faM0fA7;PUi3;hy0JF zZ3O#wEwlL5myN!@&Gxg(7e?_LG=LuoHe0>asa@ZT@+V%QOCww3ZUkKjrs#)PM6WfL zwneY)TS32=mH6$&Z;}n7y~7mdte^Rpzku{H*}q3S5({^W77dnNA>W+{dQM|it;K?B zu2dHy6rXCNRSN6FXdh9e$LCy|&gBsO9iUGWG;ai@#i5s=% z*Qi_)Dan)nUfdG@EAUlW88!kh3n&$P$Dh(5AI6SEtw?xYl`mkln#Y7GfMZ`mTGE90 zZxAl2aIPE5D`g)dHasC-4d&>1b@SYCXYsKmXTDGpDQmBa&dYF?(nfE?aJHQaKICbW z#>9l9;J*4$Ka0~g5>Xj3f$*WUIKj=d<6z2JtP#bUGgW_(cWV(fGia>IVcj4Iv=F!) zO1rfH+iRYcX-7#^={(q0g}@y zoWz1@@xL3{h`m--_48LN3$Zr70=|guV*Rs5F6zr87A5BlFus51d!IZD080 zXGpHfF!qq;6@&?_!cyx1z=l2IZ)rTCcVPwO+Z)-yOHYt_@WHVU*A9@K~M71ncn zLyFes@%3(43Zy3j?9VrVoc-)C*PDH6k?toZxXR{B6du3C*Q*x<7$a6du{S9g9%%x| z#qcE>ZRp+&24oIjH#Sm{i%`4f%Za~4Yfr7qkTA?H8XhOR0PP3D*p%Uf>j`Le{9%Gx z=*rh(g<#ufWOuy5jB)FyAjA1dhVuiQPPtB&$ZqMf5;;ejQX=Qcm-5m@luqYd>;-gy z3V&@_|3I!mu(*XSMt+E6dF*zY?keFj?>uUG5Bn`TvKf$JQ)wW4Cv~1}2W2yvNPjk* zcA(B%I34D2adQnd^=Yc{gj!9ad9BlPjs(g!)I4*bQ73R{0CI`Hf+`>+RCA%TO?qFg zbp}}*ra~2nvuD1`E8i1j^DrD7<)f8EA4IT@)~`~*AU+!3`cazQ^%yN%dg}8VA-wg> zDcB-kLZdU1Kyx&{%yf=#?M$;fq9)*e4(KhYlXBQE(F}{;ucH=KoHR=zvVmBj2FH9)Bjr29-7k@!i@O`C^(LYgfyxA-ro`uzA;2HOT94^Kuj?RD z`5;K1x)eLceU3T$SdwhRwy4jEUn6%-7Z-}{7t+xW{Z+Uowp#Olk>+z_Mb2Sy%p$At zTM?uRu(P0iu-0_1421-#eJ7k=61jy1T6NME!c=CR|_&_ zrc5{$<>x&%yrT=?j=tW))-%UPw@mc)(s`~WAiFBTp0JvF&Vgi72b#W%E(<_1w*!X( z92k|;0D+JbB`X{_hF{^pA$5TLZ843G3uk7YHgW4YqTnDFWhXMp&cgYQ_#}k1bnQl` zcD(RUYIS$dK|A{LE|F9YCne?M@vR@H^~}4%Q3qOk)6=oet##F1ohjSqUh8>x?U%?y zGhZI9wZ)I4{Dxy2KWEiwoH-WpA0iHvYZDuuyOYjr}C6NRnzgRSRM zQB!oxcA`pbK{Y$CwFtG|hqGa@iUb>Bb_NVe&e!H+WpdgN>lt-3GiAHsb9y1*oIW$( zCFEl%^HL7ZA3wU8V<6IUUnXe*kT4_O)?Am;AWK`TUugKw$ zs7MG~U~`(U+wSXKPVzjs&o-LU$8bDC!n_l686%s^RwKe9J`q8xX)-Z`bR0@l(O!*S zrhtp#660H&;v>kx=gIpreYD$vE>6-sZr-`?i07S;4qG()+BeVy};(Ufws3|XMiqNw_&BG4myL7Mcmlr zx=Uo2JPZQUZ_ph~@^rp6l-=wj_qFj0U zIFQ=d;v+RGHg0`r&mu&d3mfYm!aD;g!V*HzsBZ`1ko`Dy z-Jx`TjuzO|GMAhkU~fQfvq4h7-7QoF*o`wl4`r^ZhL-!BN@p)%^bxyk(y(1lDf?GM z>~eanERXh7rgRiwU9^n**>j6P*XX7TYliq(Yjlo*eFunsHxd0`(E9U;egh&b5*uaq zOut5>!I3hRKAV)P^rgsuCc?L!wq^kqWiG3Y2f1;!^sTu-m#lm)cqxxH7fS1}jS>Rd zjMdm&(b}PJ2!aHrmCRU$2?aiT#MY0}(rT1h8%yP(IL~qV*(=L|XMUk7D(wyphfeY_lK(I;Y0-Hb zQ}k}2rGwDYo(b_bov|xX5J@Dx<}%+$%X~Z5rA3s^Pqn_pDHtRcT~e>YYJtTeMJ)nC zWj6NN9 zD{%?wAqv60TTH%?YKc)TI2TNwM?vo4Cvi8US#7uw3I^E_6o4L7fNCs^n-i^nQsuI( z1j0K}M76bZMDT?-l`aH6)ZQ(`nS>Ju=_%%^s${=W{)`TX<+lOA7Et~Pd=H?%#HTv1 zLV3f$IOecRk!(>?2kvEt#PoSRWiCaU8DPp4H1Y{nfFTaBa?pXF-Hbs7Q{p`R4MQKM zm5qU{JjBm_c?wvn83XaC#wE}>1E=0D8m956f&?0V@W&61Iph8Vs?xASh1E{*Vr)0*HpmTXh0QcG0_HTsLv%lgN5|L1Y7l#T&JXh|Rg>e0T ziXnv``P1iz*a)UE4>9ul%6ILSqio#8QzHilK~wMkZl zn=RlGi*G0L>}AGOK82j&(d>~aXs3}Yp(Q(?pred`UxkTwk|x?aw^>k5b{9dhg%}`= zh%=nQZlQ>&~)7y!jIpWu?!Dm#uEIpiE)b^be6~`k_f=n~QhQP$_&o&w4t^{u$MVD0VY}DHj-tWw z$G}uM(bb=tY)1zYIGj%#Ba^kTz3&YvK;&|wv$JuzRw?% zj`PQ*Z{zXA!>LYyXg*k)GqvH zIE0p1YBxd{MDwOhjT}do9gP#vn8^DG8o7-$0A3UUq&|ioRbkc0Z9rt`r7ye))*+~r z5&*4!X`+(YAYH&71RYwF&2jbRkZE#K;chDDfr4$Wg$=d6U~4upwGdL1C~uo zc|K%9BefGVfbJ;DT{!zzH#*dr>PDx!ag18-=7%m}cc_RsB-|T@Mayu6de1bJ030@u zaLjWV({~5hwokz#tN6R-*xlpBTIBKv*e5)?On*d6U`f?)3(sUDh_Pu|{7~8PI~<)Y z3_Xe6Pco~*k7KuD@5}H$?!tHB83sN0hTMlQTslMf_~UWpXDq(ur3!`abJ4 z1Ow)H?NOvvx24WQzHoLGDVt4f#hGk%8>2f)bR}(nVj}KK5ZA`8PDb^bQ7*Hd07I|n zEOn9UWDg)%1qHd6@KlQ+9?`jd@?U6MiC0) zsHL_04DfT#H>3Bv>8L78Tj;RAQS6$@TpywF3thNUG~atW@$SR@qNB#-#2EbOVy0I1 zYD=+{F}329a;{HW5xq``I+kh+9?Xf(dk|OAT_hqWaI2Q1y~n63RBDT~Z1irKulaDq zO`EmX>uL=_D$ua-4Q_%;RiX(2-h`{!eY^?XX7AeQ02lxCBS3L|$!+Vt--#o)(x1|f zMamD+lf4DWN;yR5xuUih>+?-UF2yT{aE9SR40{yqfv{e(#3c>mSL#9SE$uM-u^Ejs zRpN`^Xw~Tt&u`V==pEfGccOz+kdySojFL*1*l;5PRLfsmv?WeJPc0s)t#K)ReUb-dOjo|@lN_FZ zte+O0zCOC_4{mJ;TCCjf5agpF8}(u?c3m}s@I1o&gl>Jy61n9ReK&DHK zd&d~}<{9@+X1Nw1E}a(#f|c5*q;pezthlGxFy36scQT)9UudmhoCXGpryfDNVSEhj z1RyCa+!PAT^5S&=z<&w?T1r}ms|%brErQ-!4%=gLi0Xq*^HQ63HUajt>9kYnK!IFQ zXA_(7H?+4U-_yl6up%4A-@SNWiThM@1+-58<%N~O=&VQ{n2U0a@FIx`a(*RyW+Dnx z(=qLbN6T`;DY&s$)0U{XNGNmYS=u$~W~Vw^U7n{dci;*!1t+lBv3i%1`XcRHN!Nn! zfiEVh4^>gQ(#QbI$Jo}_xD482*5r{krc&b+s*-uI`gx@^Wg~PIM&Vw-$rkZW;YI=5 z4o|C`s$}DQ#z^a5Vm3Ok{`IR|W3qBF6L)7?EnUY%qq}fgfyIM*=u`%C;c!GAmW zZ#Vxv&VTpw-?#D0W`hn`9}eHu$P;)k*-oX%Q<#n@OX_$C!I|4hl~T&oBD?WaR<8M) z&dItnaVK(GIwtPRE*T=ds^@i zw?2;e=$y_PC9!0KDDG<&57bQ-FiM>wVOc!TaIhS&;q=yo;}$jYB=SJ?{b4?G83mD% z*Lg7_N|d^W_Wu+QHNyKA;eC$q-bNBUo_ZVqB!gt+RtUz@^$N2~SK_8pnpD_Ef~Z}L z97eJdC3t82rT(xZzPmqci$8^MJ%_2o?1(>x*Np9yCEkQ!jdFI1JXMJ~%z@Ch^s3F& z7Fz_XSP#hd`P>-UdQUZROdM3n4Yl#KFNawrHeAI6cZv*zWMaMzLWy4=fQIGAZyh(Fl-AWV|T4 zhlni}c^kjP0NEzUE%A@Ak>z+;B|dx^ggmjK1;2dXG#XISW`)g>+#rf7{5cET#K?!K zNN>%LaT23~Ov*N~;8mIly+U+*FCP3jT;1MdK2t_JS zQ#%B0553^_@F6$4)0EZ#Aw3NtlYNMLTc9)QTV=6VTUnXGn_t4`^QMmY2^6d_p!rL* zA4uT>ej)auJz&>_q!$1{ia{|4l+%;V+e4_gm{Q~^gr#d6BZu*fMt0%XuklBFSO#$v_YdLm{meRxLPZB zKu9Szu}ah}zKr1`R7k@fFFZIv9Pux(+$m2}gN67f2oFM`pRKtSn2C1~NMeonFzuDa zhEDt{iQC1k2YCD);zMzW(MsY@>0Tvqw=`Kv+#^PQfix2xb+HIBM6^MWZnY)`kf|@$ zuIg_x`)nl%qGH2s7#a(UlB-6G5GB*mpwkShX)(^~h#KSFG&YX%ZJeyRaJjK z^Dr?6LFD&C)OjwIhgt)I&doLFZ)H3Uq-}PD#!P+eCDf`HC~TeBa3?qk&4R5YtkBx= zA~MDz1aUE7&l_;?PK>~6K!%H!fOwArNaLVN%ObqLj&~>l<2ODZKo~OQ5F-^-G-i5h zzLaMoq^A{vgZT3NUfm(?o8SAmJ{-8DNc-bhE{_cWjgB1Ka=|7D$m@olIj$TN&ir|x zch*eUhLQP7J1(ab8y5Czp(sux%;{j1!kO|J^Lp<*n$X&Y#N@OK`RW?obB;ESJl)_6 zainES8bL^xYJ5N+zsVo0WOG)6LR*W}?OUnu$Dsyxwq$dfJxcg$%wDKBM^0=8|+H`v)|YOHqUW+~|Tx6E5wcW@b{buQZRhl_t zlkd_vLyw%;e5=+>T<|$ovF2AvcqGtaT@8hia|X=>@4&NTV&?GLO%-PGonWJxNv0>NfGW6)xx)<9^3h z2C28NbHngJ*qPLGCZ$nqWUf$3Nnccu#st`k9N-sm$GAp^l$IKBlnQj=w|mb&ph+IP(a&r7k~?2f0;J0O*ytkxA#W*O!UFA zcs)S#tSQHdxP|hW71nuB{i!in1qZf1*u_N{b|Zdcy~D_T5?$s>eY9Nmq9?^IjSbu^ z(CdkyJK~Md{)Eo7e{z5v{wL z=Gvf_+|VMwi{V;NHm%5n`uwPyK%qbr7T72pa}}ScL_A`_xPtx3L1e0AuT@iF^DF?Y z6$1bvoB~tHm24LWDj>XV^-(oFtu`sUZb8~uchlBXDpnub)0!gXQdB-gp`gaCX@oF6 zz3~YipuWDW-(;c@t3QhQIT~Dih$%;3uISK<c|G2c6~;kUBr4acE=%=u-eq9@By{1pOgRK8Xtc3ImDcHQ_0DB}RsH9>0fT z)UgG$>+kE6$Hh`92sB_C?nXf~t9vD%rChGhQu@A@hYbdK79jcwrLR{WM#n&2$3UWf zi1I=yBSAZ1t-W6}{Z#%SVkK2bQm|mFFdne%>4Ekc3_r8AHueGr61P1&&=_uh z&{?tJ5o(<8q|#DU+J)fSPwEZ!H3<(AAnOe>bP^jv2#fn-I68ffV@_-cASUW#FrDC& zg66|jh~hIeI(G~%v26vQ*JIa$zSa93>N;1+VkSOFbEdBLGZgt2LQ(nirtAh>B!K_~ zac>!B%8~f55FS*_3llN$6(>>5T}O&=MG*a+mj(&fsD({sHcYZh#J#hzmB1CUud}Ic zDiWRZJY!LsZN4Y5{!?gP;S!~8wjg(4;GpjUTSBF_(}5D!#I7kU0$OWLA?tL`1SG^+G+M4fa1?#Qr0c7k99y{X?+hBznRwYA|O3F zcii)RD6P)v^j;^Q)#f_bP-H==YNZoKzc?~Ad6vnl?k85I|7Xbzq7yN4GYZBjM?bSa z_9~wUIiWQ)5ys={LaFF9*jDW7==$P)MyKN1iV((}-HXXfhCg#1VndLIA|I2UU5z6o zC?jAG)=-AX=Nr*BObPAW>8F*6+%A(nhm2LY4DZAsMreRE`F&%3sDG9W)yhJp<~;GU z^w$8aE)P{|r8F~)_j=0K;7aaOWa~+#*=Z9af58i8$m6-mDLB`$b2=?NbDcY9@~3O( zEIf-_a09O-Qfu8c+Jd=mXdd_`BigIOt_>-r#I$R(nik}ZX>82Dh!Wyv0?nveFswY{ zFpZ6qFQ&AQ4L)o8n?0P*=Kh8+JW358OEbLEcrQ7lfg(XKLSu*1%GIV%g4T?jUw_W* zZY9g3Tx=0bF4($5xxEwTyq)Yl#I-4rNL$g~&DEC8UHxp!* zd~b6b6;2sNzYX|QDiRg(15bW>NX;NcWd#Y;G~$H+pEV123*^p#H;fJ#o!WyhpKzsMp`3JxD0S+XZ+V?q?hRh)K7XaglAltWsJV{?!EN_a5^Dw^j6*l~kL?z7Y=>&;X#Eg0 z0y-BzC7_ZOy-;MG?-+=#r)VX{hdLHuYw7j8F(wl$4~}g?71IM+k>`vwIjGKLVVde# z14jqgX9z+Qwo1k#xNVBL2(BX%)?&-)AQa<5s*=Qa{u4KyEDuvf>oOPMvNe$0He&%E z!)z42X0^2n7eHd8Rrm$uKz8;wUqTFbEHK)bF%Rs*yt~u7`T<%9pnZAUj@48pG^a;k zAHSd<(&$jKD8<-8(q-60L;=3VB;6{Bn_5GQXxOZ9bB{*H~VJcU4#>$rM zb|NFr*Nct$>gF7E^P2Vt4`WE@wm*0SrvBVmS%~-txXO>IN4)>UPX~(|087OcD755I(^15eCkT?x*%nm9>v4wNYz&wc=wNvp(0H8CxC%EVXfu?y8WQM- zR#t#YK;Qe@QJ7XX)qMN4`8M5rd%}F1WxhRRzIn~JI`eIw`L@=4D>vU(nQzNVX_%;z zN{RrwoP;GB4Q+FX%tX+IenHSMIew5`M8HX$W46*Ly#ak)iX*$D~>6odQk5Gl5@is6XY6LZcWrsG=bElUE?%mKD{=(fm|J3AxjnIbuUA`esf; ztTH47?nVTA+D5UIU7JDk7zb#4s#=XT%<{~}np1P9*;rl&`xpd@p}b8ir9-?>%VLzk zOEcaxI(8;!^}HlKKLMs=(R0!H^bBy6Gn#05Dg>qTX_>r&q;q)=cWW!mMTlEBD5rAB zqCsr^h2QSd2kVGb1eUzKygT%+YL70ips0`IA)(de+&Q>y(iv094c-j0rjoh%jG zZ*UAJn+P1!_9eg`1|5TYvPZGchW6uM48%>Wrf@d@wPV!`uv1WCL<_B5GOg9n`w>Al zZY>)d`xN6%+`M>X*VUS=CtQ8qRnQEIyJmRTM}C5tGjeqT;4@g0}4shsK#)pwkis#SOB&p^R{6L3&p zd$JLabwgpsq|u-gB77$u`o}R}=T;8Txy=IT902I#0H(50J~{)vb3wi&#(Ry)isg>c zl^zibYbMD6>5>z%=V(Q5V{wp$NrFHsG{Kzgw^$soDYK{zvGCvIWRE9f>Bs_y7OMH) zhF3bn_<{AxiJ8TTO(4@1Xh4-|r2Jcuz)_wGCEp6C$Ms4}pBDnIS4oUm3uR=hPH{_HSzp?rpdxfT4G6IJt$EmF3iDgzZ-^AM4A+(23FXdt!_R$L=$3nY2 zBGe09vPme@q=nH4k)|*yJ%HQp+>KMlBy*cVFa26uFct*kBkn>DeyZCzop4==Qw!i> z;W@C#lW0-c8_r)IV5>1IRaH>jYK0#ks1%5Jk8Y!Tx}Dr|X@&&*CC|ZiS1K*3O8GgX zCgwGSOtsvOz<43E-FqQkiW|!>(`FDn9Lq)h=jz+309aGKRvD}*srXoI$Of|DG|bZ~ zHrOc$&ms=!soL8P5F|N5`(RUw_Cd*5s;>5~mmBb)7P6y&<_af^lvGN~k2dlg>7Leg zms@R8R@#NSmE-G_mBoVDKK$lqqH&iAnusRZUq_=nZ>~KCE@@V==@)vM#w#nvmF(uV zq%y_D-({pK6~u5gWzcD01uUxMAwXFtPzIEiYG+{9rNv-q4tp;9bknGwGQ*98ueV8P zEOT&u$!M7ixlBDtvEd~QrcvfpdZgz;`XIwB^q7%$I>70obA&&d<_rCW5aZ;wGqpH7&=TOD z|9V+%-zdu}X?GPUD*?JLyUPERTMcc{HtJHwS^OUCTRiKwNYEBcw61SX;k81J1_ zjGRrAO`o7~+;q&8t4!MF1 z!=wy?lyN5a)lPw`+ zVd9jGlM6X6!1zq|Dqj#}wfm5j?d{Km$)*ocXY1I0evgupW09N;7on|fDD@Hx^X94= zh?+gaQ4pO^O{7Gu%Fggm79>+vI4L;Kd5LoBe==&F%3DIljqDAQbFi{*!^?nC>qr>2 z=CafQuw5pYeiwILfD<84VgtO74j8Xmmab5tfU&C|hyQ~uS!ckK^*bz8_wv<~h?!fe ziriAQaoKF+e=t;)(Fp4@HqUI&KQUDOH9CZ2lYT?hnf;l$ku;l(_wO)NJ$DFunPx0G z*g=t!@_c6C7MBcFtJs$a!BExD4OKbdqb6Ycyx9iU=K(X-SFJpgSS#hp(_t}p-)Q)x zBOo_>7Lk^b>Wu_>*cdnw{I-$mS+f#Lo`U@buG+EaqnuGhb=U}yxh+MQ3xko{#VMap z2r?mctse#foy_2+3@>g-aDTk^i}RJyp_INT3QgWZcs3C2t)q_&X|0OiawoZ{v|`hf zvGWkii(UlA313_jLA5IUuD}9z*8{MXd;|AtF@Z>#GhNWuWf*6uOJuR3_pD z9CRi|Kznu$@!#qD7z-MRpQiS;WN3X!L>>oH%jg@+?37n{w) zq|=*)p0i^mzy>A+t_ZIVBM7!lt3^<3sH4*1J8L!^^ujUL!o0%7b@007Ik$Oi5O{O3 zsivF_nNP1!4(Fp*V*K|(UtBqBNTZdr)S*OU6r1S zMyYAW`aEMjG^bakBM!cp)66E39~7}cLs4kI*zf=XFwlHJUIe5PB=xE&z^0kuKB)js zDK5kdM9u(|s7cCZL-7t=RS}-jt5)c#97#=HN5KQL9+1&Ira(%w3 zv>U^fZ7g(%du?;nY(0mIm!0qv=+3~%VEqQR`p+&-jnNi!TlH|?64iG~U3?M*F`6xf zbfVDkdYsZ2TQ)3&uLjRsrWPeuXfg6NPHo_9M4Hhw zuc#oUr6bYk>k|*Ol!qNv(#Ue${2n~hK~qBcYoEH2U25IgOgNOH!-myx%2rp~Co~Sx#OPd` zWlPdNFFQ3;@@rz#g6v5I?Bl@KG&(iWYvv$Oh(rQFCuPc$IOs(L3O7I~Hzx@SFbJXq zc2QRf$H#UABK@S|o{csh za1tBCo+U`RBCiE^;{0rdGpfrQ35{RNh3z(12;O%^D>( z{1z{>pz+dZpF0OQjz2<)zV33*;dOb@IW}^JK^{hs)NaqzW#C``zTtDD&A4wTk1Eh% z9o%X;(>(MCmjZT}AYG%S_n@ieQVxt^GNtF+?O9rSQ-#sEAT3p&> z594`5(~yQE8`I{-AH)k}HC*fKqLOfI8IH==X5S$09pbHfz7s;2AhD+5;@&@s2UL26 zbC)dkH{7%-0*e;g({V2e(cYxWG1Xkm5Nn~Yc`Oc=YMA2r~^m0TRP$kUUK8XM7oDy8BS z+2UYXqbmgWZx97LW-PU0M8og{KXJu;Y8T)vp$#_LcHCNbs|!XH>Ci5ghQPb;KP3vf z-iDr(NWR2C7JmY+l(SjV&>D3JxhZT(!N|w=AeK&nTl=v4A4kqhm6A-HRnb|3JDkb= z-VhNrP;Q?aZdN#zq>u;i|A|VLaw=Jzq>{-sFq_Skeh-Va8r4pek|0Wrx4|&o4^rHI(>xT=WgYsW5#Egg`oXO0vbgGG!k=K%69am5dmeV=ovMdfVu#N zK>`=ovW`wX{gR(E?4M61cuK~jb%K1&+Y?Z4E_;R-!I}6% zDuP_DXkND^;z6#;!G@H~b#EmTA~!@jw2*WZL*@VF>)15d`ge@4< z+(y)YRfjUxW-Fzuv9!Z0Lc9mv32JARuN-SHKl3N$BfI1(e6ta1^)@ALlY8Lxs?%w2 zrH31jKPrEF)3_P5b|61Su&#MGQb?&I@+<;L z!>6loVMAUmWSn58g6^wcAg^B}Iaxl$$bFdB)!LWJeTeNLp$TqA|HvJP{RhE~1oI*X zVvwTXs&bG6u@voKkGG&sjNFS!2wwIlvEdGcnuc2z!BK7z9NmxBG(Pq@ejAR74G-b= zWG>Diwv**=$)5M|D{j3Hkt-94Pa&!a|p7f0>smVW@8J6j1xnAAwj^Ds*Iknq?%1n7*btHPuNkBWz{U0 zQC&n&nD>msQ{6-Ka3LStXyhq`{o>w(es)n2_*|r=DMEBt1?Pm(4g{i{-dG+kb(`$4 zogf+{1MaKhT!xBt!ZhiFv23}ggt*<~j1^9E8my3~S zAfwkE%#TGHQ801{Cf&ya$ajX%bJLLOXGj`^@rUs`kSu2oBx#(ovG0>p>1vA1sZ2mO z^}V^D637l;Z0LgwjT7A=J5198ii8sq{KhyJp$5f|0)`t$O@Mfcc5f-fMFaJY+OH!K zI_=2u9TiDMWXa*@O2JXnu|3S|0qbWE-HJlV@<|#G!xBVMRr>Iz`Mr%C5T*xKq?yrl z91!0`)tNR>R41}~OdF`_W+#apxeXNcLCS#*)SHPxU7^ngm?IybilAi#MX-K$*Hnyu zJQva22&xnV0E;|6d@zEt^LQ9R?L#}s2x=1l?bV((bg9(fypMU9bncs;Z}VK9YwHeizGR5?_Bzd03=7g2V$1Qy_A1WD>18VKoo zAg*-n^}3QGDQH9~O5?xnwj!^7&2=@1=k`%YLH_rV`ds3c*C+O+d)xnx7 z)r)Q7mnN)PlhRD{P{3_GO)icoLi7xb10tjhbF41aN74PJ^;W3k3M54uYNmnJ(+Cpk z%vHRQccIXd;Hcw0tuCA{B=oU^7nt4oH?ki=j#Qe7BN*JQ>O+I0R%?C~QQGzn{6;yk z;DVf>Sj+q*b&*-sG?UOAD7=~K(MOuAoA&DNq8r(aZxsGF7$5-%tt1pnGLCKU)i|PI zjgAF_`_-Zdr*;W^a34q_B$x@aON&wS;AwbX~rH(J+Gzo4JoskBhgHynaaX> zu>4DXqQV`-82TtP1130)jRmcjflih3w)y29#|bcxleZ((g2&Xdl=8qDD+D_K@i zfNlR70G{S?RT^L6o9vBT41m)Aa4kymf;nfKI^t`Artc7(VKqijNlgUh32r;}x$G4_ zTjv$VNwAs1-(mc{g};%Aziz#EunUMEFGjB*JmUat0WKT+&;0ZX_!z{I3^ql$pHATP z2$!aGl45RR=>`vE@A9)*$W?`{7#sxAnV;p8-rP#!i*Am({IC0OPIu7;_G)D4-@xh+ z78Gn?JMiqUJN_uB^t=u1Aq(tR{a|bXg8%ylwvvtG9VDH|Z*EV?$hv=fdgDOJL9?>& z+Mc!{$=sgSP_gEQYEjQzmlxj&)6#J?4VAi_4a#&s8qw3RatE;E)<$gfc2z zeweCU*NmEd&J<;~0rh0%nkm5aHHg0)@l~XdwWWjfEOEcntEMO2?AD(;-)99p)a1}5 zEcR^}DR>r*M#;<$pBtjz?PQ>*MxN!r3I5B?C%ILr<=2AyoiKePuqIFryB_;}(`NaF;=+&p}J=m#XQ!D z-x|-mV#8B_52sYw&#KL2ISAH{UvcY3L}O=_^jdLH+*`Lh1N%SIYlX(kx~nBa+}lvp zf%veql{uE1w$h$<(|wGRNEd&Yg>vA>;uVb)9lqhmVmGzK@?h~k51W|jKsers{fM}a z@3+daW=hiw+ogiSRw;)spnH*;v4_Cp`w%oO!yWNw`op&P&k;6Fg6n9V+(tRLy?8u= zV2y&^R-uL?AxCm>Xh3kHsMhosg3T61#&1Rp7$Ab&xggCjR4KOx~29fuE#MdZW6JK)3OD3UBIXN2O-_`w&$R?9=} zXRT<+4e?(h+C+#u{_p+a{P;r%^Us=GDUZbWk>I^z7=#5YBXAV|J^{mT1y8-gOywrh z#ul{eMxJVIvmpD54W&E=8?EU)fSpz$4`8b`fd{bH8c6}uUKL+GLjP_`daR&PruC2g z5wo}|-bI@x>NYk_mt##A8(zjQ-!zfiKXUa)E-PB4Tkz+^<|FbEL|}zBO+U3tGO1eQ zHrkf2fM|0s5>5G*+X9=W&^T{bA42h_H8{z)@elAi;Fm&-96_X6NPfH-;eoUPpB3D5 z0I}iJmocbYKue~DZ@x)V+R|Rr%wB9bi;V;BF@_9sxNyGD3PXHoDEeditVl=5WFMx_ zibpP_wGIq^z-I-w!G_O@_i0B$J}W*%`)Nz|7`2Prv2L8v|lUurqc>YjwoIFo;4SMNj=cd7%+-#7HZ+wHGGGb z0I<13BVLJf<$jM9_84d4s9uPZn-Yr(V-YGJoY0~op^jSlIKb>5Xmb-7@eOs&15KlE---Dsa&};Gu%M1fp%#-_V`&Jyh`Gf`hkJ@K8ZG zpncT|+IS@)2JNe^InP7Ie3j4FV0Ok~uOga%f%4k8jwqj(EGsLmd2RndQJS$_G&Ko zRx!8tas2`-O`F@B^jN`{ek)q~f5mGBb>g3Ut)QVW_gdOmQ0aGgtsunwOI|DRu_bJ` zxYvrx@Ag_Ti!;7&d#y-La6RKj?zJM#-imD)Hf3F?d%$VMZoFX-c427$FFCCsEFcfg zJ7}R!I<25s(}_sZX~o-!8E{%r`Ui|Pci=VPw1V;^omLR^`A#c-h^>G*yx(+ML0CTD zX~l=X|3>L>TEQ9HcR8)#Q^aJ%-*j5xhtdp~@3);+@aAz5j;%vo|GLu(vtPu|*j}za z_FYaZc!%J$f`A85mif(2eV{ZGH{x3>3b1P*LARggaaGu#Axh)30@4Uh^f_~+4_~Bf z9r1gC%@QtMLUiZ8FVe+`jqkQvc$v7ScnJY+mCn6}^zXKEAEw;U`iSH%E(?BWwmTDAx``Lamdjo>}&Mp2i2#GX> zAc&7*zaM~D+z-(Ph#(gOJRh#lWe*L&T#jIzj%w*Z2{!w`*@pg;xjoK3e6#H^E>rN0IA|@;IsYqk?I}0Vm*kGn7uya?uZa8LMZFat7?y$t(3g&SE8TH3>XruH|3gWCU(Dj@CDAp(F#0cpNSh(5$Oh0ax zB52~K0qIaOLW@2;Kw=QQ)348A(E-pR1aaH90=uLCM?OzCmH6|(=jpJw8~mkCpYzQ` zxpgVI2;T|T_!j_3S-4kABg0?6RyrLUYWjkfzY@0Eq$=Mg%?YRY+3%oVN4BHAh$w;s zQ$Ms9t|S;Ry(#$M3=AX$Aev;ejk(tvqBP%k4RVAU$ z!JET=7DehLYMB5-{a7k}KLL{hyS6GgyljKrChBDyITQuC-+TCVFx}Li+r{l@pr0vO-?tYiI)s$pQATzj?cFGCs*;QHC9$k_Gr%6N5MpMT<3we9#Tq6d>u{OBS zWWt3+!Y=*eekC%fY02||Zn|Cc@8HG|eKt9xr;bR_1}zqRJz`9ccOLYQ;D+~lfQD@_ zN}WS_@Wlr57&C*yI6_>yTOEI4L^lPIVa&jl%e>)fQO9S0}4Ad&DDqxaEKe!fB` z%eZ!i9>C#YK+I{x_aCD?g%<_KC@P)<$0*du^Nvw!EwJzPgRxWu|CM8u_t4PuZu#MB z^PS(QTIt@X@-`{M3INDdm=4NRRB&3G_%W6}*qzU!lsc_f45*E`f-uOu#VKa^Gz^E#<ND{*6_ zoOOzky+{rhRB4-+DXU7H5Qbd!XQ}*6{|ztTn^%=SBnT~XMyza=f=GRHDbmdMdV0UR z6ztJ_r}5R7m;PJwJwopbOQXs62k3ovDOLg#{y}=5R{EpldlS8nE8UY~r6Z%DXO})l z@A&x2Dl`O6bymS4(y=Oa^D5W_po5F(W%`feAfz{B57fe=@N34c; z`7D#s)DOkjN2N3y?K$O7IhSdLY8{z(sHLlj%NWwDW(k#gae(=ep^g~L5@Im6O7?Gn z1}vFJUK0Q-Ts($PSTLCRI9RZsCMPI|4c-KHjY{l=S|i{P?mO5ERmetiC<>m>UY>X= zX{NUbYHgLpEde!M`v<<96(gl4c=&h1MFl=e>T^2O;b7NwvnR;(%^+XzA0~*8wv-`C zpJk*&dBfS1)|dj*1Xt5Iac`Tyj19jIXh08!8|ie^2Q`QaS5undb2Zw^PywoII3ZoZ zzgP9Ex^wwbYTdaE`R6Ff(S9xTrE!vpZi)?YG@~hPR=(tzl_95<>8BU!f8z-qNTAgd z4a9disex|8R(xVEIq)x=Q#X5=be39s5ouzM=O4s_3n?h&O^_Y<6k-;+7DhMF3H0I3 zI2PGq*YV0zmR*Yu9g)AFzF-8U#k`G9G~tF>8Pa^%ik3p}#1G(!Y+AY5$*iU{bkFRZ zfi*wbQ$33fu|Vu)MmmxfyUOALEGfvI-ku^5#wde3o{dQKWcgCy%nl}J*!n*a;et|X zAXqY%T#{h6-}oX75*!$x1MaKIRIzbv4!$6PkGW%o*g>BLQD;aPX)LXDQadwGw&PPG z+TvbPC9ABA)^@W@a5NHD4!KHE>ox1HC(X38#=2{@MC&IhQHKb9(JTF|9r|-H$c8E5 zC02HOUob!g9Kp8VETDWReKthppAdmc5*bbLMcR@DU9h`0m#*VDJpI7@U{Fm-v9)v+ zSxZ-u+!fSHo#;Ry5GZU5yqWO&D+2+j;hADXyEGGDr6+Yh^av8|lmOJ463_wc1{6sR zWc1X_u6U3jWAF{mlPi z?_1!is?xp}H$_Dc-V$$lR8$g83^foh2LT0=L{ZVykOTxmKsd)slY$*6@rdb6Gt+g- ztjVUPvGUSgQ1eoj+SSa|%4!o%Qki0r>-+!L-Wv{xX7$ed{l4Ef8=kY)Uf1V&*0a`L z*JpiDHk`Sr8@!zT^0^^P|DZTe4TAukjqxwW>^)8-ubgwCY)k=se*Syz@mwuHasbVtZ7qJt)?0)oRc?Dhq&KYVBRv^lfU3VRP-SI);E{31_Oi z12;4@OjaP-Q@R>=8?-DKOgkB3h?qpI(z>Z@_U#0!a4 zcZS827C%@>3DTH@L#O^PAz|#ie^GdIG{Fv7L}gK^JqVQ~5XIDGv_Lfb)X@UTI0o;D z(Nro^VL=2@eFH2igK?t;<`C_}MhkERQFqv{(c0Bh`0c|cg@1;PS2Llzil~SJt!uCl zC18V_P>NwI-GhSzZKtCCoIBJvApl!#5vGP=a3G??ii8^2yjLWg;q4yS#_Ii~(h}~~ zYFW)jtG$)(?_1qwqrbhS{^GBF5`k9nO>AjEf4R422Nq~b%C6RuVcR1Dkf1h^sEMk% zl2zE(HM$3+j0<2jd&m}8wDOq!s9L8`yRa~d$E@{7)9n`@3$fy zV_I3Hq9YdKUL5gy*NBU|e)^Kx1#_qFvA?0>YR}GU4aq^q*r_CP+uo*~(%|$wo*I802Zs$FUEjU-&r) zV{?o1VO_Oj525=P<^)dmM0hR&3#;S>lvMg*^sCEb4%2ls&T;62if-7Ed$^mUqiYXl zmf-VFB#IbG?X>SuXZS~GoshilvgvG$ME*g@e>;mqGsT?u-0)8CbfKTpstOL(HU^F4PKC~(YgpDSVj_%3Xo(MA#H*gp@@4zQm zv44!B(_iK&`Qw7`iceb>e^%7`jpAiLiIVUGHLFYonHAxoSz4)K^=xEy>0qPN->#IRiGyBG~<8XEs%6it0D`KXE@8d8vG? z7r?N9;rN18t;a|UEy&w$bgDhzW!~-3i>aE1)d!_RL0f$v`olP{t99U*9I31Gy1b_@ zAmW?_w+QaRcI!59*S}-`LU2sL%*59Xo#JJ@f)pQ5z;UznS643wolEfB3SK_Mq@(C+v!| zphPb!gSjX%?_x#qW>Tzw_?0RT{jyCxW34xZc31tq+t~Td9vKFn?2!B791gF`^~gXM zv~5O&C)6rHW8x0a>M!AF+15I^(%cTNtM)(?<5E26H&)3+j`FHp5vK0KJ01FtaT{K2 zfaRVYt{wGpxud*(q#HZR3$t;NosyQC`c5)7-11KE?pW!^>E?*@1+8$)iPuL^ zywZA{vmywZ8K6~Aoru(TrW^aydA>LMLZ)xWNTJ`IvmT5TiOy5F@xr_?rxq9Hpl7Au zj)R+Xz;g!5M4KeEfr>Ra;AWqS&*EUZVQVFQ5|s~Cu#I%t0xPv%=kTGxX{9=pF7~7} z+_9ss*x9LW$qRjF1#b$hP?YnMJR>-@p)`#^3V=QEoW=${Gi<#LA3tC1=r|$ffKuGs zbMbvF*I{#fCs%A;=w8jSRNcqo?@A1s;z|shqICjM&RxD2UB`kP5X*mBA{b>uCdU0j z`X2dRXet7|b>1LU5V)>xm67(5&f5bANqdV3d*Gl&gK?{j%kTNJiGhB+R_6BS@oDIy z)O@<4pZC=;=)=u4u%y6Jy^Ti(j4OyBcAy0+J<1bWHYhP4Nq#?CbF1 zwlA?WY4Xc8P{m!{#;_m}zp@*A%c8u?ZuOfsIdR6!IWuQru0tNIpD^LcS<i7js&O z!icFu-w366qo9M9T<@j*_-9N79lN-3!f_A}Z|4c99Wll(ddEKWbqqPEZNQJa_LD88 zBY@;|EglB~XTEH1-M<#|i*(@5{65pQ!LYlZdF+XIR9EB7BPO7CuCfIN7LCHeGYu3^ z*XlUp=jU>0bx}gN#i`gnM>S1n zvVB-ja8o4O5`0Y|`7JRejRKt$D#Mr6EDyo)%OxFLIO#b0436csGmc`m0}Dr=fy&q) zG2x_NLA-ZD#Il;(4`!fBRa>3oy)P_j>q480+etl~Ej+8+QlS9PS%_IyEZK1 zii1)rAmuiJ$qikPVA)-?V-CbAg9^UHKusTd?e)L~n?5}-2)5i)39ZvBSUvME78~X@K|BjT#bGzsFLMd5+*uxZq2Bg$y{*o$nbM?Wh^I^Kox|t&+x^3?rgmUo z^y7SZMKLxwakOBpWqh_6O-oEo_>4}DtMx!FEL+cLsC2zc|HK0k!`V&lki4X#gZ zl$)h=Bmz~xq`1Owy+6O~Xze)53R!EYeQ@Wh&SA)cWh(|M2{o>=y~vce()Sa^=smhG zuo#miOwm_qjpCiI`nQ3<)7f0Msc;0LPnI zs-6J*Y`E~)6T%#-I`r|OuMZt=v(Itn-1n{;gu($F`1qgu((6z`y9k6^>|0=oK-fjC zZVZM;_o;!Ml1JW5v^e-3@xg6qqp$NG*I7<(=5sI{(u1nz=# z_Shr#??>H-ev#>r%9(I#wMTsN3B;?y7c(>*VxI}0bH@HOHt1o*7=S$4^FVIg+HnGT zyM|NgKvI$(K$Z9hYBfk#Jg7$HrRaQI_B#VvgHGs=Fm>_d$>vBd@PcAmCU`CLxO&g};s-+PpqV zN#S#>4)3I->K0HYtTZXqCWEnovNNZuKtZx*!^an6&NJHeu%I(JvpoGIzu5_Op>Js) z;~-Z3EFRMJr9ii|qXIaBP;Z%%kuI60*M&sw3v|z&y8@dN@5z%JWJL*zl7b%YQqZG8 z3apfZPD%>=8>FBIr2ry;9$R(M@=+^f4f@xMhq;%1yVou*` zZ?dUcH5fgbV-we0xZE)h9{}jt*SawkEWC73rk~bYnf{umGCOHMqMV@eK>Lp72(4PZ zTD8xW8K{a;E(+4#RquneH5(4JRjnD&%1M`;^iI(OORBAa%va*Ed0 zDl=AFsmzI5u`(02CCZ$tnU10DC>K)wp3QmuxWL9r2h=9 z-zsY@tzRlD2MF57%8Gds(66kVeAixARw@zEUV>Gj?8mpKm4`pA>y@<=t$$J009swj z%H5Y*v9elebtr2ft=Y;NL~Dw&4x)9cvWCzar>w(h9iyyaw1z6{C|ZM*6>~bEUs0t8!U1F=BX$a)GXGx`6un4h_bO(~Ug>*eHPEJGSSn@@!oJeK9*cEKhj{ zLX#GT@B1X&(feK1LV4}>ux#)SEc^!AYIa%84fj|Ko}SF*D2%wVPpqRBjKxBIe&fJO zG}F7QLor*3B^K|Mp4FeZz6-8d<-5|ag{@?t-D{HLdqioEg)Hp{gf)+j@7CAw>#;?D zd}^RKx?aBLcCb(G80GRD>EXB*NcA6?>fz|u`lP*QrH17!Pe)fcwjY`5^!#vvM1~Tt1vg=fn>e{frxbU+zwB=KbGO*qy;?QhU;#o z|2oot6>}NYD@~NZzhsW-(C>vJeOIOHkk{^r3yXXsYAts>g5+16FGgAgJ0*(US1MCOv0=xp) z3~)uSIawBc_eq!X8*1@bR_bvzN!mGxs*5rmH(E)%! zKo|hM)|*ps{Shg4x9ij!E|h6^j({Cz*mC>Oy7Jq@>x?o8Y$$`aKY#yt9rAtfdE_F` zeFRQVgcWI-WpZ9GlVFy~BfteA7U(JA1TW_|ihHLO_nvc0nz$KZ z8p`S$Pv>b>3M<`0u5}9s3P7PzX5V-@PqSn#cT7j?>lOoPCjy}vfVqH7Kt5mzpcwEc z0C?R4yzT)r0A>KpPB1&c^oNNd&Kf_M7`&|Uh3N~^8>V;Tve9|;G}7A)*abMuw9T>^ z?*$IHm4$i-wQl7A+7L!}YgBe-MKjDRYp+~VHB^3(S=CT|TRtA&7q(Q;KOcmtJ?&%( z2B6c{qgk>oLErK!rIY_)HHI@bw^=rAKj!bWpAmLvrfoAySlvRfAqX=B^;1S02H|Z( z2!Dq0Ck#Kv;1eXf+D^pjo9W?+-k8b#_SUn0UT94#{33Q2oVs%c4xLVGnTl9A%8>P<6*UhsZG%h_Rg-II2D97%sv1dx4=!Im5wN_6<0)| zdHOJ#(@q>p^8@@EQC!cT>S=QEY}dQm90_d&k;4Xm%%u zB^3Ogd>lJRq5lz|?z{hm?0I!do%1JOdu!)UZR|eIpS&I2U6baPCA?QQVJ_Sq zV_cKc$`TIlnUKalC0z!&+Soh~=(-U6 zQ~3mMtOXS~lC)BsId>h#`^<>Lg|RR2#5^pR@$=dlv9rLE$ZZPpNg#}Mb;nh>p$M*H zlxvmYY9CT5Jrm1^y5!56fC$KP2`%Y*5HxT1{=3Q;OxMXM02K@HCYU z@6phup7B*+Y>V{C4wwOboBc6KfIA)hGBYWsYgeF7ZA6_?l?l@)oY;21*rOGxgw~p; z5pbt=7eeX`dvknbhx zePaE4rg~2_-#5&F4K0R$W}==V;%t}-xApvisxbWw2bM%9gtui_`&fjK!)bNZQoB2L zZ4JVJH%M(#?OL92baFN)s3vE7K-(x%ZgDoI7MmtlB=`$q71g2ZiAzL`X1@jr!M~4$ zBKT9VbX`xZ=mT+}4_2X1DNkIe03YRs*#i7Sh2{z6$x^PL9xX|&A1SlTo!p?wva^<3 zWOm*3tw+<@W z(Gu-I1g!^CG;{*}LtnR<=BrL+CS$v-KXwQDhfni!bTC$B+sptbWh6gLf1MpnLhPj!ZiPnE^nix{vGI;O{Kk{90fJlzUyVU8}_;yVnhl zYVO!o)2Fx$sT5N%=qWNGOlbOLCuWpI$6uIHl?G>IsZAj|Iwe)vaMOw5?TJgScAocK z4tEQr!vag>MvRsL^T@MmzF_-l};w5nVc$^+F*7=3r9AXb7Zd)H4RE9 zeYHnXP-ri4$hbNLZXV;YYY8oudGTT(1s-aO9XE&j@ajdoZMycwqlkhs=!shz7ri-M zd!O&xy~xv4Da#Vo?t+60+l6eXBiI>*H|!&={!Ghj4F$H2<3qYFXwO(hqS%6llqk~kXrRj<+s zvG|2{XggFCdN>9^=*}JDmcX7`GSjjOZB#?@$Nzw>7(J2p+2}AR?X>XP30^vKA6C?y zyZonXtC1K=2WQMM)Npy7jc(~(jEj8nqE*}r&e(FW5)q4ISXKnYVnm|LOAc%4`WE*H zpscB?-cm9bp(DPv`-LggEG3C}mz{$s3lAxlsL1%rmJUK9RNi-IU#wV^mD=#Ss+9CV zMNa8_w2`aYxVDhW&^C0tE}5S0xTxIql5Kgdd!9!>~hwdIYL( zu)J28s2$LBF&pVBXP&`tdL>|Ar!8Wy<<7^EFv6Bb!yTJXlMoUGt2Pe&(HnX>q(Y>+ zJ9et-fuLO4Ee!QWa%7tAQ=V`JjbnK^6Pk?UZsds(Tc1GH_au)-1ZcZc)Fxtw+!-8_ zBvCE_*6CLekmIcp%%!q+l~Y>0D$7bKJKi74gNYPm_CU8WP9e>QzppGz!bxqdXnGE!#pv_czLQuI{r@J-_2tSOEtUgtcGW;N#e`DM~Y z8!oe5s(R~1tk+vr&~3nu>aoCuF{#H@ZXsLburRaYW5A?%>U^BiixgSs8>jD7-w@%* zalWd;*at)RWVot=(7`(g%Rc&95iK3ovXJVrM)l0X>&)t*W^2R7+=kJf62s!KZfb!f zQ0uAU_W&!jey}>NY6rcaOCb`hnhLJ=;J(|NwQB4I!&nt6EYz z+b|oBu5fz2(b1J1MzAO9gK6=wUdhpw9_`WEunT{Y29VrZ)r9j1OBXGnA?0a$X3ZUC zsf3q)lqHSHlBSKMDGlxhO&vAQ`lR?xUf-CO4%+8f=rTBeC#=;+E~$pIg*Vl3zMZ7a zK;OBZh89q=ITSq$3*0b74S`%@%+$sZEf9k{JWt{b0EU5GwKC*@>t)M)wVe8FnsnKM-La;BS>O3NWGl$&}g zl@7}?rL@fCG_^>Xyr-h3s;@8#HuO|B=uLsXK3#9hKKQm$YAyeVwNzqQQ}(O1R5~A5 zirA_`ffco1HlwDJ>2`v*!GbDZ*mVtJ7pbZIH|8*!Q&agq+#56_R_$i6=G9a_1us)g z<-_%MYt^4%|0Ok*c?ffPHI)er0sSd4G!6ABR8u*e?@*pHnC22_8>BhIQqmKq^Kr@s zHK@=iR~lM%MU~4wQ9a}46;P7?nSc;gFXOO*si<-rzU!8fY3#7n zCRy(0;fQ7wRc=HNUn#1jHY~(26;&o7o~|eEKdPwmCv>hc4!x|R%6$l?bVZfJuSikl zFp{DdeN_o(S}Mbk9|t(`KmMYYN|QlXuBGx5@YCypYeKCnxvr`eh%gFC*KG-1 z1WNobR#tg0-2cbaR4%{AO-&_RdK7oPno8z$GPz06A(#MdfgWU!?+ET191hggIBqLqV3(E=>Qosi8FeO=x`KudYwCK}%)f8PdhHu#2^cmP$rI zt#{K>iG!isVcd+CN=4K~S}M0<(V`L8oJvQhQl-KcNjrA~0z6JD<~o~dskG=7HuNks zRHlKQhMrPtQh5b2ph=}1_%zeSZlbsH%{Yz^vAp}&y*6>rZkyN*=(EQrasjsiDgfWX zPu;iV9lRIoDhK=Sb?xdWYS5G2ThQ87IrAPIk@F7RIhggnR8&`~ncc~gxx#|Q0BoTuzW>z1#)bYKavELB~gHyOZ+bMG|$A{5~!Sjc__ZEvjzTBAKLpy~%#7+!;55d$& zgsz>gcl8lt!!G@9+Abs9ll9@WiLh25Qb&}^N2w!9xRX)8zyYf1Cl2*?eu@hm61A&A zYyHTP*E3+ZV8d}6?L#(?Q0#-d@1~uo?y5~_$YGM6sgAO_>gb178As+^(@tnx;g4R9!dUt8Ie`yCCW}COq#R7bQJAtw9uaBljPvu|6B$6S>h^f?E|2U4FE}B(a7Fq$ zQ*p(hN5i5cHs4e%nW>*tD4eVx#v+L(xfWbj;T+XYI))oJta9w=xY~&eV*IJ*+|e;9 z`%JZOQuYtkUP;+!v8|gEI4#S1vWDEJa12(Q2v!Hh8`wZe3D9=H4;X4s)CWhnMrS#?X@4`qIP1e`{b8+s|Kfve zXQO=~3U9f*ebrrm8bx$H!g9|KFG5vUqJlQ#HdJFh9GU@c_H_)$9eaOUi?Zd-eR%JB z(M6;J_lQwRNDG-grO+5JUWaDW;0RG)cqg8VJEIpUFM5S=H87= z>X)Q1KA3{DU5uN9xS%2+)3+0-_;?-|g_}jV!Qg0i8|^wKg2q{aS_;qF+T$;4fJE^p=Hqn4^`EY82c`RsVyqBzUB9BW%)!0@k32)Y%( z3FX%PVpjN|{#1MMqFBs8X+cQCx$G#829@88YkCyjOw-;SFC@gd+g9zwB0eskMEWv&dPXaQ!P@bRiCbDYFfk8~`ZP&Ej%FY1Qf>{W<|mFg3yc&X)n ziVhqs(Qn&zwO_GA(X^wm%WfO41@o1=Z9c83+ynROB2x7ym0$Vbkg6^T2XO5MZrm`+ zYc~ZaS=)=&om};HpGv}qO%>upx1bQgX4L@f%&?rUn2f3eO|FPgg!RnNiYl?$`+DP` zNrt7!0}$!YA1i-C_+#TwB7f%cC%?R`7|F*v4q_ekde;tUf3;hxz3|C^uSa>De=JS{ zd}gutaP0{FxbkaHyKh<7@;L8!=utS~WpA;vYhOJ?M+qF$V%Kh6^1rr121tgwZ>457nd?aKgM+_{k6bIixzd%YH+Gt-#T~?Y*_HcqG13xy?2Pgt2)nODP0Q! zaUiJEi#SmvG9oG$jlh{03zBb>jJvh}cpqD8KkacOpr10)?q^y&jDoJ6n>sDT>L2mb zVyku=bM13;S%`KuYz$XQVOQV!V$3(E@rcosug2gW&Wo9)iMt#bXGIm&f427rHM!YyFp4Y&Bhzb z@4OWzN!f!XL6A~43-9VH&C@AvAEiI3k5VV24FtDwvCneoYl4#MIjj*gaWEwYmqV%x z9RsvD<%Y%nZV>mYuxBKILAkM>>Z(Tp*XpZWZwK$iE)UNc)orkXzt3`CMR~OFXxKNa zv`tk9CL=axN}pHwL0tV^EpV&`L)p>xtGNT9tJ1jzj}KhCgMFx$sW!wMI5uIXOB+O3L}v(R;r<~d0NDA`(*5X2w&{UMbens^`r>( zo&y?QI}^2$$kgD;P4J*!AHy$MTa#o+gQfHfqiEPPd}h_OP9;-4dZHVKGt_q6pz3xwtuHS6!*(6Ww-=Vw zn>(L^eOhP9F({jctLvnF zCa)7^6_(!v%e{TyKpMP^G?H7Im-z?RbpO$^ayLq`$QKRMov*<5GJB*+P;%9IDoPLi zi8L4(C7>L;Xkp-hz5_%X4693E7stMxnW7l0(8#4TM4I1O>{YqFb&+?(_XXarojAt2 z8_fu$2)B(NQw%3+Bkp7FOIj4Yi|T&B#Y0uK3~~rK@H*N$kZz(d7bt{&tZo<7_Tp@z zGt9@)Mtcf2U1x{$ZHY=>{c6NdMGJ37wuQHXXq1LJFz5}^&AU`BCDC9cv-u~6XIw3s zfu!|)X|eZ}#nklO0bMdc&vA`5u|9ciDy-%%nz9zawXfrh^8z#^P-i}}It7I$O!U6* z+_R$KKtO0H0WsHd)G(>Mlip))tq)SX-d+`n>pYV!TbFu6Yt)Lbz)^9icEwM^hI!yb zm~gOdwJx7HG;me>;?GtTzu~d6ef5CGu6Go_;aRN} zr+ODvw{7q#?p<6;O-zoKN^j4con%HoQ6Zqe23a@syHWm~wXm7>P3p%p_z9nZ0BvVu zGaApO8i9=~eG}JF9L+0zyJ~faV6153s@fMYfEHDwAu#Gv-{Z=&kHBE)Q(Rx#h4-`a zO5bw0G`Z53H@Bkin3U~_+kI!X*;#)#?I5iH71O-eH$&O$@Adt$66FmVaIfzzC?&Uh zeVxogzt`8(xYsxMO)M+1oYUUe`8-CmHhF`_D>XxpZ{m4J{F@dJV zhi(H!JCj|zRj1NYT1k=)IX^9`{JNz*y}CvD18_jkFs}vRM)WN6rd#oIGkcaT0h8cV zlnke$6gcH&*zl8^h@VAs@v}T19`oT=ln1w>#c(Ss$}itqj5N!)^EckH0XyyDaIf*# z-sq2ZanG-)W%(li@*@9u$7$ROZ4bnt5jXj@bzN1~rF@Zhd69PY+{8bA zLY(8=jGI&D?0gCBkO)2){KjP04l}@2E4!!wm0F`DVjbVltZIWI(H?k5%^Le=U!^?+ z>&&x0kKm(>YhSWGGO@wThJDIUOjTTk?K<@ObPW?qy=rG|=Ja~;u0xMk4JlEt(Gm^k zUGK7UB3cVm%AKP(A?XWHw59>k^?YH&p`U=qOo!mK2|J3u*wob7hHe*H`p~!3R;Z(e6gqJ zmm~MUwiCA9BTqn&C+=W86uNKZ345y-!Btt{dF~@uN-Y3it;Ch5^O_rU23aO8_eYj{zv zl^b1_8h^wiK@3suLzEliCc=$Rq+v#jbYPZ_^l!m$f%3ai3mU z#XTklgknCR5bk{9Vb4L%rac#-`9vaSfyja%aZH7M9`y);FX>3X0I}$1#!D5sZZ0~$ z0$d`F0(>G~=$tEjm^N`R^VZE=yfYuBsON3wYv##t%!lcuB0UH4PcvdL46$u^p9*Xl zqR`DP8TqFng>*O9sR-r%o&cP4-Qpy{zwtZsHuDpZ6y^h+iz;otGd<$YbcieCa}UAD z1q((ND&a`OGsv2N$4bjmJR%`sNLtzuSnwpG_#*+)>GRST+>)*e{KmXR_4Y~g?0Ixf zO3$~Oj**V}jzS<7@5oVU#5;0TK}O~mWT`StEtsduFa4GRM{0o{CN)=Ck&i(70_ieM zfwY(oAXg-$E)_@vW`P)=ev61t%@s+hc1J-PJn)P!$WpecnT~=&!!0>IEjQhGnd;DO z33<87H_2g`sdmN{h$j$UAe=xL0e^7=YSk1-PYh~YsJKpCi+VN@e=5J6!tn*^>0*3N zVN$w%dTI{h!9Kyw9+{JqH%|q|kB6t1w@-_fzO7of@oU@8;@`eQ$4;HE>JrekTlXG4 zukK~--KTG0zy1S)t{E6SXz;Z|LWW)!I&Aoe>%+oFMvNLgW~?o8TvT+-_zAIb@i$CN zxN%bA>d1>hx^E0!uZ_Qbdo0q?^pwRAEw0OzV+x~F- zvgJi0Dz6}BNtQjaAa7neOMd}mZysc$08)|;%FekXpvz!{!Ep`z zvF%_RVg=;kmn{eJO8^FOz{RSlNmFha3gZPTY$hlvge?`njKQ{x?F`#M*2^qVJ0EYk zsxD`#w#+>(`ez}}EcoZ(_ckLOYgKDi>-6*)E)D+kls{`S^Ryy2wlP-tl1vR8nPjvxY*+N=X$XkKGj=LSToz%1R3Xx)t3X>-?;KuY=mL_Fv zs~Y$;Sn-LxWSh!%$SQ)+^3TItfw%^58AvY|@1&VH(S;H~ev+b#IhCt$q~z%BKIx-m zxyOuFII(3VUe~J9r5u^%eO-Nd=OQjCPDeO$Yd&bTB8Pm$<=2O)>Z#|z)TyN_)75fE}GI2Qcs78lgYQ{ zC`fC<@9WT~FzXjfJ5|*RogUV%=F+e#nWNmAxHOdCb>jN^^h`Xito#-uujX^SxD4I% z8}S?RV@+Zm{Vn+oug@0LR$Qh+&o z4NH)(9d(u*GT$hPW+^u0X4bEvBD_Ao=E^${rONWsTRzt3Jk>g|l}tyQ$W|&{rNA=a zqth|8i5w9dro?tYZ(G<-QD&NJ>)q37kRRfAaXJgYWwvspJX7&MRkdAu8*u9{rvF>y zrEyN|(~-wIcTM^m>LIz$R>6+;l>kd zg5PU?x!v&#aVwuIPnSJv_RY-{3+u5p%RL0WA?CyHa|X&KPw|GW2ETRrc&DAMIKNK( z(&?Px*F$gJ^*EHS23}AeI3}8V!6tlR`oiQI@TQ+_$V-S!n4Ht{hl#@yVpE+>bf7!T zj&z3^0P~Tba5XK=M3^`kDNg)o6Ww9v!|Vam3iE2ZpSOu#Fauy(VQ#9miQX_P&O!$S z%tv6db6EoOHkg?(>tN1>DPh`RCaAi>?<4C>hN5{o+(@_HDnyB3{8>?BDA|-?y=OHM zHjZE##xJcEl>%Q7{$UR__{Nmyt5E#@vZdBzGp$<{Hy7h~3_`PP8s`v$czWNhH&Skm z@tk{VBNfd-h|QXn1DWL$l>k=jm}}e`frPCHmL8{89~IPMz>)=E%1OyFb*<{+g$0_$#BfA(X#puxwQz3=`99(?F;4?nX0(G8D1{`V&~ zKKYNQp8n@E|JwBIbI)(yvUS@FFTV8hE3dw`y`pl*&RwtX-m`b#8*lD^>+J&v554p5 zd+&en;o*;te0=niW5-W?`q}3vzxeVit?KLQQ~&Hoi-|L^AiFHHUm%V9VB z4Qt%&yok(nU+ZRH=Vt$-oBdC2c3w(m#@*s(_d@>cb0R(A2f&1$F=v*Xm7A8gILV%B z&%*p5+@}?$7fiY(JAIx#E;l2uV1e>T*5gb}Ewo3@vu70=Ui)h_K^T zFJAApy3hNuFV7jMRMo%a{5yTwf9!{Tu09_)KGmL@V@)q8$SbgBdtYH19{erh&KSxZRxF zoCof5)XXt7M^o&zbNtO2Onv6l9BByYqN{x*aUevRminrKMZ*GOYRL z{O`3$ZwY|U5R_{nav6d$V#-6{&XFabm?ilTaJ|IzQbAe^7NnwlP%`8Y*fQW+l;Z%} z3NzDhNrhuhR&F}VK8NUBoW|nJEPHxke(Jn*Yifo)y}&wPh@-Gz$Sqm9L(+2>4KO1% zk%tCZVNM8`RgjmvAU)S^hHso#dclIMToe_sLGeJa1}}8v+0(6%0XMO`6w;$ElJ^vh zR5{->M$AS=Q{9r+(_Nfp&!iX>+EWWuuD>Qbw|b$tZ1Axe-ho|;F1?<)^ScqB)6!Lu zyZc)mg=EIGspAKSH43Y89ME@wHPyhLlHwk-xiTEkdjMF8C62{Rl(Cx>e>1o@F2P1Q zTr6h=^BpYQLTga^BD54)8P@a#`SzvPTt1&$AW}vnlFId$RFt?WuoOz`g7gJ>Sa#}T z)SN!56=S`zHsgl%G78mid`kL6iW&>F@FD(`r0Aq6-&g#7TlV1C6}3~Rj(AzTRrZ=PpPHV$4Z-GY6 zw!V2Jv3HJB72-X^G~e&-Zc`D=_on`T>~VSj8T~Kszhc1U{r@@e^8POlzP$gSA(!{h z4QcGZ-;Ms)huXwP06r%D2i^SX{{09Wje7s4{JCdhV}JMb880KTv47L}Une#8Kink$ z&eLr5c?Y`Ln}+*vdPBI+-Ru=j(pxgCaehtdjk=|=e^Ywiny32$IA=U4S3z#G8F#NXY2?q-`v1GxJ))y6*uN=#74J0mZ<>Fn_Z$1~Z6XIBeW3dbJe^_B>EuDHdS-L4 zON|hlv2VzH9)w%$x8_@8^S^tI{xf@xx_Y=T)!*fTu||~M=bDHwShDEpos`ZFabl`H zGg&OeoBId^JzafNA~uRBbdv4q<^Tr6AC;D)pa36M!&RL3PEO6TkIySe!iPL3-H1CM zA#>9U5IZU_w=gd!J<48?6N3-2UEoAWWMN^}{9Gf2sd)`qikm%<5{5#?_y)tFSa_eyZ&*t5nhwWm+bOU_D5 zkIGCf5PvpktPd9{L>kjhvZuwOm&%cWC*L_Di{bD@h{5ET8(Dg|0-=d$qko@nM4cj{ za`Fnzw;N)n+!!+v-{79iK0?4~ZwXD)X(k(WsEu1deLlt31|%|2{Hsl4kwEjLqfEiGorJZ$Sh-Y6a*gt8&m zF753VR~Vgsi(~%$^n%2K^g;^C=bmx7AR{#=>$awdN9Lv_r+_2l8Cm;~BegAVNG$x2hwiV?ba-Fs?Ip|O`|5A6u7@AuiuH!wwi z+s!vspaD!zmu+2+P%4Gwo|_E5t}xeY;?zuzW#iJ&V`fa&k;t?(FcG7tem=<%1tnl2 zk7?*B>WmZLGZoe!mc5v#%L0ZUj(oBtSsVf*kLu;YhqMFYChx@ z@&ha@yruvXCWsykbEDNP7Ln>f@?shWUV6O3WO0OeH0L2YHt>RJv7V!bw)ZhB@YKBe zS}mT?Yky*Tff}dh&O_S+`G7?HiK$G@ns=)~ccmNmj3x!_TdL?^T8PbPQ?rmyq2df| z;%=jrphL14>oqYiHEm+nEd|(s2CCmtGBqV#FXa1G+D4-XiFn%W9fb?~QI|@+E(p9}k!)~kv`Kblz^?XleY&ZT*Pc6ve zFeX_f={{+bGMF9aF-W74Fk2Ax?Dg7>IwnM*E-gme2Gaif{C~!Q3Me7xLsMU2Fc{!( zm~MtA>3@k`sw&vxA&%{Y9&3Si0-=R#=r1_S_n0Br%- zZ=mMgv6Dc}yK`=y^Y5ICr^!iV`f;tm^kce=OB1>)Rk{>&x^aI<2LqU2Zvfqg1Na_k zyhj=DXy{d(DTaHJVX_Tn`ZEE{8y!ED&H|WL02*Mmrvx1&g)8Y`_+kKYUSXJbz$7hB z0R2k<#0P5?YUjn@jQ900iQi)Y=Jy1E;kE%t)7t?0e+Zy|0GLAl5XhJR?BjpQN6*)K z$>%?d*Z)@PmtO4DF}U<%+y54Z|M`3_DFVh9=8_^{{m!J{d{(+~r?_+3? z=iagOj@}0A{(fAytbbfLS3G=zTi%3id9gA#B7EhBBO9!`_eH-eF6d4+!`yO(;UkUk zTM_=iqbDEjCcb!7dvw;N(_g+`#h8o_$mAn8AF+y*BiTo;yEy#2hmV~&FT~L0I%b^r zi$bW_A8aBTU;~T-gaL*DLI6PkD;>!s zQ~+K9YzAxuJOa2E!0>AUD*?p-J0J%z7cdo&2$%@40R{oAfL8cedKi=i;N2hK3lMKbJ%Da5BtvgU$L4WW^{yc4aZJqLFc<{IC!CI-j z75|xprh7BIx=Hk~?yb^SxG{02x6*hj)T^lLRZ(=pt9Wd&5WU>M3w95H5{*lk^k+Et zcuc1`D1y5z79IdEKudrH&`VOz{Q*|MFUk3^VZ(5~9Vdp9lEiJd-KKCeWqj@0wc;QD z_=niMd9#x74?g%neDTE>^>Uui>6T4sLpN<}NlE`h{vYJljP0Um`|0f&x8{i=6j8=@ zC}-SWodQX?wdk84QntcU^tUgd=j*48W&6IEHf`GWjETdZf|+t_{K836Zb^~L%LZ(p zH7!LH$qn1LOk;X4Li=D1-sQi~o!cao6#qep<-K}I|CYU^@G=0jgLTb=8HV8r7M)Mz zkxlUl4bf$ue*OB1;NW2FFAWi+M~@bfkvOj%7pHhPdGcfdRc_EQHdD-*Ge;~>8!zV1 zpD(hrv&Di13q(Ny&HQbfHc#SKTK zn0#D{Lcp}oq?q-U6!T6bx^?TsU;p}7ao>ISi3cBiP(1R;BjWML zA6MnOY11aLWy==Tmc8=IE8^Xqo5UU8O0lIziq~I%UF_SpPrUWkTjJ26L*l*n-V;ZT z91)*<@`*V8#bNR8cT#-%>8DCAs;a8QnbTj3&(BLyQ&S_(oja#wg>3a4g89uv%xOYs zeAi+ga1(?FmAzdJHylG8gyc$wS$mjh6*`*vXHke6!Nd@gxvb9 zknbI8h%eeHN@Y8_{ekJQN;fO@oVbi55f-G8<0X4Qn(8# zJdPB0A%#zoLQQ)qz8fmVnaNU|T`0x5byA#vR*Ihv$@=)+5q~h^k45|`h(8bU7a{&i z#J{h-6n`Ho#pcOU>{uwpfprr1ic3*_s3E>D;*$fN5x+a)_eT8wh(8GN$F!GX#!x91 zPL^WzLZr1$itW!zapX`#{Kic~ivGAeMn#Q_92Xg_oF)zo>KE9jPyY$^0V2o6$HhfQ z$48AF8yTH4IB39tet{Dv^i44WM90A!|8cNHN2df|!vGT|SPlR9gs7PKu}D59Dst?& z$do}0(63*g-iCi%f-N#WGAcR>@rl{BgMx#{7&tOWd_uhWjPD-MCFNQKU#4s`t(yeck0;j zhS4g4U`1tb_yhlF#*d7Lf2WQ;Z!mD1IFKkHe#+R$gd5}IW8zb~F@dfDUAkQ5=jYdB zB5|ZY6|y8Cmy~Xe0;G@)^pA>3h>MR;h)L+xC;flONfq-Nr+Aue|5LcMi$5+ z<(i{0I@W%03uwF`-fk4^xW$M;fH_8f1B$JmjP zk=J=yd_u;iB%~z7#U$uhq6yKTxTs;{qK0^Tw7${sAg|)0(Oen+Dd9u>Tea};Xdep< ziDE+hSO`*sf8_PULqc15`F4ndXVf^z@~~l1Q4RhnDdQq1MYL<_GXgn8r7-ol=!X1L zq9}KhBHDVkw9!9mEW|b5j1K;hKM*imoA&J{r9>r+jexAxd&A#+V*T5PCq#meacf;|18#>lj2$Q6%PI6*3J&;jSt=R_|TzVuAPSu-BNt$?#74i z@1nijEQZS0#ALZwER^qxb@HfqR(^r+cf)r^48aF6F#z%Lv0Xa|@kb!O4e{dfR0Pq%K}P>F=-s%AmE1@s#-WXM3e zTf21&=+=8+FaLJ!u10^jYoDNg{RZ?K(%#>4O)m(20EBJt-)l(lkYLfH&%mG| zJzEcHj{xo3w!OMX?|wl;+O!V3+HkO1g9Z-q_4NxvoNGF?YuhcL%fKORe0^KD^6~Mz z#$xH_-J;vTo^5DX|5(=iFn8$Rzkgqtkd{q_BcAMjH6 zzwyQ!5_6;y_{kSuctPQfIVAbzmtV?*2MW!onx>ua1d|S$#K#2SEKNX}OA|~t)BG*?@7%d_HOjFMWTJ$$?AWnG z(LnjYe3N7uV4g|I3vpzfKpj@*yYId$39K6|51OnWtUHYJ=9_OS8d!#?|B~f^xq43F z)<1av3GQ|DM;+#-i7TzYUC*99EAbgp@*fr!)}L}rU>RWEOuqc`%MxWS(Pvh5m}S5+ z!MvIR;=Xt9Udg(0`0!z6Ck<=^C~vGMEFjDDAnvrY z{ErC6l()@bq`(%@(82wM_VsVApRzpWnr4XrJk@JP+pRcNjU+Bs3nioj<)G*>>7YqoQjW;~=I9{b z$#a$w<%aUlb{Atdh0rA6f5XQ*4dZY~ZVYf82^uh;Eb~DZ@y~i!%D`9jYH_9b!tg%tmBk3%026bX|i7MNy60yH-d(E$p3ion>38Z zVZ!jYbQ(fX7cfsQgSM;SY)7x;=}P?37O%q`|8SJU8rCzmEzQwEd3P@pQ?6)||Mcf~ zfpOW+xIfcRqK=Y=Po#_k4Kbi$)4$zAT+;q6eD1#lFD%EY9_ zosOS=`bi#o@ge#6?eX&dg=6Jk@@xvRo4%BC+UHVEJ|SfSY52&f&ybl>W_@Oxg!;@j zsXyug>+@j96YKN^tg|&kgTf!>y&7{DebBC#kQTOwG))?4Qtm0&P3bV@i?U8xI=+9i zd}8q^xxq17{;hC~qJad=slw$A1`UbFrJM+yVnIWFeI^Y?eZH1$657;$Xp?$_hF&k| zZ7Y&l(S!ztf1f^m>f3*OnWuhBScxR@}KT3GEb~x0}Ns z?Y)wJ)U`G253$afbeOcT4EQ~8FB6j%n#7;&eP)})`W%V6z&0ri zZ4$rFW}7r%JFaNa@o(BLbtV4j->)7%e0U%9QA$V$+eMm`8PdT%4^7fSH-2l)ei{Av zy=9+)&r8MOa_jPN`7CJoCurCR8eX|CPo6mq;kkmR3Un?&nS}BC3>wTn#(>xK$W8gr z_QI6^kt0X;XIYrQ`bxZs8*w*jVcXC4p5q#}oBUSs+s5a$JHq6Ppkd4Mk#f`R5%Ou! z(6m1P8Ew+K1(9;~t>fg%tSIT6A0>;@qNU4mlRWm}K}j0i`xvS|qfO$|9R6tUmHY#r zHN>5G(Iig9oArTwHp_%U|yZ{j^X#>ji~$I5$hZSwA% zNa+F%cY=mHK*KW7z^7>+<7U(iJQuY;#2>Pt`6 z*(OE0^)a4Dy~lG=`%nB$`HzT*=uaGoCw7I@)4+0Zr{i+8{QPsB{Iv3Z`TFW8x!oBi zUpDG9+a$9-KZZ7mG(2F?@JGnenp-1fS(Z)%5mkK*^tUGh9zuI{LCQCq$Ua}Yvdr=Q zU59-P@wvIVZxC13N7jMm%a|EzrDu|*Ai4AceoF<773Cf&azf$0C@_zQD?WmpPbLHU8Kufw>1 zIQGFjjXEshC!woXqE1M@-*CeXs^5eCFsl6|?!=X4L>f$>8~IJy<2Z+XJC+6O1M9S^ z&nO3epUwKrHp#s{@89+?`+*ObyuO?n9v*%V_VlQE5aw;vWr;nCykJsdPD@^M%{3Bz zYlRE(V1L6MNP`I`9WuBme1H-j?IzK=-<@g@G0dD6+T0ZrBi))CeRvrK4G2H7_;zdam#bNmc> z`Bn3utXq_S$kKZ37kiKO6f5HL_SMMG+8s+>4+qLMAF$t(QHYx1155O3B4wm)>|7=iM` zzV>$11J(i738u?77`R_RIwb)C0XCHTqnLNnfHc>9xUO?0kLo{|GRXdq$yefY{P=N& z56V`eZ^2!~sy?8+CFD)X0KZY>Gs6@3P8!&blBaC{pL^~(`OGuVsBhrE{`D^vk8=dz zlZLi!4!)7M1NR+py9-Ej-Q!BvZ@Lm+_J7#^qdua6XIv=0iKvWf`$N_&o=`j{|SEn_MTn(nsNM$|+5E z872)T5I53A8Dd?y>#n;b+APWMwEIKcOkfze`Ai*)E#2m^9ENzu7k7+pWe4lqr5|-T6yg`A+;pGNs$`X0b zI)pakUf}UtaIeSTUH;idxR*zBWkR|*$3A=ZY>9ojO1@2=yPFJ0S)#1do!kj)(e5cGXJ$?(&WpCl1`{qy!#^zXk>-gT@Se%1UB>X#b-;`?1fTF8HzCLJ_QI%txoY+qOx2rL`Au^iZT zvYxWc*cNdufoo8tg?vXIzongNz__tZ;cv=6`U?HYC&J~*g#CN=e@GYCc+)0O$e|OnvD(B|AS#RA<$~xZ}hGjvSC!a|p zWgT*K0eu7wWyS9*_gMUzZxiwRrKbY|a1X+N5|{_~K5(DL?|x)4J}%oAFRl|U<%O|} z7oWiSoEqJPO}+omnO;VE9)^k2FUSwi?=;Qy%=F#xE@tw0uQ1FLzsD>x@RYjgVVGWq z+0rmAhS|$7#~NmlVM^Wfpviq&R)7ug8~15(e-Hb&1j_Rz`-&*(6#&eF%d-IYhwofb zX*wT>A^7IUr>Cb+Mt?sVbN-QV4*{^x-5F3Xr%d~kS}7M{tta*aeT|KC z!CX_g4r@EJF*p3dcM7G;;Xqn@;FhB6F}7QXI$g{541LZY(B4+zTW|{P(h>B}AH_Ub zHu}KP2tO3i2mOuH^RdRkbu!L{+Ax31HE*sLzxTbA2QVv#^GJNYLHJ8OJ<*15K%TX1 zKiNidyhI!b<{F04=f8k<^?S6r@1os&i3xMflSb=ft@_^!^zs4}$h9SnKV@ zb{g{vshE43P8`^G;@FelN4D$y7O|~nUzYt8`q9p37S^h`=E=1-uJLgH0@tXxzQc8Y zuCejC6!CEH#W4WJpt%??Wb^yW?;6Ls%$NOW^2DHD^_}z-^`RY;%pf zZ?kqTV!6wM%Aeyw_7Mogfxz~iK%VgX_3tl^$S0iB)w%@d!};9uZ>)EH{eRlK_V6l- zWPc)AjR=AlRJfuiL_k;(y64?9~9t=m{;Ma1^!z=3$8$38M(lvl+Og_OV83ppClctNdx4u*JbiZ>-T+~z*-u} z<7GHq82uBTl16!jUNz}J-;i@0QGmArBLQ9roNE1ZgRhDi9y=e6791kXlW4$t9_R!x zTa@7b;aAXml=F&%qKpuf}0bc>u z=wn>f{g2M*jIMm02;|WvK2W(h{_xERhe)I6E_=ZiAl`?6j{62J-~o<%mS+37A@C|- zx4;a6J(pGEh0qD$Bfttv2%`#kfX-^#XkfQgF3LZ2i=OSxBl|xPx(K_2xB#&ocmmr4 zew;nJKe}^fijNZ@KMi>VhL7BIpcBBEfb{__*doQtuOnSDX_Y6L<8{B%gPVzANrp%WlGw@g$sKD8-hO$ zI>2+p)rhH)Hw7Kw1?&-iLjit^bpU}*TuB~rUbU=U=@5pGP5FvE%D3c#4^yX3_3a+) zF6KYjf5-y(0a--fpalgwaq=&FqbL6I3F*XT@<=)Xc|^HV$ASDK9!H)7IbHA=@fGQ! zA8$c7K~pe3HOB^H@!s^5=;)lPCM}9cY4GgdTtn@Brfj-kdr5r|5@^2SqnN)!ttV5Xj?_5uKxJ zW(|&hb%dOgf6Ce=Y>-l_lc^;0Nfxyr4}wZx6{<&AIlH{_%luv4=?S{WuVFJ#ZOdOXO!oY2CMf-$DEZI#9t6 z&~f?LfIiGyupNj?sd;dLMv>nI* z`hr~ubd~0b3xvxIAXzRX9|?PnVa?OkVyZBBMZBLzFJ0OOj0ZV-df-2bu>ihC^RnL$ z`~mPC{iDJsgO3&*X|6g?{QM2IRYrKl3F;f6z}1Q`f6zg+1>X+*MlKgJh+H~w4d@5x z402Z(1K0&z2U@@j*lpNM(D~L|Z%w6+Z@yaR^t-SBgx{vob9BAXH`>HFg9h3sAWHiR zM7wwI?$ZVuP;m})0Ovt&;3vUeU|k~R!WUD!h!uWH@$E0{53Qpgi1rRqP9AeUY!0vm z+OxpNn4uS-4+VS(a=h@DfvLc6r+b)Bo&MCmL7(4$AkW|{D(FB(f0&PGj|AT~V67_d z9WsaU0{Y^Oz9AcRlGcUHShj50 zC3c4}fK${){)!bV{O{?U*riLCcBOpw=9Mc~`r{eQVHjt!>7Uf>40sx?e@345J8Gkn z5V0}jbrr=RJ;<-ax<-#;t9cX$QrQr+fpa0#@Zkb~CeSI^vd1ZILd=95!X9#K zG+Nh5CGd|!zz@(DbPaY174nK}QPL@PB#Jg_maoXfBBz5q0%A7s595S62!0UC>k~Tp z{ubg7#2$!!;OipZsF*(~iZ&33ClMVOKiYf7$GKs{z=z6r7f08ZxPCkd-yMEC;s(S{ zqcgksee^gKjV`CSmY(yD78e)$YeaynVJsmp0ssAz>Cf)BSNnedXo`KR3vPBD_($`C zZ?}NSVf_HE4P@?>F*16r@?)Q$h@r-3`~9B{yqf2 zv0eQ2+zW>PD!Oyii|Bq`a6LV{;`?f_UyvKvZTMUm57^V1wBUct<-xT$;{0Iz!Mnik zIz;m%`p0~PI00?LF4Np!T=RO^Y0!;!zzh1_*C))`$S2`i#Mzj;35&VpTC_9fhKly} zsfKD**AN|ltOn=ceAIe4H--|K@$vLNUNV;0aV;i9I}-b!u;1Es^c%j5^LJaTMZZ;j z!d`2!w4)I|#rr$0{i6Cz`b6hkUwtOMg_&&d4IwA3urM>XU(Sg5;kh|^g>J&of;_u0 zJu5Ret?<6w?DT^C!u}nckn56Q6^>ZbDjN*Sul*gE9*e;)iCpPfw?pjJOH?({c(k6QtAjV%wKq ze6jr+XZ)adr|l)QI&ClBG+pkr4frWj+NZQnOzhgdOKNKMKi5A0|M3If$ET!cwOM=i zC@W$wv3J=Kc8-O4E8d>RDOt)0<$a}&+C*)o_D~;J^VJvBP3kuFka}FbP77;>_G@jh zHdK2~tI&36f7QO$YUyFUmEKu@SkKdo^fCHmeXhPxU#)M}-_dV3erY^nykmT5oHFW~ z%$#ICXKpr6nctdGv!T`2>S&F$7Fw&UGgb?cBZ|cgu~fV(j*6S@`SvDzpZ$fM5ozG8 za$a?|Iqlpe_c1riog@`6%^Tni^VWHry-&R_yt5wN5NS0QV1`(Ib~|gq6y~vXHk3WZ z=CCDfJNu5+<_);X`}0o9K7Fk5jq$w^Hd~mlm^;k&Vx4%%zSHUKbaQvQd)&kBDfb4M zCV@oYA)Po@!d_r&*jwyQmV{So>vwrE0nd$W@V?cOF5(*QI096mFv~I#O?jsP5LkOu6l*O zOaGgGL060pMvgJsm~2cp78`4g*Niyxzs>VztaXcZztzi1x3aBe)>i9t>syP9?qZ1; zWsf7SZLn{S=#lo3Wa8QuXSCa24wcwr3jk3O9ai$wimg4Vt<-jD6nS;ugnxP)l4&U z%>wfYbF}%S`CGHpoIw(~%zVS#YVI_5nfuHG<`MHt^EAn4tX11;V5yd{9M=EHd~Hq= ze-Ph_#`gD-hvXyjG18+c;+1PAKa-*Al%>G2p9b%ri-fnDLb~pPmJKuiU-es4&+uW$zLUxuZa)2zA zFU#JbVG(V$Lx(Ju%Zk|o_6pm;TJ!0A0l!sgt5{@N=PT=#eab(S4(b%u(K={JTB??= z&C+WbcbNmskhRQCwu^r!V1`XW8XsBP3Y<`^#$CpR1048x3&-t{ntnZGehNY7524XnGY zW|l@e)y;a)O11h~Syq8H+!||5v1VKIta6$QHd<$`n?*}eVXw6}+Vvv0Mw&)aBZDK+ zNFTB~P2F3hEoaKmmQW~>?mdS6nZ3jh@V|3ac~Ci}G*!E*?~t_D)jHBlb%VY_->#q3 zA0*2#%~&qVY~~a?Wn>wb!Y1wxg|OJI9&zq=eg_ZpyZJr*US3B0dXFFGVWkU6(A}z` zc2RTG7ik{cqyAm(q~($wT0-{o0=2K}9ra|rlxDm?=~2Cop&9*+Jfp%`WWHdoxAt27 z#3ZsAABd^;EPJuN!hX}fV8=ynkK7&kFw)$yooweBr_`P4)|0oYME&7TKkwu=sU{NH7 zi&3IPj1v<@shB376?14_S|rNFa#0~xi&w>K;tjEdyoK##Z+44HafEF0adBFlCF^rR zgzQ*5&aPwEw;S4x$ezX9&Fq$TYn#~`X|iLtvlHzkJDDtZPdnA_ZTGb^>?}LS9&8uU z%s0v|q1kkzeboMzMypYzWh9wous2!rj7V0bC{pPjagVyk-H?oxak7rAFB{56vWbkB z&7>tA*-j?PB$-Usp{Gohy=9ink%MKC94<%65;;yzg!El2*En#E1J^ikjRV&>@E_yA F{{j_Hb~FG0 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe b/venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe new file mode 100644 index 0000000000000000000000000000000000000000..c5df4869da5ee0970ef4f652d967caa80d5ec63d GIT binary patch literal 180736 zcmeFa3wTx4nee~%IZ4~ zqI7EK|9sCkd7hKK_uA|7u6Mn+^{#iV{h^z;Dz8#1fnPkX)RSE0FQos!^}mURQsZ-e zG+yoT{UY~CW7#iq%fprH{I}on*-ziG>NfwHRiF9HXV?2zf6{-)hR^sbKjXjd#ufhC zK6}e2uS!cxzTB?*$**_c`NqJP^PFGLR~`tw$#c(F?hkxcUmF7FxqdHlf8e;jHUwVM z*9QXU^!qObVqD)C_)^|ixt2!07#Psk+w=)5|K?gr%*qdiLQDD0NF) zlG?tqbd{6mWi>;kc*b9<_R!(W`SBOIntv1ZZAhocy+^4e`NyAgRerE5$mP$gD(am= zc3D!bN}P-2vs2_&J@#>rx>nzK)YBj4rkVQFB*Ffh=vCJxDb-c#QRPnBDA&*uk6L7b zZoPflP)}N*j*?rctJZ&V<9gmKdxAm&ko4W|hf~0>RK-}l1iQGD_o!C z>iP>oPFGpk)K(ez+i5tJ>kY#JAYaE-x7!(|kJ8uiTyMT0U+Ahk*4?p&R~jde@xF|Q z@M!rydFyA%C^%B!N|{`LbV0siQvaX)yV_7sPxPqhL{BJ|qbBwhDOKL#UHR<5UH{TL z;8juQ{ao_RonhshOWv2SH(Eb2PBH55e?|}&->i;!zfpH|%{9AUIq6lc-6=*ZX;G<5 zehzZatoTvuxsMyI=ht{zV{5&wudhpJ9k?s8bzrd(UH9Qo>xPdNwSK;$xV0v{xb?2v zuWMZu2*pCG5O_X7-s>o{n6kyxQPg^7#lN*k-G7TZ9eBOUI9#hdeFu|O`9VYN$yIf+ zm40=aKDNz(+^YpMRH%S!fxG`sz0S3`PM!89s&cum zNl@jv{<>JPGEN`#s`A3r&?~T3c`erpLzVme$Cq8sFE>;d%dM!3Rrs5h-NLU}c}~xW z$IDlHu3iAEX8IFCkIqOfdi3(l;zzHzWbvc9$`c(dlb{}5ooYOKOQz@1PhH}DbPeyM z{OUI;udb#q$CpXHt5sluznS}Hx%V&d-_HH*az91xQ@Kz5Yx^!Z0JetQmz(+pr(W(i zfzwC8Y3@XIWDP&RzXII)(;fl0xh84+{E9T?w{ZN%%0;W+$XPTNjs>qLZTt$Jb64YwX`F3N}E#uBj7x@jz049H*6mfXGtl~3uhDkS z>uGz{>uo#1FCiY^(dEr(>-J{yoYi*HJGpHI{CgAp`%(D!@8I8$!@r+^e-->Ib-eke zU1mZE8m~Kg#(sW%-3Mv&1GIe|Ff0a^Vq`*5E3j$#;qc06S5HD{6MFhn||(hn5*F)t{N6uDEQ5q4K{OQqga|_=Rmbe($fF*B>8z_eeZG zpLa+0d(_v}S1WE%m*n1{T5kW0hjPWHDr;8ia44a!L1<0JqcYixiaXCzzj_+EcC0>Goi=bz%F#?!2SSf zGVUk6-ox%bcwUdw-sZ#KRNe+DyO=)Cd}Hx;cV7;~;`wWUX%#T#npVBJ&`Y=1IQ-27 zgZhU0y}Cc1p9C%MLdy&6#ji>I>U0Zb-SBHz#%*0`jqvTq_c z1Wsx9n+X=q2giv1K9U()R2;Y9l`-lC&I#kwQd5$B=D4K91TPKCSQLgX7zYjKt?qGf z!MjPuL3yolpsY0x*KK#hF1Q>V2YY-q?Z`NwTikh1xW@sQAF*-ljDz&ap$F;HBjlGc zsOujZgFlQIgZN@~MC)#J_UScq51$^VV(#&gcQ20%#k5XebM@gI&!oP3bPnY-?+K4| zc_+4cpbtn^iL4ml-75p}9m1pTy5#-xWNd?V@9ukf-qxK`*J9hAnE1=}+vX;PjuZk% zp=V;>F2+I1o&xXwRO1HYlI9yc{Ji{D*1=0js@zbY`u`$WZNAFYi%g%dK^ZyE1}CRq zGBs;b+U2>IO`noEF*Was5q|=N>n~K@lp4z2mln!ZY0}={v*921Tx3{!+IsJP=PKta zGn8MYO1&lUsc9rPsA{z=#81*(VCY-3qpobFGW$-!1Ep_#V0&JoIvv{8wCv~LqIhCx z+ot~b-qFgr>nTYKz0wR$%_4QA$7>!gR_5VQb!1uT8z0;*V>R-p+sL)s$P8^Oem%ZN z@H_ilyj`Qppe#Bg}^qBW*@xI*O&_RSmE-x9cde@l+x z?K3V>M z|Jw1g$6>5~Uvz)}%JI~^gT94tj<{(bIb6OHn$Jb2xzktiEa~VjZR1yAH&Qk#e0AFk z+@q7-uy-RHNYnb%4_|U0UE>+fdt>p~SYzbyvRos-+`8urzuoyS>u>%0CHI~9M(2z6 z%MwFvRk`Vd_STsdKW;sjqGBf|cv_#&_O||4j?B~c={ez9WcC@c2M?kLumhRi$GqtM z6Sh70JocdfQq?$c*Z!7sDWTYz75}Q|Y0}i075}2^b?Q1tU1zZ;&v+Bsj@xzp7xg4k z-}Bg(Cu{4Ddg|(qc2nnF)M=`^^c;nheY|ekQ2hs7^#ixeFEdnZB;2p+whY?xV9R>j z&U=mMfx$Mjb(<$?`vmQFW6w%I{$Z3h&u4^U*8J1muZzRix5mKN4=(x3@wI&r_R;b6 zd+K~Ud=1?7lhzXx493{Q7<={jo9HBDo#%8r6YX{;4z_d9Zl`syoebU1 zw?}PfV)R$8cFwH$sWtxi7u+=VDt*BJ^;mXBPr)h1^+38hk^zl%d$WUG-sHCAPpd|u z>qh4In{;|+o5~18L(Ea`Pg2nqPx4`(F}Xo#Z^k5bWV>hk&ePahG6xbm9P&vVw0#mb z9MIvwT|d=$6`XnMGoo?$Dv$fz`n;&nWEb{SHf{cb{!0BCx4SZ;UD-|3zE7XK;34Kq zWd^^WK#%e~nYYjNtdlcaro?{<@>N)ZGO=zt684 zna?qnliPkEIHs@W<)PNTH7c4sG1MNOrCP)HgtpVq!&Q@1`#eK6;I7M5o0^aQ17&@i zn#;C$d`qPr;ah1pU$>VT6j&az+w_p%Y7;py*k)GS*JxAsEjKeN^TAq=IxV`thV<|i z793USq4qAuM_`F)Sh8$bG8$gEOf~j=`?@@7OWFK^P1^?y+M;+fo#k*JQ0qb_Mf+7dc>ly;h#E3QjYM`}Hj`(|MGiCul3chX)1W7_4- zhMo?#49S?W>1lsrU0HmBipf}H0^^?(RO15r*37tSeoPC+M2`OKz}%>}uC9!JXgMl2 zg79cZg38aQoQ$!i&7!Pm_huCpdOSscyODGBEhw;k2Hdaks`+xCK^v4 zjKA8M#@UsO_Z&8Grm`FAaF?Cx6)3NM^$$MvzpYj zb2MBi{?4pG7uotq_cbdNbM%t*O{e9BVjrYl=qxsiYXUz@zANpwkbKg=Gr*&sEAf_PoFw z_s-J37MVZk{O_}1rp!?XM>^dXiaozsMZM{DWhZvyyEE#_gvO*^X{%>us9oyMDe_c@ zut_OfX331K=(mtpJwFb$yUUu1nb!#Y_54`1>-rO|ep8x8oK>pbOsgyFS*+R*G1h^pRvq1oJ<)%1_SLRb{tABrHw5QgF-3Y~yEgHu?yH&J@ z`K)g51EE+i`g|O?Oybvz-wN7?w(H8oHnC_QnJ%~nraI5?G1qm>)$|*b@`-hIWzU~X z(0pT!&nDfb##zyn=tx8U!+p>|~Y%Yo_y3&)q@JIfBm1n<(GuD^ii=@#Df z^DLgpL;V_0I_*PNn((2Nv&MC5^lArZ=-4jCU*5q6@PS*;ShT6@xv3~7Ixibu?Jk}c z72c3CLPzW1*IzS+73rZGWJP{XL{*~;$_?l&Vj_d!hn9~N#iU#XK7Xg&c6fC=KB9G` zouluIY`J07Pm69cM3!c@eFdJ@FdNfF=2i=iM2{)pe`vLeHhV%f9ni3}bsKF}a4)oM z`4?tAR_u@`lF_|ag*MVBU8c)x23JxpgnuneU1yLlJ+5~jv+A55rc9VT737h& z%Ivm~1vTraQ*_LCgvP*+VO&aoRNFrEk%kwY^bBoBD4VlIRo8+$*UUcl-eu(oE*)HCPN34O=Q{#*v_#&RKeJE+G7zQeVm7nLGm%4X=(>x#km1OkYop~FB*l{J30tH>WCq};ozO3=^59wj>cnj%O z=?T$VPjX)t{M-W{7K3+RR>z{k`Kr2u`U~?^HT@{hF_QZh+qyUly)AU0>&(s7W3rsO zG|Y2CvE81GrMxe=*N=QyqoC7_HlZ*7Pn(A1LwByg5`-?QWlW1GAHJt{drq!-debCT z-b=Zh%Djzdxc1B&KAtT$&YbZK3r@gW?yecpoCm27UYbLFiQq-r6@GYltTL-+Msx19 z%J@f=`O=6o-HVmBOGRGwIebxc`5<3NKPFH|KRR0D#+Vh&@mltqk90{>HqDF9Z)EPF z643XIVZ9&Ou-S}Gn64T%9+wxzO`h z%xV)jUV6jgIiIKQsIKorMX^Vcd=1^y*>x~e*L#j@i>ITemoi~!FfgZMV-NDc^mf$D zF|rPy@=np|C3bobd6yYe4)o`1}*8Qr6RN84QEiu$DwT|9rEcY+58 zW-0IFlRQrP&q=T0*GU`0?JvjgV6AIQpYOH%6kvS<8Bw-xu`0NQv<%?NN5({oZ)nd+ zL>963OK8D-u?r)`ww8a<)e@lDofLCZdjBmUJ+r5c2jT>~vI@10OEl8c_CyKOvDz*$XS4RJj zR(J}Z{j{q*`SyI-E*}P_3d(;wS2cbP7{msc0bVlj*IdF?sZhJ{C-bK^bma~i^S`Gq zY1?F+Z(=OAQWpE9Oz`z%>J^x=$ucGHayxGiaJDQC6_k*_j{K5m;I0F<@5l1ZbWy&D z{BmVprSp8*&U+VEXZ(Ii8xH}CGj>k8jDLj(+t-`kb|t>5`*RDTDcG?k11mejhT6My zz}ML-{0(fihS^tvERj6=J-W(yzwf=?Uz_pxUT`;PpG)5cZ2ofEL&t0_nN(9CHcTGx z^Nh%}(n$pcCxEZrW8nz=YFd>xJKz<;Tf|O-7aC*Ksp}pw4{+Lm#`0+Mkqd4)Cw%P(w;k}s6E-f*+=6J%KvSpCg8?k{CXjc%UQb7^JidxPejPp(*o6oE zjNgxV7MiQ@$lRBCr!4~=nqhr;2k%dJWi;LF@Q7|l&xb8PlSNmd7=DJ2yiWJJHKM=y|cl@(lASUAD*@?d83c z)#dE>U7HzOCr|G1JiW|QSOARnV238x`=08hOo`!p$~01*^8GZltq|BEhWeOkY}pyX zZte93+633WMDdv&9Gr9Ku&#B@Bgf}_ZMIVL?5m8mjIZEau6VZfRm!WP_lWF$I)$iz=XUTKdM&FnG1oPTZ zyYOCeN1&k;{wsw4R>4OO{~2Q>>YnDEN*IhMO0^mD6PHO0c${vmw1{VSq3 zwxdV#ylP6=BYpO*t*4#vH0~$iBjdhuMyS2Sqo&}KTbkoj)yR$V9z#tjG|aWlz#-$M z>Dl(9h&;~#r`wZ4vAyshp5YvTTE zCsFq5_dNC)lQNNbe9v6!3CKP6hL60WLrQYha$ohOD_UnA+8HoXPT~75H+h##JzLV2 zG>EJX(6;2yBQ0=u=-8IDk_JC((WTO+rTdP4kozanJU67$hpqI%2mGRs(gpr6t@}(F zZA<$%P}jTp_0kvVM=9_up)UegijjPOz)048N~S&OQ>P8fTE@20PV3<+{bY@8?d&(= z<#XT>;M!i77SX=zfZeAh^r^&{aDS;W{(fk(uk*Ed`2q0d^lzyy)6kGjI}PCcb{l6C zfj9lK$8T5;?gXw9a3}DWa8G|V?nHir+nr z453E3DINl$Pdc$8#>|ZFl>NfPh z$^0U3yqY4iVL$o9-!F;@ZB=Yai>_LUZWMclv`*R339U z`=+jpfSCM$rp&kbJz6%qp@nj_#o&^@w@^;*XK>#;Db(J=Pw=t}dh1Q)8JkC*>v&$9 zs3z57Tb&#rE(thljnuW>(6IEQQ_3Q{rLLcup*uzXr$B2F`X=Mivjkr(b;+2B9-Of_ zui<^*LHZ|k2@a&5CXa9JDX%Yhk~ksBC%X0ZnW5P5SXyf>Q{=D6T}R%ET_|>K*y8On zS=0EYE3Jq7*G92(o$^lEACT|&{H*qe`^BC0v0coG>JrqR-UKxTd8lz@2yIQ_9zC-Q z+?#%EM0s!cw4N~~Z3?(TSNa%(UhrjJf=_jSUW3YHos2dmPIEjz6MY#m{0n@f=Ns}< zdm`wy4By}!OVg&%rT8+1CP&&Kj(+m198}E^p3-SYv99mvR;T}|lHNR&-hs?O2W&Ns z_u?Nl`$EvbyQeUJ&^F9aeaKpwQ|@ujQy7&e&ApS`5ik>`#qD?Q2KllKa`Qk^LPTj^t z>=W+Kqqm*>GJkc-JON&{Jxe+Io6o!>J$$EXKL_v1nyWbo->`PH%_D6HkDto6>n^fv zBE};qa5%or3-q_kpF#aw)&BXGO|!}>FJ%SqYN~3_NlOg34w z$fP}BeJraeF`CUBjd{cJ);EuLR+MEwENym@mv)vPs+!O~k2$vBL*O5|Mk)QU>_%%2 zDKzl}`U|}5{S@=0PETDKW7D3?J$Ou)Ihr#El`%g8J;@b*ZS1)#^nKxvUx3Gty2@r! zPUd(*$CCFcT_!X5l5J1B?N(|34D-h8UFAJi+uN2=hm`*r&tde7)K`LjtxZ>22SN9; zo)LVK_kX0GPrn)eVR&+=UFL~7iPP?=2QDes)e$&cKwYv{T_rX$xV_RC7fl)X;P$kv z(6&g;+Wzsrx}&YR;~x%V>&|$gqu@rvJX~qlRhX#mz|JpUnPAz`l3(%$&xH!wh5_!wGL|H6+j)^*IUTE{=T^Zn#47QWHrm>v8eaO9{=9fwsx zdF%<;D665F{t7O}aX*2d_77zxt_WlQm~rnU-=%5=V^kfao)Y=hM|S>MnGG|kU-(ki zFIck=UM2M>SaW)4ds{B=_j%0Iw<2d8T$@vqR`kHXgU`99)~gdjvOcLYKRctYeF!Je z5;zHVhYFI7i3`Sr#V{M3e)pz5yE8E1*`4@M4*QKv#_YhDdVb)p9}{P9Ft_qxi+YK_ zC%((8qG!*>cTDit9UYGy5nuQ2!@@(dj`$jLGZ_nP(x5dSliNyxxpGFRbsA$RxWJAJ z;tMz&94KutYpwB~$9QKk-kCDqcW&taC_eKoGp0S9%ldG))JYn_V{P}7R!Ul-*Vk7h zwioiqtWS)FSl1W1%-a3YlfdUuo65RpD($;ajFB}4lNp04!Cz2cMMD1%d$1GZ*i5O| z4!z{PvMA7SifamWoR>K@GH<+*7=4hn9`QpJ!+#|PG{?G-%%8E>we41tNE&NI`{9En zi7F~~z6m`XI@Ggh3HAlHTeQ~5?vr=>vEO=VqlEq|>~q@>wJkm_6#X_hjjg>7JTC^{ z#o)b&`K)Dcm0Y4Sd;{J|LF#=GJgkJ)0xI>e2~5b`Xb}EuGK{`IZN7h}z|TDJ=%26) zBC|ppALYHkw>GO`=RRY6pTzoC#A=UWb7V@H-p!Gn(Be_?pJ5m6iLmx1uu2(~S+{eg zL0lqbL|1(OO^Mw{aoX2KS6K1hXIA`VFrG^GYdLx<1004=+^Bie3|aoSoHSKk2^|C; zk4$52>S*}HgmwkL&bmT1P9eWKKaRa1bw@wMvw8k{@pbPFli$f(!Mka^bMh^=^FeQW zDJOA%*l_CQjC%1osjUlzwkR{1-+Jm1IxNuo!P1u%2UPS&@3Puzee;9c+a`y$9jglT z_uN_8Uz$7Z;n~nu*atp*>U0TXT!U`jORU$kti!BZZA7u3m+u*f&!=sz?}ppUR$QCF zV*-!(%92yCi{M#no;Tc|@WDLQSQOAUjn=bb2MNrRDc||(^|6YoaDO3r_!h-v7KH|u$=MPm^-Am=W#FNCvwG#>$H8WZ^rk8S*L7yGoBxjEAqO^RqhP>rg^c7 z=F-32%ttmeo~wCpdRcek-9CJhtnCHG_7c1MLqTgjD6t2iLB~ER&}FyMDLfnU`XJ;1N*}V4S6Qkl}X%Z1wO|*@)hziTsx0@@L67HBvc=Omo#5|peW|6sodx{GLpr= zbP^iqeV3}40o})Es+#Vl&?om_1P_dZ#5L6@@(zsy_MvSf5AUx>#|-bmZt&xuW$j+m zgwJcOTh?J0TxX@}btuQiyby20>zQlU^JC9YJ=cs;kHoXO^{430S!d9h2h)#8Oy@c1 z@T|}wKAnDVqNc}hG9C`yRM=xv2wut=^ZEFdy1fZ);!h_&r|~zQ+E?P+jVHg6jA#0o zv9X7B|9Gt`=vku*dUxYfr@eD4R4eoz?fIxDCNZVG@r2g+TGbvunA9I%Jgz_PHEQD9 zd0ycuh~G$_6`t6u_?yn0Ol*xmks$LFz0Ug(I`JchS^yk-*Rf_VzW*E}vu_u=@Cl=T zVbg(meXF^@1Xw@nReLg-->rjgB@RO9*2y1YF21iSu&8TAaqOAPvEfgK3ZzZsLH;S$ z07_aHxBF@?OD}EpiXSHkuA*J9#CHtWi-5n>cf=7FMDr-JuLQgLivf9)}3 z(cW6m#M4{I7x5IwYCUEjY2_j##D^pD>H+kC_$)S9^r6@P>L|a6K0cJ>iEa0IV$g_Q z8=ps-(3#9#-1=&CIQxge`J=JmJbTYY!MS=2ILD6yr|&J`B-X83d=)EGi8P(E>`w91 ztjxE3vH|>Zz6Xuvr!JK>_2jB9))T}=6?{1|)bRsIJt3KAQjgSEaX%J(j}0Js;OR+5wNqzmH2pV8W|OC@T%eF zDsT(l9k>PW%WS+yxF3mkky|Zqf%ifGnQK4EtJucJiR}|Pv=G{s{Y&VovJV006s?~a zSJsBb4h&#tMbLjO*d+L;WvzYBF7Cx=aOu0X&tPt|z>Cjbe0f_uO8fG@%GF0*_#Wog z@gAStB=!ufosACEzPG_MFr57Xu6f#YSyQs)?^v+j2COk`w~L1N{c1)1RjRRYreCk; z{-yB7hZ0~e zo81$lzPwOtWt(cv;QdK-$tvc670g%6668mciutY!#VV6k>=BtmKu@cRRrCq& zE4dF~XSFDEp=sn?gWswwfW1{kyP`j}A8(l7`KOj0EBL^sT>mn*)8h0a0&AGMGFc~) zIoa14`*2bymW9sgBA-F}A#CHSZxywQ%_@1XB(0MD-%Gi&)`E|YnEaX8{BdH9mx^7Q zfL)r{e~Px^2USgc9cjmmf_Nde>0(c;=Xy`9?+I^fe0xIs%gVA%yA~J6ity|7tihHf zPm9=+-r=^S<%7!#J`Rl9u3VfRT|z(3G5(gXWhnkx)|#~4ZufW582zmnrN0mUHT~U8 zKmYx$`+V3K>T|+H_IbUl&uOFdIUw;XcQYQUqd>-E8GbHkEWeky;U3lm3t4Xz-Z3xf zSR`p-e8njV%rBU`hV8sBO~+ol6y23&EH5cGeo{+zbIw>RiYz}ax0@L@lgkq%QQwuLDe8{NoppNeVXDaYW zdgXKBjji$Qg@bvz4eggsHR%U2=Y>3{OpNSop^vwr>wTK;Itr@LQ!TV9>!9CduJ9s# z+hVt^_#0YB8}fT>hjzu+xgFj39^zqz2e!jw8;~)z$m3${)(Cr?x))oq()b^bOvJy0 zUTv?VEO^pz6Z%x`?5UIC) z^p!?+54ersZ}ioxBeSR8eeC{p6}_#p>PfMM@tc+rQ{V1OOG^pzZfWKEC)ZMMZ7#8P zj8W~S#9ngsrKpL4((fz^_)LA?gviWyGY>S8dtp<}-$Pt`r@fB#S&4B+N4wWXOrC4+ zNy-b~GcK>zV-(bu83prcU+Q@Q{=S;~rdIk0tgDV%@!p?6t^`SE?_;dT%RbY@(6*qF z+^{rPMc1aQ*sb*|pS*Q}YX3QN?(j9CcH$M5R`KjJF1x1k8r2@4Z=y$P-=o^6+4Vz< z<*QD>$JjSx)f=W>u`$Aw6MH=T9%4A~-B$A4M>&D{AL+Z;^m1R6VB>*vM`Y}L@O@>H zQ6TquXX5i^d}M4!j%W92{L+jYdrq^z`{cju|IKrKe;Vmm3qv1a^rF+jt4a=d)x zxbCuP#?4!;PqhE!=rb=s9*+OhvT?PoGJ<}dlD#H2pWe&8@F~9J3+Sgg?Lt}e_vB+< zHY96O`WLRfkND*`n##h^gOB+{A@ZgZ9t$IDl94A{kTuIHE48di9h5bxns$~UYi>o> zG$Ct3&`cAuCc?EeS!B(3hshe&<~7}zoE!9Zbn+55lF&)*2zj#M9i|hh|DB+dy%s{wQPc%z1Xqvc+P&-g~fMrHTHvX={2&xYTaLUjc@Q? zT|>;4oj&~bE-E00M`y~Dc+jFmviEa{E`Ce#3+cV5Jk&9(nz%BZ> z0zEa-Zz1X8w`fH-uj2k?=9sJ-%xxCghfYV&PO1!AJ`2%lVeZAY9XZc*!yzz;%~F9( z4MWemjS>D5r`7&?W(uY3j19Mty&cM9&xr&WpV^X@< zi}aqigsJ;(m&F`37U?KT3IH)-F21>->U<*2YYHoXtNDV%EPcnRh@u}JEag}s#VU8&lC zhz?WO%jk^E!UCgu6?V1c38ze1=wl8gc}}?6`zO1-a=|iV?84@}(- z&bO0%zb0RVa>uv|Zi&s(@an!&-rd(NycfEy@hkryA3yYnoBvu|{P#tB{Gj1s{1OnJN}1Z{AUsy z-~2ZG*FDI8=rxD`;0uTUBo40>n!J{)!+&De3jZyXtL8uUNDT5H^^D1XymRy4q#^#B zMP25(CiW!S_PNc2CGeoh-j9(yDCcBe3=ckI^Wf17co0||9<=-WRy=qC|GmZdox6zf z+s2qV^7=#nJAPxz(06+LM#f9&xhJ|fInh|Y^7qL74E%c;YGUB;+Me`rZlB{va{K~& znD>aT5FY{SMUA=k{il*tqnte@=?{}G{v7f3_>4=mkEaNJv0^MU+ETEKWnG|>_W_Aj z#cvoerd|`q7ep*wnZ)u)jE%wk_bm5PPWCtZcnlqkiMx`vrqQn0f+cC#I-a6} z&Qvx3R_g7+$I1M>Mq&<$k1L2wN?3t^EI&dFtF+g`*;Aq$ZzX;>%zXm)kwinUb(x&u zK>32%l)VkyoWg(HBK~9aqpT~7-ip|8Uj=NUx5jhTdBCIO$N!al12$3{d!T!P#Y_VB z%DhGURvFcGl;4+VRGSmnQ_j7aQdib{y^6~FwK6AI5Mr-EN-$i;-lxRN?qII9G~dWt zx}Usjm_xDWJ!k-<_Q%9Hn?r0|m;GtdPsjem#@nlHO(QEs>|E*dEybM4sOuqS4cMff zE3vEec%*q(NcjM9*Z2qK54H#VlJCX-_zs5_{uSIy-2q~3^jK2{dpCcuj1A*)%7{J} zJc(U4GX9RSjo*uIC(ce^<=Od3`o;d($D_-;^G~qLpC9F&lh55g*_G3_lP+maUgtW6 zG?O148hq!p&)jJ+jeRxx@9p?5!nrEG^s)KwS$N9fyU!wDb7@-WKLRf~eD_n*--_?% zz`O4h-(73ZZ96%8LinyE<^L_dNptc#S2rIyX-@mXM^2i3zMaEQ0=G-=@}IVOxLAvE{O? zFQNaIOFs5rB!39m-zvHb7({mkYJwY^Y~9r~Qg@}OsJve?sJoK2?y7wo-L?7rU#Yu* zO?1+~UnI|cn)V#swGH`oF}mw!%D8pcEzsM@b$Oxt&CsgQy%VfkSJ5RnEG(Z}__ThWeHL=ZIC`gO7I)*VXS2wTs`hf>@;>``gxEp<=Bb*7byj z#b!r_i$6N=ZexY`+S)jCtAumz!sILE8X)F{_4N6YCi~pP|5{l#sTcl5+@nNX;iSsYCU`71pfgkca4q#*lUKY zxZLnnRvfW!L*jCYNvI@$AhDRe3F>q}_J%SpV~zdo^()_4MSU-4r~%sEo8YQ5f!O3- zqn+C*1Px-nXh@# z0}tLJJXLH&zek*!pE|URCa!8cdED~gO5}l#of=Vpxc>N}2(f^cY#)*#qDS3w>Y^rZ@2$oDUT z9|N|PbJ%k{fwQ9~;y)>E8;nO;e?Ube#3n9a4&-C*6lN?%-uZ}2t0XQh58Td2j%z=@ zoi@LI<)V4OEoB8yQvM@$d24(qKLT%z(Z(#YJXFb^8m`S3da_;NAlK0hu>a_94~(gFNK1#OR;%@?8StzMR3J zX$$=%^#qW)Mf4>?9?@?gS2HbL%8K1^e1?2Oa!T-oSH3@y(FXmO%elGt zK{G=C+y{xNlQXE>eV2|~(JMa5GV45`F#1Ab?+W)@`+(#*8N1R)JZdF6107r-d3m1X z*e3$pz3D@11|jYhG$eFC6qj$=kdJSQKK@PqUj63d-yF98+qJJ?EE=l(Um6;W+k|#6 ziiX&;URDJi)r>(yH;qC=HE%&fGhHySq}3b?mqKk`&$rsO&3>cc&*J~;b?Uwq}yFZS}+-}_?k zNIPEkG2TB4>c0KJ{4oI{HwLy;z6+&K|qD^Eo?qJA9eOScon_AIbTnds{i9 zDX{AnX)tn;^N@>%A3Zh_ z{y(3#;BUD|_)CC|GcAIX$LNE^NwSBy`WM7 zT4T~3;iT<5`L0T|$;evUz#g9m#^|%?Jtt1Z%(V7lne4-AVQ+IMNwU zp?o=oZ|L}dp^9@#I*oBrv!<%QlJiPZIZxus+|-9<-Q~N6FB*BFqo5N#?vx#?%xt^N zcPJC)9G@Qii&wa4u6v@zH&U(qXgf(06@Y%^j2PLc z}k2EwLXtt>l0bw_;;i}@s(bKe@)tV&KE4=%t@hd(~f-;+e6w| zO`cW2_V(+FR$F50Ic-ThoR`ulV!Q+UDJT72!}_T7V-w|^e!Otv!hQ_5Pls&n zFk{Wy+y-&O7ABYP}|UQjs$j-e6uJFU5O37n7*)gQ18*4L*HdQx;R_H zJr)so%C*L;V;f8T#5UUd8%3vR`-wGQ;nUA^b^5>ez=8%jThd_cv+Q^8)VM!y<4fk_ zBkeMg4_Y7T^Z$n9it!%Am3zF$!qIEQ|2R0h4LQ>dew-M=IPv2n`+BkCy~qW>`)r!Q zadz#yqF-iw$gKrbzspoUi0ZZtXz-<#6^= z*4!OCWl!i=y5c*YqI`+SG$V_%kyT7Tiwu-!WT1Yg&Io7v?DJ&z)zOBgUu*}7UyycM zJ!VQJ&)P1&$o-@5R6ibht@hY0?tUcxE&JixFYG$kDaIKj^VnZ0ePVvd*(IK!>~G$V zy|Q6~wa09pSH=1dENa*QzGPoq+%u)G4*r}5Uv@GEU6VT&jpQ{+mpI})&JWqo{U11A zL1J)sVcYp>uY&qNLH)>TYwsL;4)#kNq?B{TW<=myr>;Z921{LCPROd~=s z_Fih?-JLd!xy02w&tdX}@x$Fjeb%14{Vk)N?=<>(y_WB}A6#VsyX*sxfvfW_Tm@}h zWzZiv`|fi#t`?3n8w$PIeH}KwUPq3#&pqXmP(zqqwMK+@FcJrqu}i$;O%oZpNw^uEaD0~>`A@ebt1#t z+WlptwJTf2x*6*e%E|HQq5cEpA$<{X@!H7eRYE}^w&HgVFM*~7M*J;b{cTYFA& zJt+4{t$dR*dSbB=?Vf2wMfNBENxm7;IcP_X)$Y$+?bf~n?f&ki;q4BaFT40k&T^J- zrplQ>vY-7tv=if8px3-fZ41Y#J$u24*!j;SS>HJ*02l1}-&4-7iF3=5N#zd#?+e~( zeCsdN{=9dpoO#!F(wp7(2xpeb*;)SqEIFo{yC0o*KY6hY^&Zq+*h%;COsq}&4C>u% z*E4xUJ&9a~&ki2v+VzZu$L9o( zay}0DkTY`Jc%0#?SMYcl&m-_yk7dlbK?TdYU`xKb6IOkNJ zpUcFiXRah?-s(O8hd#4}I7E{n58y`(ObC*>PS7`076FTe1()PK~9;-vDZ?e z5AH?(IWWoG92ob8m|q|ZYI?v;kn4-kvYZ*8%yS>tUSdvbISa22*tX0GZS3QGg-XV! zk~YmNLmMNU-zepYeQGOVE}Cc8A?GmUQAZljQl>}Olcwv5=z6Sk86wbx)Dxy2fiLHB zg>O8$57=TMzLhF)I(Rw(ygnCxen!9O&rzAv7NKJ+cwa()dN{jL&hc=35JU3|i$2A+ zar9ONYrS9RTVCfV`wI0rGUHM1kAeFc)QvwUwgUSCJrFxf-4eHuXUT`QeC(KBp4q=r zBjbRxEK0mUHaw%xJz9V-q6iq}td*`)d@GkaI%w-R)E}X38K3ReHPg~nliThD_6p{$ z(kAvuOwNfBIKK*<(71K>m+LGAIY*Z7fik{zM-6_0lZXF{7`Vap9;@HtC)-S1hRCdW zoJpU_FXEB!$z`?)>;e0`aRPfKwp149HuZ9jp7f2g_H~{TJ5LGc3++pa^vU-CD#&YY z+^{j{oW+;cc{Z7CJ6ZQ(O!6zg6zcyII0=)_hyCvdM>Z`Ul`$I0AM%Y;>C;TEQOze8 zo=X`21K;iQvW`t(M9y#~P}^DXTJIXeYq=NxA)Z^-9A)t^&J1g_a_WockCJZXrFT&T}O;a zC2XZZ$W^vm>Nv@;YHe-@qdy*AhPp@a^Er{$bfv7LW|opNH0Wkbrie-@tV*=_k9 zPjPOE``kwN_YkCh@y*5KO_84X@rd}UJ~B~LLEaTmM3jq{3UUmn_6LTo?| zG*SwE5No-7S^bu2mE22OnEN_n_3NMm=rF$+IbF;*XWeqGNAx~tC57SnF6w`p^AsF8 z)WAK*MyES6?l}Dr+mkWic*T+519YD|WqmhGWSyMTY+{z22@{XzU}%&vka+ z#7^(Vo)rK#?&Q5S#&R}wR@+a2B|zR5eE!+{uZT9|ugp;i)y2?d>LsCL zJ$&QTS99yeEfR~m1)pZ+t&7B`mWdu0y69$nqR@`ipLwlX(eXCreRg@Dt9-p(-beX5 zzT+-Awat7Z)+w0)w40D}+==eYQwIesyfXio* zHDd2xrtvCg3XlCwk|!vKpJtos`|ZwJui3W+oXLEo8D0?ii5xHMVm|cJ@8dh>4aA4# zZNW$9*eZ^lSwXqV8P<8fKDDVVrFQzmrzqc>q1sRVv(fq*b&B2BkgWCyoKE=^ZKtMG z`I%3B9(xa&m47~2&PQF?S4^FJuQs@H@j_HMXRjawPTUhZwh5VneSjWJZi9FCy!apS z9Wt&bn8yj+9l)Fe4g?qf!G3+RY`Lk=F3b6A^- z`DPyTyi^-sl9GmYS zX}cSml6C06!(Q;?Uk_nBHy-dGHnF{KKIlK(o57hgdt@H;jQ@6o|4?u@r8mAq z^ukGK44fl_<@*7X+pa`Dh+LLDS>zEpEN3o%IMb4+qxnxoXNbJ|*U6TyS~p(p5xQAw zc%v(gls<|1>HyY2V$qYF=exEJzTtaueb~O`@YB(rRJA7y|I%Kr`zEW?`^n3iSj)LpQ^xBw&*k(h{o|y69vb>wl8R;Wy`82Rocjg6m+n{5*+rhH$Xm`VjOA$^ zoYJ>T+Ty!AoOLqgbI`WvuukYU#P5*L`d(BW^QE!whzZu+zxvu9Yu_7g0%lQePM7TEco67y6Bv*U(y>8FG*X`N&(%vrG zZ<$nAwuhgO@||3t;U_fMLY;f~Nq0hAu^A(1D5_M)gZ#e4@5}sHm+9EXZ#%y|9@VjzA7rn3r=rwPwiYOXTI9srqksH#tojI>R!i}cO&Z% z8kTzIQIDe|MczdQ@nU`VOX#~oe_x4jT)Mt1B6TJMR|@mWQedj&Y*F*dLpx0)`6&xl z3zlL2Ay-_A_+(@7Ja$n`WKn>tz~t!l&mn`4F;9>){#i#Vi{Pu)-=2oPG~suFS=L4NftPdOg}tCl#@Jy%RlE1;ZNEehI8^bICQrm`Ixt63kjJ4pz z!H4!aj&c^M`*P?<9#E01pHUgWu@b3`W$eb04ho;_%L1~;&eqJ{4~NL)fM_@C+<(ksuf zzf|VfD;STxe*A6Nk@e8uCckyo^|zQqMR=wh-#yjmi#$E=alQcy4#MEDgmKu;`{y@v zc46FTJ&8T(%z*_)(Lb+#v8Z(haEm??dsX;`n8Us2Y1^6SNWVTozhoYMHLz?NKe<8b zl=>`PmeDqqvgi!`T~PVHEPVU)`c@T_vL_zCDY{(*zTz6CloE|woa>d44Vh*qHUniJUzjD9WQ%tH1iGv`$K>v?`g`v$Q2 z@ox;D-*gFp`iv~nX)-4f+^8tu(6|p$?@Uk44(Q zf2jRT>U>~~wr?J-?FVW5{-L&iXt#|$0}R949>acW6Zv=w+7p^GMc(3<$xGa_6P)Ci zIQu=gmLSvETYnV$I9g5pf}dlI`>XVI3w3OP7Nnj^cR6g)Z1NXUX9qGOSC4yk+bYV- zxQk6``LVLwe#aiJ3VhYSMqbIdiGJElzO$^uu;)bkgU-@c3uD!V{Qm;)Wc=~}VpkI@ z#dnGt;;F}WdP=Kjkauo8Ucs~A?sBdU9&@?>OYrzb zjmP1B{vMGdTlm(boOdcR1lk!#J4yV;k{Qe4#VlmT24sdsJ6UZA zpi|HDjE`G(6j6Rib}*m7PLaO7L>*yh$3%AUtj}%``TIxGc}^eA&*+vL^yM)#N?#Of z2l(VFpl#NXbidp*dW`zqxcwE+S_iu9y$kAn@a^mU>4Gx>)H;u@D&xpRd;W$Wk!r;l&f=X>lv_Uy@1L(%$ZlL!!16x&tvqx%6H0yZ$1Y-?11L?*x%yr8SyP{vHLjBzR$o0l{QDp zr;&PCWQMFA)_O8Ey?uqcH&FMlk%!iIzODI|%%SSAbtIqEE%Yt*yJL|Qe-_@XdB3d5 zOAM0C_5Jv8*KnSW@B{OfMrfh^UY_0iqpb47`CEAM9QbcJaa}=AlA51KyD|pmF8LN$ zQ$+j|5$KBf5-~=6V~0^-pi4AsUg>^RdW$XbKd{EaEZ05D{tq_@W zI^Pkt?CPKB7!bxVc;btmyw&JAY1=gH@08IW`OauFGRV*b_C+MHhyp&PQwRB!1FDmx5 zt~b}ptLubjv9=30Fp(Q96{$dE0nxh%ksJ!zVc z9lS<_UyFulM{vpNy+u>?Lv*dv_gX$g2N(7@Kc;dMqr?1BMMKX+^4^&bd)xQ`n3l(J z{G0oPhiNmj{<7#9Wb>-8n|i9i_&WX|+jeu8jFQc$ItWEP7&Xx`2PGi@um+B6sT2lNmFU zZ>Y&UPrmPAws>{ys>wU%)muwW``WvRArRa<-_CRTr8X34+PC^++4dr{pwaR-so&ul zD%5S6v>`Z8K9U$MA?74B;EUjM(eWnCL3A6##uFLgJiFzUtfxr~sr|ja_6EjN#)We# z^nAaL@%XNlMx8_ZkOl6ys;9=Tr^Z#!&N1t`a33V=H*G!8OB#B34nA6VDWb7@U$<4&#`_x-{8&o zPI5xs(VL7dJNJ1q`ewq*9_EkMn(yScE1*fS85q-}__!O(vDr3ohPb?!eBy(-)Rjk( zCzCkAFOAP=5Ex&D2Ob=s#gb>;(LZ~~x3w7K2kkI{s|P!*6WJ}_sD1HX)lXcC_Qgxt z9(4Q``jw22bqR7-=trgW4R|UU&o2SPO>=%}jVHcVVt*bl=edMfvlw&P^WeW9 z+&+xFYn-8uNbIGovqh*s$C%p3{Gi-NU0*|#k20f9GR?BVN5`<(6wsAAc*h zob-29Qk3&_cld4m48dX1(EV==f9ICp(pCoj5Sdksy(`xru*YAnQ{Ykk%sGN`{mH;k zJ#P8y=usJ;g5&WWa=xxxKU#9mf(4uGv8p$(i;2t?e`yJFx7C)r0c^<%-kk-eNby9* z(CiaB=^uyP$aDD31dR(V|K0O!*L+y&uXt*4tdBCaPkCcJZ>{*{;@BVM`Iq){TPSu? zp4<3dsJ#DPD0W<)zc-}YN9$h%zEMSaQ9~s}XMv-U{dDjk@rmFyzf;zQ&RriXK~@d0 zb}Hi|c8j~7#iP{Y9-ryNzh`icEO73z=S+_|b0*KRafH2#0$FNN7}#@%#}O9Hp`H?Z{kn&GLfqSOP4lFiKJTGV@Xj7- z>p|{21rK>e?Ip@wP{G=L1$dYbEp@1g3;leXwS#n1Jyyp0!`fEHTks_Hk(U0twt+>7rJ9F#YG&zielNtt}gNd6w)32YmHXJ0YvQOIY$;nWr> zw!inodRUmUkpqe_Q0V0z&m?{J_9yN1e=wHob;mb{(j$LR%S$OEwi0FYOIX9e2FZMo zHXCUB6z7ieEt8o0tWufJ$@-T`UTpj$dx2fxdkG(CgmO6sahl}$9{3YHR&l)*JW1Q+ zkFK}-W6~F?N6Jh4H(_^6j7GBW*VC5n%9{R8^^3KmxgqSy9QMc(_gsG5lf3pIeU@vo zvGmSL?zhkvS+{<6M%Hv6_d*v7jqG45@MhZZ{wL!Vp}%4Jimb_(^+p{-KzVFc-BdYXv z4&4)sFb1qqlx5?84xukv;I&%#>`7=Y{5`e2Rlc8K_^QND0@X-pzM&YTKq-c{WX5{%P{m9++Nz zQr@4MZkL_De3hi{oK-zj(htnC(s#~U{&AiDu4-bzNPm}|{;uWl1^M%;cPC4Fo}Hez z{6?KVyZR)tCbb7<+v&4~pUFR`dZtdFW2etqzF4QvtzN_V&qa-r4Q;)3d#l3rC{r56`0pRLp1TfGMRzqabV zcKUmlOI%9rrfaKr6B||AcCD4Z>DuLDYx&Gg8ixn5Crf;CZ?4@0j!n|T9&_nr$@7Ml zXSdAx2dq3Y4kqami(|g|b;)bR+KLQB_L!c{WwPI*^rSULIzQtj-|!MyBQil^S;9$H z>}BPB#`0F`EJRj{JdixHo)_MvmP=ZA6Ef=eYPs+N>*v)XC!d9ebUY38CTCn?Yu6+b zn~a|^7G7nYi`gNtkXOn`{u0iT5c*<1f&AdiCnIHT1$ov$>q7Iy;x>w$Bwus|@1>mN z_d$!#rf<=5@*{(C@>%5MBHFNMx-6CFny^Y0^Dc*cIr4`@2gSSvPlJ2s=x=?1R9we_6L`-Cq>>bWhpo|F29 z>p3~!XG-u(*m91Z+f98Xww~LFo|FCTj-LDK7<%r)`p4FDqvX|k?qle=^WN++_1wsE zqMygob3M!n)N@0A-@$cb*LRZjnh1JN_8Xk{dV><1wUf0}?2|ni|5+5v;2L2rV#Ui@ zbLi)-J&nN=_&=QZc(LJSJ~PrU(230~^Wi>V2|vdinEAF7d$wXAzIU{`{J&%F#ouV_ z-}vvcf#>OzqB&8Cms)mr=vd_R-N$^DYoE+fzO`Zt68AJ|6`xEp& z19K~La`bwJq1u0koh12|xbr=3=c`ju$)o3d_L`+L&w0Nqzq0FP4tc^4V!O;`M7xyq` z=Kc?`f81O(k6Ix3_!Vb*5O1<= z*gN>>7p`_X?6zet2`vRJTFMAAuhV`vsmIHAC1srtxH9+H`6cejf%Ws;E7}pC-Tl-j z{P0Wr>d*u2@0E2hXI`9d;UZn;4Qh(DPtc(aDL?vt01GFtLANEfq3wsDZ5dk`XBl4^ zKiRV>_{y7^^6-1Jh(l+t5Fwr>C(oJ_27ukvHK?dGJTwp3hXNl zvnoWprxx?QWcnwzPz&vbX~&}Fl!t@8svv_ld&u*D*n9W*Dz7U4|9Q?Ka85#i+#$40 z0@9uwda+!SI%7`2>Iur`Wa#QJ`Q(SCHnDr%-|Ni}%3neG1ViQRBA@!N|J{0JXFmjtmY*N4PUG81 zJM?F(_0FYXYzTs*;2ZWjeNmYjPj;oj`?=tK-SYNP-uolRzOiZ|eeB!Mw_++e^F1|b zzL5>-e-r(`FB>=C_%oUL4)7FQHMZipQ^(AAoVY63o~kvzMxO1o8^4M;j+|jrnSSOk zNSO-e-TePS{B`-i_GK3*rtZ+(2hLcfnHmfA)J%XAMG2gkCY+#6^(7f6^nU^;Hm(Ow z!il-BCF8_Y!(%Uj6Q&F?0gP`~;l=`Vm+-_(;Krr-furBV?t&~}8$a#Wy^}i5IKC*0 z;fqyk8KchniB~L!S7gI0a%DH&v|&)|!IN`l@2Gfz^WFH$`kp9k!Jq1QEi_+i4K6*) zd~5!Wv4%%%YHyP7)vNBc{P(VNzi)|vtQ?!V=AWU%VUo2yIyf%QCaG%o+XMW3V| zm20P58fBCRnp7ky){*Oy;?OlucB7Trr8`wIP8@0nS7iuH>a z2KbB4;vC6L<7Zmi$9=w}wd1$QpHIQ#)mDL(RmaKURmXs()`wbRlm%HI zpo1!3Mr%I)C&Aitj<3h1=J?N%2jp|Fb$ zpD63d3*762{Hd}Dc>x(dD|nuIuM@_@-kE!HyN|L#}!r z`RS(5hEDV`ChZ#pv#%tzlZl?_&Z1G6J+kxkkEY$ve-yIb~_vz4odCXs{VvTXcOiU-DNTb_HbH z4q(@#`$Y6Si{0r7-r18K_#5hqCh%ni?>^oir@q8mC|hapDbmAZdt+1l!xZ~So259pGhiDdgK!2O<8z?#(5b&@;i|) zOdZUtf36?C-Bp@8X>du@$S9Lzy|dZVB2&trNpeXceKzA-Zk1}@4#S_C$s5=;n%BrQ zYdKHA{3w=;%2|%z(ilF{gPrVbUTElVfq(y=WyOn9d}$fH%g4&piHzj7Z|an96*S}4 z886@rm}S+cX56%?8y#Ff@=~_#Pt$mWrv|Q!XRCj3Ni+DY{uTn8Q^?=ne6#$-NzT@* zF2UmC@Iv`KmD7HFd8kw|+uMN6OUMfS-n@mS+~?A=&gO1v@(-}alu>32vbT7J`ke|cRDf3jWT`N+ zRK(6R>*ONVNyRMdqaW(;K5+DDc(9qLB;H(*?eypCz}Dr9_a)%m22O~c4F968g8g>A z)*b#gI{Z(OPv0~r@F@Ak7#^j)D0HN<+4qn~Jmm99^@n)pJG|=O-)0?8iW6qeSvm2X z%ozH-j*l8Lu<#}R5We1$iLS%H7C+}~{0RNl=c;np_qL{n>bHHj8G6qOUaz|g6a0Sv zkwq=q1Lhvymj5hx>hgQlpLck2OuT0nc+rTjr}jLB%pY-a9_?lR+C8DtcKA=Tg$?4( z=esT8I=aTloA2G`yE`&in@g#W08O!!|ypEWl(AdjWe?{{%V@GIbPH+_n4iVPm5PYa7uchI+?Ao#R8 z#X8f@d`3=cpTiw~C#}*Tb9Oh+SJ5-I$|s2LHFjgBWb_bE;bkGuz_2rB`Qd7>gFfsG zeW>;&(v?p*uv7Zi%dE^ha;+im@-uR_(_a39--3??$RS2QZ2EBd0`~2B`o4+$KH^=g zPmJ{`KX%$$_Gf{OcMj&yvYZ&0)1YO>**EC;@m^A1NU}fo(xNL>x<77ea9eql4tEJsgMNL{9m zWPA9ycpp0{8~379@ON!5u`l5;V?~d)5 zcAm;B&x`fpAM*NUPiz*liFA5eUkCB)l5g|V=rUT+eXc_X$C=G13-JRIz1CnS;&M z*uD0e(RAI18)A-3J@iZUc!1^jwnS6HH)NXw@oCvDe&`(k?r!xtjc=z(!*8Q|)dhdI z>nlee_D7&e;ez_MkpA}1FK-u2)<8Ed>`cAPt6<|Rnhd<1bzJ2%r(O8eZw1D#k1TLD zXJad-&uZbE{gc5&Kc>?Ux6YTKWz9=1^CDj?`DiJ>kAC}@qcl71$@z(L4&Gfl4ui#C zGW`j*p6k=a|MuGD=_bC+@)=gF5k0~upkvL=LY)iIc#`~!rQ_O3`_k(Qp3vURWcn;9 z^ghEK)Lo{%B)(zV+eI8^wRhMbQ(N@8YGtA=WW|fxa@#0$c|bxxIx)UG`%`3@0eunGJYx!@FXLEMYq75J>P;%2VBWzWi|LA0#@2Uyc1f?=OS+ za>5V#ZS=L5;=u-ZM2wdd-8lVR$#Wo-V!)uyzV;MzsI-=R9?}nmR&Xjr4Imeceo-|6kJ=YvBV1 z*0#^Aq5nJjngAaTJ7dH?l9+?34n8oxISD*mG-eJQyvJr?U@YACf)C;a|3+-<@v?#D z|0rv8@bIiyH~1z$*l_uz*!%H6M&~@h8rAdCmVek@jP9utUtsNDb|vH@*ALS8-*f)S z)&Cn?B{Br{J(b1UuXS-TYxD-z{~BcRE_kh3-;p=l60�=7K@@+*KjCK2bkM{rnwW zv1H{#*p4jZp%l)xt>=H_t-a6k+s8h-`{W0WjmW}A)b`r@hWx)=KUl%qt9?~F{{MlT zM123n>8pIK-^yc=r{ovxd5AAuL;s?at&BF>aLX4WtFL1`;quWlEpEAQvq#f=!7mpM z?kDaIdxZ?$6|eqz>7VpJ#)gt~rdsfK_>OA>8sqOiwBtGMLBc*9VI7vevY4}<#H@5; zEz<8c?ax!JOv&cj+m)r{-_D-4+V8n#Nrbaklqu~;K2~}5siX0bxvLamXpzz_(vg`= zTps48TJ43k|3X(;fo)KGhsZR_vgh;je>K2 zpB3wdxyfQL0M6|V^!-!kozr|R``8;cpi|x{TOM_{F*hAN>EHg5xWc5V6d=Z)3p*HkId$w4y-NXgn zwa1F>WG&pmTC7-ljJ5Lt`hDT!+N&9%(&g-{;JGV!n%jm*%^d{YK>4Pe=`fuK@I5;UL0xXnzU7Iw4-mo=dR_Kk*RCITa}ZX zr+yjvAn9CfA>Ue=qvZXK+8e1;bd9_|@;`U?M!}&P;PE&*42>x*(8zd*iE5{%CXcJ( zUaMU&Om5R@$E8z?^Q8DBGPl3ue1&iZzVd+260Mr}5&O|qb{3#JU~YAni$g!`eN|?d zG8(I)p~RSwt1}Bei@*C!V*UIzd-55S@3IHc@eCCtohKTlGiOcghL+?9Et)EZrgGLe z@fri^*75H_U$WP9p`+Xf?_DL?(w$r26TsI`{b+i2_`y2h5djvQKUq+FAvM~O@Eh-6 z8VNRgt)jY)Ifq|0ogZiE&H1eN@Z7@hMqtv0Zg9XmE%=gmdXPAMiwZtq*LOp= zqFKe~>0)17@Q9;ZEO^waXMb5;kYU%epR6w6UdAr^RZxN64*T?faQ1h-=duN|<*oP3 zT44MUJ^8oqVxPO-lfPgA=~vP2BAy@P9PyRBFP!XKy3S`URDZWkvKGoF{ZG)u=p$Y)_|)LZyB!*(?c4>b zr=Pe_T3Z_?XWnj8ZoMaSf%YQ5r@a*$vyJ`#AN6kMEV!1o)u#s9)?Pqmw0^DkWH@zk z7FcrQdaGs$xMboCtoLM_Z^isyM!B{bt=rS>^p^ft@mED3HjHj~zjQ3vbv55n;)fa- zGv5zMr$Ks{m`6B68heEgJw`h3eehlRMVPfYNpBKG-(dHp$8KXDg@ZogdKMBtw>jU6 z1(;X05g^8{+lJzQ6rtN)L|-QAgQ?G+7TcYu??c2?ZUi0?&$I;)9uP-K2Lm zR>=p&>@%RjcW^I&1@Cwg_=V4WuyX*ty^$r(Oz#|}`?O#(-4lPWQ~b68y`gw-B;V?E z_#-iPlIFzeFMMyre`t)n)cG8D(?wYCEy)9%qm^GvxA>zyC8k*4@^4VQ?_y$o%dcW9 zF*9#~Z?kR$g@?z`y#?UUK5&CEW;U|^`?6eJ;#hgdJ^#eL1fA%Wjo;Fvl$XA|GpQc_ z&$hhA=C)UUOFHYm8TwHF+`f(Xzj6Dw0v)xHFTCDjWQ-VdJ9KI-c9AWddBQ&O1LlUl zW^YThyCbRHn|X&Xvu-+Pu14qCSvO?=_&+94y#Foltce4?(12v!TlhaB9(;Jz56MDjZqkx$7=pd> z&meykeRsQON-T|eOJ%+S8|#d3L13l#$M&E1}m7Fve&C7a3#E_&t$3 zp57^TdpUcmLdzPOOC1`U@=xV1Kk+noJa3o3cU=Bad~weKIdL?MT<^E`Kf^DI-$N9B zu#b1QO^4eEm+cSDAcuiJ^;y6oY0Jimo zk2V_KA0QSk^4fv*j4g`&1-W8lA>-3oi}2)&{b;YDZRoYM5Bf->KIV0i+Mnx(w{TYZ zOSFB+HB&`>| zsn}%6hEam-RzEO-NO%lG6_y0;1xfW zI8TEfdu$Bpe;>0RY@iQ!m>6nSsbpK|vPxstKH~+}B-!p?WPheuNs4i#c{&MwNI&Xh zj(XuI#_x{Uitcy>L(OqSw4KDK3gXxWULU^XIR5h|!wQ#V&9nHE zO?&NMSgTyW$>e?i_&74hC&LR_$F%1U-pD;Z+M{Sco^+Q&4QtcOr~ zH;Z~}R+w1q`)6{OgWkKrOW*P3Lpm1oPG8EY4q$X zW05}UK3}>Er8F`7W4tv5rY}Mk-vOiOuXadDc0|8MsE;9r!sV! zG`D}1?cPrDpumkzdM&n>ijDS0mGghzYo5sBL!V~tKeb0b65M69Q(0nbnPSzf#k z-;YfFfcWhj?6H&gwibUQ`V8vq#b?Ki8T!#Uk$x;mPYT?|@E6HJ$PxGLynk7z^pAzm z;IF|^^=&`(B9A?K82JOeXOH{_l@C64|L=vz_#oOFojv(2z(Zy9{b_VB#idw|2gwiPdjfn zPoE=C@;v>Xz32FOx|=*2Qx^Sm=jl$;lIQ7m{!gB#r?CU5%w)<;G*1)Fk>+PaU(eiF zP1nYJ)Z4B1n8)CsWPj>KuR)wU;MSPX<6%pC;B|1MkZ*#WD_)t8B z{X1LpQ=dVuzt+kaMz)MIj%$&-!wH$8pL?D|ygv%er2`KSZ8%YIq2SCK=svz9)cGQQ zyTe|Kn5~UfFR*8l4=;DYcd(B^_Eb!G`M2eCd`IgkvW@!l4eHu86`6)_Ke`4TMi%}b zS6ErBJ5|Bj*{dqc?Tj?bDlM35mENy*xvRbn84Nk9RDF=oQ@6*e%D>#oswkMfYRTnR z#$ZEZ&qmT$7r+0Hv$;RMk8#{h{x+x^7-oPXHL zSjUt2RQ0v=BW&lUDIREehP6^Yl^)`QY79kxdd~^@WA45%yyQ0a}88u;_ROu0oLd&>%(=kSJh>HZM&cO zP(6bEC(tDc2mJQTV?M9%7<#WW!CleqdPXSM_9*AGQ>@a}yQZJnL74$!AEePY|2^=< z^rPDqn;^B_zr#o0{J^Q1JPp|JL_e!z_8H}Ep6cXH&ZqX}Z?3%W@vnGY`J|&#ofG8? zC+b(Z2KpnuaVZ(z@in-#ugJ)GKy)4Mp7m94N-&ygWel(eq|&b%J9J^SJ&E%>ioa;H zfAe-Mzy5REwfAkr?k0LW554^on}>8uFML?{9$LXueBaFX0?y$L~E zk4b6qH^%SX-0$e_tMPNEACV)i`Tlv(7UL;+qIf`SgW_$#KZ57D?@?olG7od$5iY;@ z4LXGo{KA~I9COyjk#qX+E0Nyl{gr5@oCcchlKKwqjWow_0^)P<}X0T%)Z+743x zy34JSZcnJke|TX_!4&J!g}{2NCkvR*Y=LfHnRESunC*>j7kzw-J2|=MZ*dL$;xqKA z4H;NGq|NLdIHz?OJpnQU|97Sn=jM~v;F6cU>6M!%!+&FTeI5PqaUVn5J%Jtm3pFPq zsho|uCnf6>_f)2V@06k($gZDR%sbN#^QZG3x9C>)Wo~=#r7od5O~G+B=)h$N6GtG(FbR+^0X&pzmJV; z^iHua97Bg#=zXT(^8+hC{;`jJY=j=n`B)ccoY*RT;D!7(bT8qwl^`{%Y?ZQ7mpEU;| zGxo+R1dv4$ej6xb?1%8Re&$hWqxh6{Oy7l5l1a2yEd@q*iAO_Q8;%58o(G3?H+$5S zPu!O_f{)n=e9Z2E#$y4&7d+d>ySs)6&xk7^Jn4*j2A9OWzRF?hOto*`^z`m%{sv$Y zxkTS;@F#ZgJ*y*wx;LYXbouoQPrUV9ivC8=xw-n*@&3;VI~8D{w;Ds~cg`@f8Cna8ZDgS6!{w!vU0sOpA!=D?_ zJ@f*X-Sh=rU}+;dIakK)XAHtkAL;1x9xb?x-6i?f5=$vc9e&%Yx(2`bzhZ3v2Y%9T zUl)7WKdt3zbjVTg;xucc@G>*CUr~q0WXm$cRf@^MlOC z5$q+6#I*B{Ga;um%SGyI+!}n0v(|aKS4=!$ zJ#bQb_)o)+Y5bal*H)LeyJvqb{>(lp={|YM!Y?y+t;f>S3;@S--pRU?;lLg2t6aU~ zJ9(Gh5x$;X%{ig@{3h``G|92Uwq+9&1b-H-vtjxo9DAR4=F)#bPZUka!^S_Caj)UK zV1xXc{Zr&tKeD1?cq+Y-blG&G7uKIR?F|Gg8G8-qETY`eY6F+w(zjFaA?fS?4xC;^ z-uR67oR~_UIP$`k#*qtN z^iB=Fh8!-v<0<0tNf#_07e`+2CC=6Fv5#YG%0Bb}c3teJhrVjpH$rz z8CsH_b|-uzzQy4a1@MWJv}5!ewD}F_JU$m$2bsjkI^;9_;VOqeNPkcW&-d6lX;Jt? z6a1mv@v|`dge>ZRfpLK6Rnl2Gw5&U(vN~4NzF<7k*S8qwec1RN8ISYgNxn|fFP&Xw z<7?x>HsI*v5crZrP7(C6~`P3%;7Bt(=oE86QIk7B5-z~FK z2i!Q{WB2Kf4e{}x4L^t+IRKwBbp2T3|6Pn*c=+NU@Y^9CZcTzOYaT`a$vS{!y`FSN zzk{~5zl&fqQr_K(I-97IKE9G&enm_=ju78=B)-|ur}?(#idYBZkR6+`XH>|B?fTDf zr=QN{?_#cG*RK3)^t6sI(HPsd;2k%*lg&K?=x7>&x5fN#XWy@H>XT1*3*3(X4R?4| z@ISIH_d;8pwR0>~;`n2cuKNa+UvZi#?~FP5TuPF@SK}2Q_9gp2&GQ@oC&956+oJlM z_Scv2f1+L4;gjL&uGekAO!sJZ<5SVgxZXrocX@j!@2JBw{q(sUo-W(dYOS%{|D8%4 zGOb0jZ}BwxQR$9G^=*!9tMyayKot9zb?AV`s&(>J-cKd9^^HVZbNO~tqAh5`wB_0$ zzw?wMBU)cGHoe5Xn$8`yzdJenpklZ==b^puOx>#|TH9RpchC#8w)iJW?P*-XH_Kr`vkMK;^m`v#^Uq%fOy4}9LbVd!QXi&aUMLULu=t2#@kFOne=(`<|LOQg zv54iM@yxthN(~kTsQfZ@*vvccMM=JUz#RBH6Pr;v#9S#3#q-3v?C$8I%2kVk9|dNnQpY*0Anr4Lg5Gz9?CBS(B`ctexAisdEk*JH8J;uYs1-hUl^PD((S#BC*c~@00i0$?MnnbphG; zz<<0vN;_M52ahrh&r9&talVqHzNC^*@C6(Bjz6{dX&kxPSp&xU)t-iDJL%RKe@C~x zd%x_O#5(sG_)i2~hj_Ktf@0|KwmG5BHKgrj4fHXmHLMT#mDaZbWA+C1_=mBMV9&>g zSbdpjEs~GbPw0!=Zb3@H?M>{r)y@pskc?4dmXkhC;WB7^QP{A$7eIwPX%m$%!jX41?O3Pwm-GN?=d=)(LT-|3lqj! zVEgLV2zT7I7T;aLcI1EV#sII-BNP9SwJL(#vyQbmP*gUS&IXa-68qBEUHOGwn6{au$%qpy|(;? zhyIHCqUaZV?C0b&&)kj4|Mf)v5VROi`1de(XV7yYN44f_9<`U(GmZ~rgt}{|;XjWq zO#b}nVm2bru*DyH7rJ~`bWU9NO6cCF#pC_|2ZX!JBE9PssZ?# zpS!3U?3{s@w={2`MSrI9dxW)U-RDDtm(r1Q_P&K!Kr!yzh_!Nm!Y<^KIh5Ny6@ z#45ab$Kue%DaKet``}pzmni98$;FcWK2x`7@Bz-jsNOs~ucZl}%v|8DGgHu7&)w`< zb%$P?CwKJj2lAfd?gwH@>fHMNF3tl=GA=)2^mR~et9`A)uXKreptwm19ODd4F%k~=AXg!DqvYj=m* zWslb0u!i|*gvZ+0#2Tsh4c6qE#J=twv{B1gftXS=Ct6lMg*yA0`2H*VFEBCj; zclp2iEAUw9RpsyfPVCPi>eT#X85rkusK49b?Mj$w&+_e z>&IlZi+lj@ACm0gFQRSsjgqtFOEA%#)G;R)@OK)~%dGXb<3wt7Gu9801)oSmH{ z6!^mse644At*3NoN_6{m?C0ZC9Dhci{27r~i-3E4Z9-o3j+GbZ;P)tbRCupE7JFRU z=YGy{`DkA{gNeRr57YOAZEPGbqYH~K4-IK;(3TQoH;Ph8t4ahZkBy!+Y$~Km3&T zv9ZgabIkZpCB{F_ztSE5^%_5UM#eurU-J0JeKX_7C#`p(H#Qx;;W>1Q8hdZnm$wUV z3OW-uvq_4X#+exYm)z^~b(O|}wZ?oB-YMPHIm&Ci3z4Vdd&)~Ad>5@<?6sO%D9} zfS+hw@Y{Kwvj=lR?SAZ+^MTE@3!AH|G4)gTE6MWXZM3n4pJbIB)r)-qvyl9L6xapJaoF|Y>UQIla-G!19 z?3m_W_&UDdi%g$&Hp|3C=sCN}V|c~cRo?btc-`<^yL6uD zhOXJq4l%}92V-?~uZjD>DT}|yZgu1_x_JgiapGF(n38i zQO{O;QY<>}a9dQX%s{C&eV{-~tu|4RO^P54RICizKsc|x6gfRSvG z$@`0f`=&YP?RHKx=Ku?yo>t$bwMP01Vv-d6Vj4Uvy4|m_k!Eq z#2qktOrw7tvCjwPcOky~kJ$6uDUa^EQ}GNB(?$Te<6nUu9a`w~8U1s^H0ye;O=G?t zcF(VHk0X3gYYzL&>zU7ye3JLFSlce8lN67VUUJ0WE-8+Oc+a-mBp+pU2tR}mLGYms z_^0739RZhGmsx|Ynf6dI-&>DZgQ<4bvDRGn*tP3RikZhqu2s^G&a3%jlVTBYCC&C9 zOC@ilwzgyi-viuvqqC&RdKHU5L*L?q(Dw_Ei@q;Iw`FzIV7m{nULhmYb#d-7EIxz| z!NjElriRWrOX;Jp{dXp${15wG>A)VVwEx4L#bb?miG0D7P^tL5 z^6dtGEfs-8xzxH^%5j#j1U>cQkJ7$ukH6i+95arSlr7?a$yu|AH~4XVCw)z3`Oph{ zCdJUHbxz`c`C@x`Dqr*E?@IAR~L12wlD!l9`F1z#XV~KCG%{R$N-0xOZS$my{Q_4KV9$_xN z#QCd2zG+`0IH|43=do*kRQJ??`}g28w=B@|Ddf5e+6vHCn6_jyj-+@@zCcnwC(rB! zwYE1y`L3m$+Sa+)h-Yfcw2w}bA6bU>M{55O&RHO`ilTf@8pf89%zZQa<|^H2CnN!~w; z%y16=r81ry!E?%dwUcv=q#yF=tYLQW{=_~JJL&aJjIldDx^HFQlqnjy2K|Y<_etg@ zH=~Pc#J-{WQ^l7i;BmlrvA$b;hac<>B%MXbqh8T{8+}n8?Td5p|L^Brv?$-#VEgjU z)!3U3v);-EEZo;UXKj>g=cjwl#{0q7BR}2z`moNp82*bbYj1_^8Pb^)SHI%!zr+h< zcWLfe-s!f<`o3-_Fpc5^AA$F8dv9n+=L2`rUI4qL{%?c-$`-Mcz3V<;Ol(}k-y?61 zp1+6#A5$k|R^A%w6g+>4K42f^x4jp87vimAP)vRDIMSmWzu;9gvQxzQci8yeOJXEA;0nnmnX7wKf=1}=u7{W~|Oh+#3L2Y{l*y;@o)H$Y;*_ z(D-g^mH1*K=bOblm1m9UbTW24cy|NmX&Y{^HnRS7Ho(I=(qCJFgABT$R4=!D0ro-vSb@09W) z{MA^asq4o)|AYB&TQGUYK)R2(oy3fn{gkn2Owe9k8{_x@{W_E~seT#n@fDvmeQy?T zCiZcB#Wf|$53kEm{-fxE)-k5j@Llo1pEKrZybHHB?6!&p=l^1lD88?;d}4tWJI1$Z z-o~DvWzv`6v>k$z_;>rp$X(6zth)rK7~|CZr2_}XSS6dyWsGSe+x;k=yRwNLG<$T) z;6ID~$Q%6VQHOV};~q92zJdOahDyP|b;2QZL5n0~$d>Q_<+{6qc225bE}X@lCK#JN zc_GhB$siNiMd?G3vOQZ&dG76DOo#jc2X|z%ntKj%X{Qm=UsE*OUM;9yt^_+IrSDh4(Ool*tyyD}ej}dsMfrT!|1Rqb+iRJR_rVW`k*!}u|7ZGLalT^VxeSRFXNLmle7aN}R$jk)Y83D^e@&+X_yx1hB~_b%*by^z0> zTV7{0RbO)XZ%`hXEYg}Nywmw7;rjpQX+Fe>W=EFh7~d1lhaLwQFw9^80C#^?=bq zd95>(vTlC8Cd;ZOX7=6opWF4X5c41-(p`{L!IIiKj&TL ztEYpv)C(ON{j2ir;M>lvPQHKVUEew1YubA{-P+IG4dr=rkLeBwA9(1TmGPnX&F%Oq z=dijYpOD92d%mRX9Pv5jo~)9xnZjwtUw@Vc2hmRSdf6fZcSeX9P~zIAx`fOJpJnStz%?_z%u>@>zNQ%5%S z<-* zj?%8`%Ee!B1F$5Z*P`x(o;@O3Px!+wvU86$QhyP7-$z;Th&#X+*$lGigY@A|d>3u~ z0Gmb)wgzKAz<*!-VYSz)UyUz$pLZ)h{5c()@JFSf6@Cb z8Z&K(4hG2E?dT^Gd9ynHn(vH_J?y3LCU*6zt}a=y+<#~SdxJT5;rL;TCe9~l;%71I(v$a z>K2DCkWcqUzYrRF4BCi-BOCtTi&Hp^=UK%)6nHk@YYa8&3H)(MdUdxQ9BD=|ps!OecNB zQ|N+D0^E7qKH1k2mW^G`Q-Zzd|jXX zo6sHYgkOpWT}ipFbqfd8?g!2L`oTiV-bNk7yo&uZca`?Sw`<|i?bvjc??z|L9g-y{ z8sB#q-@j7M;_v_UIA2F!pmA;30*1|&G$Lec-VD!@Gll;?c{HrZrW6xuZCt1cR1aEzz%{?1DKF*wF z4>Yp&-*Lo>{SCIwnVk3j-Vy7#c&uzk#{Um~c96Jo+G8C0!lc2rs=qBcv94r{JO3T-9p1S$em+PGp>)y0}kUsC9$~@eUJl(Zvq2jO}c!0W9$FHeFyh8pgamsSWHlzPY zihM6)`>6M2(q$KFqi)608XvE!ka${^z@#?Gw{m13l7t`NggNhYmV5k6U5R`AZbN?{ ze|_m{mQa5Ve*1aEf9gh-nh8$z&zZR+m=hXWoq}By+F+AMlRtQgo21 zxg0+Sn$JHAE=j(fW8vb=zviHtIlu=dlMP2F^I3I>*c+P929KwHE91;&9>4Od^@B@@ z0bj%%HvWn^M20|c+#3dtnzM?-DV=wGEPoX^8GL{|ZNM}YSo$eDpSWkzJ4E{Mr{Vb# zGv_(TRTtxyaQ-=H^;KwcKYk{yo;(wuHF}cROX#EJH!XRS_q{&mTx*!%sqe_T+_jka z#<<;Y2jC|UKqHDD8Aa~!D;68)iF0OUrKz7ftC31S)0lUi(+G2Bqn5K8>T`fTyZ@)d zFRo#(bmu1cnW0#}kMTYN*Can);oB-gdd z?_52kd^G#O{mev}{G@tj3imyuD1k{JkkWmvGHO?_1Xqr$i5@+@=%_iTYie_oJ<-&H_fB8RMPmlX&2c0*IY{)KR0bq zX$wf>=cb({?c)Bp@yHyxP_j<*G`l76O6Y#AKk{ihwiRyq7D_kxB9+eXwSCXz0fp z$G1a6|E_08Xy^z}Q_tp<7;)E}_uD4Nem+vql-M!%{fJL8t5fH))EGWi57tzb4?U{7 zZZ04Cj-DSXA9_U3kCYER%+tUpDIW1{j*Lt!SS!1NGpXqM_NNk$HkI`$z*G8Q=}S02 z5-Z||oP6Amob2bDz8BiQO2>Zi{jvU7b(7lPnD5w0ckGv))H=?+s4?kt`j`Xm^JE`u zVvPjf@J{0FWlHd@cXIHRC(xH5ABU%~PryFRxvKhN)_d{OB7DSM9}wr%g${<>q}ZEQVoh<@#BW`F-MIxXQc`-%N+kMF38VDDOw&RuJ?aOf=cN*89+ zwq&R;Qjc?p7@ukdXc&+0TwZe;T30s?Av95{5CAgs5hynN5a{BYeeBEpM z9_}?w_VxMkh#fOEl<>VrCQXjlmipcIm1Q!VD~{pg{7N?)22{u0ee{u1G)j~M;c`{~l)e2; zo_CJ@b}aGjF@2++pCtbO5zokGCw9E*1wR)@z7QI+hP=mrsBc?&w>`%n*ZV&@?*~+Rno;v#_OneLN}Cq#n-gJ_)8WtZ>gV7 zi6v~y8Q}|~_EmhH4UR(!nc^W9f8+V9=+LcCHrQV1HS&>i6H`7)|Na?Rsy`bN{c-(8 z-liX8{CFnnNADE);3!S3d<&Ww`)w>ujQuv2CdPgnOA}+hG0s1iCRY9#G%+U6c$)Yw zGU<4^rvZDnSvRqq%~Zygo(aOx)|85ifbiM6fqy6eJ$dvkZFZRyOpC(P&sThYUQD)Xk-cT?AH^hsJX z8a-JpuYcFl){Nd z+P#^6-$A=-uiNzd;`Y?XKH75INY(`!IA)}nv)_jQB>80sPBRiX433Kr?M=SdOLJSp zn4p72s$1jGc*fvY()nh6i*hCgSiT~^!ui}$X7(Q$H{uKEdvet^$F?iax5zU>CnNWF zi9Vct_gVZXrQaxI&C$81i|V`Fsjr&)YCNINn5j=T#nD*c?7!-}n7@LV#3a)5FSvIR zcotMUI*Ec?od4-hkM_-ilW$ibW)%^eEBXI5ic{-+xB3FczfgHC@(TalJ{upO<-}!L zE8kJhj5E$!e)9jp|ADo{@u?bV$F|xn+iq7K&b*9`OY=s7e33`aUb7u-?3qn{3;FF^ z&Rx^QD!H2R2uEAdudp6ew`Stct!F-C=BfJwTCYV(!=L>$1 zzMTgTipcvAa-j6)i{W>`B~$(ZZ*WiRL}xhKp@FdQ#m`)1_*!Hq!mfrde|FtY+9@uV zT$*b1Zqh{`MGn99`6N3M?}}}*6nGoG3S&a&*s~s7t6_| zoINAd`8fIsoA+o2Iz3`1nD3O=nEc$q*hbr_8U7aZXM1bG-!ShT=v>$@40JI*bY4R% z7~>m^LH&wz&cyBe%k*7+6Hf<@vbE=_e)(YK*NS*ek6`YudioX+@m{b{)Rr_?{2@tmYhw?9Yek6@aEuEgcH(obmL^Xh+% z>eX^+*FrA=%wHLaiBF%UmoRA)=osCY_#rz#Q*_dsRNoHXHGY?OJ9wU~XLa_h!nvE! z&qshqp1suI!-mTw+hwKs?+K^vPIc~wTyl?{^$YerzCV2SgkAfY!C&_{=h173d+{`9 zzr~+Um>3+{b=SZTec-V4jehdS;mLv8$U&byxU?YVtv|xp{r7x!+X}`SKAavai6MOn=c= zqH7qr2f-b~c)hYa=PTak9)x}H7U9H)liJJW9h@+{#o?cq-dF!_s;A$STFBdKBwi4h4^O9@$VSSvviNxQ2aX1T#+8s!mJ7vexup!5nOXqA{UY%~S2Ito8!56h*KCus3^V(Qf;tQ>f4o`7(|8BkXyUNHciE~<_S3|%3bEG6x4f13r(Xj0;G4mrqr$J+vnBXf zX7~>mw+w(w>%gNY?+I;NZBHE-fJaB|>@?2Ic1r#bov4maf`@J$q7mWud^@#8b*X$u zqI??pwC54N>JFLyIouz^_Z9r#Ouzf7cOaOyBLZ&7r&V*Vxf;(~dx@JRIL4PRD{X@= zPnV6;HKD6xkHeWVPps`bZ>?*Z$j^8iWv&ZwW|^n-Z(1YZ6_RaUk**&fhtBalR(k;L zoi;3+(;|K=8Gk7}Z8zs!Ut5chIlqUQ*E5?p_ncmPy|Lfk2JCCWW8qX8@iUv?^=Yeu;Y*+!5b7sbCAD#q`zBv@@k2b|%?9K#^#eq9IW9U0~0RQpM zQs6fSKOK#CCOqkN;P5y&cOE%ofcMkh*|9i!ZsnKXHT-=9o@>Cp*~G<2hUF8I$?UXa zUVJP@cw$FW)o!#=@e|Bvb`U`zgzm@XM}&`vC9{=__%j_wAzmSwD@m?$@l&`emrKk03PdS6H!H0?9!SN3lc`Cm$^<00N1+3mqM}%?d1G4cA#Zd@^%`CCq`I|Mn+*R5_oax{NY-lV33&Rfcx%^EFM56+$nrylxTKt{Q(e^kMalPcGZ^FUSHLmo09Q zKbvqmmmhI8z|C32n7}WL{rI^nLwCtX;3%>54$Ud7D`M>)WIi}Fmhme4)k8t3y?CHpcTC0EUDITUy;k#`50j)8~_zqsmcjG+kct7-mULAZ;d|1gg zxxvdg_aOVU#w(as0FR@@?0pp)Y{j3$qJ8Nbir@>$&PglPPp+d<==y@4t@AV<5|cZhtv~5-*noG{m##QIMi1` zU83pu6zmwBQ)dn8Y-9}F+gWcjh9%&ZOM}I{w=o|+=;QB!SvvpU#&cxO!JnBn0gQY8~ZQLvZOX+d&&)!_-ogd;7?HE<0<>A##zfak!y};VVjNbNyJIO*D~2A zIMI0)qhE#QTs_@c@1%}>=y9ae7aUw(^J(6@@Nt%&F4-Q=J}~nR?4dik|LvpnpsyWweQ-bd+9Y3se-H4h^)woJ&&(10 zELleoMAoYS-vYA=GQ;@S)OfhhiTweJq($n7`15n%*_ibw$$uJMUa+4%s#~}2de)i` zA1YNlx@S?cvf>~!cR^<_kI!f3;F3GCt(oY(*NMmU(tquPzwtEmnrY5R;>(n?t{k4E zJ49lR~On@gld34 z)!_T&@ue1|Of~ZASNSgbQGXj!XWU-M9;+L=i>JSH=`)-$OSRgn&?n;i-dHtjIU!aKsn%ZX$EkH)w3BKbH19=IDW3}L)1ZCM#KFtWe$x-XEnx3m#2$Sib+yCO zZ{w*k_c39M;o&yy2_dY0#D8@P&e+P<rkvlN zV#+*#T&H^ccFF>c=>e-S@&6?AU3fR%hA&xz^$j?W-tRCCoGU2wJ|n!--&lRG6~td+ zgr|z1j@(%bPZbaK`5UX|!?zo-8?Qlrubfok%A5CpojCztJCL7D{GfC*NAQqzkD1#n z{ulk{(*HU1i})uS9Uhbwj38UY=PGU|^X~u9ro+J5i65O6)P0tsH;eUXl*Y4yP1Gme z5^{X34ehx);fc?q9W?P=u)9G=&bmItx~@IJN!GVM@1&q)wabwWPV+oh#yrgnwQCQ! z!jImPv-y#ER{J_Xah{-sXMW+(nPj3UYu2y%U*r1|Xk|*S zztKB8s5V|J;Qm1ACXtujdfoc81~jw28{B7Y7oG@T%>BmTO7i+XpZ?V%n`@m9nAo>v z&wh&W?`Pbvp@TE+AD(P<)~+t523gjmC&~1(4b)I>qITUiU*(hAR-47NA2>W}V>t20 z;l-b(o;LOuJL!YgxF+x|zP770$If4%wM6UPXxilq#H-Hny%9O3k2WH&I{o+ufgO^)ugO{h4n;6T%KK^&{^Si83QSz#;JE%*(G4iA5u99tE zrq2`IbKJkYtF)54j@vv_Vzu;Xd|$8TTQfSwK>4Z_LFtg;1?b%}BX;VFC_2XiuYX+= zxW3+=xkPiMddB00>)#u&XD^5Vk8b1|zmZ{B|B)~7!*uX5F<&k|7+gr;_~A`frf}QE zQ{kwKpW+9?&GER?!x@&h?Gv)7`Xm_t1M|z8o_DD-n%6>nr=2ywyX}p+^2=L}U!EJc z*onUtNB-<%&E}33zD_&cCm} ztI*EK6fUaWx7r`L{!>oN9i8p1K;|pjayC|7X{=GY0tbnF{7S6}jAJ z?Wp3+>v3Q4ir{JFIQa6$IQJ2y-jus=>$TQhf}PU1&nxx-zbq@OMfq=fWB9JuP}Yrv!A}nheh(VYxizs|GCbjX%)9pO@1ZT) z+z-6!wJ!*FaeolDqq45z0s3G4ee$g$wvuS+RqFU&QXTcY8~rEWa-oSv{6_Aijyr&f z=F>-f#0YDJ#rjfIS6GX#;yH!qRBXMR>0OydY?k1pP$#}EW?p@~7g*9c_&OBJ zB-yX*C46}GeFeDDXubPszyHbnz^>HU;!(ay$Y#Xu26mM7UsM)5Uytm}ttn0%^WQ@g zQDW>c-dO5gwFfJk(mMW%Ia0k5|IfEWA1l)ynYM#9`b2tDdW*`*w=TjRa%nrQVzn7y z%$58i@M)*r^o!c%-o(0Su2uadJFSwKz;)a`6&wIhBdq;uJIwQ1+SmJZp3mFU>kcy) z*vMC|CVw5z4kK%8e{WUGHkqD{Z35V(Qs&yb)*Xy<4~5px87=uf(sS+XO6h~zuY5MYyXfisYmr$G%y~M07`f{x^~a|=bFsbL^a; z`0lsp$Gr5xrB48lZ(CE+p0}pfwUNJ@xQpuhB>FBqWuH@ZguYdPw}NXoeM3h&r2eH- z=Wnr%JWc!k-q29Tyl1yRLLZ(-z6%sRz5Ro>ufq#$x)Xg!OY|Y#PB%Wyf1u3r#2o$J z|HSsw4WaLL|G>NBdF+dR`qi%fZ>jlix9w~3&-3p1J>TQ}*f$TfQSZatE%6=lt-EL1 zj+gbV$=@O0Dvi6=^0$=X6OY~a_zLVr#n8w!)=S~cbjEZQcA+?BHP#^G3SUDV$Z=`l zL)=bD1D_f1Cl3CB`O&O71a95ekcxU2Y}zJpuz(O0*eG2&0mSzl|B@T}I1q4wZ9=u7GN zW*EQp@pK5S_gtK&b7+^g!~6jrF}&q!#SjkS2hN>$vc-5iUVF~luDc@MKvp4++B2hmEq*xhg;&VF+bMmm&$F{?uw_bTeA|@HtI>_7lJ*kcUtVa(+HYNVFv?H5 z$8tB;889pdN25>9SlP@k{hpLnSAiEk`Z3v_Qc0UVfubL8PXTxPsUyNOaBJisvJ)~7 zelOm6K|g#joKsQRZ2K!y*(a^0zj1H#huZD5w6dSs^;5BL`0y(khM#Hu(EWc)`1btI z?Rx03`a9J5Q+$b9;meK4EK%qh9gN-&(HRB4i2f z1>J&o@%8h@;_HX~o$kPeI9EpA(^s|T-<-g;X6D}Qk7C3h1?S2ntH3h?;D?J>!nYL(yi$K$JQOZP5_l-Q z32%&MIcdcQi&dVwT>N?|fnUO(?k^x$BNJ@6H)Yl4d+$9V9@@KadhFqEv+vEcGDX+L zMZ`0Mx11*ZJZoOXt&0u{&ph|sdm=vI?cB||p5FDo*y?vqITL}F`pEahH@Rn+afm-e zGrpEDIuu=s7B2}Cc<2A8FuCW?gGn1O;hy`v&81FU zLu#n>j%lIN&9B{iBI?OW6D&VKTeY6hMtDE={aG==d^g{1zrQ8q&u;l7aP1#h-pPE{ zN6{n3|6tA!EzSeB!_3LIfw|V8Mtn6tgPiCm9T^6G=<9fyIcmGL?x63UsXJ23i(5Kw zoqv#ZKZASB>ni9!u>`7{iA5P_dB1^wBYmjwkDqfmJdAkW*ry2Idk|JmGFH!vx?_1c4R>c5`xNLGB=J56!y zsy>P@#v$Nn$(Eurj6F`7f?KaS7`LXSv5sW)Q||q@eEeV^>GN;-Z132 zdxyXLx|Zl)PM#e^2E;Em?euK!f4b$GgMUDGEcr10_>G-5`u6LPP1Q~>c1N|dE2*6} zlP{(7H1&sX{p3N_SwZ{PNp7XQ>bZ{dU8X$z57{!~d3#dbuEAmE(P!pSbbiqsQs0w% z#?Ik4zJ;$p{_*Y{9^~Dn74eaN`FG+UQGpJ)l>3;6emA`M9KI4^=*EA?6{~{jA4+?8 za%$x&D0BzMTe0s+KhvXuX}SU z!wqdaW&-~_#{C)ih2YT*-VbjVzj*M!#V^W%x%fqxIws;5YnY>n_=UUHd<&cvzo>y< z+&rFNFqVn=#pw94kByFB{32=mxxiIxObcyDUUAzLO+`sV?lwH^HTZ?{Ellu>lhUb( zUr-nM48OQ;9Ikm8_iahI_J7%X6R;|)u77wR20aWa0xIIbaRwB{F-*k+PN;~eq*NBO z9%Ph3!L-mO)CNr}vq8%0LCd1j!k$vh1{^9yD=Sk_DoiUZE3DN2Z|%MIIfoNk@B4qg z>;1m#dvC6rb$)y8VePf|UiY5veRsp}U*}H_nq_AzKDDXmOK-t@h zyPMgHj{hZFQN8p<*oywEs|R?(Rt$ozX!jRe@hjVk>1-?LJmKBgv)z)dI15?RVJm37 zOV5b~uopD;q&Uc4;9DNjUYOAD(e`3F>;;wKJLp4LZG|pB#JBsI=C)!T?Eg;~!$h&Y z--h46qRmh}34{)#pbu>;e#2gKoQpBsXtfjZ9#dPpPhEZL%3tinD%cLP6J>Q*;vT8H z(%ep1>wx3)&sGN}lbzu9+!JHxmg@7bI6sSIy#R{u%%GpH_AXt)^ZOK@BjmOmeFv() zm=9fFmttI7i*=FFe_%}(_AVe0^KE!e24PO`9GU)n!X8N(k;W3pNO>s1xF2%Npm$Jcylt$)J}}5e za$$e|#qTiB@9T>1IN)qB8XM9a!kULR`MW#0do*Cp1<$j?V>O7uyPe5Rhn^Zr}xS@;(DwJdx6@hcc-d7{p*TIM_}3eP6DHqjm#u5MEo z>=Eswx?!OL?lk_R`RZ@QCVv|LS#ahv+Q*FD=xf*Exm@n#bAaN*nZ@UWP>z9nN;mo# ze56k5e#84W&RDz094_@We#ZO84R@MHT4;R`^Bi~J`vNpSj5(9F<*?nOpl=``kL3XTh?)VLHP<%9RvI*}QuYi7j zf*Z|`QySawoAOIzU%hVPZWQZV#g)`xk31b$CbU(jdJrqh>hdq_wj;tRdOH zd)fROp(e;o>o7e*X-~!q$b~QqYf(RGjmv(oVDoad(+l= zl%O6Pdz-gl4(hBKeMI4>!UW=*473(>2lj51(0Cm4hQ=hdM*?-crWfKmg>s_39wm5w zNWQ^Y?xCndTc&a#UK!2h^oo$*jw6}LW>A~6U)xpXiT26gF`zx`a?TWSY=w?&bsXPo zMP2Lxw?No2Bihi_>J!rNo2nseFC!GwC@Su z6s7fMeE-S?&o9^DZKxy5v0skP;2ec#5VaXRTNjeM`VMx-t;6Atb{xDNb)WW=()&R4 zP8{v8`WnxkdhC(Fw;-{O+5vkV{IJie)7E>BUU`(BiL0G_GAzpieB4mKgWI4FfOabk ztNdvlgzArNuZjJ+d{%Iq*^BeL5FY!(gCigZ$qTu+Vl4!F;+%0#yDOg0t%84Z zZXNugT|OGHo=*9o=L~Gp;MJYbmq%Fg^R(1K=dBo9t*2)h`PmIW8CZi{jCNCsy&;|2 zn6bZB40{;gvc%r&3^V5G;b-AN%y%Qcg#%#w0%`n>=NIiki|D2HCX)>_VT?#}PJ&0T&R9Evz>_r;3&&fP8%3vNj7X8HF9#faN;XT?Yd;`OX zb)`h;??IC7AI24gzLI@hTiV&;B3r%`aoNr>qdkNj@jX;JI}G35#d|e4$38f|tr%v! z1iy*7JF0u62kL(fg$(v*tj5V zI~tFe5tn{uCcqw`{j9AkyLR7L+4JV-oaplj=-aY&&N#)Z6b%*8#g;-HD`Fy*b^Pq!7taIWyUh^P+)ALq7f1y|PO!K!s=cxZn-$HkT zz7(%xGoB?6{XN7*_RG=}&sxMKpSgH`%jcloIfmC-&%F(Lzp}R-oj(YjIl)#rZ~YzP zhCPt!&kt?y4ZMNh@V9pH-;@)+g|z)f++&U6JgspD;{77B&3{0@e(4<_|D~64?Jqxy zEwmng9oZ&lf1Dfp=|=S9*CzB3=c6#54siBAd#1C9JL2SzF_z!i3wTcy{ed`jW|Dem zllL)iH93#{6#GmT7QC~5;}M({MgHl#FlS*mzQbO(O~3+S?{o4yKzm>?PkwkM&NwJd z4-T7*cbc&_zQYgSk)Sk7(U(7qc2NPHM_r0I;{y-*rBKcDmRBGTB6v8FSgRVq&%@ZN9-sh>=z4p%K# zyvuubz4y9}RL}OKkN5}P`J!`=pFw)RA?+(jo5q3i8HuxWny24MreAgW%CI)bpOjgK z@t5DI{;Ryoe=Yn|I&RKB2hPqhZ)tGyKS1M<14t*qxs!aiaxvNi>fzekdWp4f-Xof* zJz)L<{RY3YBrE3K;(muM9toMr?G)^6kzJVA?7~o-$>2A^mJNV^3Qu)>2hJQjJ4b9m z8i)VDJ8b<=U3ue8^cjj!zk9(S*)2Ub!MJ}%8SV(Qd)TI#l;2v|@jbXx;Ewh+lJ;t1 z9!>uK72j5^#vFhVW0hC%TfO_H_7x%@ThG8Ae+N4fEyRI4Xp9W`O4HAVS?J*Xt>>YBFXUR!m(x!{_jtzZ{_zA^&vpOUfai@9 zp40TaR{i7eA(QIoqy6LC9s$B9!v||=K4t6t7u)rFqw>vo&j)MT(7Wz?(fnHk&VNyT zG}>R&DY&j)^%;v0mg@GM(7}JF@Ax6*qlLcX*-x(BcRcFh*mvwe{Q}u{d=s)&;k&2y z{V<&ubeAQ^$;hn2#ObLSN1?d;o_p#6HcD z&_Vfsu`hZ*=ijj}`U3KQt-k0H>?^m=ANpPn{Y;g=-!Q*L{ZjHP-^GDHnv2A|jMNqS z(8INE9)R9R7dzl)-ycmv-J$+y7{>S1U%gsiG!%U5i^{&|II%VodAruUEa{i}({wJH zeR{NJOX+n*d|!jt?7dp7@#_95)qiUr6>a}&ebgen?~S=*d;_j|KeYkppfu~NZWe1{ z!{ztf(T0a%KEK(!%t#Mo*}dgg>#u6N-}khdYoT_d=H8SI*ZX}h-L`|@?ZW#`cNn+O zUcW1MxS@Lh8#W8)j3S*Yo1I3|_vvYzbmfj#a-R0eD13wav|;3U$`9VN_{+EIuhPfv ziSs+qS@yjL`Xsx9{?BlkKZkdC<4 zo>M;b`~0<-TgM=OJ<4_1saf(HMKh^RSHLZi^xex`Oyg9V_oKO8+j*ORo!6o@7^-Jf zH_0{)g1%{fi|kA!+=v$pw=0-?UgsnZRN;&*nkO%zv$nAQG7ak-J>ZANipM`v&lJ+@ z-^QYq(kt_Kgjv_!O&ZrANcw2m<~`F zN+S#XN(x7Qoi?xYf0q5$p?|#?=@(EJd>B)NdwC&wO zY7f(;3}WXTmPMsOXWVxPJ_Hdu$7z_uHN8k5xZr``q&tL8054oHcCZYdZjrWN>I(r0P5pHLl(SM}9 z^EBQlHv~oiDG*9U~(H#jQ4pu(Ys3)+Bb}Mm(r;|MT}qA6V!-z!09>VCYIyf zrm~r5HjAKAH*pyImDdIqTPp9s+~H}&Yp_7(K^sMww|F zXVWT0r&wHIxO~+f3^3;f192iI^YThq(2aDB((h}Vx{|Lo>@sLyj0Yta<96Xws+zuxH>&hb6LL??Xb zSo+1@DNynnE`XugMxF71juzRU9WL%c`(7G;p-A7^H{Mu2sbuSLi@4m!+Y4;=UVs4m6 zarX|>;{vwh_vMa2`&c8Jv5jV#BzDDe`KZ*He z+CO4kQd{HYCgwt}t?d#2gZPf*;Old{4|JOM6zPrj09AjOePoDH%=N(g&h5Q2yI1eX zIhXYh^#Y|KI<>gQRC*SXZ6Z1p|xhx5gQ&lx(v z?H>6a#8kLVhTHcBU%0LI-wl7{=M3%bSmqA9>xQ!fx_B=DooZ+uoM>npOgapN{6Ao? zssCBr|jyNp6(a zR+4QMaJuxnYU34>4SRXC>?BhVr=NJ`3fMy6*|jwgbH=cZHPz@31_;C166jdq8EUkg z2`j~X4#{i(T*$|sg2cpr1h`j|FjyONiT3yiyK1j5Lneqx(q#pOP%(ulcz*s_!HHE_Yf> z>s**esi=jF)c@x5Z?@9jqth6psPop;xAdsrwGQ7pm0|7rV{|V59@u1xqh(pfei}u# z|G$uLEg#8I3mvGj!C&RE_VY02b^LysajDBJceJM{L$@ITqEp^fyu)O{Sug>jW8MP% zj>5ZL0ipxD3;gzF_cr+5Ub-7y-1Ddp(UQHPXI6%*pFArj182%md&)3$LRe!S`b0w# zkp`6k<^h8neCRw{BbI~E55eNbtHUc);sGzR-b_>I^u%p=f`sd*Otn*1eQy?szlp9n9wM~yJU{VC~AHig^;++#7ckdm*>v67-a4M;}Pr7yS#@Na_e`3F<>(Xui zww_D-TZ;3Ri@n6fhJNDGCG?4(d<fGFt^FBfVUw`A^ki4ppvqVhq-Z_W<95j%v}*+l{joN!K)ol#Y7WFbeUu7egEF z#CJz~iM93U17aQt^J+K`8Zw~&yfz4ZSn;-+2MWaAOkdpR_nNavhQ`fKS+$t^x`4AL zoA51!^8q-)0W#29sR3aU(Ral7FSswc1(+|9-Uy?=w4TCI9K-2%Yn&#u*J-Tw>i`S2?GQeGNO$!2LpZ;WxGo_BEsYz5`wl9OX)9KZzleu^09olsCCw=%(GV z&q=xq=^kfw@6PUC(tUeZ?Y|ql`$>0St2_2CAs!3XUcN{CZkM8tlw(f*tWQudo<&o> zLw{ia+FvR9Jmrv;{QV&PO+Hdh{@U65>n8nGvp*Hz6cwL`y}#})#5YyN*V^7+Knw9j ztN5IQf-MFylw>-FI#PyqLi)kj7dk_ppvyAWnQ}w^rJK@=a)YjHyaYX>~(w+GjW9(bP`el5VW(I(uo zx_GCz?pWV_s^1)Q^yHqW+Yl zzLQ?vE-rouK2P(dN!Zx* zoyaPb8QR-I>H|stt_xnJ`48l)hH#+kg4ZmNhx+c5;YMeuNPoXrWW0}{zZE;f{5Iy| z-iA@|oe^Zd^okQ~C+6WC_h`Y6S78rQ)jHg3aX)~24Q~Bhgl&*@2z!6!_iGv;+k2Q> zjKcVn;(iCe1M%C4^-TS&5xDg8)*bQ%bKj8M^|Q4t+UyzU9>F1owyT1cnvWRiHn^>N z0ewj~*za_M+kQ8MqcJksGK$X~Ymb;$+1lSOKAn!XcgE4?o%F7sdsX1-$wB7gXv{a^ z`xC2065cDoT&24S-y?+W8fy+ZyBT?jqB1bJc@RDgjP*Ud3+S04%5cWo(_-yr%x=5yN%I)Pu3V`oaT05NX+DG3$>`Zw3b!OD;{oD*iDwLWI}nfD(~SMKJI~x< zL0uEx)c(j_&Y8@zoiBs=#NsWJSI?xmizL(onXj#-DqoP9-i3Xdh)h;gAA znBpQ?b@^GkqW;2vf3)Gi>WroZ&>{Nk2Z9ZT)#e`JaLvP*8|L&W9L9b%IAa+7R-EbF z9{Tdc9M`#}Skv^oF4s^s#^~8?mM7-&O8ZoAY`@VIGsN8#GdbKCgR#JO$Yb2(_Elfd zKBcH|zZf_C4l)?pPjz(tGL<@b~m*R z;<(BvZwOE0s**O7SEnOfCibkYaosbT(ha@7BHIYR7)NYJxR^ltjrk}e!notT1hQX& zEJJ_DumEnQ5y7iPgg87KykVY(nAXTwqo^9=hCHI4K1A{QJTNSq;>*K50O6-o90tGZ zDBmR86v!F{8e(u?<$)XZ-Z!v^nBlgt+pH;l_Tl`FcB`Tdo~vk&4xP7hPdoYk`i=~g zKi2eje2o2Nr6eO{qO#wL-{5Ue2c`DZ07~DkPC&V*pnsW(v@#&W6sNEe_Wmdi@>ea~ zrvBg=wYt%B&uEg}8+lj=*=OSJkFbLfb{c3j=n2>fvLS7-KPj-s{*ACbhl3&ORK&Fs zb234AN5BIzL>UY-Fn7v)4{N!Sd^+8INSDgA7HLyHbUUSbV?h0B@cPf!ojj!T->EyP z2=||=J2McMMYZ!9oR#BCb%)vq)t@uYe%B2}z0&Q3>I#(yl|}mphGtW}p}Ix&Xdud? zjluo90jNXNZm1sEw;Qz2_L-;`E8$LhujcZmdeI+ytwLyjD%x^lo6^+-z;A;#^$OZl zAllSqq#L@?)Yc2_iP}i0r=hJUZ0q0$LI)!Kw$xVKffEd#XZPaF*e%@F$i9}fS+&{^ z@lif9(B5*ny?H@?@9wX}%s{)N@KI=YlrPE?^s$}Vy1o3=?x}vHqs{k6n_GanfQ02e zG7=4&Hj zZJt}zm~+k^TeFbY?B!x@hX+Pvhr-T5=C#-1_Y}-0#)10b-r4<)m^IxiV+IFQ#0-HR zDDQ#z{yfD=@A6Puy^tr;*%aitJ;kN%lq>v!-xKQuv{!F0)~s?-UM=OR4DDW*?QqKf zsETY0rG<989r2a2&MTmQ>c^dPZnL!!zuoYAjZP1GJ%?xK8n{#aIfwJ0ygW=XMu+k; zq8^eixxChupgvLgQ#}oI@T={q_L~mBCghW3n9>7#V|s|S`;o2%XQ}J*r2R;%P@Wdh z1OvV)i8&?P^GWSJ4HRaa*J9q;8RrbrT&nIzBnfd;J;w}N@jR5zF~sjT*5ICDzvfQ< zVDGDJb4iA+W%xG1D|ceu`tqjg@^Se75#G@t9Ei0~JP$9vf^k?7ctnHYcE%NB5y&8) zx2P-RF8y}Kvli#p(438S+u|bpj6IZJ>a%HgH#>K#m)bqu+2(&a{NK3g%A=ZxZ{SHe zgCN6DSM$Z0;Q9FCoc=1Mi&wC=I`;CWQlh5ICrf2Nf%m6UzDZvx`B}9l*L9tH;O>cA z>#Pj@-lNzDeKnnyV}C&@o=N1dH`Z6lAN~H|T4BIPSzX+94L^yPzjepnmaC?#;@D}p zh94?#suOSFjQXp_gLy3S^CQ;IujZ!=>q0l5ygI)YeV>!p2#@)TnV(&QUyeNyB*RD7 z^27NZc?~(rAjjL+h@%Aj9oOIs@V8xqPi+8YJuDIaHebsh^c96MTRGOxUZDDcK6AQ3 zotqCkFW>hI!a1>Yek`3S8;mnpo1L2vU0lK5k*k%5ZpT|82hNJmYpE@Z{|{c}x1tw> ztBUCtOn+tSlA!n-P zrfri|dj3rNGQFN@6w_Oo<}zKu^bw}zOe>kb&$Nc=38t-5RC?Y_O-u(e4P!cm>0G9n zOmAnpis@5KUt(ItbU)KinVw?W#MGP1WdPHOOlLE-FkQ;@A*QnM@h^tU>sF=(Of|n@ zm@peO0IeR_9BWonh;pxBzGagZ~W<_z4GG#u$BFc|GgEFL%H%I^YV% zT0h$z_>~U)w;cFY4*Yi=_|*>hpaVYS5dNqGKIVXrJK$OeTbnCrG1m1nkg={WVT>^uCa+irej;OU<`*&U%6J1~d{5+RG9L{~H+V_$wLf`gMr0)=wkj z&YYfO{Eqg`(LOo0Z%2Dj&h1ItN5}f_Rj2gPfzwY&NKVR6OV#QV2?;5wX(^eYxk>pc zNtx^oIKLnjSUV&n6j;*913M%n%uC8Iu*ZwiQVMeNvTaY(m7}C#6%P+`FPr*bET?q+=*-4q{^Rv@ZCDvTZh$%Y_)5GdArKV-3 z6{LwVfZ^CRHF~rVJ@9)B9D3ls`4;6bCpRrG3GxyOfj_E0{ZT1HLU7Y>+|(vR!h^*i zP^!O(N{mJvv>7WLbO2~zkPx?n-imuE?!E}L6hDH&?~gkK_aNMTaEBw%XhhH#zn9{^ z6?fvIc?C(ynQ8qHmafD_$qtw_+D{}F6z8Vp%+uaPVrC8)ru>4Wg7g&A{KBNXRLM&u zrDe~z`CCNg4XwbvkP3)7iK@7ix)8w8M`CK)yrja+0#iy(whn4a$;`c`NKMbr%}h#3%Sy{GFl8m>>U^eI zOn)Pa(!0%{O;;wHNQpN7HAPBH$;mCgn$jrWg{cLmytIPCylh!ai4&qk;>@_X$x;gN zRk>PgMRVM8#8m%vy;cR1rlCm8$;wVQQ60)pr&^I{Q<7>a_JvCFIr4A5rJ0Y!tfcIu z`Dv+tr&LFOEh?4Lv+4COnzL!YnLn+62R+;ShX2&!?4&F-jr8pFf^=ApC24u4c{zC| zT`x30sUWQ=y}+*e+xtR1*2;6ueBROzP2L z&yUEBBTGCo7jMv}tAs8Afqyu<>t~|9zn0u|U&=AO#?-gB4@YAsx~b3QNZ};i|Bh0c z6kexI{^=sOe{zvbM%;SbLGcjQ;fWHatF1s;u zj_GN?j+Fdq-4b=g(TFRgQ;j_%ZEHJ|+2U-s=;w;jju8tb-3;VB%odAf8PA?j!cG^X^4 z??~Zf4Nt%IrQ4yVT7I3D#zggR9o8OenTb-p(|OeK5G8l}Fo5#X^^^dG)8REHY99|_ zdwJ}`6OS%!C$wBTT^-IIs}L>!r!t{SmrYBU;?jKb>lio5M>o0a-&*FDFucjjF&^!% zspjjrG}ipTbJzavPzHT$)OvtZm)zNalrQj z+m{pVW3$J!$ITwo9yfbTd*AHwLk^hs$Jz6@J2l5U9Iz(|iA%SCHw8tO$QLOhN92h# z{0$VTQU^ke%gLL7{%dSrPD)ySz7UnWn$LIp?QV{%zg5`SplB7(<7*n|tL6);nN~zA zT+5Wj5f+ZO>WYfTODKPq6AD)_HB~lGr*wewr{mF7r>}8?gWRP$J-zP0_z>q;hbQ~o z5jWWxx=D{jsSaR&g0x%MXD7%$kZ!3>lFq4&h>{yonqMa#)g{fNcquGVnqQ-My>OEo z%_q?u5Z&b712?&2ABMycjK?vK1*I@E*?kt%IiM8(jkqc8OxzSt7H$*nT-;r8=iw$< zOK_8{%bBhKCHFgVQ#^O!rtqkzvc){b_-Rm*^I6=K&cASzzc+A`Tp!^k{%5#}eB)bxXL&t-ausp&`Mp2)O}X)RMzBlDS7F!egm?o2C~Rx_<- z+Q>BQC*?m08cWBF4z-^Uu^7LzL3K+CK|4wk1!z$P;ADY@K;wh)U)=)SYlokQaLEXl zC*yA(mUQ$_!e`p0I|OMD(aQY?;WJ?qQjkg}QqBA4=@&^Ysya+DsPeYO&~o~e zo~;dJ0~I13s>QmEq#`$qTac;c_$X`&;-Hc!fJQQ)QrXOfr);o3|ocnNUq#1RrD-hT65% z45__r{LgIWPLk_qHObSm{>U{Kn#zG+iXjA=B%QTnl~l{n<)vk49+2aXCa-2i%6EpK8GBNi=Vd*m9X7`DCX=(O& zQd+_6q|CxJM}M>I-RYT1;U`7wU0`HLPmEh*P3m7P0H zf2YM@iYP88dfepk6vi8OL~d?uPG)*aF{I&6QCwPHR(dw($#b%&r4?9mQps-${?J_# zH(=}gMCdz=9C2wpSd0+SVghiCm@LML>0&(4|6V5aLYn^t3jNpIy=4@IQoYvSUFfkm z{x$c%9DN=AXAuAF&pw6~!uIEcKF&Y+)8S43zpnr#%U9fa*WLHrTe@=9>ih10;K4O( zA6mEm;YS|b@Yu%3pLp`AO=V9%v-#QQp8r?*maQ+mxb3BvD_(i^we34zf1`5eoBw|6 z?OnU8_Pn$A-S^)ApnBi_0|!6+=;K3&YmOZKH4p~`L^NA zcW2Li|HF@s=YRV7!Y{x6)^zdrKmNRQ`HC<&IlH*FYHf6L_wa1fww+gdZy(%vA}KMHf+W6ep)Sn!-T-;%x{ zBQq;ICwF09enH`)#YM$SZk~I~tqF-&=ijz;+3k1yPv`%CI{p7^{YONO8$V&(@2^(yKVSh3%dLNge|TvN zMs$V2_UB~yXMZ}peSZE~e(gihZ(|Gg-`ha(hgvzlc)86>C|581*1yQtKg=+DbM*hu za%=PDC2YUdFN4AUAz=PfjWabJ&sfta#+pVm)-=|EpXk8Pb>Npc@F&Mi6zSRXL`+1C z$WF>88aNC8f>=nn1?JAf-GhRaq6PTWzDsfu>(9lr(%;9(96_vkKrWU4|OmmqQ zFfC%bl<8ee*D&3{w4CX7rd3Q2GCjofDAQw1k29@hTF@s^cd3yroxHkW2)mf zF%D&FW*W=X!nBAf4rrG7e3t2pOe>ilV%o&i%USuKRhTWNf3S97)PXKWhJNO5d#AcvW~CR`KLpeW>_oTy1kB2~_+v>t+i}?kYW-n@X2vCTwoxZwe&Hmj2T) zhd}vAf*<8Y#cNx~_dPoh*75uo!yXF;M|(CHXQQc=V}4~sy@!<|Z2#a}36rFbU7 zJsC0ET;PaHrAzZq>Qd>a%e2TvrLV@+8fUWZ2rGGLHb7MfC6}6aQS*}IOUp@fcr?qS z<)zsf?IOLg{LS4XASGR~OzHPD{0)LmQ}MspP9AchzX8G|{g6MC)rEX2-%%n;T#wYV z@SkP^^_7NF3BjnF=ELb)01bvf3$Y4fj+18U#zEie%7ETO#8f$tPA-Zchk7WW>kQ?| z?!SS5SF~65!HIDtW14rMtBNtEz2#NS*p=}y#(Mp+mNCt5(AB`0)(+@uWbCG(Xktur z_ww>q^3Ys6T}H-wuHB0<&C%24$GEM6!o*nb`we7Fb0~C$GH$P+2xIKc*v#06aTH@; z#<7g`KGJx`w8lVJB4b)(q07R!vw|X*v2~v>W4({IgfXpc&{fJ9>v!^6!?-)+4UF|Z z>N3VA=9e?>!MK8PPsVfk`Ou4TCG&eTu43GWaW&(M!5XQns)d$*pN|%xG2nB@~fyc;Yp-JkJb9Lju8#%9KC7{@Yh%Q%s7JI1+;y%?7;ZqL}n@_REj zGxlM;hW-08E@Rw*aRuX!jH?*?F+Rk&Gvivu{)`(LcVR3#D1CKh?8UenV-w@s8INUrjIo(<1LFwBO^nAeHg;0^AJ5ptcmm^4#uFKv8Bbyy%Xl*5M8;DX z=Q5tkxP);u<28(97?&}g&bWecEaNK1GZ`OZJezSX<2j5Q8Q;WM_^JG+G4^7d!Pvw& zlW{2H<&4dY4cq~VW$eN@l-o1D5i74m=DRV@W$ezlgs~^%HH^I&mofHXT*26vaTVi^ zj1MvPXI#s;8{;O%0~i}SD}9V&Y+@YFIF#`?#%9JDjN=&_xI<-O?83N+acjn>^6$>rkFjC2;s_`33`VfLLkHBxbs9uDKNTJ6)R6jznb6}QY%UuUFe{mCIsvjYkbcpn4L5*(5!VqWVI3Ci|y)69O(*bLg!QI0`c=>Y{o?d@T>vC&F>er+O5E*%ci= z8#yAZ$6ZvfLNFVn`Bc9szdC)YXCXk^Kh-zFI(@2lB#-t_^^f$Y^H23K1lrW`=R?cH z*ZQD(83Jj!StE6dFU}et)l-sB$4B**^2cTY(olLg*p(OQD^l*aBo$D7ru4LaX|EfV zpH83ZcL=1L&HAExPFU-Y>N};U^GEeQ1itk+mg+y{kEdVZdx^w1;eRwx0oOZf7xwjr z+D8aN>3osD5Y!@F?~0^eYw3PCN^`BJ;rCR)pl+8gCV%bg|jInA0+ z+VN#yFVz0ZX;wW_`=og}UC*hV64vd4+ACq5KDApa7e_r%JGQSs$ui$Ixu|{H%Sr9r z9#ea7j#c~6`J(o3&(D(OZ;PMof;~UqAwIGbR4zKc6q(OSs8Q-7`(a;>%8uA#RQ7~w z+>J7TvMUs$s$mO}AJR-DmyFsyXDin%SxzxlJu7=OSeXxaB_QA%_mif204^&>UcJ+kxHw!M!>$hsxHalkD4#r6vn<*ty^~~1( zRXvNe>f65F*oV`4n*du&m(t4wYyDHt>nLk`QhJK8%B}PiVYORIPc}QQ^fb=e{_Q@mr(ps)s zf7;%v^rl$zsr<)T>yh#wVJ%nXKiW{&j29?QNxYs@TTLzBEbDVy@uTeO0i{QKJ=LZ7vDWJx{Fdy_b&~*9=h6;E)J~Rqq-f0co$WW_vOJ7(194f5AAE@hgnYjLR6uGJcS8 zBIA!4=Q93;aS7uZ#%maFVO+*|C*umn?=r4pe4Ozi#>&bHQOo!s^BWoOW-LNf{;L`5 zb&nv%Ud(@-aUkOi#(JHm2V*nyQ#7CTYhWD9eBJ*`WW0>|xs2antk?bYx?m~ub-U5) zelF~P1M_virkwG;%-8FJu8b?0ukEv5C)DeR)y#i}{U2kzmT?1PT~C`Bzs7vyK&9Uo zbb4GLbwAOM`Ky_)*Ckss4rIPwm(lB#M&^exe>3AK#vd|{XZ#{#3*&u^ix@w|xRmjm zj5jcTk8wHU?TjlKf6BO;@gc^?80&s=1LG>@H!(iKSa>UaxiK~lQur`qKgM4%4rKfp z<1ohi8AmbR!8o4r9>x~NM;R9}ewJ}5<86#LFh0q+obfuwm5gf{S2O-M<713JV%)&E zj&T#?FBuy{RsK&f_GA1x<3PsmGuG>(y%>ivKaH{A`lr`HqnMw`e7#QEmvKDvEsTv^ zKJJVy%#UVl;`j$LE@FN@V=oTx!MK$9>ltrg{2b$Q#xF6hWIT;=HRIPAA7lI$<1&^< zud_BVzm)lU9rQZJP0ZKpj(#k!C-aSiRe8iP4&?X;G4^AA0plVL@2CAU|7FHujP#f53Fm7W0{frY?-VuzALzVyA8OL*YU&emSpRL0)zXRhy z=Fedq#&`qcD8~0Oj%U1yv4wHD#vFe~#zoAJXPnFYPK-;LuVxc)@UoA}&uHdvVE)~V z%NhTRaV6tLjH?+x!MKFe>&*BV^KWKc#r&R(8QbvzP*h77*{Y3WL(KO zjPU`+QH(!eT*~SDGmdBeT*i7H|1@I@^WR}y!uV~*8yG*&xPtLxjMs2_T^Lt0eWqufA<8T#U3F9K>k7Vq}{N;={u)JLv2QvRw z#$k-J8JDsDZj7UtpTIbt(;Kca^OrK#`>afiEzD15T+Z=#XI#YmM8>fk|1id-%zuh; z8ROd+H*kFY7*{esopCke9LC2OJL~X_Pcd#{yoRxHgwprZjQtqD$~chmR>onBCo+y= zoXc3v%hH?M>Qdv}B#fu+aWZCi?Qtrva_Dh(8m~raoX)E`8ZY2g6pb@@wM64g%<|jE zZ`)z2LyU4Ch{Q_TjZ*v$hf7xh0Ad>sR= zLxn(k9lu(C(W`T`9z*jE^nSLw)O=JjVxV`1ZSkme8XEPhi`MVxoB-V}NtO_3S?fuy z+oWQaTU~0NjN-G$wtc;dPyg-t^wxfJTxi9#zC`aqFOn{59cVt!I_UYGB+L%0OU>UT zTjf<)uTEvYv{?*=Wa#88o%3I<2*78%>Vy!m{XW?CQ`}nf0 z<)`?1wNb~PYo|}jkJ?*qOF!3IZ&i4j6}OMS(1E|mE#DNO%$dNlu*-_{w7%3j zhpoLTO#juT_MtD3d;ZBqt)I=e>PxM6WmwyXT352kuh)IF3*ivNqV=cN$1<#TT&*kW zRdiZUCu^Wr*J-_)*5_>PQLPW^RdnLhx|2?gFxf%+uP(K&WzSdb&BiC3Wvzc|{g3{u zORWp*-3Ds^fqnf^>qL520`Vz*d;b)_%^s+AJexdfomuZQY$mZor47 zd7VsK42^Y**I2hmwN9;fMW}rd>eK}lzgp+B$)nbBZ0$#3TYeO#|2jOaf9l;8dR>`L z3ekMEexPHZ`FwgN=@|6-h&`XyOYHfiQ7w^PPq1NHN2gOVbb7k|&{K`}Fer{%-}vkE zP`T$r?=AUP?)J}5wVtO_r~FcV)zT8C^@ltT>s=|d ze}i&wt3PTVfZnY_e5x;cw~KlgBm{Lt+Yhx*AlLf*R_loBzrB9!-R<+M*7X-b3U#UV zcbhzFy@2eAvM@HRT9C#%yuuc%JPOl^AnH;$-)bKeF0ej7)q1}zeGVo>y+@pr1YRj2 zw|;=nRLaZz-S-6(4?QtplPAHXUv|E*``NjB&j+QbetznXOT%2>t+{vJLl--Y${er4 zczwPmZT*1A|BH5dPhh396%ApM81nhYLL4nl~h1WjEd2X`mkc>IMI z=6>Kg-u0LH9p5@U^W``G2)h5l#Pz|HzUbk(>ffE7ec` zxzYUj1LcQG{4;u`VEra6ddMRm%(?TE$SL(nJ-2*5#%uK3c|U)>wxGj}Rc)T{b}sYt zV6P+JAU3bNyWgBNJv%-4HovZ?VqN+V`)be+{bExdTe$D}j%TJk5IE4-DJOffe|Bfm zws}Zj^EQ{*yzUo2IlMmT-yhyQ?~#F{p80aw?`bd2Ie;2L)&8e!O%YEXO#)`uCzue-x^Yc?D^V+3FPYqn$vG&)jch-)Z@$tTg z``z%usZaZTQ~t#BuZ%%BVV-j6+=a%{UU$5gB|h+7rmaG?O$B@?1Mtoy}EOBVd;u>9mjr{asBp{C+>a9IB~)> zi|6xSURt}Z_eq~~me79Vw?Fnn#PZko?stkmKg06*Gkq2Jv~iI}$|$nWXZBKOHJ#zb^{BWC}hg&Tb8KU;IXdHSibFI>!7 zJgx6HFS}DM^BR1^3vM;>p3fiXn>730JG(B}bK%~?MGfNzd_1Wv;we|-zVKFWmNis= z{Ot`@zt_Dw-tc3^?WW%Oeew=3zgSuSl52<7=HyXJrr+}HM?)h{P0z||*W;(5v%jA0 zv!~CapPdc7>+B;(7LS_T{iTqANv5!Ej~xE!_f=nhcp~PWD$5N|-;)07%F*7v7fx8_ zg*WuN_M6fvd(KPA=eDlw`QulAJo9?}k9D1XdVAi`lG5$hg%7CQz4pY5osFp%j>asw zGQ91A+4FsOereu6D!9n<_>hdx-+TF&x6)JlB0u#P5=#Df`S1$@Lpt@-5Gq7OzK_PpVXb!(pdU}O1#seSwwHMVgpE&r{+E8zM+ z+edx9?SYgVy}mv0XhZsEeZ%wWx8JjM&CNYW4t=7q^^&P;&rAwgd@+0Dw`Pxy?>0T; z>D8FKkNlUHUU9uUWL!mhVgHZ;cg=a;>&JjY!o1{zuaheq7L*?I z`g+5M)$iS~((8uTZ#;B#*B|kNS5!K8o)GOka^JMhFN*g9PE|!0KV7nK)Zvg<&NTJR zx^?5qu-lGxF8(NQ(fdW4c79zP`_7ubxKqj--<(ZwzjQi%WW&(mWv=D-?i~E^ZuS)p(m&L31f4lkS znS-3iO#e309q|gUuP)4Vn{Z2AzfC@>KnWD{uf4m7dh;aN4K0jX}Emk=b93y z;_F*B_tRF!R-~WB%yWdeHOJcGZ3Mg8TIElkdCj+|G}BnCBf8cXoLCo5Irv ze+n9O*K*QLeW%5#fBbS};h05bX9oE$n-_gy=)m)pKR?i>olpAu==}0_eG|<-hSBb& z3lH`PdG5L&_kFQy``~{^MnqryG}Co;b)~`e)Y9)Co%wFk-sG*vzPR_qcS9?aERE~m z-gwYw!6$p}50Mqd%co()lJ}nq>UhC@?Bt(6e*U?|n|tkgcE!!l92}JAHT;h8PwuMp zd8a&PNc6sKL!Wx<&C4$?8qyoq{iaHSweSd;9d;R@3W^&i{6KxBtObZ|pz&%B15{-JaaQ+V|_-mwo=c;@Yk_W&WiRpUhhnTema074()=G2h?aP*YXsdT3O>_m^V_ zZrXh6$ybw39Zv~<%cbx7$3MwUdZf?kcXk$f`1TmkEg*4$PvtYCYF6eiJD+&+v;FV) zKbhX@x_c{of8T1|ytCPpJLi0P|GL5z1-FjanEl@1H`a`JFEX(Df#R2XpJ+>klp3*T zW9cW44H);i|F@=o#+c&CE5>d4ws^`nmwIl@{j~PSkN3NN_U!#{XNuI*uN{wh zF56iC^ivZaEU1oq;Lkbl7aTmgw=yz2I_0cSzqM|_1F2CXpMJP~ZM$Ld zqdRS1|7%pgx99X-I`E6tg=K3>M)|z{WyqSSkF#!fsqg(*tV~n?b3#!%qaWnrCJZiZ zgu&HY7+U!Wr&isCQ|ms$$rvJ>jl+erTexs`j}k8KGlh%CEyBe!UATG{3fDF(glpS1 z!nNHd(W>1`qLtS!(W?E&qILUP(c1eb(b~t=VD#}b7(0X*j2*`r+&bQ9aO;$7aPuoQ zxcikE+&k|yxceV5xOe%%;L*j+$)jr@Cy#DqM`(_`0Z%S3OkS4VV-V)ZcB15w4S0_J z;wtuU92E-w;9hj%2hkaHla5OFZT_D~`u1T-MfE+O zO8#dfKO-udzLT_M=*D9bub=d}KRi zIv6*=DLy=OmiP5b_9lm~TbiG~ZEjNdnY&+oWkH{5;m<5tvh%G~H-{g8?#4%Y4a*5% zY&a5isdaYvuNNMhbaF^WcvIJ(F4PBQhTqubWK{J%Ug4n;i?+|c5FNf@=<9zDDoY7p zm#3}g-7-{{OViZW`(DAjM?x& zZdUk+K_8r%kbXn>7dJQf{Cdh1{%h}k+iTw#9sa?@z^`3i%n9EW`R+@;kKY>JcVUck z!z~%%M{azzZqA;p@Z={xUEt(p)KP2p>I z1nlyfo)W(9Y{w&YPh^EhzPqJ!@a&ZEXk*kb+fK!WFWFZ;_v`y&Sr4J%yZbr)JG>$* zd_%<(6*s?;6yEdX&KEl7Ob$=(8u8fAucd|GFzeSF!!zQ;yRZa~z`@X^J?e;oOH zc6esa{J~^D=p;kh3rXi3_6DAa5iyOuGldCb^E~{~8Pg^?b7X=m%`mI;QHgs!IDIgp zmAxKWwI(JNBxRb?^78O$mGo>=W>R5xiX|=YdQ+c#=_wC$Hgru)!l{#~rh*(3zEqNJ zN-IiBDU=^Nl3bj-m`z_nBK|xaM`TLMHYMf4V=BVXX(;K7(gsSOHh=O9DD(1ivJfIu zPAl~4L1$FZ9^NSIBaD}O8TC5#l$>P9hY!GH$%7zG3k%cois`#Y^Q2(Hk)NMdP+-Rv z_!<_nms*&Mvn5pw9FXM)Kc^6%k-3@&@S&uu^En!nOEz?#49%xO*99mI6Xt8^)Nd*$ za%+Bqt_kI%&YztRUO$vhCU8G4Df+E0oBrpg6+r#?`4>~tJbXCH)NfE>e%_$u^z1=t*^Bz=z_$7zQ@7PC zN(~;<^K!E3lTg~fO^8wv8ApgepXOs_SQ z4y}ieA{iC`;&hxrimHN7cjd_{_FqZXt{utzvS=-o15_qYJyq?}J`1vFZF$0NaliSk$q^S@K^sm`a!igN_H_tOragBgB0tp z;jUg3f60fce|hr@slfA1foY3iY0~GJ(z0?3ii7?>z2r2LHbVGb7JZi}&03kM!kV(u zvT|@%6J0&IrS(LsQ*F-Ff}8Xz)+J0%qF*$GxCwX3R3}j~l#sCUXdccN_i^x!JMh}T z{aJW#1h0{KaFSP;LI3&>(_FRA?HFrijXDp`(cOywpOVL#!2jKk^4pu|Yv!!+vn<~& z`q!CgL-gH=tq#BZi`N{=!no__-jJV`mp^wljt(xKi=%|;YgPGk^V8|`RSEhzH#cJD zv=PJR&csIt@x83M1tW%qB;{od%uQ8KJt2-DF1qQe!98hQTr>_b6h@4@2IA9WG#hNh z=7+$i4GQ|yA6WQx{!W)W7YAHK~$m+48+l61xdY!lOL1?&as1AXlTm3`RIsh zJZ@%O@Az>MUC*w0Wi!V<4i-lV#R5%a^wG||( z_UDIjmcqT4ELoD84E2c(F-}UKc?BuGCr8Nm%9^>|B;zZ$cZ*a0D&QvbL1E*Rzbd#j zqG1m#Qt4LQ?1ZyIfmIm}!B24vZc=y3Z78`l!p*L%hmjk7Cq5GM0vvV(xrtn)iC)$~ z6}`Z>uSJPJa5A6MR)z`#x9ic<~n%o$EmFt*cH*URry80+q=$9j+1D-dpV z%a0o1<+Me_dd($#=b;t7;gCC0*=Xji!J zLYzb+;U6qP*=UX5uA)RZ)jQGLs1ex}h%2vehS+7SSgbVI}>=49qtO7 zq1*p(@Ir}qud)Z@kZ!p2+q`~dzJ`7m?kMEPyq&)7Lv7wxE`H#daQEi?_7J&Vb$8oz zLRu)V6ygHzO!nhgUPW)BedE?~IP$B&J7~vmBfPBn(01Zb73>6VN{=WWEyg-jj{eA} z)aP<#9Vd!hzq&hXS|66CA<(Mdw?4w08SXVKW6V|jo%cO%E)C(}{osb%rR z!yyc}PUkT6v7XAA?LNw@S$S^w331}~eMi;beE6Rr>xrrtcsxj3i1iUkgPEe!B{6J? z*9g0MG!X4HSmK`b9URh1yohHDZe8v^4*am+F=v5W^Se6mOTl~BjvwH_uSDF!jz2`& zMryP5ryoH3kZEuW7L|In9L(jt;YNv<)+D`AV#?iChBK;qBCe7TB_)4Un zZ0#`>ZtB^lYuoA5U%=)ahFEon|N2abBs*2@geR)9k;hN<+KO8twL^|twQG~pU)j6nH$l8)^9o@8xu zQ=kjnRjeP_ZS)P*GyX}`oi#FydbYiZ`u3v4w)(aJZWE=OtzN?RczKZ#mV6S3|7H2Y#;>cNp^HBW0oIQmhe6S<)6! zU%vr$@Es9rs<=k@JP|6NY1)4b{EsL9$KC9#iLxEk$Lvh?Wx1_BH@#sHqmhMq=fV&s4s5hLWAq2h)X!gR8(17tqedPaX?_1!athT=QGiZ{TVwV$o zDn?5|&A`keQyBylP!jV-S3m`!P)9+Ek#?8{nfueJ8td+nJAH#oQQ{tO)+(IMAn zMzSQ}GuGwVSeqHihI_eK4|kNfj$^9R;T|0x(_yE0_w&E#aG(x{>u{{hg;nvktG+VXzLPb$F`|({#8@hY#rRNgY<{uug|> z>F|9Wex}1_9iFF;%N05tqr<5>Owr*I9sXU1YVh&z27SD4*I|YZjpqkD;Wb`ibLXVb zO-l;Pn4cDj9sV@@&is{~aX;!rU#v5{-M+H@E1P0E<*?in7F2u)8d585Q@O*eVPEJ({p9lbaMFBhAZ zIx{IOC2_te)ld`BqZqtrHE|Z(OJpzO6Vo#y82%FCei4>7H{EDuw+KUsDkG^Ctx)_* zw&wY=)+W7#P61kc8l0GuG#|A*SRH|FY-|&bWN)k3#teGYzXn3I-{-RJ~Qsnq)p|Me_dboSUVw2{pIN6*T zz+%B11QJAV_I>hrM9mbJdfc6y!gw5Rii5m6X>mGUOE5Wgc2a0M-#5okV!GFfx4ump zpPHT#i7H|aC1}c=6eUnIBQj^;jRtsC8)~uV2GtrvB@3(+rD-CQcidy^9xqU_tJ94c zX;bDPw15W05Vq(sF6*=tZ?SulpV5H(O?4Z1g~INu^}JGVwHvBMknT3Gro-D&y~Zac zE=>B>{df<`+B^h4=V{^CAI6xT{H8m+Q}xEg)bylQl5rBD(~V#W8HTsnoiz>R)v$?G zohR$zoD(BosS(xjsnh54{Sk}WawQ@Ye5vAH%1Y?Wne)~Afg9WCTBx{;++vrpb5lt) zU%+?VT}o*?SPg7uDa>@KM9UM{vKraN)+7<`g`u>%UlbUrJ}Wkg+dJk<=$x68tf_O9 zgo!6RPi}qBpq-yvM<|b1ts}I7SE}h3y~fW?gtbuAD_WmC`5lJ9vD|C?iMI#h`UB$Z zewW~6V2wMAv@sAFrL|(I`aC8T?*k)Us?F8v-VNBM=dEet9}D^M10bXRyuI1P~+O(qYF4v9uKA_ z&QE2)YML0wCmyzO6I<791V;u3Dk0ko(o;yr=mp8ih-_dz!BYB=PFRp(U64WC-_fm- zo8lOj;m1j-e*;fMj2c~D2r*85zA?!??mlkpW==?EalA#?Ex#v3#+XX}gdQBYDu3_b zwS$Cs`!@5gzo@;`QALc1M%uD`zsf}6YmT_@8**VlKJ)y{>r*A~ z3=?)YI!^!H&)Z@aySROPgMM)Hqo&yn?fU!J+SWhawSB(3eIK1KVW+F`hoAd&nA}a9 zJ4}DL>;DlAbo^pZH+mhvc=CS)`u}A}bSM@+?k+nN3-f;&O8=b=|1TF4&1Agc!Og@% zFRVIOEMCz^=V|d?_lLY9H(b8K*}_kjWi|yJD8H>>Pl4I}_*egzA9vrf=y3BHmJij- zZ$bGT`TO&Giv#&h`L}f3{<1t(V`66^Choa?k6Fa;xns{&zb^l7<0nqUK!z-HW7eeG z?QRda?du0JH*L4frbHWI%II#1jE+fZ2rSAx;bE1k45GAwoM~9pEEVOkxRw3+n(A z{(>`vfCvDI3P2}d8uzk&g~$X90?Y=C1bV<*fFka1`E+k*hIa8PT|zAn*qo3Ih3jw>emBa0@wt2EAD3p zx$oNnx8vGp2=Q|YD_|q9VM^?PPQdF#qUJjkXI23d0HXjMfNZZG@MD3^UIc%Mrwwo^ zpzk$^A)~$>FbPov?`z$Vak@NHYA4?j+>LXJIKY0a2k1h13j!|0H%^B+fEgIC8o&#+ z{aXDf@+DETgt+m^2AqQO{Km;_kz|Us;H(15HvlGS)3xByu-Do_ujVksiE-bIF9-F} znoMzH`JHzh8N#`lZWF;*z(llbjuPUZ;Cn5g1^0uZ+25y{12Eu5oL2*E!Tn&ILwS|; z#v?ut7<+>dMHt^^9hxTzQHpV`2iz>aFxe)%@pI`gVTusz(I06osW@54Bt9Vg&Xz{YIy#VK+g zK+F&Q)jo*xCFsw#3i7ReZmM|*_<;{8tJ!XnDF|PeCTs>Afblc0LHk;&SHj;pjtQL_ zbr|~($OWF~KH`SXe?orHZo;F~tLd8cF}A-?bL1lCh5j4X@*Sa0;qy4`0Lt;4&Sv1( z0Jt01P3tLN(@mBqp|`kp0LGwvGhit6G}sQkoP=@9$N3gMFA(Bv=x0zd^$FtzI1zmC zF6D1v+yBAf))q(5c+KfBp>3QgT26WJ76;%R~ zyrlG8%LEJ+38n_X!Kf#;y7k-_kaVN~(w<}kl8zY*L zD-!Tq*o)v@z{hmZD{eQ&33LR%FT@g*w|)S5?sTw|`6D5I5wp%Rf9$3+i0ga z9`GTIXWZxR^08k~?)PclO>A$UW(BNA|B(kFr+_|R!meQ+6JN3a1XBXwX0+@3HOnVz z*?_5lF2Ep^%RGb_FYK%B8}J3!_1{u&_n9)kgZ*JU-;*AvRs(nl{nZ@dI3{RLz&u>r zj=HaFbm#=je(R)L4)Gp)HBUtXQl4^k*aSGwE45QxCk=M$fGMc6 zCT>N4DP1(!!DKJ<*_yaSo8@Kcs)<aNn1y~!Dha~OPn4e$YMybkyP)(zK017Pj-8st0yhX`0c+0+2Yc|I6tZG7V}PNT?& zWK%HC?Kn}MXLk;P54KS9!6|}9Yp}zR_b?4|JzaAFPQ-Xx!r5M;78e2h(T-0f?gKA- zl&1WS0G!21!~I-9`bR$FHIavYYXFC!T^Has^ivbV@!7ALadu`R%2@$(P_Guy1!$eX z@(Efk;3i!23=aJkJK(dxI}T@Rd~QPjli5Dx9xwyfwwurnVC~H~4+YqC3(hG4rr>-{ z5TE0WO&lP)RB{mqi220iGeZ-NEDw0`&9GO=n&<`?nW~8oVSmkcKn^+`Jga_=k}Ffd zT+;igW(5pFIp2AdU(lx@?7@8UWxwW|0le_sJ5v*r0Uh^iA{;RG0ZsW)DS#JhGfcJz z-7t3*@%dDXeF*e|{|&3%Fg8cS{F-d?T?4s9efuMni!Z!_|EVcIr4g_O_g!l-{(udS zYvLoo>?btXh3Tf?b>J(mEgLlWL0@<^0aDJq?Pyoqe^x^t_0lQK`Rr%E)&z*Nc3MDz zCMq#sG!}y2@T2X;9M?q6T*C25)M5dXfNw3}ZGgd*yiU~W0gqywYpXSJ5bZi@s0aJB z*o~Snvz@0vf2Yq)4O`d`{9c@UvEV+>&0L3Tet+Z<_?tYZUI)mtyMz0=9o%6<8a>gvP?AABH=A3x66A{#{^{KtihSKY+J z+il%Mk2e-Ag3E}@9rAFCty{~YMN5{jz+t()Wry7U10KJDYj0c}MqOMlTEy$79ox5W zSJ${Jg*W~kmMzKZ`JyE*@2^o=zOG*{+Tq>I`pL;?pDBywx9>f_0sPQfax(F2+419ETpeQp zh5w3{2e!9tKgKqAef-8-qfnqF4ejH)^9yfYFks#G9Uvi@{PAwATz)+_OkU7fSkF z*1P1E*1}*cg_`A7^38@Qf6)aDjt$>XVy1I>Tc5gHmQqN1V{ z?mSWrI&Ye5O?%lh^o;`cS#~*(z4j*U~?|vu6r=NbR?BEevkV7 zQQs1a?}%Hmr;{VZ>Kg1xq5jJ*A$FpEBkF&G`ukA-AnG4R{bL^W1N&oM35BfRB1BFG z_S;q?)`I;Q*DFxMT|I?t93te$6NTJAPslIV2`fx({{&VYDsDC!O90?KNTtB;SRVg6w&-kVC9O zPP|vhdFzB+^OTSq>xJC8*Q34}^{+ww@u)u?^)pd_HR>0l{?n-c66(K!`sj1bN2q@Q z^|qnC*N)b0iig^>ISTzrAt&w8uMk)5}JW>B-dl2tVo;Sn7Mu(0L4Oh3u z4-DvcdEdVM$F>#-9UUDN6&@ZP77`K~9zQt1-@o7GW5-?=uNMf9!ejhJ;X`+X`t|LjKaYyBghq#kg@>U&F}w1LL4!u=II>7| zOtg{4{MGlO_$yI>EnMEWkNGkn8O8RaqoYEi<1abCmoJ{9K!9GLe?01kgtCFK==i^$ ze||6bbA{vOea%2Js55#z=ZCd8eh!mb`27T8Ja zdV~Ieyow5kxzeASE#Zun>qVq8)nT_{Kv5qAch1 z>^>nrEGFc7$eQt#{54XfPtWUOLczx!_?PH*$LWiGR8~Sl_iaDuq*jHJX)!f4t;)HWihir4_KjP12p^dg#w&%;)L`WNd z?$myY;m_T8Q%gYmmg@wvjc>3w5l|T60bI%F-3h&jGh$rB0)WBDG_0?C! zJMX-se1rX;?G>MW_8ERdV88h4tFOe@UwcVGa?WZ zA_J{fOtv{!p#C+eZ$bTN)V~Gw=b`?6sJ|ZdpF;gNQGajiJoBfY0`~psr~I$fO6Hln61hUi{zNw_jjj;6Q#d_wMc6yU##BpYGi+g+JV@Z$Q6({`~@b`t%rZF0Om` zxy;`mWqbPg1r7=vBrfhdFd*=fu7N#Kp!>P!UV3q#egT2!bPc#vzhO293=H)4?iPSL z1J3JyZg1a<1_qwv?cMe4&Yimr=+UEhr?YwwyyP73uDlWG<9A^ftxI2&4Gg^G?9Oce zFTSSpadpmRUC%yy5Y_>G`u)}GVmw8aOK^?;2VH!D|7C*$0|)s7fAl|a(4fl)4eB#U z(RVSD8L3Ynbt$rXAfDF+1>q~JtO2%{c;6_)@~9{L)ZUWd9`uX|w0c5@$x&PT`pN$oefMp=3;6l59QtMnmgX8%4 zA4%j7+r{eUj1u|lgG})^Z`iP58s?qn4&HG1^up=gKWbTRTp$UTvX3&*vqp81(P=Ci*bUxIuQ_9})pH#Z}iie=H6 zeZ`b;a3y40my?cy6B>z*xR`Is;jOd z?|j316z&`w zr_(9_{qKLPYtm$7_&n+}WbVkf-+tQ+x%(MyHvRO|Px8C(zWe^Y_uhLJKhdxkef`Kf zpz|Nlw_(6xHS7LX{NYbY^wpY)zmdsTBXdlQO#I0!LgO>9nGHG!iI0(ivotcsTpHQ9 zXTaZs|0}P&vI^ta7c#Muw7mTC%Zdid2lksJ#{m0GN?wQ~bpkr9;Jfd>E19Vq91lY3 z2X%*a{`IeaDH=G2(0|Esz+OGKa9b0uf5!b5K8Frp1scv&e|sG}c1&U#Qt}@h9NeFB z%*-*szL|Xf`R66ZT*7BoI?OTPm|$N`W#V36UoWXEjg5`!Gijg=puAB}I7Y;6%QsRc z?U6F%9VxGVQ_8^Cq#U$O$}8)nyzwn5%MM6+^w_a?p)1t?Gf4{nmtJ~l&E=P0J`6tm zYS>GO@lZ6-=5P$iSJK0=AnyFk@&DwLPgLe-@|^r8zLW*hLcGa;%4q)AQii`TrDYd> z7YbYO*CJ*xv>r6PD&;`X(Emj#`#vY->W>f`XlYq@Cdi|V!XLI?8kzVT*%%80{vJJ{ z9#CGUeIn)9Mk&MI1OG__#^9QNNqH4$nDYVR9WB`J-YI3!OG>P;vv@|S7xqah%d3VC z9oiSNu#$9O927kU9fag1<%s-mj}G#kJm(luZYck>yI8X+geCz0asPJHFdE;78wFg4 zg9hv;ODpIi{;BUudHD-&wKyZ}!GFvd(y;%Of6Pac*%%K(;%~?~<)7n0xuR?sv{1(> zXOw&Dh5@M;Op`v9@&?cl4f!7fev^ig4N_kBwws0^=mPf1Wx!TdoObj~lENRhcn$XW zhhZF6Q_pBy+M|Q=?l~rgToIE0e9n1+b!lfj)71UYQPS|Slu@7|0yNYd@+{He=Wp@k z@eYXT_2Z8}O3X7SWzt||gO2vb#Gu8Kj-P-2S?+vxy)0T1Egzp3A|IV=QHb6Axs+4( zNjcFeWejQfP}gV3%m_oDX_KJOv`PJ;2h``mkSFT&am3l$p+Vt~@m__!i@vbyD@hCO zA)!G7A?2QO-IfkRz9{RIrM=rX$&y7QWWj=w^2zj3iUtyJ+d(OB(rJj@E9H3L6bTwy z^_ev2`g|pA5^QQe*rYz7!LQbBThYw&HZ&;w`}XbIYX33EbDsazcu;>i9~k37ec-jB zC&V9iPu4v)QKSzxi1yC%{f2z0)54u=h&-p=+z@4^ig~It*Gk2AmH($Hbt8koeP1ZeAWLtM0m9 zmVt&M(2$qm#y|bAlnGyfh9)Vefd=X`ZBjIBlA+I}!O&;YVCXY#Qo!>Hf1Cpj{!~Z3B<&(G%`%ime$p7%+!~1hAj7)tc-o%Z#8??~&)82DkL%YejigO#&ODlrq zv!G$~vf;93$@Q`VG_=*{f5IlMnH?%u-8oujr-sS9XNAeEnc?!m1vkr2K4_4n!PCc3 z`V5=I)E@q@_e%bO&uZdMyaqG z1?n?tpgz+kt%Y4B4LPLYj?wbI6wr_yE|<-WP&5!v`WT#_4Ig6|<~O8Y$vPtn`G#-9X4s*{1Ew=)gu1^8digb2SCF; zkfY^E;R;dOq)-nZ<7wzU(y#14@i*lE`s=UnPaKFRPKC76z;W@U<5aZ#@=J^Sblc)pZfd0n4rlMH<>giRt1Pv|uK9dfk#&QN)Os+$HPs(cLi+vAbf!(JVi@?ULa zpO?Kj=9qui;2cBroH=veBCga&>cFyP%M=Zs^3|4>wqwF;+63yt>Cy+UR<-&V)aQqE zeQs0ll>QI#=h#O^MsgfvX=$nQz39_me?Tr=xUiLmQ_*p%F(E#*Nty3hiYJT?gG1lt(oC958Y7bfC9`-7Fz}KIQYlZ*d!Go{C z(VjUoXU_ZzezY2g{QP`5VZsE7vqkcuhaQrMDal73c|_sE^*#Ab8aNklo}gSYa}7fp zXiq7JoD0dLS04E!V^9Qbb&qw^_e#5@yr;af7;7Rl2U7tZmUt#JGczT0Lh^dtxN*ww!Fd>EKZ!eW z;ae+QhzI>8&rBMOY|uf-_LwPCM%%QlZ?B&&U%1DD`PuDbaDFad8YZ9l$1M5pe{GS+ zjvjp%<9){a4>(IHSFT+7JcrGh9b^(61nN8&s|TG~lq!H=JCyngHc58Hz7+ObEu_pZC{I!-)sZd7IJ zv_ZqbfdeJZuBmb0oI#nV?_?i16g%Chr z@Ngyd`NbDsR5Xx3+&6@NC>jzI6Xp2v@(ugP=LLcFO5v_HJhH3H>_zV=q= z0d;^n!FFkbf%|c^v(nes*Mf1+$G%e&kY>z>ah)?s%6~9qkp7RsSK_mG?_Pxu##X|& z;HhGz4;XI=c~dgLIf{H{d1hXd2HH{bl=lCrr=F5kRaI&ZtgfzB^|(g>J~hF%-G(`G z32=WI_wEDIjC-7E{H7Q2rT;_w4}DzCYw8;zapAbrE7}ufPQJV&3F7Wt0xVPf( zDgU$)p5xKpn2;{+vEO>@trF*Qm3$jK_k=7*S)#1-KIZ`9Zp25hMq2*|a98-V4`cm{ zxo0)yl5-I0pbnBxv>&u}oR2)mguLCdWs7|L@yC@slix-r-IN{b4*e!xQ)bv6=K|Qw z68z-W@8vsjXHxqQp7SE{H!^83@~OszG~rCNny)BhtV7y}FJ)^hY$s_kaEE_d{5$2{ zjrEEDYX1lNrPjZgzgLnL@}JP4gV3OZkUXV*p)N3UY6lo#f z(Z}zxGbb=U`IExmkbn3J{mCchQ;iAzd-^}5i*Y$-$`;}4ufMMBE_pzGrMwe=>H*}j z5Z(V#nen8c7x`)If5J|*?*EVm&YkpMX#Xe&oR2tnlE++glJ^`3`U1u{@R~NCww87b zYYG+D0L}kt+)0O$e^1$HE9b_wp|_rpvd(Lk;aE`S$!F3?S%(}QhmX*NvEsbSGZw#P zZX$lCOXr~g&mjC)X7<6e4?L&whm*8na@o3QQH$szkB2N;iRziz4Z1p z9pc+B=nv@+LZdySeGj~CY#!HjI&}UKn5E+>-B8n^mkzt=u!j!)bQq$;EFDTW)CdEB zj~Us5{5#KSbwXA8x6G914t+(8^m1hEg3Dvbo{86tsI=V=M04#X_T`JUU=Zf~=%l2i ziSYNsvF9I(`$5R`xi3U+l~cC;akG>Q5$lP3-yLJ)UNB<{S0T1@EB1!p|4yNFDjZ1b z#hp8Mz7}h{dC=)*+B5i^M`3RdVlMa^c4-g%^L*@+-2ops9OZ`~_l3W4cot$DjFWLM z)Pnt6#=IFX-u=ClJFqKZMh+*hH|8dyW?_qP_ zh24CP4KrrScq8LnjIVG{objRej!4-6+Rq@?>qk3{eT78qJxwJJ^qsi&(GHcvgGcmDlWnOaHi>p5byfZ9XFi>92ocI83^v}Gv;f^Bjde{GmZd!?_`y;h2u{jn7DBMd4BC|wWrOPGxy|;{)xlwz=3g3#?O^J0td$07~`QlGDgK% zC*y=SK}V44^)d0|JdS;rIr#qF9h{q)4IJomkSFx5tCoeSSRdmv+(%?$-^`4?GJedM zpQk+XEDK{ajP)_bM0p(aqN;k#=%0R&5ntrINgZs+d3oO8XCS$(%E}dKs z9rMJ2@;J4PJmUPm(g~iWp**&U)A_M~#8VQnuQ1gU5B5ztCuCy0jWH6&3mK={@|g9s zF~cu^l5+lD#5{om&+||x7_((E=%-(?c=6&nSy@?k&cXpKTUaL44-?`hE6cf#8@BWWLY{6 z>@0S#JC1)V`u^w#-f6W#e)KOXgVaO%{Dj1VnfzcT9^@0p;Z*6}m#bCGl(D*%z=847 zHtARPkNrRR;Dd=zKKbNS#)jyR6A$v7>uRp4xo=85$P3ydK4W71mgfKrooG)USx%R= z_JALKZ0uLe!G6nZ^5Nl!A69mcc9-)X?LTFK{GcqdZ{os4o%rUn-SW_9??Wfr$Rl)u z^2pR)$A{kQn6|Lrh@%@+mYYg%cTr*FP(7>>Id;O_O3Vvv(J?$_D%d$|Asu1 zugt`Qnf-A-!fzxf+rYD`q@6Oy@glEDH*GTZUW$KX->QH116!l)e|vZsJ}|y>An|=i zwO35Pkb6#)$3M`w>Ywx)^DkwI^s-H6+C1tUb(?fj#&~{*XD{%*0A(M3C*ACu$&d86 z<+~^UIR?zMy|jHCXZ$7v{F;iYymnjj;6Rv@ual2&dp8oGB;1=2@>Jf3J z??BmZc%e|Pnd|lqXXxuUt{=I6Vt`8eNW4fX_Z zW*c0KbM3{w2(J6M?hMAdlY7+ksfai278BPnTthwm&v}w+ne6!STay&!{*zZ5a9Bd^JyQv5i#g zN&4>e+qrJw+G%OhSk=d*y;3@`uEqDfWmZ;}IwQik8po3IV(?!T#=nMbHOlW_inWiP zNbF|v5A%YuTa3x^`~d43GPiNrDEX!HUByqXq3%gl{U0&phq6aoPrJjh#CO*fPid<; zmY=+wFP~a5R-NZwpE*vx^;`+N-)z*!cUP3JM*Bs%q1~p>#qpp$^~8mrIhPxC30dA4 zfAY@oyY^z9WdEFxxK3c(w9AM$TXYzJEon~FR$VE5b@ShUh#L=@QZ+Emho1etq~h!G)~v(wBA@qR13LvE!1kSl}y%}H}+ z%${*CmXGI`A4V1ILZ23|Iom^OD#(n$ZsN$LI}qt5L*A~8KZY4-HA#bz`xCw-*< zg86fXr_V@9nw^+Fcy{WH`E%3fCT9$uF?aUx#Pr!$E*#=-#`_9Wlatajrh4{tq+zB+Gw(!!)Pa~l7T^iNEWnzL~3ok{ck%?naPXUxD`;70l#(@TC0OY?mzdqlIH)6Q*@k`qUz6IujfP&b9 zxPpWNYk{pGr@&rNQ&3mXP~a?Z6^KHgLUUnIp`|dkFrm;|Xe-Pqv=`PC))h7sItyKe zqR6MnTohDfDT*yhD6$sWigJqVMKwirMGZyHB3F?p_9-?O2Nhe2V~Z1tt;M$DoML-% zO>tduL$R|MKVnhhQ(`U&DzTKrmL!x|OKc@MCH9hw9v(!~8%6!Vq zWkF?@ve>eOGO)>scX$Kv%379LW-H4s%PGq(vzIx_YRl@%>dP9+8q1tzO=Ye!?{eSr zfbyX7;BrfOWO-dheMLh>V}-M#slrv!Tp=pGD}5?`E6tSwl|hxkm6poL%Gk=dN;K}m z@6!U*mDiUylsA?;%bUtw<;~@y!n?w!!neX)5l|6S5nN%fa8%S()K;8n%L$b!mDbA4 zN?T=iWlm*orM=QoSyNeCSyx$K*-+V7>8xz3bXAHf?<$`v-zsxeKvhsxaFwMhvMRPJ zt}3A_rOH~BS!JuruF9#(t+H1+s%olgtLm!is~V~rtDIF$Rj#V$DpBoS?NjYrZLSWe z4yq2Wwp2$}$5zKxgCJN={4}k|EXXd%EpQan7StCs7Bm$!7kC%?76uds7e*Gw6{Zws z7G@Xb7CH)R3+oFT3!4g?3%!ecivo&*iz18Sic*R)i?WMyiyTF@MfF9EMNLJ`Mc&1} z#R0{^#gWBv#VN&^#o5KV#g5|I;`-vo;-=!}V(${)l7N!nlE{*{l9ZCnlI)V)5=TjG zNqtFUNmEI4iMPYo5#R`RL^|ReDUM7>wj&o#Tdkws(dcM$G&{UYeM|J= zkcrspglcQGtvaXLUR_gNSKUzUtacF(Gw^_n2)mEnY!9+q?6LL)yVY*9=fM50vDeuf z>`uGOF7kZx%y~h1mb}=!ggk4WEiWg}o>!Asm)DTz%yZ?5e4l)Ceo($8KQ=!h-{JeHR1GXt1FVy)OqBbSn_-(Q<+0@n z<<@drc}}^#yr#Sk7RL!|BP{s6Z45&$>R8M1!HVBm2FL~%oASM3@goaTpv5)N;yP%s mD2#<}BtSc?&<`6lBuD8;4YZ^VdeQ(*ah9TiKhytO4*VaLUC_h; literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe b/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe new file mode 100644 index 0000000000000000000000000000000000000000..325b8057c08cf7113d4fd889991fa5638d443793 GIT binary patch literal 105984 zcmeFadwf*owfH^BWXJ#sdr(FK3XTvIjhE0=O&rh+%*Y;@2r6h)P&62^qEeUtotB*9DH^Zx#M z|9Sc7?EO6ZxvpnD>sf0(YpvAWu-4^vxm*SOZ`&?cD^K}Xt$zRUkHzN^r*9bH`tPCJ z&uGnyZ9ik~;yacHmM**J_GP!+6{x%A?z``a2X4JBuq<(R;EuZk;n~*&?z(5uZRZyk z4=c?!{p(8>-uvE-BPQkkkNbZ(>0Q!CxBPa}7WMqir0=We+DRYs{BYu$SlZ0ZU{1v4TJ-H9t_RLKHb0klz%{`&Jb#$WwV#~-baJ~c z;^|ZG)p_!e_k5SjBR~AhJzYN104>p+5B#bdbCt4nDd{wldq~}Ej=Z`aJ3r4gRlVf7 zelv%cwRx`7hD%27U%qPz11NWspUe7RJ@Z_x&QQO!^!f4IR>t}A;rsl^fMo8n_=Elh zT&{)ZFI#j={1%tXx>!CikV+m0}DYHtETx(sFWQ<}(`v&e7D2l5lFe zt*2t8<$5w)8nAvF097haqD(4GUP@o6r~Lbh@?4f(>~gJ_b+P?xKXSRYb!^-A6@Ah& zeO3(WlbnChXX8Tp+%)pUKK~$n&KT3*=V{qK_2m3gubzyT`mWQB{Q=YSU(=bJd000; zuGkwhyJM;8N42MRMa^!j`DE#~OK)zAk25`{Dz_sP%!_K_m!o!jw2Z>xs-u}*x*0F6 z)XfgvoX?z%O@W&`w)OW@q9<3C2Iht4hUSH?4PB?3`{}njW~O5)&shu-_$<9z9yOJb zinn9Q+bXSv?1_-Mt+|bFMHJC~&~EKIZri#^8Q_{^} zn(dILAB|MBnJ-!C(`61)ZB=RBQw6|3WWE$Nw};IwmZyXzG`H*KF6&*@`W~6;>5OEb z^fF35%=;a!*V)msW4ilD`a3M&laPx7bF1}J&FPm;AqYpB8Qp<_e!rRRH*9u9&6jj@ zhxMb;QhtXtx{}_QAG5o1I5TIS<{s_gc5DAJ=1A|l`CO<~=!f;<?!jGBax;eL5W#I~_?c-=>$4wl3nT4|+}_JK?D@ z-^tWVYpEY8`0ZvM&jUZ}_g`r7*;8^YJ~?dg(5KMom8tnNFoSzu5c> z8EHN-wnFwo=|YzDxuI;lTV=7y-;(jDPE|YBS{XHaWKQqv`l)UD#LeuL@|$lOm}~#O ztk%s}bn}qyPtm?^OmuZZP2@CtN~WL&(iJne>gG%A?r<_D*d8kltQSVc_TNXz7-g7dPhlR|(pk}Mop#8!&9Gqj+|pWBBk37-T^@zQ z(kxiN(Dr{n`&w%}13XU6rDUJXVIGoB`H#{flMhLAG0E?+ILxwpRrVZ66E7{f4tjsB z95A~1KD9oimcr-rKoQ7%=qd1q97S=%+PYcZdeE?}-Z(TNJ}G3rXsze$0h7m2_b*a6 zHOp)J4+!*Coy0c1d2f7p)D3#~rgutPDgTct7-|)MN;h{}bwhKM>X+mqbbIBc-z#ohc-wN4G;S|A#u%u&$Tl#+LkS@ggZc&KaAfo3GV}tImv%(bf%@ ze2{rU(7WQab)m&;W;icz@S+><1J=}1`0Dyl z^6S@b@w8Osx#n0Cff~ng%D-WVTDR=kT@K07Q-(CIo5zLR1@|l;-B48=*BYvZ#fRy3 zyB_RX_F=}&KA=AQLdyR=nvfO$1QJx;aQP^?j-44|%08u$wh)Fh0~m`rdZiPUL^mp|^MY(%X?56z?@a%I66Srb}-TbDtwEL@GWAnVa?IZtdYV7G<>c zt%;m^F8D*2Rmf{aTe^{VRc5y;6MvNigz+3FwZmEqlPvTc%$_6rx!Af$wZT%lGEYCA2!EFg| z2?w-oTlF<^Iz>%z@fqEGnRz7q);eg+JB!NfPpu*&?za|76M$^EbuDkO4b@4n zh>It-!76MCl~8bZVzqVsRH`Ir_;hn^n}9!gvTnAts<&BQJ?K9M2O2-cZ0I7Z+4D5# zNWyDPy+levU_JkNHk+wxhBtnyZqD$TEvi`YBT{Ur6`7*iW(YHUJ*tKL#3)0R$=@=g zB#%SKm;Z^jI&bh8`_Ht+tlv_E+LeLOTu`VQZYFA4&YlRFn`%VZct!>aMvb*@3-mAK zL9o3QE^>AH_v-WR_#48tf`iXmhhZCIAZj2|RW~YenO@ebtvl_~dgDlF*)V=@SW!@K zbOeMP8+|IPPi3_Qgi7o7_IPzY{7|qyxF^0P^L3aNp}zs^BcRABpc2};J=W_2Rbdyh zwT4M8kJQ@6!Ktn5C~FT_!jr~}ge5FDekpJ}rbHGw>a*JjioKY%s}9WvfdIke3O3R1 znE7&*=kiJ*yaE`+zm=Uolg=XYL4+(df9fJ%G&BEL*()=&bwww`_o-POQnP9gaB81a zZyZ*6hgIIjK-AcnAGN#UjJaFJ{7ih4wr-=guDh%Y#FZvttF3v$l&khn)N{xdHxBJv zvC0w0n!9x^atL(4>tdn0-HCwp-gKBihUl^$sOHU-PRvn54`})=o-USNCU%xGEYGr9P1@Dez2r zzBw+>)#1=5)ARO%JlB(=3!ulsR#EU}Ji!hv)}hyRZGg#hB|YsFv5rOBdHMH|<{C-U_c^dS+2L^R5t- zl>f+Sd9FxGcSp^xSjzt~Y!rl3Z}0OMZ=4=A3pVO^cGt$tQF&40unkvk96lcR)Uc0- zbmp@jcGPZ@)}wZJ;%~I4w!Pqu6^y!E4bv80l;?8AJ=XTi6|{H97!XUCz6Gu!OQ&V| zQpL3lLl3^Z>{5XA>gn>nXT{g#IBfm>zpH=e=w;99z3=Poham#b=mS|VD=1^l0=)RPZXqf66S$oI!H z%!+cj1ai|0K%?fi2X7ZifBHVX_ha4Y%U@PI z3j*rX8xOfS30F+fQz)*2?JI`qtp`M0N4(LEeFv<^7@c0WPk7^U81MMmorT-Bu>nrD zUIfM9xa4rsI$eMNyDUqmF9V_(z_STUSHlu*w{909!ej+aR?uVx zO;#{Ls&D_ys-zY=x!dCpKO9fxY)_^Yln&zIwS=K@r%IqQV0lb|<_EySf%&GfC38tHWEp1?}Wraqt z&M-aE-cMt}u6xhcjpKIQhhDQ{x2QGSWIauhq2j+DRIqQw!%;N&+875m7Q2>Euh}v6_ zQ4~aE4=E6kV`XYZY$7`PLwdh|+tTbtT9zdzup0iBit&M7P)`jaSP_ z3rR#oj+u*KXOuvo^q~k@uwpfwZ{|iF{g+iOFm%xWEBJQB{!JFny@%#=ynBhYi~(k` z-S#WqJ^eZZmohmyD3)4;68j7pf6vU4YOVR(6p$6GpX;pHIY!^{_$0k-aK8ub9ZgjJ*tc2a7-yD^hjQOynvV#x|Tvc(<@geCds;wl~(*P3J4(C(^^jI zsJp1GCsf%GKiS&C0JCGgM#j3sX2YH%Bl#1vF!$7$LMXC2!=2VvhL;m5>R6JsQu3gX zFcB#xBU&k;q8?a!l}rJ@CzSt{`e0W=1g1!<92}&U`#70=XCdyd>(0xkwc z;~<+`S{^prZU4*{fLk{R;?dUeL0i|Zt=l?LxIGcK6z>_S*jr=nLWl#85~HopV3o2H zdWctu-1h~vFq>}+n|EQ~S8* z9?>P%gn=pj5e*|`F?|C-v@W@t#Qk15cONJ)>b!_;=nBz+=UKPkBMU&22V~kH>Y<2-KO0uKekpeGzakM8`wHM8}qcLKk`vVm?*6HApI*6 zW%v7P%>6ayr|$c`(e~q>knzsxv&@16HFthc8|n#r=xtSQ7WvjM7r0!(Es2RrgxjgR zyK;l*RD)<=_Hplw5?26nFasntUu5>yUDSahw!8@aQQUH{Z^g)-871EMa48I%VD`n` z=KZDcY-d;Jxvrph)pJ2S-|j5yO@%LHD-EbNMXw3H5K2HM5Q#3-n3t4aV}ouymjtN=LnYX zXv3lq)+qL0zo&GoAUeo+`+@o{0z1A7Arjr4S zxR3vLMH|r+*_Yirv@^1Ym(`iV8L5KOWCUG8jUF>2?8Ta0(AALrf^bPa@%bQC)UMgH z5_vqbtEEJKWi^tKU71mOYThnnu*Mlo8uD|7e3Y^UEhQOW_T!@L#{$T*R<&SH{q*Gg z`s3Q89jO_|<(gy;7lMey%O`Uo$i?7Wxy!&TYzE&isG|fmRMbpIg(}I783&2h^s$<9 zTf#3}eTlD zyXdE&^IY7Bl1bFC*41*@^&L+vwVJ49R8G*Eze_{by`+*Q=>~cK2Jf`>)_h?cxNv4i ztM*vtFSI9O5>#Tz&BvwHvBK}Lnv#CZEp$eM0w>_Ie#9_9#T?HEW$K4FEUq$=D4N5N5S!L82dh|_#jCcqc0CN%Xm@x9)k@6>3?3u_{|$jB29bm8x}I&IvP&i zSdtkV>gmXfkK)%G9}&_vyftiDVdsoe5pt!{^++LMvr}<84_~iv3f1W5R76dzTqed8 z&@Vf?$Kg}ims~#$Y|fCmM+SVNdTr;3eo)QlRYrdvnvh|}k-WIaIFg_EyVdkD`xU*j z@bNpX4`tKtk+*__yuqu^|B}9eSI(}&nD)#xD6MXetK*R4>RM|uKnme*D)g#xmy#Jz zSV!(4E9seY1~U4(#X`C68*06KySyZ@lo)rG)Ma3^Wb0in*GB)rN5$L>2aV$u)}xXR zcHTQiH;307Q}3IW&>ZQ*`lw!-i4Q@-@@97GrkmS^mH9bV2pwFfU~-74S4LT9(_B`OGM-lxgn`S8n$JsBSX+V8DXObj z@+@bB`Dg%9+WHk&h(3sOL9V8)-NO~L^3^P0RtFHNK#$cepdBGR!%$%=#;#vU z@_CeX38k|8x0B%x@624@6Dl#{mskrgl11NY_F20HVb~g%!W07p+rb$R&14|RvnI>P zhgp-~mu*}(*=5v~xSSJ4sV|g%i8JQJvx~}uj;~SHU+6qLj>~w3PM^s*s^de9TS{D+ z1J*Y_%${Tya$-0q*+*n$*eJ3o9F%hI50vFbYt0RE(dPLHx5{YE_hu^fI!`wVh~u~A z;cjoN6tl#{TkD5|2=!HZNn%gMUZb^%H6C&A(5grJc+np2VCdD>Xe3BhWr8s+fMO#b zz0r9WpszcPB38$_InCYBvq>&FD_8V0lw49YUy4FBUDhN0MPHjtvilwo#H!;ndvMr# z^bRiT42szPtNbyR6U3q|I++vxZ96n`9}b)>_D5 zK#M|FY&)4T({t%WG>S>jWju7#AK+mYpTe&-?OlPXoH0-esjx^IUcpahwAp8@Dy>G* zP4@NVY_sm+cdfI)I)E={fuYlrtvi_w>B;GP*>FM^VO6+wZDCjd{re1``+S*~=~*S( zA^NKoJ|D(=p~#B0)(dSiQ@NL+&pEDmNar51lKM0dMuy@O)@`Wwo#P|rnM$Mb9*9vN z@ro8jY*@(VGiWO_K{uO9)c}$nuk@M9CXF`8rsrX)ZhAgct$1!0MIYtYN`FbuLUKDj z7m+!%z}432Dd!F1Diw;6^QGIxybsO3FSY#_b&F#3G0HhBFam(co$o2+1A&{j%F5=E zFs6NrLU6}Uxp!G$+h5Yft)g@Vp|SnDN$HK7WbE*M%0}=;Z!~#lNi?}UAohZT^&-_Z z=6&88bBY-%h?@6R)|BjTs75 zd;pVHQ`Y%-AResPT{Ze%6sEJiW{A19Eh{whc-&iLBX+m@f}@w0WZpppcek0bP9N;s z5OYaqQN|sH#{+JdTm&y(K2Nu~seG$IcfW4VKtpt3S(O8|Myaew& z8lP+gT`+;*;!2piKj(#*jvfZGHSW%ky(>5LW&fjKkTpvao3uNtVM7PoqzUBtY6yBzZj zt*L`tc;2Q@fj`$e#-VFg-xvQzsBEX!^ekCMdU$-M-5tNwNSDOVGSb81V~j%uiSI^) zPyROwM9f{rPG9=BQhmcmg=xXQ>Yh&26oO&K&g%3URccRW71{ZTdyV&w8}A-9cIImv zJ}k^ErJ=;FG!hzaXX=df-1uxGJt97pF3*v^M;nKRXw756k={;M8+-2}dKrNmG_cjm ze@9f(YBh&3jFU1~awl+}D#DgfMP7fqzle__BQs?bnV^akW{dn)715f9Ih~E5nD2z4 zgsUpFX2&uVy<-Fk-|S?kiiubQ3vC(8oq4>B+ROHQb_yFBa+pk%BqOJVlL>B`6O3gu z4*)_JLLfGg$H=vTrH!tX2}TVAm@H7n2h{S;yRY*BItr(Hb*txambjK8iI zvO7Txm5r$fTybnj3l8*Dml%n8z11bI2G%x~nt9CV^R4iuX8WvFYZRl)jA8Bd$y-4J>fJ_DNma z|MW&VrN`+~#60bYuu;N>k89+GS&6a*{>sPCM0tVHnsu7(oFEOb5OQw}n5!LiWA!tS(So1 zE(KxYdNR^r`+wUm2e8>^`~QVE=|H#r4ZN~CK2#S)#t|C^X{)v9c0QXanY>=H&6@Xj z7Ay6$Qh^Sd0nVZ2N-Hq`X1Nc6*Kx?_hS8kXp_HCy{fvFYy0>wHOP*i|j1YHe!|7}= z{dN{Xai|>5AjlPCunsd{jtWbA5dMhrVRLKlE@!)d>x`JNG%@Zt0yby2TH+<5QFhGV z;J^As>VS0<15r9kc;ZE+0nUYfabyLb7?#M{*!A4v#^j<6y<#|3?F|l#m)UJm_b#LF zyk!Sdp%09{kt>F@BLBEL8r#EEY(+E6l_3K2Ghv-iy}TQ?3WQ_)|ByS(Xq;P&@a@&pzIvD6$N3l?NZ zp(JOJqmu>1gZ>S&H)`C!hc&IKXshAcSuBZS!dF=W>} zm2-crw9+SA-*$2qO3n(!2-u!~ADQPuX9!d2O4P+tlfE{ZiP!Z-jj2ani86JcWDPkJ zv`iKp6`+^ssTl!fvyyZx&!gmw(&P+pW=zy9Ix1=nA4mEOuRQeREYNRwx?BYy>`$rH3=qvT)yaqP?+Nim!#{5|BMdq*q@vym%$9yH6 z$dU+wS<3&l*0fh`+gio(gY?X9ZxtoSxz?RzWW~rn`bAG4u3YeVe7J5#9y1>6VjYg5 zcS(;QCZsmfAlE=!QN>RVnFqrxdv(M-9Kxz3Iqy%X<3G@v-W&?t%muBA`g5HJI}}b` z-z7443=)GzqUC9dAdGLW50!P)b8F`3&@bKTA4 zPYLa*QTgqM3+Q)=`Hb*Rr+PU)&=XFiNqO$brqO1rbba}+1VkiU&I81 z?b`Rej8khW1;SYFXiZzdCZlhL)}*VKh}QJq>SdpcRim#~Yr31dT$aNz z_1&U1{ZM_c)0&`DE~R*nnnR+-7EX8}Kfo`jo7^UFP<`#`^JoK&+S|jImuOFm_dqR` zTt6<`_-tR;>`Tiw2y0JQ3Z!e(Nm6K=?kEN!*wMEvg$EQxNMGizQ12%3cuKe^mS zquOS$Zr$DzvOD<=2klj_h#pUkI*iTcQmy%32!5z%Q?=FEmKgBep^p1*cDP8r>_A5osky#Rv&R^)^lcI7O;&Ylp^NG&9;`jnzai( z4OXDH1#anw)mq-BeRni^UDi6elezFTW*Cu2Q8Qn^3pY4k0P-(>VH z*P2#ww5?BMKfNgBRyv914!)#9f6PQ!{M^K46@D>XR9 zw8n9(x4IetV)H(fCwM<(S>eBl$embe?NOe^Y=DWAFfbd&0&kLUG zsb*^YQ3jGjQj}#p*1a~0<5&z8|G3gEMheq zdI-$V-w-AHmn@_`bxg18p;nvipD3)N>=0&JZq~G5lFpm3g>BdeAV~>+!w!YaqmA#e zQm*)^5m4+D8f~Ca+y5py0onVI7JHY%d^Lx$*+SQ-LVp`vNYR1n%3#8)7DuFg$kH?5 zkw6d9BqZ#4aEay3i)*cD!5|CVWu)JBGV|jnw+3>Vsg-XqLOnB-DeEdbOf&Oi=91Et zk+R-!Suf2LB~DUz&t?}YW^v}2I-OCQiPr3mG#JkZx&9Gzr{#R466U4+79{+t(0W<7 zZ0+MAIZ-ixtxa%x*$>{Ln@2(>(o$rtLv3QEi?Y;*J0*LEwSBSLB(XXRE2l|HTOn88 ziyWKU6*L!hA7kdtJ*zjUk!Q|U4{q!kQ8iZ3u+%7@82d{A%Ngc2s!>OP*4(plf{ZnO znln~`PIjzUQz{Erv1FMOdQv_zR0m}uPyo1S>$&I9OoB9WGH@t6rP5`5l_S^ai^k^| zeT(BW)-R!UusvR)4r;U+TJsoHXv6;DX^l6m^1bR?VuT#tvcyH{o;=zyw)xT@@WNS> z-X|GClIlZ7m=in6vCR)-*R$pCnpsOI0?CJ=gq4%&EZXs%q41p)Y>rl?KzTb?YyiXle*=qMEIKn>J4G5)pn zvWHl;iR*=P;ANCT=U}_DQa8}3H-q)xwt`HQ-@MEWS%kvOR1*1_iIj=SDV z%a0y0-;`;{du`?7OtG9c*L5=vc|_kVp77OiZnQL zr;x9om6nU_*|wLczmTEMRbRtfIfu=lMfp}!-;@?03_B3Ih}*?(bRhz{o&(|(Gy;fkZD+-dy| z0gueB!pZ%m(_O@bA43aw{$5LR;y`mW{ z5Y7ul#jAhjj!gE098*(y%5?-5X)SqJ7ufB=j%A;%371~G1(qxzhMd=C&eoo|E-$P- z(H0JFTyaXMj1#Esid3vX+(7gG60m+!N*5TquPJP5OFU;@UW620sg_#AmU8p*0>pdX zILexrLYI_QTx8QQ6u$c#?94@_)h>#e*A|giiF#!zLRGmGm@HHjL%)uSZnCg{g?xXZ zc(X8%C)Nllo0M#&yQsv$xHLxpl+?>!jHMoxk?5%_$HmIFgnHb0@u3YveQUzQ-pY(1 znIHEx3=M?VguQRIGzzdXgYHI$;(PU75=SH?JHA9DWf>RR@f|F)O?@lbRmL z6mdB}X2l3v0eL^y1}b;}{oFE)S5s)2mNo-~3aKJG{_1*Z#| zpL)O^4*!tyw0V7_2wk`3QNFS{Mr-25qH|pM`zL{4R zG^T$8?U!qcg7~RM8gELj5eg7## z)l(1ppmgg+5QEGqOU$Zqt5LFQ&8?i!qJqH4P`2E_#1;kwrgQJ&XWWv{K>YSM3;ssK zuGy*ZIX;{qLX{=)DV5jf#n08A7^yuG$_wsVF$R+GwQ->}?vVTWkT*|qYuwwgECTlJ z`IQ&~!tHo#+^bq2e7L-d(xTOlQOkf z*^7Xi!TM&UR-Ni~_AG0WPc$fQD8d zhHpq0glZ5Xek=L9`9o))c7;eV3CsM?#lg zP@EG@l@$$cll|Y#5Rz&L2W)rGx4S5uuQea$(c^iNqb1L|V0}tx3_$p-L~h4t6eK;r z2HVXU-lXT}>ZK^@`LVpbgc)SPzuPwaNx(Slc>q({XS8+USw0+ooAi~}BfV_Qyh)4& zzBe8goPXeCimVBbIc<7NQ{K{_nZbT zJ79ZdO2t0johdyi3zHmYAC!-7#vB?A8kb=`mpBtRtou+3zKYzA{Bt#BE&uyDty;!Y z0q{N&|4K&@9se@ZW~C!Hrp*(bQDW430B&1D!TV0nWn_^l=d9?557@Z7HTuXA7Rjxs zX=C8TWXXxi^1;bes5aCp=*SJ%*M)9Z%{d^-KA+gp&>RZlm3_(|0mr2NthRvovtWSK zSW9CE?1qIrFfT&m_9NO7SBnGTJdTh4krj{z9Q{MfrE_D;rE`OG(t}6$Lx8PD#|4ub zofP3tR)z;%b%vMCbH;~*s58EBUW*J6J77hx*)=(PFG@^SUohrri{FRh@u%P=2EXyU zbkoRz^%kSjm6)%arUTgS_$fveF1Xf;EwZ^xX~9|!=fS%(pZ*f_29Q9ZCBV)nc@eA}M z8|)eDd=MQ6v^d^r&shIKB4k`5zRoGnB5*Sn+yyzggl!wxneZ`>MY1jI@%oZhy z@(67%zV!eHP)R>8Gs60t`u<285Xh9R7xvs*GfEhmlqq@KYzm)iUCUmh8K=MK7Q%@Qy%T)8X{tVB*)~T_Ky3Qgp*8%$p zHE!GQ{VjC5_!3%>i^0RBfEW8GLENmo4PA1iOoEm>nehs|?G$*o z1FWR&e?{^P;)EpKIA)i2C}s)%WrHfKZe+7kQ+A!d=`4_R=uPQ9YYKSVzbuLdoeiJ{ zm|VFaF{71&ZysyYMp@lix|4dsN!2>3$DPz-C-oC2wbV&{*Ga8(QV*(>*`NR_&EDl? zJSG__&r477P`vLv@}E}c+D>a6KxLIoStX^FleSKi^KvwG42#?x(>%mFjf!hIu`PID zXH8xksjBBzF># zx;dsg3s>16))Gxv$@oGj;h)v=%=ir_zo&){#5P=4%e$VEE-N%#Ml1^-pJEo53DuA_ zKKN_Z!gz!kPQM~Ky8J!lW!Jb>>ax&VVMY3Pu(L0G$^j*3ISM{#`+}W}k&` z2?JlS&$xe-D{+>#ZXUAH)A%Kh5kKpVfrba5O`Kgd2eO<#j>eg#+PWH_5`^(RUOq`l zi`Gd<4WQ2u!fE+3)1(BuM~JKTM1ePRt~m>v_(&k6=BeWJ5FQEnIE=`651R?jhl+8c zn?%0YsX%ryTYip;59PpCoa%a+IywyT5WW2~frbb&kH|>RRi7 zAz%F3FBJ_@y8HAFR%+We=Y8V{dC#unZ6dpKe@;BC5o&8}wJv&HvbI{+szYk4b$Ryr zin_Jms(MU|jq)}eW0#-z1tNvj8bi*Pv320a|N62I22+QD;w-3yqjW_obV6X>Ba?QS_6&6lCtsp2}`t)I_Sxa5_|Uo9EM*8nKuBMH1x#hpB?2LTRU z-9Y-22>3D31pG4m#VLG)Ym?RhcOd9zxeTDmaPO$<0IG_ zI9fe;eA!a#7JSt7s=`Em=3U9SnUmc1`&9isR#-kJ3+?A2M`c7H)F`+^9N3eLr#JqG4h^f)9`Yx*z`Me>zy>!CY^)Pgc1ph?Cz$pFENjcGgfDO{S*herD- zBi5RPoa(9b-a(HL`s*mSh+&>b{wN)8mmora-$fUA;%UvJD2T%0Ln)|YDb*)0Oapmr z(ro{TN6AGy_a6P6Lknlpf)k4HXEeap_YYXX2-*d#%2xrRIQ2ev5uFKC`ljAHQ!+M^ zK@)p{T4+53VtBF0U*Wx@Wt+LYB<3MkC)PHY;V)}<-(K3K`dX?hmx1lp7*#Y8!hb!R zQ|RPy;Q3FJZd!dX=FHf7x1K9@_y(3TXSCxCH!012J~KWz(tv2? z8i(I(6HQ;Zw0h0(P>Z*|svn#)zvNkU0T5sTRZ0nD3oQ^ zT$HWmPKf|0;IsV&KwLM!t588i{ZfuQF_;o$aSW#J#9(T9W!9C-;lbcB6-2F@001}= zAMGS(JMb81O#8!YUPH8@f%1u**F!7H7edk2Iuxq84*ju zQOF_0OQCaA5AfMp+NX5Z1Q>MO%0ck8&LYdSBEW1zE$P%Zx>%3#tUq?O@CCG-@QT*v zPT37f&mu1?=5evv&F#tJOC=TDwLHS+BH+~(y>@-)blWv7oLuJS?E=@ZEz_q+YG$}) z*$g(*B&lF*tR>(=uhWb~>Dp`-e~R9YJM(zytyJeB`T}Y3ohL%0|g9=P5&>**HbMrTIiiNA z%8|k-cG&*w)F^(Q9YwPoHRdOb;?q#@Q&9~3!%<{;!9jOo%8!<%5W{>9jrT>dN#p@# z+KC_dHtWtW4#w9%m}h<@Aju7;4}GvRn9oAN&k|3{U|0>Yz;c$PT9{xb%-8^rCju`a zY*VxItea8eu1($S=8O*n$9b^Ve&9B}?h|Oy%VPSg45?|W=zwzm@>#QRk&;7Wh}{WW zR%#p>wQ355{~(1a8C@ zW71z|uUWUV4cYS^=zS(2{@c|I0)O-F?F9SzW54r)V`kSn4{lBug@Vs zt>ya#^4%=jr81QSixdRd(yA6d?yMCEK@?x{L|-Ti2Hz^4=&Epf7}W-^Uv}O? zdr%?IeG}r-Q?WN{9yL~b^Acz3bz2;oxJAb-08#&IpRkgtqAooNYd`4+>M%Hy`(LBe zXB;VA)vZo%XTj9!F$f38=M#gfLx*oQN;g3vGkXW0>k?EkC z!lMCt0P29u%C^&UgH(2Rvq`#8uYLN@q*!f7XY0U79LNKD-OFN0LYvcW&hSi(wqE5J z;{Mc%6BN?ndo~bH2ooON4R3W`9t}s0RmZ@^0>XOTw|+9!tRo@}IRs6!?%qAf8lYAg zv{|r}qPE%UR85?hJ(>QCfk6aE3s&FrC)D#_8>ripDUK%RA9H1fSabPA?c!28xBX{Q zDPw%uqKL9U%~L_2$#JtkXP-b~FSO-#(b;~+i6>lCN*`%WBgiBWdVOF+0;{&~e*so1 zhU@<(7D1_py66V|);FHbT~%1UyVOlv=HC851Q1^*zyL>~y*d_rgV1@L4BE_gIE!7K zCq^kC9zlNqf(ilQ=Db7l&iEWlxP1c3#nx6D7&{$Iou_=Q*n954Z6mQ3YzOMNB;#RiGK}+KDQ#cyLsK zg>oW__-lzRra1O5vCbEONmK!0D6IggWJ%^hYcwzLXj5ruAfy0|aT|e6g5!ITYfSi> zE#cE`fHDwK;6)5*Xg5(|ZR0IWM1iw0gPgpjP?Z{IJwa}NK!M+>#3?d@i=>_tP@sD7 ziRVPdD2EoYl`8w4A0|5<57sXj1N2J#92_}0BJ;;1uA3MDeW4y#LCkzMPTbyVZ%y4C ztd?T#X9-smoA_+Bt^?xeQ=va}ukN1Z?FqTHcoEmCZbEwLkHp+vv5IGi$>|&y=lvcc z$QUN$aL73L@T`>twH)H5B$mN6Qk@9VI#}90=3(<=oXsBOOxh)T@M7jG5u6q)_f=r4 z^mY>0Dqy}8HoJsBdHQ=SIHU(y3_3!U-T=Xjdxw({9rEyC5_wkQzHD6f;U@s$3;zcB zM;QBY+!<9W&O6>3{uBe(?Z%Dow;W5j#y4FDYEnN%MQ?|; zxFt7nfbe^z5<$`nJbZN3Z;P|IguC4UAx9m8U~-xDigjG%rCB9<-GQF=hoE>*p~viW z4W$cpWFuaQ%+u3e9WSz*oGpgK4xceiQ9w5IR_i~Oai9~fh2FKM z6wPyBz-17o25YN4Ix%OI+FiI+G=K2mm@pQZJFFkpQK~O z<^{{6@|L{JDWcitFe5w>Ma|9DsjBPXF|BzsCAB9++r}DzfJ+8&!@2ixmVVHBqsK7% zyvwf9p4c5-pO^hd@Umygu3k1??|s>LqcA=sR@Sa3eFVQDHdWNvcUiPOJtR@(BnnBm z<0I?q>({Q8i!Y)#N{q!%#SVE`%Sf>a;&!#CLp#0NC58AeO02xoT(0HiQa*VVr{PsT z>Q(dH!~grJ&%@$>l!sUKCH7=~koCvWI!5YR2Q~O{s_?Q$QmPV9OA-gyjreKO#M@qFCSngjtJuhyDH%lUXdhksXq$RcU( z28h;?$E$-{h1RO2atolFArxlZVDGfVVXI*j=QKAe@-v%EN)J-r#deud4^)$$wOf}Z0@J(}?d?`V&4 z0Kq%$tro%_w%Z=#T|zZ|_fX(&RgYS)CPcppc(xP-EeN9bquy`!xk(J~z@RUOE| zk-nMFVe>ul$i0-;$FbMANLq(RJ{w-MWJ)DEM9M|-KM3u@$o{GA;g-7=V&XFjJRWX# z^zM2*FaEgk*72BmFtae5e&pFqD2Uzu^gR%aCWv6n3CMb?)r*NlHeyJT8Ust^O7DXu zf!n}rTw-JGL}XxEMNBJZ?wMsasVPBr%d2w60o|p$24$^K&1mbBWX$N1ZVPb({)^s48_X$t??(<*#Cr2s<}LY4C0T=@4ka z{1#xW*Ufts&!(1Dyi+K+OZ(0@c|}E<_Z?UP_nUOuC#x%yZqS-8u&CU7BwDu#1y7CnVbr}vPev>itbnMfsF3BZQWQl~$7)UQ%ljpp z;>F6a6a`Uw8#(ZAmTq@(Gq8MgG!@B{0AslBY|hU-$i+bV*A!u9YDh9O*t}Yqn&a?E zBiT6yTh!?>%=WKmN#M`ws~&hYehc$D``flXcv5 zEQIQITld`oRz=>9nRm?zmA&??g=uY#xkb3rirwlj8Av31^t#8IgdXe@Hk$kYW-4`A zjSO0b`wWN^?BH4!q4cgM+rAdWY&j*o8nv+yOAgJ1@qFvuYi{eVOEX{VvYqd`J)NG#85sLr2m6% z1vmfBGY73KZtih#6Nn=lZqCml=g*lTa~)y(Ph;Y8eey#JfS?X@0}eGApGVT5nq7U> zygfwq=1*~~i9n^CeITg1Ci3#2WL0iOTjrKul8Ffx`}*rA@Uc2Mb1_S$cW#uk00QW? zcH9nb2>|JR2)(PGPRSJI@(wRHNx9}-_E}7^U##$AmIAe+is{R-g2RS2+O||_OdN=(Yzf-H$GtolyF@@E{f@ND8W z%Q!$boxgrC5N_A;7k9X@jjEE2#+vO^%DBzYX@HY!p3mzAqv9Zc0BtUT_LT4RwN4`s zP%{?>Y$)%HYO1iIC+QfJ6G)a*=|#&sl^NqvFJWEfZ+}Qsv(0+&$nqj~wy}P#ah8Qr zbIaLWtG`W``a@|sxXxA7E+NSL9f1xWa@X421!WNJx$==-D%{s%G!+ewlQeX05r(Wh zYWw}8W2ENu|6FU_FVO1DZ_D{dKPGly=UTJK$TGisp3eD4KO$x)k+p;Tqc_06ilUMj zmesH=^Hw8gH2)SrDOptpoAUd1PzKH8WEj2p#8_P$1<$3RSSlO)ka-SyYVK^St#LPX z%K@K}$hs66N|8`cHPK?vmfGW`_81j&cB2HERX0BpZ1xB3iY=H<#MpDKA28PJu+QMt zaqB*D*dgNox*4{3ipi~+;6Z0(4SUY<>{h-(S>JAaO9@yb93igVp(kB{otsdB-D2_R z{vBWBf@t5=+7%~7wWl_*yT0q)cM_p+zu?NvrymS+AwxKh+zTB??yDGxIBtM+qV!CMM&Basd&^n;oI7?%YpNuvoVZ_L9gIGlxaCgJ=);M7 zoO-z?9#; z55^)RP*6-R@eDifPo5P zozk;8FxVYhK`^~k78C$E?$GAk(pc6J+Da4(eiSY5_lG`TEv>XdEX~dRPSB$rCupC_ z8{`D7(u4h-9Wd`TK^I>a6 zgTFTf&r|Ns9|-?1w0$o~0>rD?Sppvki!fhnzJY10^_wC%;9XuQD0d!i>OGtD;yy`~ zDaUmH63dJvH$Se51Tq%)HnFe@drq@U!)1$TwCp{KDPMjW8ekO9X}9cbB^?XP+nvIA(E`I8W1O&p%z{GmFr#o3t| zh1F5UHeBeOQk_E!FN?1gf(ji`>qP(Aci^S4+N+`D-E!(@m&=L zV}M&-&;fo#O}!}L4>hdJa~!3`xB3GuT?3c*+U1P_R0rJ+Vz4N7nbtV2yeJ8>(9Te;v2zHQTKJnaxbeSsY$7 z0hNW~nbdhN+x*0$YbcssgY>_^)G+sR5-0=uiv*U8$_HaRw+$H$B&$`<(X`??N7ts$b}9zqAx1GVK84@1 z_ym5>|gh3SmgB{bMB&1apxQ|vhsn_L*}%Qa;J)P6*k|@N>?RT1I-%&msQ(8y!7`V!Oh(( zmj|brZ=#OAQ#W6anIA>lk0DZBxRxxmt2)|M#G(%os7jPT6+z_r(|ku*`miU=ErF7i z*v5Pie|u!5Q>=skodbeZ=ydD|OXGnPV#%r2#}ts^bPp7~RvGX$Rur;ucWTLKAgJgjA$;> z6iU>-p-^uEC=8A?wdS9kJne}SB296jT|_*XcCK*HYu!d6eAbKdLhb1SxmjEsG7fpU zX_5xbZZ0CVrYo`{N)34;vh-!szs)|^W}lJl^DIYnX`YiERDbNLlk$btzmNk*#h%&* z*;Qf-+Cp9sTSUdE#Fjs+7h+Gfv-nDM5q4K%Pt8`br+%isBf3oBB@6C ztfXQ!U4Q}y@+YyHdXR4*r%uRpsQKa@C?#9=`k(WT0^Bp67o|NPKui zCumjX`x3DVswvbmEY=U>)@_tU+G_oAlHv-uut?twLJy7yg$1Ynl`*TXVK!h-HfGfw zsx=Ws{%H)Y5VuNe^6`?3UG+P*yCdfiA7RTt?5Y>j@5_PkB|)e{>cUWkrcpCd!9OHo z(bo|W7Qt<(I8?WNE)LZqSS0?Y(}Zkq_YIf2O9p~aMa*OA2k7zh5vWvb0nGg1m=^5f z&wp@aiWD^vg-TC9N?J)(mDJBgq3Z09LM1G>lCCy^2K`Z}ex-0?Y5W!?Vf|iea(t)& zRiX&(k3#hsjY||Ne4_R`GZ(4q)OHbDSw_y5e-w!7_ndw?`6?TT%8{+u^Glx+#Xux= zhcH|Bt&%uYXhxTm&KFrrz1p5|Ju+T$_Dd!Wb?6vVc@4 z2xJ5|_>zEBc&TS2Qaz`F{^iDeRvN*@%B>Vl^ovCIkA zH8>j8!*{V`|L>wv9YmpP`|;|hfv=24wOJLqU~nNtm%b2?0WnJas*qF*PY6kM$#}J0J|B{5q2lkYx8X?#LQ)A!xH5B|dTU3hLs+-A4g#u3Lt4YY9o%oV+P%1N~m5xm2gsM`S6RY$ywFv1QkaH(Y72>oKx737l zVX83Y(~?K&-aO7dimnVWPK;8er?Gp0cTrKQ^z>FW)US+Er6e%Xe*!@#N>y!Iu2=d6 zF`{4P1hEDw_WveI)pa!L&0Hl-XD;VAFHSad=D{?wlr6>HgVQn3MWah*_)hoAz znCt!@_Ra)8>grnjce0Qn3zGoRu*rZRQ3N7H4F+sR5}atFVH32diCG{uBr%y0P|!ev zC5(BcYFlfyrE0D9)s|;n0IP;Yh>8$gQEN%9+Fy)I+#o74|L?i?Hcc+H8b;JN1)p&EvOroS)6(iGf{P9LTQGdQxSN;I@9w)l2xQ z8G0PJFHDaLP)!egz9n)f-So&C{{rnTil>Kr7n?_zdl!3K=rv-y z*iVOwZ6fCMtUa5)#eFr`W5`R%%P=qaKl38a#oe`Fi%0_sJvg7_o}ZRS6rss12DK4x zvTolr^>bAL>r{65C1c#o5zlk=OYS5FlOHO@S25ave9I70(og7E2a(m2%~F3uo|XdL*sL|JSDT9r|fwL_w`FQX+0`G)50)YL;Sg1#rYk#0oF}WZxW# z;C30qP}$#9?eIFBeG7uTq?t6iGjntO4@E#FL z4I~sk!P)AqCdRqo?FY%QUH?7z^TIj_Ca{wJ z{DJFKnmHnwRBA65k$&zX>x2BUL$Rv=8(gR00&co}2G=P=bDhp6?QnMd$2zIr7nZyUpf{#zI*VPcMbnV?Xxk$!s z<8%Hfa~1b0_R~O-4r9sT4Xob)X_330I+c5$O{<&5#CtAsnezRRnO8rfaOZJld11@d zAd8i}fX4|d1})DRkbI5yC*(EeI#FA9Sc@QIDFsux(#*ZwR1teUzW$B^|Z zvBo#n2zoU8=j_z(&Oir9D?HC@_Y zqD_W+N3U+)M}4N%PoKV*c>U4VD=6cq)QncWZY^dwrhy3E>rmmWI&B4bX|`jn%bnsp0~0ks2QSbyNBrO zM(Y9N!q5;Mxu1yqj}hr`B9-{ER}!v%Y&=G)d>lFvF4=RuA==DfdIIepqOB+IGNbcD zjPcgzD|B?f0$1%yuS5En(?V~vit61$l;d-q&{NOYng_Ex@S10rC}*JfFZg2e8WAYl z;hge8UFK+i5{&i_vK}4nx~-Y5b--dh8qC2TFJ7#RTpQyJ?s7dkMO^k+MHfrKIcVtR z0oSaCgT7(x-X6@VJL2~B<8OceFC~)xJI{w54NvO1DF-2wtKqNYqArs&<+{xNejcOS z-tn=vm$kXvz~S|(X=5aNo?t&)p8>OaaC>lTUFJd`ag6q#)$pu;1mZcI+RZ>Rb2QN~ zY{!X`1mrSqYYueoYwt)xSe*3x?TlGS86?ZB9Xq6X_%7ysSm!ji@BC@~eKR1)*{&yB ztcHt(IzdXoBUJ0i@OE8z324)yBMv7BvR&*n4G@OBRI0%4bEVt>AwN9m^)GnSzQ=?1~Rn0x-z(wq5l?Lu!c zvIJgKJJrtO`GJqUnfq#3W<6^?u^sOU zn%&$X9JZ3MP16Sh`qtla^jabu?$Z@I-1~rU6VBXrWW99#U4&z-NmJgZCf|Kv!cRFJ z<%LeRFNYYXqf2n+jZE2j1(SDu7dJ^inEWs(w+eEnyn%j|9{6qI1>YGV$Lq0>y;?>d zi$vMU@WbZh{oYMe?Bwz?59GPBsizSi-pQz_~C>V`qbpCj*X|;+CBKx9R(&q|fjoE6AJk(m>=CE)6im0O5Pvx=A;mVWTj0hb` znu`%=A*R4nf}Tg}c%y->^R65#1)J=qMUKXm`?J=rT;Oe7*_qSuywBOVvdi;WVnv|m{nmMT(l}jfPUW~oi{h;5^d}zLsj^}iMyBTM_eJK!ejV6jbd|^=x!H5_ zGbsFJEcShuD-9mL49mynqcMZCLhAyskjUgKKVdNmMeZEaf`7yV>Hs~(1F{319YeAX z?sWQ`B&kU90}msX%IZK~r!$aW$WvdI$ap=zSE|wNWe+c zRTSX#=_(qKI$iYx3}DMYqJ0cilM{HSW02>MxG4lu{)krwrJTTDHrIhQ=I{2b>GYkj zF8VaqG6!2n=PbUzuF12?mED39CCl=i;M&qY6o$=*iS^G$krnKvRIV-W#@F`q#M%Cs z`tUcbBbG3Uz8LV~c(fLOhcqJPczcwU2sI6j-~F+y{iT+zH$VfbUG|DF5wo%bIXlqs zRj^A6i|9IyXT_K_+77Cn^DSNgkRgrT*y#(XkH(xfeIaa30Kc30nmvJ?CvWA{cZR-T znAOnfn@Sv^NGZg@k$pxe1qvp=I=?$oKO*&U9D4t3yL8a4J?^Nn-`FYV?ni>jf1XDk zTdet%!5Sz9$!Px>^wpcIfkeijd7+7B?l(pA6CI7{^CAvP-xf^16D!txzp)NKK2o!-E_wm_U!m`Soa!|!biW!Sz3fW$yfY?tI(9*@sn zy8;y)#SGbflqsXmvu@WI@7kPJ*P42g%xQql_$!*4r{Qy-KMQCh2OAG#o z&7^Cvr`)h@@`*nokhA~fZT_gZk2@mbI;r$+ zH1`?PWu@sml`R!uG^PmM9kKv&nK4S~?N*fXkH}t|v!LU|&GK%e-C|<7;k2M5N`@QL zlMw=>33_;7F*~rbxp8HSYt1jj0?AFv+I;d>VpLhK1`!_>w9Z$Zxz)8s7{mJRNR1$w z?_8VcsXrWb?F9Ztb0mwU>&g5D+`W<`fqLoXuq>>4Uc<)ui9TC7t=eCP>F^D0#_BOlO?0G&H2nDvp?!Cp zJg3ub4?nwP_;IcI5!v=Mbdp05)1#k7=&i?C6dr~cln(JsNWR4(rwF0Z!d?v~=fRED z^f;4u5+r1c^)d1ldBwwWxxOGQ8M?LbVx&ap)s>_;k5G}Z88o08xDvW#&uVe;FHjVO zxOgCbkGC-@78&pfUuZ^w?rkip8DHI2?t0mDh1O?TdYvR|xfSqmIcoS(GaWa@nnVsl zQ{&@=2yE8^L-j7%-NHH$Z@$-fk7^k@WIczr-be+@M5|bv;PRBdvYjpb&TQm50$XJb zEh{eTb&j3_@-{{~fzz1E@IA^~jJ)4gU2{#zgPB!j3}yuLBKxGr-+;^d3k8;2e>Jo; zve7P!6SLT6$*J|HaR1#C*eVAHg}i;5$MS-?gvQP6fwX9LfGLB6*yprN4eM076A$CV zpTbJW^_WAr=L5?!Bhc(F7sl%~ciI0gF0RL7$Foq9^-=v7NBjxaKnP;^SsmxW%$k^) z;C%vS7K%N1(JWc`i$@Q+QViFV*-oxyXLSs;Ui?8QxK#)WL51C;>x5-f#Td8ENXud^ z`}p3N9@<20@u%2+1>FVV3CeLBkAo>5La zI?4&(93>Z3h3hO)M%q!LL}#yc5C*a2a*P<-g#KRTvG18*k2)6F=Y?399_0T!2F5jRYV_B8cJ;dYGg=5?|oa=3>7&C@TzROPF zvaj3&ro_qn_+!)3}B!pYp+^fu7m_yMDOnt$N&eQ&Ls4TU9QJ=c4T>rFBY-& zBaIh3sq<5ar>yY|-nlP6AM55L`iAo|nsH27W16=<23ES>Exk(itj!)NIn7_hP@`zM z(r~L~>$J>ln1lxz?vt`-y73pty2omQ#j#J6ZM(kVMUMCSJM@l)keYc6d%F=1nlz(l z9Nwu3V_4nM3t7wB{F83I^7Cx{A?!KL9U`sq=LO#&k;NL24U=K4oG?To+A&JT1pQF0 zPfmCk9rBP|mh7SpmDPBgoLW77wVYaA-j*}9c(DIu*_QWnJqiILvolJ&^hKIZ`yfd# z(mEb=J?dhq&}Ow!GT}M?M3*qXEj!Q{PlMx3&v8SVC-dVK3Pv7%VP!zku_EiH7u#;^v5+1A?;iib(H;6ELc z?DdY)e}IYu?{C<3D4(lr{W_HXG&j89yYl`R|EIZ|f=Bf4hFso+(Z5wFYe(w=joq0S z`K^gp1uqAVQ(*nneh`|2r zK0u zxtls^2>e_;BX$M+sHXGUau4yyMps15#TPc^O-S^j0D_&v($l<69v7Mim%@&x@3wVX z*FDb2FuqM5*U1ug+i!Qp?1t;rG057e>s+5l#qLsXzDape4kdng4NmU)Y9=BX6qzjg zh-5E$5Sf!smPfX-1AaA14uJXN_Q+%C9Aoa%>kl8NC8!}0pCVhx=9Apztm*P`ZM9lX z38Zsne(d@ID!1r!Ig6Q1Q^VnjOY_^!i%h}2hhSb&aFjddot2oI*|L;} z=S`twyvfr@9F1s)hWuE^rG3|;BmA_oZOgZlG4G5Kgdm@~NH)PPM?3tVJF?TTe z4hSGBQ+?9{Io0HdjKjp?Kpg%QgE6%hCuPyggN_8dYcJNtft11Ib%cj+)^uU#s;NSA zf3$UR85wE1xZC1fECOg%%XfOGJa46zNIq$t0UBq3#@SSw7-AxX^+E{`R6p8NEouSx z$t+gDtxlxLEuX~JFh*8V*{~v-f!aBn;U))}m3UhlKJ#BfSCMS>`+bOnPT5pc06U#3D zOC&b3{TfE$p7E{cJW?K}t9fJ-5h_@Bf38AHJaww+?z<$oY|l_e=40VKdx zFPSu&dNxy;$Ce+RLF;oPQ9N{X1$l$dgz89Fkhi`)qDLj^3c@ZbTuGq{D(J4D`gW(# zR1?nO4_8o(sUQw|!byC~`pJ&%5=wNEuvAbAb&)6)1mOmoWIQ~ToaBF5S5K{}p6>eA z^~3DB)YK1kA=MJDCR0CKd(=;!ou1IQOXv&1^I{?W+*qlETubcQ#BRUXwURGgLsEUS zsK`8%GgCoMER(*eezs6Q`qcbww(j~ta9KSEa-G&Wh0^;kjR~WoN@M?os3tnRIWr8m-c%9&R245?9mciEx zo^J5l1y42jV!?+S{C>d`4ZczED1&bjyz6pZ_GZD~H+YNSZ3b@@{3U~L5WL0U`vw1_ z!P^AiXmCsLdkx+x`0WPo68vU^%dvu0XK;BU-SQbcQSikEPZ4~f!QFxv7(7+*Y=fr> zo?-9|!B00htXT9W8r&=RV1pM3?lkxU!4EIgWiJ%G)8LB*f7{^Ig6}u@GQoEnyiV|D zgRd3*VS}$1{CaCo~c=jZM0-LE%ns5`yf z6g#9PbW&ZdUF5%8t8|C1V zE&>q9Q#|YcfZ+ZCYm=-iB;aTg?06a_HqV9^MBVER7DIV~XJrjEY@Or0b%Xn#v(0}A z8VHDLzW2~p*(UqnUEjSOzMyGv|FTtY1zlyUzU*=>eU3#i3NvXU+x$=EZV7Fl^CDmH z)_2mN&s7*NDZ*g(^Nw?(V*RHZ9fa8VKeVTQ|43o?xQshHVy&a_V=jzuN9`TC zTF*)@!gn_1@n#akcTw#}GiMt2=V>i}po#wJptR2H*cAUnS&)g^!{=pQ53MhL779O1 zmmTL1WeLcwF-Q^q0`cfHZ1K9DVIyo(57$iZ@=2!srjoiVLCQMPR2K!I#^$q}^j$=q zT@b3Xzx1l8eLX7bX`Q!v%h_FF*P_L-Gf1`B)wQ)FUPu$7`nRvEwGxa%2;bO>U*TBBxLx@&ejb&eao2#n_loX22o?76Wt| zfrNQt6C8VRD#C@Dmzb#aF7?#8loogm^@C`zo^mj-ul_x_yib!K5Z_huCtv<7sDCfg zH>du+DBr~T_xkxx2tMmO(;Bs0*kvc++4|iw*j!ogn&12x=>-yA0kq4}2Uf2es}}(s zD==>}=EuccVKs2-WW-R6IH8=Hb&Dv7k2HXQSxf-RyL>2-mPs>-pFkt!Dt<2 ztc@0L5y+W06*=<*r;q7ylUlY(Z8{)y;jxf+e==kxZ{?!PTkk&)lhu4=xMDp``H|Lb zKjkn4E{YTN#oqhS?_B?t)0b5LRh%!r{;Md2$Y6Y?cATCUcv6-|d9u0n*54;MZ`3;d zgR%pUZUohL)Rk~JF@&!2P(#(rCwXfkxE@g7WW4*C0zAdS)ce?q%wuNb{okO3e&LGl74b^%0o>nbFw zd`OEE^~&JMmJ0QM?8K97EJPcC0&Xf_{g{LhKS6MP9T zF$cM)fkZaiB9b}a2_$%QYI}X@!Q|hin{1zoY_DNFj>JQ%?O{+bxykmx9$H>{!%raL ziysRSYi*ZAu71E~LXn*ILOW@eLm;ml0tGLo9dMQsQgd+mckOq4UGimtcxCGzB2uO${YECR#7oWHuRqt{BAt(QphtbPRQ9naYVi0 zkPb_)&cLiMIGhb-aSeDVi?Etdc$Uk#ntyoy_}9r)MA?kSs6n}$vdX#ZB;f(IcckWx z-#3FZk)gc)8<{KekGKgV3L#V04{vLYceo8BLD!l}209&OTv_A7Sw|39FX&h=xu}&~ zNRit8c+vAOCwA`oFCuP8sQ)6;e?lO7@fw=hs6ccfurc8>F%7aZ31`o8E!S`=sTCTA zY>cQQD7MH*0~E#cM% zlgp>*wo5bhSMm1C4_V;T@1L{IKq!bJkN4Jp)pqR@VlxsO>uz#ml-;Qa02T_8wVXQU2$F&V%_y(fyuO%@V5!bkf ziUc7NcPNh>g&Gx;w@*Cle69?c?F+La4ra9;LDD-y%X@SG2Dvk>6ZsC$ z!E6^=%M-Xq`<&KVerOOC@SOG10jWe+!?SEANhF6vE(k=m;XOu9um6Cxb$Fc~%Q?he z$f~eekK@t9@HzF;!IBeXI9#sVwg;0hrtT!Nm4t$m&F!Cqt_Il>bKZgz6hPkNO_;$8 zbC3#e$j3#ztZAU#twUJ6?u%H?f^p9yD_dA1%4;f~`V}V@D4*N2F8jp1wRvNTJhJgs zYqL?UR9}LVoURvkpzZG&>xRGTCYhc~^^M=28_9~97w!J-K|RC3p*BHj1y&S3wN%nW z;)clka9cu$79zZC>#uLw9)2hu5Io7yf729$;zG^?#}t}Nvic^|lov#LBU&iKVWDul zd7qZ`GD=B=9v4Xzgky>=8RHf@oAqdXi->}A-b4X}h&h2B!Q`t5CxPU6i?@`T%U~)e@?w#b6cosNZH_L?x zbf#tV?)Y`I9EWZ>5&o07T*twCS$$V*8Rg+(>}@+lv|G*}@?_lz=;8ew*JDDoAD;{- zJQMH!MfJNPMBr+at=c)Tn`xm0FSTJWBq<5&qR8py)1J(owWqYd_jNFcuzyqXX4ZGX zT@>am&)RHP9?kMC&#vs40%)MfORB*B_V+Pp+YS&Yd_AFs5W3;hl8<05 z)5JTv#mUtM-3CX%9&MVFAQ}a-y-km}>2W;5$!WUD&N$Dys4=<09n)g{acfU7Iy~6A z@qcYUlzMOq6r>;3?D39TC@S98NO;t-W{+p`%%;A18}z4A_wie`8Y)?#>zbB&_oCrU z{0Eb(CYUOp#0)@fpqqsz^kxzlxXJozVITSVg0WX`pECjQ$$g&xx7U2FD- z3MCvY?eTcUn#`m|x$1XBNCo>54mrU?g^7MOJvB2umo>6D#<=Q>BT~Zc$1h>hw^@Cev>21Q2WtwMB|_^mZHD)BS0Jdv{;MzDU~*l`XkJdSN=*FLG@WFBlI)=ytcn$FFWq21td6G} z?6$;Xbc6BGCz4%*x}b&V276_3n4}$`6wK%bi%5c`q8sdGV{1Lw?eQG3>QgtEluxUc z?!J4f^+_jMmEqu8y8&_xYgy%?MEb5DQKFS{afrvT%)QgQv9e2qjHTQ=HQLTZHS{)D z_}-~#I~$KxCRTbUvV~^A+Jj5A&Es@~U?)i9Nw$(m9A(h&aV%{sgVV~QPl7s>ageny z>|k918ooBfitecUsD0=>8ymd9xh%mOh**m#ScL1*tsPF8rho8LqCuuMs()k;6=!GfUgYF=z|Lf6KHc+&cao?Ht`0{^z$MWKWs3#l!vEv)`K98k$SS83*u&eSm=4=oy#p%`@EbL`r zTdBB-)`z1ND2ou-8*qF*Xri$7K3_hzr{3r9$cnZpImL&c%$>f}9(teC@tFI~dY_Z< z64v{?^IPhDzLUJ#**+DtuWYk6Z68CnrMQ8)@OfCz??U(EQF@eZ^*-B*)tb4bG}HBHL;qG>JzFibs_B(v7fMiMKJ^4z zSfaZcipiOX!ru%lOJKSUKeg@uY{NTk*gzIUWPXff<)5zzIwrS%ms2({lR^s7zP%#o zjeeoybJqR)8RPp>1U-_erl%t4UEin(y4*z9ry}TZNUaF^Vx&@fD1zR|&_v}^h@%ui zpZ|YN5p*H_3VQxC6+wSTs@r<%B|SLkRR_~G`f0heTh@3ss>se};qnhCg4WHaW1_^W zW9e1|eSTMmD1rur6+weX>0XCFH|No!}`pUJ8m&a8Ejl5;T6E$qcg?K#`L8p$Q z9sHLRLEk{M!Q?i##M74|=u5PFb5HkU6hXg0BZ1?RMbBbn`yW*V{e9t12XZ#(3(m4c zFX*9e>?9Udw4mcCg3cqTUVb)DMaTTNQUrZXoIQMe8%59?j1nJLmZg7K6ZBIf5TIK(T5EznlZ7%9 zjxW|z-xY)Ud8qWwilJ-HF^lMLQVcyE#lwqz6Zsob485M~JRih$G}fI{!JU!dHZjJx zFO>-o)zIz2o&<5XGgk-K8AZ@2haOyao#=*^4U`0MwaW~NZfLPbHMDJyYUqh#U&6x% z0?Sca~jn1yezw3~V z!{KGKQGW2!FrBu6LMOZUaM1hKA0>Ckv|PEHd|s28@Q0hoXSsfWc*0ZQ=vvaZ34`SG z4aw)%yfi19+8nZ*67-#0KmBZ--Elp#JFJiFPI)1iyi*tu5{0)uK9W0Z_l>o zqLx9s$HwG=`9iYf8R zpWbwFe{0-LA|Rm6Lz#-FB--ys*QV$v&|f(D%V74Dc=OcsR}E~2d8O{cK>WM-9g-MK ze*Z*v|Lm2+XCO?@S;DIIn)a;aICO~zl8>Wrt4fK9CXp*TV}DCL!uROwTs_OEPJB0K z$_GtXh{~>j5W?-Dxmt5`Jt?-(fcXBJ# z!NB=lrWZCL*{Br$n|R&~y_NOIYME5gl5o^TJeo_EIXBk)JtvG=BuqF(Gq?NThI1;% z&63yTFw9)-lOwx`QD{MG=S-4AvS)me_5Fjk8p>;vt*m+72e-TDGTm?QC_&vomR$6+ z4ooq({5Jm*0@I|{E9ekCzM^PvA!>p?;^T{#*yS|%7bv$@MBOQ{~A+sSp1 zQv-Nz{dPstfO#RZOL5m;d&>#kJ#3H0Twj_BEBr!+{v0lQ$V91cKIb*%WSDDytnEd* zhxH35P3x2Ork#3()!lEtc2c(7+z} zi#(Z)qy)FyTC6Dgo`@iDwy{_wPYSt%1)W=EPPSwSc*EzWB@d_Isrm}Z&cMrDak4Lp zMNry~6UXn@+69`tM_k^mTHhe!KsGFPxsk<`1B=}UL!Q`W0v2tH=KMB=wN7HsGhEb8 zPWd44B_ck7H)(1-GyIp?(h%s*%Bloy{}L=OFbefiMpf39=~##`&a^aXY8JhY^HcGZ z*=982mrY$9;SHR5`_*ztz%#YC?eb=xc?%|g6&KqBAJVZz-&MzDoUk~#)H`*6|MOsT zSchfdbwVGy1%n$`P@25`t*2{sRnQrleZ#!tKazdM8aPs-3XN?jBQCNI&3 z6ndGr@ysD4NIIeC-=e?x9?c}^%au5?t=~ULjE&Jzr4;k(-%5X8zTCQlXVG!3w%(i- zqJf^r!|lFX28;HeLu^q@rUxYHlbgIw>y+g>(jSnLq(YBRg%0br@u1(WHPTrQ;TDA`{vu3#Z^t?dZ1{bVJIOf@tn) zb=AwN6h^^qaE3jbs3~RrNXktquJ5QJC)W$h*yN<0%0&vU6yiQ^BTvrK)x0y(Nfj@ zNilmWx43J*&2?n3ki^`_>e!RB$9-BdFb>wiKxYyv$RW!Nb-ZZ$M6*ohghJO~z zD7g$Smgh5;pXQBxg$(Dqa$XK5{{n^{eg?2awtj}pkQq*;TR%O)5R+Htc3Yb;kR`M< z+|5MNtzu8A+HGBO5nB}T_Cw>X{SG{Z&IW9`mMjqf(RUHup1>Du5iASOlC@O1vFvGB z5jny?lBSd_c5b8=vKVmn4d#<~if9vsjMmaFecfed3}NID?dr^3ECK`jJe#>?3a_%6 z+tSG0pp3Q8F^@fqQ6m<3Z%R_QTavKm)k+Iqt~|o;nFlxs$#LcH!usSlnR3WVy!UpKlN*M0ykUKjk8MV@KhD|< zW_0~{(OD|*=j^d=)mgoZqf)IywndiNzsA%tZ~5gAipcSF%g3gWMprWy4}K=q#Qw1Y zuZQ+~haq2h04)Jt7FYhUR#`Y9>v~WvDKrqDven^0L$eWxTwXifW1Sg}{1EM()q()M z*39Gil%^5OuamJtKWUk3KWT|Tz;oxV%XVaN08`OD9?v(vVp zI+6*hBQ_9ySrzngKyleRg!)Ovn3T{VBa<(pU+f31jCC}XIVoJ9KDcc)8j`w*#y;`8 zFvYz|YoW-XpB&ryN;Gr+NJ~#ZgcpCG+ysKxGmAuuntST4SnkfyU@ltDS;U& zxYf6PRNoTOI3wjZatYf%$+~iaRDUx!JoftrShI|&5EE~;@3Ag@T#qQUaP%j427`xY zu)SlorghT<#(M*E631Vi$dz z9j;rDSH4hVcI1ffB#{F}2&gH!b{Xp*6tuvC&`Me&0k;(?_)BYl2zq?HMDthr2NU+#9 zdqp`+ytP@^WWp=PCP-_PR?solNHW+`Dsx3}ike|)YGS2N=3jF?md!e=UaO@EwK;oi zPSb1oXMA~9+C5B85t2fa*THJW3XT)9>M3TTmzVFg0@oI6BUQ(=fy&Tb9VsT|?n%L# z$x*E+AT}c$auOtqhH=V7aWIsin1??snDvT~s$D-;#_DIbkTQ3Y8UKUHKZ+$6jnN-| zS4zIaYxLtVJ-?|f(4Z181o8C?COnZA!h5>J>0`i z^-t6hExRhS60GmbkGD9Vys?r`?z)z$2n>GKit9m;V=BOuFQd<>0tsU-k!E`e#5<~f zr1Vm8Q|a;{hfvH%mxdMJlxJ3DL@U+ox@~KKf4%FuekGcrrmz96u3wpsMmKLUvbK8b z%s%|HS~L8hA4+!6Mn6=nwe`b3>al)hq0*N-u4X|P%2k+lR%1yYwx}eue0F3<*DWnx zS)=-j$#6jW^>8}6$YwkLE(@JdCZy8-_3KH2+s}{zQK|cExXFe)ZP;eRPi)w4vhhFM zh8Z@TYr`@duCU=PHvF9pci3>h4J{jX*)Va6iGQ>Wcb{#{TWt7%4cFUnh3#*x4R5pI zZ*924hOgMrvf*JHrlgzr&$8hKHoU@y%WQbF4ezkwHXFWR!?$eMWy5}Fns^7>&~3xh zYFiZ1|83ciQj;8@_GBPiz=znE8!`IP-m$;m18Wm{Y5HQ%}^JsY;EgRUUiOI z!oPEfM`AL+5@r6KuH59o{BvtNu~}~all?+l-#*+zzUSbl8k^oRc$8l);;Y3?eiwjOkdx3)%$0-+{XE1{qssAP ze)*~hbFo@%n`h$pDs24PzGpl|#M5nS%A=IYzk;5UU#@xUd`j6RU!nXMSczHElUPkY zj9I8*(iMM_j>J<$e139LVu!$z-%OqRZo9eUTzu8`@;9G+l<1Nl?J^hNr9FJ-L*vRG zVdvm}v{~{IN>|a!Bt4}}{9=~)q#P2D;}AE?sg}X}F`-7m)3KQ=BtVSp6oHqU3?__z-n~|L}^L%ga1sCS!UvzQ7tl4ws!scCY z>1E$tc=;7q78YGqTvA%LXmR=XuC7>8Syg>aO|8#=?b2n-ue*N5${TJ}GpcHGmX-So zYO0D$rFNIlmWrwS8d^cAnn+8k(0xmKP$ey=93Q2O7}Do!v_H2lM}m@dm$aWe`pz8w z_4E^RmG+cNA3Ogzt}?D%OxyElUwy?eoAEDAP2r!!Ie~aQ2ks`x7-h~zV0 zrOWjg0ewBN;)s1~emGZ}AWY?OXjPN^4Rs?`0rT#s!%;}Z9B(k#cl zg1^_<{-pQB>fUAI7k?$V7i)Lvv67~n)MQ+7<5J1r<>XOP6}M{sNsJ~$IWCpdha1XB zDNU?Pu$7V0t$kii{!QL}^lB-+)M70$R%ky}sth}cPwF&OG8vz`=`=ypX$fh|m?~qA zTct816l1DUr(!B2zDmqeX33M-NJ|iUN{No8RHe?Nv>-DFNcp6N^$eM<^CY9Gs`_a(R~K_o{L%PN9w@17)lGxB%c%iDeWUvo)F#A!sQ6%DMY`%N>CD} zyP-yi9+O#zg!-G*ev$4ard-n7`ije~+n}`LP@cN!J6W9_jxUs-Z&#m7NvrP^`>s<% zhslf@q5OaQ^rUA=pZ(9IcV;-fYTBr21J@E)4ROk^JLeP}wj9%?YawRd!_+Z8y8Na0M^fd>B;_7ZsXY^=KlHX(FTLRT(6ckD<*7Z@O z$2K!YTz%YhLizpAw4b9>k~N;tyeGB0>D}E=rB-Cr@Gv!;$To90rGK3Rj5`;i^l!aw9%!4hZ1W)7+?HVcBZZ`Y)wX$vZFbw{p|*Kryz!63 znf_(j=Ha%vGtRi5WSj4|%_D7dTdZ+++vaN9JjyoLIgLA~1o~HKn?noeEZcmY?e4bC zhix-Q7JA*x~fq@K*EH$#o*pPLy{daCqDv!cuclbxEh z5|fKqdrc_`Ow|8)XN|g+*cWM^vgVN4$iyJ=U9DTdQvRN+^VK_*9KxA(>nLK6WpCRv zwsVNj{8EWQMvMyjp!`xR{S_6U{p7zxaYz~2PxXsPjLON$iI(4)X~ZQS-5CW7Vw~#i zw6ysJuwUJ7-Nc-QiwpTFwXAv>KPNtTNyg~}IQb{WfBm3<`JjDzOiv2MrOc&V9h z`q!Y2{dctgRjT`+Lw&n{J!4p{y8lJM^Z7RaLgC&2Y6HjAzs!LD!!5wED*VrARsZ{c zLp3OHwWIrAgyY-&3xz+nMgOBVf3F8fN`v_qN>NPRc%rRG{_mIA_~`Bb+m*K4SEB01 z4d!5U?f%uRT3z3;=BDqjZCn?)x#{12u>Oa)+gzu550yYIR8 zSNHw;{@*CHbMX#2}se|`I%cmHO!zt{2p2Ooaa`SB;8e)jpnLtS5d z`PE@mas8JWG{8D#(4<&Wn471@LEZvX;fG>BueP-2;;X(_TI|cMEUT(nq8;WFMt->G71jDY#lG@uOAD&1 z{ncT6V`rjM`EW6d7L}e?wakQ^2mddJwdNFd6cgbtqC&<5wEy<2tGlUgRUHeu$eZeJ zT3t6dI+_*Tnl)=6d|FyvLET#ARH@@K3g*|bUSm;LP_UMu?$o-qb%atZ>lQCw>~zK~ ztFB&JU46`YPEKYn;*;~6G5DXUcQR%r+>?hY`x)Wl73o#6oL`8mtVhSPb`I@A2w&tY zs&JRq)Kt~D%PZX#MgGd-#icdpxX0FNPc^KeINMOo_*C-xK{t zXvdFxmEU)K54c05(x~t0E)gfNH_?$?*%lJaSNz{KWDNdpuC6!6I$*w%~%UM=U z2Qf8kYL0l9EGeQ6sXd_}WE(e;`W`1(?c&m_imS%luuJKp-O5L=P9?kQ3nVxn`-?);Uz3|h{Rr+w%CeYj-$(Z<;mirbpb8 z)#%j!kz{-HBVAsbp2%7Ct_Mh_%V+v!PrB=z_4Hp-s+&SjKW=}m5N6)onG?*3Z%_X^ z<#8vEa~IjAkXF<)G$|bGf7CcgTTxN9R3etpy_$m|*fHUbuF+np^pQ?c%_6^4c&$6N z^jb!m@-lbnl4{@bQ~!Q?SJBk$L8yp~($7o7jaeG3dr9e%D*H%pwB6H2>k(1s#nMD}7>hi5W-@nU4Ec;!YamRD(+5)u8k^HE6c0HK94KI+bb^Uehg1 z*pKj~cbO=*fbZ#HP8u4ehE6`AI=OIgnuL+~HpA5Ut1x!#Fpk&=6+5|K+K>qeXO7(A zQp0=$)QKetq!+JTQ(|lSwMDf?zW`H&uKWh02@~t5Tq8%G@}WLRnH~4{jaUoLHSSxStwa;-oAwQWi~T37U;t;ahB{y9fNQJF+5%k zFL9~ia|fv5)bsG!DV-;@*)(wVQ!eVt1x;PEyJ)9+Iw9e1juTa#&ntt?Q7OzN*r@;#zXDtTC)l>P^Gl4GMvw9~F8?Ica77){qu z8>*S5)H8g44CQ~MleF2J)^xX5Y2z8>@9(wS{qvM+xTHI-Bxw(mBf@=b#$`%f%J-_B zmdTH)XUUJWjaYZ$B9nH-2Upsxj^dt z#L0uIwY&Hk-d_#BoAR|KwYr)Us^bge(qd`rNs&2ls5%C>Y!SellY)Vo0(~13q$36Frd@{zHoe+UIU<4 z0`!VkgKvRelE&Ov(qQ~x>@f9D9WhQ1p|0)mzd0$XpGusX z{QmJ-rOHEeJ&F0}mbkY5tuf8f)lr3!1rcdNSE0p_v*Og)^lKu=I?5vZnj_r9$e;At z$-DmO80N?FL(R2WQY5%mXAvN7JmHFc7cBS6u`-APj0z9EZsTXat zBbl*}_LTh4fa-+8_yRpHV`e?nIj}9U)wJf=g5#{WI%U1(h>lRv>6~N?lztFPKLAcP zAszi4s{d8A8R>tkfqD$G`)&ahV?g|Dv(|Ksj8`LlNor(CBI}0%YGn8PX3E7F)MLJBll9(^vlG-Q zzQgL2lCRV$>0hc-9G|K1tjHKE`B={}o6i4vj29E7^_ySX6u}*8nJtShw$<3(9?|W` z`0W1sFZp&un}5l-8#?@7k#8UA=qbk8w7`mYte1C2zM_8@!HHBh5ie>!OsP|R2&7&-}gU(hnDynKj zrVDdsUzC$KW%9(53RbrPCG?*STjN??ggG$t=BpgX9A6Fpb1BU^+6Pq!<4sC8$D23b zQ;@5JzZ&5!EvlYbQ%e3`)VN33Ch8NFQwjTNMoqa7W@*J77#qS;SDBG{rA6149%El^ z%34F+&0StCsodPFy?E4~s1PTuoBnS_&8u9j=~I%ktQbLUQlTP9n)yrUb6n?$$lTiO z(yRQ77M0c%)RfjrlQ<=6wy)xn@*1DNsA66vT&fbKMv7ftRn^u0>X|UMB>{>iET9x| znNd`YbhflEU+FTR8Y^}tXwEX#5s_O70g5Whuj^f8Pi4uR>hj7NResX_5NZkkt)Qx0 zsHUD1+4LUfH#B9B?jK4$AT+xK29l=i%i53WDTs7v>J>-}RF#5zW-v3IDw~*Bmvcq7)hXNs)Oo@{6iz(X=p9+a5WaoJxdB`6M+#L*!SB z98%PrZq~60S36(*Me@;?gBsFZCW%W%0{XB!I@HDIR)zb$`i&VM3QBAAX+&i)?T2B%3Mw@`fC?UWas(I%4ljz-6quPF)EcHufL?a zsHQYb+fwn-gGQGW)szcUb-pSxE+rS2NtEogr5tv#WE@fIPo|~QU${4IT7*5qk^STR z>Z*;LSI9YJKI+syG30uDC~IFc!yeyHPZ#ko-@ktUqQJi>@SmqZsLxHl`@n>sj#ujW z%iS-Oy(G#H%un1;;0yIPIlmX2t)EKai{?w<>&M3yk27&|uFqCbpYMxZJYOuIxW(~> z+$3HJE6~L!@ybvkc1e7&+4Lv&qxi%g*1GoRvCT7VGef8jGuyVGV?!CaB>qeJByAR5 zI-Vs!Hy^{Eez1Whi_X84L;TnANuF2Pa5YfMQqL#u4SbTHAM%~b2MbJ_e+iWQ-peQH z!K%{sj{&7jd-%ltRX%Y~fha;B`GhY2++X5xelcpyhF|IsvzSn3y?({(Zgu7B-+O&>FW-#EFYf=doB^D1g9(Ysq2P=jzP$FmgKQgS z*>IW-Gi;b{!!#SF+R$yo6dO8i*wxR_`F$I<+3-&`+;78|Y}jhU-8O8o;SL)%+whMz z++@RtZMe~f_uKGx8{TZg1{;RrUtyblHmtB=p$!+<&}+jC8>ZRtbQ`*D=(J&1v?+Ig zCVWQ^I(ORkmJQo%xZj4YHf*tBvkf=eaDxrk+i;l;3vF0n!wegy*)Y|HZX2f9Fwuri z8!8)iMVb6}+R(CLn+^Bdu*HTOZMeaP>unf{zs@#S+py4vUK?iE&}~Df4G%|}e0*lZ zHXClT;RYM_q;U^&|F@$J7nuAUFXI1gccH^K(V}y9-}x^bY}a>+fz?9|TyK}RAm5l7 zHuM^|8;1J(Rdzp4J!tgs{CB~LBrIQOylJz?on^%)AOBT&qy2l^ zj(3F}?>`EqzeqlN_Z!)3%1_ow@>3T^%NF;)@5ip8Ms^OIvm)A{-sS6@;7}IuVm7=B zPj#pQ;136JR}(+C0ap%I>U8irUafVBZBib0oZH@C@K`KJl{xIKpjk zH}I@caK?F!GXvPlCus@1X|yR9x}p?%pLAG(Kj9NUw*$Yj?GFPdj4^&T0q;3QsTHJq zFYqJ2dnG@>q2rJh10N2Y14CgG_*~#ue68SzfkRG1h2>cM052F1&Bs6!;6r>;mWP40 zr<*+ZfTz(QQt@*-uz@cdT;R_qaZa9!&MDvrX~;Ta-w7OWhKWBBxQ%ZGes%!QWf@+F zpDf^4d{U=}fk&p0XY5rv=Vg3C!wTTLe4W@^z>8qm90o4{?m7#e3;AyWzRoAK`V;V! z4DyD($V`kqhj;`BMo%Yi;7;I`=TZjn#lSy&N2%X}KMZ__PvWtF^Rs9J)Yk&wwR}RW zW?&ni_z}qU1dR)v$tQU(1UB&P$NzfZ{d{fU8-f49_qN0X+{$Nx?*RVjJmfUMZwKz> zI}F|m+>sA&>=gU}hhAjT8V-DvPiV3Un0>LKt-$nI)Div#e#qwq?*!J(CN0V$@bkIw zt+4L`zH$jqK7*s5Oq4X~vZO6g>NhaBq+WgtjJ(X0D+;)rZxjC40w3fPI&1`%vK8Bp z{bJzze3CbTi3?3wfio_LF9m(Fflu=Zty+M0UBUhld;{<`KC%B3@Dm%4zmmSsC-w!v zdcL{f4ZtV(B&}v(RiVMFfx#m7t@z2fN~tUOB<#(=_7dbdz~2W>;#@-Vp8>p@PyEP9 z#<`1?dKf$l_#|H|cr$QDxxur6&)E2G;N0&)Tl@$-!l!8GTohN!`GkfmfGvCyzrcqp z@PeOaU^a}y#oz*;@&>*em{?`XCGa4h^tCQv)-~jZ_yu0UC+)KkxSdbZ z64{l%@JSip26}2ZlOb#!a1UQ6cq{O7AEMyk)xgXAq(__!fxo-fo)s{DGJq%EOuNKS3h-h+$#Vhl zmwXcTUf{V+hPGM2J8n09;ZER=pVDXXBXGeTCJ#Q~)Sn@5jr}y>HFp~N_<&#V32hGp zH{E6EDe(HA6F>e}0RO-zd3YH3IiJuCJ$)+i7X}yDw!y?BF!63a`jo%}_n5J<4fx8v z45irb2k!or8S@23-DlDjIL*cde#Dn2eG}&HR=x$`JAf6x=j<0;;JF)Vx8Pa88a}D( z4Zt9u~B1Mhv3HViKCmTlx4{5GK4Zsrkzu{(@?Ja7r0 z(76tn_B3V0e-= zBXG)o!h)v*<6fgI;PJrOd=md$U^}0T5AOpXf7|qhKLTgHW9n!w@a%VK(}c|c2KXfG z&A_RDGwp2}@Lj%6{8+$+mdU3;M>}O>&2u_1y#tzp3+#HI^#r)U_zz5*5%>_Fj2jOF zt3HP2_^AeV@X6WL9f1s5oC^MVUZ_`={KZ!hxhVlPl+#swF++{Q(2T;#jOUZBW>3NG+P z8y7yJ$OMbMK#_Zuya^PURIlh`>>~Vs=_|(CGawFw11&^#JKi2_O~C${{G|GYaQ`@#NTop|ND<)Z}nj>eAq7R zop&>?K)kn20aWL`teLS7nN#j_sQaDW=H}ng{~&6}J@sMS$99`rU&EZ(ZC>^s{)s!} zzwJZJlqqEPe&j%AsoR{2o0~6-56NNv9{)FS;zV`+`RA+o^XIGb@^a<(`&FHIudCyK zox1(@+tsgs{cE*(^JdlD+^k-G^;LD`$Pp#mSMjAiW9Sr9y!yfJI_|ygTDp{>9^>BN zM~Ca;4=-K1Vug74D7gFZ-r(*-IPb#j#DK2zAm*h@#cb_G>9;mx8&ppId=xxfrrnpW z=ybkM;NVW%ymYU#OTw3x5x@Ly6#u*TmX+-#eQnn9mzD9*K@dMTO8kd$mmhw#e+e(Y zibI$Wlm6bF+Dsx6{{cx~{|=EpZ#(QIf5cW+Ciy$O_lpCV4vGhz|J8@r?LNHwpu{2O zBeNIg;^A-w@nequ<1>R#y>s_oiclu>aqfR`)gU1NKZaE0{Cdsgq`cjG@o_WWiT^iu zoRMKXXmi)|d+#0n+uho)xD)Pu&$M6{!Q-|6y}S3^Gk15_;k|XuVun7!ujf70byz!# zf9TtOXID@=Yx+wRmT?yUTIu?J?%4&lHaUnIDL zPdAO@Kyep;J;O;neSJ4#AFNXjzDT|pJ{RA}ptSQuJ~!XrYv<|d>FB>jbmQ$ z(|HTE@%8K1s|Ox?w8Q zQy)E5c6F7ykt!;CDj2-+sg5gY30L3v;pbOA3UcGm-{D2jugX?F^Ul0^^PVcpOaFJ^ zl~-SI&BejsBUc7*XdL&{cjsNHZVcY@)Fbo$UwdZ)US*N&{YGT~7Z%YW;F1uwK-7SU zAX^d=mPDf9++lFL5s^Vq)(FBVn=-Bpk{L%)L`dR-p=lh<=erWo<=Y6ZYs=BJWx~k6``g?pj{ZBI6{>?XwoR{LOQq+j&8x^EO+OWi``>0N4n>3In%8zy38dlH+Rx% zb8Vh8m->vkb}yRi{EE2?UN)DpQQ@+;%=IlXm#6yY56qqaiMfHB&0YMtxhYeoxEpW0 z(dFmoyW4NS-Q97=9qz8X?s9YI&UN?Rd#|70MT-`>M<0FE+p;I0e9~=rdXc;4OLLEw zntS%yXWa`gyx?Ab`DM3m-8#2%<3{(^TW`5{-+kBZ_-K>c@Rhmu-+$lB#iyTs>UQqf z=05z^Txn^k`{tW(ysW_1LsGO?>7z3^5}KMbWy9B>b@GAwsUhrFD z;F}9Rt&jE?Bjs1laBlh{#Ulj2x>Uav7W^i`zbE()1^=nwcL;uW417v+#pTi^>*vd# zx58d5Am3U05L;i**`_wm-tFs5n_}CR@2qsOv)${;@lQEM@QH$NE%>g2&k?-( zDjg#D@%5bD)W+HDzRn&Tzp1H5unA_Rc-0o54zR5TD?P7D^ud{Oa;{<=Q z;8O*Ej^GCheyrec5d0nWOn=+K+#`L>tsZ6W)qHdBEH?Mqy1no<1rG;~75s66Z!Gxc zfvZt0o+tKO}Wnl(*K zY~Hi{f%I6y7FC$(tNtZC1lO>(0TWM=8M{$=SyW@c`3OCIRiGa-6E zJ13)icB;DXo{^r~Ej{-n9%$Aqv2pZ%R!&-ac6vr;hTy^Ml#`N^yGC*3k?fr8P{f2S6uLqK%4>Zped}=x!WMtWn2U_tV?AYu&cip*4@r(#?!+lI7D*%gES! zKR35q`q`ao*QkEFM##ve_pHplW~^~+|NjrxMl}%@elq;z|xMWSNrVT zjGWX?lC|>Nx*tlfy7kV;Nf#fpVs69#O#g(wZ{IeflT;=4w(no_o1G~^% z{cEDL(mU=8E&bTH8*N3QAa7Tr0~wO=EjLUyj#8|M1Scfe;D zr}nnnZgaC{&2qD6&vpd`1@4}E?(x3D!w)~~{lO=mc*5Z;yteXwH%tD;BKZo>JoAiu z<&{^wZ?NTq68FIeAGj@Bwz$te`^_K0g^%Uxev<3`yAmv8U5#rBcb@4f4cOVNVZ zCr|D7QCy?Ot>Wv}u6?5X;f9Gx&6>4nmQt^7ot8)Gx>4gM zEn4W=dUfMdl2el1@rkXHQcgHLrJf$BebiAW9^bfGQpypBC!HAmA|WBERZ7j8Ms8%CU&!(iDP^&uq z|1s{6`no!z$>FtXC2JqhxY==s9_$SPnGv_Z_cb4tgvE$<}zWCx3tvw%X-@g4LwIw@u?%bh$ z>6Ulid1vwS&p&^&&iN#F?%Y|D?`hJa;rr3<%Fo-c;U9C&!hCe|=FOX^g;#`^t5V|5 zKmYvH(^d5Faf&0}qJ6ZjSh2!B`Q#JRdTNTh5TLS>k`mMY+qf?pOndNmw{G3~sc3zF z{rdHHuUfTgQnzm1+NvMs>3G!!s`XUCg?T+ZTKNo*x%Wra6I2^0R?&9Po;}J8Xj@cu z{2PkjuSy3`qmTCO+cyV4;pOpv@x>QSF;WwLwsh%IkGEn-_VLFb+uF5jO)&-k95C_` z_L6oUxokIUw>`#W%8ReY0^$SoW5<_Hd9QuoX@Ym`l`M8=9?Z*&5y^Ox!JsV zv%UTH+x{AwLY2?sKTGCze);8>dn9+?tIw_9efOPx_0?BjzxLW|kAL{#hb0>8TVO=z zzoc*Ngu`@Te=YvS-pC-rvdp;yvdjY#hJXkfFn8~9ro>p4I7M#ZZIFT=m)w3%u6r5 z46KXlMrW~r~3o%VuR z%Clz4tISSWX?D(wX7fKX+qHZ52I&g=UzOtVU%q^Ke$%E++sTKYE_-R34^IO&hdF?+ z(8FASJD-{V_uhNYS3bjY_zk|u0n&994>in1Xb(nD&;#VzP^+qO-VEKG$C&4Z^W&_N3?kt6tD z86EH)o-;?t4f2oO)t=2Gbhhw6^X)Pky6N|mU4?5$(V%#;jTBwrKV*Yh(j%?UQqs|zv6wCXvmiQ_Yl9K zp^N@R_Zcsj(a>7Dpg6fDt?-XyN2^ji{<6jSit)G8JWNN=uq~C*fxO4gNsudA_|JXT z1z@o=v8CS@=_oY3YnCM%x{HQI+hd>D@8>Ud=g$2Q)9~AGzcsBh`&4KMHPBJnoCI28 z>G=Np?`_@Vv+driv+d4Nsdn3lG>_PMADjL8L$kh{&2pgO&8R+0W;zFb#wJOhu}RIP z2k7(3k|%WfC*|2Hp~2&?`JSfOMWXEbRA|8-(gqr6k$dF2A{{}#kac9K*V5 zMPs_y-FaO-4G?hQr)K9yY3Ng8)>}CB5)I}03=L6zJ_Va3o7zk^sj+B?Us`5c)yOgoN?PXe*U6rJN<;LF^+kSGd4+~hE7B2kC6*38Lj&cpNoUwYS9i39 zf9qrqj1vuGyV$PMZT5!L85(j$gK}*4ml%D%2i zVUsS&w42AAXYakS)}SHQ$ME_rn?$J$f7yF4|H5ZFxPuohIDt3%0H4F0VB=%`WBeg# zME;+?p{qS58kUNNM<$2{=>qx;4d^pA=?>XdXqW*FL%Z4amx_kJX4=F{x_cVH6CZ>1 zIrtduw7#kQO#ZPMtikvZ)OqvfS#fc(;g^OQ=7aV?dZM_jt-X7It-7|oJvl`*NEaR! z4G%{38JkovrmM{!-PLA}Oto8wr`au+r`ye<;X2W9jcAx48YmTgjQ^HysQk?SfWKtH z%fIA$Dzsd8-E|g;L_9r#2HO460Zqsjuv^zXY^$fXx0Rw{nP~9(EE=#$L7(T!CfzkU z)ove|X8#fm(?!EgqT%n7qbY+jJ)+p8^cWxGVd=ff&+I?=2l?;RsZ(=s08gC?DW`#X ziKXK}wEXzv5BC15JMGzN8Mflu4z?_+&)B4(&-chCLBp&l4gZuJO}{MNZX8lZ1BiMb zL;iMe)!DLFKbgH$LH4<9$ee5a&DS}G?BT&m`r2%mJ;W|eHGwP?}8a&vP{XEO}HE-x?7uDId~n>KBl*K37* zyxqYUs*DzR&)R^k!WY6HWj{bcpI^OijQ#MP_8UcG{rVj1W84wd=NZxkN@d7~?-Z-3 zBVYf&bnWp!`Q(#N*U_Hg`V-rq$&dE)P*_-KXP1>hx;~)Pp<&^B!TW|IFu)l}j z(7;;2I)PkK*~35s_7pi}ErdtU+?;9a?+5?g_ToKb_xc#p1$+$j8Jl$HxE#>`#r>CJ ze>W->ItBTWtmkXr-%jUXBGO^gJ=5R3GwFnJedd{GdcQ~KVZ8kWcW`BnpdnPggWt#= z`y6~b<^p{{r@cOF9$24)K4X(&_4$7un}Z)XEAaY2?HOmBajVYs_&5k-M|IhBM$vR8 z$rRJFmMvSFd~1&jc;GL^R%i${&_PRoRAegjjct8-_Qm$(-_x`{m-!g1&&3lm?6H3h zwzpqeV!LxKw^2e5MeEr(^4}D2@=PE{7a@AE={REym zH|i@o9cXCPs+H;Nnx6;O3}hbPC(r@D;E&8hCwl{0^Z^|~AHtl_B7^uQVeMh>&Hh>P z@~h&X=oa!XSt`(Zv5n}dGU9gi)mQs@fClWUV$0UQe}Dfya{vvYLPOa1vZutyM()9r z78!!JAYXisPleAdTk=oEo=(>}!&}%x91Q-*Jr!9Z-V9CPM$B1f@4WtIWMo)cTAJx} zik}DW0~2VV4RRIcBf`k?tX z$(xq})+qSQ^Hi>(0Xqs$vHuS}^pGuFxX`bG4?g&yha*NHK5dn4yHIQ7)xv$XzPnyX zllQ1<{-z=L;{Ra(rH|9OM&D?`g?Yy=NKU;kp*)GVtlxG0+ldpoQPqCav9m zpMXrU*2eM|T)75+<|g0GXt@4)lemgkTqWS#F>1He7xN3=)MFAfhHcaJ|~g#EA9p6SRXYY=pxgYXIafvsab zik%a9yJX1{yYtRFy*$J3P@x;yL3i+*xJG8^kF`KH^M1WL;b8d=?i3$?h+P-KKU8Q4 z^+0n1O*#|p*DGWU7-$1uWNU?NC$t3I<)7Ynkn&!J_1^z|{73rb_rF@dr$P(-rww$_ z20CcrDfR_jpfWdn$2?#=(NpFOTSP8_92B&`ca3o{c4jZe`+oBH2lTKd4>TwE z_xL~1MP81IY|%dV+;iUU!UOabc?W;=K=OExhX1WH6H7ru_!;7#vJ>U;A826h#DBs5 zAqT8Stex6Zrj7Ia&{J2I2o?Wem6+ey*Z%GzqQNx~;VHBI#(&uJYdQ2bje^1NSPQ8PV7 zRZ(!;tr}anCZkd@9;ogrEsPbXy=>*Z2YE7Lp=pZWlJh2Cyzy(ZR~41h?~y29==uGX z6J*1SH0B=cCpMD(5;#yp4kPOG|0KKmwQTMN+07^Dn4Bs3M)F+bSBQy|A9`)4*;>(F zg(>^l{nuzqd-=q@U0h4 z%<#EB@-xH{DU3}e_e%bloL{Uwa+ZZ04Y@vYOvq#MQyz487#}|<Vw`RccHHbpuXiv#l5uYx@4{Jz%-&e9-{74mfPjIVsk0L2yh#p1!($T=;A zd>c6u@`dE7mfSw_7juT&zB3zLqMWC2;5-jHLC%&E=*O=ZKYsl1Ns}fG#RsJZJcygX z3kvada!uqo$d!?2BELbNj2siW4RU1Um#!XIR&Tpzh=GHbN9A2Z?wkH%$HxXx@olKF zcz_G@zv}u_Bj5Fqa3H2hY@8em@<^VG{0g~7pW}*-KjD%d4CQqq$YU4rL8W~D@y(Qn z7@*%>_QMvi-^V|PZg7DIwCjt8_`D(cDss2v49PvuiRKH@3GyT43MVT^6?nj4u{N6A ztxCE4qg(oI?{L}wq39xZhkXHiJ9vWafgd}!zG*N1tB=nU5T8aK$>9^54mv@eiCiCf zvPn@K7_3i8Sswoajs4Cyd{b_N;_)w$LG%!xpB6l*@Pi5-@QHaiP}#8hL7y`vS2tBS zkT0!JerEp||K^)-9&q>FclRSVgg*`*@SJ@$durmQ-~lhNN8F>3zvUc2(22_Ak>{ea zR#_8|kF9vcaK&4O!G~LJxy9Q(>@Mpc_8(b*AIKtOg9`7w6np_||o<|lS;n2Trg`&j9gjke>%*Z0b!bb|af@;Gba zxeQ+2h0z=`FiVH_DaEJ z_V~5w{wzR{$HMVF?4f^;w9mH4IoT^~`>>&F*RE|9?;Q^v%43eW_~MJ7*YCIOvdb>> zabTU1^s$Su_kri|1OBtWLl)o%_*X3Sspr;9wqn=Xea7cPd9goB@BKcIwVu2Txh45o zrgPt(?y&y?4=VfskBV~xeym&A4)&$${&ZFRy91SY_Mq}VwvkIDFQMO=8u3?f7&U5? z=R5X*b&$S;3@{dUA?T{si64}g87x`OlaKV12Ib7tFYT$~;gxtl>UCD^}d1fouQL;JWYiU-{bs`W;l^865PU z0MmN~?5wlS^0e~;s7mqn7yF}g^h4>dL@{~Rd~6Q6 z1--Mt=a|t8@T0(o5aY#PCZ~emE*kFApj90k{QUSqp5ZGMJgAJvdZc$Gc-z2PRcJ@% zm@jw@-PmNsUheyqWBc(LN4Cb>|H|+PKCpgsVEVnIj}_w=5_3Wxf5X^*eCQ49FR}!^ z^hw3$p>yaqbRuJ%-{I_qeiz{F!$H!`*pztaugLdU{xb(uY%jKtdDc52kiYGUhux?? zh@Tv6;kPDr53-_PzhvL`i`NhF`ps^&^55&mPZlp!tEsvwRGtek@dBZy>bp=U=`+

^h^N4aZyJe%k(7BL*-gn=9``8`j0CuR45%cHI z_uuQ8!-|TEvJ}r=zF@%uKc8U@W1eNxUymJ(e45Tb6KDNieQcKe?L-gR8zZj^wFmi= z{5sAxrfP3BOZz~T$3h=Gi%jFg1%D>!6t*l^`zH2G#1PiYtvOBSI#q&y?8qN57P^LA zq9U)rQU+*y!XEgsGMCJM7yWOS+9lW~^axz>9gyv{Pu^qsBg%ZkfzkaN`$zV#>=oFn zwANnf4&g*eu~pAMC~1dl8FZ-^aeQgZ7=osPU=58@oke z55pen;eU@Z`iL!`$;1-VA&$VF4gN7ttU>relx5d-_x=|95B47HeeiYJZ$$38(ddJH zcrW3>{OR2@KF^H}gAbdZDX=AzyZHSizB_(9`v&$-69)D4WBjSaY@YVD`kl8;nl#Cu z5h1U}Tp}-l|Nde9w|3Pc@Aps8-X~fh_EGq!b-~*$a&nv>05-_n;)z{t+vW|PpX{Oj zKE#i|Gsq9Jhpor%Fqiu6y5}jjnz?*$b)h|UO;3NGd-k|9?ZqeVXL!9~vaIO0E8bVb zejzv5ZG0}~1A7{a3!hob11v4ihxvzh!S5>3I?4E~N9+^m8@sHve^M+wb{f3t2VUsD z*C*C&;z_`=&t~mbE@mHC`k7cGl3rKU9U84p?fzGxTg1q z)-Ai@eQSs49?#VDZ(BQ5_sXt#*VAn)X1Lk5l>kvHP6SDZX>#ITM7@`jxR;sQ>OG+Pe$CuXbGOdj zGq+|zTtQMnhk{-O{R=KF7*}vZ!OVhr1xpLo6l^NkTCk^}W?@_*Z|>hH7&o`>+{q8j zm_Kv=-1+n7FPgt}{>u4l=C7T3KtbFEnHc+rVzeuEi5hE<2hHiD6S}>D5l co{tw5U0O7=?|={2,3}|[~!]=)\s*') +MARKER_OP = re.compile(r'^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*') +OR = re.compile(r'^or\b\s*') +AND = re.compile(r'^and\b\s*') +NON_SPACE = re.compile(r'(\S+)\s*') +STRING_CHUNK = re.compile(r'([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)') + + +def parse_marker(marker_string): + """ + Parse a marker string and return a dictionary containing a marker expression. + + The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in + the expression grammar, or strings. A string contained in quotes is to be + interpreted as a literal string, and a string not contained in quotes is a + variable (such as os_name). + """ + def marker_var(remaining): + # either identifier, or literal string + m = IDENTIFIER.match(remaining) + if m: + result = m.groups()[0] + remaining = remaining[m.end():] + elif not remaining: + raise SyntaxError('unexpected end of input') + else: + q = remaining[0] + if q not in '\'"': + raise SyntaxError('invalid expression: %s' % remaining) + oq = '\'"'.replace(q, '') + remaining = remaining[1:] + parts = [q] + while remaining: + # either a string chunk, or oq, or q to terminate + if remaining[0] == q: + break + elif remaining[0] == oq: + parts.append(oq) + remaining = remaining[1:] + else: + m = STRING_CHUNK.match(remaining) + if not m: + raise SyntaxError('error in string literal: %s' % remaining) + parts.append(m.groups()[0]) + remaining = remaining[m.end():] + else: + s = ''.join(parts) + raise SyntaxError('unterminated string: %s' % s) + parts.append(q) + result = ''.join(parts) + remaining = remaining[1:].lstrip() # skip past closing quote + return result, remaining + + def marker_expr(remaining): + if remaining and remaining[0] == '(': + result, remaining = marker(remaining[1:].lstrip()) + if remaining[0] != ')': + raise SyntaxError('unterminated parenthesis: %s' % remaining) + remaining = remaining[1:].lstrip() + else: + lhs, remaining = marker_var(remaining) + while remaining: + m = MARKER_OP.match(remaining) + if not m: + break + op = m.groups()[0] + remaining = remaining[m.end():] + rhs, remaining = marker_var(remaining) + lhs = {'op': op, 'lhs': lhs, 'rhs': rhs} + result = lhs + return result, remaining + + def marker_and(remaining): + lhs, remaining = marker_expr(remaining) + while remaining: + m = AND.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_expr(remaining) + lhs = {'op': 'and', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + def marker(remaining): + lhs, remaining = marker_and(remaining) + while remaining: + m = OR.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_and(remaining) + lhs = {'op': 'or', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + return marker(marker_string) + + +def parse_requirement(req): + """ + Parse a requirement passed in as a string. Return a Container + whose attributes contain the various parts of the requirement. + """ + remaining = req.strip() + if not remaining or remaining.startswith('#'): + return None + m = IDENTIFIER.match(remaining) + if not m: + raise SyntaxError('name expected: %s' % remaining) + distname = m.groups()[0] + remaining = remaining[m.end():] + extras = mark_expr = versions = uri = None + if remaining and remaining[0] == '[': + i = remaining.find(']', 1) + if i < 0: + raise SyntaxError('unterminated extra: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + extras = [] + while s: + m = IDENTIFIER.match(s) + if not m: + raise SyntaxError('malformed extra: %s' % s) + extras.append(m.groups()[0]) + s = s[m.end():] + if not s: + break + if s[0] != ',': + raise SyntaxError('comma expected in extras: %s' % s) + s = s[1:].lstrip() + if not extras: + extras = None + if remaining: + if remaining[0] == '@': + # it's a URI + remaining = remaining[1:].lstrip() + m = NON_SPACE.match(remaining) + if not m: + raise SyntaxError('invalid URI: %s' % remaining) + uri = m.groups()[0] + t = urlparse(uri) + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not (t.scheme and t.netloc): + raise SyntaxError('Invalid URL: %s' % uri) + remaining = remaining[m.end():].lstrip() + else: + + def get_versions(ver_remaining): + """ + Return a list of operator, version tuples if any are + specified, else None. + """ + m = COMPARE_OP.match(ver_remaining) + versions = None + if m: + versions = [] + while True: + op = m.groups()[0] + ver_remaining = ver_remaining[m.end():] + m = VERSION_IDENTIFIER.match(ver_remaining) + if not m: + raise SyntaxError('invalid version: %s' % ver_remaining) + v = m.groups()[0] + versions.append((op, v)) + ver_remaining = ver_remaining[m.end():] + if not ver_remaining or ver_remaining[0] != ',': + break + ver_remaining = ver_remaining[1:].lstrip() + # Some packages have a trailing comma which would break things + # See issue #148 + if not ver_remaining: + break + m = COMPARE_OP.match(ver_remaining) + if not m: + raise SyntaxError('invalid constraint: %s' % ver_remaining) + if not versions: + versions = None + return versions, ver_remaining + + if remaining[0] != '(': + versions, remaining = get_versions(remaining) + else: + i = remaining.find(')', 1) + if i < 0: + raise SyntaxError('unterminated parenthesis: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + # As a special diversion from PEP 508, allow a version number + # a.b.c in parentheses as a synonym for ~= a.b.c (because this + # is allowed in earlier PEPs) + if COMPARE_OP.match(s): + versions, _ = get_versions(s) + else: + m = VERSION_IDENTIFIER.match(s) + if not m: + raise SyntaxError('invalid constraint: %s' % s) + v = m.groups()[0] + s = s[m.end():].lstrip() + if s: + raise SyntaxError('invalid constraint: %s' % s) + versions = [('~=', v)] + + if remaining: + if remaining[0] != ';': + raise SyntaxError('invalid requirement: %s' % remaining) + remaining = remaining[1:].lstrip() + + mark_expr, remaining = parse_marker(remaining) + + if remaining and remaining[0] != '#': + raise SyntaxError('unexpected trailing data: %s' % remaining) + + if not versions: + rs = distname + else: + rs = '%s %s' % (distname, ', '.join(['%s %s' % con for con in versions])) + return Container(name=distname, extras=extras, constraints=versions, + marker=mark_expr, url=uri, requirement=rs) + + +def get_resources_dests(resources_root, rules): + """Find destinations for resources files""" + + def get_rel_path(root, path): + # normalizes and returns a lstripped-/-separated path + root = root.replace(os.path.sep, '/') + path = path.replace(os.path.sep, '/') + assert path.startswith(root) + return path[len(root):].lstrip('/') + + destinations = {} + for base, suffix, dest in rules: + prefix = os.path.join(resources_root, base) + for abs_base in iglob(prefix): + abs_glob = os.path.join(abs_base, suffix) + for abs_path in iglob(abs_glob): + resource_file = get_rel_path(resources_root, abs_path) + if dest is None: # remove the entry if it was here + destinations.pop(resource_file, None) + else: + rel_path = get_rel_path(abs_base, abs_path) + rel_dest = dest.replace(os.path.sep, '/').rstrip('/') + destinations[resource_file] = rel_dest + '/' + rel_path + return destinations + + +def in_venv(): + if hasattr(sys, 'real_prefix'): + # virtualenv venvs + result = True + else: + # PEP 405 venvs + result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) + return result + + +def get_executable(): +# The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as +# changes to the stub launcher mean that sys.executable always points +# to the stub on OS X +# if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' +# in os.environ): +# result = os.environ['__PYVENV_LAUNCHER__'] +# else: +# result = sys.executable +# return result + # Avoid normcasing: see issue #143 + # result = os.path.normcase(sys.executable) + result = sys.executable + if not isinstance(result, text_type): + result = fsdecode(result) + return result + + +def proceed(prompt, allowed_chars, error_prompt=None, default=None): + p = prompt + while True: + s = raw_input(p) + p = prompt + if not s and default: + s = default + if s: + c = s[0].lower() + if c in allowed_chars: + break + if error_prompt: + p = '%c: %s\n%s' % (c, error_prompt, prompt) + return c + + +def extract_by_key(d, keys): + if isinstance(keys, string_types): + keys = keys.split() + result = {} + for key in keys: + if key in d: + result[key] = d[key] + return result + +def read_exports(stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + # Try to load as JSON, falling back on legacy format + data = stream.read() + stream = StringIO(data) + try: + jdata = json.load(stream) + result = jdata['extensions']['python.exports']['exports'] + for group, entries in result.items(): + for k, v in entries.items(): + s = '%s = %s' % (k, v) + entry = get_export_entry(s) + assert entry is not None + entries[k] = entry + return result + except Exception: + stream.seek(0, 0) + + def read_stream(cp, stream): + if hasattr(cp, 'read_file'): + cp.read_file(stream) + else: + cp.readfp(stream) + + cp = configparser.ConfigParser() + try: + read_stream(cp, stream) + except configparser.MissingSectionHeaderError: + stream.close() + data = textwrap.dedent(data) + stream = StringIO(data) + read_stream(cp, stream) + + result = {} + for key in cp.sections(): + result[key] = entries = {} + for name, value in cp.items(key): + s = '%s = %s' % (name, value) + entry = get_export_entry(s) + assert entry is not None + #entry.dist = self + entries[name] = entry + return result + + +def write_exports(exports, stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getwriter('utf-8')(stream) + cp = configparser.ConfigParser() + for k, v in exports.items(): + # TODO check k, v for valid values + cp.add_section(k) + for entry in v.values(): + if entry.suffix is None: + s = entry.prefix + else: + s = '%s:%s' % (entry.prefix, entry.suffix) + if entry.flags: + s = '%s [%s]' % (s, ', '.join(entry.flags)) + cp.set(k, entry.name, s) + cp.write(stream) + + +@contextlib.contextmanager +def tempdir(): + td = tempfile.mkdtemp() + try: + yield td + finally: + shutil.rmtree(td) + +@contextlib.contextmanager +def chdir(d): + cwd = os.getcwd() + try: + os.chdir(d) + yield + finally: + os.chdir(cwd) + + +@contextlib.contextmanager +def socket_timeout(seconds=15): + cto = socket.getdefaulttimeout() + try: + socket.setdefaulttimeout(seconds) + yield + finally: + socket.setdefaulttimeout(cto) + + +class cached_property(object): + def __init__(self, func): + self.func = func + #for attr in ('__name__', '__module__', '__doc__'): + # setattr(self, attr, getattr(func, attr, None)) + + def __get__(self, obj, cls=None): + if obj is None: + return self + value = self.func(obj) + object.__setattr__(obj, self.func.__name__, value) + #obj.__dict__[self.func.__name__] = value = self.func(obj) + return value + +def convert_path(pathname): + """Return 'pathname' as a name that will work on the native filesystem. + + The path is split on '/' and put back together again using the current + directory separator. Needed because filenames in the setup script are + always supplied in Unix style, and have to be converted to the local + convention before we can actually use them in the filesystem. Raises + ValueError on non-Unix-ish systems if 'pathname' either starts or + ends with a slash. + """ + if os.sep == '/': + return pathname + if not pathname: + return pathname + if pathname[0] == '/': + raise ValueError("path '%s' cannot be absolute" % pathname) + if pathname[-1] == '/': + raise ValueError("path '%s' cannot end with '/'" % pathname) + + paths = pathname.split('/') + while os.curdir in paths: + paths.remove(os.curdir) + if not paths: + return os.curdir + return os.path.join(*paths) + + +class FileOperator(object): + def __init__(self, dry_run=False): + self.dry_run = dry_run + self.ensured = set() + self._init_record() + + def _init_record(self): + self.record = False + self.files_written = set() + self.dirs_created = set() + + def record_as_written(self, path): + if self.record: + self.files_written.add(path) + + def newer(self, source, target): + """Tell if the target is newer than the source. + + Returns true if 'source' exists and is more recently modified than + 'target', or if 'source' exists and 'target' doesn't. + + Returns false if both exist and 'target' is the same age or younger + than 'source'. Raise PackagingFileError if 'source' does not exist. + + Note that this test is not very accurate: files created in the same + second will have the same "age". + """ + if not os.path.exists(source): + raise DistlibException("file '%r' does not exist" % + os.path.abspath(source)) + if not os.path.exists(target): + return True + + return os.stat(source).st_mtime > os.stat(target).st_mtime + + def copy_file(self, infile, outfile, check=True): + """Copy a file respecting dry-run and force flags. + """ + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying %s to %s', infile, outfile) + if not self.dry_run: + msg = None + if check: + if os.path.islink(outfile): + msg = '%s is a symlink' % outfile + elif os.path.exists(outfile) and not os.path.isfile(outfile): + msg = '%s is a non-regular file' % outfile + if msg: + raise ValueError(msg + ' which would be overwritten') + shutil.copyfile(infile, outfile) + self.record_as_written(outfile) + + def copy_stream(self, instream, outfile, encoding=None): + assert not os.path.isdir(outfile) + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying stream %s to %s', instream, outfile) + if not self.dry_run: + if encoding is None: + outstream = open(outfile, 'wb') + else: + outstream = codecs.open(outfile, 'w', encoding=encoding) + try: + shutil.copyfileobj(instream, outstream) + finally: + outstream.close() + self.record_as_written(outfile) + + def write_binary_file(self, path, data): + self.ensure_dir(os.path.dirname(path)) + if not self.dry_run: + if os.path.exists(path): + os.remove(path) + with open(path, 'wb') as f: + f.write(data) + self.record_as_written(path) + + def write_text_file(self, path, data, encoding): + self.write_binary_file(path, data.encode(encoding)) + + def set_mode(self, bits, mask, files): + if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): + # Set the executable bits (owner, group, and world) on + # all the files specified. + for f in files: + if self.dry_run: + logger.info("changing mode of %s", f) + else: + mode = (os.stat(f).st_mode | bits) & mask + logger.info("changing mode of %s to %o", f, mode) + os.chmod(f, mode) + + set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) + + def ensure_dir(self, path): + path = os.path.abspath(path) + if path not in self.ensured and not os.path.exists(path): + self.ensured.add(path) + d, f = os.path.split(path) + self.ensure_dir(d) + logger.info('Creating %s' % path) + if not self.dry_run: + os.mkdir(path) + if self.record: + self.dirs_created.add(path) + + def byte_compile(self, path, optimize=False, force=False, prefix=None, hashed_invalidation=False): + dpath = cache_from_source(path, not optimize) + logger.info('Byte-compiling %s to %s', path, dpath) + if not self.dry_run: + if force or self.newer(path, dpath): + if not prefix: + diagpath = None + else: + assert path.startswith(prefix) + diagpath = path[len(prefix):] + compile_kwargs = {} + if hashed_invalidation and hasattr(py_compile, 'PycInvalidationMode'): + compile_kwargs['invalidation_mode'] = py_compile.PycInvalidationMode.CHECKED_HASH + py_compile.compile(path, dpath, diagpath, True, **compile_kwargs) # raise error + self.record_as_written(dpath) + return dpath + + def ensure_removed(self, path): + if os.path.exists(path): + if os.path.isdir(path) and not os.path.islink(path): + logger.debug('Removing directory tree at %s', path) + if not self.dry_run: + shutil.rmtree(path) + if self.record: + if path in self.dirs_created: + self.dirs_created.remove(path) + else: + if os.path.islink(path): + s = 'link' + else: + s = 'file' + logger.debug('Removing %s %s', s, path) + if not self.dry_run: + os.remove(path) + if self.record: + if path in self.files_written: + self.files_written.remove(path) + + def is_writable(self, path): + result = False + while not result: + if os.path.exists(path): + result = os.access(path, os.W_OK) + break + parent = os.path.dirname(path) + if parent == path: + break + path = parent + return result + + def commit(self): + """ + Commit recorded changes, turn off recording, return + changes. + """ + assert self.record + result = self.files_written, self.dirs_created + self._init_record() + return result + + def rollback(self): + if not self.dry_run: + for f in list(self.files_written): + if os.path.exists(f): + os.remove(f) + # dirs should all be empty now, except perhaps for + # __pycache__ subdirs + # reverse so that subdirs appear before their parents + dirs = sorted(self.dirs_created, reverse=True) + for d in dirs: + flist = os.listdir(d) + if flist: + assert flist == ['__pycache__'] + sd = os.path.join(d, flist[0]) + os.rmdir(sd) + os.rmdir(d) # should fail if non-empty + self._init_record() + +def resolve(module_name, dotted_path): + if module_name in sys.modules: + mod = sys.modules[module_name] + else: + mod = __import__(module_name) + if dotted_path is None: + result = mod + else: + parts = dotted_path.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + +class ExportEntry(object): + def __init__(self, name, prefix, suffix, flags): + self.name = name + self.prefix = prefix + self.suffix = suffix + self.flags = flags + + @cached_property + def value(self): + return resolve(self.prefix, self.suffix) + + def __repr__(self): # pragma: no cover + return '' % (self.name, self.prefix, + self.suffix, self.flags) + + def __eq__(self, other): + if not isinstance(other, ExportEntry): + result = False + else: + result = (self.name == other.name and + self.prefix == other.prefix and + self.suffix == other.suffix and + self.flags == other.flags) + return result + + __hash__ = object.__hash__ + + +ENTRY_RE = re.compile(r'''(?P(\w|[-.+])+) + \s*=\s*(?P(\w+)([:\.]\w+)*) + \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? + ''', re.VERBOSE) + +def get_export_entry(specification): + m = ENTRY_RE.search(specification) + if not m: + result = None + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + else: + d = m.groupdict() + name = d['name'] + path = d['callable'] + colons = path.count(':') + if colons == 0: + prefix, suffix = path, None + else: + if colons != 1: + raise DistlibException("Invalid specification " + "'%s'" % specification) + prefix, suffix = path.split(':') + flags = d['flags'] + if flags is None: + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + flags = [] + else: + flags = [f.strip() for f in flags.split(',')] + result = ExportEntry(name, prefix, suffix, flags) + return result + + +def get_cache_base(suffix=None): + """ + Return the default base location for distlib caches. If the directory does + not exist, it is created. Use the suffix provided for the base directory, + and default to '.distlib' if it isn't provided. + + On Windows, if LOCALAPPDATA is defined in the environment, then it is + assumed to be a directory, and will be the parent directory of the result. + On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home + directory - using os.expanduser('~') - will be the parent directory of + the result. + + The result is just the directory '.distlib' in the parent directory as + determined above, or with the name specified with ``suffix``. + """ + if suffix is None: + suffix = '.distlib' + if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: + result = os.path.expandvars('$localappdata') + else: + # Assume posix, or old Windows + result = os.path.expanduser('~') + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if os.path.isdir(result): + usable = os.access(result, os.W_OK) + if not usable: + logger.warning('Directory exists but is not writable: %s', result) + else: + try: + os.makedirs(result) + usable = True + except OSError: + logger.warning('Unable to create %s', result, exc_info=True) + usable = False + if not usable: + result = tempfile.mkdtemp() + logger.warning('Default location unusable, using %s', result) + return os.path.join(result, suffix) + + +def path_to_cache_dir(path): + """ + Convert an absolute path to a directory name for use in a cache. + + The algorithm used is: + + #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. + #. Any occurrence of ``os.sep`` is replaced with ``'--'``. + #. ``'.cache'`` is appended. + """ + d, p = os.path.splitdrive(os.path.abspath(path)) + if d: + d = d.replace(':', '---') + p = p.replace(os.sep, '--') + return d + p + '.cache' + + +def ensure_slash(s): + if not s.endswith('/'): + return s + '/' + return s + + +def parse_credentials(netloc): + username = password = None + if '@' in netloc: + prefix, netloc = netloc.rsplit('@', 1) + if ':' not in prefix: + username = prefix + else: + username, password = prefix.split(':', 1) + if username: + username = unquote(username) + if password: + password = unquote(password) + return username, password, netloc + + +def get_process_umask(): + result = os.umask(0o22) + os.umask(result) + return result + +def is_string_sequence(seq): + result = True + i = None + for i, s in enumerate(seq): + if not isinstance(s, string_types): + result = False + break + assert i is not None + return result + +PROJECT_NAME_AND_VERSION = re.compile('([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' + '([a-z0-9_.+-]+)', re.I) +PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') + + +def split_filename(filename, project_name=None): + """ + Extract name, version, python version from a filename (no extension) + + Return name, version, pyver or None + """ + result = None + pyver = None + filename = unquote(filename).replace(' ', '-') + m = PYTHON_VERSION.search(filename) + if m: + pyver = m.group(1) + filename = filename[:m.start()] + if project_name and len(filename) > len(project_name) + 1: + m = re.match(re.escape(project_name) + r'\b', filename) + if m: + n = m.end() + result = filename[:n], filename[n + 1:], pyver + if result is None: + m = PROJECT_NAME_AND_VERSION.match(filename) + if m: + result = m.group(1), m.group(3), pyver + return result + +# Allow spaces in name because of legacy dists like "Twisted Core" +NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' + r'\(\s*(?P[^\s)]+)\)$') + +def parse_name_and_version(p): + """ + A utility method used to get name and version from a string. + + From e.g. a Provides-Dist value. + + :param p: A value in a form 'foo (1.0)' + :return: The name and version as a tuple. + """ + m = NAME_VERSION_RE.match(p) + if not m: + raise DistlibException('Ill-formed name/version string: \'%s\'' % p) + d = m.groupdict() + return d['name'].strip().lower(), d['ver'] + +def get_extras(requested, available): + result = set() + requested = set(requested or []) + available = set(available or []) + if '*' in requested: + requested.remove('*') + result |= available + for r in requested: + if r == '-': + result.add(r) + elif r.startswith('-'): + unwanted = r[1:] + if unwanted not in available: + logger.warning('undeclared extra: %s' % unwanted) + if unwanted in result: + result.remove(unwanted) + else: + if r not in available: + logger.warning('undeclared extra: %s' % r) + result.add(r) + return result +# +# Extended metadata functionality +# + +def _get_external_data(url): + result = {} + try: + # urlopen might fail if it runs into redirections, + # because of Python issue #13696. Fixed in locators + # using a custom redirect handler. + resp = urlopen(url) + headers = resp.info() + ct = headers.get('Content-Type') + if not ct.startswith('application/json'): + logger.debug('Unexpected response for JSON request: %s', ct) + else: + reader = codecs.getreader('utf-8')(resp) + #data = reader.read().decode('utf-8') + #result = json.loads(data) + result = json.load(reader) + except Exception as e: + logger.exception('Failed to get external data for %s: %s', url, e) + return result + +_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' + +def get_project_data(name): + url = '%s/%s/project.json' % (name[0].upper(), name) + url = urljoin(_external_data_base_url, url) + result = _get_external_data(url) + return result + +def get_package_data(name, version): + url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) + url = urljoin(_external_data_base_url, url) + return _get_external_data(url) + + +class Cache(object): + """ + A class implementing a cache for resources that need to live in the file system + e.g. shared libraries. This class was moved from resources to here because it + could be used by other modules, e.g. the wheel module. + """ + + def __init__(self, base): + """ + Initialise an instance. + + :param base: The base directory where the cache should be located. + """ + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if not os.path.isdir(base): # pragma: no cover + os.makedirs(base) + if (os.stat(base).st_mode & 0o77) != 0: + logger.warning('Directory \'%s\' is not private', base) + self.base = os.path.abspath(os.path.normpath(base)) + + def prefix_to_dir(self, prefix): + """ + Converts a resource prefix to a directory name in the cache. + """ + return path_to_cache_dir(prefix) + + def clear(self): + """ + Clear the cache. + """ + not_removed = [] + for fn in os.listdir(self.base): + fn = os.path.join(self.base, fn) + try: + if os.path.islink(fn) or os.path.isfile(fn): + os.remove(fn) + elif os.path.isdir(fn): + shutil.rmtree(fn) + except Exception: + not_removed.append(fn) + return not_removed + + +class EventMixin(object): + """ + A very simple publish/subscribe system. + """ + def __init__(self): + self._subscribers = {} + + def add(self, event, subscriber, append=True): + """ + Add a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be added (and called when the + event is published). + :param append: Whether to append or prepend the subscriber to an + existing subscriber list for the event. + """ + subs = self._subscribers + if event not in subs: + subs[event] = deque([subscriber]) + else: + sq = subs[event] + if append: + sq.append(subscriber) + else: + sq.appendleft(subscriber) + + def remove(self, event, subscriber): + """ + Remove a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be removed. + """ + subs = self._subscribers + if event not in subs: + raise ValueError('No subscribers: %r' % event) + subs[event].remove(subscriber) + + def get_subscribers(self, event): + """ + Return an iterator for the subscribers for an event. + :param event: The event to return subscribers for. + """ + return iter(self._subscribers.get(event, ())) + + def publish(self, event, *args, **kwargs): + """ + Publish a event and return a list of values returned by its + subscribers. + + :param event: The event to publish. + :param args: The positional arguments to pass to the event's + subscribers. + :param kwargs: The keyword arguments to pass to the event's + subscribers. + """ + result = [] + for subscriber in self.get_subscribers(event): + try: + value = subscriber(event, *args, **kwargs) + except Exception: + logger.exception('Exception during event publication') + value = None + result.append(value) + logger.debug('publish %s: args = %s, kwargs = %s, result = %s', + event, args, kwargs, result) + return result + +# +# Simple sequencing +# +class Sequencer(object): + def __init__(self): + self._preds = {} + self._succs = {} + self._nodes = set() # nodes with no preds/succs + + def add_node(self, node): + self._nodes.add(node) + + def remove_node(self, node, edges=False): + if node in self._nodes: + self._nodes.remove(node) + if edges: + for p in set(self._preds.get(node, ())): + self.remove(p, node) + for s in set(self._succs.get(node, ())): + self.remove(node, s) + # Remove empties + for k, v in list(self._preds.items()): + if not v: + del self._preds[k] + for k, v in list(self._succs.items()): + if not v: + del self._succs[k] + + def add(self, pred, succ): + assert pred != succ + self._preds.setdefault(succ, set()).add(pred) + self._succs.setdefault(pred, set()).add(succ) + + def remove(self, pred, succ): + assert pred != succ + try: + preds = self._preds[succ] + succs = self._succs[pred] + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of anything' % succ) + try: + preds.remove(pred) + succs.remove(succ) + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of %r' % (succ, pred)) + + def is_step(self, step): + return (step in self._preds or step in self._succs or + step in self._nodes) + + def get_steps(self, final): + if not self.is_step(final): + raise ValueError('Unknown: %r' % final) + result = [] + todo = [] + seen = set() + todo.append(final) + while todo: + step = todo.pop(0) + if step in seen: + # if a step was already seen, + # move it to the end (so it will appear earlier + # when reversed on return) ... but not for the + # final step, as that would be confusing for + # users + if step != final: + result.remove(step) + result.append(step) + else: + seen.add(step) + result.append(step) + preds = self._preds.get(step, ()) + todo.extend(preds) + return reversed(result) + + @property + def strong_connections(self): + #http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + index_counter = [0] + stack = [] + lowlinks = {} + index = {} + result = [] + + graph = self._succs + + def strongconnect(node): + # set the depth index for this node to the smallest unused index + index[node] = index_counter[0] + lowlinks[node] = index_counter[0] + index_counter[0] += 1 + stack.append(node) + + # Consider successors + try: + successors = graph[node] + except Exception: + successors = [] + for successor in successors: + if successor not in lowlinks: + # Successor has not yet been visited + strongconnect(successor) + lowlinks[node] = min(lowlinks[node],lowlinks[successor]) + elif successor in stack: + # the successor is in the stack and hence in the current + # strongly connected component (SCC) + lowlinks[node] = min(lowlinks[node],index[successor]) + + # If `node` is a root node, pop the stack and generate an SCC + if lowlinks[node] == index[node]: + connected_component = [] + + while True: + successor = stack.pop() + connected_component.append(successor) + if successor == node: break + component = tuple(connected_component) + # storing the result + result.append(component) + + for node in graph: + if node not in lowlinks: + strongconnect(node) + + return result + + @property + def dot(self): + result = ['digraph G {'] + for succ in self._preds: + preds = self._preds[succ] + for pred in preds: + result.append(' %s -> %s;' % (pred, succ)) + for node in self._nodes: + result.append(' %s;' % node) + result.append('}') + return '\n'.join(result) + +# +# Unarchiving functionality for zip, tar, tgz, tbz, whl +# + +ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', + '.tgz', '.tbz', '.whl') + +def unarchive(archive_filename, dest_dir, format=None, check=True): + + def check_path(path): + if not isinstance(path, text_type): + path = path.decode('utf-8') + p = os.path.abspath(os.path.join(dest_dir, path)) + if not p.startswith(dest_dir) or p[plen] != os.sep: + raise ValueError('path outside destination: %r' % p) + + dest_dir = os.path.abspath(dest_dir) + plen = len(dest_dir) + archive = None + if format is None: + if archive_filename.endswith(('.zip', '.whl')): + format = 'zip' + elif archive_filename.endswith(('.tar.gz', '.tgz')): + format = 'tgz' + mode = 'r:gz' + elif archive_filename.endswith(('.tar.bz2', '.tbz')): + format = 'tbz' + mode = 'r:bz2' + elif archive_filename.endswith('.tar'): + format = 'tar' + mode = 'r' + else: # pragma: no cover + raise ValueError('Unknown format for %r' % archive_filename) + try: + if format == 'zip': + archive = ZipFile(archive_filename, 'r') + if check: + names = archive.namelist() + for name in names: + check_path(name) + else: + archive = tarfile.open(archive_filename, mode) + if check: + names = archive.getnames() + for name in names: + check_path(name) + if format != 'zip' and sys.version_info[0] < 3: + # See Python issue 17153. If the dest path contains Unicode, + # tarfile extraction fails on Python 2.x if a member path name + # contains non-ASCII characters - it leads to an implicit + # bytes -> unicode conversion using ASCII to decode. + for tarinfo in archive.getmembers(): + if not isinstance(tarinfo.name, text_type): + tarinfo.name = tarinfo.name.decode('utf-8') + archive.extractall(dest_dir) + + finally: + if archive: + archive.close() + + +def zip_dir(directory): + """zip a directory tree into a BytesIO object""" + result = io.BytesIO() + dlen = len(directory) + with ZipFile(result, "w") as zf: + for root, dirs, files in os.walk(directory): + for name in files: + full = os.path.join(root, name) + rel = root[dlen:] + dest = os.path.join(rel, name) + zf.write(full, dest) + return result + +# +# Simple progress bar +# + +UNITS = ('', 'K', 'M', 'G','T','P') + + +class Progress(object): + unknown = 'UNKNOWN' + + def __init__(self, minval=0, maxval=100): + assert maxval is None or maxval >= minval + self.min = self.cur = minval + self.max = maxval + self.started = None + self.elapsed = 0 + self.done = False + + def update(self, curval): + assert self.min <= curval + assert self.max is None or curval <= self.max + self.cur = curval + now = time.time() + if self.started is None: + self.started = now + else: + self.elapsed = now - self.started + + def increment(self, incr): + assert incr >= 0 + self.update(self.cur + incr) + + def start(self): + self.update(self.min) + return self + + def stop(self): + if self.max is not None: + self.update(self.max) + self.done = True + + @property + def maximum(self): + return self.unknown if self.max is None else self.max + + @property + def percentage(self): + if self.done: + result = '100 %' + elif self.max is None: + result = ' ?? %' + else: + v = 100.0 * (self.cur - self.min) / (self.max - self.min) + result = '%3d %%' % v + return result + + def format_duration(self, duration): + if (duration <= 0) and self.max is None or self.cur == self.min: + result = '??:??:??' + #elif duration < 1: + # result = '--:--:--' + else: + result = time.strftime('%H:%M:%S', time.gmtime(duration)) + return result + + @property + def ETA(self): + if self.done: + prefix = 'Done' + t = self.elapsed + #import pdb; pdb.set_trace() + else: + prefix = 'ETA ' + if self.max is None: + t = -1 + elif self.elapsed == 0 or (self.cur == self.min): + t = 0 + else: + #import pdb; pdb.set_trace() + t = float(self.max - self.min) + t /= self.cur - self.min + t = (t - 1) * self.elapsed + return '%s: %s' % (prefix, self.format_duration(t)) + + @property + def speed(self): + if self.elapsed == 0: + result = 0.0 + else: + result = (self.cur - self.min) / self.elapsed + for unit in UNITS: + if result < 1000: + break + result /= 1000.0 + return '%d %sB/s' % (result, unit) + +# +# Glob functionality +# + +RICH_GLOB = re.compile(r'\{([^}]*)\}') +_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') +_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') + + +def iglob(path_glob): + """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" + if _CHECK_RECURSIVE_GLOB.search(path_glob): + msg = """invalid glob %r: recursive glob "**" must be used alone""" + raise ValueError(msg % path_glob) + if _CHECK_MISMATCH_SET.search(path_glob): + msg = """invalid glob %r: mismatching set marker '{' or '}'""" + raise ValueError(msg % path_glob) + return _iglob(path_glob) + + +def _iglob(path_glob): + rich_path_glob = RICH_GLOB.split(path_glob, 1) + if len(rich_path_glob) > 1: + assert len(rich_path_glob) == 3, rich_path_glob + prefix, set, suffix = rich_path_glob + for item in set.split(','): + for path in _iglob(''.join((prefix, item, suffix))): + yield path + else: + if '**' not in path_glob: + for item in std_iglob(path_glob): + yield item + else: + prefix, radical = path_glob.split('**', 1) + if prefix == '': + prefix = '.' + if radical == '': + radical = '*' + else: + # we support both + radical = radical.lstrip('/') + radical = radical.lstrip('\\') + for path, dir, files in os.walk(prefix): + path = os.path.normpath(path) + for fn in _iglob(os.path.join(path, radical)): + yield fn + +if ssl: + from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, + CertificateError) + + +# +# HTTPSConnection which verifies certificates/matches domains +# + + class HTTPSConnection(httplib.HTTPSConnection): + ca_certs = None # set this to the path to the certs file (.pem) + check_domain = True # only used if ca_certs is not None + + # noinspection PyPropertyAccess + def connect(self): + sock = socket.create_connection((self.host, self.port), self.timeout) + if getattr(self, '_tunnel_host', False): + self.sock = sock + self._tunnel() + + if not hasattr(ssl, 'SSLContext'): + # For 2.x + if self.ca_certs: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, + cert_reqs=cert_reqs, + ssl_version=ssl.PROTOCOL_SSLv23, + ca_certs=self.ca_certs) + else: # pragma: no cover + context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) + if hasattr(ssl, 'OP_NO_SSLv2'): + context.options |= ssl.OP_NO_SSLv2 + if self.cert_file: + context.load_cert_chain(self.cert_file, self.key_file) + kwargs = {} + if self.ca_certs: + context.verify_mode = ssl.CERT_REQUIRED + context.load_verify_locations(cafile=self.ca_certs) + if getattr(ssl, 'HAS_SNI', False): + kwargs['server_hostname'] = self.host + self.sock = context.wrap_socket(sock, **kwargs) + if self.ca_certs and self.check_domain: + try: + match_hostname(self.sock.getpeercert(), self.host) + logger.debug('Host verified: %s', self.host) + except CertificateError: # pragma: no cover + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + raise + + class HTTPSHandler(BaseHTTPSHandler): + def __init__(self, ca_certs, check_domain=True): + BaseHTTPSHandler.__init__(self) + self.ca_certs = ca_certs + self.check_domain = check_domain + + def _conn_maker(self, *args, **kwargs): + """ + This is called to create a connection instance. Normally you'd + pass a connection class to do_open, but it doesn't actually check for + a class, and just expects a callable. As long as we behave just as a + constructor would have, we should be OK. If it ever changes so that + we *must* pass a class, we'll create an UnsafeHTTPSConnection class + which just sets check_domain to False in the class definition, and + choose which one to pass to do_open. + """ + result = HTTPSConnection(*args, **kwargs) + if self.ca_certs: + result.ca_certs = self.ca_certs + result.check_domain = self.check_domain + return result + + def https_open(self, req): + try: + return self.do_open(self._conn_maker, req) + except URLError as e: + if 'certificate verify failed' in str(e.reason): + raise CertificateError('Unable to verify server certificate ' + 'for %s' % req.host) + else: + raise + + # + # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- + # Middle proxy using HTTP listens on port 443, or an index mistakenly serves + # HTML containing a http://xyz link when it should be https://xyz), + # you can use the following handler class, which does not allow HTTP traffic. + # + # It works by inheriting from HTTPHandler - so build_opener won't add a + # handler for HTTP itself. + # + class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): + def http_open(self, req): + raise URLError('Unexpected HTTP request on what should be a secure ' + 'connection: %s' % req) + +# +# XML-RPC with timeouts +# + +_ver_info = sys.version_info[:2] + +if _ver_info == (2, 6): + class HTTP(httplib.HTTP): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + + if ssl: + class HTTPS(httplib.HTTPS): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + +class Transport(xmlrpclib.Transport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.Transport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, x509 = self.get_host_info(host) + if _ver_info == (2, 6): + result = HTTP(h, timeout=self.timeout) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPConnection(h) + result = self._connection[1] + return result + +if ssl: + class SafeTransport(xmlrpclib.SafeTransport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.SafeTransport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, kwargs = self.get_host_info(host) + if not kwargs: + kwargs = {} + kwargs['timeout'] = self.timeout + if _ver_info == (2, 6): + result = HTTPS(host, None, **kwargs) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPSConnection(h, None, + **kwargs) + result = self._connection[1] + return result + + +class ServerProxy(xmlrpclib.ServerProxy): + def __init__(self, uri, **kwargs): + self.timeout = timeout = kwargs.pop('timeout', None) + # The above classes only come into play if a timeout + # is specified + if timeout is not None: + # scheme = splittype(uri) # deprecated as of Python 3.8 + scheme = urlparse(uri)[0] + use_datetime = kwargs.get('use_datetime', 0) + if scheme == 'https': + tcls = SafeTransport + else: + tcls = Transport + kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) + self.transport = t + xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) + +# +# CSV functionality. This is provided because on 2.x, the csv module can't +# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. +# + +def _csv_open(fn, mode, **kwargs): + if sys.version_info[0] < 3: + mode += 'b' + else: + kwargs['newline'] = '' + # Python 3 determines encoding from locale. Force 'utf-8' + # file encoding to match other forced utf-8 encoding + kwargs['encoding'] = 'utf-8' + return open(fn, mode, **kwargs) + + +class CSVBase(object): + defaults = { + 'delimiter': str(','), # The strs are used because we need native + 'quotechar': str('"'), # str in the csv API (2.x won't take + 'lineterminator': str('\n') # Unicode) + } + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.stream.close() + + +class CSVReader(CSVBase): + def __init__(self, **kwargs): + if 'stream' in kwargs: + stream = kwargs['stream'] + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + self.stream = stream + else: + self.stream = _csv_open(kwargs['path'], 'r') + self.reader = csv.reader(self.stream, **self.defaults) + + def __iter__(self): + return self + + def next(self): + result = next(self.reader) + if sys.version_info[0] < 3: + for i, item in enumerate(result): + if not isinstance(item, text_type): + result[i] = item.decode('utf-8') + return result + + __next__ = next + +class CSVWriter(CSVBase): + def __init__(self, fn, **kwargs): + self.stream = _csv_open(fn, 'w') + self.writer = csv.writer(self.stream, **self.defaults) + + def writerow(self, row): + if sys.version_info[0] < 3: + r = [] + for item in row: + if isinstance(item, text_type): + item = item.encode('utf-8') + r.append(item) + row = r + self.writer.writerow(row) + +# +# Configurator functionality +# + +class Configurator(BaseConfigurator): + + value_converters = dict(BaseConfigurator.value_converters) + value_converters['inc'] = 'inc_convert' + + def __init__(self, config, base=None): + super(Configurator, self).__init__(config) + self.base = base or os.getcwd() + + def configure_custom(self, config): + def convert(o): + if isinstance(o, (list, tuple)): + result = type(o)([convert(i) for i in o]) + elif isinstance(o, dict): + if '()' in o: + result = self.configure_custom(o) + else: + result = {} + for k in o: + result[k] = convert(o[k]) + else: + result = self.convert(o) + return result + + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + args = config.pop('[]', ()) + if args: + args = tuple([convert(o) for o in args]) + items = [(k, convert(config[k])) for k in config if valid_ident(k)] + kwargs = dict(items) + result = c(*args, **kwargs) + if props: + for n, v in props.items(): + setattr(result, n, convert(v)) + return result + + def __getitem__(self, key): + result = self.config[key] + if isinstance(result, dict) and '()' in result: + self.config[key] = result = self.configure_custom(result) + return result + + def inc_convert(self, value): + """Default converter for the inc:// protocol.""" + if not os.path.isabs(value): + value = os.path.join(self.base, value) + with codecs.open(value, 'r', encoding='utf-8') as f: + result = json.load(f) + return result + + +class SubprocessMixin(object): + """ + Mixin for running subprocesses and capturing their output + """ + def __init__(self, verbose=False, progress=None): + self.verbose = verbose + self.progress = progress + + def reader(self, stream, context): + """ + Read lines from a subprocess' output stream and either pass to a progress + callable (if specified) or write progress information to sys.stderr. + """ + progress = self.progress + verbose = self.verbose + while True: + s = stream.readline() + if not s: + break + if progress is not None: + progress(s, context) + else: + if not verbose: + sys.stderr.write('.') + else: + sys.stderr.write(s.decode('utf-8')) + sys.stderr.flush() + stream.close() + + def run_command(self, cmd, **kwargs): + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, **kwargs) + t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) + t1.start() + t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) + t2.start() + p.wait() + t1.join() + t2.join() + if self.progress is not None: + self.progress('done.', 'main') + elif self.verbose: + sys.stderr.write('done.\n') + return p + + +def normalize_name(name): + """Normalize a python package name a la PEP 503""" + # https://www.python.org/dev/peps/pep-0503/#normalized-names + return re.sub('[-_.]+', '-', name).lower() + +# def _get_pypirc_command(): + # """ + # Get the distutils command for interacting with PyPI configurations. + # :return: the command. + # """ + # from distutils.core import Distribution + # from distutils.config import PyPIRCCommand + # d = Distribution() + # return PyPIRCCommand(d) + +class PyPIRCFile(object): + + DEFAULT_REPOSITORY = 'https://upload.pypi.org/legacy/' + DEFAULT_REALM = 'pypi' + + def __init__(self, fn=None, url=None): + if fn is None: + fn = os.path.join(os.path.expanduser('~'), '.pypirc') + self.filename = fn + self.url = url + + def read(self): + result = {} + + if os.path.exists(self.filename): + repository = self.url or self.DEFAULT_REPOSITORY + + config = configparser.RawConfigParser() + config.read(self.filename) + sections = config.sections() + if 'distutils' in sections: + # let's get the list of servers + index_servers = config.get('distutils', 'index-servers') + _servers = [server.strip() for server in + index_servers.split('\n') + if server.strip() != ''] + if _servers == []: + # nothing set, let's try to get the default pypi + if 'pypi' in sections: + _servers = ['pypi'] + else: + for server in _servers: + result = {'server': server} + result['username'] = config.get(server, 'username') + + # optional params + for key, default in (('repository', self.DEFAULT_REPOSITORY), + ('realm', self.DEFAULT_REALM), + ('password', None)): + if config.has_option(server, key): + result[key] = config.get(server, key) + else: + result[key] = default + + # work around people having "repository" for the "pypi" + # section of their config set to the HTTP (rather than + # HTTPS) URL + if (server == 'pypi' and + repository in (self.DEFAULT_REPOSITORY, 'pypi')): + result['repository'] = self.DEFAULT_REPOSITORY + elif (result['server'] != repository and + result['repository'] != repository): + result = {} + elif 'server-login' in sections: + # old format + server = 'server-login' + if config.has_option(server, 'repository'): + repository = config.get(server, 'repository') + else: + repository = self.DEFAULT_REPOSITORY + result = { + 'username': config.get(server, 'username'), + 'password': config.get(server, 'password'), + 'repository': repository, + 'server': server, + 'realm': self.DEFAULT_REALM + } + return result + + def update(self, username, password): + # import pdb; pdb.set_trace() + config = configparser.RawConfigParser() + fn = self.filename + config.read(fn) + if not config.has_section('pypi'): + config.add_section('pypi') + config.set('pypi', 'username', username) + config.set('pypi', 'password', password) + with open(fn, 'w') as f: + config.write(f) + +def _load_pypirc(index): + """ + Read the PyPI access configuration as supported by distutils. + """ + return PyPIRCFile(url=index.url).read() + +def _store_pypirc(index): + PyPIRCFile().update(index.username, index.password) + +# +# get_platform()/get_host_platform() copied from Python 3.10.a0 source, with some minor +# tweaks +# + +def get_host_platform(): + """Return a string that identifies the current platform. This is used mainly to + distinguish platform-specific build directories and platform-specific built + distributions. Typically includes the OS name and version and the + architecture (as supplied by 'os.uname()'), although the exact information + included depends on the OS; eg. on Linux, the kernel version isn't + particularly important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + + """ + if os.name == 'nt': + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): + return 'win-arm32' + if '(arm64)' in sys.version.lower(): + return 'win-arm64' + return sys.platform + + # Set for cross builds explicitly + if "_PYTHON_HOST_PLATFORM" in os.environ: + return os.environ["_PYTHON_HOST_PLATFORM"] + + if os.name != 'posix' or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + + (osname, host, release, version, machine) = os.uname() + + # Convert the OS name to lowercase, remove '/' characters, and translate + # spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_').replace('/', '-') + + if osname[:5] == 'linux': + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + + elif osname[:5] == 'sunos': + if release[0] >= '5': # SunOS 5 == Solaris 2 + osname = 'solaris' + release = '%d.%s' % (int(release[0]) - 3, release[2:]) + # We can't use 'platform.architecture()[0]' because a + # bootstrap problem. We use a dict to get an error + # if some suspicious happens. + bitness = {2147483647:'32bit', 9223372036854775807:'64bit'} + machine += '.%s' % bitness[sys.maxsize] + # fall through to standard osname-release-machine representation + elif osname[:3] == 'aix': + from _aix_support import aix_platform + return aix_platform() + elif osname[:6] == 'cygwin': + osname = 'cygwin' + rel_re = re.compile (r'[\d.]+', re.ASCII) + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == 'darwin': + import _osx_support, distutils.sysconfig + osname, release, machine = _osx_support.get_platform_osx( + distutils.sysconfig.get_config_vars(), + osname, release, machine) + + return '%s-%s-%s' % (osname, release, machine) + + +_TARGET_TO_PLAT = { + 'x86' : 'win32', + 'x64' : 'win-amd64', + 'arm' : 'win-arm32', +} + + +def get_platform(): + if os.name != 'nt': + return get_host_platform() + cross_compilation_target = os.environ.get('VSCMD_ARG_TGT_ARCH') + if cross_compilation_target not in _TARGET_TO_PLAT: + return get_host_platform() + return _TARGET_TO_PLAT[cross_compilation_target] diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/version.py b/venv/Lib/site-packages/pip/_vendor/distlib/version.py new file mode 100644 index 00000000..c7c8bb6f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/version.py @@ -0,0 +1,739 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2017 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Implementation of a flexible versioning scheme providing support for PEP-440, +setuptools-compatible and semantic versioning. +""" + +import logging +import re + +from .compat import string_types +from .util import parse_requirement + +__all__ = ['NormalizedVersion', 'NormalizedMatcher', + 'LegacyVersion', 'LegacyMatcher', + 'SemanticVersion', 'SemanticMatcher', + 'UnsupportedVersionError', 'get_scheme'] + +logger = logging.getLogger(__name__) + + +class UnsupportedVersionError(ValueError): + """This is an unsupported version.""" + pass + + +class Version(object): + def __init__(self, s): + self._string = s = s.strip() + self._parts = parts = self.parse(s) + assert isinstance(parts, tuple) + assert len(parts) > 0 + + def parse(self, s): + raise NotImplementedError('please implement in a subclass') + + def _check_compatible(self, other): + if type(self) != type(other): + raise TypeError('cannot compare %r and %r' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + def __lt__(self, other): + self._check_compatible(other) + return self._parts < other._parts + + def __gt__(self, other): + return not (self.__lt__(other) or self.__eq__(other)) + + def __le__(self, other): + return self.__lt__(other) or self.__eq__(other) + + def __ge__(self, other): + return self.__gt__(other) or self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self._parts) + + def __repr__(self): + return "%s('%s')" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + @property + def is_prerelease(self): + raise NotImplementedError('Please implement in subclasses.') + + +class Matcher(object): + version_class = None + + # value is either a callable or the name of a method + _operators = { + '<': lambda v, c, p: v < c, + '>': lambda v, c, p: v > c, + '<=': lambda v, c, p: v == c or v < c, + '>=': lambda v, c, p: v == c or v > c, + '==': lambda v, c, p: v == c, + '===': lambda v, c, p: v == c, + # by default, compatible => >=. + '~=': lambda v, c, p: v == c or v > c, + '!=': lambda v, c, p: v != c, + } + + # this is a method only to support alternative implementations + # via overriding + def parse_requirement(self, s): + return parse_requirement(s) + + def __init__(self, s): + if self.version_class is None: + raise ValueError('Please specify a version class') + self._string = s = s.strip() + r = self.parse_requirement(s) + if not r: + raise ValueError('Not valid: %r' % s) + self.name = r.name + self.key = self.name.lower() # for case-insensitive comparisons + clist = [] + if r.constraints: + # import pdb; pdb.set_trace() + for op, s in r.constraints: + if s.endswith('.*'): + if op not in ('==', '!='): + raise ValueError('\'.*\' not allowed for ' + '%r constraints' % op) + # Could be a partial version (e.g. for '2.*') which + # won't parse as a version, so keep it as a string + vn, prefix = s[:-2], True + # Just to check that vn is a valid version + self.version_class(vn) + else: + # Should parse as a version, so we can create an + # instance for the comparison + vn, prefix = self.version_class(s), False + clist.append((op, vn, prefix)) + self._parts = tuple(clist) + + def match(self, version): + """ + Check if the provided version matches the constraints. + + :param version: The version to match against this instance. + :type version: String or :class:`Version` instance. + """ + if isinstance(version, string_types): + version = self.version_class(version) + for operator, constraint, prefix in self._parts: + f = self._operators.get(operator) + if isinstance(f, string_types): + f = getattr(self, f) + if not f: + msg = ('%r not implemented ' + 'for %s' % (operator, self.__class__.__name__)) + raise NotImplementedError(msg) + if not f(version, constraint, prefix): + return False + return True + + @property + def exact_version(self): + result = None + if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): + result = self._parts[0][1] + return result + + def _check_compatible(self, other): + if type(self) != type(other) or self.name != other.name: + raise TypeError('cannot compare %s and %s' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self.key == other.key and self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self.key) + hash(self._parts) + + def __repr__(self): + return "%s(%r)" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + +PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?' + r'(\.(post)(\d+))?(\.(dev)(\d+))?' + r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$') + + +def _pep_440_key(s): + s = s.strip() + m = PEP440_VERSION_RE.match(s) + if not m: + raise UnsupportedVersionError('Not a valid version: %s' % s) + groups = m.groups() + nums = tuple(int(v) for v in groups[1].split('.')) + while len(nums) > 1 and nums[-1] == 0: + nums = nums[:-1] + + if not groups[0]: + epoch = 0 + else: + epoch = int(groups[0][:-1]) + pre = groups[4:6] + post = groups[7:9] + dev = groups[10:12] + local = groups[13] + if pre == (None, None): + pre = () + else: + pre = pre[0], int(pre[1]) + if post == (None, None): + post = () + else: + post = post[0], int(post[1]) + if dev == (None, None): + dev = () + else: + dev = dev[0], int(dev[1]) + if local is None: + local = () + else: + parts = [] + for part in local.split('.'): + # to ensure that numeric compares as > lexicographic, avoid + # comparing them directly, but encode a tuple which ensures + # correct sorting + if part.isdigit(): + part = (1, int(part)) + else: + part = (0, part) + parts.append(part) + local = tuple(parts) + if not pre: + # either before pre-release, or final release and after + if not post and dev: + # before pre-release + pre = ('a', -1) # to sort before a0 + else: + pre = ('z',) # to sort after all pre-releases + # now look at the state of post and dev. + if not post: + post = ('_',) # sort before 'a' + if not dev: + dev = ('final',) + + #print('%s -> %s' % (s, m.groups())) + return epoch, nums, pre, post, dev, local + + +_normalized_key = _pep_440_key + + +class NormalizedVersion(Version): + """A rational version. + + Good: + 1.2 # equivalent to "1.2.0" + 1.2.0 + 1.2a1 + 1.2.3a2 + 1.2.3b1 + 1.2.3c1 + 1.2.3.4 + TODO: fill this out + + Bad: + 1 # minimum two numbers + 1.2a # release level must have a release serial + 1.2.3b + """ + def parse(self, s): + result = _normalized_key(s) + # _normalized_key loses trailing zeroes in the release + # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 + # However, PEP 440 prefix matching needs it: for example, + # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). + m = PEP440_VERSION_RE.match(s) # must succeed + groups = m.groups() + self._release_clause = tuple(int(v) for v in groups[1].split('.')) + return result + + PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) + + @property + def is_prerelease(self): + return any(t[0] in self.PREREL_TAGS for t in self._parts if t) + + +def _match_prefix(x, y): + x = str(x) + y = str(y) + if x == y: + return True + if not x.startswith(y): + return False + n = len(y) + return x[n] == '.' + + +class NormalizedMatcher(Matcher): + version_class = NormalizedVersion + + # value is either a callable or the name of a method + _operators = { + '~=': '_match_compatible', + '<': '_match_lt', + '>': '_match_gt', + '<=': '_match_le', + '>=': '_match_ge', + '==': '_match_eq', + '===': '_match_arbitrary', + '!=': '_match_ne', + } + + def _adjust_local(self, version, constraint, prefix): + if prefix: + strip_local = '+' not in constraint and version._parts[-1] + else: + # both constraint and version are + # NormalizedVersion instances. + # If constraint does not have a local component, + # ensure the version doesn't, either. + strip_local = not constraint._parts[-1] and version._parts[-1] + if strip_local: + s = version._string.split('+', 1)[0] + version = self.version_class(s) + return version, constraint + + def _match_lt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version >= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_gt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version <= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_le(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version <= constraint + + def _match_ge(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version >= constraint + + def _match_eq(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version == constraint) + else: + result = _match_prefix(version, constraint) + return result + + def _match_arbitrary(self, version, constraint, prefix): + return str(version) == str(constraint) + + def _match_ne(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version != constraint) + else: + result = not _match_prefix(version, constraint) + return result + + def _match_compatible(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version == constraint: + return True + if version < constraint: + return False +# if not prefix: +# return True + release_clause = constraint._release_clause + if len(release_clause) > 1: + release_clause = release_clause[:-1] + pfx = '.'.join([str(i) for i in release_clause]) + return _match_prefix(version, pfx) + +_REPLACEMENTS = ( + (re.compile('[.+-]$'), ''), # remove trailing puncts + (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start + (re.compile('^[.-]'), ''), # remove leading puncts + (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses + (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha + (re.compile(r'\b(pre-alpha|prealpha)\b'), + 'pre.alpha'), # standardise + (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses +) + +_SUFFIX_REPLACEMENTS = ( + (re.compile('^[:~._+-]+'), ''), # remove leading puncts + (re.compile('[,*")([\\]]'), ''), # remove unwanted chars + (re.compile('[~:+_ -]'), '.'), # replace illegal chars + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\.$'), ''), # trailing '.' +) + +_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') + + +def _suggest_semantic_version(s): + """ + Try to suggest a semantic form for a version for which + _suggest_normalized_version couldn't come up with anything. + """ + result = s.strip().lower() + for pat, repl in _REPLACEMENTS: + result = pat.sub(repl, result) + if not result: + result = '0.0.0' + + # Now look for numeric prefix, and separate it out from + # the rest. + #import pdb; pdb.set_trace() + m = _NUMERIC_PREFIX.match(result) + if not m: + prefix = '0.0.0' + suffix = result + else: + prefix = m.groups()[0].split('.') + prefix = [int(i) for i in prefix] + while len(prefix) < 3: + prefix.append(0) + if len(prefix) == 3: + suffix = result[m.end():] + else: + suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] + prefix = prefix[:3] + prefix = '.'.join([str(i) for i in prefix]) + suffix = suffix.strip() + if suffix: + #import pdb; pdb.set_trace() + # massage the suffix. + for pat, repl in _SUFFIX_REPLACEMENTS: + suffix = pat.sub(repl, suffix) + + if not suffix: + result = prefix + else: + sep = '-' if 'dev' in suffix else '+' + result = prefix + sep + suffix + if not is_semver(result): + result = None + return result + + +def _suggest_normalized_version(s): + """Suggest a normalized version close to the given version string. + + If you have a version string that isn't rational (i.e. NormalizedVersion + doesn't like it) then you might be able to get an equivalent (or close) + rational version from this function. + + This does a number of simple normalizations to the given string, based + on observation of versions currently in use on PyPI. Given a dump of + those version during PyCon 2009, 4287 of them: + - 2312 (53.93%) match NormalizedVersion without change + with the automatic suggestion + - 3474 (81.04%) match when using this suggestion method + + @param s {str} An irrational version string. + @returns A rational version string, or None, if couldn't determine one. + """ + try: + _normalized_key(s) + return s # already rational + except UnsupportedVersionError: + pass + + rs = s.lower() + + # part of this could use maketrans + for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), + ('beta', 'b'), ('rc', 'c'), ('-final', ''), + ('-pre', 'c'), + ('-release', ''), ('.release', ''), ('-stable', ''), + ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), + ('final', '')): + rs = rs.replace(orig, repl) + + # if something ends with dev or pre, we add a 0 + rs = re.sub(r"pre$", r"pre0", rs) + rs = re.sub(r"dev$", r"dev0", rs) + + # if we have something like "b-2" or "a.2" at the end of the + # version, that is probably beta, alpha, etc + # let's remove the dash or dot + rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) + + # 1.0-dev-r371 -> 1.0.dev371 + # 0.1-dev-r79 -> 0.1.dev79 + rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) + + # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 + rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) + + # Clean: v0.3, v1.0 + if rs.startswith('v'): + rs = rs[1:] + + # Clean leading '0's on numbers. + #TODO: unintended side-effect on, e.g., "2003.05.09" + # PyPI stats: 77 (~2%) better + rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) + + # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers + # zero. + # PyPI stats: 245 (7.56%) better + rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) + + # the 'dev-rNNN' tag is a dev tag + rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) + + # clean the - when used as a pre delimiter + rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) + + # a terminal "dev" or "devel" can be changed into ".dev0" + rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) + + # a terminal "dev" can be changed into ".dev0" + rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) + + # a terminal "final" or "stable" can be removed + rs = re.sub(r"(final|stable)$", "", rs) + + # The 'r' and the '-' tags are post release tags + # 0.4a1.r10 -> 0.4a1.post10 + # 0.9.33-17222 -> 0.9.33.post17222 + # 0.9.33-r17222 -> 0.9.33.post17222 + rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) + + # Clean 'r' instead of 'dev' usage: + # 0.9.33+r17222 -> 0.9.33.dev17222 + # 1.0dev123 -> 1.0.dev123 + # 1.0.git123 -> 1.0.dev123 + # 1.0.bzr123 -> 1.0.dev123 + # 0.1a0dev.123 -> 0.1a0.dev123 + # PyPI stats: ~150 (~4%) better + rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) + + # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: + # 0.2.pre1 -> 0.2c1 + # 0.2-c1 -> 0.2c1 + # 1.0preview123 -> 1.0c123 + # PyPI stats: ~21 (0.62%) better + rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) + + # Tcl/Tk uses "px" for their post release markers + rs = re.sub(r"p(\d+)$", r".post\1", rs) + + try: + _normalized_key(rs) + except UnsupportedVersionError: + rs = None + return rs + +# +# Legacy version processing (distribute-compatible) +# + +_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) +_VERSION_REPLACE = { + 'pre': 'c', + 'preview': 'c', + '-': 'final-', + 'rc': 'c', + 'dev': '@', + '': None, + '.': None, +} + + +def _legacy_key(s): + def get_parts(s): + result = [] + for p in _VERSION_PART.split(s.lower()): + p = _VERSION_REPLACE.get(p, p) + if p: + if '0' <= p[:1] <= '9': + p = p.zfill(8) + else: + p = '*' + p + result.append(p) + result.append('*final') + return result + + result = [] + for p in get_parts(s): + if p.startswith('*'): + if p < '*final': + while result and result[-1] == '*final-': + result.pop() + while result and result[-1] == '00000000': + result.pop() + result.append(p) + return tuple(result) + + +class LegacyVersion(Version): + def parse(self, s): + return _legacy_key(s) + + @property + def is_prerelease(self): + result = False + for x in self._parts: + if (isinstance(x, string_types) and x.startswith('*') and + x < '*final'): + result = True + break + return result + + +class LegacyMatcher(Matcher): + version_class = LegacyVersion + + _operators = dict(Matcher._operators) + _operators['~='] = '_match_compatible' + + numeric_re = re.compile(r'^(\d+(\.\d+)*)') + + def _match_compatible(self, version, constraint, prefix): + if version < constraint: + return False + m = self.numeric_re.match(str(constraint)) + if not m: + logger.warning('Cannot compute compatible match for version %s ' + ' and constraint %s', version, constraint) + return True + s = m.groups()[0] + if '.' in s: + s = s.rsplit('.', 1)[0] + return _match_prefix(version, s) + +# +# Semantic versioning +# + +_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' + r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' + r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) + + +def is_semver(s): + return _SEMVER_RE.match(s) + + +def _semantic_key(s): + def make_tuple(s, absent): + if s is None: + result = (absent,) + else: + parts = s[1:].split('.') + # We can't compare ints and strings on Python 3, so fudge it + # by zero-filling numeric values so simulate a numeric comparison + result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) + return result + + m = is_semver(s) + if not m: + raise UnsupportedVersionError(s) + groups = m.groups() + major, minor, patch = [int(i) for i in groups[:3]] + # choose the '|' and '*' so that versions sort correctly + pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') + return (major, minor, patch), pre, build + + +class SemanticVersion(Version): + def parse(self, s): + return _semantic_key(s) + + @property + def is_prerelease(self): + return self._parts[1][0] != '|' + + +class SemanticMatcher(Matcher): + version_class = SemanticVersion + + +class VersionScheme(object): + def __init__(self, key, matcher, suggester=None): + self.key = key + self.matcher = matcher + self.suggester = suggester + + def is_valid_version(self, s): + try: + self.matcher.version_class(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_matcher(self, s): + try: + self.matcher(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_constraint_list(self, s): + """ + Used for processing some metadata fields + """ + # See issue #140. Be tolerant of a single trailing comma. + if s.endswith(','): + s = s[:-1] + return self.is_valid_matcher('dummy_name (%s)' % s) + + def suggest(self, s): + if self.suggester is None: + result = None + else: + result = self.suggester(s) + return result + +_SCHEMES = { + 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, + _suggest_normalized_version), + 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), + 'semantic': VersionScheme(_semantic_key, SemanticMatcher, + _suggest_semantic_version), +} + +_SCHEMES['default'] = _SCHEMES['normalized'] + + +def get_scheme(name): + if name not in _SCHEMES: + raise ValueError('unknown scheme name: %r' % name) + return _SCHEMES[name] diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe b/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe new file mode 100644 index 0000000000000000000000000000000000000000..e6439e9e45897365d5ac6a85a46864c158a225fd GIT binary patch literal 90112 zcmeFae|%KMxj%k3yGb@-lU*Qz@H;}VXi%d8Bwd0F$%d!|7bCl@7|>ft*VQV9a{w!W z#FNz=j;pp;@2&UNd!cBnt-YnU@=FCa1hYX=15!*2YP6}&dQuHS!y+-~^M2;+CPBUZ z+&{kG*Y}?iYfOqqi48e+B? zv1Qlc?Z96LeY=csiXfy4CW;t*3p?=*;{Dr;CLu*|HF7}8N16G1@I{e=?VKRYqkzjK zJm;anH~wui2}K#G#xX&d_>H9DpKHJPMjv$u!ktFdhJy`;uNK#A6!G=vSMZ>EQCq3g zhyBY3imU5Z-zDA!keNsTPT^|&MesN5p9@7_ZGZ{goWdxWaDF}v2tmL_uC7~G_XC7^ zThV6WR(uTLZ`eN<;j3G7@BIJ-H=*$fd>*`q{c{Pz!eO8PfAIeS3M^B5yn%V2xdc6T zafeG#d$)_z7YLza^9LSP$Zm8?NQ@6a*; z=>TMLWMxh3w-Ij~j`)sYh>e7AAYS_q5I6Q%tb(xJA}kP!Usv4ya=lfMW`*4jk1pB5 zq5ku_9?&7x0>t4S7MmalMy!Xe(RE!uoEJ3dxdOGfs=xRxR)evBglY`L$nifTzIZ9( z{zV)yVm<5+1K)wzl0>XlS$)NNxT4=5S~%oEVZB4v_M(bqqyVFXuVmfj{`DJKmh|dV8O@> znyT5BTtTQ-dszu5TfQ?Yj#YaLTg~oxF!dRKxctS5Ua3is=&m@0ULi*uRhGEk8(&@lk7jpTp_YJ|S{I&|Jd# zPOpch0e`JJV(&ym$cGDR(FdtYO|NzvHGxR=U`lZ$D1fv2*-ZvQj%y8Ysc}>{Iw8Ul z?f;q>pdeg6Mc1-xRmVQUSnC`qrdK*!*L|*;6?ZQoX@yu<-M#)*D>=)_JvMLfY7C*` zK1GVNPr%rIKX_u2H?Vfn0)vIUNXFQ*f?<&&R%j3S0{OrmcAxWr8$7I?SL~e1`|w82 zS2@lB>Bg`-?m1WlNa6%7e;7)%X9%T~Lx4UnOF^T+lFl~igk~=8tDySUVzm2LsclAe zy=t$Xn}>?XmkYs^peZPL36)3By^V%bZ>UeQ>AB?u5Kog#7073>FAdRA+t+d#AZ8Fj zbMpaJ9B~=x-SNhr(`dXg_zo*g1)cc9K&bX&qi7 z-a`HH5wrzvBb=;-%ehbla;`eC7Ew#tBGe`PP@a8HI;1)kFq&}x6;$A(D9H-dftPvJ z^Ed@;ax?`w2t1p>cPGH5Piy5H1ogZ)&b}v&5}r*aph79NC27*9iG-$P0oLM3t&)aR zAG-#8R(-xR(1VgD=s{t5L`BSUyPelUxejdNwVJ(|!3QM~uU39&@>DS|i2!o4nIl-h(c4ftYSZOZ^^YNlISB|_ zNz-^k-%3V~Krsfi^r`B$DMgrOR<20Qfko-bVMvoJI#$oMp!aL#xl=_;FkedzPL(4T z|56W|3-&YmFd8}$*Y#OoGp!)JHbomrby)db#VNZ8(h$lAXcqHAdB`o|1(eeFRMD#J zIt>^tD;lDA5Ro!VQJ@v*Zm^F+znh78UYUM4Hr%HuE$BOWx{NPj%%fjM`NXLnd>5EfaK`D^2 zoI}HwRh|TjaHty$4NS{{DZHOP)M(g~Qmb0!NJ?$!i1hcuL&xH3ugYs3u0)E1ryNI0 z%dxl;>L8Zj-1F^JwO!@h$}#5ge5VYI=5}+Kat2ev;!*DgaPmf1V7Gi1rX5BpX+apo4t?f|bnY(Bg6S6%;DP zZAH#3_BFtx0yI5AI|Ajfw!|srGsYtcU2q`m?)3zyGHldkyw|ktn7}^y1gn{G1re~Dv$@qtW=8FH3+F~T0x)z`G6C; zI2*lcu)t9; zf}VRXh93~+242G_*n^fO_)ewCrXvAL^=wC}P!z3+=_zPsXQook5wP=ss(ab4>8MDr zm#xR!%NU60Wh;2NfWd1X6Kc##N3Ir1FP}y zt8r)BI=h+dwfeT~yAhmEwc|h1gFLCE0?cnSopsOC${D2Ry`XMU&7~ zR`yqPykB0^Pr6r0s>6;cs;LuQw!?Q5*&rnR&^BT7lv-!<@2 zR1!r=&1osM#N8=o6P}t5#ofuVsx=+jZ=&w*CeWakG7%O`w8A}>*P+*Gj-HJ~{upcKrInT2PXVUnvvP0-)e?Uhy z*zdpsM|mo(WyPzIjN)bs<4HdgIh#v)UN#wAN(wmX*BAWuZi@5)N4eg8)5_;z+fx#O<&*9R+P58AGR}@oXw;oDhny zkHhc)#kRzLLjd)*kS>0RMN&?}-@XCUN4|Ye zFQ)xo(ijmvf}+!SbOcJ5UgZ$WYoUbRQ0wd!TeZ0)FYSBG9`?#?K|ogHJKe*6jcD z2p6ei*<3U)(b7|pxV)v>57a6f1kT5WXV9YTZ?vcbE$XoEF@38=Exbjj*Kw*>huF&N zb*QjK8%^v?GMYF==KSeMa#A&E;1|0#-0$_trNo1Rl*d}Hz;Kz&vSvVbah?tHWdLM> zMQz1uG2-$JvFt`Ls2UIH(&a(h%97Lq;1IK_*|>agEV%1MOa!;0X_z%`<}Xq|wVY}e zr(wsgM_g2}fh5I|6*a9#hyBC4#a0atzE!=gz*>B2>m3EQ^M_#S0pD%SlnJ|OtLTYd#bjaRRjR9DE%I7=_CE&WT$%*wOrta8Gh%0oJ zmz@OT`Tb6}wJx3OP1+x!z^j7l%7KD-h1ynIGFhB}X;i*I+SMcC9{ z&BjuxI#>E3&dyY`5V+Z|wuRU9U`=CK_#T3ynH+jO;Ccs1iZrOOFwD`ACSBz|WTWBg z_YaQOL>3wW89Lt;mBdPD_uv&yigKT7T1@LD~e6SPr2La+cbgzeKEh z(b-uC^P{uA-~Q;Ui16uiXkiYclnn)5vDsppZ>o1rzlS_=*8vYJ6_m%g}YxX@Uoww=lv9WtBmdur-EH{cf8qz=H0Ag4s)Nw!Y_0= zN>|-EvDZkJ)!THDgd25_l|@kox{ZA}nrICTP>4N2P)lt2YP7HwB$gbpCL_k7^#pB! zwY|`n1nLi1<+@8Ghj>kilp|hQBIQX}aqM>)(Z0X1&K0KCRi@HO~!<8GyxL9-Cx*pzH>rkn!BHDt_dZ>R*fNv8N_)J9n=O} zRAR=xo2;kpdTb47==CwJ1Rc_g&Wo3;8^B#O=}q6>CP|Z#us53pRPMp0P&}*SE-KvNyfVOSgb(*2|Wi zi#<=DHE~sn7q*xWwOmX^N#TjlQkhsKs%Bnl5lVfKuM#l4Pa7PJK`G^{iy)1y=5{Tk zVQ!{m*4t`CQ(T%zWMYGC?OhKEK*md@6{!6WbTvN=?_< z-;~tkfCml%f1;>0Mp3cXh?MmXVt407aU!PWJofKHVDl4TPXR3I?pcVJA~8kkYQ*r= zZ&;s!wF?4Uw6w702GmcNCWhTzh7j=R%dC90o#Q+!dY!GC7V1^q8#7gRS96~3?$SmA z(o@Y!pgjAz?3+sI={!A|IB_sB6@pKL+FVl8U8|ID9?Rv{qTXd4S-@ zVTq{5EPB98`wp%Hl5OQfuM*pDGasF^m*V)mz7!V7e$+F<&f z#PrXg0+%rT+`$^LQrhwg0%6E)~ z2Z581g%>DKVl0#%#S&idsrTCr*4^Rc5) zP|<>)Lre^_nt{T}L6ys@P=?WnGXPfGI3f7Nn@UFe57m=}Sl3x$>`pN(pQ8B|>2osR zN+$rovMB#luJ>xM@uAMgviy#Ye#~K?18G90{RF`gQLVhM!X}Gzy=-JT^?aPYbQ9jp zQY^rra2lNkp~PkSJGwSXt(XY?aD<2b(-)vp?L;tJtxce{8t2|#>ZVh`D_3>H0M3`M zNx>}+l{}Upz{6Q6+9hUj6tF6Ois)7^dmf87gNNBX>Z4)2OUjUT0%*PLOM*&r?L;u7 zNlIncPB82!KgN35SdxCF0Rt9R!Q}zR8B}gQ$_TrE22){khYPw~$?SG;yfng#-Dhm5 zHX(9v)$OD#p)8jmrV<;?***{9#=R6n?n2UM`$k|kuPtfLLyUA<-Yeprz5dVN^gkZqU<-LfFSJ82GW-2?d@xyq6WC{e1EikYfST+$ zjJmN6OEBbeXvqC{RRYS&4igkByg3n(!TvxIK@;0b4F<S--O68AS@8P#6RC6YQr*Iinfz_pQG_?t*d6oeJJf~s zbToA%@df_dPKi5a;wze(k7tHOh(uEhcxqy2O9^!%%XTXa;Y#Q9eUUwwjpC7A2abyFJ$)}rhU zLcH}5=$L*n`fQh=}_!Q(f9kEutM|{ZD*uGYmJ@i{1@8VX|sJoZIV$a~w*P3Dv zJ&6F;O7dR@pxVf9ri_T9{jmnb%Jp$U5(n|-Yxl|QHt}|uWsB}g&;gaom06lSG!7Wg zw+a!A5ch~bYm3M%AUPY?^y>#nY@DM4wQG6o^o(Ww$(SjLJR=+5B)-w?d%3lu6FWvn zw3HE@gL~EX&}mZR>U*(cu?@I_`Kye6DVZ^Zt_I5DQ+ziO!pUUCfPk@y6sImH zmn!z~8=wZ49%0MQl00z*84XDXu6&WmE-eUGd@aWv8%BjIFgCv?JrOi)qSX!0rO(>w zW!FPi`u+S{we0M3L7A|5yzFrvU7`JiHg3AL9|Y$z1|`d{W^rj{`917?O9I=V2_>@{ zWA!2>tpsb=5*_g&3a>;>Jxw6WtOi@-% zly7k)CnyH#0%e75#!zfk>$^dgkweNa#LA9J&^94uj9F`#B^D-dADP_JtJxT8iTpfG zGD2`MHm4DQ0~1?&B?c~^dyMHM94g`l9h)(wD4{NVD&f=ge7cjK&z_*?t`2(cKZcP{PCvx&5NF6|kDo6R+PV%a-nDdjs}#Sstv zV^P!%jBm^_=ovUOTHd0GO&q;IzHn9DnQ-Ob_stQ|`gD|;A0KfDlM!&@oB zY?at^2sAid!fNcq5igY&IFx$}9AW$wcEK-(v&*$`$9&zRtbx~I9P%@v9l`GrcIDMO zC||2u)w^2BqM&~jnWX<(vowi6VU5b;Mq+iHwRkpd&imA~Hn$E@&P8VUAqSScFt;tS znBOV3&1Jv+5cOVS!X9!Fh^xXk3Sr9% zb@3xP;qphY)89+Wn>cora@6-26@@}gp~yzpmPM)?CV5(Dzui!;3u1waId6Csu1r+H z%d7BxHlA1EoYA^gGC1R(b_CRIEcwB@A9YDr$fet$ObB9rfZpscSSQJc$^L9tmqDMp zRnMh(`7rEHHpH-}P#;X*CChE%DDJV~Q{PqF*}oXkumO`u{6?*w`oJJevQ|y>jb>I_ z(ZDN_ll<@Wl4_g1=@tYMXy0TDkQ5t-n4{#zc3Xi1U7e#YF34MUt7qxbz_!vs9!R<; zmKRu8E7Pfw04-9NTLC?@c$~V{CJzjVPT-g&e>EUloL{cLIy`HA_>Mm~)Dft${E$VE zjs{HBiZUxpxkV86Ax%*$T9l^9wAHTf$y~6N^zEHf62F?d+HD z>u|*g?rt31V zuUh?#e42`n7xxwG`mq&!75bTaMs0!2Tm?mtryfDNu73jO4-hFR+#0BuPab%WKSoXn zu)Hi&?=7(2x)gqaIcyi`Ocgm~#ilMCIQtHIAQ0qvf45j@?KUZF`MZFSGMCQ@dXXH> z({qiIegh$KRm=Lpk`nx{% zY8Ohq9J0F2+BlG(3f1;Bhg?N=1~G#mC9_9=cPRZ6A~E^1VEE{>UMIBRLlnUmxE`8V zzk&&P765O8FY}w`q*b50xO#_m`SPW)e>j>jUm?pc=*F=>Y|llvfMR`1%XYbLIZXeEs|aU>2_=z4au9N>W=5| zwc`bPyhM+kcnoRwYSsyc{w(oWAO_Cd(`PeF*r^IoBQ|rDb)~aqT`DDWXCQqx z;V|YEa%*{#>gvZnG}n9Jg2FehM{K!S%vD>1DgMG1aVq}cOfMoVm9g{C1xQ8d#7vh1 zqeSdB45|ZE#qIRamgyVrP~T-WM56FotD2@QRk1B>7q5eYD_&L!HSXWw)|F7>N)god z9iTdGr-wG?05xz?0Fx{U-Y>B%|N)MXZOW>dq zcQ-BN%P@NU#S!S=@?pj9f}uvMaF-$#G24H>|GK zmv#BIaUiA&uO6)b;SwXT6VMg>tvv10YQZNbS*JAB-JvX6jmvob4v?d07yVECqC_(v=5mVvGAw(ow|Iu>mlFmu*2oyc}!L!TSCT z7)k*dJBf_{irsnC8LpvCakN9NfTJmm1C0Y#%rw5WU+)-S^Ng<+J}DD5Y+qLLQ+Akn8QQ@TT5SHwS2s9!)rbCV=YpMxA<0gw*vDaFXUe zqnDnhjEJKlu5P{;d8hf>v7C(H@EB6XkI8Ah}gBOIk)!ABShZ{scTZ~$A7tk@`G6!Pk^Vm6wSn-+` zJ;f8AwKp-rl0zm0qgu+z_a2=;uz2EZiMPgbaT1T}-8=<$!Ba2814GXta1Xo~VEh2aq^ z>oe*;;fP3?tFk7{`X;iZpb`t_nOhp?a%=tw@+BvXtFZDHA8(|+4jiFD%ZI6Q*uELINKIrQ#h4PT zPTT9fe}=fsbjk5Cb=ZFbNiDCRLsVi?Z|ouQH_Uv(x1qdjAF7B02dDhXehXO0dC}f< zF94zL%)1dhDaWA%r5h226ai@qu_Is!jD*iYgT?_Og}rGGfC4j5gNQj;(H!iA^zgA4 zu)UtJ^z9{jSpak(GY59}>e?Nn#t@Sfb>KwOMNDnLJSEV73I}SuY;7{1XiHik^0C9^ zWp~d6c~Pr*>#y{(JMa;_$WQE@1iCn&OR9TlYk?i4$UHik3Hrl6gF*THT{b{2vP;l>A5b{m_&()Wsoi| zD2{BkEoy!&)e2m-B@-8kR#)jcw6l&?heK2V4oy&+r@7`L`>%4)Fd2c--buJ%!&ym2 zoDJ`g5eKAiA=3^>FXrOoW%?lEB*-p}2@u8Ebl^0WHWLuSh7eBtl3A8^MNR{4@ev60 zr(1T=f=F#KMn5N)g)I28tQ zajeX6%%@U>Q)=s8I?>y@cNBlpvEkOeBPk4t<5PS2LYxlfPV`|14cl|Y5qQX|Ey`w# zve~L^wzYiZ7|{~m?D)-ZezT910CX6D3*SCSEBLKBre=rh7U_KWkx9gQu*4zGint}x z`J^yv?3suGH*9F&a1n#b;L+Dx;G>Twb1zJq9*OY9k>)0T?$qUs)}7lL`W&EbA(FrO zO%bsu{OlKqu0NzH;gH4ae2Z|Wl?%C|5o-s^gvW`Yncg-$xRXIB)V%o9f?LJ zl;=U&1PbpjDD*arxZ+dQh(|2c2;X3`51FdjLC&}32>?uyLjVC-zzK6T`!^0$Ky-V| zO~v%Jn8fUc#c7iqTOUg$wA#qNmJ~6UqVg#Uh?*ZuBZ6t^%|GV>YU@GmR)dVuP&d&0 zCn{WgEQ3J@WJ5{q_hL{+0_$Vv4spiw4SFdkr7k|sw}DF`xPxG?a}+?syTo$xN# z=E(zJOQVK^bOS^?B@gsVqsR{CvJ53^hbb>SisJH}Yrj_823^y8@`o`i`L03-^|96H z4@mMpg?uoiY_*lWf{w&a*LG9}4THnQ-Uc+*-t-fyoV#0&6qWWOSodk8&b}rYE&{Sq zr;~K{rU1hBJyEQ!dibEXH+c~gb~6w3ZWMuT6EF9d%p4_TCT zwvuJc{s@hkhWgKe@?C_&(idB^o3M!n1`zDKD=<=y#9l;r7@B>fppR8`1I;~0im*Kr z{{55GN!a->+*)D6AiKi8d%k^l1pW{1uB{E5kZ3J;P69U5B4>R4XYfM722ulzDIMrI zIBUV2gyp;i80unb6m^T1kt3kM?uPmpOjF8iQ0l@;6A;~At6p2H6u~zU?i@EsXVkM? z$BeyLC(U+OJAx6Q9^aw*fKi9D|cU-4Q+zasqeKK$r}V0J*A5XUo5&-c{;PGujbQ zR|U}L>;Vj3I#^a_u{ZgsEAlbund2Hv804;PZ>m7#zGl=7qei`W_IY_4KlsaDMn*r> z#V&MWh&o7>PV2PBO^lL}YDJ*b7$-P@{}zCim4RxtltzaBUSGvpY)5{EY<;OTI!*S_ z`}n{JDTMcdF$BvjJ95xIm{51*@waWqM7+sn(k;hR>m9Y~;xY%^X53apyELd~NGT=)i=9MVt6bU%VEYRYV#1lvLS#*sBl;}?k0S!bSVBh1Sw<0$XE`{F7=Va__~UQvWJZX zfcnT$gbz00Q5f~G0gO!bk&eVyFTV8M5qz<~A_%W6^%0_f=|<|U2_-+HI#G2W1-IzC zDT%!XK%73_JlMBejJ_SIrla;FPzjhj{*{1AR`tURdy!=*x`CqQDDUd1mpwqAm-I26 zv2tPo0J4AI z1olfP;H(>?8TZZb3Akb{G`G!|fG4uID0=O^iCOp!oaLlhcpq|*Eo(*$-+Wa%n`|p` z+r3`q2dPNh4Eo~nF?aybmodsMbsG%9-Q?w-9CD4fH$4iHRg>dnxT=R;L@}z=qb|vT zNBEmkE*cuHJXkAV7`MSviydhAV`w*Xzxtqwd)7~;mF{Mm;vwVUWbYSes*h8D+IL$_ zT7Gz0|E=(|UuMPr5&JtvFSc_GK+!_3_H%3EbjakKj6-3@N*zlrx#xfKO}_juNpZoB zVAGNe*H5CXA>ZV2@J-HTI?@uR>0cON+CBW#1!&`pZ@@(_Lq5m}hh><-;j`?)G&tNL zc{Uu9zr*49H)x3Ajm#a6?cCwG`HuPe|KM+Y|4@BK8TI)G{>HyXgTP3G{>Il0X6C-` zY%0FL!{6BbAK<6`G|L(O#*5emY*v%Mv7dc`5d4ij+~1f3K4k#5mCx5<+#T{Zem#+A zI(wD!Gl+a0Rbb}i#8yUX0i*NAW|eB z2O(|jZ#?XB_DWf3E<5N439z7paJYwpIE+NflF#1MK-h71bUrRX!okobd4=&Caq850 zaq}b}h-G6xT+SCa*cQ>MwNIPANmYr6YO z>ie;KXwXTc(+kt-0OYC_$(Li41vdte34#3M0jD5wM1RooF(-#Q7;IfB4rFRO> zukZ%&qaAWPxtklbg9-gMG}Eu8qEbqlzCKT15C7NI>4@{NA7aX;D$%(udy@)OsK34G zVFch@`>?ds%f3&L)T$yZL5%Q#Sb)2IF2e`><-Fl}+%u4k#5ZW=CpxA3S0#wF)nzGo zc;3TOIyv#>LqFKe{n;TA;Vyrvo4W(um8~za*ms*2DA`&L+5F@#+{56=K+n`#$muuf z_9ypDRG0B{2El>lin~Wy)(wW3!0!A2jFK-fH{J<$1S{5KSp?2=p50`1&Tg8%K&YF- z<^V#;V-p7f*}?buNQ^B3wAzNI`RJsJ(KOlD;~2iY>%%{&NG1yL||A1Y*=DyJ#u{9@#?E9KcUz`V+B*)vtU`R%?1mP)l% z{PETsQyVU1;s7k2V!s!Mk{jv=gys>dJzNH}AX$xsw({)MOwps-w=T|}PQY#sd_%KU zwY!WQ1WGd~K&NL)(>dtn1d3yez?+i<1sE(Y1a^65PzYDCrD&E%P1k3o>AB}1(TGPk z0z|E1@M~=T5rR$}lzwzI#ig67&V|d0atQO7O zkbhCF>7~O$tx64?R?ay)?eZ}c3xB_ga<*MmM z+g;Si6fJeD36;k&Np~;EU_vA9p$@cyDAXfhR`b_N0Hv6x^u>G^Vr9V2eMY!SaPHab&GBf{y7&Qqc3U zU5F*ct7QP51(WG=7`Y@9M(2nHsliNsW|5eviE_IgxJZL@NebPNb_s6}0U~e?%yM8IBR<1G zg8C;JXgo2{IE-mA+tQat43wRsWz?zy$^sZV1tKl>(*c0-dm@6VD{)?CEc+Pqup#`| zX9y}qu^?dN_>b(N+bOW7M~K~l05&mbVuN4lwlAStT?8!msu+N{{yoj*5ZC`Qh>IlD zZjdT;YNORTiOcHoY-bo&9E48+cb*tQpy-r{sS zCPZAAP0JE!W^gnlOtn4LO!v|RNBguGltu9UNgThfWiX z*mc=#HepJf>-q2CnB{{GiEu2lkxv*-)ZUG)0r-N!$~&goB!?fE~+ADKm4;j!j)Ickz)CaF(tZ|Sm{Tj=G$>kav1b4x5mOgsAT0icOF_dM~f>+d=E97sVmWIHBO z{jhLdDyI^M=7*bkj&w+XYZG;n?=%YycTQ=L?<^LK`r(0{y@N#ODqlA18o(SM(7r)!M^2MX1I)R%F2vL z)UB9nw#t0W2bj~ASX^2LO$HVOt>3DXI1}~JG6^h7*J$cx@e9k?{hsjjwUAr z3OGaS<4Y1!m%Z%mTWK7_IObrBuzx(L{b^M=DTv7#!vi%Hj=A8ef|}B8PUXNxmIQRA z&BLxoEY{LuBb`35m6|ugvDc1)gd;h7H_19)i$<{oiIv z)5_%U;h2X_*gPAn8(h_>SJ^x;@&5~YQg&NYYzQIQ%jhuy>uH=d<1P486pkasKS&&vX2Fnm>2) zX9u2a=^i}B9H%@#$2TN!Axp<+!tU|wV=$!ek06DNn4#AYpzRG3OMlCR?$qZT5Z|%y z8LRAKNK$suHFnCb!~98?bt+GH;aTfEX>WQC@bDotUr_dMLtF{ZVSj8RqQeWjYUTLy z4R-sUL-ySbJ7X>^rR>C-D#vwCB*VVDsi*_-L2C=MtW-i>N`?JC@_=_D8dTM=uC{ zzK%wS9H!=?O+Uj+2^sA*=wML5pbSwU)`e9&%Eh4|u~KGcaaLiQSO5>l9DLYAyOEl) zi@;-h5R}6dw8VZh7&gWJ6X8Z4PqRksNy@=LV<7}<<*%-k3RUP5mSpEpMWBi*wS!13 z=bxp>*lmcxC430p6Unsic>_)o9XJd@NhJjQJT*&*U6sT;{Sv&CNO-e3UQU4+IqRz- z3J=Ff-?2|2=BeTF8zIT#0nsJL?-g;#d;<!t#6I-CYC-Ay8%sDI?qF%-XC$O>D zi}A;Lu~6sDUTuHkT1>6>rh|C$<6(4EjE;vb5FKEE+wliiS9|CqEN10H`BBbIgvsD) zl{1+^09SZ_KZ@Z86P5kF2;ztco>-_Uj{|*_cLD7X#6H01`4F|X2vxR+jv&%Nk{{cT z@KBnRo`_fXQ-_h%PCZCO0x$J(4EY92sVn-GXQ@zo(*?*1Oj0AZZ-Z@K2~ni{Jk>-{ zchLv779Jmo_H0dS!eS^LAwzs%gANyvK6O)KYByC>=)3_X`ziCLj@W4+mKg~BA?gpR zG(AoAX6g2(a}d8ordI%gyS-33Ty>nR->wd1Pcr^<2#X7wL+yBnLoeg$QTYq&5qt>x z&X<5R%+uj^K@|0{j!KlnPf^>IT{{t_rPnGv&44f(X^5WK9Moahn83{TeYMhp)lRWN zR$^!SK|u)`ias zDaY5?A3MO~e`tUF)2~7B_}$`ta{NBAK#t#U5B&mZ200p(T_g_0e@cu6P*U>_3I_Bd zdux%gO5F%^N`i!}c zKTyl!YIT3?kNA*AK`Q-F@)=x7NVJ=s?QqcGT&lJ=Uf6-S&DV#2UxP$1yLS|*$|bp9 z36WR_T^+;ej!OzM4P=y2H5-0?aw{-C32?QnUkN>hK%&$2T|dKz{lFo87csWM9v+>~ z9$}sX7RuSKR5-DmghTDKG+5-r6C3}6<_K^t;KM<{{d5Ko!GCaZ0@m-ZmG=`3eux{N zP7Q~s9E51N;VNllq6g5tMaFpb#m0e;6<(nzpFbfdaQm*z*4djLg5)5c|2b(IG%dW1 zj0V*A0F~%ngZhw+p!p_128*y@4IM>oRE|)NEXDWR)Z#ErLopwK5`2kV_7Hs!jcswF zf!Afw2S?Bkmi24c?j{e1+lFz(c$tgj^IWEtaL(AAmf(=q5m71avJf>Qyz3%Z-k4%^ zE)heKEomws#H(hWPUiOoN`rAT@9F+{1II7xk>WOJH1{1QH!vzKW5!y!Uc z*jACK9tMXYLlrK#M4bG_Zbn_fUQD)&H)uC9V*iU1LD*EBXpneiqCwvxnGf)n zl1$$J0*b}4Mtv6rSjJ0$c%H}kRjy{LTp@-w0#_T(jda^py4n$Y02C_W+9g!?{iHXf z+e0Qqeuuhi2;D)akNRJc(+5ufh3;_)p}Sqe9{i08;#5BVg818szh5D3*uFWociJ01 zG8dm}xR4^bUZg!5u>^Y(ICWJB&-2YQeK_{}7M%OAE%EkzB061-V#hWCZpX39U0-8M zLrdqICU5Gikdbx-a9OF^n!KbZv1@`IkJ(^Gzjlq6Z6fBvu;EuqO~KZX;6kxE*#AI5 z9(GkF;NVs~AwsG)Y$Cy&K-ZU8*?HSwx1x)b;lYA44CXh12InR&IsGi75PpJ~PCw5T zSE|?$!s%r%n(s?eH>v7_9@(eabh_wYh+G?EZ2Q1 zWVuhX_g<$RZWH?vZM{=q3gJzfT^w{z6T}5hV8znV7u@1Bo@F6ZV&${*Fw{9@*%JE% zs6kx1_H{hd5S@T{d=R1)5Wa&1?EG+jE{hJq1QCoqfn;n9ll$4nFJkbJ=a>T~v72x% zv+yKtlDqC3_m8&Y{!w^K!veA3(i>IVQf{VOQIF8=qwV7B_C2`GrUjP)USI8{Bkutd zrV$Uj8cGD;AeSaGCn`X@}>M$PJ<& z5k)wR?7>dN9D>1sx)K-v!E2c=up&#?#$0~+5-tqgoj5AMturNX2<)Td2z3w`eocdq ztU8;ne}dONF%zw#p9KN2_AM1ni@f}2Vf$riz8xE;bO#S`z|>cY10@)T$UV^Bvm?#EP|g}fHZ8-=aB6^{Ju zsnNv3Htmx^3m3LrwHweV5*nWE+^{)dk}~=lhy_j9k-{xr6Z>4{*h|D|`UpUSCY;II zLwRs>7CArvhQcs{Ek}=o5{Ydo=&sO!yeu85-?n`D+hF>_RiC2G$8yn7ZXx3bLLe?3 z0qa?a%kLq6&=B^11hmW-*de@!3}IBsOAKMV6JY;72*&0k_`flPRZ%mBTkPRB{6`D} za@o=B?8ZTi-(~oUAk{E@Jx^#1c}P0#}+v|_#A%arPg*H^CGxFNmH%yHlFc@*gx_JZ+KXf7hK~=4;yi-|nC)R}W z1uLvOhz%C_)y;Rvt4plVPi>7C2>+(P;WCfSt4klp(GDpiTCtjDJ8g3*(v0s$`o6Ce z;?ek~{?%5N{&Vs>MBhtF!^!W5>3e=DWL5&FKm^ry-1t@J&)bXQ6u9T^2JyYyxH z#wB>GQ4#ouuZC~`alf*8H8cS{qyoSV24Az8Vp@9Z>p4mV+T5Z{zbij^}mO8m4hWfQLO&8cLADSL1qH!@BG|h z(v>om{R$_}Aj#-fEkly!ktCz3VxA$#)?@TSj-{D+_RqKw`;i455Qj`EB@vAB-!w2( zYsFsXMurBGU&~2;;isi;05o9fivAnCkhJ5caCv}Hy9lNv^I38iZr6DgSk5mVTx;3pi1v-yy>ty@xR!;@{Ntr>;(Rw-=cVR%S zvTaS%-L_`@kkc|;K;vjSg_F>9E$NF57xTr`hKm`}e*%-GZ6W-rVCqIQ?M*RMgL+Q1 z%*&9{Dzvjpw7>9#4kXazj0)l!D5{`CHx-{MqicRD7BtMiL%cw>y_}pjrtrIdao7U; z_fsVcZh6k4TL{n$Gy-in7Q-Aq>PB98${h>Qpd->5Y6}=ZT*m8YMHOzImmw~~9p$C) z;qU->8hdG>(a5Z=X=t9&I2|fQvZY!UQxYKN3OyZ3%WM@fFJ>%cPj5>Rh+>q%5z9s- zTC#EldfhDN3%Y68^|HmMyuOl2so{p^t<9N~x_#=C(nSu#b=>g5P3cXWfRl-UeV>|UDra2#^~x4|pYm>D}^ zF8{!|7qYgbI59I8C1%DVsTaTaP zzjJd4&V8=f-CNx2JTIjmxCNLsN9e3%Q`@peLOI1Q>4;v1U(IsbP+Qo0JS{x8?6>!NF*DQFT^|>7l*f7J-k~G&0C^hk@`zU!1;5SOd45j7-uFG-2j_5u?g15Ow z54%r$ST7g?bCNyuK^pFC5gMRJxgFA|^KOUWN{1{cai10~4OMyrPPEBg=EBx}$Q*eE zj|Q=fJUsg#XbO_Qgu$7fVx4_6IuaidyFf0TsRQ2 z48OjZ6Liq!7uVzOO8ia2pF?IY>G_gn=eYdr(I&$K7~Cjmxd^0Cz=i;|1UPDNA&TP_ zAcmJD|B*Q#Kcwbt*-|XdfRrl0m>XM4hrqiu8O)D$8sA2m<(Z|MSvHuuvCEA zUYu1bfFj6xNW6mm5Unv*tDuVxJ3b`mtbK18r4|Ui;$(U>Kt9d2A3nti*#sFG-uTJzK}0w80l7R#0w5F z-S}{@b+A9kZ{h+2tcNaRZ=n{D<;rBX6CvZrl-ToBH6eDVA@J4G85qqpOnakz-GSen z47-m)w)H@~(Fno1tP9xILP+mLg(B11;dfPtE;EVK8`r=rq;KKbkqddho$-2g&bL*2 zV^ez|=~Z<->f~o5c+Id3jKRKw8g(W2@}=_sD-Qbkqcbl93(v+^8GX`k*(DJ}Dvlga8M@V+yh;7=jB7YzYF?az`+dKWj^uE8N^saXh@II>$?+)hLX)Ncqf(E{27wRXoIh$Y&0#19~H7 zXP;X~`7==dK^mg_1Q*z>-T`Bl`}DM^l$ue66NMRW2bgeL)Y&4ImlAV{S74=p*HnC^ z7+-kNmjxyYq~W5c$!+cdla>cvVK3bU$+;jCaVeSwPa!dQ?M*L%e~We0!v!0bJ@hO- zF(GlmFs%g`1($Jm0tFky2jBt|dXU2~{OIc=_aTUWT91pdE$a(${K+0#fhhX{_du~; zX>Xd0k4k%J5ngm7IZmJiQ(~j=g@reMxugD6fp<~5qpUC!SEYRU%Yxykd{-cxo0zeLzOD{77_t!f8=g3 zJ}PN{)Q3Q#^y$gc?M-B4Giu;4BBvcf4MMb*h^2G=r+YfAr$Xrf9@2Q!=kZ<|1L^;r z5FxmxKeh@DE2TzC6MVrGz%;)PO$S2fV^(Uv0I9Q54~V1=y? z{CG^{qx6Q4w`9K2Q2({iY?UtK(tHBtqVY6{+Q4gRu;yPPNj7syvT<(4pgT=OEB@GGk_E2RE*BZr=4K*^h z3>$v@;5z&3@30_&CAN|#^rJfymRPzEIxq2qb#RSajd(-KTM>eR&5zj)tCD)U>K~KI z2PO3raRrn+XZjX&G`W(y#5Z6}9sJ=7XfectI0|$}oca^Ln$eY<$8*6TI6((AW|}j@ zC;`{tp!|~hZgECQeHU(RF#3at+m)8+H}sgLfw%akYtUk2;^)8THT;J<*k#1Dhw~Cn zG~}g6DltB3MP#L4jKa@Sm};>G$f|Xwzy%J6I}fF3pCHn{C$q5SlKUlK*Mqre84004 zv+9Dtwz9=g&T262;ahCl zZGTV}7ue|9x=nw8I2&u+TUY)EE4z_MPJvYjXnV*dF>%EqNQJiGrl!>@O(8<#gBGd- zJb#wj)LU&OOYsBCdof0Z*6O9NIxvrGBN721u_-rOl`@NRk8Rmf&vJi_e+BF>dI#=s zg!~7Et-&$Of}p=IH6K}1#F0T$0NwAxO$M`QFXgZep}T$xjx_#(-afL0W8C4KqS~S! zGq*Vh)?1x%`@`E%3%UXso|6-ko|B_}UinkI{E6K;uyU1@8oOmKwx*+`#z;Bvkc6Kk z>@am#oPAy|c-r&03l_jvC{d1C>TnpwY;K23&+0JxwIF;alApx88=p^#cx=PpVf;-y zhJ|-J&Kfr_GHtC$0ovw8xD?ndM>+DNgUGRCGYHF}OgI^gUn!$1{BjWLNdrc1Gf@TM z;EB}c!BpT_go@0<-%R`!;BO-Sa`0!vp9Ozv`QzP6`4ioEGrSqzJ$U!v-HUfG-skW> zhj$$BINtqu_lGTH^%2ay=6I4CIyE|gKM{Y;gd5A_RYzK%q!tek8?8^oppKVN1msA< z;&(Xv!<$O_6MaxH)CXB#pMAa`<@P**QuOnG0;PYBAaEu77plGD=r;j!~hq&4{@1->m|b;Xp1ln?WvtwfilcHP+4)D-N7Pc4_<~hdwBkSv~J-z z$svHK*bwZdIXzxhZ?hdNsg_|oOLm}t@8Pl7t~sM?5VCLS348G4=mukj6&hZ(_N;mv zuWc}ukR7`!qR+cbzqw2`hRK*`2(I0^2$m$HnZXvxlvK=BYfI2{a-V$3;0O%svE^8E zESwRAO@8vq=MRFP>QH=%B)^kA>Yj{@{3xzI_E<(-8xk)31FfV#OuAbUnwXHZgtK z1G8Y=)M8NEio{RGX5-vz_1J6=T!)F68=b+e;SLOsFj%sPs<3s$B{EL4Ux$d`-cjOJ z&TnC8yN+1V1s7M*1*3s)m7@$-^w2IqZFR?4)8oof?Ta*Tq4{Ac*P`{g4$R`$c@1Oe zV`eAeODsScuVL_-7tWRQJ&aGCAMmj!?0MbkImU4sRDB(Ch>dT#cT+UGY=d3zW9;Pn z7~dftb07T^Dp5?+V=1+DivHfsyLj(rf_m=;ZPt`soZ-{oyJ@98%b@CgkrahY)u;OM zYi7A;)j>2TCRUz!qGBg5O?Cu2f8>fGk!fKd(-n_(RCRRz5b~q{3x17^NBA&r*=UU2 z>v~5OSH}3F4bRV)@%|rd1Vu!6G|n$O2@m-soWG$m1J+1V>r_igWj5?|VtC=sylYE- z_FRNBkY0|~>-aXtlwC?IZ?1o68rH##C159)#MC(k-tA;gs)fCdNk`{|K+Jfgq(&ZI z6oh`5^Nsk3KwLJ2)6i#1_Dd(;j2s!cbD@W|JT4G3Ap@rbJDQ<<@D6eB^0;7UIF}`P zAh;Wr936q^)o}&c`*oBC+!x>oh7{s{iE0eyxb86y*5<2$XE8M3tARsZuLicks&@TX z1E*D>#=!Wk_SHblG;*fm^uQ^n?HjSR7z6J>q{$8(QsdF7<4D^X&cn6I$+`zfrl0&k zEt=}r)2YdgGW6lDbH-UX+}VgQyi5O%^*ZA1-2m#o(;=$ukOo}3jYK6a!9;CQqa`M0_7Ke9o za#bT-AE8bRpGyT}gXNW+as>sc+8VM1;k3J8K%abKh3y2pk%={7Z)@dcu5yNKX73rR z`K^~hava?-?a7#oc*!(XV6mtED~xjR&Uc+!T;ptX{M zfLbYNPbq*1@X$=rqNv5P8pD*i{oM2ZYOcT6dogml^8)svsF7qp!qAkwboeafttJ>{`za@sLiox)k+W6 zG^Kabjw`)~c0}o++CioF)AlL7y|!KH5!#DNkJ2_lFWGICbFA9K$|_b{qx6y5-<3W} zt5AB9R;Kjv+Crt@pgEL2S(~Nwn>Cx#Gqfp6pP@}qdXAQ;^n5K&>2__f(&uU6N?)M$ zgiaK;6r&_*LA2dcN@HtfTuNgTWn50<`P=AWC5@+)@h%!QWxR*RPnGe08sAmMwKVQk z#tk&Ss*I1(_>400$c*-gGH$1FwKDFeaiucuqp?gGQCRU#GmHx5gZ#=-4xGQ!(v|TD zjVa3b360k)<8d0T%6NjtaAnkJ?5>R8(io(S@6p&=8LMe*qKufV1pO$ma?3dyPbp&! zjhZqFRF~SP%E&wJw0D(}d$P2>Fe;S&`1O)8JtN*PQlGzKZ-NE%zi zs8AlouSUutiN;@14CR*bG*&C)4K#kGjFV|Rs*E?&cmPHWHO&Qnz1Z0&IvYj$s9Roe z#&jdROjHk3M`5gJhs}Mujc=rn)v#Hr+k{5?%rI=`D4RL`BExf(4K||9bD>!tZfA!)}XtP6$0Q^upYFT-FE79@mLAsH68(g<-}O>xAA*J*&Pz z=c;;{?^3@;*3$j#T4FU;Ysyf@QOP}AGBid4o8ETRX?c<*`5oGq7nN)POYsPe-SH;zO!!u|ktNelKP zHp1aAy{~n=@*FLwJ`(R&$i#qnj3&_l4U+K-Tu7H>495|_Z&2I4KWnKot zrNgUvR`M#$xPBhwtln|nXUFG_y!8oO-**!*nSAOS9?BeYc zihr45k1hTM$I6O-!LhRUVXqU!b2ycI=q)nGaaD|AiP5s2hm}vlNoPqw<%2G>rSeXg zmw83?cU)V1t4BXaAWrBTVZkCJY##hXg()9>bsrCtx3UO1rX-{?kv?$1ERMQyzAOsI z%ditcMB#KvN8(eM7*b6 zaS(1%Lur&mR-}4is7ywqJr@)xj{*U~i3sVTaDSk*gPH$>#mN5 zeF?WSDzl1pUg&k4J;%rv#8Gu~Ng2zxw^M1({2J}Cmf$@^DM1|)qikE$A+b+j;aVSuveQ;J{fa z3`RMXn^{WKfis5Dr5Oj#7*&M|k?elpY%6)n17}}@CF;N#L#YF2s@NyHA2=)C%5u;1 zW*9CT>A{2Bd9z4$-i&c_;DNe;bR<`@BEh+7{#HDO->UBFteG7Z1PVy$Bo2ys*6cL| z(lcSNYT&y9CqroTOhmPbj0=bVWy*v1*ga+MA;Qq5W$#1VtD1l0q^N8OKgehV@Gon_ z`1j&QCyPB$XULfyIR5UxZG<{xHUfvtT7i$WG!B@l(#r3K4wsqa8O3QOaCRLoQ`|F! zLrDS-mob2OxQrf5so>Eu9xi(eb`_3OIC}$wRF#wa$udf>ezGhAR6dV5q!XjYB=F6CVuVHAX<%`?-UOVwcj8sXysJDdpts|Rn~ZQV5~9ru48`k z#}Flfhwvh^s`}QVORo#1UiDQqjxWaXG9N4a{-pcWlPcM|0r7(8T&UBF8`&6+tbm2R ziJo0OtJ?8?3*#%K3I}GeAg8;bo+m%ZJG~VTQ8a`YJv&lHbN}Z?+xc0@Vx`Z7o*}9fNdDe^uZH)sS9#(b}ovL54%xkIY17PLEUoWs>XOE6^2IN6kK8XBD44XcYl#ts)2TB49V5DeR*j zvI=8B#G4DfL-2mz*@K<-Id^v!m=TQJSJ2eCW8z)75XC!qS5KDyGEr5jX1vFa4B07RZPLm>%BiXsP{zRdW3tgLAL*!>R;Ua)~v#n~YmRd7TJnfA`|G zNp+nF3R9CL?OTMISaslHTdsb?d?9wzrtw;&)-z^spTh}+;GVH5pOjC*0udgyJ&(gn zt7vNx+MHS(b~z7Mu0tunp&Lv)@cNm8c3PIhCM>Nga>1F>z2 z^ZQSsMFo?Cv?3&mYhrB*4Rw{0FVVpEdndf;3_qV-(O$m<$4h^$c-g3kV9)&re=c7W zj5wE848<>wA=+`forj|<)?UsY;ui61v<^B+TBF+NAIDsH<8iDEl2*PH^X=24|cx@g_?h9629@)1l*l#6iZZKTrFMJgG|AlWVdxff2O?5 ziqB3b0OphJqY#3U5x8w6lWJ;57wE{AwfJ6L-3Kors@N0U3#h|ME@vkY$Wts@N+_5K|P+LPvQzI{3d37Pi0SJUG3B zcfu)TJj*wezVZsDY|7%P3@?rgEFmF{Qhc>jLR7Ui-25tSz)O=0^fnh_Mub@(jaN}0hm z5JVJXDVAC#X#;Vg;%&ddhx5&_Ga*V4D#}K}6K+~8?6RyCZbV$eOe_8cmmunR>=Dha z!|_JN@Wtn4E9`xF-&w5(3Be_P6=mJv8+oWAX*e5Wn4I$Gp?HD$hvkv9+ZCcJ1YF?e zza$6juk7qX9XD$-L*0-b3Ad7mSs;MBjyXk^xZgzNWBgxe<@K4@J39U)z`vcxX69;k z^GTWIflfu1*B+0}j6(m-ED!M7vv?~l&Xcki|0rcyC^z*fOQ)SXWg|%0^~$GS)>Rp2 zJ~(Ju!B2xQH?nXyogypJ`FADkFI?fFq~7Ztl7@$ENz_Hjc?=a=!S=8-DJe51G{;D> zq8hi$kFBT}iD*N1sKH;7b4OB&aR(!p2%SebA9c4;id3$Gj6F#erQrkVUhXw^`oc!uF~VpSirwqa#% zMPEjVVR1w|wa^%>eT`M7y`nu>p`C=W#G+1A`8gFLA*!n2swtj2zDXN9gB=*0Pgu%k z{x^7cos@h|53AjyqCN9vRwF$P+--Opob;2EGa0Skpz9BctCxJV;ctU^*uq#I&0F1@m&E(|?u`y) zcdM!;KD;ZUTf+%fD5=63?OT$L6Z{^=K1id_o^ zATy@mkmSPZMWMKBdEOOHTx&e|H16PSVcfgi0xTSS8qcFN-vBHW8v8~>F05W~FcW!H zWhoi%eSThZCpPW+W|n)DH1e!!&I{`ipgR)6D+T7xoKzbnU-k2FBQ-ifKI5^~2Mwk9 zyc6~js4U^l%=Rk>P6@CFL|n^%pCvzgEb5GAZh z@M~;Jb`zP82b8$&q-;BUbK6WnqzY1CiMYuFdwz=<9*OyvW}-qeZVjls5oYZ@tZM0Z z;<_WlerY6}xsQb#lar7VqR#fHo0@;wAb6^JS&c}z_gd}SK<}HUnvr$2!i=p4+;?$5 zDi!}N*e#P-?JVC1q;Q8qbZ1eFhTZ)_17oKJW5h8sBr$Pfoy9DSnNqkNxY>3`H!Nyl z^Ix!E*t=(c!0j}+rxSX$bJy7n*za@hq3(64Y6Q%aVZ&=f;pb50p^p!JbLdF3{f^UT zPdTgM3kw@?2{`*NuR{ebBH?eYZ-IX#{LX1IIs^_^j}OM92r&7=8$=Ro?e3P?(s`5(CK7-6CFX`BAauhRhaDDff~X2gTg@{V(?<{GwR;h{v}bN(jIEQdv;C8oA!WsyKnqOuqg3s z1i7fXQo9#RQATUD4n~|}a(@m0Y~WZhP%DEQFx0YL-qpq{w+gbImTveN?((Bm7DKY$ zzwq$DnOI-kb^Er{8;{)Mna0Q1I;9~PcQx}WQFW)oi_?0Us``?XlyYVb>xos0f^~k5t?XirIeg0+&y+n`tGC1d}T2E?M@zVAn@s zzpw@`H*cv1#WSUA0vjSuI>Bdh&O{sHSV!|~|%q>@G0pc(-T zHAapj$KZsryZS;__+W%w<;AO3aiCehoOj_T*!*5`6E3<|bTdx-)%YMGC3~z@C3q(p zm%SkVr@30btAqjmh5J`Ma2_E<$8*Q|MquV~AFpaW6op5XrDOhx${r}>>W*6ZI>O~XZj=@ov84%F8AeYMV(i+3uTb{4kTW5vb#zH*P%rzwxr<7Qd}s`_-t*FHEpq)Wm9 zENEga)5xzq6r5CTABG&{s<(SrfqfWe;-n&EBG~)`O4Y<&nf@oYk44eJm6ixlgx!r_ z6z$L&+Xon1aWnmkJOI%F{IT#Sls{JfB=P5F{^VDb7bE(Sj)Pd^AK=`HYcTEpRbJQ^ z09TKS_<)hvSonp%y}fg1*vC7*@wEGvx2=fxPQdZv<6ibgOWQ_|bo?^uhF#7hXFo34 z6%c|4;m0`-V*@_iJfagEzwD@D7{ug#z2n@Cl@rKHT#*rlI%7SrLB`TOx^dMMvHpu( z-MCiTM+?pJ%j$j|aCGawU7@|~a@MB6SatNGmsU4I$Hl|`PO_GR8E{v(tr29SPqKCr zt7N>p!wPi3#b!ot8vQps_;dot;PI+$ z#Lzv$4b+Qp842#t-L@L`c;nR>ho?)_b0dM;lgf@S)IqB7&b1?uUb!7k-KGo7s;+Xr z6S5Ci1bg04)eINw?)SfUdqu49sNLwqMI_ zw{6vhGI037xhKTu944A~obx<;gz?mVS5@nCczECy$Ab=F`|hZLjj?lNhqo1PojA^> zShKy8w9`Am6TCo;L*ZEF_swpiy^eF26P>(U;mVNnN!q`#2&CS;b$Sn=NPmadYjFcD z&l#xr(NAGx#M_@v zGmZ8dn1xqlQng;nU>~iex$t0lq^=J6aw(P_f_9 z3QqSZCp}gBw(?M?x?BgyKNrGdQZ~xF{{|8VhWVHN1ihl)E7)AP zI*nbMiQL|*4(y@phlf@$0PqMqLki|*drrb`$r>#kr;aCj?Ml*SAW?%SH^PB#afVx} zc3qw!4gO_cAq{kt!uD5qk3a_xT`jL&XFs}nKhEgx8;k3uXQ*Bpt`JT{zKY|PHI!H;;ew>F$fN#Q0Ccc>S3}HZHTQv#``+XbWj(#6b zADvz{p>^qak89A|;Wh7g-^Z;d*aDT0ay2a;i(;8Z6gGFBDySzsa2sUNgl&d`rQs=WUvLtRc?-(2KofI!}c$0 ziZ%~zF^UwftUP~w&YLOP41Q~mf?V_ARd%J7ygY->jcE%MDdSG!(_4ZsVr@$hEGUKNcOVgqn|?FV$g?I6roTm3d-cOD_`nlFgg zuQ9NX_X-Ee z$++C+%E@3NYWaE4uo8jFsEsy%u1SxU3!_s2r~SKTu(!`tu0&~POApR3XjQs`rpgc=QS!ijQl&`Gw znjqbh2p>l??b|s-22)0&sU<|B^Qejn;2CKYGD}Hj5@H6LT{4C0c!*tjc<-x9KF6@em@+-C!BhHF#{7rDI z$KjKBJdgE_H#%i)+|w&+Trnr0q9`E2aT1S<*@H21!h;aaomZ8&slWrlMc(mP+QwEn zFMAW7)f+w{-f{MZoAB1+%P0yWO?WpacW{E=L^kh(wI)b z6OsXVz^-NFuXCEC`p0a7XL%qhu3PmFFZ6d+)n7EHm3FnAEWN2bRNGdFi1t*WVhChi z8!-`|YPP|@Y$Z^_>__XDFnz+C@aOc$jD;GHN}I4f;P=-86Mo6usO$Av^TPwWZe2g|WO z&xBb|yy8^D^`1muEcRSEQgvPJUvM7DJOsk_B}IE5tx)Z2a&5KS3dl({BZ^njUgWG* zOHwE<=7E9QS~{lq;12CK>3vJ&V>udj!nE z)h_Bux%-sa^`u-*6{;x|Jv=EFNMr4ja$Nbr)uVh;&eM2OF62$TDTn(@jW^|5eWMtN zy1Qz$@gy5N2xzJ<|4q3olexq=Ry+QAZ6%7kgpuwPOt}SCUBhL&8dUFoPCR7=t0^_w z>Pj=+fp}c58ShC|Y^!SQ+|`-9-f6pSy93 zh5Nd@G(EAbvArvHGk3yHWE?FX^mRd_L0``G^!(SLy)f;9Y0seJxXTc4${Y&YKj^r< z38$@Of#=zeoI575N3PZpy^^xMW*{%DGkSbuMU%xl3D#5kc9}A0$Li#HY|+;*J2W<% z14B+)ajL7?KK%MQn&8{}?B|$sN~pWfli(yfZ$yLjUv)VgcnqV1 zEr5N14*=DG^MHUeLIeW_0a5@3fKtGHfK7n60AB#k02-YY;wnHlKm;HOFct7U8s5(U z2LW3Eufpyi;5gu0z&SwEb3(KS^aaEMZUEQ;e*-)Mcn$CY;5?wk&qA~V^aTt9j0Q{w zWCQGg<$(JE&jQ{6d;mBBs0RE3XoN$!fq-s+et_YC@qkP~G2lMHCcqxRaX>Yo5%9JE zx&itFh5^O_G5~hKO27ty;AtJGyFk+-z*<0kH8IR8J{^Gr=*d>`&Z{_seyi2xrT7hO zjpDI(m=eMEmTO2om2?xRJ#h!JB%tg^WtzvEyR2OnXg zFJg{`X_WFiJg0DYfz2kMC)?~P={XK%9^qz=&dJG}M$ZMpA##OXWC2r~umB41M|>?R zuI7TfJCP@ddyGiNpSvI3H5r(V79$#Pf&3s;BCckmj|)Sps6j`65eh28&?jyR9$4Vt zjz1f4%7<aKiw@z zH&3NXeDd+f81)cYaLGl^SwIb`)Ulog+d}nCpEH4*j=LS{l6p!~A!5u?e)2>n>=+;A z%A_n^rEK!4r{WWNnFT*K;A|1yL~q#UAhzr9m5KOr@l9?JC)!X7$j@}Zg`CP&I8u5T zN|zV?w>D&~!YL6k5U*Y;cbVg6e)o0dcP?Te2W;?1ZcPWR7Nn4mu+tRPnMN8p&~<9b z3&yLv%z{r7dsAl3bo#i`X;`ipOWpit+$O(cfbV#GGhfJi-9_gxc}4ts{YT`YJ{_Sh zI!v5QzBNQaMm>J_McrbSFXnc-Diu0CEL{!7VNo(ixixXA&A+~4fGa)|kIT!yxk#(w z6fev}_w@SziS$^KSVsR$df~40@*$IY-p@f?1&GrD{^fvc7nU5eEY@;Nm&3lIpDVu0 z=T{mq&xM4|L%Md9S#rqyq9mHRSeu$zzWRuPuJjtp?>yux^GmNqS)TJ$?Z8^nhB}e8 zlugCJJfPC)=u=OQhz(<6J)qYutfwe5m#**oxXBOkyD*+v;4*7DQa(fRKV8*bdL1zH zcjNyv@=`aY48`wsg9|48wdIi9XRTmIead=t2K=+-nF?x5-s&|oIb-IL9#5!S{#?F1 zFjid#DHm+B*?Q|SoAK6`^UIGn9aKyQzs(p6UD%rW9*SND(_#CZiG0aZykV`uwlp8# zG_w|G>%^8$=L}m9y>{2bP`YY)LAhcdYUNQYSJOlUbdFh%e}ujl^n0LlGQ$eJCGC&k zl?>WLZ$*3PfzS_rXccXt7ej9cJplUE(AR!|yOp3PLC4l`5db|1`pEaKz!dSlXB8cw zSHEk89HS2neLnO}&~Jf$7j$+bmqW)0P~<>QRAqzhBg;&tqB#Y2q+72QVnhi3EGRLQ zY)Y`+yBY=4RB)QyW-91wD=GzA5dL9LB>2Xdrz>AZtD$>tD4D9cjA;-g)`*$Mv%3i1$ zZ!+BLelu<2#PryYXF6ErQE~H|@ey~%LtGi2r|SmInl*?c7{~@x4@)AHg@*Z1A~CUd zMn-QKppuaN(STUnG~2AHHkIL{^X9nBW2V{jXq{}!x0{yHj_HmX<72!-HznrfD%WI(p{Ls!Rv?^!e*u32egxcw zho_gfPou`ZO`10IYu>^?pyd^lpo4~g1u5N$LwLz8+9Xkbg?$Wi}b=^aH^z79; zv`^o#e&PKGL<}4h88vvwP;2zCnAo`CBSyw2Tt6yt^q8cv>3{Fy28tJWNV>;C?Ts_*~usIB!CAZpFJ z$-{$kP`r3aNom<_w=XSU=3HK};*OQ8{&weGfB(nb_uPBm>igF`@Zj2Y53S$u@FR~t z_V^P|Zv5v{Pj7nW+2@|$yyb-#UwZkKSGT^lZTpU$yLP|6XYaoKZ@l@|+wUAWc<9~3 z@4f%Qhetj-`tc{9es=8m=U;qz;;VmstyO+g_3d}xpRE4j$5W?&I&=2i&%gXy^Be9z z{;Lha#Vh*DY6$+f>HptO|1b0Z_Zs4hyQ_xyf17?ETxyStRg}60W^cp%4>xlK%p7M? zt#C8rN(YzyN;mT=H}l`z%y+t(`M{7F=VmuE&Qhtd9O4sx08Bs|^Wv#lxfywLlkMsD zEcBsZKcUc8FlK7DZJIqkH#4tbmU2kd!;DHVv`0^~XU(xC<>fo_RXqB)9*s!EOndrt z+pxTOshB5ERx{)E=fu0ASIdz@4#w$J-Eti{Il58cBt|1N+NjaI8i_`p0p4+OaXwVx zp%~lHvn3+whQ_{PKxk-c5{@cbEQ(y;n`hh%CB(e^c~HLaAsP!`UueGgY6 zUR;a>ylyMLZAo!!A0MPpR#t`#3k@w!DqafT-MU63r4}PR5=ly0ih!1G#Y>A3N+6jT zGiLbuHlCNCKQ}+WPW)UE7!Bb1K`{I}z{s$^y)tspiLT|#_^esBJcm8H0Xr~xxEi16 zBiGvTqdp^O!907q8WV6lrH|%@r`ywWEO7+|c?FiNT+66*NA9#4=-(G$q(wD6JuAnS zVX@~~^73uD7TY}AG>1KXY7RU26LM*wTP9?{lAdcx&xfZB_-BtFncU0GPk}8x!;)E$ zHw(U1aM7s)$D7fhb|muo2I$zQ$3&qL@}>eGm-tv_J8T8>vvQ|fG8IA>xEI>&b~k5H zXwLvS8IJs%tZ7OB&47p-ZeU=;j&QRT6g2Ecye2^Q%y~Lv~DrX?mV7uvxCK1cFVN944Wk{(~@tlJ@rC-^8i%6k%xsy zr8n}3G53Z&XOgJm=H;W{={ct73gVhID;@cRoFRw6mae^!k6mdhoMD@q4$GXZT-zW^ z=NvUgydaLbGqUWq!u<4UHcNV@-Bw`f+S^fB(0giDZf{%eoUUfTdh$>!D@+L?tYkAsdo|t{u99l~^jA%SaizUiLSDd)*wYlfnful3p;~!OShR zbhFJtO_7ypvCYc2&%f@{=}d)48I?#n*D=$P%P}&P@Q78Gn8LwI61sv&-E*Jni3&vAWzocQe=b zcUN4kzqM}W`uN6>UTh-o@}=GqDn zIwmi-FfYdzV=u^wL(__x_Nzp6VPV$vTqB0@d9?_Ln>-K`23^L8AytTDOq1lrpjT-o zDq4HOHZd>5kz*T<4*BTxSs+t9>@}7>ZMTtIZPe4f5*<1AtYP!*w()tXSsAvN8JL;> zyFsJNUo=)379@i2LJac8gi!dTl>$Mos8f+R4X0`S|iII3)<(yu&vF}dBlf=vtGiZ*E!BoQl z=Hr;SM4Fp|=fE;6LzO_xZ-|~=qhb=%^C5+h5Ky_@YaG&NK@=j7c~ zI0|PlnPHC1O!VZrUXJpgpI%^d6^#bQZCWWXS0Ms{gMz;0bE^kn%Hax5bk1?OjmF3|(L8P@kNzyg)Im#|5^v z7IY{4SN)d*m&*al(^UXdb~x8Tvp0ZyuY3T_0hmWu^Zl41SM&Y8hR*$5od4&3F1m4z z!gOQ23`^Y~z<4Rvv}*~t!T{QL0MI@hz;Bice#aQ!sOVLgafW@ep|b{M{1X98oBK-` zZWh1-K$WZZh@l&#@FyMgUko75iw%7Vbkb4+pnEBR@vH)HDd7R*dmVJ*w*kQP9tF_f z3jose4uI|-0_YwHrjS1b@`cJn*Ic^s>H0R^FJ^x+_dn|2jK|c?@c)}ShSN&fS6ap8 zz<(CkfQu?UUCTw)e-^L*sn{>RXsu&#@kP`BDGdMf>0DFn*zT1;2~W z>sD4n-+Y<=qYeLC;QzowCmw1izIsS|Xwt>wU$jnz7>fpZ?9rQ!T148>?4x}z^ndus zXUBgQqR%27GtRTdz}LoOc=r^r0k9TuKj0p~U4Z3)QosU0J|F`y8IS}R1sDm41y})5 zfCxZ8Kq#OGpc^0r4TI=BOfAQn@_Of}_Q(lHLX(eC!f)DJZ z6te^Q7nQ~5&bIDRu3wjg0R(gHfhD#aXgE!Br7FzMqkj;xqRYhh3Mco90o z9fZz!H0Wp+n32WIoIvOti{bgeVrWX~>3OIfBX|_B*svC+J>$Q*0ekwJ=O!Sgf7&m- zi2Xemv489$_Ag$$xKjJpOkFUTtcw~N$yu(A>=$2kLxLE*J zfQOL_FgB=q_39-?j2IzOQ&UA&R+ex$9HN*$i;MAJEbh7I9`Wd-kBXOGdP!{GzFmCy z;fLb<`SYx!lrQBOAJzQw6L-8->?i#9&YgQeeIAe}Yl{79=FVNPfF4fDw`vZ^x6Z8aS~ziJ$Ej@wF9^%LVd$l3f>TPQr2WD_qhwIeZNIuxySgPd%*V`!)In9eySq+ zf9pVI<^iOyzE%90nK`hBpCZOz19vL;QT`d8D(5V|YmokdJ?a~YF#cmqU#YW5AJ=mn z;G!_?h+oZtpO4||3_U3Pm((nKtLCjUjDz3j$4!ohhngJ3k8ht>_qV?8{$RSmcu*ZfBe2a5xNKUeeUf88#-=$OZlZc!hIVZCC?$a zngam-@2nsH*14Jk#oOr){>a}ZY&%z@oarC@t-Sx7RL+Y3j6&0$>0jL=azuAl@hjXI zIpbSusO{=g)C6rWI__0Gv{;BBH}Hbl1E56XB0Ama&pjODX$Xp7FN=i-zzfhA;139r zl=A?91@L=v-mhOjoIS$H_T*%7%PqGk+)No?xpJj=;)y53^Upu8Wc-5YZB=QIgqcO(|CF``hN1_) z!d*VUW-i?S)r1KXwq=g$_ayYRnF+JUNVz#pE-LT3ZPJ7^Q6$%I+dP5sy|jYy7fJcu z*|VF3lHyx&2Srej3}_rAg_i-K9jt2@Oh5Eb@Ynf79$6KiP!U~1b?)3*goK1(e`%-~ zJb18(j>a7f@$rgxW5})Y>)+|v_fb(*wKNc=r zDAqZKiYIRwES_5wDN3ftiRCk6#9evOVs(L4ys~(Z_-ApvxNq@P@xnd%V$U7di-YTD zif*q-(PO6+efCH(bhi}YZ%7gKjueyMmLldoDXu>%#n@v~6aprEA;qMxrI>bHimBg9 zv3T)fQC?myR;^kk?!NnOaqqqNiu>=sU#wlbRy_Rh!zzC_ZQ3L@Z{DoxvR7YyRUF>6 zNi6w6ip|why#D&@V*mdA;_bKJ7KaWU67RkDo;Z5+sQC2LPsPcvj)=oQO7Z#UpDVej ztgIBLPktl5{8@_X>S}TJ>{%r%WUFUyw5v&&(}d9YuEadxCI}A-dy8twsk}lAmVLw| zIabVDJBYejsw6FO>3|=Y3s7;uEMEL2|Xe(t)u?*qwNBE}@ zemlayi|{Ah!goPKr4its}aJ`v#&S9KP`&u=N@vOYqt87t(|vxVHT3UNLo%@{dxvVn<4v6;(FXmU4q_$F(r&^X zAqOD&)wnA|w!BfuKKVk9y-mp3_Y1k|Ss|a(dP=p_c@Y4`}4#F=*_8NSS7_L z&qz^qs5ZPW!jl76BK*||-vQyfAbbymAJS5a8~R8wd#n`8XCtmvQfzxhilc{W!`H1E z(sbo+851)sdRTOYGnHa0EfI(ir}!eY25B*w%g3`O*DG0{VZMW^+kht8clb}-!I6Rpt+(J`?x z2v5v<^#}wlaO|Gt5$7wcZFkcM+=aQcg3G}W$RY0t{xVLU~ z&GiOuqq-9Xgijk9oj5unAub`U9V2KP*rv@@etv%KM-fN5^RR3pQb}u9$3q&~K=+uq z#Q21S#JI$uIv(KOwY!RcSYm8KTw-kE@N3&$X(WLZ(yr^)a}?-j{4pvClWS>Ffk1&@ z;Gc@WPh=ukoEVposEANFn*0a;X|a8*L?IzDF|FP3;jLP=0ue6vwEm6Kti9uq#Avu* zJAAmJvc1ba#^1+3qD5$2LTn<$< z;$!*^i|Os{(R8%oKwibiqPjBN(+2hqXwt~Tqvc3oNE8zjhC+~P-J=JDhlVxr^1UJ+ zjxoa^%l-Pr#MHW{r45T76WOA%Pk*Eklg8NNV{6k-i=o_&iEQrK*h=@9p%B*uGdTE1 z{y@O2&04k?lNOUWG!nAra)!I9Mh3JTm>3N{#=AL_|FOyk><5I!M53s;JFEDSzX`Dr z#Q3=ILG_&7;zvfuM-QqS8s(#|N~{w(>Q}kF=$wD?(BtS_YzGwU@K^eCMTnz5$cFlI z#bRi^{@kVeDQ16e+_-V7KeEU+!qxY9blwoLG%HTrQxGGbUlJ!a-M2^#*oQs^>ba30 zN|A!T1N#i~p#S3^{}8KJuNG_8tP$(htrHtIY*2lL=bn2`^#@;m`DMYr!u#7F6|2$T z*o3~q?%lh^JMX-s`UWSyI3~XM;tO%�gPVRVBXt_FM7e4<}XM;HRH{62JZSn^<*L zif7PQIP|MqJ=?nj8oB{!=uj?KPD4XC9}V3dXy_ghE#>o~k9Z!as}f`w{+_tDX68KLzaj zZ$IV#WIu)Xv{1Ec*A9h9h_-5$vt3~4-o1Nwr@f_JyTEoGx(5ZcXmKt2!)-fu>)g3( z=iV&?{I6?{?{*zJb?pkjEdzpjhx85+?K^hw*87^Ky<5UVi{{O*ZQr4Dx8BW~cDvTF zuvofv@9pdB*9~E=yP`$&c7biW_ipCv+q8*~kKc9v{_VUQwd;OOGvB7P=p7JrWn+)V z9pSfk?`xX)F#f9oJzL?cS*NB=nuK5+(4q6yUhUzEAlKj<>4&s$-L+Fl@7^I@fj`pk z9ug8964D_=(bpb|D}fz4s83PkkNaL4!z2323Ot}Uq-byYp?`!EL26D=pnEQE26zYy ze*cp4L}>Kb)iw_F+Li7DohkoMsEbj5skDi2Gr*NWK|vj$6M_L-l@4x^4YqULIeD~dV zUqL^1`t<3O7?+;-EV}NBGCQX2X0%mo8m8 zK_{;`y?i+;aMGknL;FL)^VOI~yaVHCxoz7v`SsUdOSGpF^DdmAlE;o6lNf(Xx`PIZ zG5DvNrd5L0&)2k(kqU@%g}k1M;Jf zK2mrhe-!S_o8!li%a1?)SbdWw6VT^TX2{&>AAb1Z9OUj-#Hs!A%P;cBAAdac{`>F0 z^yQad9z$9`GYsgw6Xh)&IILjUKZ-y4Qxa*pfcTq0zM8;1F@gA#SJX{2zX>KC)QOJ? zz*(ArJeMYzcBcMk@ZYs-*K*`zN617eY1z4Rr=o%Kf%zuMJit7Yk{9C0GJ!Iz^uvb_ zO9IOV^Mg9e2g?q_y!qyviU#H(%D-ejV6L81xGsh7UtwQEca&i+@?UQGZF}a-8Hr{{ z$$vydL>J02fq8&=Gx^FZuSn#%M4wreVdeqz1oLVNi2J^M`y|WCkt0WxnKZBtpuDl1 zFpr4amhYvs9mNYF@8I>x{ZjVEn@S;g*rV5WDaXAbU0m`%D4NF9+M90W}_0shy2tkW;pG?-x0(NLb4w7App>#x7cLocn74=+fN_st$E|B+`^ zh~0=+O(uMa2XK!|nMfKwGRiY#Cdw?&tdmflStoTtIbeD233+0fK96;_253DND!RdR{&{H%hK|43-ZR4pB6afGK#7V4^`o z(lIGV0jH6m!Bw6~gHfJ)u}(sr+8K3H2hb4oqF%Qmn#J{KQ22N3*wI!0qm5@fe?fk* z{IWeT^MmDq-)1=>{;2ol_PaCWlk=nGBXbAKhd{#`&_I=r`g1a9xB+$i_%HCZ)3Ms} zOd8Dc%sQ#hUhsXFl-H34@ZW+r3&x!Tu1-oJogC3-f^OfqR~q zv`{DhtS2`wj+Rf|8Y!Ou4G)8cb#@*9!jn?ojK?b`Yk1fLG_X9gPD((XWR_>rV3udn zV3udrN!?yi_@AwhKg${07xc4SKpIS_Pls7n-07g1G*G=zG*CXfV32(3mPq;dJkT&_ zu>7g|8~GuMGigWz4OnB7scz+&brQ>SG|B?&qzKeWY@f|Ksp~epo1x=hzg}uf{L#N( z9v&Xv5q*?W(!qL>I%S4*u+KxCw9t-it=TW58{1p<8K_<^9w@gg8YrIu4gUlUkAa3) z@6D5^PeOPuLsf##S;&(Jw$Gr!>|=C&O%Gh3|Ew=e`5!cBP#5Nf2`sO~o465olNQ$f ztnWFlVZF(=iftR!YfB>JOQ2!%qCs-gf=Ia$G}JH8e@C6PYF4ydK698{niV5UrpL&l zj9BS(+$cZ$@Sr3O?tKhZo>3=JHH1IvdnNzCX9aO5Uet*b@n(4-pUpgB9q-;hW`Bq@ zQvP=>9U`}ah8ID@^9w-($^y$XX<&I~opdkiRnoAMG-MBxx6c3#nXz(FMx3I7c(RYd z_Sx)Xgrj|fxPte~NdxtZ(LtIhTMVlmdQR>v9U!-ZhF3s?D$k&Sb&^@0 z*P>3kzhJ1mJKrkr1Pv=d!!poN202=6i&coSPKtKxV?2j)4|PHPPy9{!kBp4$LL7)E zc7?cTV7|E1aVc7U`>jTPzT-am`tlgLtt3LeVw7jrNoIN8fI5jZtTt%)8{}xk%xGDj zrPDw}RUZTW?NNX=sISgT`DQ)Y=Vx2yIojV<*vF8No16Ovab3_tb~GpK|pvSe`44@?0<6CHp_bpLsuWN?#lKr~E!a`}c z+vW1*%T>9?l#i-+*cWPu7V@5L1M4dGh1ehEcz}xK`M@I%S@R3V8|&w&_SwCUaj#LH zSE4LXHH55bhq(%W^!3N%TjAfcXV3oF+LMc`jjPa)R{8MILl4O@W5!7AEs_-#6%uPo z@~*q?QuuIuPkxgIwgqe_C|3lIVMqh(Q_3ORLh@+0GgiL)DDgid-`FsxwvU0bz&-}c zGwY=L<|PvS-yMHp?ynq6p^GU$ko8p<_lIL2%tn-92{(y5=p@R7rE2 zybF7J)I12&Hp;TZ9!0+6DKV!dueGUI05`u3Ws z^3^gc+Go9w!S?ydg)#DlJEzN!-`pb4{Pfdd+r-gG6Y=?5(Pa6V!i#*?&TABpV*X=y-#1wVhr z{Q9HwKa2}ycP-{9kKKCft>=j+_KhlFnKo(Y-o3lT-ZhmEY%?hH?E9E>5MSa?nJ1kb z8&GF?U>RX~F!O{uWsrRnv+d#7o8xE5%O9HmWZ9zpLzdQIzu0>$r&tk}3l=O;`9K<2 zuVQXl-f+VW%AR>Z8cZM!=D3$*O7^iS_r#MrWr(zy@I~=?7dUvHzp=VTCG-z-6<*`=*}=E4b)A!GV{bNCoCVt-P9>Z z95Ya^*bijhne!XKpUZ82fXh*;{si62u>{Z&JS=5--nwmS;4j6nHeUwa$M0m}f(1mk5L4BXEnp3=a;Kr8b7AelT-UiArTP!146^@Y@|E};J9bRrgS?gKTX0vgDi6qS33*d8z&46}rhfvzNdxOq z@|5-ev(G*&pL*&k)doKO^wTOF=Loz z9#`<2<&8RVVZO6ofSjtn1lCDZ-HNiV+BeoUlyAx$@n<<;xn!PDPM8Or&!W4jXlA_3 zBjyL&bI|)R@MgWqb;8S43V%~hsk_TCX)uAfkuJ&*%fjuq-!4&SNw(AOiny7;Fsx@- z7g14uI3^+xchdFXgAa0!aV?JV{88LVqr%_p|AXJ9q`|BgO}f0QN4I_=p85O;HZ1Y@K%e*t%eKhrSBzi4|_P%ha9kq(wY@`?2a>pHea z?s-DqZrQR$-gn=9N}kDY6G%5@hh>NTCVo?97$4gL)R~XssMnw6J8`FKOMKkhMdEJ) zX)xhZdBQlbCtAfr8DkjIMtmt-+fa9s787^$PapY{@~&fD`>W=EP`=do7wvZ`X(9iq zn{-e&>7Y)YvVLJ%ATV!e$9!Pj$#Tj(V_n3x1g=4m7V;fw{F!>D7UQ}mg}*8P=qq#~ zp9q)A6ZY@f{~=vmmm^TNsPEacN7cLJ0n01po%pjHKprRgf0P5ZM{GOEV~#n=d*%cC0%kt&n{__xTGnG2Q>b+f(ERVlopdPqcbAR& za&CT`<e-} zz?9>@8dYF&p(egFG(FC#t=L&xbCqzCmEbu&IQemA^} z89lzY8~X9Tq8Ax>N?rFbbT311Z0P=m9%Sf44ZX~kwkA{6HfPL;O z0WLXZ+@GG4at_vdMt-2Lv2iY#YYKg_wlf)X!yo*pP`VTjq_sV6-yeXn-E5TUbF9zM z=lluvZ6(@*Z&5EDMgROE%#&rK4;%~seE=QN-#9rPYaCoB<6Ni}^S4~{=347}r=&c9 zSvj0XqWT{GFQ%?R9ljoEo@4#VI+Eih;y^IhFpNI`dDN??Q0E>-z4^pJn$@Y=;I@==F)$Gf%pF%g9sU~5q ziff)+YvURZ_b+gbit9UE_vacL)y0U1eGtb07=z|wypYZIm+czIxlEV+X!69MU-g~z z81-MSm)(fDTdwzUt?c<~ch?5ZT*Pvh2bDg@gX|*^hy#K3JApi5`}N&dN9Cg>DQaDU z^Wjuezr%XhH~PA1GH~F!FZV!jZl7zuraW@Jm+OpC(BH2slR<1#Fn&!(KR1PVn7Az-UcSMmrPxYous9?B!vsJPb2b;5}#BT)N{ zJPBeuj(L|{oWILv+e|QVV4s6LVc+_xMKNlvkLxp>N2Frf1g^bu{g`Wh?()dJEL@}E zS|8V#D32jqRnRkL`s@dp>x*nx*-tb3Zze7b!FgrQ1+K?@Cf9s%mQF548FR;h@|aRj z9pp*+@Grwd~GSWijEyh4gQ9!#5ZPMwPDZCoSadLh@Tw%ncnyK9Eu{32z+ zF|2t42kz%#nc$i&l}SJQ6?o$=x2UKnn|)A%i3jIR$O|gYuXC-5YaCoF<2n=9H@Hs5 zH72fYaE*-XOADsy@Q)=~k~k=N#Ja1w_RaX*(`Ow(VBdz|jt6mJ{_nVbsN{Orv%rCK znw%Tw8Vlu->s(x4;aa0w<1*4;m@%A5sWM^8<6!Us%9a1@n_(Ry9p^4nSQl`-&;B{- zCNAUw^>^22sdYoHS8?r@Yld8Ve$ZGiWSQXl2-gaWu|{R`fQh-+(OkQQa>+l-7S8tO zqW;fjS!BJ#aRJA6tsa+4oocR zn7)ob8EJoVmNu?BD2V+_${@=j`~1|22Z8(`5D)T+`EV(9c<0k<&6I0(rNDvfrS;SW z^&iuBI-ThcJn%pY*M`_1Cm!TE$JHEDbKaDAkQc0v=tjl$TkZoe%S1!+NPmW`HKYZx zkB#|?T+Fx3A|LL!;|^8tvEF6-$NHbLKz>jbnKp5uVww2d_Ht2dv$Zw+BEJ|kjs`WQ{y}0#CnnCfOwDx%pdaRly+3U zvu>t*sU%wM1u*6Dq4~q*vwzQ*RVUCnsg<=lY#1_R2%a3U&L$xt& zwI%ekB=&tPy3O$y@gR^N#G`)R5I?qCtUEX^MfCjv?B88V1#t|D{>L|5OXRu)&Y4Qi zzY>Spvu7*5vp!%u$hb`zU|Osf%(9Ahq6X_S(;>@+=p&s+qTKWJdt<5~@(R3PiAR_A zaE*s^^f>S@nHOANL%XcfVSj*pXZi&8$=F9Tb+lE#fSKuJ`OUdp${^>`xvs(TK|Ia5E9L>~1%@Lom05v;LZZI#>{d-{HVwWbB>q&Wv;2P-wqn?N1~UTHt|#GoAOM) z5{L(Z>9IY+9SN##;9gbIPMKqVk=LY~bu#8&9{Gc5tMr);>Kax5H-v}T2gaELiSv$X zu9*Eo&N)#Y|3ca-ebQ^Tzmz4?%Qy+F^H}Cswn-;tjQe-E_X6hvRQ>QL>1NtgL8QMv z-`)AoJRq>{W!=Yo#+?w9zwa;~R*pD0fAVJ)&zc1MNnrWjzAWWsUU`f%3|*ROuL=a18u{-X&9Z#?MdCx3F$v zIU=s?J5aU{zPdrK%G3LX(~R*O$B!Jpa;(6yN+`xk_X01jwQ@{O+$sM|_whyXs*iID zW3bi0nQ?F|&aoHgA~^2jxHAIdPR>!YPer_0Z&7g!!!guzf1fQGhr6mm70Wpt&LeQl zM*cCM*aop5MD@yTajL(?@dw8q9Q&}Z%kjp>`^zQc;5d9F@L>Mo?isbt%{q*HIKF$G z+)_MPjVIZ6XTP1}29BK;+D51}l8;IG7{;|Y=PiqhiqswvuB$OGDK94fm1q1M+_6dZ z`xj#DV<-~4nfyb$pz1BI$#MSx!N4)YRc z*A-7$S2Hg^+xd`ucF72}pL@-`>*X6SKg#4co8fVGMfKHKe^G8&Z?n(E{9t|Rjtk9f z%gwOV>EFzM^3Lpc9YZ_G^w}P9oWQtQFQe@*au3gXns_rF@&fLvJh9E@d=kTQoXxfy zYcX}gGM+_^H%12lgqHyV`o+NXL;nPS`t`s>rp1DHfKgfU#x)Ot8+6qd?_2YP8|{46 zZEId|)4zDvnm2AV;+I9;wB}>@#25TDGJIOpEo+TMRC-|{-kZ;vZ<#kMC%15LM@K>K zpu%Z0Y_rk}d(O(5R*+Yimuc^br{e~t7tZQ6r%y)<9zD#;v=!P@@W=yRGa1~mPp{C9 zLz*|WSfcC&c(9)DbzEj_VR|@(EX4blcm`y?ipK&KRba#0lz7=9BdH*34qkznZYy*- zx;w|Ir!#@bD7=rCW69y~;Ew5q@ws#IX4(omS{zx?)287uoWUJ4({l=K9fw5qcEw#c zuq%Ey9~Yz^)w>R^QN3M6BY0GAlb=J9qLZRyW8+7UxZwuF@Zax$A3xap2tYaT32hd7 zMQBiHm(Y+hF;lcd>?zC+xtA-=cPV}`rOm^ zT;C>Plfv!~+Zgsz*q31^!(>=^zl44%{qp)P==ZmNPxsr?@6&!F+$X$icvSer@HydS z;dh2V9sW}I2jO3bpAYx$-=crJ{@3;I)!*8GbpPc3kM@7Le`WvV0XGdO8n9--_5p1p zx<-tSD2iAbaYw|4h;0#vBbpBEHE_tll7U+W)(rF?)NxSQpz(v|4SHZukI00`8IkiM ze~SEn?VbB`R>c{|!=*GvD#8S%6bem)QjDMIiCkL1Kq&-` z7-<|Mf<&MgFon!Cw4nr&!H9uUWNe@*MD9qS6oL&95om~k=@aPqKXfMVyff#w-Ti)^ z=lSkAXV2NQ$!s>;&Bx}nNwt&hOuN7?w(r ze{g?wb?!fIoiFv$(ES+NS_%7Bb*xlG151M{(J|D7TF@UX=%j9NxOZEz{gg3(;DoH)1($w>6jjB?|)g|>K?eub;W9FDbv&q~xLoBw&WxH8! zfh%+$x-G8C9d~D3o4e1)`hgz#RKLPE`Hsb>$-p5RGHNt>7Nw#W&@_~TW}_vj0&Pb- z(RXkRPQs({7(5BX)Nte zAEF5~q>s_j^k;M~T}CTt3%x-Hvxis$8^tEEJl4hrLe8c0X}p4O=XLxa{1`vY&+}&f zHNVNbh-mRW(O3LX3=<;+6G}LdBu0y8MXGpF%omHr8=_FG5buliVx!nBYQ!$_si+q% z;)b{{z<~@BgNk5Vurt^nv;^0KwxGAnlE09@l|^!!{7CMSk?`ekarnD%OIQ{DL>cvr zTB$Yz(}O^@QC(JXdW25WbAjy_x~Ji0q0RszX5JRKj$H}MRzfV@RMAUnuzAa@3cJpg$#gbs&S zCr8n2x}1JUt7tbij;&^w*%l!3oR}?M6(5OR@=LiiY*ZK2br{bEbI7DYMEm(Vf5LZc z_yGT?aVQ-z?C=+O0C@(YR8K>e&a&9stbv_iEiB+8c@EF#8~9#+gGa;i-9(WtN`T*f zaY1}P7#U2GKMkjZOTuO5fW613_*}obLl20_g~Mz3GQA3MY@@enSJs2YuwCpNyTbbL zOukR754HwzGF{G)TV##gE04&t^0riAB>a8&r|{FTC5%%~sv-Ijop0VTtIa9XY~t<~_}PBGU+nY!GJnIj`;Lp8M(DR6xLqMCM&;=5=;WQ6ZAIPxSFag38_&h% zcpKh@+i*A1i=>e8BojEVA*JMRxmg9;H}Gw|0W$0+zgIjZri;Yzg>X%{J3JdU zhuzdrsH;}BP@mD4be36c3d{}@V~tIU7DNhcDwzq$z5^RT&rt$1N{@ACJ)pU_(ER~u@RE57MD_?hMZ18L|C4Ry zkBTwi$_?r~D2UMm^eCOGr-Iim(`)q~b*(XF+VnSLVQhW8gmF~*<36h7?i%z} za*;0JAM=YmMqCOeswpZ{WvOiSvYM^tsw=8p_0?3*)T{I`^Cnb43OG!b+v#8nx~LT( zBLVfmhw*pGK=M5K4e3u)!27P!32Z)lmsPUEY!Hv|K4Ku$=!jsvjL7+NojfL+W%n>X zd?oxKtPUH(E^4?6)imgDk=m*1RZoq<*{14ZT>=$&&>S&m%)Ryzn`x)pZ)}{K;HJ8v zez;fuF+aht^y_^ER3Hqd_U`w4r-6eVLS6C0_&WXu#^%Tbl1QJRf1#hzAy8i>ESu*A z>%bju1p_1tbvR4SQ@>VA)N*xLK|A$#+sVPRU_Q--coaZ9&fz9}4S00dJ#{RQj@JpA zX#-A?0?a4tmvoMvqZjIYU8q+8eQ2lg?t`@DFh1C-@6PwhlTic}pfa=%ayc5ukRP=Z3jzp~_SFsz4R0BDF#ltF@{`m8vpTt}0Zes#Z0sR_#&y zR2^_{P)F5CaKLk_Nj0k$bq#W=T}A2cIvO%JNM{)x=z>Y27OdZlWfvV#N?W_ zrp%O^3R7vSO^vCwd#rTECAuV+>{7n1xQNSvnQo5Dbqigd%XbB?1kM&ZsC52133L+Z OB+yBqlfeHwf&T)jA)JE% literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe b/venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe new file mode 100644 index 0000000000000000000000000000000000000000..70a2ec2685231fe363cbc6e9109fd4e8a09f6db4 GIT binary patch literal 166400 zcmeFa34B!7efNFtj3n-8VbQ|oMI*dqB(P)5s@RD}!cK%Cb`f&cwg_;V5!kT>CPsD= zNsy$26{if~xWVZou#;9&lGctPwVDNi`?SI&se#0C)25cdP9)?cV8Cc>W4+(sU8Io^ zj@zcs`*}a_qt9n_?>+Y{|MTC^|19@|AKPkz#+WpIgM-FA%~gL<=l|RPn`jv`zVIK$ zn?0c)7d>q){c%xstag3)o^^MBa^1?i!mC$)>Qi^$8(#H^@VX733fF!reA8{q!*|_% z$0x4M$;rIZt9tb(uRZ*(jOZr+H|MTJo3G+|&RsWee#*Jtw0RcS4eM{-oaS6_+C1O6 zF4}yp^S*rZ46g6WDBo1Ub=&&N%~w0ueVcTBSH{ns>$de3PI^`C>X_QPSkM0GW@GMX z&oHeui&y%2PMR4eD=_{tvxyF0&X2#yZ2nDjZlg|$?gPeT=pTRn)tuy6$mK6!YMT5) zURhGzO8krRc`3Rz*S#xXZq!XZf87DIG=uxe0aNX#jd88v{X!RX z_w6prJne!yMs8!Sz4sFv@8!+s8!04!)OW8Reu1ztHP^1YW97XojajpmRO&R_xPFmq z%3su&=(TP(vsHwT(r`A{sUra(U+1;=xEY;3(pM+nl^5iTUb}Any46(S;G~iFRXkib zR=!W%c{dpy9Ch>FCf}wD@>P)f|I0sQ_~gWZNlXkxlZ9qtf4MQ$oxv5)pMT(oZRdle zd+#T4ojt?NH=DdCKVY?eVVv1v%=>;S#0_pXhl5{lJhJ-w$6q}jG;KXuRvT#v)uo@0 z+|$edq3!I)t+sQk18vE*!L~Qnr?s7bAieGUA}g`}kD_fGK2qLxUrj|@eQZ(N1NYq2 zwlWe;Mok&;+)Un^D6@#N71UAQc6#|gwW{v_i8_6FgT^}4U;_QmWSZ({EVHM`G$vPs z%_;iWJ_C_kWhTxKhX-?N!uxVo8GC-%aBp;P=Fc$EQm&<`{rBtjuN95vR50CC>$*D4 zR2PLClNH7~^-R!Imt{v^MYO6LxYk&vIvjp+>6QG7qK(O-n#N>JxMk@b{3=Y~)QrKw z>Q#a3<|C^4;k4+tXJnUu`^x-^Z(n`sqHh-o^bc-G}Fg@8SL)-A~nhHuu^8-M$M4z}8%JvSmOx4RViY zRzC(#izb@GtNDe)HQ+X!^BA}-vPt6?Hl&%bi{m#}EL`UsxP;p;K*H33`$|6$=+xCWPp zg?HiKFDo1i*TQ)Xxc71W7`RqDs#9&M{>Q+1Q6qii7v4qME~SO%7ez_q7ruwIdz3bH zeo>e-exyMQll@=C+2AwQ;qwnz$Wj2A3L;x+$XGhEmeE#ZqRF11NuGw+&jhXZv%x_7 zYr$aqF@9--gO79v^V)lY`8*f29}iA$Uyl6Vj{JTY`TZ#J`*Gy=Pmo`O{Hl((-tx*! zh{EHIM^1asZ>)bmZQe}VHvz*UV5vYSl(zw!qd$CE8S5HIi*8(%ZRWmA{n0eDV7DhL zkIjm1ThUo|>PPU?u6v_Pt=76v%`jJAKEpC|zY#TwZ@luEZH3|B&vxDW;?TRt1_$Ty z?(qJA`I`C5np@4KMYo#Pdp;GQT!n3_b{TUhn%3AXUK34v#x)&!?8@lI1IElPN;9Xv zg$%wjI55u~N zCegtJT{=+KrNd3zQ(+e_hv?wZ*Wn$}0o#(A_gE?&fcY^G$37j@C!ZhGr^m=I8Z-_J z)8Icw(O__qIqcYOZ1$)+jfa?aMBs%w$wPfYyDz1wDIL=Tq%M_FKE z|8D4@vM0cMINQ3_x^&mA0e(S#D;kld3{!2HKl@*Cyw6bWs)cqa)NHK6=SwE%UOKH{ zQqGk{mtQh9e`0p=)ua9dM9N>Zt|dEKv@a)GWOCHr(6bdD@my}XcG`WP`YxqhN}1vO zCR_DZBB!>M*=*{}(kMTrrGVkw+MSJ6D~#QL0vTBR=FQuS)6J>q?v|xL0v8n%quVwO z4DKDPTxva)Inh^lfm6HO9PSO;hboMHC|Va^y78Z(t|J9F~#h#O=E7MK^s2VIQ{$s`&-XuMU$tOA8^KNYV!2*@44f^Jd=EBO0ex$ zg&GICZN28SWzkjupEKBgE@&lQ7;1Bh)8=v7K1RDe_?<7&=GVq(^ITpu>5dcscS^e# z@7KPeHpcGP>@nK7uwNtVw=J{PSb@YrW1fhVMw9ZRjaByiJn-FmeTCy&+X1upDaMw{ zYn6L>%ki7Z*9$IMuMZ@9joIteu`HUD->rAZdQ}L!9HQKe{lP@~eN9zqq+MZ|sq)LE z3zTm({$(R3Iv%L#FcMzcIqAW>brif?Tj!62S9z`74!m0>L^9p3zBe38Lm_;8J7=DoBzoH!1SyNO-g20atIemoZ!I z#nEIK{0JxHPwaPmn16J5W2}0gbn2bx)jM&h-n+eezc6OK6BFM|srU5qAGmx@yu;^j z$A$kwTNS^UxBpw{d+xZ86;NVU43lya#29a}k z=wwlOaYC}!jej?VHt!CZ9jf1mBnvsrrDwA>&P46IsY@! z?Rwslo3^aXGIeuyw@mK|=9PSre8)-O6mC3HMBUxU?QPS{4(J1|Cbz3z#s+)rE2C}w zt4$(vVzeW6m1&E8F1nq59$GWWbj-0#GvUL0vuW3ndng;)w5w`MAhbm72&ZayuG3zA ziD0Sq+6<82ZL^^L`k^)p+P_MhPT%&YB{V*52$)myMLtV<>}nT|HM!A_Zs;Re;tnhY z9xQpy=god&ZhQQ?h8Tg^{^Uv{4?Og*+yMt5Ur)OG+b?L?VX@7cS)!+n^ z6fN?BF_dn0Oop#^L03oqa-vDui+|iSI}vPbtfC)|z3}x^XPTKimvW-9!<#+niJr|S zA%1*wGQ5I5r*9>Ktr6TW51M(pKMnp?&d5j{gKrjsmuSH3`8o35J3g8`1}v#<%0Bt+ zb%SG-QCX!GQ?}-uJWvG{`-|9Zb?I-L5`JzJ+T`!f=Mr80R|qVTh(Eo|XOeAa3!{A_?Ff4Ib=PG>L9;aNPU2N%S(lcG~-3G}(vWG7em3@arRv1|P!P zja5OOUEUwI(T#zTGP7GBNVhkVkEuant9b3+mTXr)vDN{b)vClstpI_$=>fOuFdB1W(;+Th%)!?KCJjdVX z)`#x6us&;ILbmW9s829=dVTt*QE&?m>L2Rw554z(e~+T;)HlZ`8S=+n8)Eny;urj* z!Qf@+BjflcUGmo^xx8r`7tV6&mWd{zKHrjtEb=S2woJb}Xm&K>AFH2}XJ;fb;e*LG zI&Bnek9e?kd9=XaKADft zU%W9BKdy38q_q3-iHW}kUxLFbpEPWT!DEc{HMwbthCpV20rK37{;L4*p@PnZW%Ep3 zC-s*Vn>zYYU1(+YFY;`00d`w_;MBQ$l0%c*smp=+nrQOzK;9DGmwq9Pepqeb)4X=^ zSNI1l!}?)mu3#yFFX}|on<*drT*LOlBKy>)Nv67wa)q_U8&7lXoimc2w~V4^44lY+ zFDlAQ6h1_K$kJ@;O9wA%SMu=Qii;Ux!%1-qAahIbfp=O=VkN%x`4ULH0(VzYzm_rHls6X)4}7i@}!=nS6Y#Y zKIB9+-wl1r;jvwtOyc=~r$>-8=`3)GY!CG8YOo9&zgXV0rSfj8JnAb#_0K z@6>yiYipphzK=37}Ryu|Ei<0^iBhWk8Y9Nz75nb7w;!ikTOw}sy?DBp>V-Nk(ezeZ@_Z>H*!}#rA;`uPYUFdQHJdO`Gu6#iLR5#Dx;T_!{!i&oL`IN`+%Q4dH`8Cppj{}t( z9*4X0?qTZug4d@A^C$AB_boD|caW9`Tm|Ty){0v@3e(X|%uUDWoBYJqit&y=R8*Ah z=ryx4EAcnLUqe5-3mdB{kkc-7t5u$*n8enwm6h1c`%15@^qYL&J+uYQOJ1P8^}s8h zj}g0X#g}jK;Ht!itS9Yv@J1_qWdBLI6SI(S0}ocw|06YlvgbdUQl7T={DoIO223@S zub*yq+(Dka8_n_?fd!wqM1H&c9ApGKn#3LOmuS9@e4>jDopChht)eXXs)VoaQLkVQ z(Ff&KyUN=OoUMzZrIqBbBERySf8fA~m{d3A%gL`R<18o7N-ysRx%%|`32i(KEI#f0 z^e)QO1n`A}x$W7+b{;G$O=RKMR-Rwc6|>CVCFet3ZIX9jYq0G88gz^DIPbAt{`-A5 z1b=1^4(PzL*6!X5=iceoWskHPM@coPUpMHa1hga3+ z#!KC_xR)k`$z#e(6aN7} z@1kz!d3R~z7d$JE`jJEXO1H@u;#$o6Ow+h6v)Hti@XHLDBt%P!f8&Aol=?9FW1L;2 z|AKxYCdij7AMJ~qtHc}Bmxx&S2Ug}-sV1EjUu^ z5I$4u5p5#HA8=xl=#?i|(#LA(DASJ5PKhmRCmdHvoYKHQr#Y0DU=GygQia zg)R}^$xioT_vM=vTlTX~*`{EkkM}C;l=I$qZ-%yho|Pl>^f7K>f-=#IUz*tzdbW=; zl~(9k+sb-2^n>WOGGL2a<|DSXWoH~ewl5fI7p{qG5JP)rXbfIRJoWm=UcBb3GmV+! zT}5lrS2)*|$h&h@c~kzLg!&Ze2_{^43y0Q7Iq#d^GZcsS@jCVO!AG{FH6FniPQtV8 zwjs^}uJs(U8om?aIThck$1V{6yZ)971Iyp=d5tw3=XaiaCJnVG8?3zNA9&i05rQ9$ z!xe)Wa~wX~Bpv({M;yZaZPAXt$0d_yU8Q`{Npa=?x*UH0hf#XWDNAfoWx?4I(QX&x zLHbqShKv_lp|wTKo!B==IHhz}e&@!~b|6Y`+d_Kaw9uXle9GPQdBUESgI?bA&3tClM- z#N}Bh=hMHJrH=N>S&2Tb^O|NQ@`_Bt=2vJH^lKdPUHIwVFGdIUU|+lbv>cmEEC5_K zVt*R~1^rhro)8@Fd`Rj%%oy$L_S)J1higZCW^cI3}uY1oEpRy?v9~|5>n|dO;$Bzk-SGK9L$Se!h zUADaKs)IWtR@R9qb96TEGO1@v&MnQ-;St(a{$kQ1pN$^fl2h3nW)6O_+H`H|k@s`| zR8HX5Z2GX3K7@c@b}m=&e|i0#QJ;FiJgu|zVWNW$kp+ZXmZA) zNOMmxt6etfkIoVgNgr4s8+aFfh0VC7c)Xb^-LRkhvG0^8#alI-auRP;VRPjtk=9Dv z@{i>!OD>Dh3*C&hy$CBZDY4{oVu~{MLZ^1`jFtem9 z-NnNd!UKMe@N)pWEZk;Tm#nLC{HDe#76Q%vJIeeGzi(H~Y;L7oLj|~`@2!;6{S5B= zCPh11`3Wz(;kUkQp7Evh+{p9VbTg>|pY8a0)?)!jgO$Cu2Od^Gx>Oe3t-Aivj@~c* z&yx52IDHd6dT$}-OI@Og?CXq0#m$3f1|L!XRF`m|dRhXZwI_n1lH;t8Qa;)2H?D{# zN3J1u=Z2+!rFVUOD}OW9ht}N5H&W7ixqp2O|Jg6^mqjn{_$5EL{gLr^e;#f(W39$C zv!^f3OvUawII_fBQ@O{^><0IC7~fOxt&n49Y^6;FSJ=uBG{7#*wJ#-hyT7>E;}55qy-vQKw1l6B zG37S-BET|F@w!W>+nR`f!u>hywx3_)V!zB&;MMVyDc1=-7|-O!?l&E0kzLL0+CF?E z+i`pzwILZlHqooQ$@NK~M~UF@W2hI{@02(R^=~zdt=hmrWVi3rlszxJn`x$_FwM;F zq`!L3gARTlgcBd`T`6#jXJvng?LmW)V~5mnLmu-CHKGOecS8&6ea^PhhiG6657XT^ zjpGY>V+O;YPj_J2YOMDP_U9ri-Lk|Hs;o0jRZjnbi!txk%G%qUcn?1Kq{X!pI!43i z^V3jV*_rQlV^#3X)}w1~>o|%|R(tuhCs+%b(i2k{`!OC_*7nwmT{Trx9#xxNyF+BqTi8x{1`kY$?umX{*$Y*qxe{5PC8}sOMc_|)2V)|+CR;Bv@fOn*WI?a zEu{{X|1-+RurI2w68qYaYaAN{-)r8aHA^Q%{+xqh_rD{sl!XlXlZ{di;@U9F*+kVHp31&hw zah|>1!3pgJ!5#|+b5>wA){TN)4k&Vk!rXU%|l;s$Ut9o&S#P3(dD2QtBp#;Y@n zG9N`x99hh7BRDD?XX@tT(+I~gXAGa;E}Dh#(}YL--9xqDI|d$ZCw9?l1{Qn>S~oIo zYa9Rk&i9eGLUQBKaY{)q{Vz26&ib<&%HvOzSf-$P7yT73#&JJ^pA&Z~NM9bq|FH*y zlR}r7<(v?7ciTudaiI| zA_f|{G?)wxrk31IeKlzVf8UFrIEc@bjqlJ$-dW|5<`Z1AsNG=9ckcYL?XbkdlM+K(LEl5P_6^KJOy;KAO7x8PskyCoW|DgAoK8mj7E z+Nh-e2LIfPZ*3bK7fsZH%jDXd!1E&TT>;+98PB@@R^_E8FLXXQsf2o80S_zSwTQ_+ zWCIgAH&KH8wOCgFZ#O@ak)N~VUA6(s*K5R+_}PHJtk#jE57rV_AFpHz3Wnh#g%h^U7Rc1=t*ZS z2YX;js?j&whza|;S@B`DC%#Kv56J$OJu&9XTHhL+8`l+i{(MTg)99mJi%jC( z#CFOy=1!$v$-V5CqhsdfEQiK(1?&DIXN_Bl?l0$F*G|ekML%oM@hT&oT*H{B20E@M zyA}Pd%5b5p|5gi<2CR(!Nct{ z;KsMVnuk*RzZ-#Xx7`r&jNZW(<`L|*bGQee)n!&%-2voDGHBmio($F3ZVX#_nTkIg zhX?xJW$I_3O9rnn^*u|FbMBu3C(uFbYw8Vohv|U-;Q3Ia=Z$>d<1F+(1FtTJSAR`^ zeY!lB()UzeZOLSf6LAmq{V2F%o)o@gev{`V*b2YjM|h`xpY;2k5-(HRvVSXV#?Fi{ zeVm5=(jA*OqTl?q!t}y*mY&hAicuod)$$?5BgA#LgD1ucamWT9_o z7G*tJi|s2;8(0v-UiLCC5n%31xRcGh7WksUfxlP1UwW(IXs9!Cs5wBq|9k`b#2tIa zoO^q%1zpZChFpU#4_TRq%B=i;$8J%!Y!)vid z>J8WD6i(D$wkkke5Q=_lNoKWA9mC_RO8&R>OYB4539WFPpwg}q;uwY3`~SDB5H+amUWH8F>V zO>^?Si+U=V$G7ppk5NyQ`&9bL4gllcsAB8HBYVM33D;NPWyMAqcg*eQ+84|sPGLLo zi!IkgH}(@-sD(bYv}w)!9H*YRQ;%H| zqn-27xCh6qH8c6;#Oi8zUrB#@ zu|Wsn7wJj2{P#!rKk|LItT`Yo6s2=9qpSXn1vSyY=+fGo!B$9T>r#JFi#kH}$VgjIakvt2mAD?9jr42W zb>#N~3uFCUjm!M{i|~==kk%T=Z!SDlxbRmFzh6j)g5N`j4JmZE&Z7goaRD8)zTpo; z2k<}c?P+o5zfX($3utkFWTR+t-#etmznuCn&>{m`^b~FsEewCdcGT6|wmG@25MNS$ z-vM;dWbhqlE=xK@x@;PFk7raQ=L|F)jY0Efz8g&QgVKKl4@Mj*L85Jzv65w=DIQU2(~NqkhSc@Wm;>Ixu%=>AdNA? z^xxOZ(p931>WN~fRgdbcyv{5uWUNrjeFWbs%Y5!tr>^rYRjS9S58O9c%t33N=SAub zU00EWUVB3|RstJ#L~$g0Rz=cg+=0Do&Ss1hV~mo0rAg*kri!?7yS>o$Rl+Ys@81PX zHnAalq3NhVZ)^NrVjq~k_zQtcdaxCd{bo|uWhSrTWmESM@WcvovKUiOnn@aa9Fke= zHw|$urkxON^udQ)i0y{{$aG|qUdedHCf&!w2zbM(@Kzj+q}$EetVeu1c)Q;Tyze#3 z1#eplyo}HCmXI!3W86n9Q!n^Kv?sWK4cu|Y-CBDl*u8fNy%X#s;2s0dIUb&K$Uok} zb58qh%>Enn!q}^ZINQn!#^>DEav#AD zXf^f%+bX=CxL8#Le_##mO20ef(3H4#1mBC89sXozX$f;KONp}p&)h!N$I2fpW4=qc zwJ+^ls5JS1S!wu3_>D0y?{6-_-du+46WD7-w~acf@zr&YDCVk=O_Pv#^UYlE-U+D;t>pc1tu#Ix(Ht!m@|0x=!l&CU9m0 zkJ4-ZHMX&BaLR(AJUx~Z7tOZm2WzX#c+Q#_-`PqZ??P9FC@Xl@AZM+#sd>0>;p@CY z-?n&d8~z;o<;>#@$5pm-W`JUC+mY=XS(~mg({^aE0Ul(XZAS%mH_l$3o<;7OVB%kg z=VE)%3muJ=1uuKArCcLrYy;nJAglH*Uwz+dy4T z{Kh#~Xsq=SW5YY~oxqEpko`=BH}F3Oui_smW6${&N&2`a1}>0+y)Us2y33o7XwjNz z{L;@N3$b-KX|7{Z?Ygv%vJh*A#=Eh|{Qaz1uQDAC*P4!1DYBGmsPW$Z92Xjp#R=ehD*>xM43FX*X>q}X+xD&I+t{n{TXqLcXQv;X6kkU=gK4Q`sR-_ zJ}M@iy?)8wAp0uQquWZX%;qJmuUVUGl6N+(c>2!yrsGG99b(rAL$Au~O)l8aHcu zs^j}de)=+`^XIWH&Og;D{4>GhpZkGvbUTe>@XreJ;WrHN&n@uJ+Ap&1^39g282k{z z-j%^aUEnST|75}+Ti~CiwY3iaWP@k*Zwp7a`24dJ{<#zWY4P}{#p9ol!$02|;vea2 z@yZ(b0iU5nJoB%ti~oH*bBD(>4WoGGbz&`lNS;yse+ZuW74Z5za}{GV$x81K&qV8M zzi8^kGY7>p&|);tSn$VaT3WAO$TQ#ac*aiKUs~9NJmI5hKZw!w+w=wfTeuf{1T72q zGru4o?mDfXz3h6$>D~LwuMZ8~o9h+3aMLfj-tots{Ds$tu5;&(Wxwptv##*}V0)?a z+_Fp3InpU*%ysvRPctNovVGCyl7C&fF=kE5^>tk@_TJY|m&0q0++rJDxy9$#xPiSB zzCONzd-Sn029ljh^(lOv9s=KG(=2Dc23wbmXHQ+wN8ZpZ)A4g?Z=g4PlwVeA)vbgE z$`i|)x*&uNRh~Oi+AH+hs}|l_Um3wpm$g}SuMn42thVeb`~v7!HrsN>U}ej!x?R*+ zw%e-HI;&8&_B=CJ#Is_M_#Fv5+a!yD=e^XqnClH(TQzRJ(R66OSa8hOm9mci@?&?N zDWW;2gQjjJ_1r=pt+!e6ukPHi^X{;lZw>Dv@NFjbsjVx?SGm$!=FC^Z7dCTWwQ1%f z5!TbS2F?6p@=G_j0*mHG%AWN4aM*Izca{B;XWA_5v+A_YsEd3*BVU|yN4W~O%ndv6 zI(?;lYG1eTUi7Zz8UiMtZsOI#aPVi=#7$w#46kzt!M~~WYfYhFDLP*C0|z7M7f+$z znY>|s`8)2#FZeGb=w}mq-}QUw*E2*v{TArz(2q5K zL-eDbi_(vGsq~vPOuwtB%Rbvu#r&bG|2-O3LPMLii=%0%^R3yq3{^%K*AqyeeCsfX+qU zeS4bOp*{Xef01;JTjXPetVJQD-x{%|T_3{-(cU}F zRXOt@_;+WxS2^t)3Gp1`eeH~K#fq7$tv{t*$B$xfQ7pik$}BVQPU`K&$HsrC*PJWs znM>o7(w4WP$KuT4tG!nC_)9kLWc@^pd&O7c>DKZ%?`-1glrNo0*}K5a3C1t28owZ) zipxlD;vU@B0-NM!JXa?VcvOD;uFPA}i|yrx!1K4Ye7w%hW)iqLnU%FLiPhhVO z_jXoeRo@5XUluQ1D_b^S^DJ2%Ukt4V>(Ld=3p-am`#+_>(;w>+o${&qCwS%0jq%RUm)btrjo-GP zt~5Wdf1OI2&5sTZz4P10h7YCXa<4zFdGyy`Xzt-7uQ>a<+GF^EzAVLlk1TyWMV5N8 zc||lYo*tJXOFMp#EOGYWA54~-sY|ld>d8_BSz0SuqJPLzN2V)F^)XMDVxwefZHg?# zQe`P<>hW8T+zD>_-e{?cBS);Cb>t}K$bwt_SKY&P)%&6y@?&d=X-#Hd(Y;rjWLto7n0OdnAAy%*__)QNwU*2GX=g8O zrB#rKk#8~A2r($eweysQjy)uQxVCE8_eq_z_;14r?+ebilK<0iDsJN1_CfYAJM;F) z@LX`Q<~_sq_!f&8Kt{P^+d{~j?Ak%{$j2>VpVJz~@4{ILvM2wb@UL9Eg$}4HybPZl zTXZjZkn5_-4e66CVkI@JtV9j{6aFJAcfAv{*=tALIDhO~cU~g2A$^(R1GVIjq*pN4 zX--A7RuH;ejQ005t$1@K^_|Q!=V^OyT1uU1%ysN0EkN2z>Ri1ll+aw9+9M{}ennbk z^9=HQlJyaq-#wFMIzB<4{tSGe+mgQ{rsdc>bdl^`jPy8qXC-`Ab9FTNGQ2f}tIJ$m z_0WI6%$AhAd&s+nGD{dwG%#-T^J(4I8u}NqraS(S-p8);{QZaVyQr@(;QIS9V-_?p z?(xg69p6~BmKaHhwG@ies4VmO?daRNJ`c0k=1|PzUFgm__Tja;j{lCV6*=*hd*ZhPw@xwkUt22jGB)~)v-T- zc9Ks=zY^bfVvN>E9lg3~#YV|#Q;Iw)1|nGuAcJ>ErYfw&Z<&V$Sd#Chw`KF28}irP>;sM zqu*h}Sqn6>zR8?ZB6yto#<2MsE2g&Z=j{{hqhj0}np&P#{O!W@6;FQ!xVHd*ME)yf zA2tKuEk+-2Vb0`ikn`}+`&yIl@D}z-^+eFQ<@6;^9@)3nbDXyXZwn8h`sukUE5G5z z8TyvORL*;t;;aLO|Esm`a2-4&{^!1=fP1IhW#g9j;h)5+-2GuO?1kdsW&7QA1$xfJ zuM9CiREy2P2A3)?&y#%rM6f+RVK|2Jr`#KONPIu~%)}=*C7%2Sf3JPx$#0xq{{5kI z9NCw_Uh5RUYYZN${l7dkG=Bo`z9Swgg$`@rqxy^RQ27`cDShzwCcX0N?_TNSZ=mm$zR`ZX) z|6OYd=5a>JcH}bon(ND8k95w(-ZqxsM>yLl&bv8WrAKzNZzc|HHLm~euLmDd|Az81 z?r`#QRX*jJ*vnZ)tO<<2!*R$vh95gN8vcLt;BS40@P85b+2c?$`67MLycTN`>wZjZ zJr;mg)XUnT<#BA|m(X3<0&jj{?ZyUc(z;m2_MM#PnP{;J);6;y<4YImv+Q0b_H^;? zXd7{Z{wC_LTp2Bu4zDz>UR-R9vxm-R9Jt-afrRydIl~F z9h=3ycq+!T-m^AqXx-BPf%b`2rnIjZMoRlb@h0s9BrfrNXfZUtt12&T?O<)`TtDui_lgVNL_A9M z`TMZ7KStw0;Wt)d*l)%9W!|gYO4?G4Q015t*&!Ti4Du*2o@L#syI;mXZ`D7iVb~9g zx$w^$3x3D1(q00s;it|RIFeuW7IU_&|0#J9e!B~P=wWYxKS%X2^WZ-0dk@TS);{ug z3jab6{?ThF##)D@^+#G8q&3DnIP>)&`k}<((aiq+*#8LpXNxZK6|DR$&EIH$Q5gPu z1bHuH?@__*M|Nt>(qFzj_{g)A7cYja0?r08N#|L-s%LoBd8W?zdDhYgrt~+`hC>f@ zrQ+9Wr!8P-)$;840pQ-?<|4{vS?DdADf0o*h^#93zr1&v>f6Mn{bmoH2 zs)a7znd@onV@z*jjT-YH)D!d8Qmejl_;??Cxr?~YN~yPp=LpZ}-44w;Hxj#HJyEI3ptq`v zcvnemUN-V_?tNSMui1`0&lN9>JS)Jp=hCYq{J}pk9^at-x5Hyy3La0AHx-Ys@a*HU z&#UKRcw8YoY8^EA&|2tJJpLl3Ug7b1o=4%a-pAv=@Xp8MkGS{o_~+ak^xoUy(dWOo zvp#Ql&v-BUAPutYq&Km?%s72hLU8#CC&nkM5{|U3ZZ0H;#=Xw9|v*W*{oFAaI z*gn745WBmP{ak0^@2{o6|6%TrGIu7P#6BmNvyKY>NuFU(h2qe~=sfumbJ<(a$20T8 z^)YNK&QF5)?-ce5IqPEQV-w4P1LV>W*h$8?q2g<9-rKP<7xKc zVQ19lr^&B%nu2qoyBEz}8=kUOP5VSSSD3k_#v>L#@P6c>-!Qi_>U@8}djoS^8vD-S z%!zz{@qo^y%y;&@MZEJT1$!-ewSaZKeeAPP-#AOd$y4d&sbu}>zKnSP4EUply!OTo z8w=06`;pxBr1|alvmdJloYa0fI`CU?5+h#-{T2pC-aOb5(J?h<3^^gOb3XQwE4U^o zr}O#!c_Z!Hl`TJr&O~oHX9;WH%4_JZGvIY*3JrgiWmtFDSjBv$#**ly{Pr1?D>McD ztFZ$u_{f?o?E)_ISJ7lAdxjn)7Jdu1z5kr%rL)|5=})jmi~N;MW>TCo4|0ZV2{CZ+ z?99LW@Ir%J(a;JvR{fm5YY+H2;+z@4RLOj)XdUFJOV%=mn_70lLwopM<0*Va&c<@)nfjLkU+;^b`Obv%Hy!<7 z^wHbLoLEoHKmOIPRw<71L)Hw4_DA8X*6%%96$_Y-_4p#91w3}-H2C{B+V%PJ1@5KK z(JA>|;OOPxl#-Xw!G1r5Gxhar^tBs0>-q$NDMD@!@92{(k_YS@omrwRn&MHy*Z)jr`I1=6EBe%03 zc_!bKsU+502#+j=KbXT?wzO%>^jhwf7URB=x#&jt06v^s!Tz)g&aRg3^7UUY`b%q- zW5|3r_1_P^d_6jkdtT>i%%;6vFVYX$ENE~9|An(DhxOn{f6F~@Pr6R)Yn|_@Q1|MT zx-a+Y7LR?1y4QPslYQ^OKNB9m0UrA~hc5=LyLj)?SbNV4+P@Dh5%R{--&6MAkl2Oa zTxinjD&WiPOQT17IV(9-f9J+6n&V{6aenQc3*`gn6K@k=^gy54@Q&)wztJr3{5|DE zUinZ;`691;i1Lkm4?=jp7d+#i9NzxM;NG{R`RKLmZ+A|W_UlW}48UJ+fE#@aX8=C_ zH+~)HjT~_KJi119vWssCz$56ki=R346y@+kx7nc=b~Xg<{w?54e#|apLHZLt&K&8q z_P>8=@R2#^2S?;><;*XCFQ&i0wuW-GGu-{!A+xC}tKpJIPf)%u&vcylJFD$=>ePPM z=1j9kaQfx5oc+03Yr^tx*K`N&2Z8w@I1nzrz?GP3$Bv2xht^R3V~ZB>?UE@=D$5r% z6F+tKrlJRrYM)+91!ryIAD-YGlorm)&V=tj+_Yo*LFl;{x@zx7Z|1@2pk7ZZXC~`|Pp}XF%-KQC9=W9bi`bB{Xjcgy z{+#|-dOH1n@(t~~WsQ%&$5*mFoPOC*y7vC+d`cU8Y~YhSDR20D3I00{A0C4r;gfBy zEtOxIx(~x0E4t$p&fX`#_I!wMwJ)BD_dOf<KWd(rC@&(-uR_v57B2M>KZ!zA-LPpf4H`zqk~#rsWS zW_chXeOpEy#f}Zma=u?^bFS9nOf&V<@V0DN7knG#cQE9h2iM4$Xp47`Us26ibgJ?h z?nB=Fnc(D-BKE#VID26(KgIsLxc-#i4DMrG@8zf1e{6duP;`&p5;=xwx+`~`(tt73QUkn*Vzdwh4;{3V-=lnY8 zTVn7>cX3wOr+IIaUpO9}Pqtin?gOuX?eMM_YacbnP8ie4KDo{>^ZN^aTlsC{x1Haf zfa&C;ERfvu^Cv|+M)>`F8z|*@tKwy>&3z)4LtLT2#$|bTK^@{@)iZ~Bd>bi!H{4(MTtD%5jdOn5$a4WyXC`oEv7df1Fx9g6%${{{ zC*O>G)`iuDWyH8LWu9RGnN1?Q_(e(Sq6k;P2e)q&*eQ_avU@7)8@i6y00*ZANl)T9NZ5TiJg8alN z{ru?1#60pm@+PsBP3{`@eOI&I8~dcX8(uA3DBUDI${A;z@7!4$A-~pe*GMj}a>omC z>N&%j1Dp9AolD(oo4KidiU9K?toKuVu^6~j59jJcIScq)FZdv*JGcz{^?i!dl0wTUhH-0$i*&SO$If+~?sVweRxx8)-L; zeS8>ORM^Nqi>Zs9y`W2o)2qKVlv5tz@-I^Gr#1!q5YEZt<1n=iRmw=19HUSsU#(BpRIJI)}NO`A+&Q`p@L{eH%~ah@r+HF9d4*35IZ5@$z)gBUoh zgbv$z|I%jmh7DS6$MGlqF|c5i{dw)r%iCrEx9pMpRmlx=$a{Cwwm;5Mzy6Im5RJpH z1C~wWCpW83)#uu>y!L67#b!9?{_0$6Zzn}oHfyoUfC0SC^}FK&vbE?h1#m6Zk2I# ziP!GmQr>Upo7^i-K);C(JTu~~-(kAAHkLY`$lINksKMs#N;i9B*w@N*vxl{}j5*ER zdwKq;6C1$iC%!Rqd~3JMN1)$T{|?P2<4=8>Jmnsa6~EG$L+3MWqMnzrIr^rA#*BWs zpHMD}yy;ovi2udDbK&uR`Vc2p5Px%UuV9l+(tDrR*708XoR~pM{3BI=p8;3#uP|N# zhk~(yI)2D`Y!>q9_!ICwG5*|ar|!J=chhHdk&~t|iSTQ7a|Y5^@CDp{9;v2X@l%y^ zz1X=!p8ulucMi9oPo1+a()P#3YWuHfd*^W5^Srj_jM4T*{HJ#5#}n|Fc*>T(B`#B( zzJ>J_%>DT5_qbM~(^xxx1phek5OfoMjzag>=<62h*a9!8p4!xM_@YzDUq+qsGm0F# zPig&Uwk_$p6M8tsb7%rZ?}@et+R= zI3AYmeP6{SzLcKX9Or!FR?cY=?rOlr`#jvuL5768I5DJNaA&`lz3J?08!Nu1J@X4F zyTZexD?d}(6~B`Fq~dYmZ;1zv!sFk8haDMHnqM9RkFC5*#pBm`7VaM7>f^D6`~M6c z>m5A8yLPL@&o5s`71}|ziAX~ zKOFlaA1W88TvEn?gMMw7q ztp3+Hmrs23Y3Th3wq%cY_I&TCv**>mzAb6tlZ_>>qwSLPkIoR|ya9)wzCzs_s2d;7 zJJ;SFe`rk6i0xNC)eUb~jkXDHf5cbrI9PLAnse0HH%v^kjJZ(RVf^?VH38N{^PIZ= z(=G3x1L)#HzQb8))Vk{C(%uX+ub6g4Gkdn?E?VLmugBqkXvmx*XWA1Nli$AtpWpFe z+H^)yrqj2@&UoU`PMrx3Z500-`hJdQC!O!-sD86M-C3K<7__blIyz}qM&cg!Ld3oH z4uTKWW9`pQY~dO%&rW;^zIM{A95<~eJMrgA!?p@Wm5I=Y)>Y}HarV-yKOy2A4leOY z{BJg=vByF9psuO-kZX0eipE_2x!JCt`F$rYFJI@_p9hLpp|8}oUGAPmEd8T%b$8(x z*ya!OeFu2BWDfM}#ZMznTiQE?eU-~iq8Ida4tD!|89T|Ezv}8oz}YQC&B>PT%^mXM@Kd@XZ;{Lu0Jr z_ILO2e3jGxq6}yLin&YgEayDF=?L8%+ytC=YE!sz^_0u6ynoKxJ=O6eMbAjNTMs-~ za*Y0o=T*j_3!J>xw1oUir(Vmg*Qpbp#rNFfq^F!g5AT;~tg14*{P#`6{NCyosG)`A~g|C6-N$YFxAR8f#o4 zoAV0Cb6#O<{hb5jIIr+v(KzQU+nF!x{Nri4os7N8!qK`g*GLo?>L;wj53VjV<#kP@ zRkEKi(&MhxYNL*4uNwDg<;$j2F-rfPcv@rR%4sH7c?F~Y&M&iqGIt}}fTg*l{I$+~ z+?fMvK!(UdB9`fkm z(#@5L`A5s`M8>Rk>!OZZ$g8>wt-^JS`F3PO zhM6r|tVf2pclNC}a294a@J~yjJ7XdFPkhgV_z7phX*{BHVC>eQvxdax-Lv4N@>Hlp zHdy@OpV8^}%d9MScruj_rAy$Q>bI!h=VdB%+7jJ_kIbfYeJ3m)Js*k_8<-~>qwg&G zJUCQ;B7JE7J5`Tp-scQV3O!_T%+OFx^ z>F3D`nWQ(q&J|A$uU}1F|1{RQ=dMqr`Gqdp%%VN?%wEY!8NB-o?AKD-tySNErxtpC z85nNA<|i&ai3yhFm?x`wu4KP@k}=mg@IL@xHQ6 ztLT&1it^+f%KG0_ku5t&KD9ZMHq};4I3RzFwm(STeXJeR^AhfBtdG3jO`P&vFo$`O z9NNut=Eshqqloi7*@#>!_HaA2SDosk=rqgn)|7G2IdMs~S;GBN@F-dehZpZTzX2k>){VY({1Z>N^=`(G!Jm=;BAqWCcd4V}hUrq{;X9MMLN@b6jK!pX zWlw46IUBg_uxaDWCI>d@9?7-VQ=AVH-%`8d0&T~h8P=(4x9@SPL|Q{Rw0895tp=2lYmn%~D4fY-UlSLIxVN5UR{hT(8|=r6s!(Y{Vg)!%9>kA6sJ zRp5u}`j18K^=f2P&)Mt`()D@1QR=sms(*dILG*d#SA46K`D4E=;Ujf?c$7Y^x%?)5 zyD_e~UL|_B&C|OPe7qXo{S=tu6%(CrnKXjyABFJec#d73=HNngj~G{_>mNw|y`Enmr}xj*y!C&!@dOy^Ik>8~bO({?JudF+V5V$)8BAXW1C_q|yiHWJez7L7b)z zZ!Dv8*POA8WYVI(8Q2Kn*>4}-A3Eo^44V43?{&sA^5gO;vkKlOU+Ktme)|?i3e3V7 zuosOy=eP74>Z$bRS$nA`%Dt!89GOhz&o9xZ8sJr1k8i2>7VfxH(Zfhp7a>n&Gx=#8+e$Gwoldq@zWZL~LvFB^XnZ(>+XX#z& z!B@~-UC76l%Q;W*Uu!o$Yo^Zs7ItS3b1A<;r`|~(;jrbqd@DRqc>THD_;lSX#svuXumdQ7be=gvDGvX6o z`kz|MocXc0hSTH!VU{hXjC>`^&aEWYjt`Rm5N$Tow$6W8OWUbuMrfR+c^aF%`1ptS z0=wY*4Y7|nOg3Qp*rZ3rD zaLFI4U(9jLj^a=9UB0!POJ4nAAam_A^jX(TYsvk!+;5>TnqPf>M!_W^?!^}itSKeg zz?<*E`|r>zPJd(c^$fVuyqGiBO?iA(r?2nk`g3dQ0dRb`LRmeZQj;o$TlW=CuBV`YJv7xsScH@LI0uqxv7Q?D_Ak{wJI{>35hnSNj(~ zjBLFYoV-NsypwYHX85Vkw2rmc=3?@vm{J@(vqrFFgC~ES_p{??@I?W9^Y50~akpji zzXA?fyK{m3-N6|HU#0vMb#9r~|2hJ4)vjzY&; zsv7v7*|BWiZJJj1cn;V0X>OiP)0TabJPijfsXMOsCob{IUb1YZ(sy1}cZJdqT;-spx8?9gxrbIwr1f!SXA>}6VK*06I<-Q%25)No*qmp*6N0w;Z5-Es6x z!-08T`n+Z0)rN}FI(?U}VNI!>*hBY^M={GFX`iX{3H`YDQ8lHys z8{PCxH!hQ}6|y%uID7_wvNEK5zLN)zZPH@_d&y+wdDG4FxW?k=-8`a$O}f^M*l&GJ zdEGUk(t+q6JFvM*-$Ph@+@+C|AA0pGKQbhppfwk<40nxS?H8?OZPZzYu9QAd9?d(& zHkoBgi)}(j{n9LxEHKYoCq4N*JmjqVfZue+2flWFCTnOPgnwcy-E%=Y1q*pqM)@n* z!zTV>Jc0gTuep`AwuU^b;dSvmdtP=(Pm(XOocAiH{2_Sp`P?mzp8U{|o_roXIr)kFQp)3{G^G1|^;@$8)H8)@gXuXt+7m+|F%JNG#CReE-A zBX$m*K4jDPxj>fdwDXCYfS!sN=*1Ach64AG2$QoI&S&!8qbW5 z3jo6t8V?`BcaHs-F)-t8e~r}g^MiZGsw>vR*o(ih=4pxFO^Gw^&nmwxp>;h=`Oa?q z)Mt-|YS%tpXhLh{3$i|E(u%#N?h1TkdntDMX4l``h2GN`*ghFprf)!J@_Z0I7ENq% z&Vb)SJ)A3*2-n7*mfxN_eo_=1VAodvh3g{2#2|4HW73RqAXsn8G-mum$#2&Lc3}-du5O;oo z{O0HGS`E#6*guaZTZxUv$nWQ^A?6uSjM~fhke81(_JZ47`C8!QiM;)+Wuv|Y;6~p! zWjt}@Uh2_z^VsX3t2rWl-?Qd`NnFjGwc2WX>;2o?Cr7s(T@xATy}x!~anbZgXBM!Q z1|Nm<2v1c)%lhf2V=wc{T1&E?vn5zFw`>o4J89b)=a02#Z+L#gjW?a(Jk|xQ$pPk* z`u?ZpvIX1oz}xjaXRWM>4I~x+=f0NvcD@T5raw`5V?FJvP3G|Db@Kj$W9J zS6BUZk-M+WbfSN(LYgqfNiV-JeeC@QE^oh%oLBOFL0?8CuaZ;Ap}vhJzAwHa>(Lv) z*D=O?an|qXn|B&-MBqW2^QyJ(QTJ=$OV*xdekBlS)*Mm`bM$B7ea-Ex!uM~ZY*{Vq zd+^^|!FAa@Q`bm6wX8`zOB~=v>M67)JKxuF#-?67i_tTc;t#dMwSYaiDsvsrD(Ccj zzuRxw0L33?fOoBz(>i*|UX*n+nwPb;e#YyY`elbWV++_1apCuKca(q~HZXtS3*!a+@-`gO)a)s^Jax-YfKyyCX*;PjFrWJ~#kL*?xxpWxTC zU$53N>;p%O&J8->q8@4ocpfy@EvRHJNO%-}EBSt(U{RTxK>iX(e_b*5cc=fW^v)il zcXkTB@tr(6T$J7!F1>wPi|(5k1GceVN%Zb!97p^qmEQHD+s*WAnBK$fh~9CJ-lDrl z@A^{mUyR-rqv*~0DTm$>eR~vot8c|uWRIYCFZ|tEsxQ=2GX_r-c|7qoV%=&}u%z;Yo;{wZUk{$d z6IZ;J$`jd+t-J_NIAz$o?5rgV*B26lzWBFFr656&i-+Xk%WX((8fA4_o`m-}Gd35p1d`FM9x%M;R<~*I5gUr|RJ=xRH zTlB-Pdm?5r7t2``v#2w4uy0{8@$XvFTKFz`&9;xcjxSvuduzqQFX5L(_&zA{q`7xd zkIJ=CE{ihMGw+}9zbn1{f3gubP=Aavg;w@j$>sWrSXRw7R!)7gK<1cszt=E^&IwT*2c;*tFwI{ikUwtLGS|6CY>){`aNSkz_7NJo5H_-&pgJ?wl6$ktIF&$1mas-_Cb> zdg#-oUOQK&w8LWL{7)ARcsSQ_UgBZ~fU@;}*1j&RSlG3~qtf=FX0@?k~UnpYh2U3$%l~ zBN65nbUi)AB(LKBG``u()D`#mu+T@wJxADespR&Ybedd=I!ADt{`aJn6BEly}Oa6V%V&vet4J{)JNq zbPZh*LT`7LW~Onzr+l`ij6^r%4V^on^ zkUeL{)MZY({r)auseSlM`Bo@P{Slu!c%?rNh6d(ufu99$7~C9Z9QF0L%8wpnFTd&% zF8Ic~_C%DF(|+%wXsOQpYy~&3;4Ab6r?mI;8w_OkZ-O?=bJwrHPmm2>flpXYojQ*n zJ>HMcN&IoxH@F45$KgTwQk7gem$-S2#rG%3-;a&q8%X_|8AC}|2<}XHVKICa!I!GU zmx@_a96LD|JE=2Z_&${b?^E#TPtn2P^f@~Pr+m-AfoCST_4U!^9-dp_3G@y7*wJ6q zRk+8hlilIjnTvUoGllg|G(ktTe}uUKt&dYo0Xb6H{4DB{eCDOp{}amb9$od17oGEW z?Rd($E6%>Ir=9tCrw>K$`bf?5iC=pEhPCDLiQdh)hxO$7tkVpc&sP-?zi7#f)@}dJ z7UVroWBwgoidQg>-*aGYv&Qn1_ivy6Jba2Ce?sGU)jwr_hBLmI246I?mR4ieF!ba6 zjwidJUmNR++t5E-40B10bBuVMm~o7;nEgO(pqBAiNzt@Nw`^K5u(*Ku8~H^a$)z(6 zL#{u>`0M-wU1QG4xcwhXU%P&c`Y^?VbsA$V`2V?uz%1Il2Y)ORxNl%j;#V}*2BzNo zV*>|)X%63s2exDh{Inw7oN9xfv11zNa3=mSQ(6Me9^iV0cwvjycJaQ(YRr|79_1>& z40DYPx_#C_*Hh<$~{8=%F5+sH{xv^UR`PkTMoRad>Be+_G0oo%@Uds{wrnL0+q?T?I)-odwVFSa3n zN0ZLa+=R^VebL@tNZrrV&W;H;4&ZkGiLhcdA<=`(o@`66CdyMzDT^y zboRvl4YV|k?>p>%WYa)iQas~mdxXY7aTtfW7Vd0l&syc=H3>|%j{azhuTkra4(8T9 z@b3!QZ4+lX`#4WMkcj1fg}&F6Td@dnE5yIet2&nwZA-+h^j;qcZuVN&3*H{ey#{UC zsl;Q0qpv|LJ2vL^3tzeTgj(Qp`oGuhtN!;e_OjJj@aGfQ?e_3&c)xnai2dqn;}C6Z z0f*w9X0Fmt#xm0rR~xMRF|Lgk+qir`(lOi(3X73 zHtYYA!-;cTIM1bk9Io>#oj4Zp#-Q>apg)Q4=NAxj$FtLVMxB#6%T8xdOyD<_-$Z`U zYWWTPHu1X=oU|~f^?9cRU-M24##7i!^%1+a6Psx_w5@%t9juvk=8@*ayvGt}Af?&0 zA!KVF`KUXPC3#DkZ?LQUl05-yJeSPV8gz|k#ysN>_2k~M6aVHKPwu>VJin557jXS7 z`wOn%e*OgC_0>LWzTn+5&YCY<%GcoYHJ+LCuI0V@(rjC`m-9Stxm{ZiYmg4z^i=1`xdVQu?d*A~r%yOwFq zO_S}(jlFN-FGr3KqSNd}Hbk*UXuPB3*)cd~yuYjXdY*^b8$6GAFIPu?o!sd?GehmN z%ZeAzB=LI${mkx}6}z2r6b=3sxt5RJZgZ{`ldnl_1UQ4+ZA1IybYAlUU>OSrQ=dIM zwkuKJgY3(y2Okm7lzG@fx-_n)OzG^H6Gxia_LZSBQ|IAZ?ee>28fM3iC+fLR`@04P zsb|`}!_*UJETYv_2Ckjp^nQ=OF`NXauYYjinblVDA^6zhZvGHS2{<#B{Q5_z7e0qyA4O+FhO0?q%E~_t9UI@=O|e?C54%7tBp}{3x2g#ov;t zmr`Hb@z8+uDm@DqEK%&v_07c2YfTWg7o&$+iOUCEkQOectxph&5JzIQJ z+-qcz^2G4J`z>e5bON*Lh1Qkp!Q{8;;9Ip97X6E-@m*?ejBqX>ays45|IqZni@-IS zo`?08ADi_Hb}46X0rr-B_S98#4reEHl9AA50_ZY#p}*{5%~OXCvqQc{>TW>>wQ&W$ zy+iQQ*D&yo?rRV59=2}9#y$+M^isvww9)@o`qDyO--G7AH=Fgzm7HfXm-?^eo><8i z_@MuqNom6J~VdpmHSyZ7fK_RL%SxpC5lzm_ESm+`Ikn`wWU z4?S>j&{OE=I@TUD`8Bns*7_WsrZ$eO&F7pDH;y`44;THho^i%KG2X!m>h;f?OdI@qQ&9Owx0vD@*-41xB4!@ zqsXC=`)2Za*UT72B%ceMIYB-&S6|F!oi5*z&Toz*w|>k2apoG)yJ%OwevRYs{OHKF zyn5@gi1Z`kkORzv8Fsz)#y_g{2nc#mYYf?b%(?^^lGY`UYF#qP$8~kz}Dz> z3Ew2IOC~6XJv8D&?$h7%)+KI#x+mJL@b=z(%Nm$X9qOCPpCkuca)16@`F}q%vixxW z-FReYpRM6vzqOaOjPVyn84u#j_adX$mobiR4!FyS+vtUtg4o6blSRuZHLIYpPH^Qd z$l+|YEbK|j`IOOi3>uUi0k^gJkJTF;Fu*=(nYa*pM975x{<|df3`o=UdNuP2Wb0%$6HgzH6M6@_tY!suF65B+ye#RdLeP?`lf?E z1^Dj3p+MgW%10-36t^&5`8?}}w&IjY{$6;usMD=yHudayXK>-y$sr$3@?jk1TlGKh z6%XcK%`fNcIbOzYC*_9m@7Sp2t35H>S`V+D(inUzCG?K?s1;ea0vrL4=)|10D4c0s z3C`N%Yf$=k+|^jqJgmRmhmBKZ>D|eWC}ymhvJF zB7>z9p8&sVvy%E*uhxEnwa6!^&qAKdCh24BeB-QralXqt=dC@AULv@^l^c3T@DAsy z%WRu;bZ}c)5}rcfD}Evo*GtZ)kvSKCIzlg83k-LfoFi7T*0}Ixx%w=5@(Q}CY|pQv z=df1mdKtJiPRHR7>4?82XF@l!#rTcMMdbEJIMf(N#M?>wL|&XTOy3#2U_XBI?BKQ; z>PI3@>^bZZA?}HB$+7rL-WNA|UwJF>08!>6&E>%x$-gcgLG$c6U$iB$9vVrzJvYAhhWFgiw}qxZrOtkv5H$BDHdwW}c2t|^?tQ}OC7PeL&WWR!v_J!Kt$ldL zmHpB6<*odBcaJNi?gxGBY3+TIcjzc{^&I_SGuPCB)qY|V^Zd2sC`3o~muAHzD~_K) zuiiraOR!a77gC-;7rwGqZ@Xkp;6~?p75nd&uD93gJO7uw=E@p;;P06mPwbXW-;VX{ zaq2=&Ame{F*8Ww^uX|ZbZg>kHWcm!hsGo73_0FXK;6nXU|Ks2F z7Gh^{)>`ySd1dRtD|=VlzDfPv$PKF~H1II@k|EaB=#TFGb)kU=-TQ^1fd}0CInafB zUlA-#5D+VNa|C!>f%wGKy;CYjSoA(*qBvBiBKyN15e`{&T9 zDAV;5${@$O=7TH6nQNZi&$ABrB2iD*UjCOXSB$!@9|T|e<_f+sur?%o46KW!%TPCc zP1xj;*5>=k*=zBatd|1+oArr)Nw#dDt%T0Ew~l^=&{5SVl~JE!yx+l^#qHDG^hxFQ z{#c?i9&pNd6 zmyFX=+WB+i^eM_DkJI8Y#%Tp*)ThJ1=Z@1yd6qm*%lJQeoQNSafRn)X<;SiNJzA)5?4TywxZ4b9`-E-+@N*c_-Wr>BmX-7;yV$ zWn#SfuHqHy_DTPE$kXnA=i0kR#?ji^+iK>aD&_~t6w!;|@|{}R?q~l!&#DDmJv@fK zfsQ^>-ygHSOK%wXbM+m^7C&ZvE5`CWIXW=DR?c}OUv!!F`K)YJZhDlR>XVPP6**S6Hhl=7h7a+E}-sYbs}|{IOYWKhS)NE+csUg}Qc5 zLWkj9a}e8Q26nQ`tPJLz@?h1>6=kJ%TB>Cg=S{MTA5y!V&DDa=h2B&w804et^jPJ& zms%N1^JcDCbg7lrUsvC?p64qIZ~Eg*&dbvJ`d-SnQ2sFQ@}3F(u_&#%$xD3!-m5P1 zcg7U&v=;t^7EB%q%?rK_jy@0|CMV!^>hM29yaeY$cvQFD-G#1L%Ra>l)$h0M`{(jL zGUrf}pS)Oe4_ax}T*+5aTLm0pJ3CeRvcl7><%$9DkUvX(D0uINV~QWxb#8Fc?byjq zfKTCS8tXm9_0z`%#0edJojrt~2bL(YNB$W)b8@nww|mdz6^ZWa*#9k>Y^J@=lU7=Y zHlyff8so${Jp!(^t`FDD zTv3z$%_cwNp?ZY-&tpRt4fyTpM|@u25$xTkf;*#4x<>e}h4|aZc&m8j&Z(!i^GzRn zE>nTczoEV>Jo#{w_C%(%`nUUl%@3Y7Q>G4|x%g*g%s!>En9Y%Z=I`<8cnFq&ee^}%B)z*T97 z&aJe^5pSw|Og8H^Z`+dV{-H^0-TDbun)vN3{I(t&G`Wx4U-_iY6S0CPc)yYNdBp$s zW5pwl69$-GQ?2N{pp3O}&i1BdwC2$OuNzf{*` z;ERl>E_Brhv=B(}c98n3FSUv~J)tiD!TF7O6RpSQgX{Y}8Q^?+BYgYptm`JmY;Uwl z{PC4H*@Hikee%eQyMd_%9au7?#jG8OD?W%_0G)yV+b6TX{tKM>_PTd+**z1GzcIVE z1~`1=D{k2k*zP}9c`TAbEa!&t8K2)!mI}QSw>&BJfqnj&?8PWPP-vO*E#s2PPf>Y~ zDX+4TDOPdRKPmN*@xHQ1dIxst$*GZatGI-i7|A}LMf?&lHE=IKkv$GN17GpoiFGUb zQS!P~{ILaDqPQH^_t>t6&)j(QIc)p+-skha)VKU|pZ)A-hxozl%W-MO+0)$vU1&e5 za&m8jK92l$a9bNVnU0*f8~a2U+z@kHV}p+oV}CH%7>34IR?RP(j*N2O3I3LZ?3c_G zekGf(V*csW8Y+SR05EF|LZm;N3X6>Os<4e%cGmLB0e4jW^WQZO!6ZDwb29L*r!Y_2Tg?o1n5uLH0QFPKC_4F@_ zdwpet)R|)6a?f+SqPfaNT@?O4WM;6XN7U~Sn;c`DkFO@7D zYtIeha7h0wq>lmOl1?I@>##j^gO^>vg6*%k9vhsiWA@Sq(WZ~**zX?8yM)yxzL2hmr`=DgUn z2EAkxb=J*7N4&l{H^_M0PTtyj^4vA@O@y-2eS(y|iL%WFj!u&g4B#VkH+&dCR`?2D zY+?+L2JO`QSE6g#__hZRIr|Pe)64EBpPZ?q3>`)~SRHy=AGXa(+e()&p7m_)PH;CL zeh{p2tN(HKc;)Ea4atBt;7QNJ?+re#{%Z{0URlcdIiu|1<~$^auB8jV4sB~bmYt># zJf87RP|o6gA7@?V+8NWimz@#0o>@U$>s)^0_#GJM#9y>zvKJXYmFC$nu!zP!?45r7 z_puX26Z){?CZqIw74L-`^w-R%(OdoKippK1=k+|7uQhsZ&9Rf-K(LIyR}vQ(Jy&{5?DPK%nqEQK__Q02O`=R3ePPhL_mA1cU?2DgyOw+r6)od{Yklq=JE;3W zCa@ASd0@I-E8Aimz2H^vq~P1=;j%NHAPdSf!v61a^yrFa^g7c82bioeh^NnJ~t1fyB?*S_LH`E;;-+9b~-ul%B7u6 z++#LL_XA5QG$UK~O7SpfSO&?-BU+ceoU5_FXl**Yo_FR>=~de2sGMfdIVKnO1o7Ql z+&_}kRwU8ZY~J0RXp8tr)0XSgc;h$D9Atgd_y`i`+Bj!KO#mL{rf~KLco`F&Yk^}^~?CMeAe;{=?!D~2TcEx&LtE6G7sh`7O!0Pr0ntR&*N+qYkBr| z^b8Y&^-1z4=fnFgv%>An^J#VOBQBctO6x3N`)+V4o{~RTxS0knb(IVlHJ)$!Xh-n{ zDYTJKEM+xo_oW5nV*&hLR$`ypkp5!ydB>*mBj7ql+s6b$0^SJUY9Cz=bpg}zR$}ui z%X7BN*3?N^%~^+mZ$9&r;1fJ!>Dh*U#)7N#0&pemcXrnEUZam|J&z1$e%9V+>=v z555lXuR<@7{!;LiVlXmlGR9eH89TP%qcUfGYJJf43UeXrgEo!5BL|c#C9ACfygR&c z{$6O;{>oWgD|*TEft{HcHs@TcZvLOccyzC}V&%|WxBMu`YR=H90B?`_4!=K^%2`SN z^)>6@uSMtz1HR4JT&rq|Z=`ua>x-Y@uZp0{>YjDQ zz`M%aaXJx@Q>kp7c7amjS=xn@~8g?u(<8! zjnBKI0ex2Oatx8EsR!H!&*kMxmXEQ^^cHRG5fU z3D23dU9yg`el}qHW4@kH@lxWOeYQU(&+jp7l3^HUj>HN5%(H#9t3*3)3@EWF!tK!i z)&ZntH9}o}fyd~BZv5;+iumj`=&e8bSC$4#x-FG{9)>sQh{olRK z$@S~diF*$1utFsyaf|DJw~JgdO* z1#6#!^2KH$?-l}Qn6XLr2fl~Cc&VZBP`h}w3iu9q{N`NKn}7G(-Yj*(9f~P0=>!|i(-w1%q z=rO@hK;LtMe|wQJ*~Xac=V#%EzVaet@;WwH(V1lQmoEV8SYr}O8WR^zcWhkvJ~YPI zkkjzIu{n!uO^z)ad*9~J{xs$z&XHrh>*=2>W8crcbn9CBs&jtO0lGTj+rc_dtM<C`>YiT+o7 zU?r$4^9wH4b=fSjtC$cg}Y-}{hjesaIp*;#$BZ^E_)Je*tJ z^$2rO^_N2Z7qUUI7o(BAp)qpla$Y(4TG3Bt@m&wLZ_UHEqGz#RuMM5ToWGF|d}?3U z-%QDD)Hwpm0eY5m<+_o*{|Q_hwYI@#)63i*LDmf0C_G2tnb=Zq&XG8Lae_V;&^~n5 z_G$1EqK~pU++DMve=G50syD~ZX>1@CF&lhqzX`n7bsO}gGaOnx*~2+qDSL*TuH=f* zK8C#=#NmI8a%Zt$4DzmlHJoJsGM>>d;y^FFA84$#=&WZ&=cDY5jJM0%!cnKOt7PMo zaMoyw>mAwuY;!J0+`EANTE0Hk)D`X;e5`eRoHID4gD;)aTtL4bVD6OO^cMYd)>boE z15Ia~vf8GAzi#5uZExlgo$0LnFgy4j+w|6ao>%P(waVXPvo@+^d{`Upv#~kXQ}5l> zTgf~v+%Dm>Wa>$!^ForyqDQ_8Fv5gLM-b6RUQx&ez%v%*clUj8h_ap7;rSz`KUg%8R>Pzq= zJQDlde++ILm>n7zd6use=VH^al@H)U=b`+2D|VP6x##LM(l3!qMqi|F3zGH9BH)X% zFT}@uZuH889_p6+F6Ur}6F%AySMx1;<6OQ==#9mS19o+Qv2~T~;1c#xYrR}JhW_|@ z+R%C1(p9olFZ!e8VduMp6^`EL3%d1>)G@My#PFV{|7lG$TK{_+KZI+;lW$GuVM`WG z1iyou{732Un?Bo#qn937!QS^>`O*_?v#(V2YRV+V!F|xctUXUwrugLa3XhQ$r&oAe z2a$Dyv+d$SX;MZJuB@H;u^l|mM}OJLd^Za`jsF>Y?X^w>7yRD^ zKFWVZdpY1p&#|$!caeuTxxSk|gPofBq>*}Fqn`V*K}Y8tY>CWiXlceiwiCTT^+kAI zx1ph>4w^W~GY@sDzJFJJnvVn@zYFD@cFW{b2KXQKCB?#B&HO5uQhB$Tx>Qeuc)GAn zycf^)e;NN*CE^gPlHw3MJfZg8;7IsPwh!e!IHlG?-^$xD#q6)kdu~c?hvpj7_N-Xm zucjcgqD_AFjc1lUi@40h{lNm08`V5-C@^OdIB^|A{;#0?nxeNU&{iwsQBvw_SAL6w zv=IRB0sddAwNTH*nC6nYDb{tGn?}4l=*S<*HOWC!E}dMPNp(oy%V2K1kWCJq4PEWY zq5Yf5b`Z&)Ew@WQ%4idPh#o4ShZg#q3jQO|QuAV~zd79=DCB+fA*(;d&N$MX%^JIE zO;I81?MSv&)QZh(^JmA!BG5{z?LU%2*+^AY(K6l#$YrfPn#pz*i$BBPl7sN~RN5Te zbP2I4R$C>$u>kWGIzmkc`w7E_=Y3}HjQmc*g~c94AF%fBMt7%vK! zdFjV-zAfN?=~+4C)cTy>^L$l$>A)+y$Hjd>uZ%3`8(A*ol=~Uw z{tmn;_skz?FNJR>Q^%{+`}^I#*kSTW_M-PxkvpcW>T^YbRoeS~$-KZSt5|f|OTIkvO-ZysYY4ledO(h&{qsJixxAeBNnYBRr|C$d~XNd`9`Fq5TcSq%00J z{w;dlQrZg8R+zTrlZlM?m~w%na!#3<^Qvrbn#x_ncWPVvO(UL3jZ;1|PH`G(S|6$X zM~GWyoMYROL#L7Tu8b2s4BLsFHKgeM_*75pB5Z@ko{ijF!CFrAJO_Cx8=}^AKKS0R z^NjHku3}ulzw(V|S~u2rJ(1A&Pop!OL4N5Q&yCPI-yC|9{enC{;L#qw%-}l)}|SKsium333PcqA3ykh}ItmL<1fi@N{!4ooSMOUNN;aztKz@Vij$Tf9deJQzrl zZ)dQliSJv0MP;-u&LX~+^SdPrA5?5vuyslMN@B|nGT+L_BHGva1ucBn%1`GPjE*y{ zMSr^Gok7Kn8~NKtT}y4xfMUE|`-;2%k}QzlVRPG(cDGID_v#(sG)jzV1lhmkL!klf zi`zka0pbJoe+%+geuo{%(mmjqTuG+ykv|Q`H^;$`sgpjdY$bIHpO4e;J$%3AL)JhQ z-yu)Zs{S+_L#}of(9SX1R(WINPtp-?9CcpbUgTCZeU#;X@Qye@y6#v__uP@K;-S$4VjTEKT|!|utCJwkbvkv~Uv za_KE+KIv&atM#qdioN(#<8v~xcy}=-qFeR_%D3=fHuDF3U!FRFvs}mr+Hzm&c7N4f z`%CQ1nh^32-c4JXmBMu`2`Vfm|eI`c#Q2dx#7i}maqmh4oSRpQeL>{Uf} z*Rf9(AIf^>pY}RrIQv(jdF&3r^7o9Vsmo5tSl|_n8(o?l9e0}fA!}%Uc$&V%y~L#_ z>Xt9m#)izkuVP}bV*%oL0?67pa(AvBBA&}v69yI^`?{*>ODeyXWz|KeYvA_7(6z?I zR~l~jVW+bgQ-ZxR?>2qN8S2A!`XJm-EG-}&q`vDPsq5!lf64f_%$u;iZ?ca(F60oT zFA@5pKEZo6E%f6fz;$5!xZ1_s$CrJ4!LmJcqmVjrSUXUXSt=97z|Kk1K7jMXroySj-@tb`MvLwp+kBX97PV~*^q z=6nSou{ZwDgo>fRYS9q3pas$~x_VvE&Pox^MYH(Rgk!TN&*yp}9Yp#^vh7gv z9vFgr+qKDjPhLv;q~|SP{)Uz4v9N&DK zU>9xtE3#4NC%=F_3|~Oo3yvQNJAP){UgitM1GwL7&y(s){{CP19-J)DoG7}}{sPf{ z0AGgtKQy}6^l_EbN7)D@zu+%3XN={C9p($i&odfFnh)2q9#^~au}2NAGXDp-A{QdK zS_rOoVDEdF{!7nYlc-xd=`LdjbYdC)>7e21t~arjkL*(-Z!dixJrBY*W5jPdaWAr~ zp2bi60`2{C@32n8*re~F?bD3OPHgR`(Zw}B6~vZ_KG2I!eJlNzcPcrv;m63-itV9+ z{S!j#+qn-kvoD@`TTtg; zC00n^68~-XCg|HN;MqS7nVYb!B2&8Zm0RLr$F}-CaH4as1Jj(k79^F+rd)_RBvW=$ zPHnw4#oGHEKiRowfPco2IC%0gLyL}$$%kz-yKOT*l@94By!WqPzfR{qUp^yr4|G@2 zg3sVB%`2YFBU#v!`j=uNQSA=s%;I;?1Kka2nVo`wCw&95d}3(k16j_g$a zQY)+P1Tj83^S%Uo>PGHWr*KMpL-l={`u4)>QQCIv%O*BQ`2INad#9&keJ?nOjNtoh zY}KV(>S?DG7!I(O7fsv=4atX)4J@*cH}GD(cKDaz58p$8GkaPm_!`5Kr47CqKAzf= zp1gHE-px(gYwYqRHi?Drpu2_f^JpF5LzX!@c2?Uw;7y@^mA#gGy;qy!lh^sC)3IM9 z%4f7)K^gkY8kbnUF=C8eo2zSQ7LErG%f{l`RUG~oPoih;(|f~TNwGl@(FM;>!h2E4 znxu2<keoXSyn1ke@wn!8Gh9eqyG{i7I==Hu5X7{(!}?S2OR0p#OaCN3PS(Kj+XU zpNQqF?^;Mdl4V;yW9AEO>{{#b5zC#~R}atMdB}==9G}K?_EG)lkabl2C!4WyFa0lk zk^9NhB;De`m&f(Dlz*z|faj8RkI%ZK=<#{{7GF~2OS?3^rTmhj&O^b*rRZ7UHkdbH z6?4{ct@Ohd>f{`uKIOO(p8mz)$&s0(V_+@*#-f7^aGwnK8O9x&mCpTWHZee*#Qumr zE#{bgvutwYX7;V3ZOuy?X>T6B++%vzw z0~+5--Kyiis6)IXKX#mN*}Ia~duY63u3|bv`gNYm9^69R${jO0KTAIOW6HouRl)e7 zn5rTDBPnhPnlN$1r^(B2>PqD0znyghv0q!XMq5PvS>!v(A>TwICt@Xn0tH{;)8UJ<>)ccc>YCrNs8$ji5F-5H3qjZ2Kc_yQ8d~a z&+-H8Y1Mevc|5iE)6Y!C@!{XB>0jiv_7yOO^}k^ZnOm4F9t?v=joH$JANTE_r^m-iY+zN9S5;#yrc&%hCN3&A$k*z6DS2#lPI_$uap%qQ}W$ zfE`Nlf|5A~r;NE|y7Vl)XMW@Cgv2}g?Y`TGJlP75C?8vtdDySqL+sPZnvszzICY+I z3UH<}?#k;K=1kzKg2~$ja{!p#|0g3au4b%sh6ePRwg)^t&ixQxlj8S8Z!5?ZoJ?zn zl4xyozUUm`fsq>VHgg=)qmWk@6`c*Dy2Hmmj7r z&JrbDv$VXP5De zpZhFN&t~zApZhFV&#vGZKlfRdo-N`TKlj-*J$oO|__@zg_3VQ@lwDOC_nevd-y?=$3V6;_t{yV36E~Pq2$VW_(B&P!k35d`MKY}syZj|jGz1LxSkP* z73JqX`!7AahG+cTXTQ?3c|7CiK0C&<^Whnp|57^6<|%e#;LXrOntv3_aAs4q>3Qav zdSXTnQHSP_xPuexkKF$XJ&^ykhkBTUw&_}VocM9>8_=sN58+34?-zSx|HXZ& z${ZS}__1x3yFvrsQ9r&z&R<>ILIblkCDH`xxalvjPpmFIu}oj9dYju`C^^i zn>rV##E7lfR#{#;fUw$Dc}wZQ*L3|v>A(ZJe!6s^k*mQ^(z&F!J31q|6|Kyr?Db%c zzc@w!309V<8v`(_f!&tx%yVg-Z`aih|*6V$~?JINahCd#*8?N@Y4%CcmeRr;7 zKm3ma@{d?YIUgfNY>Z>SAzmo4hd21HcN}{f#s^P(Cj{?6S7hC~FihM-CVrth_7@d0 z-%Fkr5F6_Hex3a=$~T-Dlz)tMV(>1$lYa4j`tm%oxrKG9AD?*%KE3>g<|b^sd-JSm zr=rLb;(*DCZ1vql-{LQQ@rP5--Egd3aIU%b2z(w}10JH^{HD>{e+@r~_tCHSwmh-D zJc6Bj4YoGT(W0T#)T=eHP219;_E3+rPap$(fcEX=v=x|lnZb3yS_y8$n%4^)`zQ8W z_B6~SWd$G~jd)h>Z>4QFX1Q{)bu@?Z46k-#A(nYr$6;glD>oE5 zE`*nr^aH%d{tkHFovZULZeS1N5^TG!jqT?~28wS}LW!7LbkgKJC@Fs*8hDEKO+4=C zck3?lZtX?h)nE9XWX0ryX|a@U$CenjSN3y;XrINH-Nf4SX<*r$@RM#%@{@)eK5f>l zH#My6zfhTF4OUF{$Qo>z)`Oveo5Ak|=HE8X4H~FQ$SxnUUNqE=J`=e^J_Gb?a-Bg3 z3oGw2dlUBh@MQ!0!XM&yspQ)`ux(b}HS*o}67L?@JL>sv;{R`Rjcjyst*Kt3d?&se29Nn(_e{}A@p>O%-VO<{z4a~z1A>8GFySsLci>*ZtJrC_fJ;I-} zr@9{5+X4PuSii!z9X$II*XYJi_jmHHp1iU3i85jOb06BY9%vyOBIG^4&|Z{JIv z>3x>t?|RdJa8@h~v8Sx^$9m`5ty+8D+u(^k_o2}K)9BZ#ZwokLUHDiBIldOq*M;lX zlH0kVJj_~!`33u!vu+n&_pqi~3XFp&D;sW1a2+-`J~wL*Hrb(SZ!O zpK__n)#Tv0%y-q{rlnJ7G^W@oPX!ZjNQZIj)Ot;IS5ZEN@0QvAGL`oMw~sMOwNsy( zoA}P5i3{gUFmh=HcD6)5BjM0<>H`|fXKnkhW8#e^)5wj$xl*5p&NMdj9l2%BS=X8C z>c3(FchJ7hYZN|rSl0ApTFlG$K0n7}b(r>&^1Yb$Ruwz#H5A9x7BH7DPqcL!JR964 zofGM{kxx0(MndNso8BE8B7V4|%K2d0J6If3KiEGVH2v%;juE#NT#`==3w64Cw%+kh zXnU7D2-g710OgC_aWt^ZF#V3dU;8&_w*4NRZ+P!kb};U>$cdSySjnInYj4R5iq&xS zs6OO}=~si_tjCkTb-xpR$bYClUMMI3nB!OQJ_nzr?{mhFepS-1_uvQhJ7bLTlN=FV zWy>{i^$h!@lE-n(_8JoH?R=l`YVcT3d)>4r`k~WFW0-0122O(Yw5PZ&(_X2A2R&E6 zliN&|pBgXE!9;sK!|m;$J?$I+i`%m=*51fcHg=EOz)5E_-hP$XmI*ST#h3{c7DL22l_WFL5KLj&ZB$$N(RTGefg^-85mlh5O|OU%STxnJ|*LgwhT%>R|x2Re|oW`0K>X-S;LQisi7{sB8t_gHX_w$qCT z6X(IUi4NoDOpfO{lOwzD5Ov><&oP>?r(5(R6FlstZONbygA2(h%^{jQ_uZGhUC-r@ ztKgmLCLhJAzfHgSon6$m3qOuzYP~0;anipzeis8{l8-29ZhO#o(4hzMobX_cACHa2 zI@L{%1AQml>3JT{U0jZ}j&l2`eLNxTm-3l^9DLrzy!{I~|O*a8JDp zw6>Q0bH^IR2hQ%K9@%Z2dK_5-uFA!?)Nz!(m8|hI`x>Z6 z&xJ3+t3Hfgw~RGDiqV$tSx>vS0Qa4=tM)n#+~>C^7<*{TZ6jGW7(DvN4-C`Yus$I? zO-ty?=+a62;OGtRyi*BoRJZz}{-__W?JarTq<4Q$d;x7ftGMO4=s@=~USa=@#2Wja zT5$&yao~xE%ZbX>?rqQSw>aerl}xvYh%VsISr!YF}^aQ_R9}j(zOB zwH=IK-gI&b>G}cA`2nAK6^`#C?^fr3;OUZmUU>4Y3dF1ea%(03ze;&!o%hzxfQer= zIHjy`>cVVd2+;?6R^!{{8lj(6{1jh^Udo!)iAx`9$F^E6+io2mmyvm8ob&#i^#J39 z*}J}LCiTtdw`U1w8c=2Q0|-aTy7M<3UL<$`&mOB zU_Y1erS(ZBeVj?o+b8gYq;Vfj!*|G8Jmx*$t55#POH6!bN}9j1jQ^|BmJEcsZ^O4E z`Hn2Ez_&KAj6S|g9|TvNeQYl5&jY())7lX{DwZcl^(!vyt&@(PC;3BLMo*UYqt}j?<f6;Xw~xtZm;~`#nKSifY zbLa+{5$wg*P2JDR$4xwBo7!UjFIGD`Cq?I_C|?peS%MBe$=8(Lzvxa*DrbJJE?^8K zD-~Dqpz>d&n^Pb8fC; zds``|b2$CTS9Yg*k^KrcZ#-%qZziNp1e4 z(LZF^9a>Llo%bUAo3AmU9~O8~Kk~V50e3mXKYWZU_8ybZXsIE@8ioaD=_HR$(kSJ;2GNcm5y)pvWsyeiryhevzZo;FW-4-!jX zJw>ooE{ZS*laqCxa-nRsBIY~4J<)u#)e0p3A3slHxYf!}{6EgTmpmV>+m97PcMUWr zdz4E1r=?p)#x>ac^aVooj_SF|W010K4QF@av& znz7^BjM*!{6CEN$CVR}-_VK^?KO6XGfgkp9u6JZmM(~H|V{vi=Ne)^5Puz15Ji9iK zsZ$+(vzU*Dc|0R{8|_K9gq)Z$Gp7x$3&zZ^?3`_ieh(ix=Zp+s_md6gIP+VNcU&<3 zq!qh#aB$m6u4hUZr#Ye4zSZape)6uc$0#z#YOVIOU!DFvV)|#!6Cp38)xIauzxU|h zABoqg=b7Y$WY?}yWn1(=c2nrJ{g0X-z{klClOGP>aVOvDUC)*e6~@chTa>pZ=qJw{ zd(zw48>fA4T_|Y2-ujp}YRx^z4_}!Wt3tvvXp-{T@Amee6vFg1()IJFr z5E!qyWKxX{U!O)#b-!P<-b$DK`9|-|pxSslk8=iShg=8PC7gQQ`ZNb@W_~xc&-^Po z5xto6$)J_w`F$?%Rbi{wJReBd>pw*Q_tNjTIls-ce{h1abt)%@*58%v9XHRD_5{m* zSj2Z@wd>CL`aZdBwOL5}fgX2{K*WdBQ>eYOC1AgLp>oCxM?LV7Z@f$_$=r zII~tf#o1u5SjF>g-y+q03ACs9LKZ*^^#7rkrE_KlKS%o~p+h~x?pti=a+7W7^28G5 z)yoL>@V`r+KV*MOl(MSpPU@1cPjP|dG~M!bU>@t7vfd>f#bv&R|L7OQl_coV884R}3@s#R{NO!Sx@g;_Q_-kPpOOcn&C#^eMm*S`g$Z3$FbT)E zGQP~|IT!jy~NB`_$&L$Ttdh#lhim&BUK=2+e z_raqxfJbqx?%C__GIr~h%xZjhK6^T6`M3AynDypB{91Cg@H{@#8Zfe@U>Mg%7oN@f z<%AvEz#0^pJuo=Y$>Ag2lXX`4X?#K{it+JI?>l)V=f~!uyC>jKUN#?a#J@YCbuN3E z?nOV*Ugec`YRx}l3n=1y8(n_x`ba;qmE}{xTjb!?jlHv`ZVwKSrmU|Y45*#G?uzE$;2WjpQhvEV?c*njwB(KVER!Jb^!d~i`;Bl||;t39y@IZ9OS zB=>#Z$-%1z*ppp#((L~Wvv>P@_&OEu{gTJ3y&9fZ9;VmyT~~^6HDnE3>e>kk1ji&8+f-iq)U&!@WhFtk;_l2Ks8Ip%+un;4jCu2B~W)zgyEb zJM|$ilzT$;btmd$?N_np(4t1IY2@eDnb&<+q-_5@@-Av$mae)s(a$)~su>e>o-XAt z@q_b79`Po&FXiM{JjD^@VDBbRv2^4O$ZnM-kNpb&uj1=kZE{EFga+;+&h90A^d5ZW zrXFx7SY{IUFMXk&wV?L*XdXgOV!w&=KEr*_cirSEO6#z}Q% zL3?N53*iMjPv0(RH2&QWwVouuYzXH$V${w|CD&Ga0XP(&sE#i{hi)C>5z+TtJEc)|>HD_C_orEkVUbd?z?!b+F1LOf511_2C!{%Rs5c0E3!g1%SUAsVGokAza-08+4hl9seZcpIsi~komTLix5Fy1b% zj-H3B(E2sn>ott4^~8{-`PfhBXD_get6p#+T+w&4uV^fs?Ybv#g~LbLMlT+Xvy$;y zHNu;Vv(^6%oLvbHhGQa~SoL%FUU=Tjp!~Ke5F=T}qyJX%^(5GlsI1`N?*?VywmtHl( z-idzU_+f_E=X;Qq3IA!3{WI6~(0(d*b=J-88C+fc?JDSV5Bqk^_$2o2%wi1~LC?rR zzd+}Cv`9J+`p!&bobTSd`wM5!G!VC}qI^85j@{fly4#@(`g<-$mtO#{gI?R{bD}%#kAFVf zS}-5m_fHe;J!7;KeyE;~;-Ig8 z(N=T&rt7dRL5@fi0Qdp-b)kI?FuX3;z(8 z3q9!E2I(%@!As5!Zqxo2^;bAu3O){Vmd0D~Aoe0-$CMwj0J)I--GhH}_LU|-dy!}I z_a#3o;u&+ofc!$T;e^1MWRCb*GRMH1n2$~zbMw$A;_Qg0J+D9Wt#+Ng7{HHw(o6im zUp6~yU@3Kpr{fcegT_X|9MoPkAuT`(3Z;^bGUC|JbcjH{|0A%{=c2;(3nF% z_gmNpnOpO!92@Q|%0v@(p)BsjTjYty|74fR2BGyPv>w~P=i;(tth`pYkvj*QW14a) zbux~_`61S<%eT|g-TE(<55kQzcIqFJOKq~1vcGvN=d_-}4`+M_y$QR1E7!t?XzmJP z2&z2Rdb5@s^1F`}H{{gI{`a=itbb*zQ+%FcPZ!~9)jqecv;Sm0W81{LDnc(~nZ+6LE8sV%S=%IF&x2Xv|+4!ym^IE~odIH+1s3h*)_&n^HHLdgkd*7+0 z@Jb5)9-p26pXVd`LLDP+T8;-gPIxhxz@b z{odtyc&Ojh-?b>w?-2fxZpKC9Rtim^mmAo1?FBaEHl~xo9M`{DkIY(WDK?_M>l*sO ze7q1EEtVg;q;kd`nxAd{@7Mo-lXXV}{|70XI^D_lQSyOlcZg4f&wz4-oXe~21;@)& z<`UEY%#uLr9i=>rpF4n^(ylo{`D(qttiJp;&W#FWVyDFZzPT#DsNjneR*<9RDDkKJ zBDSqLrZ}W^B`|7E()Ae|vMlNVcgopE4s)N88Ky4E z?x3#bA0Y>LzlwX&iSqIHfJ3(o_#Y}0;-0a@?tOlI*s!17iSKgyqn)^fEc-`N4md+?DrctY(byyLN# zjSGGgJC9{!e1DQE+6OhtD9IZB;yAr0wgmtsp z4s*SR_H{p%>r3|3nuCl5wxH!JDUZEpc^mDD1{U*NYw*dL=-}Wkg>SA|SG_;ZIVHMZ z$h}}nh31}0>-dB(Ygw7mzkszOtufcf^K3h_Y^!MFiWhP_3!clp24Bd&SPyz7nik4;vd=-Vj{|nWi0)8+ z2-ucFx58^Du%QbK2)@bG`7&#O=V-r|b!gk17n&XchL`Xg1PY#O`k3u&^Maes1PrMO z7$)13&EB6k_-09BjQ-$%vgu@9=!cy@@os;Kb+jM2&<)8KSNX$E+t=uy4ExB@Wvq(|;gKoKm!g@e^yy00 zKXJZQUxV~3d^L68A4r8B;`aDd=$Zb0e*YVckH#%*PcEyO)7a!&ch&wudt%LO#;~sR z@;=RtvaP%d4yd=Qg>SK;9Mkt%g3rW~FnkQtc|nhJA^}lA$U$nLM;-`TsO_pjPJo|0Iq| zbnW3Atyz)7rvjYC*}a>5_#UhM3F@qRXYH{<)-`p%2>r2AG%`0t-oK7TVd9xQr!J4Z zguK&vY$crUdJvmVgmP-v@Dk6DjXKXNN;}e}BYzq`&nm)MRWDLc9&&64W32cBOV`PX z7)ETNJ^XLlTr~&Vtk!%p+pc{M*}2hLIG;L^^_k{9dkCcqnEQe`u`}+yJ^Wn(--YU} zh45ziAHBfxPUs=o+2YvEE&Fr-l5%eCv0ij8*@RaXhW^;=wTdTsy1RsXALp9&dcWF) z|Ey7cyoq0weeBB$t@H}pm-;j~o7VBaFC*3={qujSJT|~QHL%BD_zCdr_pG}tz&_r* z^?AfrY|d>)ww!^d)lQh-TiS1Vr zbAw&6{59UcKHrYD-d4Ro%1<#ZrEV@ja99eBMxUCtd^5kv8^*7=61wmK#{_#~8Etk2 z3Vz-+9@_1tjtJMlZIS)xPUt+?cfE6he&k>{YiZeL+h3N#T687w#=VbpHI<*+?IC1uXfa{~qck-H4J+eew|+pgNLxkmMiHv7sr zTbS`4_!#y*zIz?sRNqQ&3+&gNori2uT)N)B4W2c(oAoRA-=O^2nV$CkJWu@* zc;ol~+8J#1LJWRT5U8JC{=(OkrYwsJsV&i@H z9g__0-ZM2e8J&(;oOJPZVFCI6kS!;9ewI0J>1_-4i_Sb7?mHIm^S19||7-UeUu@-H zO*|EWmwG5S=U+MJmVQV+MAN>RD?SuoiWe`46J+QAr#RX0m*J!ZoIC-JHWoX1!=L)W z;5PpYgWIr^wEygR*~}NiV~g9vH(S%cUO?`V`&zc=GB@8==Uvf0!`UC%iHs`Qj$YdE z&0L)c4(~26B(L^-zpv57@!FJ7@tspb#T(zg?^x86l`35RfVQfz-3H_zI{4Qy;d~eG zZNI-UmfLFf`!-D4o>E%a*mm38{mlDmoTFW{6!;5}E1SvH8mE7G$j0N6Z+x>9*`sGU zl-0O@l{VCWw@tMH{bmv~Q`-VeXUS8gavAs`XF($#_W6l6L?cn^6n*?N{qXUPi{o1Q z{V2E%gEyYH*CgS2{=lHgf7FfL?#0Q&eH!jh#s&NHG~-x8{|28J-yVnGbl*q&>euS) z?r$>xb1yvKp7{Ur>$c@GXVt!vz8Srq9Hsoeg`M%UxBl(^39Lb0vVAoNq4VC;*|AP= zQgYih`{UGq9sQB6__}wB@;sJ*2Aksn@Mtk_9MCuPJliEjALc7N%$jnTiJFf)h_i2pbBsoYEwbM;JtJ>L_)J}^jH@^KO^@nf!!hY4cl=iQc-pco?=UVnbo9~f-@(;db zkE_|qo?G#{%jf5fA@yA~Y78yLuq0^=-$6%lc|~#r`~QMCcEF|RUB#RSJn;L$g=eq{ zhT$9kotLc$PX0vd_a>y29U=BKtT_8sm&edam!}}_Qn2B!gsvqIU!=dobe-}S(KY(t z5MA$LJd)`e-b{-_ujDQmt`~Xw5%RJ`4Zln_^mYFbzhn>bOJM=^GG`lpAtpic+3*X` zOufv@*f281n{jCI9dA}yxUOaUbnu@;zwb_x7lTcb7u)_@@?tk~_G0ql$?uOXFWkB2 z+t94!MJ4j$meKNpzKks|hWk(4<#7KcFOvG74PK?AG}4CV8@EmIRFr4v-A0DJjl58~ z`3ZS(Ts9TS3+kerkry%gfm|4p7oVZu--5ov33;)S`?o*0v~Wd|tYCxi(0EG6bow${ zRt)#$86zvQlVnAp{K977 zv^-?R+wi<>{mHW8OCw}O_J2!Obbj&s$cnj*omWjlR$Pm$n0lV9csn60K9-Ob%C~)h z*o3iUMIW$MAuF`r)jUy+ywKWHbx2-t){T)D`RF~ayl6mPXbcabLk!6Zcl@ZYVAS}X zL3S)i8oxJ=F@Erj=p+CR!{9@*qL6v;EHM>1uMRHs4atdHQ_Ci%lrwJ+99{LBa5CDs>tmlwd^#ynYwP46}4)hgCzitSiKPSK~w zCDAPN(npa&4&6=}HOEaFmO=FSLUXn&+Z1o^)wX!kQGKXq-47hg6>FvS zwy(oV!(US@xQIg;I4Pg*c&mLcIW)C4lnvp*hnjO!JSnO1+4$SAOO%ub`($q@ye`_b zz@BMhAr^AQuUGL0aQ35AYx+m=@eRpuaP&-yb?ex2cFJ%cp<8!cj9$WbqvhRjWBy>%Ry&(czEf2hg>9n3r2T8AntfIlWI6GLC_R(WVSL z!{DUnEOBODV#2ZEO4m5ee%bh@ko++VWansSzl7|=*i2$6@XEzKm; z`%J@L>1L(o_YG|r*$3P@8sCGwf9~=BJJH=gI$g9%voO{Y$YFoA6;9uk9%kT z(@2{+_UBXe=_}rW#_>O9;2+9ryYhSB7CEZ3cBSXO3*QqvyRSG=pX?^h?33LHeirad z_VEn#y*IiXd$`uVuHWPaa-^2>bN6fw?e|E^w<+7Q^13(U+f|%3XE6rVr?x|6aLJa)3qlCvaY?=g#@T*==b&$JQU*3-52?r+5g(1Sy{T6~^FYd}o}Yhkaf7 zC#DA#Ut9df;5NnCGA{+8D{Oj}5gOi~R`fS0@^LKXIm6CH5_i=au*$BKQb&maLEY(K+)rcf@(JIwRH(OwPOP z5$_^*u)meM1Ycwp=g3l*&d816M-!Z`k5cem%#ODbTn#=sRr%S#v4`^uy>0J6F9(6C zgE8z(#0%WZJ>_Dbr2NHbmop;v-o~%QXPuI5GeBNB;r?BCV0u;d_A|46u`_R2t+K;j zFP+evOJ2ylIwTHGg9b=EX${(iPKF0VYKF((4;Njb^dZr(d?}PQx(apqgMyrBF?3M3iXX5KoAjgLJbbS7SjL9z?QWZEfkk^nopy7F+I@h!U!$!)_+zCv)3jA>XB=^2 zKs$=D1sx6Jm#I3HS9B9?x%D}9>HNl#b-8e_BraBP-{ie8+~?Otj@Se~1eaUaUxI_v zz;VXlE2FQKZyj7_n%JX}?KrvK-FBV<*YYj7xDW8{pDT|Ld+;p0w-0~t0Z(Qhx_m`s zrSbtJk1cud6MgwUZ5%+xcv&kreaa#(D$C&K^Pa2=jw`WBeOuGFG>OihLJqylUQgwP z-9>w6X?u{i(GMyDqQj(|HO?3lpGW&0e;Qmcnf@7=%{RH`?9TJyb;@^BUhVk38Atj) z9%_wya*tpG?K?s{E4?`;cI0mO0XmG`JKKu=_{&zm_uI4%XRV*Jp`jff;@zG(qa3}ZfT%wqB`q9?QJaiH{ za+75psUxnS2l%2@eMJ%Ytp#~pC?13tQfO!BIrF5RSJ5W^jHAnVk6&$cRi7_v!)`|Y^I+j6p`u9DRYmxe7WxzA z=TcVRsB9tMR8uyAH5Bn@k97^+#2e-XOF0H7a7#;LL=AEM&*BY*(k7mx6 zYyqx_t@zzZ=G>H}kWa+Jxfyoop=yu+2r&dlz@IVP2tz}*XRvH9gc+Q2xpac|5D_x17D0XJyo6U_;5+ zu_gCz`VobOb0%YBSQBF3Aht~K?&bxR-c?F``w8ZF&F#$V!R_SyI=&TcZvqFt zy1FfX@&=UPD^zaK&E)#rflcdT`9U93KZq}Wi+-$SZrqG7O0gA3@%yVU&q24!4;tn9 zR&tm~e^iXhbE!HfWI8&B&IfVeLN6#6Y-@q7gY)2$^%J)*P8_@Py39a7nc3F+x)Zl~ zGj{7@&)+Os#PxtDy9VD*#SQRuavjP)I{JI%F*W<3@Xr?mTg!bTaq#E*Uz_OvY5Kp0 z{=4~6WAtCT&ap)Q(LYAyM?FS7(MZ^`z=fL|b+~_z0pE^W@1=*Hdb!bXR+;Sj|n`pmmHWQa;Mgl8>W-@iUnK=T}rRJg1%i$rxAXIQ{{6= zZcnzlO6uE7eXsCtblj@T!=itk3*7^rbk1!*G=J96{5WWTJh3(tf~TSVAGWhsW)uD* z=;Zh4r>{W6=&H(rt-G5=?_&4Uh@k232vT91XXN%~~V zDDcMaqP>m@v`73ZGJtV()>3M(-ec`kxh%^4?kV=mf-BX17Jd-k^qszGA>Wkyopi?? z=-66&y-44p$U*8*%v_h?PmZy1`jLEo!|+;>K6lNc-{PeYgDAYWaDF2AQQ5#=C57Kuk>)E{}w?AHarqW!z?ajuA-b@EK~E596Z>px=NEqCD=PoLG# z5N!*N6`XBh#?f}@L}QkZy=;9_dxnmZ;()dG{G5ToYX7?gEKVEBS)CPpjc2k2j77s5 zFE@WlH+#d$3AxpR4vw#I&i7Ni<_$cnlwDzVXubHMo7hjqO1gQBTzZYSICF1AG1PWp ztd2Zh)zhL)ra%6xIfutObq)XP8el9xoVcGlt-0xQjAcGCn4hHn@Z`{XWYEGR=nB{e zIp?kD`i~)7`-lTTKdbGY*xa<7auNSbVimo$s~8W(AV|N9Oui&Nufcitd7ha#3(i5w zJLs+LAZqt_D&u)XQ9NXniUW86MZ`0e zB?F9tau^3t@X@EyPLyR>R%Djg=^;B&Sz!mmv_i8&t)#NVq{6hKvcgLJu6wV0%?y)T z@Atg#?|uLO?_IjN=34hU-s`Z}UTf{OF>b;$^Nhh-o1ky8w+j1KLJ~VzFK>&r{;3+? zojT2X(6QcHeqYRrU0Bn9T?<~aM#t7Cj+<}a__n6KgFJ@3h4=8j#=fN*|L#baVW|z{ zy&CMBY}2hx_&E`H!Vlvm+9UJ@(p#YonmQHvNemRlw8tu;ttiI6#jdnRGn4j5V2@@N z)yJ3#OZxzgI75N@1Qk+?J9p=)GAzW`gEzs!f+S@nk zdouC6@x7M&U8&!`9%ZKbAn$X%=pKu2*@wpz1$V?4IOw=RgyOkkF}0iLQ5I;gGpS$1 z#>)+ zjlwqItQ(9cslRFA&v!p`ssZ0S)ZJo@2uOAJ9G*qK!M)3hbvJtFDHCpJkH}8w>UdYH z9%d%?Es~uTcBq4T-BxMyq|3AKn!=>8KR~$9$EBEO*0~HH@2hqYBj{|CI+9}?_zluR zX{Y?3FZ_05;e&x^zdukjDDh5ucGFPaN8Xitjq3f{ZQWoHA>Xxaez8BEGyKu#^rf)Q zojVXu_Z9R5T7wui0CqO)6&M4zM^0ORr2I{U`x{^%NAAy_J8%m1>$@}OUaDy$QfQCc z9w5b6gL{X`l-sL=DYaKY8!^8}l%tme_yDdQxb7Uhv{#8A(zq)1&buyg_8NozLF>o- zqgQcweypeRkM3{C;s}N?2#`L$N7g&EFJ;b%+0%ZC3Rvo_bB# zm5Z(oOT~rf+Ylr66CJ^rnC8iiE9wuJ0>yl!YikFDe+Ry^Hv9@luc3y850c(!t)u4M z+=C;GVtyN(7tq0!-K*w>oP(=ciTT;sbM#N(U0PbNJ=fuTPtchqBJp_>!r61W;NW1b z{nV^8?Pru=UO5VG+G^T<=nmh$9KOCV$l0r7an2t)$9cCQR}}V24nSCQXN1iGF2!|U z_xxT3z)Pmi4!aEb`XzQwSZDY-IB8zkFaBbFLD2GE_b$9L?AP$ZUfmbW4NIZCre6~_ zlkz(C+A!)T!^}AU17>bhhibw#%?8nQ?wXoWuCe34nmq^Rh4Gi(z0`8q;}y{)FM8+G z@tbG-(7JCz+V~INdilQl?z;uuCYf44iLUXVUwe~oA2a#mF|lwrkAguskk`i!{c8N! z;!D53{I}d_;UB7>d2XCA=EI=+yJoh>*#V8K+RbXMb?Mj`5acX}{=>9n{p^@9Ep=%* z>Q0#ESQ?m$Z!LGar91T>?aXo?ayzT6$Fxp$P78GgqMd)Eb?tZ@d%4ixEH$Ejo}h63 zO1e{DeG}Z_9Ki6CT4&hZr0@5d3cCc@eXE7QZf*D1;f~xKr#b9ZLFjh_arVX~9Tx+q zYOTXlwRYj8LkrUX9oCeOXkpGk#IqOg2&;HY5av5tPj|f2Io@}*9uefwROe=}5Y#J*F0akuq2_-fF~S^kUTY&6rCxn#&JB zUmKy5t)z=KVm0{MjYsIW3uk=5p7=T9R@VV?r*rsiWA@0~h|&W`V5j7R;4WMX*xIK4 zt^@H}o4v*fmwZTiJeN9N?{8Zpo$Zm%c1UMiq%%xh;v^ln@e?U{x9`><(PI|Q?l~}3 zkMEX^lr~B;bf~8-9(kp7qrA3K+HM8U(%s&=@f@WMYZfZ)l%_!(f9kn&5DS5O*H#PW zNYOVQsKNLmOlT)u(6PWh)R=iZss!^FlwR-qLO$AU>e&gWaem0Nm@}TO_kla{{x6NK z`K$_ho}*{C3|zEkl?K#s{t}I)QqTIIrtucW5c>0ncR!zru*DgK9W0)$Kst;xo<6GH zEe`vL(n9HWKdc%JVm8CUwx3PO8| z$2W$4ApzAb)t(Cv->K~5S&oUgy3d)AVG z&=ItDxCCc1QF~gVb%kG}6Jw$gsfdHh0P|kqjh*QIa^qsUuL|5RZ`FFtqI7N6!rbZF zto3rIYqQqVovzJV51hAE(mhc`VT)PY5vp9N?hCY0gncKzXM3v!^_8Bp)%ezkbE<|2 zBgTpNmO9+3zO>%2efW0V>yP^l!C6!ys6q=4NpJ3yI~`r{ zTcxiveyenc;J4s(cfjwqdb(=@LRoKr?vJG2f>>`sthc}sq_ZOdM(1(pipr-^3k^o0N;Rf zxrD)W;5Oavl8&_ArsfO0&tyLHk5}C9ng2@P0qTn}?m%(o493K7K8k0NU55R|Mv;Ou z0nS*gsl6~Sr+?p-<}?I!fHMj)7eeP!(Y#2j@HE8dFf4iy@1^0402=>x32(xF=U1Vl zdW`d4$GeiGYnn63LcMDogK#^Dk&V}j?O*m4>l-j8l;7mV`3^_}#?R{qVGMii8*<*m zf;H$6TtDox=1>}%9ya9EW3J~E-W_d5U-Cm3-c&;xX#I8p{G?*+Nbm3tAiFT@8PXeZ zjF&c$KMLbg`rX=khR!o6MV=c6TF;#BYdzia+dFT{XSL1Mdiff~wC8A#x2pH(FVR1G zeV;~OAC==>=mXIfvHMcpngRN&Z`D9*O2q={?Wmus_vHgpO~E{TnF1Z@@Qz z#|O~aYGOnJ*8JZeu;BM z91^V&o zJ8<2FYdx-YxJq%U`y%=Vy$%`it`_YDY((1L#T;BboX%4EktW6kXEl$LIlSKtJBVb62$5>bvb3b%;$4`Y51p2LPU}YHQg}{WL*Rcpg`tIBM){_+O+i}Yfe~8Jt!;3j-iKIv;|#8) zJ!ehnzX$Irw!bw|3%-^1q|ke%H?`N_(|KVD${%akFT9Vn!4gU%(nMvy6~7_dmIb8t z)Ci<+*)Bl2r(=AXjkuN|4O0wJqrKfx804--1Wx@fIDTzY@XoQ6_KwKIQlxz*uEFp- z41T8p6M=N@HuWKGvF2v!y>}z}p8erS>r{kw3+7}7;XTwgNJG4)&A{9#%iFlimC~o; z-Gg|kOzROh*78B(1YuVKGB{2=_hf`Uud1`5Mk=;MTSxIUL0GR2HAV#E(^(3aCN4?7xV zxj@r?@WXSJW1{t`tes-LGq8HxNxwE*b5Lh;SBv$X*Nx7NMExBMei?pG!93AyU?{Hb zy`VMA^~(`J`XltxfnHh~K3u zKFCj^Pb`H!mB&fE&unUAPBOAz(x1LRlj<#gQ~RShU5GOj?p0f%c$8b!PL$g$xHTi6 zl!ht2vBuw9tltawnVmi5N&6~pMR{fd7ijpV2j&Vq{f=Cpv6|&dec0(VE_b%yKT-iPDFG7vIrCYieEBin% zd#abpKFiPJel^@DU_YCZ;Tr^cItL*QBLl3bVC-FoBdgG=eG9OId9u>N!*omRBRI1PObx%=o{>5hJXb`d|R zm~*=yYmgTV6aEGCc;`jjP+5|jrFg!%U^tk2AUCdygj0^W{BP*I@e9u)o}l`Hu~3#KzbAmcpp?$H8-%l~=v-YoYd0Kc(PyaX#Z>#+8hvj1MwaGVWmfgz+jYFp`O|@gY(^mob}h4dW)p=NM}lzhL}@ z(I1PKWM~nSjG1vL<5_B;yXoy^Mz$8yWv#>^M}$H-IsUF`jWQV;W;F zql@u2#&X6=#y1%EG1f6QF#g6Ef)@nI3}uXGOks2}-p06*v4ZhA#@&n`F@D9^%-D*{ zt2?6}DgK=0a&E`v(2r5cOD+{wO%Y(`u$Ekj%7#k&WR}-FFL??EW8^=zvqa@yVZ|m6 zZ^L)A~@sXD?$5>A{70iQ}SNZT7 z<`|>trq0KI19PnJ>88m?E}oF-Q}LOYtMr93SMghz&-9UJ`*4R3FJi9B;|3pj33HX6+kE7uK750Z`!XNC$%mIS z$CzC=kNC(deE5?-ypp-n&o&=gKk(soKK!r`ulL~% zKD^O~pJcA|)#SrZ`M7WP;eYsW@uW|E_u*#ds(xCStNIef9FsM=N%oPaGVjRpBIYiKJsQCdFWFz{e9WLl{wBG&`m0HGxHMWVazL-4`5#FXWoZ-4RZ_gX6E6{EtN7p?EBMAJag3_r!eopatCwOfBN>9 zE+6-0%vJbR%vJrWWv=wo#Jn5F=NrCn|K{62`L=K0{-A=}lj%Zw)sgKSa|AGZ+ zwtRbrQlD6`AU(sLo(*)^^3!eE>*{NyyF7>8X+wI6MZg`^ zpTVe<5fQlPH!fOxsLv=wF-nA7ue zl~;3mc3ys=Q%`Fu)didL!u~mYZ|_+JQsVRC1%=Q=MpnKf z+m>$6vF8?;b8HTkPkW~MFOnkl?s4bQmD!V|RFC|kNlH!6a}-}lX_W86i~_UMUQp=F z)r%>0V!TM5IeT`3o(jlixw>mbOMd=z5T9N8el58p7 zg-Yr3m0x{L3m2(5wp`mHd&XZW)z{s5l}hn>^!g{wd9>fcozlOLp1obeeMWJvEeA~_ zD>thk3q8jQyVJZd&uLcmLdk6f_M)r;uj=pZ3gNgb&qbqiyZc*-qkR8KkAD$9pH2yqdjG{h7H>A2WjY@btU|w&k`g?nd4AW5-c1hQ4z)`W5p8dw#kz%i-xBggKVF zjks)Ee!iE~Y%4I!TZgwi#_6;bvtHRtd={FzGd;7|%d_sn9G92lpdQ*hJ#8`W80JLu zV_xy5+H&)9i*xb{^UWwfd%gornuFHUOMhtWVr1rxzV>uaRC0Fi26ewA3mQw2J752b z)7V~xL;lpWlNxgolHK``{E@vc!b-O%^fqc-r%=VK;!>PY{Z{_Hxk@u(Yg{UiDjY(x z_x1y-8?sl1{3-urr_$ve4%vIB$J;;2$WS`SsC21#l|OGTU7r6hl?fSDHs|9MmXecO z->@ltbdkOKtb}^GS)B7U{l>k&`1DIozsGr90zciIuw~HZ!{ZDY*(C`}58_kEi4+ z{LF`?KgEsAl{**5pUkN2sekT*i~1S5NRNb62e8hn_qo^yBB*~L-BOz*ol_YRk{uz< zuaS)El9ExlpX^e9P?x#`I*V~vl!dR!FF4YZ#sh9%Q}+Na=h87sc~0 zT;%R0T$HZ&aFP5FE|Omf1=2H8D3n6_Nyk4_H!%lWTPER&DGI;IC_Y?_7Kvgac#=pE zabmid0QSGej8bg*&mz>nmiFgo@u+bZ`*#CM-1lEg_p4D?)IUx9y?@>ztijR8>Yo91 z}f-R{+=QHP_#8<4rf0+;Z#M+iqWXN9p=I@7i$pJ@=N~xAFc>4?MWJe9J=* zKl12f|EhR=>l05t_4G59&p!A3wijM}scQSnue|!&j@PSqzOiffn{T~cvuE!+``&%; z{o4Hp4u0_AM~CV@{^ZlcpM8F${^%FS8ovDM>&D~XoH+UIci%Vt@Z(RXe*Wdx=F`9Z z{>PcK=Y(eP^ABj%+87wrCb(_8_NERUJB4)a(lxYO_e*;8>=kD2-KTHA{sRVD289nE z5;1gG^)Wm5?)01b+oHcvS+<7TiUM2N^ zVfp_E{R^Mok9s-P|5?r>`*Sb&pU?wptKI*!ziCttMz}`v{4;2O@1OGTou9v#UvD4u z+jyS-zoSOsN4g~;*t}{I($<9E>KD2Cn;B+jzV82CZauC{!t-1H(lqazfNQ554=TKY zxxy0W3U6bsu+&Fh?jx`Ckyrc36Oty0tlWhnDJDte+Hwgkv+!pSClYp+eEdcd?=5xC8jzhr}eKc_ALg@3nugj48b zHU;f(l08jKvpGeK!wD=FQxN}@!fX*!xJb;hJH&J>2qon$6BF#|dcg35wU1)*=hT0| z7XH&Sfe0guo}Ungog5<^q!#vtiwg63LKI;Z*mKhC^gKld;pY)U9NyLxpPR=_6CxQG znQ7C8Wn>I1*25*90W-ur4aQ7AieboF#K&KelXC?Wfv)hRmj#@K7bPgk(q9Ic3|IR1a2ZZM!jLXxc)1AGV~1c6ABFGqu~qRY-zr{m z>9HgKQxHC-dlEuU15N`c9me1Zm5?~4a0=&>kjf$kxCl54{^(hDI-VmbUrErzGT;Q* zQ_0Hk3-wSb92t)jz9}A=cUW`0>Bx;VGX5+*F0zsF>&34-km>OFm+2{l9%O}(=_)`f za*!{(o)_{c)0yYClj-$!rPANhJ_e~IlgvoJr{Ui)=rjX=i@owgHuP@@?)2n_{+Zo2 zq%jA7^YKp^J4z)2Pu(=1KxQ%Y6#*^Kd;^&k&{PDT$CD%#OQ81%F;$<3 z@W^MQ9t!As3A^$@@*dewlrq*bn)XWjRK{vX(>u~WnX#0ymeI72<&5Qw;$609EN84@ ztYxfcw7e(X+fb{rkRzHeixA84oAjY(&LW^mYDaclS#V>AEL#l6UwH{gFYbRK{KCzs0UGLq40+Pr-Vm!Js)9HYDr_> zF?dEff0bYA4JgIb|4ggDFj*Go*bM%eu~f2 z26Dlu$D`g&wUG?uX8C#2bpG(jZ#u%Dk|=;iA`lwsMfRHuAt4>By4kX&cyvwG)GmtP z&bPg`OkoCMp&FluGEc+bqVuFvRr$XYo-6~IV@mU%Tal+ssHQH13+fd{dbQLgy7uV4 zn%%;lQm*FaDNX0sAK5z4|K!0fg%ANvlFrW8E6J9j%1fo8Ww^e2l=IRQe~i;UDJ$C^ zbTV!I9pz$=>Ps+}Z$;MhUe(J`{ev;E}_jWhgUNF~| zjd39vFL$%N?P(63!cA~5!^b(XAdd|Rv#|P`m6waS$@t+ScZqS+Yz}v-yzFVai#-WT z!n5-d;}Ry2pN_a<9FF9??5y-+q=pwkX4{=PS-IF3lb1WqUXYnb!zqtxXfvDUwGmr- z#IV%V&BX+)* zG4P@Ey`hhM-~S)`-*tR{WJy@`HxDeJj0@3_dv@2mi-TWXI3n!wp?-#mSM_f`uypQ} zH+Fpj1)A;{T49WPZtKeKz1LaayY;6w@9n-}V4D*wcWvnZR01i%+WoUnW^dm2y6wut zPdqXI?cfOkKQHR?>i(I}y!88^+wVx-Koj>^k_f)_m9CGhduHzAnK7b# z1#LasWc_$uMXjs*lD;VQjHtvB_q;vt`VV8LG}!t){_!}|*w>steYw7%^OeBe4H+otDch5sY8#}~=|gGYTf?7M-<>Gv(&^H`VTQ`T9A8oTD@CUnp3 zM%uQH7+`(MKiS#q^oRR540`3=s~6rgbj(AauKLaX11Z)zzN&#`z~hni@Ww3Qhu0``SC;jm#w;eX%cEs#_wNUf7Ore zpPIL!!wW94@P$F<_Yb^zXjRVmM|(_r>D|vA4}3B%rprr7dux}Lb!s?NdWCiR7vrBe zowt12fUlkj(wo=tIZp&0NC|%IodLGFH(%dl@y=5>7cOg@Fy#HovER~( ztI)(_dJLS>HFw_AX(zYd(&zinet+o2hVPGd{qePhBV8riE{h&g_4@kHpX_GLIQ2o& z;&Yd_TReAB$o5aId&h(qW!^tx$;WR#^Yg1&83Rxb4W|~ket%~FoNp`4Q|@n`ckdHH zXP?&o@z{_lS$DtQYfz8fZ*M*DVcoK~NAC}w^T}PM54^px;+?7eLzgwR4J@hnwZIg1 z#UCBwzkF(4`jw`y-?_Ij>(GE`XT!Feww7Mq=kk%83R|z3y8ig&h~=kqH-2qx(`9$_ zox!H21wVGk-qk;L?dd%atZ$S5%*t~CH%7!&W)%*O7;?kB$4uXc)e7s1x4%rQYFu1W zXZo`2-I_P&++v#Z;+3@@?D#!p_?jxeZW9yzF5fe)+mqtWurI0;i?_J;jM*RY?D6J4 zIoEEyCF&n_-HP9HE_Jm&P4ytL&rMy-9T z@yfxUr+hy4{giW)`gC47uj0zWuLsOpw7hHjOJAK>5On5P*5!>OFD(zKxOw~VU*g(_ z_5L*Os=9lAzT}CAx{c5DhXOOsuG%rof6vs)Z+|}eNz#@(@;?o1*!11>MQt~Ce*B{s zUihWmJyH4V-$*#I@7}=+?j9f2{+H+1n?o)u+J7W=|IW|*M0cKdH>MO`-St^C?WIp4IZxPM0TkAAx!Iy$rbioT{pkLTYw z;pLAzzV8=$v*Z3N4$o|y`P`RDzjtjt?6GM(jvjgQ7k(hF@4V%! z!eje>95n2P)s*~(uFEri|M}q3am&h&4+~kfF!9vLp+8jpw61OYPFWig^DEj9NVRs- z#s-xv-Pb$f(aXNy^U1B-hQAUUlX&{0?0~g3Ra(FoE5E&W=5E`rw5@fY-2C}BBdctg zO&ea@xUbXV4|m=kp;s7Fr^eAM-gXMcDh`spXO@5=km*kgyhiCVY5VO{<4^5!Aq4jo-uHtg#U1Jh?XKkHWU z%%rQrKYH)5A^hxTlis_%U#Edj9q9W~w^#gk58l`6rM)MfoqTv|-~)RNhu>T`sC$rhp!#S)?U?+I zpN=28`Qa}fc+U34;q>rV{ReEg|3ioEp8m()*k0Hsr1y}XVX2EdRXsH3z%BW!en>rX zXzyEtk7TvF?B=R|-?qAI;fdUYZh4>Heplg|f@?=_%zbnCOQoaVjJ4FPD}K7)=k2JF zGGcaaEcx)hA#opf|JwD?&~d*k8CRUJChqaCi>G{brq4#lNA=&ozc=8}Be%bnEi#Th ze>myUTw}$S2PfW9P&0eoAM@TS*!RJ%s@UB0kLT^X`h`o6pY4=wo3Xq5r!U|A!UIV^ zY)St5^x>t~rMDiudD!O<^r85K>6X{79Xt23<;S8PerMeD2M??s^5CzJ6ufd;6Zb(J?;kfrB{_jlrR-y5?=jy7uUhbs6!OZ@Ife zefv=;A{hWXLH}tzNS&viwF`y{@Fb?t$ z6qyAH))|~=0W2aEf*f~Noc8SvhyIiRSc6Dfh zp*SBXv|J17wp|PAeoza#b;p#=4O_cG4IX1oVjdXLTsv$ z`s~Z{3YPa{Udg;a^D5>v&>&OI992;_HO$pQP%ZOtme(;K%)FlY5ax}{BbYZaAI7|y z`Do_ixJ*CYqsSPUt9>^n=9f#c2xTsJ`Jz5BAJ1|Nb1U;m<}u8pn8z`?o9iuriv zHO#Hd>zKzdZ)6_FyqWm~=B96D{wFdwGoQpflKEujR^|!JlbKIpp2~bGa|iQ8<}T(* z%uAV1XI{=cnRzAinar!1&t+cAd>-?9=2tOqVs2+HzLWV~!ra6>o4J|!YUYv5H6DOi znfo($aC>geJelQz%u|^MDfi5SnY);qn3po|#Jrq&2=hwjU6@xh$H$pUnOm86XP(S_4D(dx z8V~Rs%>9|Wn73wL$~=&HIrAXqmCS>gS2OR z<`(ANnMW}n!#tU}#skV!=7G!|%!8P_n0IGh%6ts-3g((wmRA+?K;|{fgP7MT|I8be z|9;Ycv+~c}_#@|+c_{NS%q`3{i}WAGJdk<3^3Oa)xgR3kXDav1ipEm;bw^?@qg<<}b!0LNvGPMElikZ*9|BV8j@H-6&^kUDTCXRQ%i-oScQALbds=lR zL+eUpXx)`eKCkKLi>1t$=}0THWN3Aj46W^v$wH3E(3&@ye0P3iy0Z0M8}y!n0$t+>_OE|oItX7gKwdpv+_Nn+(;92oWpP za}U*z2)yYqONy}yN~@o7LOq92{fNLW7xmmj^@R9Db}v^0C%gA!P(6vj?ickOMfHXF zOmpNP+9In|>G>;_T(bCDzB>bZ;RRRngAC^^+H z%CCx_>RAMsa!>V*xQd_Z9i>OPr}{_wQ~9TQ7y)gn@bjT%k}G{sy^KI=xmhE23U9VM zJgTRZJ{2C-SIQrE3rG#cH^-~INMEt~`!%Ejs?QXk(l70Gpz>4kQ~i!W>eO>4)pO!X ze^lQoK9xVJ_YrWdo@1&0Q~r3n7+kN=`BnIv2v)%Lj@pHHy`lCI0beR#+^+4^|yZ)r<`SzrX+P8N)shxXsYVR$%Y#%CL)c(EY zIePhf!l!=0Tb}O|9`zGcE-JiqJ)e_Nqokq!!@C@1KjH~d_9s;1uGBrqeuYAmHEb#J zLz;=@lF8NEucusd^m0ma>sj_k31SAvFZ+`?cYBfh!93}seK-_b3cHv6NvykEWdGpt zFZ&0NJXg=ZcmF`;mF!hdNPn|n)3ScccJ1lMyxT#X-p6L^DU$Wf)Ba^Wi*@VUyWV*F zQ+k_-zLt#C%S3nmllSX*cYBh0igBk~>M6$EZ%I9Q`f;hJICuNY*XxPQr*}GJ`aStn z=}Kk|%XB5W+l@@uEO$C(x)Qz8LG{fOuT0luce+)&RR1XZ+gPu3=3wmLX}L1~3GVtM z{Jnc!wGr^sI?{Hg|YmVL%v`qhWv?OU{ zxKq41>0z!rKa_v6Q8h!R>q@s=`j2z>BTCQezDoY7BwG4cy$Fq~NE+)dSEWDI-^%!= zxbrF9&vw@%=|09?uF`#?S9&P?tMq-Llw;{$wKmn>rh3WAeX>_SM7fVcosdR`ALEsO zlFxCs3n`EF@t^D?pW&__GCiu-ROy@LzHdu;yjMM-_~_kKX{0>aoqx~xUf$`cUXW4q z#Hzm+Jg+-M1|ym@Igczy*I2jWbsZMtrCKSkV+#}WPnesTKg&Flc{y_{^E;R)Gk>3X zD)SGSJD49}?qdEp^HS#9nU^!)&AgKNVdmA$)w)0}^L;F@XZ||#CgwHF)w;(Z=E6_v z<9_C$%$G1%>omQYN3uL!$yvV|b1Tc$_%E6HDwd}*e~GzT_cJgrV!3KJYTeJD3knTN7mt;?u&N+ZiHEPt4J6!UkP$1{JDc?$DA%rlwa$-Id9%gjrdzsbCe z`8MVi%s*mY#k`hz4RbY4u47)!@zHaCG>YZfELZEK1DMCNJd?Rv2M=PN!tzAs zCa&K@nP;**pSft1^Ga=)7qNT;^AhHdGB0EPH1i7P>b_pZ{6&`6Fn^VKDW^xRv(~Y^ zgym`-^fKm+ELZD}Mow=q%bQuQo-aZ<{9!CNwwC2nz&w-vhcXXk`7_Kd%++(5iQTtl zc@)d1Ggs@>7UuCRU(CFm{f9A6VY!WYD9hV1&ty4IySeuzv}bt{%kO4h!h8mE3x{W7 zUdD3uylrItM6kSquGp}R!w=i#H zK1=!M@JBFjX1Sad6QYL0@6U3hQI_u_=G83k$2^qf3z=J(uVb$E4Gd-;#qu2H@yxGh zuGZ1@ovpA-VfjrgFXHr%VV=qI8-L<#u`DlP`HjrWnE#7; z1@mRhtC(+M?%?>kF|T3y)yykd-iLV|%QKiaGT*_xnfWf}#vrNRO6H-=tC(Auzr#F= z`PhwMi+Lu?FK2FSBlWqOc?qYt2lG&tU(4LWJePSX zyYI<7iscKK$8&s_D$eqi%+)?CGxHRdr!g<%@Ov@OWO*ucD~CUdc@fJWWM0brAI$4G zyn)OsSf0haig_OM8s>h=Kl3k`H!?3}-pqUpb7Qd7?{myUnQvuoVLpj@6mti2IWJ3Z z?nxt`b8UE@_U37r-Sy@fyvm`Tv+cYZrFa&v<|w|HS5XvS!mA~UXJeM%JN#_Sz+t4zn0@f(OMT=tOX@ABSx#@RX1P`T#a{WP*-kkdnC>+XC~f55Y{*pzvuGWwXc5mksQDcmW{0Jb^EYYk^h&N)Czbnj zcR5Qry+7yeKg*pyDPQa^XUTJY!gsjqrIf2xHx(bfrRE*Jr=CmqE8O)^&bLtQSMF&( zhTiV;=IJQ2mfTm~(m%b^=j~p;OHMX2K2Lc|zQ|pEl4rW>jpR9a*U&q>TzC0Nxms;h z;XAzaN%@iQ!h7O(xa+O-PqX6Q;TQVImwAOp^Xzo?pK?#@9u$f+avdtmtxvgbs8*S2 zotf6@)at5ScP4$S@Z|ier~W9e`XR~buZoZ6U$foyQOa|$-YJb-2l1p&uG4thrChi4 zyr(bMpSJ zk?+kfMhQwI*UuKY^(EK4mblx8Tvzg>U# z0JU3%ObT@0f+nkE!Pp{UvK?*+k59%uIn#DDx{I?@1FF?^#bZo zWDn!vvIQxw{7atcPLJgDMz}PR=ezp{$qU@~Pr2UjiJ!f-fQsrn^l6H+HJf!zDfpL; zkwMSscqrz19S=0UsAJBZFYDNP;0_)Cd8nGuHS_K_bUt|6ZXF}fy{Y3ZPrR+mubR0> z=X-wItMgy)*r)T>1K-mzbo={+)%_l>)#dXS?bmtCpaVMpqESa{;$sJO`?ad- z^^U{3{n-(p5sJkh=xB{C_*}QYqvH|XeabUBme1^8uiHmEb*y*p(9!i%;8C)#-Zfjt z@~iWBMOf`J0WBnaH8}xA3+H|xw zKcXYvG1Ac-5&oqvKfOdptMw@z%MIV@SRXs|D?MI{TbWOPDqiUd8y#J<$WXR3KQsEl zw@Nl&{noY7_YK=Odx#+=I&xOWD^~1Ei@s}Re%4d-ZPCYXeD2xB{ij7gv|`2fS8u&K z`tYMy-qUwfUi5P9VEmcZxzWFzx^ME45lf<*d;EB+VNiDTm6sfeuer$-9T~H1+uT!$ z(PblF{9{;odi1iuB_)r2W#e#`M9-Y_@U3^uTN3@p_GgyXTyBfbcu#A6@I!laZ14Tg zz4~=dbViq?vUQG}=+VR8K0YyPPV^^NH+K5v3v=`@{RVEUe`##=+mkF``ahW$y(4z_ z(;@d?8$DoYl3(LBOQH{6`P|WYJ9DDbHhr`>FknpdXNfQW)}{CS=*d@~?!Rxr!sz7q z+Y^i%uZmv2VA8Xbzsia3dDE}|xa42gM5o?cc~j=%=;(~^E59iedC~Wm{l2DS>ygn1 zcKom_?nG+z4fCHr+3J}E(U}XLANSP{Nzsok?f!e*y_2HvnU`ce(jz>@&$$V9Pd7 zbUN`VhOAt3qOCADJrn0`IdQKiGs%Y2Dl*Ikd1idkAlGa!vZoj7A4JimIA1uIzLrAr zg*bN4Y|Ay<9B`NcKXmF>)-wB0-KEE!{-uP4&b%D>$kuO1eS6bcOtkkS9%)X|*TB{M z=9IiNqzfO4$k7jwFfT2%JB#W2C=2z3314}>y`aELEb!GFWGkc4fio#&2<(y54>^>2 zVF!@go%pQEg#ws^JCF^!qEmUy(0m^LrbBylrViah&H6Kk=foW|?t${WnnjQe#CL46 z!3W~hC^P?-3G?WEk-Y$F$0sq;^D^w_yoF|mI$NAv4n-VAxRe>DhwsEGR%v>f4}&b% z{Zu2w#3BdI`H&?lOAO)W;Nuq=W|SIf4(b{>6y-dSe&uJ{(`>NJ&dRl4VeX%;hUXFy~A3Sm>Fa*5z44RQDI?dq|!5dXSo%BptdBD?v0e z{N-6VvjkNHpZ0O;RqH09eQU$FItZt^6+gGy()OSF&E}j z+0B_fDMHRndb`(S9@uvveJw=K1=S*N--zMQ?t2e}YH{?;atfGy`&0)#S%3C-;iC9c zK4krKE-It~&o^7_%h1DQEi~J690kRL{yM%iyIFNU_?`}Zx5VzQ%v52`Irf}9oJB~c z54Wy9?sjHAkDcyRRHP=@=$8T4RrDhizs_p(%PkAW?+{$`A)D_bYYY2F;Kc!%gJrPN zO_U5q(f>TO%6U-V0IMF7>#x4{ZvJ1D9(M%)-j9l;^XKc|3-!XjXU>{1%NR1@aPMRN zrfm53@ptx58k9~dio0U|9Ne1o=g-AaM#b}Sv=MzRCx3o^7JWWvK{nqv=f}*PHhR?j znfT}#zSlE<`RGv*HfPRIM~1wc;)CS~i!L$;aZQe!ok#~Q8QY;R$ET0z>BNZ1_|#lY z@_sq`BTD9NnxJK&79pY zB`${ItnslU%i5N9dX=whVV9u$t@p7b%SIo&IM_A8E)+Oak2is=gz;fco3zv8FtxBt z*5e3;9n`^olT*mArKP(Rav0gtP7g1th23mDJZp>aX6x>fVOI%755+;J1vUhRb{dKW z2+8}cSg|4_4eAr2ml&izodxOr5@Pi5%q{G$(!;ZO+s&5lB4MZJgZ$2x?yRtDYJ+%+ zWW13B4LEBXT$bSo{1hp$({(59Mv|Qac3x#YitOk+)v>MIen*oX4!aVjAlPxX@aJFa9=bSnWqK4vkumcy|Qyp^VJJb6`>PzybH3m_gQ!hGVUS)fgbGqM!q?#cOUO)dzPGS0UIy-Whh))l@ z6JtE%AYqL{`u+9>@40o4vF4^4|Jc?IEeNgiM1~&SQ?jR3%?&k%TV(lGpnSuSSLg@& z_vEz%EomFB-M3TD5s98Zsq0}VueQ2-PkE86^2yLUt_Jo4H%3%-y?lC}Ck{)35TkIZ zIFJq#^wpvsP`IH}@ZCsU%3YdB4xI`6qcSI`smI)PH65~97m$q*k*1@y$oq{l?={H# z0mO-VERK>+yzHZ4KT6kqO^Z4ie4P+a;tE|S^-_c1^|!Rm&)Vg!WtSv?ruE5RVTb*3fj$hJx$W@Oz_EG9P8C4)ut|mERtk5 z%QhB=c%yZV(begwM0Mez}0oTv9SgOO)l zx2t6@Gzp`-qt_p3y1H0LebZ(%s;QkJJMBnAnbMs!DiTn=qbcd{C!+qo>@1p*_ z2VJv#48^&&WjV}--2Z*(lHKGZ&WU<`kmZlARqsbGV+?1+AVs$y1NWo7>I*(eZw%LY zpN7sp=}Gwz`oyKmw3ClK@*|vmf=kJJ_{d$5z3L?o^O08~>}Id8L*T6zp63Ej(vjuWIy!} z`~Tc;#!`P$W58WU_CIy#Pp0T`)ar3RLVdyhKlcSA&=zqIMEYB{#rb}kcomm}%MABK z6Y4bDuq<2jE$F{m#y3~5Z!OEd;SVJEtViGbkgsYA=X#Hhu0YthzaS0L?_8v*pLFBy zmkbEz$&Q)`?xeZv_YnN9_u{xu^1VQ|Id$(oY{K}mgU6o*zpY+8PehuJ9tcu*qqRzh zWzgXzxL3&gv!_i|_Ci>=N?AAOYl~yUHIag=lHF`X+4ZM9-Pp1ZpnTmhL=&TM@LMgr z-HqRMUOdF74&H`vD{!egeCc`g-VFbxLp66h9}V3E>pE>&&ZWaJuEN#Kaih<|xI^~2 z51?F1bw9F?e;H->q|QBMhc)sR{e^LiCT_r``il$od$�L=7(0pY6Ly8H~~{Ts}z` zsMm>lduVwdU2u^&79($y^t^f6Ao>`SiR`#-Eb>n_(|I5lsw=;vR?!$f3>SuE;zwM+ z;?iWbJ{F)Qn=w|pp#Lc7zLOqb!?D4rcLT{S`V|`cHli-RA(G9N7xC{Dk@~$yxle-o z3FQ88pjVF}`v)3pb)&Ld?Wxx(h-VY7lv0T_PBp?mjcMiB*(Ed#o?&kS7Y*7;8cGX{ zsZDqs(lGvRh=m2+1Ia#}@f0Jh^k)-7GEIXG`g5r<9LOeeh(VO$dGJDpo@2;Z8Lwho z#&`qcJ&ao!UuOJ>@g$>x(f|{}7|uABF_CdT<6_2@jHQeZGFCF~VElyfsz@2n6vnZP zk%}YVWactvGp=FW#P}RzE#nuAzcBhoaDEugj6)g6GEQQ=mT?*52F52DcQEc{Jj~e0 z_y=Rhp)%e9j8Tm7jB^>&7;_n2jJGkCGgdOb!MKmHjs! zH!@Z*KF7G5@gv5s7@HYead~xT)C&!N&T=`o<8tW7sN~1}ajbS6zQvxGZI3H(X2)X& zJsayLLjz!+;90Q1`h@(jvWW4YL2DQ1mDM3MS}sYp6=cp6A8R-~8wY~Ztb8KoG3SYH z2C^x1Ix$hIJ}r8H>}C~Y$e0CIk7DxiP4QfH>UN$dYEeLLr{!f7X6vVqC*j!cdH9xO zz&w12dQzTq7N&T!?VQdCZ2~WL*g5D%ziIgLd{%660S^0~mz80U%d|Pg;~IQoRfboh z5T1=im zKhLS{vl6rN3*zz7agj?kZcc8dUI8;E7Nz40Iyh<_z9{BeJv3UnD0EQOnWO7~>Wr_~SKP$u5TR&8Z*cRzAbFG7~ z=@gb;a`>LRnBa$^a>#@HVgxf!z@S-E;! z5f28;&Q@PMD5u{@l&oD_h`H<9W@5S$U-Rx|bR9j|@@opn!4rOop6?idZ=<|&A3!BT z-`ACWkJRcG)a1haOd_#`3m0PEpI#J(A1>hOg$0hn0@CX=y)|G(np zu`+xU>m}~5Jp9{o(*=zT+I&ItZ%6$34{mzF! zdDtw)fBL%`bMa)Xj4%96_c84LMYwFVxEcj&cCnG!#`Pb@$b)VOt#`hlnDSbAoe)}r!zyD3Vj?GC9*Pp}tkK$0Im#(vX z4<;m2h;>RlywEb`|C;|7HGp3BN$k@J1y%v$fg5@lLF~3-+1CvS`~02 zP>jMi3xV-K3NI7*nMgB~Unsud<^!o zqr7W?b}dbdj6?se9rtURfHhOthfc=+1z;V}M&ZN@aX0i{3)}|#c&%1 z3YAZqmOK^ZpdHgn6456kzRGFz?dE#X1jIz5D4LG?0W{9wa%ZfY!|9qUu?qMA;&r58 z?o?zL%vVaR1zu`M)38}e3<8=LP(86}6~GrX=-Vd5cAzC4`7)#%91Brih_5P3h{sXi zQWr}!E`gp5Uuc#biSc4rw&rG|wD3uaWt8NN0+3Mu|H&9V%7LO6}U zpMmv7&=;ofz( z5Vr$O_fWWKXTWO^UOg}q{>=Ac9}_UX4DFuyedr>9rNH~d7h2^;t_Q#w$d7Ro+AZW2 zz~LfQs{`JS^cFoJ^IHdelEQfqd(MEFz}GaCM>*P;mgVQ#qPGjJ85ko{4apCo-XUBU zklJ$@a2mpE1X4RRJ}mW8)%7^mx3fd+7SG|h*=6~EjbEgnz#G+Q2Z^(RC?!rD3iXS); zC+b7=C%{r*J<#+K?o+^2U^TE7xJT3*$_`ODC?DXrh_|Ya`UAAPkI`P>F7y-Zts?ip zFA;Cmr?S2n56gbo3Z!x`WvmA-^~>^4uBZ0>rNMF(_q#rb_ZamP3;jaBg#NWfeoOYXazNqhKsh_eLOy`8S z5&16zHbY*aVND(w>ZgfnU_Edt8pJW6uiRhf09ALGHkQl`mmmf;}*^!D-*iw`l*hAsX_H zdf!M-c%U_b(rGi40~63wGy-d2UpiGo zy~cenk?@#iokn^_|B{3~OBkQIW+Gj1XU;&nfHgqsAM1f{qFgKNntq>+U#N*8aG$zZ z6Ny0U670tSHUpo<{iq^a6WQREc^bxTU;CvvWPK|FZbvwgOEvvI}e0m<)jbnPc~vaM0=k{0cpQ-36S=d7GS*6 z0IUFpu9KYhG|fl?GqyRw6{_B$4L8(NKX3?32BcZA?;fuceF=~koI8_ z(jF^H5AAoVMg5??E{7=}|0%{#_#qq%y4ZF=2QUS^>~>U9Ewr+Ae^Xp)$gL#`D-y_^IcyC(lJBY+8 z*wh^;Rzn{%HZ4aanPp2gBbBo1sI8ipi5Fi+S_riL9(F zQCL_g3)tlnE?i}0W#V7|`j^cxt`>(59TI2Ho~5-V3KWj;7X-IBT4=gspDS3j ze|!0I3=u%zKll9~uHZkGFJHNm9DILn-yiRv+xIKPZ-W~_zK37%<;#gTzQ1qZKApq% zocKTOT?t&2)!IK?Gto*h>x#B8;sQzq=0=JFf(9swb@fu#ho&gzhLVQ26f|#9c@6IE z7P;gMFf22}faOA2g0@jv;8M{Fb+gDasa&Y2=llN;^WsRTWcT}izwi6q^YeJ-o%bxy zexCC@@4R^8zoXJLTi?Iuz6Q^)F<4%4UEfpX*~sy;XJdYrH1^+HHG6gy*4Nj1{@JtV z<9qZ;KgYAoKZ)xmtY7ttzQ!V)zn1IkauVx{JW>VtFx%|egs-XUhgw{n zUZXVHHtjvZIe7ic&9_IRL(_cBkL!-lzjoQcjeDzr!fevVv!-}e4-x>Sk=H-} z_4@7;_g10DT6D+!Me7F#H+Rt2jc-=v`8xLMzPyidUx$ZCBZgnB`&aFKEB8-(8=I=q zD|ik1$j?*C8=LfP_6L2x+}J4kwx&O)sBgZ_{#HlXJcdSE!D! zt*%3QXgVG@bgLck*#lLJ#u-}PXFvCGoTsgthVLa^d7ySc?S$G5)ki4jUZ^J2bIJM8 zp+i+{Y^=KFmRl5lETv(CfNL4g%*<3an@w%qx>d{gJMX-s4jnqwBIn8cxlAc+Y3Ytm zl=OR(@0IPd%T-$W(el~z7O6C_Xm+_sTKQKAkc4?@-yBcajt^;19hxTc)9e+m9hx#_ zO8M-GL+xl2=EW?YB(g0*RzBocK5a^ZN|W63ZBsbkv+Fp2n#hrpCrg!<;(L`^>Ek0_ zoqR-fa8=+A(zRWUKJ3rht(i`wQJAKan?b^L>(ak}e-#iApn`&e)acQpRd{%~ijI!f zw3|G6vYI+|s=D>oTh$$R+@V&^8n5QenWOHy3-A0|fVTrJ!MjsnKUS<*p)5;7mHjWH z)iWzcsr%=QQ)}l%sK*wCs|`!S)Xr5SRdIT>TEFT}wIe%Oz4GV;Rh>Ie`R@{S%^p#M zUlA4hlBi*?iwb#5)a`GIia020!uz5o*NRF(o${%uXo`3#%b>PKPwfb98+Zsf@{PN4{ zwbx!#Z@&4a+P80?I(YD)djI|R)khzFq>dh{Q3t*g^~oonXu0_E%P-ZjqleYMeh}5r z(4bD9JgH@cwEROLVqkGfT?nD^%v7pNDTD{g-n9X8DwnF!GFVNM$!fVQR@suJw#gQC zQ1;P;YF1o^@xF1`XOnTJ%|yJS6lV^MpVNRnQ@X2%F@7V)J2Acj5{ zegmA0vr(o}>q>EU!1z54O6|k=8jSxK3*A%!O2P{KcHms zMkQHKE7?-1WM8e@coW7C$M}gDe<#MLV*EOc&%^j4ZPcTD6cTwLB7Ikd0s1u7toy-#T!xm9L?UR=AS71E<=0PaN z-;D7yF@71wXJGu3-9_aO7PWPMp z*wP_e*OF1cw^rLSBJ=G+{V9Xe29!p2pGr?H{Qs=9ZO7X z#JHGHOg}CnJalY$!ZqyBzrSxE*Zt_&u<)4hh{yGa)j=#G1<*p^LLc&1*YbOGK&L5$dFsPOg;tddZ1^Vgv2ak#ciDSpb#A+loj0XJy ze?sKoFoF;h8=KI3{P-R{dH{)*`w7D@Ob81chb3;p{j0~1*H~WJazCP5$8N!0gT}=~ z#)8V@eKeL=jVJR_LPv&&U*Dly$Dq)J*o4^Vak0%%!h|%J=!l_XBLXk*=yH?m25A)? z33KJTpKwEu%IEGJ9u6ijhhi;A~I8xA@~yWJ-JBXtjaKVnG4D5#42Z9PBu8xsjZj2<^^WUJe5^MldR z;UiBU4gEO1#GW=e?5k9yHFir6t%Gw>ftuc2e~&+xhB;bSY0H;OSD~%^xwHEzhCg@n z%{Oa*WM$%wExt!V>KK(Vcbv*z5}~%P9;ZszuT&!{;ZwlQMZGI(Dtrg}45?@zfBbQ^ zVZ#QsY11ZUu~<}IUY_<9o_XdO?GHZp+;fV)!rK)EY6JX@Quqolz4VfL>#eu6Z}8ct zwd&JPKgI94KT}_Q^_BYi>#x;!-yYSz!SUnA)z3fwtg=pu+5%r;-%oCKHn0yix)Ipu zpqH65vC%EZM)xQ-x_s4LwyMFhOHGzawO9_QEcsAvkwe(OPwg`*5E~*BZOPbdGq1t; z;TRu=@i7=b4dWMM{DT<33FDu}_}4JLwq>9BkDmha{l`!FKk29RR?Ve%@7_=%#t@i~N_8xTAMV?*wMWC0@<()h_`J!)N;8mSFa{fPh|Dgx2F6!H* zbLRk@1N!v8qQjNAiy>Fx8tVsKd6{3|fWW{2KfsUm2L%N53kc{Fpz*sB#e~wQkG@oC z-INOHgpTl)b@f2oR^j(XANI#M<)dSR3hud@j_RRI`2Tm6KVURGb_I{UrFO(;uKd4I z&V>Eh)+W3cp*kWz4=k=jSS1l6E8KK@$@>BD((x@lJ- zeZ5dA{-({FH~$&?&d#GpkAD8mH{X1Lz30;-M~)mqTYK!-v7GZYn-rY=y`Cu(tP_Z^dqmiF<&}hz<|DJNh^k#+f%%!O`8@v90i@PKpgQ= zoTH_@yj;Hc;tRokDu}x{<kwt=VtJ$v>Xg4o7w*I$1Z#G;27Zf59r%4z_5;Ee=Gd(rvz)Y zRKjmm($%QsiBSnZX~ov~%xhKy54MEIsDN3F3Z9Emjqi;1eBgia#TVCtkG_zJHN<7l zo;?}|$_L_2LLMN_q~(P$QYWCpx;=2U%z4S;n%@l3izRMpv@rBwMgVUB4PVQMj-@00y%>rmB8U8kwL&=zzZV2&xx%25V?V- zrj6|Z9(^?Yu=Qe8!f#ZA7e;$NdO|&*y!`oNksE77BHjl5i34~r{0))ofy2Ugk?&|i zynCNW&@L@jh%C0N^g^7Jvb=W4kRiU1g*C(je9-t9c(5fcDMzG#TX>M}q&ay+xuN{i z?&8d*0h$E(Cw$P1!&v+tY7Af<2^GyoITC@v#&>wq-81|p?kNrqk z4SujC{Dz!U{>cx@6=lP~g*r|-quf(BjFx)Aa?2+oHvxwj$p3iIn>dWF7P;ZgW*mZ` z3y718f4S~XJKCP2;fF2GLX3YH_^^(8M%&UB9+Y=?o)~h)mh|U+?h71CJL6uaeg+*S z4j+j`1BY?Iq4bD*k28M$7I)U40hwMu{P2TdpE<1(2csHzw8awx7k4~<`spXx_v|LI z-WMb57l+E@i^4Quw|y=$qKIS!+S1$hRlQ*`b?VyeWpzs06m~SUkiDnPXB^D zTN^lN_`&bBh+X)?uCF03w1;dB9N1FsDc7y>FyxD}PFbqmyHyJA36b2TqvffTF&YOV zaL1P-x4LkMs}-3Dn4*9~i#`(vmp)%dn*^KMA2z8EaPTQ>wyl_ERVy4c{Jy@vE%qOK zJoouu@q_xy{lMS{^?}!ho)CW6J*jwNme`kvNd7&eB?mZc0uC%QU_WmM4)L(@fBIB} zI2ig&91MM?O&a_v=>DR}K;i)Uo1PV!1UrTDR$K7H-fQ`XuC1d#M4dD6FmNFcxF5Ll z#K46u;isM4wklkl_l^=9aIgXg%iYcJryLcT{uOYj7x^=Apgz+k#lR*R`b-=QeI^cu zKGP=o@6_<)sj$;ZFX|ch7x-B%l{gr+H6DhpxZ}ak#DQf;+70sbeIv#Bmr+ub3LKV= zmg5bF!Sqs8t?Yyy)F*ic)pA#Wzvm)h@ zrMJn)?^X+OaQ88^KEo!lv;{xxy_SE#vyQM6F1Cb;a8n;hXM-oS@$UXH{UPE=`F}BE zjJyCG%7DYx6~FeG!BH5J_h$^!^aqg z{SD<;@=u$=J(zw3Yhhub*zIOBjASQ=%3}+|w!Nj}-VUS3`sA?5c6%TAX*(`=EIh{$vvA?U*9j~2kvgz)T^~8Qfc}T=Z)NDdVhBJF`jhkb0&0wr7d8M?+~l#24DYA zxYqDrd+oKu@o3M&S+iz+1wUHzAtxtCCQX_oc(zFX_P4(Ya!T^pV~=Tgc)lmSi39fn z?h}+NR-R#q1MMm0kb5C%^wJ}dvcG`vpODw{mYwo3pbPXdsL!-X>r-P1{yEQIi2Xf; zROl+o4`e+H=l)@M4#oi;7TlB6)Kq~^2(Kqhn4tY0JP)JoCt)Y7tqTrb% zK}<^q4jd@(tu-u!gZ`3xB@RY4@L{P~*hI9F;}A`a9G#(fAI z@o0?;V-VbjDfje|s4I*|l;b?f@8~0OpCB%66p-MDkIAp!8vo&3&|NcPl(qNXd+#rV z6VHw6N}V=v7&K^*;Mq0J2kse^dHOyE9)y?hQ|5^$&jxI%57ZIrgTWKFltKC?#@@rT zH_y+Im){isq;66EAxjoKFLsc6ij272ci(-Q55$3X6|rTBkB`^ilLy4XsKmiI_wr0h zADePdIN4H$h?^l_{GL7)eQwy2za#cE9M2g($}`0Iz)!hnr7SVtOq>WCW6pT?PU~+( zM1+Keg$bTc(R|>2jxlgxYsi(s6GKm^AB5d#DMvgrP_F0)l6OXY1MoB5b}?#uingD? zdo5A`zM$b6>hlXPyr6L)eHb@{erOzK%$Ok)Cr;F|g`B*GpR^{;i3{PT9?<^qd!7*} zKlHWBp$F6f>ICPd4F>GLV4gMJ-riy0dk*4G^#GbVALe!1Q?&nJ$RPb6gRX?9wzgKo z1KtXJ3qDn>^#S}A$eWe{?op&O`?KHpCFLm$`in)=3;u#oSx3y@RoOCV38Z7XzL?{Bm< zlyAx$;in!@FUb?i33V&8QqhJ40KvVoA?8H&SZ}|V9 z_Zs40*hK>u0|&OGH*FL4ZhcOmOmVMur!QgUHQ^_33?G7d9m+jri8QAU!DeIwj`M-N z1%7w=r;TvuM_W80UW~Ede*5i$=W?}t8#H%s*^jbBS?BlM0|>j3AHf+3zXCmP*fsoI z!#Mw9?^#E=v?FVfg_ak?nkha^mZBM?Ap3uLi|3kc(mt&=Dv3=#0SG3(F4XCe_cfwCS zfIQ}5`QIxu?ilnUJ&pJ$>_kiahd6NWr2j(uM>*hr#J!U==9!bUCm-kw7<}M0Z9Z)+ z?HJA!I<@emvq&mqjq4(TVhbMF!np=F**Z;n@ zgKItySBqc2U_F%I*&6d1^Si;F&gpSo;cDxCPn+g~Q<_^3SKGnWc5=1dT&<6*4Ry6? zu2z~`54Qe*$AlV&dY;c|U4WtVZ&@kNXY>`p=~bwRg3Ae1_rhytR9eRaFr?#oeIQ&){<&hrRt0d%@SROYg%!&q18*F8IKa=sy_M7yic4 zImmG^PsUhi7~;3gc{5*p@OzOeMCI^%B$jW`|4ij7*zjDe*+~0I8_Dw$VPG|K7%rdx z7uePBVRH|_Za&9}nKNa+k$EoWR~Qp#e(3FEBGtgX9l2f~+G)fUW+3)7l`znE;@Ok? zBkel(BHC*Dvh-7UkDpnlAy>tmCv$Dg@$mTt=BSw8VcwrPHkLCXkMDhW2EZ9~An5m*TW zEA2ZgX~O;M$f5V8;QpyPFTr>?%biD%?>gL^H@yWgFz?G}AQ;^T`D|rp=r)WAeuOgyFvc1M{BDpKEyp49vAL z$3uB!j*7WX<_T|wj-XV!c;dr-9C4S0`2F2o+?!bq80d45CiJbHDC{=l8Wv@L3wlW2-!!57$RNWd`C3Q{Ca<+LUv)EX=ntN5Xs| z^HkfPNIqxI@bHf!OKOqx1PpwhhdRNWEsKFa{fgzwmoH39OS_9cD60Vn<0hm93*+m| zH8ID*Tp9CB%x^GH#vBuK8_bb0zjWWs=KA>Rxk4DUJRw5s)(Jx%M}rP1E&Qi%hCIX! z{O)opZ2`~w^v{VmVId9J?$4d8^M=ejto}WD{U32UPr&#z<&imj#-B^<1z2P@$qoydo?l>>W9bk3By zx;21-`O;S9SN4zVKk~>UGoE_tsj18j(H|!qq&d&kJX14nN;pUh+9Td$Vg8oS0T?>b zmOQebOV-+IeCT5%Ua=7ImIb84qmMqS?H=te_dnWy$^z*@S>)P;g@rot&8G+D$fxf> zCtArPbb|88($>O;{PR4{I0s|8q%qG|&_#XTqHYom() zp%ctsQyw?0yp_whx&Onq(%<&s`p89m5*kXc?jD_+#yb_{;fEjA=R3kgyGT7C9HasH zL)v^_|GvCsnJ3TQAFiJTFyt|3`FMHypULvoXK+qV$=YdT7&B(f5X5_z6A$Du7u|X1 zov-5e+cIz7JRJwdGm<)XVVr$PbJBzK=lPDZKzb1V)`fGT-+suJ`(At6`n*71Yzp*V zp98tqGcUv368tQ|bKe?o*1ty!4luQ=#7u95!On_O4C%^!kQ8 zldi0UgO%%XKf*f_v~A$Cs>Gc#M}Cpk#G5u5v6uYcxVB!O>%i7%``;EEh7XM290-2z zsAI+S3mJ2wJpPWg_4>ru*ncTY#Fulj(&ka;sN2MoGREh3`0NFK7ohFKdE(8rS$v3p zYr4DBpFCit?WOG_pYcuz%HI*h!ydvMjGvru;crd6&a+a#&Sl@u2v?I2ezWV*@_SvM zbkG9T168%7vY#==2SZpx@tslA@R?Q8+js{{`mcVsYf@(_cvg#Zw^<;M5t}z}-ijQ} z3D~G_@Lb5>^YimhvpdKE9K{@qY&M(z9(^vz&CQKQJbPDhak1v7v4@e*u<7r(FUEWt zo_}VX^(V|x2l+cjJ>=P#^6JDH{u~J?+mSqNxCp-i1Xm-i;cdq}Aquoy1L_H#` z^c^VM)z9Zi)}m(LaHi}0#`7c3uRJU8tP+H?(vyITxmKRZ2|MMV>lUqy);`YnID>5f z%$$Q~ah|;xi{QDB=gwf9I~k*(NI&w4 zdl3B~mYolb)BYCEA3S^T>_cCd=MBfkhlF$R93BNY$UnS$M(4R{!$^m^mn^b9eY8GL z(s!rd&T|9LPAd{`)N9;QD^iGaEq>=MX=!Qt84>2y$VScAGvI`9XW?4huhXFE_@rWq*VJ zq@Ce+)ncFI`rMCrPT<_M%h>zV+{e>S6K>8!THwCcC+^vdCvhy#+1$I4i#cs9=ULgw z5$=VmI=HGrd!}miVSm(KVCLt{-TA6qy3gAruc=9xui?TjFgnb1$WM0Zo&i$Q%3tO zU9xaw%FLw11v65vT`+g%l0_+tX5W47%tZ@E&PZ8s-Lk=cCj7~@xw8{f?w;zt8m2Ot zLhfF&G)4beKG$r%=a_AXuO5eyDTyMaZBbd!=HAVlbF(S z)BX0iR1D>xVw;$_EOEYRKK~!>HzOr_;j%^Z5|{Xymd*{IITL^RZnWR*8S_&T{Y-%^ z^MnMRd6kgB(_jh-Y(WmgLjn!D;lf?u{`0wg6fi>{Apd1Kl{t0ziwF%ljX5gUJJ*!! zpBtAOpF2G_IX68wGuND3np=@uom-cSHy!7B<(cw=^1|}s@}}n{=cVUm=9%+K^D6SH z^Xl^O#$&6O)npB_hFRmR)2+$YbZe&7Y%R4`SgWmd)&{G}_sTcr2jz$5$K_AYPtH%z z&&)UHm*!XGSLfH|<0TdaUInItpn|Z1xPs{g$pz^JnFZ#8(t?VD>Vmq0h5{&Fp{X#a zFsv}HaC%{KVR~U^p}DZMu%fWKu&%J7P!)LWUhQl+DX#vIW_~Y;m^fHjt^*LxrGeh9(v8WB{UUz*LxD2B<0lR}CPm2W*}N-Ua@E zEf~;66<|;Wh=+g5;%V`+cw0;se@l=h*b-)mvcy^9Ez>PYmSjt+rOr}sX|Oa}RE}qk zSB`g%DaSu2C?_~4EGH@_E+;-`dQMVKa!zVadQL`8W=?jFIj1nEG^Z@50(_~?sd3|t zXReovKS8-+xlt}IC4o<=;8X^9l?`qcf?s9eSS5H?1FqGBZ;jxbCwS)#?)ig%!QfyN zco+{ZCV`Ks;A94PnVnZ!SO#iVf}S;?Xgz4!2&#I5uHK-mKWG~a>P8g-?`ph%6irf5 zYEec}c2QwbSy5$CO;LSOW09xL+vaZzwnf?EZArFNTZS#$R%k1;RoZH7^|nTvr`_A` zZx6Od+2id=_EdX@J=(c1dALSxIF{O-X%8V+mfbtD1nD zr`g-=Zw@v`nd8k#=2UZrIon)lE;Cn}Ys~fLMzbgQ?hl?vf!|5sb%rI|QfMi&R9b4l z^+t;)`0Wo~M}f~t;Bf}{TL|7(g0J<^H&5`>KQ|b>jL%I17c;=YLU6AVoT~@dJi#%4 za4QO&N&=TMz@fstvb@T?n!NhF#yn4}x7FVoY>l$UTa&D*)(mU5wa{8-t+duy>#dDe z&wTHE|NP+msQmc+r2JG!cea-7N=S8mexpmKgCWoH1xW>|1sMg|1**YAJqEch{eP~b&dvyD)uTi6$cfE6~`4%FHSB_FU~AB7nc@S6jvA5 z6*m+sr@4047!!byhg5opsIzrz-I(F_i?Bgq6gVOfN|;NiWGP zF_)B;3SF;&wpT;n>u3x9Q~u9U;J*PPbP~}3 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe b/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe new file mode 100644 index 0000000000000000000000000000000000000000..46139dbf9400b7bc0b64e6756ce17b4eb5fd7436 GIT binary patch literal 99840 zcmeFadwf*Yx%fTFWXJ#sJ17GIjf@Z!jhAS=Bo5RJ%*Y;@2v$*4R5Y5>N-GUBf)zD! zCoRKvTCCc7THD&|v8VRfp0->qBm@X|0^WkC;C+t+8Wocu!hXNc+A|?wdp_s)|I0^b zulwa$&w6g_St~U+FLk+HE>|A^+qTQKg0K9mR=@xIk45&7(W{2I{yuQ~nJaRl+t0jy z&Nt`#=hff)jru#j?XSJ#JKwoC=D+i9e|`Kr{%?NAADVWZ|J(Q8b@v5@g@Z~nO?QmY zpLpWFv)Z%&=U1+2f0Fo*(#iIJsPCigAE@t&_FwS*#gKorKgRco`_69Ps?rx{%D<5L zu2$c#f3tRuw3(g3^sviy*Y^jw;%6V7l}+n%jd2am9prMoM9P0VsZE#jEmGm?9QjB% z*X8oa5C5`Xl?c$1?p$)J8?%)%bt&mIlKn{COo{|u3(v@LO_0FS9M|ur^KHm+y~I%Z z{&nTJ?qUGdpSfJ8_a*)x0$ncGCTFPsvhW45yBEgDS^pwGG9a0|EPlU#ewS$o1V8u=eYEW^?IVIw49Wvxn-3=JCdAS ztS6(T<)P#xyTaBJp;Etf>6uhX7IuFLHStyMm-?MF@rN3kXl{w0r#J77U9Bg5M=7A2 zTWw!~lu3A+GX(~##2@T)xzb~!NzX@8EO~utd2nTsE5}u_xjj@me#Kyyt1hvq)NgmJ zlm)kams5UQ+qVC8E{vFg`1;L-l>c=u@oS~?!gJMJ=F){Tm)+5m<}xxnmue}K@ccDX zz?sYHH#2kj`u}Y%_fVd>=!sdSUOf>jExJ)R4){&ak&Eco{6aTBsn{DeH%F6`zSP!q zM9j_BFW7QXa})55m6)CvRkzy*y(Trrj^fF8`d?u~e+L5xO zy8B4#2Vli&$WWfS)oMS*>6cC+6i1pFUDxq`Z_4x=GTS2NtGc{bY&iUh0({V+7Xyn#-l8VTQXDI4WA);RAYE zFLQnG3}>!Ub0d8+Gb=!!PDf8V9Z4@2&`VHT9(L6QJU=5j?x``~OV>$j$)76t?PeY? z0YB^Uue6vNk!^AE2}9rWrEOo6oKoYMlfi4nDYrfphwJig0}~63*H)>b!*$UZ4R!^xIqxL9714zlDzQ( z!KT^PkKt%~^8B9);;?4t2UiN^V92`pO2uX=GhR>3WheWZ_PSinEm~6(;9M)aI{hGs z_lLt$|N7E7LTF}M?=Vl@l&DG6?6kU1rPki~*Ht`S>NFoUzuNpb)qH$Zh3tjW*(~WT zG;LiCm>5`mW7?xSRqa?W6iPR91P$rg30=^XB*|X5kHbj;ncd%v-VB_AQ~S71BJV#2j6#Z!X)6?OVBr_L9C)6g4+lw^O)cx2)ql z7{(lH@-&xgWw&kHfNb6zIxV*7eC`21b$U}uR^+3MIjOM9E=Q^Efu>%iKt+E zwA8;+1TWjSi#k!tFwOfIT-0o@*lf-1wQVyb7=C@}OjaY|x%sLb3O`L@!Oq#X?{FqK z)7Sz$=4WHFPo~>GL*hx_B4@fOX)Y@1r;?uCtFq@nnpkP^jnMlWgu&?Mht&EGwG=)l zS$)WSa1D4vilVq7ZTVDh9cWlqXB-|A8y7TRv3@NZuq8f{x))2`FbE$hXW)8rL9w=ch;%trI=h6< z6cW;-+o6}2QimE=jubaG=4Of)NO6xdHcL0(tP5406&tB7A1vty;Rv)aNH^MY$ru~| zAd~Tu%7}UELW!}GDeS<1B+CPGWqxXWa1bHTN%mTuapjo!Idw*0j5D4>3Nd^c(sv{~ z+mg|qE5l=!6_g0BfIX<$KZY#BF7wwJ51%n6Hu88wmqYD43t`40EJ3 zp4OO=wtSOS>?9V*xV7c(Iwts@p174xpx?SV7nC+P3XKus;)i(8x*a(H(l8S#V;;z` zu=qIdPd-~I+obWpGx;)1&puz4jw~G@n7i|3i1ZkyP*+tM^CYJoOXq9Lcj`tLC0p0izuqNlB2h;@tp6Dp!74QX6Aj|sU8bj}~qP*oVy8mb1x2I+RI9@td>QQFNupg!_K(x=gc ztoYBVT)p^mMJ~&ZM9ns4vNCnlbiX3eFhB0b$hZ2o)WB|3j(!k9$P?v}; znyx1yt94Z@M+_8a5nr-yfGB_p19fnvuIlo*1#XR1GwAxkoXvhZ3;fE!4M05&Qz zPBa1Mx2|Qc3&o2-s}ygy9zYs{CV%x`U7a>sBq1sU3hy{2#}yx{x3(75^|ab{JomFU zy>)X@YR^b0dWQdJNcjvA!F1^@Z0>iog>c2ept(UuH+r&#MHylJY#dzAHJrAsvk6wT zq#6mUGP_lo*y}_fjORMB9oApYl!12&FPtv>xzM^nwZT%l(rYPsL41rgxvyD(CvbtVOd8dWk0ASxn6}95;ohA{Z=%PfY>f7kRYXk z&XKIG)|;7cJ#7fxlDVY9(x4vLGXH#~Fe+V9t@|F`RMXFuv9)>iz`pu}U(x$iaS_H* zEB8n%BY?%Jx;Ypy$8zmm*_x^TH8b+Q)0Hvt;_2){b59IgK;hYht#4hZ$c$GeKU@-? zynq2GeLvnUpTb%`)B;u}Y^OxJWOtNRQwd;(ZFYMPc&e~UWl5X2}X?9oo{(xpQbaG^v_t5(SpLsLKh!vxl(F< zr#nf7lJq;0mWG?(jcE>a=8Z)tY<@R>R=a1{nGR5#j2p=aLfP7&XMAnnAGQlxvIO&F zM=u0dtFsy-yIK}&cd8B%e4B(>ww%;VVxpa(8|0*>s;q5FKqtvum#UH!XRolgUcC^M z+iJ}NYpB1{2H?_&b*fWOu=jFBH=<@M@R@fZ7=h;0%c#J*5!O%rvSgjM@B5@6u3SkR zYT;0a?4Cr1uZEi-|6A^IRbFV{X;mb|eAe~S1eiD2x|$Foc6Gulrj--hU|Ver7E^F{ z{9$X4Y}~};BHdit;*uacZSe{fn#u$BiX}USN$Xu+770!}k1FicnR&6tc$wl3&h1~csLzT(hIJr0n0j((aGwtD={$uQu z|K=e7&BFk+&>y@Wa$Ak$9|1>|wJB(>uMw=?A_Il`j=|1&a{{1^nTv+F|i4^|Bsq`RQM)GmZr72l0FJg1kDT%`c*h(W{brRZ@#z zBpTh`9;>cHcL>x4I%6Btmmt`Stm3y`y#m=|xuzo8@=mLrxDu^1wFXHokJQ?Rkf|+i zD{Bo^qQ4>cuuA2|uLW*L1vjUQSe#)wNH=p7md=9d0D|!qFr3{{b5E7$=JSE@0$>pP zUS|GGIy?W8%>1c~F5b-iqh+s6)|MBXijJgaby&@+)sKXGN}chAO8Y{kt@B5Wb-59H zQ;achmN9RMt=E>X)0S^8+XUiDlc=E93;^l0f1*uLXtr^9|AIx1>7seFu7wYS?v3Yx zD6Ev@!5WnI;mn5DdId+3`oF>Vvs6;uw5c@eIeZv0TBr&AeL zTH&=b#NH@Krzht^Kohs}f4ovpJXnp5Q3vnu9LRJkHt2~ko4vb6@bc4)Brx3Cj#V)$ z3EV_DbuXmaT04Om1vb_XKt-xZzZNmWE>j-{jIR$O6e63g5{e#Dw3r{ibpaKkwflj< zmDcy9Nx&t-#dipsuGHz27NtrMwUFPN7l5=a{yL!t{}7vlQu#hs7$k;37SVK`+p{V359|i}L)_ zbYp*)HJ;JwW&1^EfWz3abK3K_ZG%OgYJDg~8;TBqwRYDVZ^%|?FG{;3s5Z@ZyvX|V zY1xHKT}XQZi3|t;NCpa6G!z%I#zSjp=@jq+`<$S_eF$=9XS%?;n|3ll(Ua4<8mpwQ zxW{@7!;FZ!H7wC~YnmumCM#&Nf+j0yvVzIGi^Nul^{h`ssYbUF%b7zeI;@?vB9zwe z$jsIUOsioLHkW_3Y2hUf4@o`8j5xQD^9m5Ck^_nHk;LS#h*4{~tXuL080#x#KeKQA z*eCmJ+enmR*fu{AbIcsw+)`s6t`ULxQ$2Bg={&*LQ8l28uco;>ezrAdRNsdG9GTle zabaryKBk6oP&Z#FZD6fsg@&-s#wI(`b0`|vbl*9;ami*X?g&5B=kKoA1*J`bBaqJhoY4?bjMQ4>W5{hT>lbFZSga~61m=Ef*{b&g(U z={aPJd5)jiQFoVKwkh>%RgL_x*%}F0^>f02#m_VXAKr&CWnI|(G}!Y=dZ2D@2$`Qp zdb&bopQZ;%Fz{hmoAN2m3r627de5#f>^jq3#C!$5``eHpoMZGgdhOUfSZ>R#)O}1y zDii=GNrpxB2Nx@Vz#by@Mszm?5mCJ6$Wl_~U}~QtmjJx558%Qxtlyxnv~%Li zZoHHt#0Eys!Op!@M*A{8KT7)S`BBq0=c^9lpDN4#tjPeQFtue7SuhX#$TGawW2mQCz zk>^$N5WHF_*=u!yO>t3-!YhOj5}S`y;+Z)-hs@2|@;p6#)=DxEe-Lbh)s~0MR@>LU zUQ9Af*rP2cLtEaeE#Ep;IF+bXif@K1_STpkC~LqaKEgVm*=Bge7gbg=lm9{PfF+40YkEk+I^i=wzWl3rq<1h|w{(E=*eo&@)Gg@uE*@<3y-6U3PN4 zoPSj>uIkak$oS5**!MGYQ2b@*aStMwLW9BnO)5-3wN8>75A+3QanDWY`)jrnBqLr zWd^X6JYJ4{>*KO}in`aiV-tjpFq+n0kMY*%h?&=--?MpUcgX8)i1|duOAl(O92C#B zH|TbY9&p!x0--w1+>q)3x=p(meq#Ndp*f>W-3%&puS1`Co=h2GJip>#>NiBn9w@3Y z57d~4+z)sot;ak;o8Q-a5>lXNNC-h5fX`l}iJ?3x;-2F80O-OJUfa*&B1450vUj z&tr(`SJS)dIS>7_y{so0x|AJo+=MCiOYmP%UyPVo2{QB@2^J*J=)Zf|FIj_!&-&xA zEGVqY2(n=5QC2UUZK>?Sd`1QbCG=n+qfvH9)zoeR+=!X1l? zeGrcMy~pD7tQV+dRF2V_AEhDdzlkM^Qwsc1DBp>33N_Wf&PEelol%?>B?RL9LG_K(7{7T-aky#k{eyzWJ70zpw-l#G1-sjFV#E0L#)bs7 zRqqU{&u^bxD%(~n4gH!_YFC{5Ot2Q5!UVb@8HQPlu?204DPTvI%_+t^88iD5+vM@h z88ka(z=u!Rq4|9Sx1NCI$>`5ViyLGd$%%Q4Bf0T6ES=NIrP!B6F5PK;B%8KVLYqi; zPEEhsH^!B$|AaB|TN9zQx>@pB5$c5biPmI*6vC}5^s15_B*x;_l*B9VAdW{w$#SX7z^2O9yGo9S4qq#c_GV0G6;?{(f%f}Gl2T_(xPM|?bEIi2 zKn|R9fY{X1JH@z_3@yyfvUZ?%Tw&_tL(aL(ak)dusNw>$65-Zm?FYk_R_tZ^&E1Z5 z_f+cz?YKgu6Hec!C(aN_)2$~)n{7}Y$Ey2^h#Ic~MllRAu4!^?Q^pvh80%ND;-bk| zpMC@aCI*OVILx|(<}ym)4FpXP2B`&uzf_Gc|WOMW`rYzYVosqJ^yDH=A(Q^b#rCgr@C+jOFD- zjFw!iyO3IYOFTsb@uIpgb)S;DV;FFH9Wqe+alOQE>;#vUk$IR^PpJ%_x8V$f+tXKd z2aAo^71m-V%Z4y}tuq8+*c#mkc>rOmgEJnQNkfpQj+c=SvgRI?ZCpFvWz-gDI86CT zd!!%lqH@2@G0ggq&NJg!pg2_eEXGkC8(`c~>`Hf87YxX7vP9w9woG|O|_QpzapNxOF zaxjQdSEU!n_f_mQRy5JnkoyK!J=IGrgDrRbZ8l1r@#K$>kiXeGt48>gAG zuW}VLNO&4K4YcmMNrflUnl*c7rmR=WuA!_|Gb57(*>G8ZB1y@));TFLNXPP7#GgpH zKeDjhq0+fI+Hw@a;L1T14{6~oxO9ldu+y6Gz5rX84@{9ckidXP z&PWosSr_uVRK$y?OIOgC-njl5KI)7ET0Y+Tl?)s)G$p)DXeTJaaxIp!$-;5W$M*eb zB@xq8Gz2n4*E88pBAm|_{b;6D_(yU{=7bjw!4(VYoJm$vp9Vtc4P=!|sM=vMNlyn# zri4+3aS@2ZeP)W=!E83@>Sw{AF}m4Qss@noJk0>~WF~5~Kw3TLNRsJ!L_P`6XM-iy zRJv69OLz{^cDrW_i39UoE$yE5gdo6D;W3W3rCStlPcjpphaDZTBs`Z;&sma507TAz zzehR{*vlf@zPpJS6NgX;3EC+)igLE^uH~FCN>}P^<}#_%xL(E%A5y-Jw|FCodx|58 z`F`

This is a doc

') + + + """ + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parse(doc, **kwargs) + + +def parseFragment(doc, container="div", treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse an HTML fragment as a string or file-like object into a tree + + :arg doc: the fragment to parse as a string or file-like object + + :arg container: the container context to parse the fragment in + + :arg treebuilder: the treebuilder to use when parsing + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :returns: parsed tree + + Example: + + >>> from html5lib.html5libparser import parseFragment + >>> parseFragment('this is a fragment') + + + """ + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parseFragment(doc, container=container, **kwargs) + + +def method_decorator_metaclass(function): + class Decorated(type): + def __new__(meta, classname, bases, classDict): + for attributeName, attribute in classDict.items(): + if isinstance(attribute, types.FunctionType): + attribute = function(attribute) + + classDict[attributeName] = attribute + return type.__new__(meta, classname, bases, classDict) + return Decorated + + +class HTMLParser(object): + """HTML parser + + Generates a tree structure from a stream of (possibly malformed) HTML. + + """ + + def __init__(self, tree=None, strict=False, namespaceHTMLElements=True, debug=False): + """ + :arg tree: a treebuilder class controlling the type of tree that will be + returned. Built in treebuilders can be accessed through + html5lib.treebuilders.getTreeBuilder(treeType) + + :arg strict: raise an exception when a parse error is encountered + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :arg debug: whether or not to enable debug mode which logs things + + Example: + + >>> from html5lib.html5parser import HTMLParser + >>> parser = HTMLParser() # generates parser with etree builder + >>> parser = HTMLParser('lxml', strict=True) # generates parser with lxml builder which is strict + + """ + + # Raise an exception on the first error encountered + self.strict = strict + + if tree is None: + tree = treebuilders.getTreeBuilder("etree") + self.tree = tree(namespaceHTMLElements) + self.errors = [] + + self.phases = {name: cls(self, self.tree) for name, cls in + getPhases(debug).items()} + + def _parse(self, stream, innerHTML=False, container="div", scripting=False, **kwargs): + + self.innerHTMLMode = innerHTML + self.container = container + self.scripting = scripting + self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs) + self.reset() + + try: + self.mainLoop() + except _ReparseException: + self.reset() + self.mainLoop() + + def reset(self): + self.tree.reset() + self.firstStartTag = False + self.errors = [] + self.log = [] # only used with debug mode + # "quirks" / "limited quirks" / "no quirks" + self.compatMode = "no quirks" + + if self.innerHTMLMode: + self.innerHTML = self.container.lower() + + if self.innerHTML in cdataElements: + self.tokenizer.state = self.tokenizer.rcdataState + elif self.innerHTML in rcdataElements: + self.tokenizer.state = self.tokenizer.rawtextState + elif self.innerHTML == 'plaintext': + self.tokenizer.state = self.tokenizer.plaintextState + else: + # state already is data state + # self.tokenizer.state = self.tokenizer.dataState + pass + self.phase = self.phases["beforeHtml"] + self.phase.insertHtmlElement() + self.resetInsertionMode() + else: + self.innerHTML = False # pylint:disable=redefined-variable-type + self.phase = self.phases["initial"] + + self.lastPhase = None + + self.beforeRCDataPhase = None + + self.framesetOK = True + + @property + def documentEncoding(self): + """Name of the character encoding that was used to decode the input stream, or + :obj:`None` if that is not determined yet + + """ + if not hasattr(self, 'tokenizer'): + return None + return self.tokenizer.stream.charEncoding[0].name + + def isHTMLIntegrationPoint(self, element): + if (element.name == "annotation-xml" and + element.namespace == namespaces["mathml"]): + return ("encoding" in element.attributes and + element.attributes["encoding"].translate( + asciiUpper2Lower) in + ("text/html", "application/xhtml+xml")) + else: + return (element.namespace, element.name) in htmlIntegrationPointElements + + def isMathMLTextIntegrationPoint(self, element): + return (element.namespace, element.name) in mathmlTextIntegrationPointElements + + def mainLoop(self): + CharactersToken = tokenTypes["Characters"] + SpaceCharactersToken = tokenTypes["SpaceCharacters"] + StartTagToken = tokenTypes["StartTag"] + EndTagToken = tokenTypes["EndTag"] + CommentToken = tokenTypes["Comment"] + DoctypeToken = tokenTypes["Doctype"] + ParseErrorToken = tokenTypes["ParseError"] + + for token in self.tokenizer: + prev_token = None + new_token = token + while new_token is not None: + prev_token = new_token + currentNode = self.tree.openElements[-1] if self.tree.openElements else None + currentNodeNamespace = currentNode.namespace if currentNode else None + currentNodeName = currentNode.name if currentNode else None + + type = new_token["type"] + + if type == ParseErrorToken: + self.parseError(new_token["data"], new_token.get("datavars", {})) + new_token = None + else: + if (len(self.tree.openElements) == 0 or + currentNodeNamespace == self.tree.defaultNamespace or + (self.isMathMLTextIntegrationPoint(currentNode) and + ((type == StartTagToken and + token["name"] not in frozenset(["mglyph", "malignmark"])) or + type in (CharactersToken, SpaceCharactersToken))) or + (currentNodeNamespace == namespaces["mathml"] and + currentNodeName == "annotation-xml" and + type == StartTagToken and + token["name"] == "svg") or + (self.isHTMLIntegrationPoint(currentNode) and + type in (StartTagToken, CharactersToken, SpaceCharactersToken))): + phase = self.phase + else: + phase = self.phases["inForeignContent"] + + if type == CharactersToken: + new_token = phase.processCharacters(new_token) + elif type == SpaceCharactersToken: + new_token = phase.processSpaceCharacters(new_token) + elif type == StartTagToken: + new_token = phase.processStartTag(new_token) + elif type == EndTagToken: + new_token = phase.processEndTag(new_token) + elif type == CommentToken: + new_token = phase.processComment(new_token) + elif type == DoctypeToken: + new_token = phase.processDoctype(new_token) + + if (type == StartTagToken and prev_token["selfClosing"] and + not prev_token["selfClosingAcknowledged"]): + self.parseError("non-void-element-with-trailing-solidus", + {"name": prev_token["name"]}) + + # When the loop finishes it's EOF + reprocess = True + phases = [] + while reprocess: + phases.append(self.phase) + reprocess = self.phase.processEOF() + if reprocess: + assert self.phase not in phases + + def parse(self, stream, *args, **kwargs): + """Parse a HTML document into a well-formed tree + + :arg stream: a file-like object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element). + + :arg scripting: treat noscript elements as if JavaScript was turned on + + :returns: parsed tree + + Example: + + >>> from html5lib.html5parser import HTMLParser + >>> parser = HTMLParser() + >>> parser.parse('

This is a doc

') + + + """ + self._parse(stream, False, None, *args, **kwargs) + return self.tree.getDocument() + + def parseFragment(self, stream, *args, **kwargs): + """Parse a HTML fragment into a well-formed tree fragment + + :arg container: name of the element we're setting the innerHTML + property if set to None, default to 'div' + + :arg stream: a file-like object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + :arg scripting: treat noscript elements as if JavaScript was turned on + + :returns: parsed tree + + Example: + + >>> from html5lib.html5libparser import HTMLParser + >>> parser = HTMLParser() + >>> parser.parseFragment('this is a fragment') + + + """ + self._parse(stream, True, *args, **kwargs) + return self.tree.getFragment() + + def parseError(self, errorcode="XXX-undefined-error", datavars=None): + # XXX The idea is to make errorcode mandatory. + if datavars is None: + datavars = {} + self.errors.append((self.tokenizer.stream.position(), errorcode, datavars)) + if self.strict: + raise ParseError(E[errorcode] % datavars) + + def adjustMathMLAttributes(self, token): + adjust_attributes(token, adjustMathMLAttributes) + + def adjustSVGAttributes(self, token): + adjust_attributes(token, adjustSVGAttributes) + + def adjustForeignAttributes(self, token): + adjust_attributes(token, adjustForeignAttributesMap) + + def reparseTokenNormal(self, token): + # pylint:disable=unused-argument + self.parser.phase() + + def resetInsertionMode(self): + # The name of this method is mostly historical. (It's also used in the + # specification.) + last = False + newModes = { + "select": "inSelect", + "td": "inCell", + "th": "inCell", + "tr": "inRow", + "tbody": "inTableBody", + "thead": "inTableBody", + "tfoot": "inTableBody", + "caption": "inCaption", + "colgroup": "inColumnGroup", + "table": "inTable", + "head": "inBody", + "body": "inBody", + "frameset": "inFrameset", + "html": "beforeHead" + } + for node in self.tree.openElements[::-1]: + nodeName = node.name + new_phase = None + if node == self.tree.openElements[0]: + assert self.innerHTML + last = True + nodeName = self.innerHTML + # Check for conditions that should only happen in the innerHTML + # case + if nodeName in ("select", "colgroup", "head", "html"): + assert self.innerHTML + + if not last and node.namespace != self.tree.defaultNamespace: + continue + + if nodeName in newModes: + new_phase = self.phases[newModes[nodeName]] + break + elif last: + new_phase = self.phases["inBody"] + break + + self.phase = new_phase + + def parseRCDataRawtext(self, token, contentType): + # Generic RCDATA/RAWTEXT Parsing algorithm + assert contentType in ("RAWTEXT", "RCDATA") + + self.tree.insertElement(token) + + if contentType == "RAWTEXT": + self.tokenizer.state = self.tokenizer.rawtextState + else: + self.tokenizer.state = self.tokenizer.rcdataState + + self.originalPhase = self.phase + + self.phase = self.phases["text"] + + +@_utils.memoize +def getPhases(debug): + def log(function): + """Logger that records which phase processes each token""" + type_names = {value: key for key, value in tokenTypes.items()} + + def wrapped(self, *args, **kwargs): + if function.__name__.startswith("process") and len(args) > 0: + token = args[0] + info = {"type": type_names[token['type']]} + if token['type'] in tagTokenTypes: + info["name"] = token['name'] + + self.parser.log.append((self.parser.tokenizer.state.__name__, + self.parser.phase.__class__.__name__, + self.__class__.__name__, + function.__name__, + info)) + return function(self, *args, **kwargs) + else: + return function(self, *args, **kwargs) + return wrapped + + def getMetaclass(use_metaclass, metaclass_func): + if use_metaclass: + return method_decorator_metaclass(metaclass_func) + else: + return type + + # pylint:disable=unused-argument + class Phase(with_metaclass(getMetaclass(debug, log))): + """Base class for helper object that implements each phase of processing + """ + __slots__ = ("parser", "tree", "__startTagCache", "__endTagCache") + + def __init__(self, parser, tree): + self.parser = parser + self.tree = tree + self.__startTagCache = {} + self.__endTagCache = {} + + def processEOF(self): + raise NotImplementedError + + def processComment(self, token): + # For most phases the following is correct. Where it's not it will be + # overridden. + self.tree.insertComment(token, self.tree.openElements[-1]) + + def processDoctype(self, token): + self.parser.parseError("unexpected-doctype") + + def processCharacters(self, token): + self.tree.insertText(token["data"]) + + def processSpaceCharacters(self, token): + self.tree.insertText(token["data"]) + + def processStartTag(self, token): + # Note the caching is done here rather than BoundMethodDispatcher as doing it there + # requires a circular reference to the Phase, and this ends up with a significant + # (CPython 2.7, 3.8) GC cost when parsing many short inputs + name = token["name"] + # In Py2, using `in` is quicker in general than try/except KeyError + # In Py3, `in` is quicker when there are few cache hits (typically short inputs) + if name in self.__startTagCache: + func = self.__startTagCache[name] + else: + func = self.__startTagCache[name] = self.startTagHandler[name] + # bound the cache size in case we get loads of unknown tags + while len(self.__startTagCache) > len(self.startTagHandler) * 1.1: + # this makes the eviction policy random on Py < 3.7 and FIFO >= 3.7 + self.__startTagCache.pop(next(iter(self.__startTagCache))) + return func(token) + + def startTagHtml(self, token): + if not self.parser.firstStartTag and token["name"] == "html": + self.parser.parseError("non-html-root") + # XXX Need a check here to see if the first start tag token emitted is + # this token... If it's not, invoke self.parser.parseError(). + for attr, value in token["data"].items(): + if attr not in self.tree.openElements[0].attributes: + self.tree.openElements[0].attributes[attr] = value + self.parser.firstStartTag = False + + def processEndTag(self, token): + # Note the caching is done here rather than BoundMethodDispatcher as doing it there + # requires a circular reference to the Phase, and this ends up with a significant + # (CPython 2.7, 3.8) GC cost when parsing many short inputs + name = token["name"] + # In Py2, using `in` is quicker in general than try/except KeyError + # In Py3, `in` is quicker when there are few cache hits (typically short inputs) + if name in self.__endTagCache: + func = self.__endTagCache[name] + else: + func = self.__endTagCache[name] = self.endTagHandler[name] + # bound the cache size in case we get loads of unknown tags + while len(self.__endTagCache) > len(self.endTagHandler) * 1.1: + # this makes the eviction policy random on Py < 3.7 and FIFO >= 3.7 + self.__endTagCache.pop(next(iter(self.__endTagCache))) + return func(token) + + class InitialPhase(Phase): + __slots__ = tuple() + + def processSpaceCharacters(self, token): + pass + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processDoctype(self, token): + name = token["name"] + publicId = token["publicId"] + systemId = token["systemId"] + correct = token["correct"] + + if (name != "html" or publicId is not None or + systemId is not None and systemId != "about:legacy-compat"): + self.parser.parseError("unknown-doctype") + + if publicId is None: + publicId = "" + + self.tree.insertDoctype(token) + + if publicId != "": + publicId = publicId.translate(asciiUpper2Lower) + + if (not correct or token["name"] != "html" or + publicId.startswith( + ("+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//")) or + publicId in ("-//w3o//dtd w3 html strict 3.0//en//", + "-/w3c/dtd html 4.0 transitional/en", + "html") or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is None or + systemId and systemId.lower() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"): + self.parser.compatMode = "quirks" + elif (publicId.startswith( + ("-//w3c//dtd xhtml 1.0 frameset//", + "-//w3c//dtd xhtml 1.0 transitional//")) or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is not None): + self.parser.compatMode = "limited quirks" + + self.parser.phase = self.parser.phases["beforeHtml"] + + def anythingElse(self): + self.parser.compatMode = "quirks" + self.parser.phase = self.parser.phases["beforeHtml"] + + def processCharacters(self, token): + self.parser.parseError("expected-doctype-but-got-chars") + self.anythingElse() + return token + + def processStartTag(self, token): + self.parser.parseError("expected-doctype-but-got-start-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEndTag(self, token): + self.parser.parseError("expected-doctype-but-got-end-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEOF(self): + self.parser.parseError("expected-doctype-but-got-eof") + self.anythingElse() + return True + + class BeforeHtmlPhase(Phase): + __slots__ = tuple() + + # helper methods + def insertHtmlElement(self): + self.tree.insertRoot(impliedTagToken("html", "StartTag")) + self.parser.phase = self.parser.phases["beforeHead"] + + # other + def processEOF(self): + self.insertHtmlElement() + return True + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.insertHtmlElement() + return token + + def processStartTag(self, token): + if token["name"] == "html": + self.parser.firstStartTag = True + self.insertHtmlElement() + return token + + def processEndTag(self, token): + if token["name"] not in ("head", "body", "html", "br"): + self.parser.parseError("unexpected-end-tag-before-html", + {"name": token["name"]}) + else: + self.insertHtmlElement() + return token + + class BeforeHeadPhase(Phase): + __slots__ = tuple() + + def processEOF(self): + self.startTagHead(impliedTagToken("head", "StartTag")) + return True + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.tree.insertElement(token) + self.tree.headPointer = self.tree.openElements[-1] + self.parser.phase = self.parser.phases["inHead"] + + def startTagOther(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagImplyHead(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagOther(self, token): + self.parser.parseError("end-tag-after-implied-root", + {"name": token["name"]}) + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + ("head", startTagHead) + ]) + startTagHandler.default = startTagOther + + endTagHandler = _utils.MethodDispatcher([ + (("head", "body", "html", "br"), endTagImplyHead) + ]) + endTagHandler.default = endTagOther + + class InHeadPhase(Phase): + __slots__ = tuple() + + # the real thing + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.parser.parseError("two-heads-are-not-better-than-one") + + def startTagBaseLinkCommand(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + def startTagMeta(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + attributes = token["data"] + if self.parser.tokenizer.stream.charEncoding[1] == "tentative": + if "charset" in attributes: + self.parser.tokenizer.stream.changeEncoding(attributes["charset"]) + elif ("content" in attributes and + "http-equiv" in attributes and + attributes["http-equiv"].lower() == "content-type"): + # Encoding it as UTF-8 here is a hack, as really we should pass + # the abstract Unicode string, and just use the + # ContentAttrParser on that, but using UTF-8 allows all chars + # to be encoded and as a ASCII-superset works. + data = _inputstream.EncodingBytes(attributes["content"].encode("utf-8")) + parser = _inputstream.ContentAttrParser(data) + codec = parser.parse() + self.parser.tokenizer.stream.changeEncoding(codec) + + def startTagTitle(self, token): + self.parser.parseRCDataRawtext(token, "RCDATA") + + def startTagNoFramesStyle(self, token): + # Need to decide whether to implement the scripting-disabled case + self.parser.parseRCDataRawtext(token, "RAWTEXT") + + def startTagNoscript(self, token): + if self.parser.scripting: + self.parser.parseRCDataRawtext(token, "RAWTEXT") + else: + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inHeadNoscript"] + + def startTagScript(self, token): + self.tree.insertElement(token) + self.parser.tokenizer.state = self.parser.tokenizer.scriptDataState + self.parser.originalPhase = self.parser.phase + self.parser.phase = self.parser.phases["text"] + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHead(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "head", "Expected head got %s" % node.name + self.parser.phase = self.parser.phases["afterHead"] + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.endTagHead(impliedTagToken("head")) + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + ("title", startTagTitle), + (("noframes", "style"), startTagNoFramesStyle), + ("noscript", startTagNoscript), + ("script", startTagScript), + (("base", "basefont", "bgsound", "command", "link"), + startTagBaseLinkCommand), + ("meta", startTagMeta), + ("head", startTagHead) + ]) + startTagHandler.default = startTagOther + + endTagHandler = _utils.MethodDispatcher([ + ("head", endTagHead), + (("br", "html", "body"), endTagHtmlBodyBr) + ]) + endTagHandler.default = endTagOther + + class InHeadNoscriptPhase(Phase): + __slots__ = tuple() + + def processEOF(self): + self.parser.parseError("eof-in-head-noscript") + self.anythingElse() + return True + + def processComment(self, token): + return self.parser.phases["inHead"].processComment(token) + + def processCharacters(self, token): + self.parser.parseError("char-in-head-noscript") + self.anythingElse() + return token + + def processSpaceCharacters(self, token): + return self.parser.phases["inHead"].processSpaceCharacters(token) + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBaseLinkCommand(self, token): + return self.parser.phases["inHead"].processStartTag(token) + + def startTagHeadNoscript(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagNoscript(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "noscript", "Expected noscript got %s" % node.name + self.parser.phase = self.parser.phases["inHead"] + + def endTagBr(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + # Caller must raise parse error first! + self.endTagNoscript(impliedTagToken("noscript")) + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + (("basefont", "bgsound", "link", "meta", "noframes", "style"), startTagBaseLinkCommand), + (("head", "noscript"), startTagHeadNoscript), + ]) + startTagHandler.default = startTagOther + + endTagHandler = _utils.MethodDispatcher([ + ("noscript", endTagNoscript), + ("br", endTagBr), + ]) + endTagHandler.default = endTagOther + + class AfterHeadPhase(Phase): + __slots__ = tuple() + + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBody(self, token): + self.parser.framesetOK = False + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inBody"] + + def startTagFrameset(self, token): + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inFrameset"] + + def startTagFromHead(self, token): + self.parser.parseError("unexpected-start-tag-out-of-my-head", + {"name": token["name"]}) + self.tree.openElements.append(self.tree.headPointer) + self.parser.phases["inHead"].processStartTag(token) + for node in self.tree.openElements[::-1]: + if node.name == "head": + self.tree.openElements.remove(node) + break + + def startTagHead(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.tree.insertElement(impliedTagToken("body", "StartTag")) + self.parser.phase = self.parser.phases["inBody"] + self.parser.framesetOK = True + + startTagHandler = _utils.MethodDispatcher([ + ("html", startTagHtml), + ("body", startTagBody), + ("frameset", startTagFrameset), + (("base", "basefont", "bgsound", "link", "meta", "noframes", "script", + "style", "title"), + startTagFromHead), + ("head", startTagHead) + ]) + startTagHandler.default = startTagOther + endTagHandler = _utils.MethodDispatcher([(("body", "html", "br"), + endTagHtmlBodyBr)]) + endTagHandler.default = endTagOther + + class InBodyPhase(Phase): + # http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-inbody + # the really-really-really-very crazy mode + __slots__ = ("processSpaceCharacters",) + + def __init__(self, *args, **kwargs): + super(InBodyPhase, self).__init__(*args, **kwargs) + # Set this to the default handler + self.processSpaceCharacters = self.processSpaceCharactersNonPre + + def isMatchingFormattingElement(self, node1, node2): + return (node1.name == node2.name and + node1.namespace == node2.namespace and + node1.attributes == node2.attributes) + + # helper + def addFormattingElement(self, token): + self.tree.insertElement(token) + element = self.tree.openElements[-1] + + matchingElements = [] + for node in self.tree.activeFormattingElements[::-1]: + if node is Marker: + break + elif self.isMatchingFormattingElement(node, element): + matchingElements.append(node) + + assert len(matchingElements) <= 3 + if len(matchingElements) == 3: + self.tree.activeFormattingElements.remove(matchingElements[-1]) + self.tree.activeFormattingElements.append(element) + + # the real deal + def processEOF(self): + allowed_elements = frozenset(("dd", "dt", "li", "p", "tbody", "td", + "tfoot", "th", "thead", "tr", "body", + "html")) + for node in self.tree.openElements[::-1]: + if node.name not in allowed_elements: + self.parser.parseError("expected-closing-tag-but-got-eof") + break + # Stop parsing + + def processSpaceCharactersDropNewline(self, token): + # Sometimes (start of
, , and 

~9OGt}*ZT)|eNW!Muohe`QTsPmTFj6n_Xa^=zHie2_*WwcphviK&}#kLf&Z-b0&{Y2G|;6z0?=IMW{a8YQoY+XA`E0z1`EtbF zZg+@WoFMO^SmT4P+WFt!A0Mw96aVKj8jhX8jQ>c;I$dp$*brq4*Ujy=@5dyYQ}cq# z2S~NG)A|Yc8DagZ&Fk`_wHRXnFA|&lxL=J5kycWZ-}YS(oUETx9QD~~E0URz;!0Jq zkr2pa|JIm6f5kxrxtg-}XZ^82#qO#R_g#wF$7=?eTT6YunZxJ40vlDcwJ0!ResTIe z)J}Jc8Er2@#2aAFZ7)c>L&$-^4fl({<@0CgHm8>FekE9tou+gw}b{J^7Mn&VnMjG01t@|9MS_5|9rXq#TUX_c4sgl8N@Ed547RL|j3 zFq@*K$?0B*eWJuGnPpDq>zT~_6{Dz_zE62awI7m-!*WnyA@r@-J-2eMZ+f1maQc0< zYkg}e6He-w>NZ7_z9%_Z;*j&W!naNozNk42CWb9xFu%uQo*G!#fOZj1?Fd3Xtw-$5 z@qa=EkhpF^ixoOD#pP<4c%JB(F^@HJCL=KmFOyLUad``}mEoc55p z_Dqk2I~QCmX1Eo9`Y-kGT)k|U-t(c}`UQs&TlCh{mC5MPBI_mXpn>M3+d^$seX&O0sb!Lxq(ggLZKf~BmOfWxQ!K#! z=|Q=9=_6P|FgByfgp&_BXX&q@?O{v{o3DhGKhYI^4n%=iH^yOSKN`Jv#LA7{`q)^b zcR>vM2b?&=yjOXY$}<@jx;DoRt`r8%W5K~)Y42Jr+%97W9zt!oL9@eg-_e@dNJUp_ zIs{^Ilwlmc?&14m-wKxP)S7mYWTXbirr4WfUo%q0v9pcTpx8*`a9;e;u;^E!WrocT zV`ow7_fmb;$N4FtNY&l#)mpPq9b;#8YKbbl!h$2JNWfWPWiijXCMK-A-TJs>Mvmq2KI$`hM1v7Q%EvBH)k=fK2C7@V}^0U3X755(yd ztj4-Aq01G+$2hO6ySmtj&*-Txb~UiJ(d3k)MsLxAqU5w9s{zo7*;bf^Zu<6M!_v)R zpCT0vzvH%Wt1LqrAuj`#>wrKy0-6L zsxh2ODPo>}M8t1V-%1(@Fe@?AA(t2NGgbl!=u=P62!u_TrsS;Du|0{|6$ryk^hDuz zp{-fJTXfqQ&<;KMTxk*dH3C}~z+oWIeZ)t(-tMO*rKX#EjKelG`J2<}`mWM>P^4&S z4Ex%OCj<}|mx}TwN9M^e)|ncXSsYPeeRyv^`Mk{J_d?Z0;)Bh}$+qohM!EoWoTs+CnSsN*~k zCZ;FC4Yu#|{}!Rl?6rOG5Rwjb+t)#m)hWW{RbU*kk)pR+P1DFWlQMa|Vw-j8UKT6) zbg4iGixRTQd}U3Vb-SDk!M7apxoQLwTrjEUSWgR+^ZoG8NOh7X7y|!-e&0f8$ML(* z{zMz-(AeV&cMrgO(A*OdRp?XOcZ4QF=GN?))^-8cnNbmQqn!0{ha|JabH%dmxJRCnngv{w0;72LE@G?AwT@Xg)Kyy(qn*hafot7k@i-<=kbwg zZ>G%B%w-U?5@fu!5>YIdqx1XBwXqw2YmF;K`w=ainz7W+gAmf`cpSE(}hMGGolh;!^0wX|QxXi@+OuIbxJYG#^cm1gr<%5WEnY(pIF~JK`@J*oIc6W=GE-^7Rvo35!uFi1@$)leT4P|;86gaD!RzS5a)%{Tw>w=J zNz6LxN)NDRkwxvod30|3cK;U$Zv3l7kqZ}Uo{m|+7I}5z(;o>W_QI(4;S_0o4w;}w zZ&Dv>y#b8@Li?PiSk>Es)m&N^`eNMzX5w$tAxj8%$+LH*UDhKvNUl2jp$xLcE_Q+K znYTq)5+q4=@#S?zpY;3GK9bp9wQ_P8ae;m)`n+vka*j|c-*$x*;e`evi zd{U1xEs`#9lFsIn#{G8Oa3`)we6IBpqG!g@!z)J-^}Fi(2nNkuH?Qsam>Hqo@%Z$4 zQFD#(B;`%38-I|ni<0qEL#D_EuJ-TCuRtN~39+?jOJcyJwCb(iow)AJr-_ol$E z2hY`Ox2WCp{b#5ERo~=w+3SQGn1wG;DE*@KPckBjyi!J%&&cjWcvo;R{LMjO zHyn%GzMqnA6fPw}*w^@!21-dep(&XoH02SR^c-xVqeSB~OxU=i$kiScR~T1&<0gJ3 zw6QV9XY$6z9{E72o~BVMV1IF~Eab-u06I3iAt_yUCh;sfTnS~uzM--ct6PZ3nHio( zo)z8FhM|&7Q$Fghz*48ihd7HI-{NZT^^M#1{r&eWP2sWw{34|M@(;A+5HcO9VwK#C zw!S+hn;5Gw3r&h5p@OHX>{fs|oMZbgR?7B0BxweBS`u!Yh=2DgHj=&K-*}rUtE5Av z#NM8VGXQ7{>n5eo;4U1S#iCneMx|AY!8ogp^dtyY1kTE3r=mRVzG z6Xjc5LCUOAg?-_SL0N{9R~K6sskS%KyzLt&l@p#b#tKjHX!5}x?BQy3nvE{u zG;=voaT0$Ofx_|gdf~@uA%#7ir?vES+Df+1z{sIL$r5ut{U#?i@%h)j;7VK)F0XX4 z4BbkW)H?NM{lC_G+`=w1NP%~-?W_5X%-W4`hVgD^Jbfa;0VlHm@IhHACn$AQ-k6)q z1A47K0oRC%mc}Y|W>T=qIWxJoSbL)7v$k!~+Ta8<2yrfTw{lWdJq&-BnFFp)MqR}i zJYr{<*A_$ryXyy;L9csVly%dBTuCxo$A<%3>))0hxTTQo-J$JxIir4D{1@@>+iZOc zq-GVz)Rb|pr9)B{3sE9TGpkEmtuoBnCdE8#Jwx9W-Og6jnm&T~C9iQ? z$F7$xi%Uv8lW>p(kg||-TACnZ78#AU$O>AMY)fttHy%NeeqoqfBpuI7f0hon%f+c( z@6ZKaNm}zT3L?}lk%H>}SY6`MW@KCJEVi#6T{(ygc<@3H|aB#7=uBsw7)Ly4-&271j zUmOCy_3w$+UtPWU@1+&OP0OYUD3rB9j1T5cx%Dh2RqlZTaov1Wp@J9z%C|a306`YV z2yhQZfccdfx01fIFa=TTH2?sP#6~#Ltqwd&jEVXiU`Tw}N|_8SPS0q@W>KaNyei$&^}+YCIH+%ZRu8Bd;YM~0{7;$P_M89d;fxB`rCVqtuWn- zUBdQ#;}>c~@$-#|ACv6jq7mHD)2(!ytzxqJpLTZv8R`F$$N(pD0!_;BmlO0=J$Vxr zp41w-#{$3OEd>OdtwRNKp!^RO1(Q<;K!VyriCYVziCgpPKKm0C_qBH@U3PRy-sr_{ zIkZ84{Y+0Lxt!oq4#P|Gsut(SHAxQDKXb-#lIMrxzW|kR?i6q_{n>>Ge2@vT96~03 zw3m-Ej?Dws_%oQ1JTYrw=$Zg1R*PsU2F3||0U6jeZ*dO$&u$I0)qlPuRC>ckynp=S z5Pd`X9BtW+IU#LXODM2z!SG;NN6>76oaV_j^PK>_PH zztKB#ftO~Ill*xlf*(}ICzjCBbfoY(` ze2;>Y1kF$DvIpZ(lJw|r0gJ5o>9I<-Ngtj&DX1rYpz4~Q>s5^PM8{A_>GbeVabQ6r z^CqYItrws_8PO!;;g^x^s^ut5?4rA^5RDt-!f+7u%VY6z?VigB17ZZTzx<4&HRYCm zof=N&E=f9U961_4rQK7|SMniBre89Sd>Q9;67Z$~+`m>Ta* zq$B2r;0rSBs!FZtECNCIwut)xceKlm!=Cz7qiw+$wI+0R_^jMv)|xnPo4Jz@P)5UNtl*PIq9U}2iUgEZbP}N+)~`u<`^mu*P>A?@*pAUQ&*fKpMn*6Xz6LsilM|3R~3X3 zb>6f)ahq39K2!vyTRDK1A# z#BY5&@1Hd6nwAWmi+yBMu(CLIQRPiJvGcTLL$zhWoIuBdk&uLoOM*+>LHA2RZ;qta zxVPca2<%&PD{(-M;672~emzolAif&7HGV8plaX?0_;DWRY9ANI1|xKiTJ212wKKKV z&eT@R)S_jt0B$yS(bVLka}TYOY2mi5)g?G{Zq1F9y%g^f)Tl=Cy&@!z!!QE!)hyCUP`z{4IdvK4<3Ppt0SyPDf@zxv+{rHr@QC>^fM~8e$=He_(Q+ zBg(DxgND}9%W2;1_y=p zN?{C2)7}u9!9XrQJ4uniHuTn#O$;HShR|iZyT32{Cs%7`gSomrQ(31R$7y2?c*!+# zYo+qMnVgsK7+|G*Wn`l<)^A z(VpfJ49|1>WlCO|QsFa%ohe-ndDRmoKT?@)#_ahJBVQQ;S^O;EFy(bA_&OJ;&|1%+ zto8B-S$kmGQvvWkmiyaiMAc$g;vnPXD+0;}WK4WeBxFP+)`-32r?e$kmbyYYu#dixI0~AdxBX?!}Oery5<={lv z61yKu#RI~a0q_qts=w&;t4Nls0DMoae z6P0GH|8l~zIPl}%H~C-*8fB~$Fv!UN8YRgzrGWLI6iz-cbB%)ro_|X5swrKuQ@GJA zGV>srt;d=n<&1{`H@=e7z=pn@fXZq2i|n}uoX<#^Sr6INY2>4~X6>S{2_glh{)DJG z6zw^7p`KuaZBgeBIL*YkLb1jAGgu!qu3)&#;n034OrQgDa)lTo;3RU%#!$AJjLqqs z1Cr61m1RDK7;(!zE6WVA2CDq0T7W>h%&|>g!?s+iCrwG?Wc=f|0LKlYeVd(5f%9=T z=#xjzQ{DK+m1H*XCQd>R)d2TIt z5=Y8?+I9Yh2Z1O1t)?p@op7NvJx^O+Q>27e^A-e)Z0Zo8HG%bG-KINd8joNV|o03wNqKJIm~PNNpEKTzulwo zdzdpeVW0IrXZ@MukNE_}LHxeHOBDF(IhP|=0_lgNfw#D_jQXujX$4>%C*82%E=Awv zi3%=HoGBL~AS7~mBF(Y8x-pRtLl$LNE=3ICQpBXiv(B>r4|gK6JhcD)A%r-T+>>rZ z9AGuYm$~1Kh&?26Is&y|&d|NhDuDY>3jw(iQDg0YON4NBBjT^<49<;+IsI=$%u}E+x#h{)<}bMugZ2t*414iqj8Sj}w4A&7q;=*CA*OiYB@cQtR=?0yMTUG};Cz z$8SS?-Dx*oVd;cI+=e&@$K3H7^Hr%5>ta&-E<=n{5jpX;{%5~hzznyVn>}`iWz7U* z%H=5bU)_cHm26Yztlin4VVOT(S(~}P&>QS_fRKs*n*`@?Zi}K71V_>jK>iYft!q7 zRsz&oA+(Mn%4T*V-7k;SVr=U)zc4?+;prjvUx%>j%c&r@Dd#A+T40-b15709S3~9| zv8UeiLmEBKxq*PPgJ8cvj}^jp3XV@Xc+rUcN$#wztN#c);)(zIozEKwa2y#{D$XO` z8lH+od@qicb<}8+Uc5VMo<0t3*i{pFasKeSVB_1auA1b};kR~hqgztrUAP>U%B_7b z6D^{fK3#qej&k$-2|as21T%ciIyM+IoLa2cc6GNt5+7lGZJ(_9K)Nud7W+l0z679k zw^qjrtuZQZ40-9dE9~x89AXm>c)MGRv?lRKljSkqI)>3TF}2v7TudGpSd2}%yh!>- zb(npjRUwB1XfQY_#)eqqoY-t)@xjPU58kD0h-~JqRtaG)n0bYqH6>}D!+P_&BCgkA zt;wMib8@M@DKXjGeDI->A#(%O2h~!lH+`eA+0O`4SK6Q{w@Akt$ByBSYwnQuvy#38 zz0B>c(c-8n9-6wlU|l+&eN+l}=ni`Qu@M!!%^j%RxmNsUL6=@zYx-ERn5ii6rR9rr z(!>9$Fo~5Zr>MEX`q7=zb>OJhyn&M1GKvXGfP8ba5*<83;f1sA{ni_sqtWZFzfN1W zJF+q-^N&l!yGX9CKSS@?W4x6g8xSpP)e}Wnrnw^;G4@{>X-y4?S2>Y#s%vf3;K!*#pi^S15?@OqUGmc#@91hMD0QW-XE8G8 zlVV%Uo}C?rQoDuwS0w~TTK zI;fRz9k>I$6DSjk= zyHxlT%~P1h1c|(-BF7L!h;$O+t0yo0Z#mhl?bKV3c&v4#hRjZ=*XWvi_RfsDPk%F= zkEZ$BYY4ncCVNXCnea&5qpiBPxUlhIbqOne8ohaAK1RjeZx?!?x)rX4S`#u(&7S7f zmMPO*LQ4;mvlU~1khaf^dTlG$ zwc5k`K}tJu>$^hzM_S+8i%w}LDy?e?IGa7S0a35QhHWkW9if0{9q!he@f2Zn#;DoL z@xjb&H9dy4IN#2kXPR{NLEe@3r3^yH&-I*;w164E-yA}&s&Ei4X zWa{YlI;!+am8xI^-WC^RGpTch)G49P$m4aK3WupGb*{)R3vW`sj!6?&nv2xC5ZHqd z9R%|i17p2*#_M<(FJ45LLV*tL2j3-#3jNn75d++B(`m1)u1vZ?Yr2$7MuV%%qaro# zjui$QzBVYH-w-YL=A}Iica?jOL~40o_RSjeqlkN>o(Nm&0>x=;*`Ped%5Dg|CXCXW zIK_1ZuUH=|REFt@y&<)Y6l6C`w>R#;kS*PbVAyZ@y0*r;LZ48$&PzAx(B7pKp3Ydbt``h_F>7SRfASzn(TPbLV~n~u{|32wxvB% zz&1#;OOC^_+JRSYdZ55UO+RG56E1td;lbHhJ9YtC9%j;-#J>UCZ@0T4&beh<>aR>* zN&9Kd_#*G&5sa?>6bjhuv}Nu|l`ptv2f6t8uC{FOByCMoj>Le$sn&gX6tug}rM9uv zPQ_`}ZsCPAuU^YFkIwY1{l})q0(7+)yf(hbT{LuwI|~y@4P8`aeBq9NCG`qvsjM@7 zD)8xfEd!z2-PRvPt_{B%HNQPQSoY>F3)6g!xltt2irwm^MR{qDqoscsLJ#(f2yOdX zh(Mxq7_f za<)RqyN@FzN{BfuQP=@Sc9rs_cp`zP|j5bX2gosIPw9Qu<#1F^?XvI+CF9NMrrXK3DqNZppk`gIIvCw=l~7{(SzR zu(uEO+QWt|yzw@gsMw2>?WKLqrq(c)ioL=ce?cfP@eg<~YQ|%Pqvi)uvqv6Yh$bgK zPIAzA7g^xlnY_W!!-kCdy~bNPv2XIuXk)LiM(rmpVEizv=S5NCtPVboR-C>OG2`Xi z@upE#yF-3_QipQj$H_N2BdCqzz0dlksv+{Z^*7Z9`-S|;vxSxe6v?OI1;>l!5zGh< zkWC!xL`Uiak8{@QNMVyyC8gr+#9N0-X}1|XJ)bkGNjlW7oA$vR#8hiF!Ao3tfXYPP#~9Q$maD zCu0i!wNxGxqQMNdtUyOy7mlTXM0CmUjf*FDHB@k`id0AJmi6 zodGx8d11o|gDxM`Z@~Fq9qeY)_iCC}jCOC}#YKzL1GxJ^oQqA(dmma9F(#DSu{rWN z7P}+Z9d_l!ZkCTXJ|toml=A)_pk{bsz4l{tsHId@p2WJjftN@e9qS-E)_Ew`d8J4O zN)*7VQ?xjY_t7&CDO%X{O`%EQ0=pe<9x>K?14kA$h0XU7DRgsUK#gxgz?KI;Cj^eg z1~o(j-i8!R9(RyXDTa-Jx3Q;lMK_I{w%KU?TsUb6&!;;cWMJ6#w+?T?a1P-6RUeDP>?QE#r5_)v8zCD z+GYmr^?KtGrL8`ylV%n+Anf30NMF1}mwZ}Xt972@xQ9bm=P8c<@1LN7_31^mdz||w zTdiwuk;UN@p~(8}&Mb|To%wZMEXKrOa!H(-=F<(AmMI5R>ld+mForVWfl$pqQ7?@d z03&Rh=)Wmibe^Tr%{+BWvEeSS_o(x5%E`I~=fXlVvzi4)6``0R^X&}9EVj<0dBg9r z^7@9C`VlMBym{gLz{CgWZ2mpExi4yd9BDlYnY?r^NoY(u8WW`MBZy?NB9dXq*h?tf zLI6MN4x#xg`iFlI8GC^<^l!NJ%Nr&+&nQmy#$g1M69s7_*_ z%DA!Jep~jP*zQTi)!2UIX`=5HVb>1YE_#}dLlgE$Hgcdf?lHJRmy1&!)$s*v-u+Ot zKOKUxD6co(kAWzfuW8G9n~c+U9`@dDZ?zDsZR1L;kUtP=Va8HB#$ zJ|l20=SEkuG)}%{1Jma2hquX9UAM4#`k07K|6SSP*BSo|w_Vc3+AkTaEdNym2)hSrCVd{d{Js`}bn5jPn0n z{tsEr&vCG|VjJWD--kqah1lB9v;LEWjQRKymA5xkdF!)cCJ#T8Ie%w`Q?n2Ud1R+S z7|vGQ^2P_v-C^^KFuw7L8Gk`huI44GgId#>l;fGZ7GsBK}r;( z-hmJnZTW_}U|AcBzrY7&yYERSO6Z7>$2ce2)WtqO#-CQ%!V-YHtsUsd2bt*Mo&M(<3m=>h8U z2qO1Ed+*Sio>uv_S`$v7$mDZNLu=vBt`Ki}&()f5MN1EMudmjcE<`BfQJHtWn$gXw z%U|%BmAxhqP5H=;nCNXAx#=j^uvmjC-Q+|XowZ!GD3u4#AFi!+g_8Ha^dCIWQyMB; zx2rdV)$Xy7wze{Cei&kvLUNm=Bhs6?9fS_{td~Dx6nBRQzXONW zBjy<#vLIT8di(kgH@%}ZUB_(boAuYVP|4k@wa=Pu?S~^N9;zI!H5C!imhmjOp#J4=<*ct1j$L zulxo9*LM-zu!*UEb{slVZC^v;XjVf4<|n*Jm;qadm^ zH2@L>uIg~|W}1A5cUcqp>D)vP?>xt>NQSX#;9%3Fn2)t9p+YEQBQ8 z@8#K40f3k0xjmy=b%)KCX8ZnpwUMw681ME3j%m}5$sL$^a%Cs^i=7Nw9IZEx-2zRC z;>xqLdGo`(CD5WCax@`8n|Y8Fx6S0Fa-+BEAv{+$iiu%s`bBvfa=M;umNo=QSP{F8 z6$v%J5B@{KX=GrivJ5{Wq31T2VcJ8B%Tk|X$%_x=6~9#c%Agus>Zhz>pf|Yow*X3; z)+?(S%x^pNlhp#;$4u*7jOakZT0XR*Zwpujf43)sr zcT}(CRqb$#?Hd}SzU&jGS#H)WM#Le6TVG8JFG1pKB6!Y)&!G8b;|HvgD|T8KJR44< zZ>|z)t7E=2Fk>lXgFh`M+eXb`RHo2hRiQuiFQn*Fb!8y#RSN@fgya;LDr6G6~|5RBkrTJ zpSmAjC0gUc^!e(8aZ}i68fhUjP}TjbB3=Rx{(hVcgA)`AHSb<{y9_pVlQUQWPiC;I z=|G_-MT4s)Ln_dwgFDwj5RhxFL%&7r1A8bX3>z?U06|)O!TrFsV*S z5TaEVG%7EPbLeI)%)LZa$y4d6Wt5Q2icIFkeVK=})PIn<;x0x)Z?Nkn5*32%L?4i- zP+})4)M_BqhO$o2QYfa#x7nd zdx`}cyHcbN0>cz~2U?v)x{*e`>1(Cw^i}-kq^kw~`H*L0TW-1{l$fztMmbl0X39@A zY`*QxOk$yQk)RSdqz-gNOjHevn5d+}=3apsJ}3i_+VbNQLzOd>gjw@U#u0-Ta?GTN zx8jL6?rGVqPnVV>_Hb=l#Na-o3J!VJ=dFDb>mvkl*#3&d%5~lU?vwkox*x}0Vyf6v z>Yk7rzp^K&PC#RqnN?-?b3Ol|^R4Jd((!dg@{r#qYxq@wsy(i8-rCf1zh>+|%4usl zUmf1=pxo3Vc_TrHryLn25SZos2+>}hMP~hP)PrewPNCeSxESHGzJX)}XYh!o>6dpt zt0A^rk=|-;=P5M$&4t~{`P6Zzo8$H&n6Td!o5P9!el#;9b{oCkizWtD_gpCXX2E{-j#~wo zofALBx{SdF1MRV~_D0aSG!0WY7#~g%ysRw|_Q=HOD6eLW$EPQaFCLA*O|wtYEJpTu z{5rSJrmdqit!klTjy^nH00-gbA}rvM%bxOLsVbZrM76&4>(kqq@^pDZvn%_4W{bKs zYcWT$kd3nTuI?9b_7?^ z(U`AKcy(X?!qiDm){Es97c6<6p2b9$iEUKR1Gkj5rl*8>SlVn~l~aUdz~8ix_48Y~ z)5O%lli8Q{jk3BDl~8NC-WI$=tjg$HsmUZ@9aq`%MhJIG`n}CRTQo`NlXFXUI(NMA z$58jCc7>`6+qWaZ%XLTKv2{%!JZ2J9@Br4C*ZBM35iR4dB`(k73I3C(%^xE;@uhyu zT-jIoGt=IXown03t*1iJM*RP@<(y&5D}%e^hjfnEx%*>p67LLw2R38wNhvIrrz5Ii zN+ox#VWoHo42Z_@t0j3n7Mi;k>^ zBLxdFZT?9rC-S8hkHR8%y(}z$!=IH?+qGhm%i=-2peBr@vhB-6rXkFE44BLV}RmJh1Y~Z7^c9Qg3OJ*4!BxCN9;zOh2;)|%n zTZ35Hc~%Y7uzlAFs>uA+$^O5#3n}XoCO1rB6Q)pHESfh#4@bX(iiRxXGHhOmt!`Se zf^d9L;BdU8yLvWPudG6fD{_S_Zn>l`4EGG$IRxiWw!?eos4dUAX%!)?Y+M2*e?0k7 zbDy|9v>xVRX-sxW-}5g^rGhQu?=Wd&Xrz}D@K^y$auv`NW+6V9$61WB8zI6g`=Qtl zdEY`VWfWW8t0<4va0lOv3qm79$7*TqS;Wh5CNU^TR7Vo5%P z)v!`o4KJtfUouh*OnHa8LzP$!2b0v!8X~+8vA)ySK0JqvQ9uBnz|*XFW&kyP1+3TL z2FyXmKOLmuO_6>!LLLr^Pmb40o5bMlp#T!cfCRF(U} z&^z7CX{=Na1C|*Ji}T{+%xeEcKhLMcd=t-<&ya~@)Si)`1|7j6fgLg*c<}@evY>VR$L{wGr-azt^766T_ zPmvr}9LUCbK|YUsUbB!^27_HiHMi0NM9O4h` zHFWb&&q~XQzsbkAKhLW*cN1DAN(!E-&&bDEhjUvrw^wicqJ{XP4;riRqi8W#|Akmw zYd7R;@PF#}{4`cAB{Q4cD9My2nZq~!`l?g9iInvB8mk`fm)0z4b&XZYerb1>&g6yy=8-~Gop%#U;q$hKix5b;slns zxjx5zzYL{O9sg@OS8h!7(W?yN`&jiE#PiF+J>~a&nlOpKlR2S}MSM6+MmWozqk8zD zKZ9r&=~yv{^JzhdU<<9?L0HC*aJAKXj@k|V*aMhEmF?D}Qq^G(^N+KK`mu^wP0g|g zH_&j!m(ys0bU=G8Sle}D+?UIw9ph}?FumZNf5#r+3?i7^RqBTgX0P2^7yQHF4Bw*( z>$^^K-5xdf6D3js-F;bQwELIo>Q;;$EDu+wI!23dz}FMXpwhdg{pq$gOVbj-7_c z`{(M0WB%9xeh0>XEsYG^IEAAOF$7g~117BrKmcoh%+nAU80S&tw)7_|UGzHf#^#09 z38gZ;pgll&om6Z_qOjZS)`q~W7;TJ+U)HoGUczxLR@2FN>WrZoSjJ%agJ8U24GMPc zN~MS5JV^foHs;S_4l-mUy|kc5Y#M*(z&pVon=)ZwY%&13TwAlrni~=5*vx`I8nHwW zS500jX5f$>OcnrXlQabbLZhSWq86aV%%2F#MTgc2pcC7gEmF*T*jD5U@Q za$z-o8FwhL(CJod`XlpYkrBiEG2ST4{LS6&zR&>?s48&=l5e@bi@&SNj6=Lv$e(^A z$@%M49c@{!TV;uZtGO-zA+b{UD&>ze5nO&q&2y+vo2W{<{>RbY(X4=Ol>U zRvATL6s?ATq>SyZA?VRW$=B#D((@vr2{J6Tln#Y9#$B|{C3mU*jU4Yc zCqCB7ybp2<8%qe(dWZGI;~<&yYR-7}N2xq*b{@kqC)QCkl>CL|<`dW#G}A$C%7I|u zKzx%xEW?w47`S(wPXM`pk1u}sg8V^%lynZRt3N!o-Fgf`Br}9_t2`gKxLo&*kv01L z?J|I0IRhwpmGmH{N^Q!Q!N8YsD*vy8__r_+lL-$VsWGU1vE4c^EN~PtD1M<32}bcv zXB7DCk5;4jWo8uDs!@E#C=LY!hvdT2|2hg_agzL%J*$-mXM6cW+;ZWPzbxb&w93mY z^S?Tn*VihLFqj|TCLqZUWuD^Iq|cFJ_9=`X1McDf&N*<;T|5-xH?9ke_3wqy4*LD7n?JP@T!@ggGWX;8PGRpybbif?!^%h&P%_1EJyPxBRWILb-1>>fCar#1P~GZd zDH~TW;zhaE^xEe=5p}EET#v=Hgs0UNwxw;NkIp`31v9T_rn=$$a9F4cTpL=wF(>w^ zlyJK8sp-c&A?cA{`Cc%xK4g*9;2Lp&OZ<$7o@+Q}>_R13xxbSmW$g7^7oiIrW7@-# zR7k&VWF!7z_EiHqGyBqftt|smj_-@`L=dGS$`4&n;wPnr-JMonb}r&y8(e>&Cr9RQ zjAyL;jF6uJ^5dxaJjGj^p4`ffr!9M0cqsh{xBGoBw}f-{p(WV&s&C&eaH_fmdq?ah z$w9Ekisu~1k}xrzaP))mXdRqN93gT%WtesH{s4_% zM7Li_DO>x|@=Txb3fKflN%N)e(p<^NK*6d&{r?6i>}rK*JTDx`PZTO{USlb zD*X#^kozX~v#^3O^DFB~WBOsoh8m(wuVtIyUaFd_ z_A`&y*DIaFT|7`W`*jL3y-`YafOQ@TT$d!iJ=r8=_D7u5luI+dUhKymHEAfSTYc2Z zWl7p}MC|m)XAOe3sOJ;h2JTb4URU!xXCYaywLchoo&xU)0in zm&o$AYfL1!4i>e9N_S&gvZMBX+M5fZ+iAYl4Rxy<9UFcw7QX$urj6JQMwQ~Ig8|~Civ{Fz)QZe(O=7O)lM7}2?RiZ%N3F=rrlufkfjW}6 zZgt~Fzkf=3qmgWTO0uoxCval7ar!Agv)zG|!4Kf zdWl#{g}Ss^UNeRml4{o8^>P~*(nHx@4M1<4se)dcEy7&uc=HEkaHLpRax`n<#Yv84Ru{xa zoT4C0CsKh#$f(ZQvpQ#=bJ;-pSXe93=j{RISigas(Uqt`P-t8}C;VW|+Sqi1- zxv@;>Rw3yU{(^pfKHeHc3IappeT48mtq=UwIE1?a>qxwL{>Td^Ron}Ao!GsW0+xYR zu{y-%DSd@9P3HA!oXg^wTv(zq%eG!)>)0o|hLZ`L$WVswVeWhf1*l7|J}z-LMb6zl zxwpsJMcx1U99H@y=_Vbu71T76(JTVg0$jWl+2|rSNiN@R{Vpc*@Uxg+FqTlc89lNj z9Sj*f{`QG|hQ z<>rhKE@pNuARagkl#wnVcTIC}r$W*Ngk5NRAq5I3r=x&sni<}updnn4x4nSEO##99 zXpiC>mQPw_n^1z8eX|r$JY^9h1q9*xnP^-b;fwXYtc$186i-Ka>+)&!`&XLsp)90W z+Kb7Q&+bm;lV!&z^lcORLh!6eNIySP3L(Q1yC$(aCU%EOmo6bGzBv?RmPwf@pa?8u zzpi{9r+hTu9G24ntMqP}IOzuYCF>lwutJ1`Zr+uT=Xw>q87z>sJ7|uUwX3&Nn&+%hOXH~h0bLNAK+oc!C%3WePSWE!YHtzpPLUF?5Fzy*4&a%o{8a_}Zek02aX{0uBE|53bz^X^y*yE%@>Ka6WhVbvU@V>{%T z?2j8KvEb)?dA2~96P}@Xu>M1mbI8-z9~W(Vpv`lJP5k(xcj4@h`#WrX3BbvZ=ebhH z#USm)Y`F>ZkW(qQ-XwK=Z;p}Fy5w8eUSrEOmJ?KZXXmtc__BW9F`OU!nGEM3U;_(w zUo7(8WWYmC;Kwkpy*=ddy_V;{$qRkQ!DO!SZ0EApZyDRnSrh%Zuv{79IY9mMqSuKB zI5Y=5{k5VBfJcUtyK+1oLrk zxZ4+$=F1H|aYr@8G&eH`$s5OV0-@$@b`+Tf`uF(b;@ND_M+5cImE$t=Xn)Y2^Mc=^ z&qV5A#tDSJwFOsPaan!V*cdkg1z7d2q=C2`+)7%>R$_x2@f_9#f1pw(G>Nds6ye0( zzd!sSEKNxB!5Uo5UV7wyB`?ymuM;DFIQuF0M)f9yJi^RAJiK5@Ufj1cWJ&F)%_3Q8 zKCc=khgbM@a})F;{E zgq?TUgpfJvkHEA)B#{5rl7HO|^bX|z=@?ox0-j&@ly*){`w<;~+!qi)KjJ;jmtIba zNH|Pq4)eg@W*$we=_Ps59aBrRa7`q8Iy;ckgy%#;{bjA|rV7oyVV3V^5>kIfhsDiU z$f>dH2=}Dttt4tZ_a*4dsGL43XMJHzfC1M2#zXu4rE*~hACZ1Chg*W&WU_V$wp#sc zVj66;256w2(^zYykiaAy=_BPdc%mD6dr7U=@R8%Xp+(%Dlfz8%vQkme{S0?fVW%(QQomyvrxSCTq@?`%Pc4O~uwx zkgq)S#I@zV7o>#@g4EPN8j7?LIX}Tm;ZR%NM0l1Yu36Sz_y{p-TDgdJ!4V?6T}(Jz z73uYOdlgBPVt=5$dOZK__Uhs2R6X?e5*{~Z`}R`&G?b7A>yh6Jk52{$-DVI=B0Dd# zn4=E6Nh^I`9CDU&S?p-3eemLUVNL7nToKk+QBoZI$%ZP=TPaNbzInOlwwHT~dA`Tm z2{tKkDNo9AD?rLUMao^X^Q5ph>(Z6?eYnh~OE~?MF5yLX3FmY=R#q-NPPudB%ZRX^Tq&u(EXI1oXyUE=jmByH!f3`=KQ)>}>o%?FWz`vr6sy{3 z+}28?$+1d}W|38BG`ZGdqgigvGnynT(`d>qm(f&NNm}EpCU@3_M!!+?PNSDxTm6h) z=wd|}{hgved86dOCuFl)jb56E^^VcYYT7zx^bMjvX!MPuZ!r49qJP-vkBNS}(Km^H zo6%dM-)!`)qOUdjHqloZy>MWy5~G*vjaIJFYoT@XjXqxN-A3;e{WPPO6}FXV^jZqt zNTW{@`*@>=NvEtRqnBgNmNI$~VrPA-`yF4o=q;nK68)cyzFPE$jeeu(_Zt0X(eE_+ zt)jo*=$DKBPNUy0`YlGkL-ZSsey8YH8GVE3%Z6M`V`UMWAtv(Z#DWH(cfb9i$q^-^tqz<82xh5FE{#f(JwaoD$(Z{eYNP* zjDDl&lZ<||=r1(-t)h1t{hgxkXY|`eA7S)6M1NBEJHDNwZxy|sk;2DemRQu$)_b~> zqu=1z4>ACs)gdm6z~&`mv(wmc$|?GQvH7L3S%i(>*laO2x!8PWY}Sj7j!jruwTcqz zh%X}^kG00*RVJtto12ZzY-2M9n{s0_#n>S2D!Rznj4(Dy*eo_SvBo9^o4Llu4;zc_ z%Z-iO*nDVgmSc0Jv3cFtlw*@+Yz`QkDr{yNo5!?`?trkIVl3}AmeLbpImTGl8%ybu zupDG8tHjc#yM0a^>PO2QT@HnL2d8ZevK&9?n3>=H{f@;0YmMxLM%N~lx{+7BSs!x_ zSC$bU$}*z&##rkWJe&2wGfe-VWqr`~>$KiZIFjXiR(M{6HU-Vx)UW3yd%Ra7(F&9c z-6wX-GTi&#=8oldW_`b&MeE-7JBrqQ(dJnB9D_Kgy{RgDyia939$21dg|O^zC4)%H znzScl!_%JqEe`h}CalN&Ps8o%q@Gf}DCi^aU$|kuBzJaylzxFQp zrRFa9WEXe5%n1bUd-ax8t^XOh3EoF;f^!y`S>DSJ%&q=zHMhBBg9OJN4E2BKYS_^9m3c4KR1W)6mJ;fW@f! z);iYU*2CYE4GOsfekZeH?tuRS3!9afsNLj7%~pK}d~>He;IGpoxVYtWJT*QA@m_Ca za>sWATzFFVoaJDa48tg?9zV(ZJYx`u<{6QdkAQ~ghw+#J3x~EM2cEO9Z&;KaQhPuI zVR4$%w+An`;f3q?No&35OXzbY^Z<80T$(Q1MvXq`_ncJclkb%n@dcWxqOvQ61W4$9ayHkJtRBV?sWZL3E7eN zFXZL?-NxVJB0@2mrY&08C&TgN-kFX^Z;5DNt$W&~^#(4j&vHCk+p`H**KUg&>s)2# zSphDX&7!)ve2wX{dd??hvQ2qQgn^T7_;=g>&oCAGm( zTS{v6ZS^FK`nJ088f)6Ptu7~s^=T0=b29+CD+WGkF!z`TF!6&03C<-a@d%Y zYBA=0wyR&p&UNA$eYrf0@E`Wd@C|h(a}j74)Zl(OavJwX;3EbCIBI)>mWmmOz|C#w zo(5g>+eFw6Q%6Y8Xl|Tc!K!OPgRF(z*}kW(r1Ny)lZgS~lb3T;i^H{Pb{i(Qm^P;4 z`Pzo&B+`gomDsteIigc^*}jsS?RDouU!2pRylR%~;Wces2M-}oP1~|HFV?gb z8yRf+8n~<|YTC+-fNr@0p0BTfhf4?5=CvO-Y^!o?cp5}IN8`IC$KR;gf-+D9GY8;? z_jB$epSL(6gb+Y+1Os}uMEV=kl49k&=5Bm_lJFe-2zRqc9SB?k|Il0lr^XeSi{OaJ zyJ>Og9G(TqNtBD<8`DP4X}KbB@B71>Qqp_1Ae_xNLkhuqsEXXa7sZvX%5^>_#Bu!AQ^Zx>?HRpBQ=>G1j^q1yFH>D}JxmzM6sQ9Dl z!JE!rjZSK}hs%4P1a?91He zPHLD6ZhfD-H)#EFO5;I-i15O7!UI>i-&-Z_O;aQu+r2t@tiHwlp$N{CRy`L{-9jw7 zRiTf_vsmoda5dT17&6j>>`&I57oB~(5&u!B+Ho_B6&`|pp zxE(anx}TtO08K@J)WeIt6}x^IviART6cmUif|?V{+2N=-|;j!izzL`+f!>2YM5_MtHSse zGHy6tHB1uh8PtK96Kdr4^W*J=2F(uXjM=nrw5Am4sASk8M-)4QR2r$uHRBc|>I^Os zGSJDOwqc5#NFZn=Lr^%q4pia_t{y3~H`^>AVM*4@%tAIh?#>k=Z`0=`IF%!&zL&vm>y#1SvSO4a9#6s>b@WLe5J*YHy88PH=2Ex9i5~MX(V9@u!pWJKT|4wWE zmiD0Uf2TFi37{F|G94#1N?-aGi6c;rOW!RH3fSEC220?!cf1Mc^tedH2+st56FkHD z9m^4s>XV7w6#7bIh-m)MXhNIcF`A&}*F{4)gf|~CR>94UXoOHz^0Qce0ynOYa7EnLN73Cf;qTqWBwDSytSnt*cez_~oy15gjJF;pCpAuZH$eLa-SUX(EhfL6bAF}scAtwy00(q9H!!|fD(u|AL@ z>$_<6o;wHHyUE_ttm*bGYIecu?;m;iU5*MR4ub1*oPB%QGxCLvECat@Q8)+ECSY=N zeBk|I(x2r2k^Vxn-`{1%Bdmp?)*Zw+EXlf2r$P1%tq`;nUGr}IWcj$9@E5LAy|;~F zYxha+HU4#|Tqu{j2RYf?E_7}3IFjU*;@p(r<0*$vahoPs->Kn#CG&JGhxn(i<7o~g zg-0Xj;yEoT{2{6t_2vntz%pfimad3M))7gjFSH5o;UY=*A*`(}NTO$d2T?$adCj^( zDpq~iLVQlWs-L8U(`OFHmZ$x3x9ghZs9jAcxc%JjJnpD1$Ka2v!U+m+?CTAx-r{s- z{A6Bqy$L&mw~3x9dyqO|F_%{d1JZ$ap%yS8oO)=YI z=3ju5BrLaumBRsRTrXXfCuh*>COn-H!m6AXAHVlo>1kwGF+my3t%oCJD#>}o2gQxE z;DhZGcs`zk!l(6vfQQ?}0|(2J^lzeKI80i%14Ip!FUsR(EcI?TK0U=_#Z?8Y@d*e)r$QB^?3=+Nyq2kCZ zSBo6Cgki@?vn*-_g>NRj?Kq$LDQ_c_u4r95x*#@r^T$oJaqlCg;8_&pxaC2#Ot;c_ zE9howPLQrS!QOKnkA-m0x~QftQiR4JxMIs*xjrL%G+FZAHK3FCOGFe)iggk7y(k&) z-etUgCkHBr+2WLa2a%9efS11QUWig6)>)AqU<7OIt30pyeJUmws_NrD`w1!APiEeB zZA^1yQ7zwg?N1BOfd-1knbrKcu2~mdi1AqS2N<+%3mPc=7@>s_y5dulPhl-v`S0o) z_Z&EM9UQ`pyMA7@Nc>52*FWN<#Z5ZEV;**LM!PnJj?D1yofhfswecJyV~ZsM{~LQC zZi}5Ve_zghz2F|ku9drfgM_CmN=s;vK9XI>=<%e3lHM(XfXFMYR7zUP-Oc1k{L^m8 zg4C1ojIfk84jPd=q1BzwG|-*A&v8o>=_g%}N0V}sILCS!(VPDcJ*3GyHpr%l&XjP= zwa2q%Yof>{kZW_nQovr`@H)pufyvZN)=8p@>Uc~T7K)6$zd!GI$!1DW2aC++9(^z9R)SMYmTC*ZTeXVA@dz*i9n))*)g)3}St53-gdOSEL>J*K!#^Ui<4 zUB4w-iZ&gVRekh@KQ;ssKZq-mlJ`YLq$TY0$K7>-?y!1=c$kZriwf5dxXCLhUO~52kP-MjsduRp}Y0SkmBj(s$Q*- zMLiKO*6-Q%-7jx5u(yS_#;Ka8W1m2c7oJ_c41+TL{lx;ow{7IcL73O=m0`2<^!J<0 zA<7MY%dMl7Nlqu(olpJnG})ayusYKmLS%QwGxl|wLm1h`GKc8PL|)78e4A4MW~O4D zKugBV4B|V4)UrF@GPc&P4v(|M>T6_o`op$W3n~AoA5ySh)i2AXa)hM86O9m@i2bP} zo7kK@U-2%bDiY3XB~xT!s>wP@jk*2s;1DU*1SDd7}>s_a>(Fu_SJ z0+~#3IQ$^&Xl}AO9{bp_VFT?`Zh&6%OUk)^Y;6_Om-@QZr|i;eO_ZLm=`Vd#YN z2*$5L8HCJ9AuTBHvr%%9?2z?S8|6qb)OSU>2BXgsS;5zTxF{p!!ap5Pmzh$X;9(#i zDP5D3weJhAoiZV?deeO(irAZf2!A8aMYM$U|R{=n?Q|4cHWSM7H^wvVHF`Bw;M>r~wp5tR9P;3=w` z(86Pav$1YCrC$%JVr3g%RF~+k2}dM~zIpm8$+O;tBPFwvL}{84bA@h;IX2JbJvptw z&q-aqUH52m<3EJk62?DN>_JnQ~K2W ze%=vs&ZLLqQ8E&emQ>iLndq%G<{{Ia)H~JkTgRggmZVKq6DH}I>2}Frc2kIfDCZD>4yz$D?Bd!2$eZ-_~f|}CLmMwKJNT=64;>5(=l(y}0r z)2A&Y5suo6=wOK=@bFpld6=#HZi`d|VEb zGcZ1Ps6Wm{O32EFo`h-nC3`?z`fsjg5Y>A@fj4BW;438=OgoX~`Z{y;6jD5sA^xgS zs+t=4=uF z4y02Uir(!zA(By$lOoblNcd;Wt*3?iy~#Dx|D4BVDDNmL$~jzc?8R>10R3)wOVlp7 z1OAqcqC-qV2(2({&Em^BM|Vo@pfe;_ zUiSWuu2i6K*F=TLdjRKHH5?$YhZi~9a9WD(#FD@<(#OYH6~>p9*&eWkqo7q2lB4&2 zkEEaP&gT$Y^b_d2Zt%#!eLO9OlygEXG=`P$7#ovn$7I#ZzP^x5I{q`XZ`YOj$WlHh zSpOmmQ7#$IC8qY#b@F?f3t6*jQk3#euD_zE^$-nVvoZ6geAc9Zbn*j-O?B z?DQOiCWfQ#quz1iYU(HVj^#vLKnA}IXIi}8d+C!ttpApX1?n&9V2REKmxxKk=0j{Y zb7j0fET3oyJ+j81;;8rGnw5Vd(>J(PI+EIt$%Vv{$U>zxAY1>Kqvini$5VNgcf)Vc z)qES`Ofy-Qvpk!%#V}5^1&DJgsU-ou((0E7=|iL~A^udGNJ}X#5fz6>-pe3R2wnv> zZCjha97;C`abD1#X6(bsT{nrhGJefA&t(ZDbmuR8;~ux}_KkC&Xn{3DF@|Q)5$?8T zWQ8>O_U~>A<64@&s@fuQ6JUTKlCM7OI>I*(rP-w=zvtL+8~O0>Z*HL*GH(`SHd>qI z^1RFkWFAxL&X@OXCle~8F7$9s*eG;P=AVbT5u;xN;0b_%`%+{glejOXXJk!o6wRVx zk;c&S%I?30L1s8y@T>GiD*FZ%cg7m_F=Gj0RKA8~B0XaoVrTy>OnuhxXvA2@%L9#3OMv7o&BhI&OrBosqiL-c0U3xVHL{(q#>%eu zq)B8u8Hw=nB*q>l(za|T=_(SiO2$fa-ZoJ{lr4g*s)xuNU(U@kuEkkDA##q2SG1?W z%rnmwCe70vJHD#j!FsQZp2Bo&@DpeU_Bd^i$DL)okUw4tlvgj1Qtf+7o(bee0jIDV zt(eV{q+_za)B|uXXN9?2dsrqspWX^-U-vjE$-y!taj;of>@RZ^*FMnv?7395{t3tQ z4bFP^DTjNvzJx+MNaJ>#oE)ahWtpR80CY$+Gja&x;aSFX=A)6!Ngw*Y$nt&cdxI$g z9bGY*4DdhUZ#REINo4tkAtuF$gn4{A79ytL9yYjn)`nUK4@*2HHyNqnMN^jtyM0rt z%4DI&^ITi@yOXC>VDgqtg2VYYDwfD~X}OwJZUhsqslC0Q`5W5h#5Mdu=+kEIk?@qe zyQlSWwpgXZwQKMUawmL5iCPn=bt3YI?Ib!@?gTV=E#z9%ji;-sa@S4yycBnMUG{c< z*dH;|%Vh|TH0!bl!B`g-MXIcDgb*Nb`6lb49is7+TZLrY&_EaWwvpB3j}jM=j`|q} z*)l+Mt|yei!9$H710BjuLcC5b^~uUJp02h%{mgi}OpLz2 z$pw;I+`b;!2_Lw9r!tOwB@ZB#XXkSiigz=f6w+slT)4wh0I&Xz#lit1A0V^LnNue( zchug6542HeSv8Vop^k{n^U|A7d3Oa?38&n<{UImbq~B#FyOI7uWlde79JT8uK>i6P zrk^S6ms!%^`8`EhQ%gQmo+0$;pMfd}L4R`gr%r}{|32;LwdiyLLQDKes5$JY5$-Y* zSPv1pcCrPotj{Fh=|#0tDV-O9z%!H?k4(HAaAzqHZpsI!m#JxA}+0vcykYB$Z)-~5k)$q=dsU8z`v7F6p`T}>z zDk^Ztju55trVtUhoSR+cL2FXNJn)Owe8Ders;GmU-fh2Jg_HO!^4pCB4)K2Tq z*RjW*0<;-S{A!&zGzyRN`-joCXNR%eA6_wcrvEma@puPf86=;LMsOJ z25;HauvhVCM1Flp|4Vuk+%;b|-S`LDs(l?BYY%kVucE+Y7Bu!eMbF!;dvTE&f3(^ZgQXadq#3YC3lDk z7KprMI?r!%E8~DC!g^r8sYGzHsgSQqJ=8h!oFnfQ#kv#Tq_%}ihM%@3+#;@QQMS*q zblRaUwN9_^I*%vF4AZk^L zT9P@^_jW@mf84`ta=4xnCP)23T5}^@GVbAFDKFnZ`3cr_#eu9@OVIjoIpdh(q$?EZ zwvWp)he-bnet7P@B$$!>rrY;&x+8l()~W9qc0rVTt4Yb4K`pOaqrhB~6z1(^eYsqs zizcuenTzs%%L^7qN=a%@Ql({JHp&z}0aMF@o35o2f*en!@0d&)S+iKo`Bdo19^0`v znc}(!`Q0bpbjzkU!s$m@-*1n|x(}_c9XH}r*f|{f(p#+{mlw2NuwvVhpP&r6u^~Xu zW3%KHk0CG9RdPmBj(=s?$G>2BKR0tzT2KHf&#cZ0il}BD`y4m)Rnj`lDk-QXv77yRZ6DkckFTJJ zwJk9LcM^e3Qgu3~;KH?R8_ouucx_O_DAk};m?T09G=d4dtZk&p_P1_aCWQcn+5bYT zpVDfH^o2dT68Z!|aaop__CcQqkA)e8;W*@K5k}nL5q5*uup6W)1P?=6UGpX|iYcU~ zr{5OMdt;mxK@@=tdRvP0EUN&KBq_ptupXKvHTqh%o_O%wu|c*-5Im8z3-*n?t#f0h zjF5fg(pR+ZI;5TbbtC=3gJ3cpu5}+;c^KW-^=Wire^!Hr+~msmEtr@y`@QE|UP9C_ z8O}5?1Rc^F;4c)?(RJo8EWpgpgYZK3he!`5Q6P^)drJ@SLz=@d*A$L{oqicC#Pl&T zuTBz{cOneA^rXP174v4CxQFJC+uBct4Nu>i)nmxPEk$U&5jL& zwEby$Z}~2Hf0VT9^U-8rCVG>ydvy2Hk+LmfuK7SG#;L5a+KBW5{RF*s@I|jG6#B5> zjj}Qr9O01yX{-4-$dohGUlm?&EtnK4rbAU5De^(!_hxd+hh5 z_wb&yu4clXeOtdLJ@0JqN&n>6eWuH}IbH*!T4aPp^pF@@Buk{XJ=!Aa#CE znpYa-J!vE-ba_yEmqm8uLFs3mb@Sqzr%63H{Xyy5*O0w4JShFrQZm~0LFtiAl3dv+ z{XmywY7C9f*)mv*h7x`!bwADb43;d*txI(D@~HHa_-0E+uf$ShG0=If(!Lg#(S$Km zgt>dNEa$yUq$qG^LvC21t=3;>61kZUjdSxltrn`;Xw9FmiG&!({VnmPCUi_-tl>+U z8<^pkh}l<>DYN1E)O>(J8Ua5v4!wGTUvmG2GOsxBI5Bf@mAMM{%wkDJUDziOgy3!? zFN2EsmbQQs8zmJK0c3G+I<%KDPy0vBXGHUlx>En<@=MjzU&;cq>15EPCFfY1DDur9 zb#e`{-KFLa)x=I$VW#IdQ_s5ifk+ZM*UGX(Cw2~vOQJQgJ6;L1i;W6pCD`b?1%k#$ zd=XaO_HL0$QjKJ^Px8;;1Q{-vFOBUMvfd??60l}bSwp8~ z)}5bCo>}q6xmQySeEpuaPF&UDFObUiJQ%8OqlR`tB_&m}8u>Ak7=p@cR!>ImlRKYT ztY&_|NqPTf(_oPzBRmizMJCene_#-GDObZ=O6nemF4Rb&{*X>i-Kej5C|~7uOP&Pv zWv5u1?dYWDg6Kc}RS%QSTB+~Z@J<{4&W4RPe8q;A4Nuyzj~tEQ8)w5z8!onCg$*~_ z@E#jJZo?OB_-7mb&4y}(!5d@4F*dx!h6hI*_a|)lI~#5ZK-=GT8}78>UK<{^;oCO+ z)P_Aq8oUE-c##d~+iciQl<4J{kSj52tgHcYai+lE)#u)v0;He6%F zEjGNL9oBjiBINXMbHk@X|EE|5yhNU)KZ^J*^P$!z761#k^v|*JE1MX*oA6z1W+>{!b zZJ>3Hfq$wquzR?Nn~eRz_b+De=&u$Fl;JWPb+}KEI?VK4zSOdc^r~V{PDNRM zVP&OKD^#V*S7oX~74kPu6{r&aluAqs(&;>G!+d<I~r2=hN zq*J~^`&~|sD$(WfDrO@vtYzn|pforK+hN%=ElKUGqh7MffUaVd62v@9bw*8f1 z9|<)A_{CoV?)loi(2mndY+j9D+?~W*rel@#l=CMTO^9M#N-19_l#yJTRIk9cQk%u+ z^`yYB~umi}6!Pnw@Hl8jo!W*v`jP z1in(tLJdii*hozfdgh@{r&OsBD4zyi36# z6ez@>P-_`^brM54Ve@sai|jZ`fF`#>3&Cq#R^T&``i`0@v30~Zp*_Ac*Dt}=wcI6+ z0Nqnb_k7G!K2iq8#ZX#kCg~jaFR34a`~>Kh*q)C-ngaAYQw|E+>29bIpvOe|i$Hsm z($CYa#N3^nyZ(<+?obbl+zBi0jW9PawVj znflW;rUFg>ylzwp;O}UsQYzAGc<6VfzgG8nbYR&*|$~Lp~*B|pS zJ->pNpuck43^z@GPTSnqHaC23{Idt4zZ~1lj*j_k^FZ6Uxy|_J7^VK4wpk8h%6IsL zac8que;aKxo6!1eIBwjXwmHW(53|j=pBi_L@#!zcHnS_DKc{VGacVx>e9|_y{oRBY zwyAu_Y;(45`!XMpKA}jL(UsUqIhkHBRVDD}WQ3HKDlO8?D6`NlrG`i?F{y~O=ahnf zoc`mT7s^_&FVj9{&LN|b!65jq*EL`zzn4m|(_%>{oSC-{1AC;(>4NPN@R`r8-0BkW zuHaW@hJmku`XqlB;xpU+lU~o*+(gRdPv-5}^tfU_-nLQ1C9`?oIJ{0v%CEjx{oYt_dO3kGVkr~(*<>Unw0a#X$LpQzqupPPQgLiaEZdUoo4PK3(Shl1|CHq$`jf1KF8|B6&J> zCLP8s)G+Y|;t@PDiphv7{b@&jW?@s@$!_Dd$l8yqM^R6!Q@hx-Z0M=~M zFEjQ)9P@DRYL;|J`XpXi_egvJ{9+b-k`KWn>6Y;Dk=&Q8SaFH0+{{HY_BMnm)+RKd_}&eOq}NxmU{vYF7GmLC5g@S zmT2Ue-cnuguJVdvDevsOiv0F+E?ipS&8ui9Y-V1mHWIHQE(LzUt-vYxP^E;wNr6l7 zs9A+e6=Br8Jdd}c00+KV6~(p=x-9orRJNO-S7AYEVJD0EUSrBGE7iW{d2N{I5j+xJ z!YKSH{3zTty#hZ$!6BhxJ;Eb;M)rz|?(K+)?bEkk+&TT@2MioEc*wa!ox_HY7&+>^ z(PPfPAmPHXaCO2EhU-wt5PXFubf1T?13sT?guQP`As^c#h9?UoS3xs$6e_QSy z89%*Tm;X=KfS`5le@5!@KmHArpuqJ(9e=?=-|R0C{`B1cvo`;z1xQT&_zT1+rVf3K zE$8_k=h*n@?*E(Rw!>G9>d+fqP*6u*U>?10eNF9#?|gS--6r2H_20X7^KIY%!ImHX z=*L@s^3&V5-SM-Z-+9;Fzqse#U*5O1W4Jw0-`?mnXmCHHrV~fN=H>{~HYm|J(Wh-;V#kO#gp0AfMe` z56J)9`43~iQg+?~-w@1l)-CY;sGGSSb6`y>e!kbud}}xJ=5A)rZ+8j*{ch$TbTdC3 z+||E4Guk2PD1P0Na=1RjZeV@kaxC1|;r*@Ho!9xJc0hnx38>Cf}4q)?eb$nUu3A zJVITZn7A;99dxHtXE!2uc`lz)RpnKD5%}PhtB43d1b<@GUythQ?^Lg=CW4UfRDWlE zb-%DMV%V@@0|lL!Se;Y75#M7*C*>@xCOnbkNdYCk?V#nbqg4JWpPUGrgjstioAb>deaXmgX;KJyF5xPrg}s#U+IWPEVP$th}() zSy)w=@Ac#@Ezt`K+!vIJLEMX|AI`i|XI?oT3kV~t3<`go#?#@iqA;((SyWNBf)EDH zh+(o;c0mC*Wxoi>QGFeXHB8x3($!wQoHuw2D{d+-UFIy(2|LZbve4t{Z#?B&NsQwu zKZ#{LZo=gYeCbu?G+0xjro_OzVnrThN2v+rAlK+|l=EoORW2`FnuldcacSWt&QT@p z>)6xqtXy8~DXc8d%P(~16?qCPoTJBkD=Wq?EiN5jSbF2=K;Vvgpkwc-PZAp*iz~`X zR}_|d0{%PVDXdsgTuKp=8j6fcH}(c^nWxZ6-RM*;&z9(E(79{fU&3l%`16-4z4>Yr zXnvI`)4i+D`39=hvnuXOy~^10>V=GwrZ5-F3=3`!6WeRiU#V zr?*lFvta(Lv1X^Yvwt1)=noL6=9L1kbdD*!kshYF$XU3e+;h|U|2V#-R5iQv$s?h(@51)VEEU$dqHsl- z&Dt1lx31ys?aZl8w}XE;FKynfzy0aF4F?iuKAJIgXVjYX-vyD?)Jqo2cvrdjN-E(^ zi`kEtfv<9LW$}vglENh=cE7o}pt#brc;!Wt$CVeD4%Cq8tiOUgwr_;$TM(uCPVS}p z&UGA)Zs=A14#gzOco3sJ322E}#g*K{%m^$1oyCI%-4IYO0Vau4O0*sDBtaHJYs z;824n_f~@|;#<#Y>UX$LLyX2L@%0^s{FdQLMZRTl1`UW*13b}c0BIO7zn2;?8FNKk z!+^2TQ-5Ed1Ns$#jnnDi;Gq}d*GX{bpC^A$<5(by@pk6_$7da2= z7peM9cBp<6V_JJRMIDZ8h$s)w?U55JaqT4z53ryoaYd*BbK?$6ekE ztj<@s&R4+CR}3lPO0Y)>xYzg6jRTss6d#@(62|e zhtch(Q$3y-*VOlLY(t~)-9Y^_#Mot2P8r$#L5`t8xUP$V^sK*9 zsXwAB?DPy68lhq)!%L{>XrI!iWd!-UwjeaOu2yQxH66HO?S3c_*SsZ46{G6yxPtnG zsy>uopYQj|2^thhpAth}>07ABgTAkGNiImg)P+94{t=XUPt|`ukaFoiu`eye)QOSlR6~Qdsjj`9 zDYwHc05v^5^sfbW|2miS+jWIvRqwB-&#R%2vD5Yd=GmA(w#`BP=)Y(K{pLs0k433| z-;XH|l6E~ml6Fnord^wU9Q*~;$@%SlYeQ^o4;4$l7&}o$mX3Uc*CCk}^_#y4WudK( zgMOQ^{U#INT;doKrG|KV(Jw@*A=nSWe#pcDP5lqYHR$-sj|1E~e%PQ1#x1iKpzz}GE$A4JV1^7WMFH2(>aIx zHS{Tu&5g;?^?q)!UGL3U6ezC;w$V4BqU?O?yy_gA`ZVBN`o-_}YU+77ydkVSG&dwC zI8oXG-3o0oI(?|85A`aRdKjbnruP1RWNSoIkHeu2fiY108Ct|bix}m2u~)esJMB8& zpE}-mQtyiH;S$@!ISAKVIUb}8dk3rD6C)FYB7=pFiBfOn>kNb9p&N9KhpzF^6&jYC zI#@s*y!woFurc`S>vTo~;|;34PG8hZjhcKz$f%&AkTcb3CmYpY*GB3ak+zF!$2TlO z^_lOW59qD>ROpcJ~74Slp5IV0=7;!myp5+VG8cdzJwQ$!A2Ujf*npII)m{q*ALJk9LSE;b+ zJcahLb9jsUG-hu_1xxk7Vf2Wwg?YuES!EUTU=frQ+L%`0v$U{+(5Ypmm1QM`sh*0G zbe8tan$A(K%F5zpr8b87WgQ7n1wmkfiEMK=iSs>)Q?i!|=PMAY8W@aic3FY9q;M7t z#LM$mkWF=8$QXy>urpG&Fh1@}Bp zfg669@FpX~EPQOuAm#e7m?b5yf`STt9{(f= zSqoh`8Jcl?ZU==-T)00cCrN~iWyPhin$)Yo?!vrsDRZS>(t4M$P*l00Km{c_|E6-m zd`q`FV?n%->jpY-VR+*x?Iz-AiXM|<0)(#P+$_ddPt~rR_EZ5 zjLNjarQT)B3M+CTvs9h)Lg#u)t}G_Xypjc_@T3Y@^NC$nS=sg8@>#I0C4%%)k1%}V z#U(YboHHp>3q6HZ9yLnrOwjZy^@+l3VMS_1u?NO*$vl`jvaO+#L$V6NmgP~I^QR>%H znpeWw()oW``!TJb%@K`1NBpZ&(YsO^i!YTBSEOf)K8ms;mBj_Rjk1%Y#)o93X6Kbt zPpL!X?CFrXq)VErQmZ8WrcN4isV@YpI7)3(9&r~_pqi>>x?f7~U<@0)l?&Bd67ozA zYJjA#YY#!obcO|*{`|7`{y_c8^cy*a6?%`MG@trHIZ{b~Dp=+h=U;E9bibxWmmUye zSBtNCH&t@@N;YU*l{zoz*!G)OQpm}vTkU>E92TlSnKGajDRrmDXm^s(^1)7Kl8=uq zLXS@U(Y2JUw{p3ln&~YnqRGO# z*XC5)O!uk7%(d<3*--i{!G9G>;x0i6o)su3icU@oJ7!X%(=YiD|J5i-^Ew-@2TERQ zP~u*T5NqqOA#NT5m$>mD~_5aU?|5xMho}TXJ?(zTsYDP#%``9Zq$hphh+xYK-|601nob@yDI?ww3 zYt!{Vh5hV@4^0Zre)#QwDuw_0c+Oe{>{;SjtAO)gpSJ&n82*n}iPnqF{68o-REB+Z z4-<&o^*5~_W|Q)lZyL>A_ZqnF=S}*`S<0Gf4Y%We_b*=ih12%m9jrTLY*K9a$T#%w zvi(1b|3i1bbN4{??%meiY-o1-+VQWsONW@lglEoc-+Ildmb`Y|YZJTqX1?&!u|GF` zuGEAzCM2Sh{HdLMl?NMol-O{&4GV0TYs1AhTx7!>8@g?nV#7omI&Ij`h7mRlwIRp0 zQ)J9M8DwCa4L`MEs|`P}p=HB&Y}jPOKiTk@4G-I}!G;gp@O~Qx@ZV#bx7l!u4L91b z+J@ye%(dYn8_u_(+lGlYblR{d6VlFef_U3L#)c6#R5ol=h7PSZv}}0HhK)AdX~R2h zxY34HHq5o*A{*w|&~3vM8z$K>(S~De=(J(H4LP5$%PGQ!%7(3eGmam#VWSOq+Ax5B zyKUZT!;Lm9w_&ag-8M|L;Yb?}wqb+~n@*W{8*SK`#+|D5f4g?%bVG-;A^zWX7dm_$ zEt+PYCHJX0S3Rk+svj@oz++Iat2D0NTL+Pw}|MVWLix1o$b z@~O+hWNG`~|1m3j4)qQXCm#g`)DC%2nT5QopHdgHXPX8b8>dtQ_KCpT zQAy~xi5;pOKLY>OA6@|ZR^Z72O10rfU=~;4Sd?x?**PfZNyI-aDtO{d0dd14E&3&e+O7O9L_9$?gzez z5}ZeYu_NHU4u{ebtQB>e)Ho@Z!P4ZMDgQh&lv3Ggvg zXg~4=d>a*m{vF_;1b7GN2Lqo*C8FO8d<(Tr`~WjAH0j9#_8M#AiURJT;xrAwKXCAP zrE&!i@S;S{Jj4g7B;bY#@HnvF2>c~VaBc@)&6KBLaFALIdnu`DTWTAz%?kLXEpFWR6KeMxb9-^`J=A|{s<*B*$RA{gJ=cV%NdThE`fK0 z9(h~}*;<;m0{@N@|DOUEPP1tath4oPz?WxGri48P9Pc8{=#zjoGr@(v7WfEC@azPR zPQ@Pji~-I;j^jR*hc_Ip(H(vfSWQ1i~T*oS5Z>;-U0UH zjHCF80`5j_!Ovcx`!a)5UW8VM_%Ap_Nwb(>p{akib(QgL6gc3YQffvBM6a9t2eJH`%2%JCP z&_`g}mG~j7z*DHL@&fHb&gY;OLqmaKoKbuN`v~BB*C4Y3J@VUB%wmH->aLZD5N2wk zmn7g1QCn#vhk@r7z?%W56ZqRg+9~=5;IE7DkN$q(sbwZ@T-H$|%9Qe8FYl4gC?{U@ zDZnC>;9m~>2qkT>6}YF8yyIst@M@2-Ukpt4LI>=p0V`2b?jGPXC=Y#CBXH@B^d|$! zFYw8A)KBu*0Gzts;F$*8h?1}ZJvGn=Kh?nPwMs2VFL2rhleR^`A>U#54|^wY!FLVa z76IQtNu6&3Zrfq`Tw8&EL`i;;zo$O6^#b?$3?6~gZ!vgMfaUe3 zEeo7+tLgVrfER6+afNaLUU-}7lLfwsiX!h8u;}}=LG;UkEw=sx;0-@8_8#C#l+a4x zFSpRH(98R5IopUEy};pjP%qJs1YU`fdQuDAi;}!F0sGy>nI`-Q%tncQIWYci#zpJ} zI`1J2dV%+%geKd8EAKV>D&S6(gcZ1cJNda4c$tB$xl(Au%8Azf|B-r6!=&JV&ZM~e8mNUL$FK_`$ z(l1cXaf-b_pRJd(oWHU40{7Z__3!VWra-6;5u!qXV`!4Sf#tw>;6@-of5u<9Ubozd zeK58=ff9~pRW0roFbs&N>K*`wtLktdhoP$h`ZIWf^vy^28SI1bm3szz30x(P_7}h- z#*JsO-+C7N?Psyyc^3P|v)CUyi@kLQd*O4nVIT2*#wdvQj>&*(-NJko`+zzAN3@fO z4s*lL7{?%Lz?rEWb~&Aqh!D_7D*V?5;l=wx-&$(1Wttr8C(`465vv%Ee*K*we%=5$MEby1 z#7h#A{?FgUbX+{>^shg;>EOwO#|4L&Pt9GNfrpbN;Kv;H#DRY2Z##I1EEEZSB98rb zU0)#pUz?b}+AuLT>);`L+=6%T|LUg`l8gs!ZhQXFJ;U!msQrpN;XZIp^S2Q^O8Y-_ z@P%K@KiGEiP<4Ztp^yKo1y8k|)Xw4``ZjNC^J`~Ke?egxXYsG)mLD_D8oy4PAQyZa z?XN)_)ybg^YnwutCyfAAVTZ@mF4XMZNp(yY2P7 zT#g6qpby>gSh&>mZ}V94qeV}twNHKYRMGWiYAr=n^pxMf_NkU7)P(ET{_V3RkD^)o zvv+wr;LD=b2i{$B{9o9&|>Arrn%5bJUerUa79S>MC{Zwb!aO1+&z$Wy{oc*IlPptXQEc zDv(h}|FL@YYIT=)hWgFT)73+3l2y&Jbal)1scK7^OWj_PqJF>b67}2a4E57>OVwjr z%hkSHFH?tqalIPzq+eaQ$FC;r^Q#$q{c6gyel_g{zgqmfU!@*}ZT6a9&3V(WDp3pG z_N#0D>R0(qezo)izgo9$ovN#=Q@7oAoBHvOf2@A;lb@(<+qS7Y@4Qppd+)uve0S{F zp&ohU5#5(P@x&AArKfkO^&k7yBdvb*%rnoZ0|ySM=bwLG9XWDD9X)zfz4qE`>Ww$v zP#?W}Ouh7pU%mC#Te@B}H#e(KKYCyN<#WGkZEaO2PMpwnMaUXFo;6wyXK<)A5u2IM z?V$3|*n789PyKz=bpHf(jem~1$$x{|>c34r;(tIL^&biJr>Y;}hvzW9ma}%+%$j@$ z=Vb`Ltd+46Cf+8(ZzKHg2;V^X7YYAPr|{q13Mkzo(V?JmHTK z{?CN}3*nmy{}JJjcM3oLJk}R3>iRXz(LBtJzsH{3ui&FRO(T3UR{4)jQ2saODE~V* zDF6GnDSzt&%76Swd-})sBm8i}CldZr!e->^;jZ+lSrA81tmBX4#J z?ge{(FSKhwu*({z<~`Cp>Z9_9w!>OZe9I@E0QG;W983gWzH=^Vd0euH0~xXrIVf55N4JmPN;KZx*S2|t7Ia|xeM_!|kok?=o> z^~3-3tB2?K)t(#t>dy)li15P*e;(m4B>bhZezjkT(|kvQxEvnYezc5ckLRMn6I;CYU)haOjnw=%DQ08sFA~mpEtYRgKK7HMn+m% zX6lR?uCyg%$BZ65YUJ$MBbL}6(lT)7KLbr#+LDCx#l!5`PTM^*J2gFX2I$jMT{C97 zmRu+vMvWRi%y!SnPH|8rD|B`Wd5DX)S4|9$n zkr{$NGc#jG=8_?O2gKu!hcUK?^Og{PhD#8nW-b}jx94C0=eo}H1InVp_Jw2KGaM_-`v&&*ECOwUfso^|fPI6Der zSaSZDv03C_@Tcl10#sWvEuJKZ3HoXL6OywbadvuUw$6l3V}Smoe@WVe6iGs6cJ`8i zvu5?}+m}qVyDzz@$C8xs=|pik?&r>$rE@vB-96P2=1A(Dn4X!I4V7mN)wvup%dQ?X zE^)aghB(3!XDrEHlAV#BZBj`WV!n*j$um>OhXzGnZaWCAGScX-Z1*Ko$H(;S5fl{b zCWVs3?93Tdqz-r2#ZwX|^$dyVlYwLEOzQIF$*HLw?n{=;bX}3$J3Q;ZqA+XQ_vZ%OS*=peRTb@yCA23^*5|- zb5zf0Vsg=dsy6DsGM`%uj_%5Trny|Tn$c}O_x1CXzY+r@w;Q3QR5j9bK(ilV7vK3!e2!A6vAf` z{u;vHK=|(x{tm)FNcaPUf3tm@`S&~p^8I_B@_%xkGEkXs;J|@2BJM;Fkl%svqsEUP ze}U+n0|&+r9CpFbnBKk5Wj;J$_?S_nMvodF8{;@X8uP$mBSw$LZ*0ua@d@J-)ZpP4 zj2S;9a(pZvdPhf}J9yZrG2?qhjyc!1a5~3aFg_w8Y7AliUwdaBU3HP=@z81m+BS?c zw!zku5Nx&_1Vto3AOWJ{(vlv#5s_|*7-bECu#P}jqNrd1mlko!rUW&44^RO`3E;*+ zw?uHkjl@0TuqaC-(%kueDzD-rgb;!~Xa2CxxvBSi@As>^d)>OX-b|8+ ze@3H5r#C+Bv|qJp(&XGze|c`(^Ur8>I&ZXZ8g+KV1`T6$Z~OM=H$IK=e-rtOf7jI+ zElzLTI9B_B=D+*xDd*`^J#xOTHGk}R|Iw;NZ2R`Ht%SekZyOtXL2PXESV!M^YSC)V zo4d=1%qGfDH`I-al^rxtUsL0Ke-HQTxriv26O2%J9x+JJAR=0SPpbVwPb*@NP{dvZ zr|C5_|6jCYQD58K;CqJP?5L=y=IVh91T7mkZmb=UevZm)cOle0;n#AL+ZViZG6LS59sx!aroq!hBZCmMvSThgYPR>(U}`yz$0_OVxDq zZ!@JR%Y6N8=s2?(;oceii(P_Me8S^Fk*1?MPN(ec260|)h53um42Zzg_kk_}$M z7@a$JZV7(E%i+Ia!v<51)P$d{T)EQWtsIhl`Q?{ZT3Tw#DY*N1Mlk~Kf39b8mM&d7 zWyOjWQxx`HHgo38zUk@dN!i)i$%?DNt&Je|oO90UsNBYYi!Z(y-bE%QCADT;y*?rQ z_w3nYie=`vXwjmRc$mF?`*u@Kw~Ei3Hf^%^-+$lXDfu|ukxhAdxqbNIhwd7hJSgUI zucdQ)zy0>x1Jb)6G-k!Yg9q)q@4nmf&O7hC@Y!ddm1(Z;c}8^JFMI1G9I|=#MDbTV zWtyuBz~2LW^?*z~fIqyV_piAIJRS7l<3Tu^2g%$#`1gEYAN*f=<&`;-V~lhn3tHB# zTjyv%Ka_7WWS~5g(-&~WCS=2|-?C+k0oVrepvOM29iG{^aigOF8Or_*IVe|83b(51 z`Uky#h|gui7mJ3v+HbS{`}docA*cUwad9otV*nW_Z)U4jtuo2n6f-*;Mh3`4c{K;% zzJC3B!&bI#-RfRL13mzK!%mP9xGmplmimEN!kcE7{I^;A*UVzqnq9cY>_0b{J^h8* zzWw{R$X2lbx-^IX>eZ{~UvR+%ofN}o%U_!0;b_3;AOrXcJ;(ywd5!$HZQJI6*YF&E zgD<)OE#M9R(b0VUKhLCh^{=Kkn{`tPzO!lu9oLJ7SIydrhL$gz#k^>i{gG+|hYmej z7vy!1!(YDMJb=FkFALw-$4;;V^yT_(W>;+0S^0Owe`t^lF5PH$v1mwpPxX#N%6GqI z)?u|%tKD_QUwKk=c}~ZU9b=>mSF}qeYTqXU#T>OTH?xkj3{$5E#2ib!1=~bQm3)%7XK3*D3=Q6%@ky;$IsE@o9e?bM z^+j=36+nZB>U4Np38#bC&_G*}*~OMk?rMSm>Sj+(6b<9M+rHh~?LC<@G~6T_RAaO2 z!|WNKggy6^E#Q;l_mB4D}6l0*3Rr~FHIK>vV~_wLoj5|_@umXJ?ybDJ#0aGf<2IyXmdyOwArHJ zPSG$!G)xfM{TtH^Ph+8leG)&wK=`5WM-VL3fVJ0$=mZ2 z@=4I}NQj2}q(|Aqd)nPYD`@~x7h@>izDDqv{MBKzjn#CY%Vx-2>+gJ>W4J0UEo}q1 zVvpFs)TvV)4dMD#otEk{;ToTSEgY}C_iCUj#=xHM4cT+G=W30Az#rN7>C*=}*i%nE zl8s!IU{P^)zG}J~%Z88BLeA09Hq~qDMXrR@=>zdwb2A_1+X03duwQAMMZo26v z)7cCouFJ^Cu(4yu+MGFaoLwvBP))SJd)5Yg6|oTUDEk2#_PlA)I6HJu`;CI} zZha1qF&+-t^E}xCttMpsd&*TbQLO(*T|4~SwQF~&j`pPKUk84pINHe}KR@64_U&sr zTV(g%d#|acWDh*>fWwFVJ^Y3S)&kZE^a@}P0}c37^pLd>9=$p{$u<{)|9;!>#P}a$ z4A}xP2KJ0kS~&6dpnu%`mvVo1s}wpN{gJNE*S^1#&cPJPhE1QD{^yFxCXDN=ufE#F zJvtBL{3p1BD>8xx54;Dz(LMG##CFI6d%&ihJxdO(&)%N#N#XYVw-q_Wfsc4z*VcFG z(&Yi2>2Y}w<__7i>5QW3Op+<5Wo_EDF~!yn7w{n72nT5J;OU@eJOG{YW8+)@{@Bg- z(jAFfpDSYw*5_xY^tKiE-)0|fTyFdK?b{-G*E#>7vy_&Vm9Z;Hh(?4zOuYL)*4(O=s7f99T2Zd14<=2l#?NIuD)f4d}54Yy^Ao zGNDHYiB0_4!`_?yv-IVJ@}Jli`Y&C|(|NJCu~SvVZSv&FP7ct3UsZ0|`uFee-bV(| z-~k%^zLz~EF*bS+p7iJtw0ZsFePSwNZuye?lzX~V=M3kvho}$!=skcgk#B}3a3kle zvv*4L*7vK;b=%nNwI6LxyI?1YVr<$cn!~?1-!8X{15N5 zM?imwwM%3N*Z?-cxcFem2YChC;>e5{N;B}Dr$MY3@%F4kZ=35 z*2u}ieVyK$C8Vi))U|%o419@y@c**MY_734dT>GR_yy^yizQSialTcy?$$Sa4f>7F zfj@SDT_O|o1R0Re;&b14&A7-2d9a>~-Y11Oev>+3U7N$->nVM>4nuN@B>x&+U$A^D62!lOR8SK%M7|M-Y-dDJ8m z=px5HaNt1Gxm>5;p6B5`_n}MZI`6XvfV;1cXpf|C=G7Z_hd*=p{jb)ZZ1j>f2s*Gq z_=Nw!*RdXj%LLvoU%uQHE?nsJ8Gd_!ZgdCRA#UOtonbuI0{P5B{ggs|`3~;1X5bUP zE`q-YXz);*Oc+CFqTM*?7|%c(_@Y}S@}1D)aaVl0sGj;>iS>_vUH(V*<@Uc?zq6nP z{?mIp=sg|u@D%@oEda=d_mBg=6FWs__#$cv)S#dRzH5&9_?aIuKJt~r-|N3(g_iIM zs7)rs_ryQYMO_X+x9DGg{dMPe;Q{uFzJot@Abos7)1R!)gj3KAe){~U{6tm$2O3yA ziC^%4=mF~yYbQKr&k6651F?XY1K0R`d@X)VdkR$$)7b{pQK z>s)gWvOwqIGc=;>(xbzQ5h^4r)>Y0}oXFY)e#dKP=?2aq{40SuIQzgkjgxLRO^Zv( zgb9Zt8rtE62@}fo{hZyEyv{Tbvz@iK8!ekYfIm~rxljJ~Ypn(U zBfs>4;`4mv$%ZKgPSX7s31Sp)?7B@g4(ep&LKBt0rRGh&`0YJro0OH)_mOBjb^o#2 z`SRffn)3ku6CcTb2^;`l!wALvhvirI$med6-+YmQshLu5q|QZsg`7C`p?CJ0m5TN{ z)Ow@v)5a<|m`sFgjpJN(lc zUsJ>i*9SL0`$1v^02~1PI{;5uzjl1_ffdf|=jsyV!)Z6~P`zt=W!>~T;XvJ&GZ5tV zsrh<+q~1%NF<$*UN9tr0Yl`--DT;IZfrrNh`4a7#I<)<%s7eWXT3t&=+84YCon^&y!=v5qV6lBVz94P$KvJPyPh@PybpFtxX< z^--T8k4R%~fZ8kdV`_fk`p8)pYBbdPs4=0Bu`jzv_xt&YgM59Fb(J{H$8R1No*=JG zF0erPOlrRRE}c!6jfLZYKK84ok2=5aY=W~i=wr1yT@>@Ho|2-xLcef4m>WH(r%`XC zMnb)iI@R)r(vMp++21lTl-$wn2@I`qJdVmGIXYLk%39KC15OYu}6)K0iJHAhrR*@chyCK2qnRzCx|h)wn|QPr2oCrgApn^|8D7pjIV+Vl&ktQuMvc ze)t0R`^4wa4KDD2esjT4S2v_yMeUZFA+_h6P`wbFpguyaaGGjVo(D`8?xU&Qs#WPf zwx#d(rpf;g!xr&7>)!I@1 zkNIcMo}KdexW!~dfT@B>|BZg8Pt6FWbB+je~Vu56;3KFTK0M_Nr2d;MoW zPM(9DE<9#`C0lg+Eo>8ujXpjy^#-P|as8KX zCEku=e$^sANk|~7o8W5G`b`D9=bn4q{tle*i`W5pzyst1Z}wDtU~lFPw-;vibY}s) zKITul+?G9532ZMJGDgW68fI0k$(k;(W6H@zT*#A2N~Pz z0CV9Nysc`TIHbDFZPMio#Yl%WDQBLJx2KANSK|G=Aw!0|PK}2gy}s~o$b$Ns)@3&j z@c?{het?*a7|r)us}72vw`;5%)hl*rZngr)Yfk^LLB=AsgWu$G(Lr+Q)HSdV@btMW zWPo4bIdFj&_-%Y9c$Sou%+`kesN?+Vzp*Iw&z z0|$V6umSEvZ-|rd7o1B}E<8`;vR9}}bN(0qqjU7b7_Uq@dDeV<4z&gSW`V0QV;A5@ zgAYE(OT0`?g}7ZbJgQ0SIyd;a`Mo~FR{%T!=3_n5ZzMS1z*$vjN9T|iyoPRkvT`qr zPH=8FKl8}fIR9T09zF)vcMeS7cXYX8;zDvx=;KMu?dFGGzy6|2(94(rJ`bD2wxJUp z{{MA<(}a%7@*pG030PxA9$*ru78u z>v;a{n0OtE(syzCQ6S033|^%rd|U!t%l!VnRe9ocB3PX z)pS;iv1@G7$KE+PInSv^vtK@Hr_P1kw`kF#Bm9nP0J}8CsHdNP+P$xPPAw=XxKjD- z)y2idPM&@ZL(cN)?}krCJx%AI$+P~TG0LTXd$B|I#^`H6dywlC*Kw{fL3^u5v=3BU z;m6=!beb5>$1~oh@MSk?-^8AY9KvRWHJ9jIr<#wCBd8xR7q*690?=2UrKM=EJ280^K_dy$J^-^ac)PWw)B)WlTajo+fNhhY!(?1Q6?F~Zw7 za`vUyzJa~dl+-KS9M_eZE!MtP-}AQ2%uIJigt{8CL|;7r-Oc(_ zx^{_+`=@B{6KW9qJp9wT;QSUfInEF8tk=1vQ+wF<@-2>^?4j-$>gM0;^#|R<*W-7P zrM|oFc#5w^mfP0l+p-x~xbxhPO}yGRyjaNe&->@~-4z$B;lI!u{5CNc^1z>lj9K#H8qnBS)lV zbdMP~Car76;326aQ!?6(96ET+sEkp!j%_!1)X1(W86z(oe^E^I$dt69x29(J|J~R< z=AsKb#Pm4x^yujLv17(%xc~B4$I&`gKBp%$QU{OIKa8B@#)(#oACo$IoMuVAC3(!y z@%lf3x20xOeHi}nWfS!%|3vee)bXh!qDSzzdrV5km1*Ng4Nn~t6FqKd&%uNBPgA?c z+?p~XBQ>T+eEX`gk9@dl{IENYnmxY#5xB;;uOeEH$G7+V?2+6vxo1++mDgU;zkle( z&(}X4KlBqn5hS(C_1{x==O4&#S`b-qSHZl3#YHQN))#Fpswg^8)TlVJxOH({ai8M; z#Y2iG7T;C8pm=fd%Hs9KTZ=1-4;1smj-?tSI=4e^ZsFp>C50;s*A%WVEG^txSYB9B z7+ussPbcd6WQ{OLW29@8X&PsqM#|M#OElUVjaRA>%Qfb1Mh!FyGz~-sq64i19RhKI z#6X`wa-e@;P+&+PJuopaEwCVv8(17z5?C2n6IdT84QvgR2Py))0|x>T!A8NR!N_2A zuywFQFfN!F>=R55_74sU4hg0QCkCel?+VTfE(qoZ7YCOFR|eMv*9S|3TZ84nil7Kd z)bIYP>z_L@cR}vT+^xBhc^&fN@)Gm<[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))? +-(?P\w+\d+(\.\w+\d+)*) +-(?P\w+) +-(?P\w+(\.\w+)*) +\.whl$ +''', re.IGNORECASE | re.VERBOSE) + +NAME_VERSION_RE = re.compile(r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))?$ +''', re.IGNORECASE | re.VERBOSE) + +SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') +SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') +SHEBANG_PYTHON = b'#!python' +SHEBANG_PYTHONW = b'#!pythonw' + +if os.sep == '/': + to_posix = lambda o: o +else: + to_posix = lambda o: o.replace(os.sep, '/') + + +class Mounter(object): + def __init__(self): + self.impure_wheels = {} + self.libs = {} + + def add(self, pathname, extensions): + self.impure_wheels[pathname] = extensions + self.libs.update(extensions) + + def remove(self, pathname): + extensions = self.impure_wheels.pop(pathname) + for k, v in extensions: + if k in self.libs: + del self.libs[k] + + def find_module(self, fullname, path=None): + if fullname in self.libs: + result = self + else: + result = None + return result + + def load_module(self, fullname): + if fullname in sys.modules: + result = sys.modules[fullname] + else: + if fullname not in self.libs: + raise ImportError('unable to find extension for %s' % fullname) + result = imp.load_dynamic(fullname, self.libs[fullname]) + result.__loader__ = self + parts = fullname.rsplit('.', 1) + if len(parts) > 1: + result.__package__ = parts[0] + return result + +_hook = Mounter() + + +class Wheel(object): + """ + Class to build and install from Wheel files (PEP 427). + """ + + wheel_version = (1, 1) + hash_kind = 'sha256' + + def __init__(self, filename=None, sign=False, verify=False): + """ + Initialise an instance using a (valid) filename. + """ + self.sign = sign + self.should_verify = verify + self.buildver = '' + self.pyver = [PYVER] + self.abi = ['none'] + self.arch = ['any'] + self.dirname = os.getcwd() + if filename is None: + self.name = 'dummy' + self.version = '0.1' + self._filename = self.filename + else: + m = NAME_VERSION_RE.match(filename) + if m: + info = m.groupdict('') + self.name = info['nm'] + # Reinstate the local version separator + self.version = info['vn'].replace('_', '-') + self.buildver = info['bn'] + self._filename = self.filename + else: + dirname, filename = os.path.split(filename) + m = FILENAME_RE.match(filename) + if not m: + raise DistlibException('Invalid name or ' + 'filename: %r' % filename) + if dirname: + self.dirname = os.path.abspath(dirname) + self._filename = filename + info = m.groupdict('') + self.name = info['nm'] + self.version = info['vn'] + self.buildver = info['bn'] + self.pyver = info['py'].split('.') + self.abi = info['bi'].split('.') + self.arch = info['ar'].split('.') + + @property + def filename(self): + """ + Build and return a filename from the various components. + """ + if self.buildver: + buildver = '-' + self.buildver + else: + buildver = '' + pyver = '.'.join(self.pyver) + abi = '.'.join(self.abi) + arch = '.'.join(self.arch) + # replace - with _ as a local version separator + version = self.version.replace('-', '_') + return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, + pyver, abi, arch) + + @property + def exists(self): + path = os.path.join(self.dirname, self.filename) + return os.path.isfile(path) + + @property + def tags(self): + for pyver in self.pyver: + for abi in self.abi: + for arch in self.arch: + yield pyver, abi, arch + + @cached_property + def metadata(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + wrapper = codecs.getreader('utf-8') + with ZipFile(pathname, 'r') as zf: + wheel_metadata = self.get_wheel_metadata(zf) + wv = wheel_metadata['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + # if file_version < (1, 1): + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME, + # LEGACY_METADATA_FILENAME] + # else: + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] + fns = [WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME] + result = None + for fn in fns: + try: + metadata_filename = posixpath.join(info_dir, fn) + with zf.open(metadata_filename) as bf: + wf = wrapper(bf) + result = Metadata(fileobj=wf) + if result: + break + except KeyError: + pass + if not result: + raise ValueError('Invalid wheel, because metadata is ' + 'missing: looked in %s' % ', '.join(fns)) + return result + + def get_wheel_metadata(self, zf): + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + metadata_filename = posixpath.join(info_dir, 'WHEEL') + with zf.open(metadata_filename) as bf: + wf = codecs.getreader('utf-8')(bf) + message = message_from_file(wf) + return dict(message) + + @cached_property + def info(self): + pathname = os.path.join(self.dirname, self.filename) + with ZipFile(pathname, 'r') as zf: + result = self.get_wheel_metadata(zf) + return result + + def process_shebang(self, data): + m = SHEBANG_RE.match(data) + if m: + end = m.end() + shebang, data_after_shebang = data[:end], data[end:] + # Preserve any arguments after the interpreter + if b'pythonw' in shebang.lower(): + shebang_python = SHEBANG_PYTHONW + else: + shebang_python = SHEBANG_PYTHON + m = SHEBANG_DETAIL_RE.match(shebang) + if m: + args = b' ' + m.groups()[-1] + else: + args = b'' + shebang = shebang_python + args + data = shebang + data_after_shebang + else: + cr = data.find(b'\r') + lf = data.find(b'\n') + if cr < 0 or cr > lf: + term = b'\n' + else: + if data[cr:cr + 2] == b'\r\n': + term = b'\r\n' + else: + term = b'\r' + data = SHEBANG_PYTHON + term + data + return data + + def get_hash(self, data, hash_kind=None): + if hash_kind is None: + hash_kind = self.hash_kind + try: + hasher = getattr(hashlib, hash_kind) + except AttributeError: + raise DistlibException('Unsupported hash algorithm: %r' % hash_kind) + result = hasher(data).digest() + result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') + return hash_kind, result + + def write_record(self, records, record_path, base): + records = list(records) # make a copy, as mutated + p = to_posix(os.path.relpath(record_path, base)) + records.append((p, '', '')) + with CSVWriter(record_path) as writer: + for row in records: + writer.writerow(row) + + def write_records(self, info, libdir, archive_paths): + records = [] + distinfo, info_dir = info + hasher = getattr(hashlib, self.hash_kind) + for ap, p in archive_paths: + with open(p, 'rb') as f: + data = f.read() + digest = '%s=%s' % self.get_hash(data) + size = os.path.getsize(p) + records.append((ap, digest, size)) + + p = os.path.join(distinfo, 'RECORD') + self.write_record(records, p, libdir) + ap = to_posix(os.path.join(info_dir, 'RECORD')) + archive_paths.append((ap, p)) + + def build_zip(self, pathname, archive_paths): + with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: + for ap, p in archive_paths: + logger.debug('Wrote %s to %s in wheel', p, ap) + zf.write(p, ap) + + def build(self, paths, tags=None, wheel_version=None): + """ + Build a wheel from files in specified paths, and use any specified tags + when determining the name of the wheel. + """ + if tags is None: + tags = {} + + libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] + if libkey == 'platlib': + is_pure = 'false' + default_pyver = [IMPVER] + default_abi = [ABI] + default_arch = [ARCH] + else: + is_pure = 'true' + default_pyver = [PYVER] + default_abi = ['none'] + default_arch = ['any'] + + self.pyver = tags.get('pyver', default_pyver) + self.abi = tags.get('abi', default_abi) + self.arch = tags.get('arch', default_arch) + + libdir = paths[libkey] + + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + archive_paths = [] + + # First, stuff which is not in site-packages + for key in ('data', 'headers', 'scripts'): + if key not in paths: + continue + path = paths[key] + if os.path.isdir(path): + for root, dirs, files in os.walk(path): + for fn in files: + p = fsdecode(os.path.join(root, fn)) + rp = os.path.relpath(p, path) + ap = to_posix(os.path.join(data_dir, key, rp)) + archive_paths.append((ap, p)) + if key == 'scripts' and not p.endswith('.exe'): + with open(p, 'rb') as f: + data = f.read() + data = self.process_shebang(data) + with open(p, 'wb') as f: + f.write(data) + + # Now, stuff which is in site-packages, other than the + # distinfo stuff. + path = libdir + distinfo = None + for root, dirs, files in os.walk(path): + if root == path: + # At the top level only, save distinfo for later + # and skip it for now + for i, dn in enumerate(dirs): + dn = fsdecode(dn) + if dn.endswith('.dist-info'): + distinfo = os.path.join(root, dn) + del dirs[i] + break + assert distinfo, '.dist-info directory expected, not found' + + for fn in files: + # comment out next suite to leave .pyc files in + if fsdecode(fn).endswith(('.pyc', '.pyo')): + continue + p = os.path.join(root, fn) + rp = to_posix(os.path.relpath(p, path)) + archive_paths.append((rp, p)) + + # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. + files = os.listdir(distinfo) + for fn in files: + if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): + p = fsdecode(os.path.join(distinfo, fn)) + ap = to_posix(os.path.join(info_dir, fn)) + archive_paths.append((ap, p)) + + wheel_metadata = [ + 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), + 'Generator: distlib %s' % __version__, + 'Root-Is-Purelib: %s' % is_pure, + ] + for pyver, abi, arch in self.tags: + wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) + p = os.path.join(distinfo, 'WHEEL') + with open(p, 'w') as f: + f.write('\n'.join(wheel_metadata)) + ap = to_posix(os.path.join(info_dir, 'WHEEL')) + archive_paths.append((ap, p)) + + # sort the entries by archive path. Not needed by any spec, but it + # keeps the archive listing and RECORD tidier than they would otherwise + # be. Use the number of path segments to keep directory entries together, + # and keep the dist-info stuff at the end. + def sorter(t): + ap = t[0] + n = ap.count('/') + if '.dist-info' in ap: + n += 10000 + return (n, ap) + archive_paths = sorted(archive_paths, key=sorter) + + # Now, at last, RECORD. + # Paths in here are archive paths - nothing else makes sense. + self.write_records((distinfo, info_dir), libdir, archive_paths) + # Now, ready to build the zip file + pathname = os.path.join(self.dirname, self.filename) + self.build_zip(pathname, archive_paths) + return pathname + + def skip_entry(self, arcname): + """ + Determine whether an archive entry should be skipped when verifying + or installing. + """ + # The signature file won't be in RECORD, + # and we don't currently don't do anything with it + # We also skip directories, as they won't be in RECORD + # either. See: + # + # https://github.com/pypa/wheel/issues/294 + # https://github.com/pypa/wheel/issues/287 + # https://github.com/pypa/wheel/pull/289 + # + return arcname.endswith(('/', '/RECORD.jws')) + + def install(self, paths, maker, **kwargs): + """ + Install a wheel to the specified paths. If kwarg ``warner`` is + specified, it should be a callable, which will be called with two + tuples indicating the wheel version of this software and the wheel + version in the file, if there is a discrepancy in the versions. + This can be used to issue any warnings to raise any exceptions. + If kwarg ``lib_only`` is True, only the purelib/platlib files are + installed, and the headers, scripts, data and dist-info metadata are + not written. If kwarg ``bytecode_hashed_invalidation`` is True, written + bytecode will try to use file-hash based invalidation (PEP-552) on + supported interpreter versions (CPython 2.7+). + + The return value is a :class:`InstalledDistribution` instance unless + ``options.lib_only`` is True, in which case the return value is ``None``. + """ + + dry_run = maker.dry_run + warner = kwargs.get('warner') + lib_only = kwargs.get('lib_only', False) + bc_hashed_invalidation = kwargs.get('bytecode_hashed_invalidation', False) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if (file_version != self.wheel_version) and warner: + warner(self.wheel_version, file_version) + + if message['Root-Is-Purelib'] == 'true': + libdir = paths['purelib'] + else: + libdir = paths['platlib'] + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + data_pfx = posixpath.join(data_dir, '') + info_pfx = posixpath.join(info_dir, '') + script_pfx = posixpath.join(data_dir, 'scripts', '') + + # make a new instance rather than a copy of maker's, + # as we mutate it + fileop = FileOperator(dry_run=dry_run) + fileop.record = True # so we can rollback if needed + + bc = not sys.dont_write_bytecode # Double negatives. Lovely! + + outfiles = [] # for RECORD writing + + # for script copying/shebang processing + workdir = tempfile.mkdtemp() + # set target dir later + # we default add_launchers to False, as the + # Python Launcher should be used instead + maker.source_dir = workdir + maker.target_dir = None + try: + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + if lib_only and u_arcname.startswith((info_pfx, data_pfx)): + logger.debug('lib_only: skipping %s', u_arcname) + continue + is_script = (u_arcname.startswith(script_pfx) + and not u_arcname.endswith('.exe')) + + if u_arcname.startswith(data_pfx): + _, where, rp = u_arcname.split('/', 2) + outfile = os.path.join(paths[where], convert_path(rp)) + else: + # meant for site-packages. + if u_arcname in (wheel_metadata_name, record_name): + continue + outfile = os.path.join(libdir, convert_path(u_arcname)) + if not is_script: + with zf.open(arcname) as bf: + fileop.copy_stream(bf, outfile) + # Issue #147: permission bits aren't preserved. Using + # zf.extract(zinfo, libdir) should have worked, but didn't, + # see https://www.thetopsites.net/article/53834422.shtml + # So ... manually preserve permission bits as given in zinfo + if os.name == 'posix': + # just set the normal permission bits + os.chmod(outfile, (zinfo.external_attr >> 16) & 0x1FF) + outfiles.append(outfile) + # Double check the digest of the written file + if not dry_run and row[1]: + with open(outfile, 'rb') as bf: + data = bf.read() + _, newdigest = self.get_hash(data, kind) + if newdigest != digest: + raise DistlibException('digest mismatch ' + 'on write for ' + '%s' % outfile) + if bc and outfile.endswith('.py'): + try: + pyc = fileop.byte_compile(outfile, + hashed_invalidation=bc_hashed_invalidation) + outfiles.append(pyc) + except Exception: + # Don't give up if byte-compilation fails, + # but log it and perhaps warn the user + logger.warning('Byte-compilation failed', + exc_info=True) + else: + fn = os.path.basename(convert_path(arcname)) + workname = os.path.join(workdir, fn) + with zf.open(arcname) as bf: + fileop.copy_stream(bf, workname) + + dn, fn = os.path.split(outfile) + maker.target_dir = dn + filenames = maker.make(fn) + fileop.set_executable_mode(filenames) + outfiles.extend(filenames) + + if lib_only: + logger.debug('lib_only: returning None') + dist = None + else: + # Generate scripts + + # Try to get pydist.json so we can see if there are + # any commands to generate. If this fails (e.g. because + # of a legacy wheel), log a warning but don't give up. + commands = None + file_version = self.info['Wheel-Version'] + if file_version == '1.0': + # Use legacy info + ep = posixpath.join(info_dir, 'entry_points.txt') + try: + with zf.open(ep) as bwf: + epdata = read_exports(bwf) + commands = {} + for key in ('console', 'gui'): + k = '%s_scripts' % key + if k in epdata: + commands['wrap_%s' % key] = d = {} + for v in epdata[k].values(): + s = '%s:%s' % (v.prefix, v.suffix) + if v.flags: + s += ' [%s]' % ','.join(v.flags) + d[v.name] = s + except Exception: + logger.warning('Unable to read legacy script ' + 'metadata, so cannot generate ' + 'scripts') + else: + try: + with zf.open(metadata_name) as bwf: + wf = wrapper(bwf) + commands = json.load(wf).get('extensions') + if commands: + commands = commands.get('python.commands') + except Exception: + logger.warning('Unable to read JSON metadata, so ' + 'cannot generate scripts') + if commands: + console_scripts = commands.get('wrap_console', {}) + gui_scripts = commands.get('wrap_gui', {}) + if console_scripts or gui_scripts: + script_dir = paths.get('scripts', '') + if not os.path.isdir(script_dir): + raise ValueError('Valid script path not ' + 'specified') + maker.target_dir = script_dir + for k, v in console_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script) + fileop.set_executable_mode(filenames) + + if gui_scripts: + options = {'gui': True } + for k, v in gui_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script, options) + fileop.set_executable_mode(filenames) + + p = os.path.join(libdir, info_dir) + dist = InstalledDistribution(p) + + # Write SHARED + paths = dict(paths) # don't change passed in dict + del paths['purelib'] + del paths['platlib'] + paths['lib'] = libdir + p = dist.write_shared_locations(paths, dry_run) + if p: + outfiles.append(p) + + # Write RECORD + dist.write_installed_files(outfiles, paths['prefix'], + dry_run) + return dist + except Exception: # pragma: no cover + logger.exception('installation failed.') + fileop.rollback() + raise + finally: + shutil.rmtree(workdir) + + def _get_dylib_cache(self): + global cache + if cache is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('dylib-cache'), + '%s.%s' % sys.version_info[:2]) + cache = Cache(base) + return cache + + def _get_extensions(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + arcname = posixpath.join(info_dir, 'EXTENSIONS') + wrapper = codecs.getreader('utf-8') + result = [] + with ZipFile(pathname, 'r') as zf: + try: + with zf.open(arcname) as bf: + wf = wrapper(bf) + extensions = json.load(wf) + cache = self._get_dylib_cache() + prefix = cache.prefix_to_dir(pathname) + cache_base = os.path.join(cache.base, prefix) + if not os.path.isdir(cache_base): + os.makedirs(cache_base) + for name, relpath in extensions.items(): + dest = os.path.join(cache_base, convert_path(relpath)) + if not os.path.exists(dest): + extract = True + else: + file_time = os.stat(dest).st_mtime + file_time = datetime.datetime.fromtimestamp(file_time) + info = zf.getinfo(relpath) + wheel_time = datetime.datetime(*info.date_time) + extract = wheel_time > file_time + if extract: + zf.extract(relpath, cache_base) + result.append((name, dest)) + except KeyError: + pass + return result + + def is_compatible(self): + """ + Determine if a wheel is compatible with the running system. + """ + return is_compatible(self) + + def is_mountable(self): + """ + Determine if a wheel is asserted as mountable by its metadata. + """ + return True # for now - metadata details TBD + + def mount(self, append=False): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if not self.is_compatible(): + msg = 'Wheel %s not compatible with this Python.' % pathname + raise DistlibException(msg) + if not self.is_mountable(): + msg = 'Wheel %s is marked as not mountable.' % pathname + raise DistlibException(msg) + if pathname in sys.path: + logger.debug('%s already in path', pathname) + else: + if append: + sys.path.append(pathname) + else: + sys.path.insert(0, pathname) + extensions = self._get_extensions() + if extensions: + if _hook not in sys.meta_path: + sys.meta_path.append(_hook) + _hook.add(pathname, extensions) + + def unmount(self): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if pathname not in sys.path: + logger.debug('%s not in path', pathname) + else: + sys.path.remove(pathname) + if pathname in _hook.impure_wheels: + _hook.remove(pathname) + if not _hook.impure_wheels: + if _hook in sys.meta_path: + sys.meta_path.remove(_hook) + + def verify(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + # TODO version verification + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + # See issue #115: some wheels have .. in their entries, but + # in the filename ... e.g. __main__..py ! So the check is + # updated to look for .. in the directory portions + p = u_arcname.split('/') + if '..' in p: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + def update(self, modifier, dest_dir=None, **kwargs): + """ + Update the contents of a wheel in a generic way. The modifier should + be a callable which expects a dictionary argument: its keys are + archive-entry paths, and its values are absolute filesystem paths + where the contents the corresponding archive entries can be found. The + modifier is free to change the contents of the files pointed to, add + new entries and remove entries, before returning. This method will + extract the entire contents of the wheel to a temporary location, call + the modifier, and then use the passed (and possibly updated) + dictionary to write a new wheel. If ``dest_dir`` is specified, the new + wheel is written there -- otherwise, the original wheel is overwritten. + + The modifier should return True if it updated the wheel, else False. + This method returns the same value the modifier returns. + """ + + def get_version(path_map, info_dir): + version = path = None + key = '%s/%s' % (info_dir, LEGACY_METADATA_FILENAME) + if key not in path_map: + key = '%s/PKG-INFO' % info_dir + if key in path_map: + path = path_map[key] + version = Metadata(path=path).version + return version, path + + def update_version(version, path): + updated = None + try: + v = NormalizedVersion(version) + i = version.find('-') + if i < 0: + updated = '%s+1' % version + else: + parts = [int(s) for s in version[i + 1:].split('.')] + parts[-1] += 1 + updated = '%s+%s' % (version[:i], + '.'.join(str(i) for i in parts)) + except UnsupportedVersionError: + logger.debug('Cannot update non-compliant (PEP-440) ' + 'version %r', version) + if updated: + md = Metadata(path=path) + md.version = updated + legacy = path.endswith(LEGACY_METADATA_FILENAME) + md.write(path=path, legacy=legacy) + logger.debug('Version updated from %r to %r', version, + updated) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + record_name = posixpath.join(info_dir, 'RECORD') + with tempdir() as workdir: + with ZipFile(pathname, 'r') as zf: + path_map = {} + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if u_arcname == record_name: + continue + if '..' in u_arcname: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + zf.extract(zinfo, workdir) + path = os.path.join(workdir, convert_path(u_arcname)) + path_map[u_arcname] = path + + # Remember the version. + original_version, _ = get_version(path_map, info_dir) + # Files extracted. Call the modifier. + modified = modifier(path_map, **kwargs) + if modified: + # Something changed - need to build a new wheel. + current_version, path = get_version(path_map, info_dir) + if current_version and (current_version == original_version): + # Add or update local version to signify changes. + update_version(current_version, path) + # Decide where the new wheel goes. + if dest_dir is None: + fd, newpath = tempfile.mkstemp(suffix='.whl', + prefix='wheel-update-', + dir=workdir) + os.close(fd) + else: + if not os.path.isdir(dest_dir): + raise DistlibException('Not a directory: %r' % dest_dir) + newpath = os.path.join(dest_dir, self.filename) + archive_paths = list(path_map.items()) + distinfo = os.path.join(workdir, info_dir) + info = distinfo, info_dir + self.write_records(info, workdir, archive_paths) + self.build_zip(newpath, archive_paths) + if dest_dir is None: + shutil.copyfile(newpath, pathname) + return modified + +def _get_glibc_version(): + import platform + ver = platform.libc_ver() + result = [] + if ver[0] == 'glibc': + for s in ver[1].split('.'): + result.append(int(s) if s.isdigit() else 0) + result = tuple(result) + return result + +def compatible_tags(): + """ + Return (pyver, abi, arch) tuples compatible with this Python. + """ + versions = [VER_SUFFIX] + major = VER_SUFFIX[0] + for minor in range(sys.version_info[1] - 1, - 1, -1): + versions.append(''.join([major, str(minor)])) + + abis = [] + for suffix, _, _ in imp.get_suffixes(): + if suffix.startswith('.abi'): + abis.append(suffix.split('.', 2)[1]) + abis.sort() + if ABI != 'none': + abis.insert(0, ABI) + abis.append('none') + result = [] + + arches = [ARCH] + if sys.platform == 'darwin': + m = re.match(r'(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) + if m: + name, major, minor, arch = m.groups() + minor = int(minor) + matches = [arch] + if arch in ('i386', 'ppc'): + matches.append('fat') + if arch in ('i386', 'ppc', 'x86_64'): + matches.append('fat3') + if arch in ('ppc64', 'x86_64'): + matches.append('fat64') + if arch in ('i386', 'x86_64'): + matches.append('intel') + if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): + matches.append('universal') + while minor >= 0: + for match in matches: + s = '%s_%s_%s_%s' % (name, major, minor, match) + if s != ARCH: # already there + arches.append(s) + minor -= 1 + + # Most specific - our Python version, ABI and arch + for abi in abis: + for arch in arches: + result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) + # manylinux + if abi != 'none' and sys.platform.startswith('linux'): + arch = arch.replace('linux_', '') + parts = _get_glibc_version() + if len(parts) == 2: + if parts >= (2, 5): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux1_%s' % arch)) + if parts >= (2, 12): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux2010_%s' % arch)) + if parts >= (2, 17): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux2014_%s' % arch)) + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux_%s_%s_%s' % (parts[0], parts[1], + arch))) + + # where no ABI / arch dependency, but IMP_PREFIX dependency + for i, version in enumerate(versions): + result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) + if i == 0: + result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) + + # no IMP_PREFIX, ABI or arch dependency + for i, version in enumerate(versions): + result.append((''.join(('py', version)), 'none', 'any')) + if i == 0: + result.append((''.join(('py', version[0])), 'none', 'any')) + + return set(result) + + +COMPATIBLE_TAGS = compatible_tags() + +del compatible_tags + + +def is_compatible(wheel, tags=None): + if not isinstance(wheel, Wheel): + wheel = Wheel(wheel) # assume it's a filename + result = False + if tags is None: + tags = COMPATIBLE_TAGS + for ver, abi, arch in tags: + if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: + result = True + break + return result diff --git a/venv/Lib/site-packages/pip/_vendor/distro.py b/venv/Lib/site-packages/pip/_vendor/distro.py new file mode 100644 index 00000000..78927413 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distro.py @@ -0,0 +1,1386 @@ +# Copyright 2015,2016,2017 Nir Cohen +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +The ``distro`` package (``distro`` stands for Linux Distribution) provides +information about the Linux distribution it runs on, such as a reliable +machine-readable distro ID, or version information. + +It is the recommended replacement for Python's original +:py:func:`platform.linux_distribution` function, but it provides much more +functionality. An alternative implementation became necessary because Python +3.5 deprecated this function, and Python 3.8 removed it altogether. Its +predecessor function :py:func:`platform.dist` was already deprecated since +Python 2.6 and removed in Python 3.8. Still, there are many cases in which +access to OS distribution information is needed. See `Python issue 1322 +`_ for more information. +""" + +import argparse +import json +import logging +import os +import re +import shlex +import subprocess +import sys +import warnings + +__version__ = "1.6.0" + +# Use `if False` to avoid an ImportError on Python 2. After dropping Python 2 +# support, can use typing.TYPE_CHECKING instead. See: +# https://docs.python.org/3/library/typing.html#typing.TYPE_CHECKING +if False: # pragma: nocover + from typing import ( + Any, + Callable, + Dict, + Iterable, + Optional, + Sequence, + TextIO, + Tuple, + Type, + TypedDict, + Union, + ) + + VersionDict = TypedDict( + "VersionDict", {"major": str, "minor": str, "build_number": str} + ) + InfoDict = TypedDict( + "InfoDict", + { + "id": str, + "version": str, + "version_parts": VersionDict, + "like": str, + "codename": str, + }, + ) + + +_UNIXCONFDIR = os.environ.get("UNIXCONFDIR", "/etc") +_UNIXUSRLIBDIR = os.environ.get("UNIXUSRLIBDIR", "/usr/lib") +_OS_RELEASE_BASENAME = "os-release" + +#: Translation table for normalizing the "ID" attribute defined in os-release +#: files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as defined in the os-release file, translated to lower case, +#: with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_OS_ID = { + "ol": "oracle", # Oracle Linux +} + +#: Translation table for normalizing the "Distributor ID" attribute returned by +#: the lsb_release command, for use by the :func:`distro.id` method. +#: +#: * Key: Value as returned by the lsb_release command, translated to lower +#: case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_LSB_ID = { + "enterpriseenterpriseas": "oracle", # Oracle Enterprise Linux 4 + "enterpriseenterpriseserver": "oracle", # Oracle Linux 5 + "redhatenterpriseworkstation": "rhel", # RHEL 6, 7 Workstation + "redhatenterpriseserver": "rhel", # RHEL 6, 7 Server + "redhatenterprisecomputenode": "rhel", # RHEL 6 ComputeNode +} + +#: Translation table for normalizing the distro ID derived from the file name +#: of distro release files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as derived from the file name of a distro release file, +#: translated to lower case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_DISTRO_ID = { + "redhat": "rhel", # RHEL 6.x, 7.x +} + +# Pattern for content of distro release file (reversed) +_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( + r"(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)" +) + +# Pattern for base file name of distro release file +_DISTRO_RELEASE_BASENAME_PATTERN = re.compile(r"(\w+)[-_](release|version)$") + +# Base file names to be ignored when searching for distro release file +_DISTRO_RELEASE_IGNORE_BASENAMES = ( + "debian_version", + "lsb-release", + "oem-release", + _OS_RELEASE_BASENAME, + "system-release", + "plesk-release", + "iredmail-release", +) + + +def linux_distribution(full_distribution_name=True): + # type: (bool) -> Tuple[str, str, str] + """ + .. deprecated:: 1.6.0 + + :func:`distro.linux_distribution()` is deprecated. It should only be + used as a compatibility shim with Python's + :py:func:`platform.linux_distribution()`. Please use :func:`distro.id`, + :func:`distro.version` and :func:`distro.name` instead. + + Return information about the current OS distribution as a tuple + ``(id_name, version, codename)`` with items as follows: + + * ``id_name``: If *full_distribution_name* is false, the result of + :func:`distro.id`. Otherwise, the result of :func:`distro.name`. + + * ``version``: The result of :func:`distro.version`. + + * ``codename``: The result of :func:`distro.codename`. + + The interface of this function is compatible with the original + :py:func:`platform.linux_distribution` function, supporting a subset of + its parameters. + + The data it returns may not exactly be the same, because it uses more data + sources than the original function, and that may lead to different data if + the OS distribution is not consistent across multiple data sources it + provides (there are indeed such distributions ...). + + Another reason for differences is the fact that the :func:`distro.id` + method normalizes the distro ID string to a reliable machine-readable value + for a number of popular OS distributions. + """ + warnings.warn( + "distro.linux_distribution() is deprecated. It should only be used as a " + "compatibility shim with Python's platform.linux_distribution(). Please use " + "distro.id(), distro.version() and distro.name() instead.", + DeprecationWarning, + stacklevel=2, + ) + return _distro.linux_distribution(full_distribution_name) + + +def id(): + # type: () -> str + """ + Return the distro ID of the current distribution, as a + machine-readable string. + + For a number of OS distributions, the returned distro ID value is + *reliable*, in the sense that it is documented and that it does not change + across releases of the distribution. + + This package maintains the following reliable distro ID values: + + ============== ========================================= + Distro ID Distribution + ============== ========================================= + "ubuntu" Ubuntu + "debian" Debian + "rhel" RedHat Enterprise Linux + "centos" CentOS + "fedora" Fedora + "sles" SUSE Linux Enterprise Server + "opensuse" openSUSE + "amazon" Amazon Linux + "arch" Arch Linux + "cloudlinux" CloudLinux OS + "exherbo" Exherbo Linux + "gentoo" GenToo Linux + "ibm_powerkvm" IBM PowerKVM + "kvmibm" KVM for IBM z Systems + "linuxmint" Linux Mint + "mageia" Mageia + "mandriva" Mandriva Linux + "parallels" Parallels + "pidora" Pidora + "raspbian" Raspbian + "oracle" Oracle Linux (and Oracle Enterprise Linux) + "scientific" Scientific Linux + "slackware" Slackware + "xenserver" XenServer + "openbsd" OpenBSD + "netbsd" NetBSD + "freebsd" FreeBSD + "midnightbsd" MidnightBSD + ============== ========================================= + + If you have a need to get distros for reliable IDs added into this set, + or if you find that the :func:`distro.id` function returns a different + distro ID for one of the listed distros, please create an issue in the + `distro issue tracker`_. + + **Lookup hierarchy and transformations:** + + First, the ID is obtained from the following sources, in the specified + order. The first available and non-empty value is used: + + * the value of the "ID" attribute of the os-release file, + + * the value of the "Distributor ID" attribute returned by the lsb_release + command, + + * the first part of the file name of the distro release file, + + The so determined ID value then passes the following transformations, + before it is returned by this method: + + * it is translated to lower case, + + * blanks (which should not be there anyway) are translated to underscores, + + * a normalization of the ID is performed, based upon + `normalization tables`_. The purpose of this normalization is to ensure + that the ID is as reliable as possible, even across incompatible changes + in the OS distributions. A common reason for an incompatible change is + the addition of an os-release file, or the addition of the lsb_release + command, with ID values that differ from what was previously determined + from the distro release file name. + """ + return _distro.id() + + +def name(pretty=False): + # type: (bool) -> str + """ + Return the name of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the name is returned without version or codename. + (e.g. "CentOS Linux") + + If *pretty* is true, the version and codename are appended. + (e.g. "CentOS Linux 7.1.1503 (Core)") + + **Lookup hierarchy:** + + The name is obtained from the following sources, in the specified order. + The first available and non-empty value is used: + + * If *pretty* is false: + + - the value of the "NAME" attribute of the os-release file, + + - the value of the "Distributor ID" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file. + + * If *pretty* is true: + + - the value of the "PRETTY_NAME" attribute of the os-release file, + + - the value of the "Description" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file, appended + with the value of the pretty version ("" and "" + fields) of the distro release file, if available. + """ + return _distro.name(pretty) + + +def version(pretty=False, best=False): + # type: (bool, bool) -> str + """ + Return the version of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the version is returned without codename (e.g. + "7.0"). + + If *pretty* is true, the codename in parenthesis is appended, if the + codename is non-empty (e.g. "7.0 (Maipo)"). + + Some distributions provide version numbers with different precisions in + the different sources of distribution information. Examining the different + sources in a fixed priority order does not always yield the most precise + version (e.g. for Debian 8.2, or CentOS 7.1). + + The *best* parameter can be used to control the approach for the returned + version: + + If *best* is false, the first non-empty version number in priority order of + the examined sources is returned. + + If *best* is true, the most precise version number out of all examined + sources is returned. + + **Lookup hierarchy:** + + In all cases, the version number is obtained from the following sources. + If *best* is false, this order represents the priority order: + + * the value of the "VERSION_ID" attribute of the os-release file, + * the value of the "Release" attribute returned by the lsb_release + command, + * the version number parsed from the "" field of the first line + of the distro release file, + * the version number parsed from the "PRETTY_NAME" attribute of the + os-release file, if it follows the format of the distro release files. + * the version number parsed from the "Description" attribute returned by + the lsb_release command, if it follows the format of the distro release + files. + """ + return _distro.version(pretty, best) + + +def version_parts(best=False): + # type: (bool) -> Tuple[str, str, str] + """ + Return the version of the current OS distribution as a tuple + ``(major, minor, build_number)`` with items as follows: + + * ``major``: The result of :func:`distro.major_version`. + + * ``minor``: The result of :func:`distro.minor_version`. + + * ``build_number``: The result of :func:`distro.build_number`. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.version_parts(best) + + +def major_version(best=False): + # type: (bool) -> str + """ + Return the major version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The major version is the first + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.major_version(best) + + +def minor_version(best=False): + # type: (bool) -> str + """ + Return the minor version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The minor version is the second + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.minor_version(best) + + +def build_number(best=False): + # type: (bool) -> str + """ + Return the build number of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The build number is the third part + of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.build_number(best) + + +def like(): + # type: () -> str + """ + Return a space-separated list of distro IDs of distributions that are + closely related to the current OS distribution in regards to packaging + and programming interfaces, for example distributions the current + distribution is a derivative from. + + **Lookup hierarchy:** + + This information item is only provided by the os-release file. + For details, see the description of the "ID_LIKE" attribute in the + `os-release man page + `_. + """ + return _distro.like() + + +def codename(): + # type: () -> str + """ + Return the codename for the release of the current OS distribution, + as a string. + + If the distribution does not have a codename, an empty string is returned. + + Note that the returned codename is not always really a codename. For + example, openSUSE returns "x86_64". This function does not handle such + cases in any special way and just returns the string it finds, if any. + + **Lookup hierarchy:** + + * the codename within the "VERSION" attribute of the os-release file, if + provided, + + * the value of the "Codename" attribute returned by the lsb_release + command, + + * the value of the "" field of the distro release file. + """ + return _distro.codename() + + +def info(pretty=False, best=False): + # type: (bool, bool) -> InfoDict + """ + Return certain machine-readable information items about the current OS + distribution in a dictionary, as shown in the following example: + + .. sourcecode:: python + + { + 'id': 'rhel', + 'version': '7.0', + 'version_parts': { + 'major': '7', + 'minor': '0', + 'build_number': '' + }, + 'like': 'fedora', + 'codename': 'Maipo' + } + + The dictionary structure and keys are always the same, regardless of which + information items are available in the underlying data sources. The values + for the various keys are as follows: + + * ``id``: The result of :func:`distro.id`. + + * ``version``: The result of :func:`distro.version`. + + * ``version_parts -> major``: The result of :func:`distro.major_version`. + + * ``version_parts -> minor``: The result of :func:`distro.minor_version`. + + * ``version_parts -> build_number``: The result of + :func:`distro.build_number`. + + * ``like``: The result of :func:`distro.like`. + + * ``codename``: The result of :func:`distro.codename`. + + For a description of the *pretty* and *best* parameters, see the + :func:`distro.version` method. + """ + return _distro.info(pretty, best) + + +def os_release_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the os-release file data source of the current OS distribution. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_info() + + +def lsb_release_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the lsb_release command data source of the current OS distribution. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_info() + + +def distro_release_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_info() + + +def uname_info(): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + """ + return _distro.uname_info() + + +def os_release_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the os-release file data source + of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_attr(attribute) + + +def lsb_release_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the lsb_release command output + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_attr(attribute) + + +def distro_release_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_attr(attribute) + + +def uname_attr(attribute): + # type: (str) -> str + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + """ + return _distro.uname_attr(attribute) + + +try: + from functools import cached_property +except ImportError: + # Python < 3.8 + class cached_property(object): # type: ignore + """A version of @property which caches the value. On access, it calls the + underlying function and sets the value in `__dict__` so future accesses + will not re-call the property. + """ + + def __init__(self, f): + # type: (Callable[[Any], Any]) -> None + self._fname = f.__name__ + self._f = f + + def __get__(self, obj, owner): + # type: (Any, Type[Any]) -> Any + assert obj is not None, "call {} on an instance".format(self._fname) + ret = obj.__dict__[self._fname] = self._f(obj) + return ret + + +class LinuxDistribution(object): + """ + Provides information about a OS distribution. + + This package creates a private module-global instance of this class with + default initialization arguments, that is used by the + `consolidated accessor functions`_ and `single source accessor functions`_. + By using default initialization arguments, that module-global instance + returns data about the current OS distribution (i.e. the distro this + package runs on). + + Normally, it is not necessary to create additional instances of this class. + However, in situations where control is needed over the exact data sources + that are used, instances of this class can be created with a specific + distro release file, or a specific os-release file, or without invoking the + lsb_release command. + """ + + def __init__( + self, + include_lsb=True, + os_release_file="", + distro_release_file="", + include_uname=True, + root_dir=None, + ): + # type: (bool, str, str, bool, Optional[str]) -> None + """ + The initialization method of this class gathers information from the + available data sources, and stores that in private instance attributes. + Subsequent access to the information items uses these private instance + attributes, so that the data sources are read only once. + + Parameters: + + * ``include_lsb`` (bool): Controls whether the + `lsb_release command output`_ is included as a data source. + + If the lsb_release command is not available in the program execution + path, the data source for the lsb_release command will be empty. + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is to be used as a data source. + + An empty string (the default) will cause the default path name to + be used (see `os-release file`_ for details). + + If the specified or defaulted os-release file does not exist, the + data source for the os-release file will be empty. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is to be used as a data source. + + An empty string (the default) will cause a default search algorithm + to be used (see `distro release file`_ for details). + + If the specified distro release file does not exist, or if no default + distro release file can be found, the data source for the distro + release file will be empty. + + * ``include_uname`` (bool): Controls whether uname command output is + included as a data source. If the uname command is not available in + the program execution path the data source for the uname command will + be empty. + + * ``root_dir`` (string): The absolute path to the root directory to use + to find distro-related information files. + + Public instance attributes: + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``include_lsb`` (bool): The result of the ``include_lsb`` parameter. + This controls whether the lsb information will be loaded. + + * ``include_uname`` (bool): The result of the ``include_uname`` + parameter. This controls whether the uname information will + be loaded. + + Raises: + + * :py:exc:`IOError`: Some I/O issue with an os-release file or distro + release file. + + * :py:exc:`subprocess.CalledProcessError`: The lsb_release command had + some issue (other than not being available in the program execution + path). + + * :py:exc:`UnicodeError`: A data source has unexpected characters or + uses an unexpected encoding. + """ + self.root_dir = root_dir + self.etc_dir = os.path.join(root_dir, "etc") if root_dir else _UNIXCONFDIR + self.usr_lib_dir = ( + os.path.join(root_dir, "usr/lib") if root_dir else _UNIXUSRLIBDIR + ) + + if os_release_file: + self.os_release_file = os_release_file + else: + etc_dir_os_release_file = os.path.join(self.etc_dir, _OS_RELEASE_BASENAME) + usr_lib_os_release_file = os.path.join( + self.usr_lib_dir, _OS_RELEASE_BASENAME + ) + + # NOTE: The idea is to respect order **and** have it set + # at all times for API backwards compatibility. + if os.path.isfile(etc_dir_os_release_file) or not os.path.isfile( + usr_lib_os_release_file + ): + self.os_release_file = etc_dir_os_release_file + else: + self.os_release_file = usr_lib_os_release_file + + self.distro_release_file = distro_release_file or "" # updated later + self.include_lsb = include_lsb + self.include_uname = include_uname + + def __repr__(self): + # type: () -> str + """Return repr of all info""" + return ( + "LinuxDistribution(" + "os_release_file={self.os_release_file!r}, " + "distro_release_file={self.distro_release_file!r}, " + "include_lsb={self.include_lsb!r}, " + "include_uname={self.include_uname!r}, " + "_os_release_info={self._os_release_info!r}, " + "_lsb_release_info={self._lsb_release_info!r}, " + "_distro_release_info={self._distro_release_info!r}, " + "_uname_info={self._uname_info!r})".format(self=self) + ) + + def linux_distribution(self, full_distribution_name=True): + # type: (bool) -> Tuple[str, str, str] + """ + Return information about the OS distribution that is compatible + with Python's :func:`platform.linux_distribution`, supporting a subset + of its parameters. + + For details, see :func:`distro.linux_distribution`. + """ + return ( + self.name() if full_distribution_name else self.id(), + self.version(), + self.codename(), + ) + + def id(self): + # type: () -> str + """Return the distro ID of the OS distribution, as a string. + + For details, see :func:`distro.id`. + """ + + def normalize(distro_id, table): + # type: (str, Dict[str, str]) -> str + distro_id = distro_id.lower().replace(" ", "_") + return table.get(distro_id, distro_id) + + distro_id = self.os_release_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_OS_ID) + + distro_id = self.lsb_release_attr("distributor_id") + if distro_id: + return normalize(distro_id, NORMALIZED_LSB_ID) + + distro_id = self.distro_release_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + distro_id = self.uname_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + return "" + + def name(self, pretty=False): + # type: (bool) -> str + """ + Return the name of the OS distribution, as a string. + + For details, see :func:`distro.name`. + """ + name = ( + self.os_release_attr("name") + or self.lsb_release_attr("distributor_id") + or self.distro_release_attr("name") + or self.uname_attr("name") + ) + if pretty: + name = self.os_release_attr("pretty_name") or self.lsb_release_attr( + "description" + ) + if not name: + name = self.distro_release_attr("name") or self.uname_attr("name") + version = self.version(pretty=True) + if version: + name = name + " " + version + return name or "" + + def version(self, pretty=False, best=False): + # type: (bool, bool) -> str + """ + Return the version of the OS distribution, as a string. + + For details, see :func:`distro.version`. + """ + versions = [ + self.os_release_attr("version_id"), + self.lsb_release_attr("release"), + self.distro_release_attr("version_id"), + self._parse_distro_release_content(self.os_release_attr("pretty_name")).get( + "version_id", "" + ), + self._parse_distro_release_content( + self.lsb_release_attr("description") + ).get("version_id", ""), + self.uname_attr("release"), + ] + version = "" + if best: + # This algorithm uses the last version in priority order that has + # the best precision. If the versions are not in conflict, that + # does not matter; otherwise, using the last one instead of the + # first one might be considered a surprise. + for v in versions: + if v.count(".") > version.count(".") or version == "": + version = v + else: + for v in versions: + if v != "": + version = v + break + if pretty and version and self.codename(): + version = "{0} ({1})".format(version, self.codename()) + return version + + def version_parts(self, best=False): + # type: (bool) -> Tuple[str, str, str] + """ + Return the version of the OS distribution, as a tuple of version + numbers. + + For details, see :func:`distro.version_parts`. + """ + version_str = self.version(best=best) + if version_str: + version_regex = re.compile(r"(\d+)\.?(\d+)?\.?(\d+)?") + matches = version_regex.match(version_str) + if matches: + major, minor, build_number = matches.groups() + return major, minor or "", build_number or "" + return "", "", "" + + def major_version(self, best=False): + # type: (bool) -> str + """ + Return the major version number of the current distribution. + + For details, see :func:`distro.major_version`. + """ + return self.version_parts(best)[0] + + def minor_version(self, best=False): + # type: (bool) -> str + """ + Return the minor version number of the current distribution. + + For details, see :func:`distro.minor_version`. + """ + return self.version_parts(best)[1] + + def build_number(self, best=False): + # type: (bool) -> str + """ + Return the build number of the current distribution. + + For details, see :func:`distro.build_number`. + """ + return self.version_parts(best)[2] + + def like(self): + # type: () -> str + """ + Return the IDs of distributions that are like the OS distribution. + + For details, see :func:`distro.like`. + """ + return self.os_release_attr("id_like") or "" + + def codename(self): + # type: () -> str + """ + Return the codename of the OS distribution. + + For details, see :func:`distro.codename`. + """ + try: + # Handle os_release specially since distros might purposefully set + # this to empty string to have no codename + return self._os_release_info["codename"] + except KeyError: + return ( + self.lsb_release_attr("codename") + or self.distro_release_attr("codename") + or "" + ) + + def info(self, pretty=False, best=False): + # type: (bool, bool) -> InfoDict + """ + Return certain machine-readable information about the OS + distribution. + + For details, see :func:`distro.info`. + """ + return dict( + id=self.id(), + version=self.version(pretty, best), + version_parts=dict( + major=self.major_version(best), + minor=self.minor_version(best), + build_number=self.build_number(best), + ), + like=self.like(), + codename=self.codename(), + ) + + def os_release_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the os-release file data source of the OS distribution. + + For details, see :func:`distro.os_release_info`. + """ + return self._os_release_info + + def lsb_release_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the lsb_release command data source of the OS + distribution. + + For details, see :func:`distro.lsb_release_info`. + """ + return self._lsb_release_info + + def distro_release_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the distro release file data source of the OS + distribution. + + For details, see :func:`distro.distro_release_info`. + """ + return self._distro_release_info + + def uname_info(self): + # type: () -> Dict[str, str] + """ + Return a dictionary containing key-value pairs for the information + items from the uname command data source of the OS distribution. + + For details, see :func:`distro.uname_info`. + """ + return self._uname_info + + def os_release_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the os-release file data + source of the OS distribution. + + For details, see :func:`distro.os_release_attr`. + """ + return self._os_release_info.get(attribute, "") + + def lsb_release_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the lsb_release command + output data source of the OS distribution. + + For details, see :func:`distro.lsb_release_attr`. + """ + return self._lsb_release_info.get(attribute, "") + + def distro_release_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the distro release file + data source of the OS distribution. + + For details, see :func:`distro.distro_release_attr`. + """ + return self._distro_release_info.get(attribute, "") + + def uname_attr(self, attribute): + # type: (str) -> str + """ + Return a single named information item from the uname command + output data source of the OS distribution. + + For details, see :func:`distro.uname_attr`. + """ + return self._uname_info.get(attribute, "") + + @cached_property + def _os_release_info(self): + # type: () -> Dict[str, str] + """ + Get the information items from the specified os-release file. + + Returns: + A dictionary containing all information items. + """ + if os.path.isfile(self.os_release_file): + with open(self.os_release_file) as release_file: + return self._parse_os_release_content(release_file) + return {} + + @staticmethod + def _parse_os_release_content(lines): + # type: (TextIO) -> Dict[str, str] + """ + Parse the lines of an os-release file. + + Parameters: + + * lines: Iterable through the lines in the os-release file. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + lexer = shlex.shlex(lines, posix=True) + lexer.whitespace_split = True + + # The shlex module defines its `wordchars` variable using literals, + # making it dependent on the encoding of the Python source file. + # In Python 2.6 and 2.7, the shlex source file is encoded in + # 'iso-8859-1', and the `wordchars` variable is defined as a byte + # string. This causes a UnicodeDecodeError to be raised when the + # parsed content is a unicode object. The following fix resolves that + # (... but it should be fixed in shlex...): + if sys.version_info[0] == 2 and isinstance(lexer.wordchars, bytes): + lexer.wordchars = lexer.wordchars.decode("iso-8859-1") + + tokens = list(lexer) + for token in tokens: + # At this point, all shell-like parsing has been done (i.e. + # comments processed, quotes and backslash escape sequences + # processed, multi-line values assembled, trailing newlines + # stripped, etc.), so the tokens are now either: + # * variable assignments: var=value + # * commands or their arguments (not allowed in os-release) + if "=" in token: + k, v = token.split("=", 1) + props[k.lower()] = v + else: + # Ignore any tokens that are not variable assignments + pass + + if "version_codename" in props: + # os-release added a version_codename field. Use that in + # preference to anything else Note that some distros purposefully + # do not have code names. They should be setting + # version_codename="" + props["codename"] = props["version_codename"] + elif "ubuntu_codename" in props: + # Same as above but a non-standard field name used on older Ubuntus + props["codename"] = props["ubuntu_codename"] + elif "version" in props: + # If there is no version_codename, parse it from the version + match = re.search(r"(\(\D+\))|,(\s+)?\D+", props["version"]) + if match: + codename = match.group() + codename = codename.strip("()") + codename = codename.strip(",") + codename = codename.strip() + # codename appears within paranthese. + props["codename"] = codename + + return props + + @cached_property + def _lsb_release_info(self): + # type: () -> Dict[str, str] + """ + Get the information items from the lsb_release command output. + + Returns: + A dictionary containing all information items. + """ + if not self.include_lsb: + return {} + with open(os.devnull, "wb") as devnull: + try: + cmd = ("lsb_release", "-a") + stdout = subprocess.check_output(cmd, stderr=devnull) + # Command not found or lsb_release returned error + except (OSError, subprocess.CalledProcessError): + return {} + content = self._to_str(stdout).splitlines() + return self._parse_lsb_release_content(content) + + @staticmethod + def _parse_lsb_release_content(lines): + # type: (Iterable[str]) -> Dict[str, str] + """ + Parse the output of the lsb_release command. + + Parameters: + + * lines: Iterable through the lines of the lsb_release output. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + for line in lines: + kv = line.strip("\n").split(":", 1) + if len(kv) != 2: + # Ignore lines without colon. + continue + k, v = kv + props.update({k.replace(" ", "_").lower(): v.strip()}) + return props + + @cached_property + def _uname_info(self): + # type: () -> Dict[str, str] + with open(os.devnull, "wb") as devnull: + try: + cmd = ("uname", "-rs") + stdout = subprocess.check_output(cmd, stderr=devnull) + except OSError: + return {} + content = self._to_str(stdout).splitlines() + return self._parse_uname_content(content) + + @staticmethod + def _parse_uname_content(lines): + # type: (Sequence[str]) -> Dict[str, str] + props = {} + match = re.search(r"^([^\s]+)\s+([\d\.]+)", lines[0].strip()) + if match: + name, version = match.groups() + + # This is to prevent the Linux kernel version from + # appearing as the 'best' version on otherwise + # identifiable distributions. + if name == "Linux": + return {} + props["id"] = name.lower() + props["name"] = name + props["release"] = version + return props + + @staticmethod + def _to_str(text): + # type: (Union[bytes, str]) -> str + encoding = sys.getfilesystemencoding() + encoding = "utf-8" if encoding == "ascii" else encoding + + if sys.version_info[0] >= 3: + if isinstance(text, bytes): + return text.decode(encoding) + else: + if isinstance(text, unicode): # noqa + return text.encode(encoding) + + return text + + @cached_property + def _distro_release_info(self): + # type: () -> Dict[str, str] + """ + Get the information items from the specified distro release file. + + Returns: + A dictionary containing all information items. + """ + if self.distro_release_file: + # If it was specified, we use it and parse what we can, even if + # its file name or content does not match the expected pattern. + distro_info = self._parse_distro_release_file(self.distro_release_file) + basename = os.path.basename(self.distro_release_file) + # The file name pattern for user-specified distro release files + # is somewhat more tolerant (compared to when searching for the + # file), because we want to use what was specified as best as + # possible. + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if "name" in distro_info and "cloudlinux" in distro_info["name"].lower(): + distro_info["id"] = "cloudlinux" + elif match: + distro_info["id"] = match.group(1) + return distro_info + else: + try: + basenames = os.listdir(self.etc_dir) + # We sort for repeatability in cases where there are multiple + # distro specific files; e.g. CentOS, Oracle, Enterprise all + # containing `redhat-release` on top of their own. + basenames.sort() + except OSError: + # This may occur when /etc is not readable but we can't be + # sure about the *-release files. Check common entries of + # /etc for information. If they turn out to not be there the + # error is handled in `_parse_distro_release_file()`. + basenames = [ + "SuSE-release", + "arch-release", + "base-release", + "centos-release", + "fedora-release", + "gentoo-release", + "mageia-release", + "mandrake-release", + "mandriva-release", + "mandrivalinux-release", + "manjaro-release", + "oracle-release", + "redhat-release", + "sl-release", + "slackware-version", + ] + for basename in basenames: + if basename in _DISTRO_RELEASE_IGNORE_BASENAMES: + continue + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if match: + filepath = os.path.join(self.etc_dir, basename) + distro_info = self._parse_distro_release_file(filepath) + if "name" in distro_info: + # The name is always present if the pattern matches + self.distro_release_file = filepath + distro_info["id"] = match.group(1) + if "cloudlinux" in distro_info["name"].lower(): + distro_info["id"] = "cloudlinux" + return distro_info + return {} + + def _parse_distro_release_file(self, filepath): + # type: (str) -> Dict[str, str] + """ + Parse a distro release file. + + Parameters: + + * filepath: Path name of the distro release file. + + Returns: + A dictionary containing all information items. + """ + try: + with open(filepath) as fp: + # Only parse the first line. For instance, on SLES there + # are multiple lines. We don't want them... + return self._parse_distro_release_content(fp.readline()) + except (OSError, IOError): + # Ignore not being able to read a specific, seemingly version + # related file. + # See https://github.com/python-distro/distro/issues/162 + return {} + + @staticmethod + def _parse_distro_release_content(line): + # type: (str) -> Dict[str, str] + """ + Parse a line from a distro release file. + + Parameters: + * line: Line from the distro release file. Must be a unicode string + or a UTF-8 encoded byte string. + + Returns: + A dictionary containing all information items. + """ + matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match(line.strip()[::-1]) + distro_info = {} + if matches: + # regexp ensures non-None + distro_info["name"] = matches.group(3)[::-1] + if matches.group(2): + distro_info["version_id"] = matches.group(2)[::-1] + if matches.group(1): + distro_info["codename"] = matches.group(1)[::-1] + elif line: + distro_info["name"] = line.strip() + return distro_info + + +_distro = LinuxDistribution() + + +def main(): + # type: () -> None + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler(sys.stdout)) + + parser = argparse.ArgumentParser(description="OS distro info tool") + parser.add_argument( + "--json", "-j", help="Output in machine readable format", action="store_true" + ) + + parser.add_argument( + "--root-dir", + "-r", + type=str, + dest="root_dir", + help="Path to the root filesystem directory (defaults to /)", + ) + + args = parser.parse_args() + + if args.root_dir: + dist = LinuxDistribution( + include_lsb=False, include_uname=False, root_dir=args.root_dir + ) + else: + dist = _distro + + if args.json: + logger.info(json.dumps(dist.info(), indent=4, sort_keys=True)) + else: + logger.info("Name: %s", dist.name(pretty=True)) + distribution_version = dist.version(pretty=True) + logger.info("Version: %s", distribution_version) + distribution_codename = dist.codename() + logger.info("Codename: %s", distribution_codename) + + +if __name__ == "__main__": + main() diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py b/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py new file mode 100644 index 00000000..d1d82f15 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py @@ -0,0 +1,35 @@ +""" +HTML parsing library based on the `WHATWG HTML specification +`_. The parser is designed to be compatible with +existing HTML found in the wild and implements well-defined error recovery that +is largely compatible with modern desktop web browsers. + +Example usage:: + + from pip._vendor import html5lib + with open("my_document.html", "rb") as f: + tree = html5lib.parse(f) + +For convenience, this module re-exports the following names: + +* :func:`~.html5parser.parse` +* :func:`~.html5parser.parseFragment` +* :class:`~.html5parser.HTMLParser` +* :func:`~.treebuilders.getTreeBuilder` +* :func:`~.treewalkers.getTreeWalker` +* :func:`~.serializer.serialize` +""" + +from __future__ import absolute_import, division, unicode_literals + +from .html5parser import HTMLParser, parse, parseFragment +from .treebuilders import getTreeBuilder +from .treewalkers import getTreeWalker +from .serializer import serialize + +__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", + "getTreeWalker", "serialize"] + +# this has to be at the top level, see how setup.py parses this +#: Distribution version number. +__version__ = "1.1" diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py new file mode 100644 index 00000000..3ff803c1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py @@ -0,0 +1,289 @@ +from __future__ import absolute_import, division, unicode_literals + +import re +import warnings + +from .constants import DataLossWarning + +baseChar = """ +[#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | +[#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] | [#x0141-#x0148] | +[#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5] | +[#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386 | +[#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] | +[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] | +[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] | +[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] | +[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | +[#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | +[#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | +[#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | +[#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | +[#x09AA-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | +[#x09DF-#x09E1] | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | +[#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | +[#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | +[#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | +[#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | +[#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30] | +[#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D] | +[#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | +[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | +[#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | +[#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | +[#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | +[#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | +[#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | +[#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33] | +[#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A | +#x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5 | +#x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3] | +#x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | +[#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | +[#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | +#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | +[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | +[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | +[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | +[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | +[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | +#x1F5D | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | +[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | +[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | +[#x212A-#x212B] | #x212E | [#x2180-#x2182] | [#x3041-#x3094] | +[#x30A1-#x30FA] | [#x3105-#x312C] | [#xAC00-#xD7A3]""" + +ideographic = """[#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]""" + +combiningCharacter = """ +[#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] | [#x0591-#x05A1] | +[#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2] | #x05C4 | +[#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#x06DD-#x06DF] | +[#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#x0901-#x0903] | +#x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#x0962-#x0963] | +[#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4] | +[#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 | +#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | +[#x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | +[#x0ABE-#x0AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | +#x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | +[#x0B56-#x0B57] | [#x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | +[#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | +[#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | +[#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | +[#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | +#x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1 | +[#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | +#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | +[#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | +[#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | +#x3099 | #x309A""" + +digit = """ +[#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] | [#x0966-#x096F] | +[#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | +[#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F] | +[#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]""" + +extender = """ +#x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | +#[#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]""" + +letter = " | ".join([baseChar, ideographic]) + +# Without the +name = " | ".join([letter, digit, ".", "-", "_", combiningCharacter, + extender]) +nameFirst = " | ".join([letter, "_"]) + +reChar = re.compile(r"#x([\d|A-F]{4,4})") +reCharRange = re.compile(r"\[#x([\d|A-F]{4,4})-#x([\d|A-F]{4,4})\]") + + +def charStringToList(chars): + charRanges = [item.strip() for item in chars.split(" | ")] + rv = [] + for item in charRanges: + foundMatch = False + for regexp in (reChar, reCharRange): + match = regexp.match(item) + if match is not None: + rv.append([hexToInt(item) for item in match.groups()]) + if len(rv[-1]) == 1: + rv[-1] = rv[-1] * 2 + foundMatch = True + break + if not foundMatch: + assert len(item) == 1 + + rv.append([ord(item)] * 2) + rv = normaliseCharList(rv) + return rv + + +def normaliseCharList(charList): + charList = sorted(charList) + for item in charList: + assert item[1] >= item[0] + rv = [] + i = 0 + while i < len(charList): + j = 1 + rv.append(charList[i]) + while i + j < len(charList) and charList[i + j][0] <= rv[-1][1] + 1: + rv[-1][1] = charList[i + j][1] + j += 1 + i += j + return rv + + +# We don't really support characters above the BMP :( +max_unicode = int("FFFF", 16) + + +def missingRanges(charList): + rv = [] + if charList[0] != 0: + rv.append([0, charList[0][0] - 1]) + for i, item in enumerate(charList[:-1]): + rv.append([item[1] + 1, charList[i + 1][0] - 1]) + if charList[-1][1] != max_unicode: + rv.append([charList[-1][1] + 1, max_unicode]) + return rv + + +def listToRegexpStr(charList): + rv = [] + for item in charList: + if item[0] == item[1]: + rv.append(escapeRegexp(chr(item[0]))) + else: + rv.append(escapeRegexp(chr(item[0])) + "-" + + escapeRegexp(chr(item[1]))) + return "[%s]" % "".join(rv) + + +def hexToInt(hex_str): + return int(hex_str, 16) + + +def escapeRegexp(string): + specialCharacters = (".", "^", "$", "*", "+", "?", "{", "}", + "[", "]", "|", "(", ")", "-") + for char in specialCharacters: + string = string.replace(char, "\\" + char) + + return string + +# output from the above +nonXmlNameBMPRegexp = re.compile('[\x00-,/:-@\\[-\\^`\\{-\xb6\xb8-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u02cf\u02d2-\u02ff\u0346-\u035f\u0362-\u0385\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482\u0487-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u0590\u05a2\u05ba\u05be\u05c0\u05c3\u05c5-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u063f\u0653-\u065f\u066a-\u066f\u06b8-\u06b9\u06bf\u06cf\u06d4\u06e9\u06ee-\u06ef\u06fa-\u0900\u0904\u093a-\u093b\u094e-\u0950\u0955-\u0957\u0964-\u0965\u0970-\u0980\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09bd\u09c5-\u09c6\u09c9-\u09ca\u09ce-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09f2-\u0a01\u0a03-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a58\u0a5d\u0a5f-\u0a65\u0a75-\u0a80\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0adf\u0ae1-\u0ae5\u0af0-\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3b\u0b44-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b62-\u0b65\u0b70-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bd6\u0bd8-\u0be6\u0bf0-\u0c00\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c3d\u0c45\u0c49\u0c4e-\u0c54\u0c57-\u0c5f\u0c62-\u0c65\u0c70-\u0c81\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbd\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce2-\u0ce5\u0cf0-\u0d01\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d3d\u0d44-\u0d45\u0d49\u0d4e-\u0d56\u0d58-\u0d5f\u0d62-\u0d65\u0d70-\u0e00\u0e2f\u0e3b-\u0e3f\u0e4f\u0e5a-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0f17\u0f1a-\u0f1f\u0f2a-\u0f34\u0f36\u0f38\u0f3a-\u0f3d\u0f48\u0f6a-\u0f70\u0f85\u0f8c-\u0f8f\u0f96\u0f98\u0fae-\u0fb0\u0fb8\u0fba-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u20cf\u20dd-\u20e0\u20e2-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3004\u3006\u3008-\u3020\u3030\u3036-\u3040\u3095-\u3098\u309b-\u309c\u309f-\u30a0\u30fb\u30ff-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +nonXmlNameFirstBMPRegexp = re.compile('[\x00-@\\[-\\^`\\{-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u0385\u0387\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u0640\u064b-\u0670\u06b8-\u06b9\u06bf\u06cf\u06d4\u06d6-\u06e4\u06e7-\u0904\u093a-\u093c\u093e-\u0957\u0962-\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09db\u09de\u09e2-\u09ef\u09f2-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a58\u0a5d\u0a5f-\u0a71\u0a75-\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abc\u0abe-\u0adf\u0ae1-\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3c\u0b3e-\u0b5b\u0b5e\u0b62-\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c5f\u0c62-\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cdd\u0cdf\u0ce2-\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d5f\u0d62-\u0e00\u0e2f\u0e31\u0e34-\u0e3f\u0e46-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eb1\u0eb4-\u0ebc\u0ebe-\u0ebf\u0ec5-\u0f3f\u0f48\u0f6a-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3006\u3008-\u3020\u302a-\u3040\u3095-\u30a0\u30fb-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +# Simpler things +nonPubidCharRegexp = re.compile("[^\x20\x0D\x0Aa-zA-Z0-9\\-'()+,./:=?;!*#@$_%]") + + +class InfosetFilter(object): + replacementRegexp = re.compile(r"U[\dA-F]{5,5}") + + def __init__(self, + dropXmlnsLocalName=False, + dropXmlnsAttrNs=False, + preventDoubleDashComments=False, + preventDashAtCommentEnd=False, + replaceFormFeedCharacters=True, + preventSingleQuotePubid=False): + + self.dropXmlnsLocalName = dropXmlnsLocalName + self.dropXmlnsAttrNs = dropXmlnsAttrNs + + self.preventDoubleDashComments = preventDoubleDashComments + self.preventDashAtCommentEnd = preventDashAtCommentEnd + + self.replaceFormFeedCharacters = replaceFormFeedCharacters + + self.preventSingleQuotePubid = preventSingleQuotePubid + + self.replaceCache = {} + + def coerceAttribute(self, name, namespace=None): + if self.dropXmlnsLocalName and name.startswith("xmlns:"): + warnings.warn("Attributes cannot begin with xmlns", DataLossWarning) + return None + elif (self.dropXmlnsAttrNs and + namespace == "http://www.w3.org/2000/xmlns/"): + warnings.warn("Attributes cannot be in the xml namespace", DataLossWarning) + return None + else: + return self.toXmlName(name) + + def coerceElement(self, name): + return self.toXmlName(name) + + def coerceComment(self, data): + if self.preventDoubleDashComments: + while "--" in data: + warnings.warn("Comments cannot contain adjacent dashes", DataLossWarning) + data = data.replace("--", "- -") + if data.endswith("-"): + warnings.warn("Comments cannot end in a dash", DataLossWarning) + data += " " + return data + + def coerceCharacters(self, data): + if self.replaceFormFeedCharacters: + for _ in range(data.count("\x0C")): + warnings.warn("Text cannot contain U+000C", DataLossWarning) + data = data.replace("\x0C", " ") + # Other non-xml characters + return data + + def coercePubid(self, data): + dataOutput = data + for char in nonPubidCharRegexp.findall(data): + warnings.warn("Coercing non-XML pubid", DataLossWarning) + replacement = self.getReplacementCharacter(char) + dataOutput = dataOutput.replace(char, replacement) + if self.preventSingleQuotePubid and dataOutput.find("'") >= 0: + warnings.warn("Pubid cannot contain single quote", DataLossWarning) + dataOutput = dataOutput.replace("'", self.getReplacementCharacter("'")) + return dataOutput + + def toXmlName(self, name): + nameFirst = name[0] + nameRest = name[1:] + m = nonXmlNameFirstBMPRegexp.match(nameFirst) + if m: + warnings.warn("Coercing non-XML name: %s" % name, DataLossWarning) + nameFirstOutput = self.getReplacementCharacter(nameFirst) + else: + nameFirstOutput = nameFirst + + nameRestOutput = nameRest + replaceChars = set(nonXmlNameBMPRegexp.findall(nameRest)) + for char in replaceChars: + warnings.warn("Coercing non-XML name: %s" % name, DataLossWarning) + replacement = self.getReplacementCharacter(char) + nameRestOutput = nameRestOutput.replace(char, replacement) + return nameFirstOutput + nameRestOutput + + def getReplacementCharacter(self, char): + if char in self.replaceCache: + replacement = self.replaceCache[char] + else: + replacement = self.escapeChar(char) + return replacement + + def fromXmlName(self, name): + for item in set(self.replacementRegexp.findall(name)): + name = name.replace(item, self.unescapeChar(item)) + return name + + def escapeChar(self, char): + replacement = "U%05X" % ord(char) + self.replaceCache[char] = replacement + return replacement + + def unescapeChar(self, charcode): + return chr(int(charcode[1:], 16)) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py new file mode 100644 index 00000000..e0bb3760 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py @@ -0,0 +1,918 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type +from pip._vendor.six.moves import http_client, urllib + +import codecs +import re +from io import BytesIO, StringIO + +from pip._vendor import webencodings + +from .constants import EOF, spaceCharacters, asciiLetters, asciiUppercase +from .constants import _ReparseException +from . import _utils + +# Non-unicode versions of constants for use in the pre-parser +spaceCharactersBytes = frozenset([item.encode("ascii") for item in spaceCharacters]) +asciiLettersBytes = frozenset([item.encode("ascii") for item in asciiLetters]) +asciiUppercaseBytes = frozenset([item.encode("ascii") for item in asciiUppercase]) +spacesAngleBrackets = spaceCharactersBytes | frozenset([b">", b"<"]) + + +invalid_unicode_no_surrogate = "[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uFDD0-\uFDEF\uFFFE\uFFFF\U0001FFFE\U0001FFFF\U0002FFFE\U0002FFFF\U0003FFFE\U0003FFFF\U0004FFFE\U0004FFFF\U0005FFFE\U0005FFFF\U0006FFFE\U0006FFFF\U0007FFFE\U0007FFFF\U0008FFFE\U0008FFFF\U0009FFFE\U0009FFFF\U000AFFFE\U000AFFFF\U000BFFFE\U000BFFFF\U000CFFFE\U000CFFFF\U000DFFFE\U000DFFFF\U000EFFFE\U000EFFFF\U000FFFFE\U000FFFFF\U0010FFFE\U0010FFFF]" # noqa + +if _utils.supports_lone_surrogates: + # Use one extra step of indirection and create surrogates with + # eval. Not using this indirection would introduce an illegal + # unicode literal on platforms not supporting such lone + # surrogates. + assert invalid_unicode_no_surrogate[-1] == "]" and invalid_unicode_no_surrogate.count("]") == 1 + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate[:-1] + + eval('"\\uD800-\\uDFFF"') + # pylint:disable=eval-used + "]") +else: + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate) + +non_bmp_invalid_codepoints = {0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, + 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, + 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, + 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, + 0x10FFFE, 0x10FFFF} + +ascii_punctuation_re = re.compile("[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005C\u005B-\u0060\u007B-\u007E]") + +# Cache for charsUntil() +charsUntilRegEx = {} + + +class BufferedStream(object): + """Buffering for streams that do not have buffering of their own + + The buffer is implemented as a list of chunks on the assumption that + joining many strings will be slow since it is O(n**2) + """ + + def __init__(self, stream): + self.stream = stream + self.buffer = [] + self.position = [-1, 0] # chunk number, offset + + def tell(self): + pos = 0 + for chunk in self.buffer[:self.position[0]]: + pos += len(chunk) + pos += self.position[1] + return pos + + def seek(self, pos): + assert pos <= self._bufferedBytes() + offset = pos + i = 0 + while len(self.buffer[i]) < offset: + offset -= len(self.buffer[i]) + i += 1 + self.position = [i, offset] + + def read(self, bytes): + if not self.buffer: + return self._readStream(bytes) + elif (self.position[0] == len(self.buffer) and + self.position[1] == len(self.buffer[-1])): + return self._readStream(bytes) + else: + return self._readFromBuffer(bytes) + + def _bufferedBytes(self): + return sum([len(item) for item in self.buffer]) + + def _readStream(self, bytes): + data = self.stream.read(bytes) + self.buffer.append(data) + self.position[0] += 1 + self.position[1] = len(data) + return data + + def _readFromBuffer(self, bytes): + remainingBytes = bytes + rv = [] + bufferIndex = self.position[0] + bufferOffset = self.position[1] + while bufferIndex < len(self.buffer) and remainingBytes != 0: + assert remainingBytes > 0 + bufferedData = self.buffer[bufferIndex] + + if remainingBytes <= len(bufferedData) - bufferOffset: + bytesToRead = remainingBytes + self.position = [bufferIndex, bufferOffset + bytesToRead] + else: + bytesToRead = len(bufferedData) - bufferOffset + self.position = [bufferIndex, len(bufferedData)] + bufferIndex += 1 + rv.append(bufferedData[bufferOffset:bufferOffset + bytesToRead]) + remainingBytes -= bytesToRead + + bufferOffset = 0 + + if remainingBytes: + rv.append(self._readStream(remainingBytes)) + + return b"".join(rv) + + +def HTMLInputStream(source, **kwargs): + # Work around Python bug #20007: read(0) closes the connection. + # http://bugs.python.org/issue20007 + if (isinstance(source, http_client.HTTPResponse) or + # Also check for addinfourl wrapping HTTPResponse + (isinstance(source, urllib.response.addbase) and + isinstance(source.fp, http_client.HTTPResponse))): + isUnicode = False + elif hasattr(source, "read"): + isUnicode = isinstance(source.read(0), text_type) + else: + isUnicode = isinstance(source, text_type) + + if isUnicode: + encodings = [x for x in kwargs if x.endswith("_encoding")] + if encodings: + raise TypeError("Cannot set an encoding with a unicode input, set %r" % encodings) + + return HTMLUnicodeInputStream(source, **kwargs) + else: + return HTMLBinaryInputStream(source, **kwargs) + + +class HTMLUnicodeInputStream(object): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + _defaultChunkSize = 10240 + + def __init__(self, source): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + + if not _utils.supports_lone_surrogates: + # Such platforms will have already checked for such + # surrogate errors, so no need to do this checking. + self.reportCharacterErrors = None + elif len("\U0010FFFF") == 1: + self.reportCharacterErrors = self.characterErrorsUCS4 + else: + self.reportCharacterErrors = self.characterErrorsUCS2 + + # List of where new lines occur + self.newLines = [0] + + self.charEncoding = (lookupEncoding("utf-8"), "certain") + self.dataStream = self.openStream(source) + + self.reset() + + def reset(self): + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + self.errors = [] + + # number of (complete) lines in previous chunks + self.prevNumLines = 0 + # number of columns in the last line of the previous chunk + self.prevNumCols = 0 + + # Deal with CR LF and surrogates split over chunk boundaries + self._bufferedCharacter = None + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = StringIO(source) + + return stream + + def _position(self, offset): + chunk = self.chunk + nLines = chunk.count('\n', 0, offset) + positionLine = self.prevNumLines + nLines + lastLinePos = chunk.rfind('\n', 0, offset) + if lastLinePos == -1: + positionColumn = self.prevNumCols + offset + else: + positionColumn = offset - (lastLinePos + 1) + return (positionLine, positionColumn) + + def position(self): + """Returns (line, col) of the current position in the stream.""" + line, col = self._position(self.chunkOffset) + return (line + 1, col) + + def char(self): + """ Read one character from the stream or queue if available. Return + EOF when EOF is reached. + """ + # Read a new chunk from the input stream if necessary + if self.chunkOffset >= self.chunkSize: + if not self.readChunk(): + return EOF + + chunkOffset = self.chunkOffset + char = self.chunk[chunkOffset] + self.chunkOffset = chunkOffset + 1 + + return char + + def readChunk(self, chunkSize=None): + if chunkSize is None: + chunkSize = self._defaultChunkSize + + self.prevNumLines, self.prevNumCols = self._position(self.chunkSize) + + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + + data = self.dataStream.read(chunkSize) + + # Deal with CR LF and surrogates broken across chunks + if self._bufferedCharacter: + data = self._bufferedCharacter + data + self._bufferedCharacter = None + elif not data: + # We have no more data, bye-bye stream + return False + + if len(data) > 1: + lastv = ord(data[-1]) + if lastv == 0x0D or 0xD800 <= lastv <= 0xDBFF: + self._bufferedCharacter = data[-1] + data = data[:-1] + + if self.reportCharacterErrors: + self.reportCharacterErrors(data) + + # Replace invalid characters + data = data.replace("\r\n", "\n") + data = data.replace("\r", "\n") + + self.chunk = data + self.chunkSize = len(data) + + return True + + def characterErrorsUCS4(self, data): + for _ in range(len(invalid_unicode_re.findall(data))): + self.errors.append("invalid-codepoint") + + def characterErrorsUCS2(self, data): + # Someone picked the wrong compile option + # You lose + skip = False + for match in invalid_unicode_re.finditer(data): + if skip: + continue + codepoint = ord(match.group()) + pos = match.start() + # Pretty sure there should be endianness issues here + if _utils.isSurrogatePair(data[pos:pos + 2]): + # We have a surrogate pair! + char_val = _utils.surrogatePairToCodepoint(data[pos:pos + 2]) + if char_val in non_bmp_invalid_codepoints: + self.errors.append("invalid-codepoint") + skip = True + elif (codepoint >= 0xD800 and codepoint <= 0xDFFF and + pos == len(data) - 1): + self.errors.append("invalid-codepoint") + else: + skip = False + self.errors.append("invalid-codepoint") + + def charsUntil(self, characters, opposite=False): + """ Returns a string of characters from the stream up to but not + including any character in 'characters' or EOF. 'characters' must be + a container that supports the 'in' method and iteration over its + characters. + """ + + # Use a cache of regexps to find the required characters + try: + chars = charsUntilRegEx[(characters, opposite)] + except KeyError: + if __debug__: + for c in characters: + assert(ord(c) < 128) + regex = "".join(["\\x%02x" % ord(c) for c in characters]) + if not opposite: + regex = "^%s" % regex + chars = charsUntilRegEx[(characters, opposite)] = re.compile("[%s]+" % regex) + + rv = [] + + while True: + # Find the longest matching prefix + m = chars.match(self.chunk, self.chunkOffset) + if m is None: + # If nothing matched, and it wasn't because we ran out of chunk, + # then stop + if self.chunkOffset != self.chunkSize: + break + else: + end = m.end() + # If not the whole chunk matched, return everything + # up to the part that didn't match + if end != self.chunkSize: + rv.append(self.chunk[self.chunkOffset:end]) + self.chunkOffset = end + break + # If the whole remainder of the chunk matched, + # use it all and read the next chunk + rv.append(self.chunk[self.chunkOffset:]) + if not self.readChunk(): + # Reached EOF + break + + r = "".join(rv) + return r + + def unget(self, char): + # Only one character is allowed to be ungotten at once - it must + # be consumed again before any further call to unget + if char is not EOF: + if self.chunkOffset == 0: + # unget is called quite rarely, so it's a good idea to do + # more work here if it saves a bit of work in the frequently + # called char and charsUntil. + # So, just prepend the ungotten character onto the current + # chunk: + self.chunk = char + self.chunk + self.chunkSize += 1 + else: + self.chunkOffset -= 1 + assert self.chunk[self.chunkOffset] == char + + +class HTMLBinaryInputStream(HTMLUnicodeInputStream): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + def __init__(self, source, override_encoding=None, transport_encoding=None, + same_origin_parent_encoding=None, likely_encoding=None, + default_encoding="windows-1252", useChardet=True): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + # Raw Stream - for unicode objects this will encode to utf-8 and set + # self.charEncoding as appropriate + self.rawStream = self.openStream(source) + + HTMLUnicodeInputStream.__init__(self, self.rawStream) + + # Encoding Information + # Number of bytes to use when looking for a meta element with + # encoding information + self.numBytesMeta = 1024 + # Number of bytes to use when using detecting encoding using chardet + self.numBytesChardet = 100 + # Things from args + self.override_encoding = override_encoding + self.transport_encoding = transport_encoding + self.same_origin_parent_encoding = same_origin_parent_encoding + self.likely_encoding = likely_encoding + self.default_encoding = default_encoding + + # Determine encoding + self.charEncoding = self.determineEncoding(useChardet) + assert self.charEncoding[0] is not None + + # Call superclass + self.reset() + + def reset(self): + self.dataStream = self.charEncoding[0].codec_info.streamreader(self.rawStream, 'replace') + HTMLUnicodeInputStream.reset(self) + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = BytesIO(source) + + try: + stream.seek(stream.tell()) + except Exception: + stream = BufferedStream(stream) + + return stream + + def determineEncoding(self, chardet=True): + # BOMs take precedence over everything + # This will also read past the BOM if present + charEncoding = self.detectBOM(), "certain" + if charEncoding[0] is not None: + return charEncoding + + # If we've been overridden, we've been overridden + charEncoding = lookupEncoding(self.override_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Now check the transport layer + charEncoding = lookupEncoding(self.transport_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Look for meta elements with encoding information + charEncoding = self.detectEncodingMeta(), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Parent document encoding + charEncoding = lookupEncoding(self.same_origin_parent_encoding), "tentative" + if charEncoding[0] is not None and not charEncoding[0].name.startswith("utf-16"): + return charEncoding + + # "likely" encoding + charEncoding = lookupEncoding(self.likely_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Guess with chardet, if available + if chardet: + try: + from pip._vendor.chardet.universaldetector import UniversalDetector + except ImportError: + pass + else: + buffers = [] + detector = UniversalDetector() + while not detector.done: + buffer = self.rawStream.read(self.numBytesChardet) + assert isinstance(buffer, bytes) + if not buffer: + break + buffers.append(buffer) + detector.feed(buffer) + detector.close() + encoding = lookupEncoding(detector.result['encoding']) + self.rawStream.seek(0) + if encoding is not None: + return encoding, "tentative" + + # Try the default encoding + charEncoding = lookupEncoding(self.default_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Fallback to html5lib's default if even that hasn't worked + return lookupEncoding("windows-1252"), "tentative" + + def changeEncoding(self, newEncoding): + assert self.charEncoding[1] != "certain" + newEncoding = lookupEncoding(newEncoding) + if newEncoding is None: + return + if newEncoding.name in ("utf-16be", "utf-16le"): + newEncoding = lookupEncoding("utf-8") + assert newEncoding is not None + elif newEncoding == self.charEncoding[0]: + self.charEncoding = (self.charEncoding[0], "certain") + else: + self.rawStream.seek(0) + self.charEncoding = (newEncoding, "certain") + self.reset() + raise _ReparseException("Encoding changed from %s to %s" % (self.charEncoding[0], newEncoding)) + + def detectBOM(self): + """Attempts to detect at BOM at the start of the stream. If + an encoding can be determined from the BOM return the name of the + encoding otherwise return None""" + bomDict = { + codecs.BOM_UTF8: 'utf-8', + codecs.BOM_UTF16_LE: 'utf-16le', codecs.BOM_UTF16_BE: 'utf-16be', + codecs.BOM_UTF32_LE: 'utf-32le', codecs.BOM_UTF32_BE: 'utf-32be' + } + + # Go to beginning of file and read in 4 bytes + string = self.rawStream.read(4) + assert isinstance(string, bytes) + + # Try detecting the BOM using bytes from the string + encoding = bomDict.get(string[:3]) # UTF-8 + seek = 3 + if not encoding: + # Need to detect UTF-32 before UTF-16 + encoding = bomDict.get(string) # UTF-32 + seek = 4 + if not encoding: + encoding = bomDict.get(string[:2]) # UTF-16 + seek = 2 + + # Set the read position past the BOM if one was found, otherwise + # set it to the start of the stream + if encoding: + self.rawStream.seek(seek) + return lookupEncoding(encoding) + else: + self.rawStream.seek(0) + return None + + def detectEncodingMeta(self): + """Report the encoding declared by the meta element + """ + buffer = self.rawStream.read(self.numBytesMeta) + assert isinstance(buffer, bytes) + parser = EncodingParser(buffer) + self.rawStream.seek(0) + encoding = parser.getEncoding() + + if encoding is not None and encoding.name in ("utf-16be", "utf-16le"): + encoding = lookupEncoding("utf-8") + + return encoding + + +class EncodingBytes(bytes): + """String-like object with an associated position and various extra methods + If the position is ever greater than the string length then an exception is + raised""" + def __new__(self, value): + assert isinstance(value, bytes) + return bytes.__new__(self, value.lower()) + + def __init__(self, value): + # pylint:disable=unused-argument + self._position = -1 + + def __iter__(self): + return self + + def __next__(self): + p = self._position = self._position + 1 + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + return self[p:p + 1] + + def next(self): + # Py2 compat + return self.__next__() + + def previous(self): + p = self._position + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + self._position = p = p - 1 + return self[p:p + 1] + + def setPosition(self, position): + if self._position >= len(self): + raise StopIteration + self._position = position + + def getPosition(self): + if self._position >= len(self): + raise StopIteration + if self._position >= 0: + return self._position + else: + return None + + position = property(getPosition, setPosition) + + def getCurrentByte(self): + return self[self.position:self.position + 1] + + currentByte = property(getCurrentByte) + + def skip(self, chars=spaceCharactersBytes): + """Skip past a list of characters""" + p = self.position # use property for the error-checking + while p < len(self): + c = self[p:p + 1] + if c not in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def skipUntil(self, chars): + p = self.position + while p < len(self): + c = self[p:p + 1] + if c in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def matchBytes(self, bytes): + """Look for a sequence of bytes at the start of a string. If the bytes + are found return True and advance the position to the byte after the + match. Otherwise return False and leave the position alone""" + rv = self.startswith(bytes, self.position) + if rv: + self.position += len(bytes) + return rv + + def jumpTo(self, bytes): + """Look for the next sequence of bytes matching a given sequence. If + a match is found advance the position to the last byte of the match""" + try: + self._position = self.index(bytes, self.position) + len(bytes) - 1 + except ValueError: + raise StopIteration + return True + + +class EncodingParser(object): + """Mini parser for detecting character encoding from meta elements""" + + def __init__(self, data): + """string - the data to work on for encoding detection""" + self.data = EncodingBytes(data) + self.encoding = None + + def getEncoding(self): + if b"") + + def handleMeta(self): + if self.data.currentByte not in spaceCharactersBytes: + # if we have ") + + def getAttribute(self): + """Return a name,value pair for the next attribute in the stream, + if one is found, or None""" + data = self.data + # Step 1 (skip chars) + c = data.skip(spaceCharactersBytes | frozenset([b"/"])) + assert c is None or len(c) == 1 + # Step 2 + if c in (b">", None): + return None + # Step 3 + attrName = [] + attrValue = [] + # Step 4 attribute name + while True: + if c == b"=" and attrName: + break + elif c in spaceCharactersBytes: + # Step 6! + c = data.skip() + break + elif c in (b"/", b">"): + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrName.append(c.lower()) + elif c is None: + return None + else: + attrName.append(c) + # Step 5 + c = next(data) + # Step 7 + if c != b"=": + data.previous() + return b"".join(attrName), b"" + # Step 8 + next(data) + # Step 9 + c = data.skip() + # Step 10 + if c in (b"'", b'"'): + # 10.1 + quoteChar = c + while True: + # 10.2 + c = next(data) + # 10.3 + if c == quoteChar: + next(data) + return b"".join(attrName), b"".join(attrValue) + # 10.4 + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + # 10.5 + else: + attrValue.append(c) + elif c == b">": + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + # Step 11 + while True: + c = next(data) + if c in spacesAngleBrackets: + return b"".join(attrName), b"".join(attrValue) + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + + +class ContentAttrParser(object): + def __init__(self, data): + assert isinstance(data, bytes) + self.data = data + + def parse(self): + try: + # Check if the attr name is charset + # otherwise return + self.data.jumpTo(b"charset") + self.data.position += 1 + self.data.skip() + if not self.data.currentByte == b"=": + # If there is no = sign keep looking for attrs + return None + self.data.position += 1 + self.data.skip() + # Look for an encoding between matching quote marks + if self.data.currentByte in (b'"', b"'"): + quoteMark = self.data.currentByte + self.data.position += 1 + oldPosition = self.data.position + if self.data.jumpTo(quoteMark): + return self.data[oldPosition:self.data.position] + else: + return None + else: + # Unquoted value + oldPosition = self.data.position + try: + self.data.skipUntil(spaceCharactersBytes) + return self.data[oldPosition:self.data.position] + except StopIteration: + # Return the whole remaining value + return self.data[oldPosition:] + except StopIteration: + return None + + +def lookupEncoding(encoding): + """Return the python codec name corresponding to an encoding or None if the + string doesn't correspond to a valid encoding.""" + if isinstance(encoding, bytes): + try: + encoding = encoding.decode("ascii") + except UnicodeDecodeError: + return None + + if encoding is not None: + try: + return webencodings.lookup(encoding) + except AttributeError: + return None + else: + return None diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py new file mode 100644 index 00000000..5f00253e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py @@ -0,0 +1,1735 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import unichr as chr + +from collections import deque, OrderedDict +from sys import version_info + +from .constants import spaceCharacters +from .constants import entities +from .constants import asciiLetters, asciiUpper2Lower +from .constants import digits, hexDigits, EOF +from .constants import tokenTypes, tagTokenTypes +from .constants import replacementCharacters + +from ._inputstream import HTMLInputStream + +from ._trie import Trie + +entitiesTrie = Trie(entities) + +if version_info >= (3, 7): + attributeMap = dict +else: + attributeMap = OrderedDict + + +class HTMLTokenizer(object): + """ This class takes care of tokenizing HTML. + + * self.currentToken + Holds the token that is currently being processed. + + * self.state + Holds a reference to the method to be invoked... XXX + + * self.stream + Points to HTMLInputStream object. + """ + + def __init__(self, stream, parser=None, **kwargs): + + self.stream = HTMLInputStream(stream, **kwargs) + self.parser = parser + + # Setup the initial tokenizer state + self.escapeFlag = False + self.lastFourChars = [] + self.state = self.dataState + self.escape = False + + # The current token being created + self.currentToken = None + super(HTMLTokenizer, self).__init__() + + def __iter__(self): + """ This is where the magic happens. + + We do our usually processing through the states and when we have a token + to return we yield the token which pauses processing until the next token + is requested. + """ + self.tokenQueue = deque([]) + # Start processing. When EOF is reached self.state will return False + # instead of True and the loop will terminate. + while self.state(): + while self.stream.errors: + yield {"type": tokenTypes["ParseError"], "data": self.stream.errors.pop(0)} + while self.tokenQueue: + yield self.tokenQueue.popleft() + + def consumeNumberEntity(self, isHex): + """This function returns either U+FFFD or the character based on the + decimal or hexadecimal representation. It also discards ";" if present. + If not present self.tokenQueue.append({"type": tokenTypes["ParseError"]}) is invoked. + """ + + allowed = digits + radix = 10 + if isHex: + allowed = hexDigits + radix = 16 + + charStack = [] + + # Consume all the characters that are in range while making sure we + # don't hit an EOF. + c = self.stream.char() + while c in allowed and c is not EOF: + charStack.append(c) + c = self.stream.char() + + # Convert the set of characters consumed to an int. + charAsInt = int("".join(charStack), radix) + + # Certain characters get replaced with others + if charAsInt in replacementCharacters: + char = replacementCharacters[charAsInt] + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + elif ((0xD800 <= charAsInt <= 0xDFFF) or + (charAsInt > 0x10FFFF)): + char = "\uFFFD" + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + else: + # Should speed up this check somehow (e.g. move the set to a constant) + if ((0x0001 <= charAsInt <= 0x0008) or + (0x000E <= charAsInt <= 0x001F) or + (0x007F <= charAsInt <= 0x009F) or + (0xFDD0 <= charAsInt <= 0xFDEF) or + charAsInt in frozenset([0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, + 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, + 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, + 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, + 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, + 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, + 0xFFFFF, 0x10FFFE, 0x10FFFF])): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + try: + # Try/except needed as UCS-2 Python builds' unichar only works + # within the BMP. + char = chr(charAsInt) + except ValueError: + v = charAsInt - 0x10000 + char = chr(0xD800 | (v >> 10)) + chr(0xDC00 | (v & 0x3FF)) + + # Discard the ; if present. Otherwise, put it back on the queue and + # invoke parseError on parser. + if c != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "numeric-entity-without-semicolon"}) + self.stream.unget(c) + + return char + + def consumeEntity(self, allowedChar=None, fromAttribute=False): + # Initialise to the default output for when no entity is matched + output = "&" + + charStack = [self.stream.char()] + if (charStack[0] in spaceCharacters or charStack[0] in (EOF, "<", "&") or + (allowedChar is not None and allowedChar == charStack[0])): + self.stream.unget(charStack[0]) + + elif charStack[0] == "#": + # Read the next character to see if it's hex or decimal + hex = False + charStack.append(self.stream.char()) + if charStack[-1] in ("x", "X"): + hex = True + charStack.append(self.stream.char()) + + # charStack[-1] should be the first digit + if (hex and charStack[-1] in hexDigits) \ + or (not hex and charStack[-1] in digits): + # At least one digit found, so consume the whole number + self.stream.unget(charStack[-1]) + output = self.consumeNumberEntity(hex) + else: + # No digits found + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "expected-numeric-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + else: + # At this point in the process might have named entity. Entities + # are stored in the global variable "entities". + # + # Consume characters and compare to these to a substring of the + # entity names in the list until the substring no longer matches. + while (charStack[-1] is not EOF): + if not entitiesTrie.has_keys_with_prefix("".join(charStack)): + break + charStack.append(self.stream.char()) + + # At this point we have a string that starts with some characters + # that may match an entity + # Try to find the longest entity the string will match to take care + # of ¬i for instance. + try: + entityName = entitiesTrie.longest_prefix("".join(charStack[:-1])) + entityLength = len(entityName) + except KeyError: + entityName = None + + if entityName is not None: + if entityName[-1] != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "named-entity-without-semicolon"}) + if (entityName[-1] != ";" and fromAttribute and + (charStack[entityLength] in asciiLetters or + charStack[entityLength] in digits or + charStack[entityLength] == "=")): + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + else: + output = entities[entityName] + self.stream.unget(charStack.pop()) + output += "".join(charStack[entityLength:]) + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-named-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + if fromAttribute: + self.currentToken["data"][-1][1] += output + else: + if output in spaceCharacters: + tokenType = "SpaceCharacters" + else: + tokenType = "Characters" + self.tokenQueue.append({"type": tokenTypes[tokenType], "data": output}) + + def processEntityInAttribute(self, allowedChar): + """This method replaces the need for "entityInAttributeValueState". + """ + self.consumeEntity(allowedChar=allowedChar, fromAttribute=True) + + def emitCurrentToken(self): + """This method is a generic handler for emitting the tags. It also sets + the state to "data" because that's what's needed after a token has been + emitted. + """ + token = self.currentToken + # Add token to the queue to be yielded + if (token["type"] in tagTokenTypes): + token["name"] = token["name"].translate(asciiUpper2Lower) + if token["type"] == tokenTypes["StartTag"]: + raw = token["data"] + data = attributeMap(raw) + if len(raw) > len(data): + # we had some duplicated attribute, fix so first wins + data.update(raw[::-1]) + token["data"] = data + + if token["type"] == tokenTypes["EndTag"]: + if token["data"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "attributes-in-end-tag"}) + if token["selfClosing"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "self-closing-flag-on-end-tag"}) + self.tokenQueue.append(token) + self.state = self.dataState + + # Below are the various tokenizer states worked out. + def dataState(self): + data = self.stream.char() + if data == "&": + self.state = self.entityDataState + elif data == "<": + self.state = self.tagOpenState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\u0000"}) + elif data is EOF: + # Tokenization ends. + return False + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def entityDataState(self): + self.consumeEntity() + self.state = self.dataState + return True + + def rcdataState(self): + data = self.stream.char() + if data == "&": + self.state = self.characterReferenceInRcdata + elif data == "<": + self.state = self.rcdataLessThanSignState + elif data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def characterReferenceInRcdata(self): + self.consumeEntity() + self.state = self.rcdataState + return True + + def rawtextState(self): + data = self.stream.char() + if data == "<": + self.state = self.rawtextLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def scriptDataState(self): + data = self.stream.char() + if data == "<": + self.state = self.scriptDataLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def plaintextState(self): + data = self.stream.char() + if data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + self.stream.charsUntil("\u0000")}) + return True + + def tagOpenState(self): + data = self.stream.char() + if data == "!": + self.state = self.markupDeclarationOpenState + elif data == "/": + self.state = self.closeTagOpenState + elif data in asciiLetters: + self.currentToken = {"type": tokenTypes["StartTag"], + "name": data, "data": [], + "selfClosing": False, + "selfClosingAcknowledged": False} + self.state = self.tagNameState + elif data == ">": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-right-bracket"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<>"}) + self.state = self.dataState + elif data == "?": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-question-mark"}) + self.stream.unget(data) + self.state = self.bogusCommentState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.dataState + return True + + def closeTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.currentToken = {"type": tokenTypes["EndTag"], "name": data, + "data": [], "selfClosing": False} + self.state = self.tagNameState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-right-bracket"}) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-eof"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "": + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-tag-name"}) + self.state = self.dataState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + else: + self.currentToken["name"] += data + # (Don't use charsUntil here, because tag names are + # very short and it's faster to not do anything fancy) + return True + + def rcdataLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.rcdataEndTagOpenState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.rcdataState + return True + + def rcdataEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer += data + self.state = self.rcdataEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataEscapedState + elif data == EOF: + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.scriptDataEscapedEndTagOpenState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<" + data}) + self.temporaryBuffer = data + self.state = self.scriptDataDoubleEscapeStartState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer = data + self.state = self.scriptDataEscapedEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": ""))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataDoubleEscapedState + else: + self.state = self.scriptDataEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataDoubleEscapedState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + return True + + def scriptDataDoubleEscapedDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedDashDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "/"}) + self.temporaryBuffer = "" + self.state = self.scriptDataDoubleEscapeEndState + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapeEndState(self): + data = self.stream.char() + if data in (spaceCharacters | frozenset(("/", ">"))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataEscapedState + else: + self.state = self.scriptDataDoubleEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def beforeAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data in ("'", '"', "=", "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-name-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def attributeNameState(self): + data = self.stream.char() + leavingThisState = True + emitToken = False + if data == "=": + self.state = self.beforeAttributeValueState + elif data in asciiLetters: + self.currentToken["data"][-1][0] += data +\ + self.stream.charsUntil(asciiLetters, True) + leavingThisState = False + elif data == ">": + # XXX If we emit here the attributes are converted to a dict + # without being checked and when the code below runs we error + # because data is a dict not a list + emitToken = True + elif data in spaceCharacters: + self.state = self.afterAttributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][0] += "\uFFFD" + leavingThisState = False + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"][-1][0] += data + leavingThisState = False + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-attribute-name"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][0] += data + leavingThisState = False + + if leavingThisState: + # Attributes are not dropped at this stage. That happens when the + # start tag token is emitted so values can still be safely appended + # to attributes, but we do want to report the parse error in time. + self.currentToken["data"][-1][0] = ( + self.currentToken["data"][-1][0].translate(asciiUpper2Lower)) + for name, _ in self.currentToken["data"][:-1]: + if self.currentToken["data"][-1][0] == name: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "duplicate-attribute"}) + break + # XXX Fix for above XXX + if emitToken: + self.emitCurrentToken() + return True + + def afterAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "=": + self.state = self.beforeAttributeValueState + elif data == ">": + self.emitCurrentToken() + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-after-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-end-of-tag-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def beforeAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "\"": + self.state = self.attributeValueDoubleQuotedState + elif data == "&": + self.state = self.attributeValueUnQuotedState + self.stream.unget(data) + elif data == "'": + self.state = self.attributeValueSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-right-bracket"}) + self.emitCurrentToken() + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + self.state = self.attributeValueUnQuotedState + elif data in ("=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "equals-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + return True + + def attributeValueDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute('"') + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-double-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("\"", "&", "\u0000")) + return True + + def attributeValueSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute("'") + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-single-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("'", "&", "\u0000")) + return True + + def attributeValueUnQuotedState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == "&": + self.processEntityInAttribute(">") + elif data == ">": + self.emitCurrentToken() + elif data in ('"', "'", "=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-no-quotes"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.stream.charsUntil( + frozenset(("&", ">", '"', "'", "=", "<", "`", "\u0000")) | spaceCharacters) + return True + + def afterAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-EOF-after-attribute-value"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-attribute-value"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def selfClosingStartTagState(self): + data = self.stream.char() + if data == ">": + self.currentToken["selfClosing"] = True + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "unexpected-EOF-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def bogusCommentState(self): + # Make a new comment token and give it as value all the characters + # until the first > or EOF (charsUntil checks for EOF automatically) + # and emit it. + data = self.stream.charsUntil(">") + data = data.replace("\u0000", "\uFFFD") + self.tokenQueue.append( + {"type": tokenTypes["Comment"], "data": data}) + + # Eat the character directly after the bogus comment which is either a + # ">" or an EOF. + self.stream.char() + self.state = self.dataState + return True + + def markupDeclarationOpenState(self): + charStack = [self.stream.char()] + if charStack[-1] == "-": + charStack.append(self.stream.char()) + if charStack[-1] == "-": + self.currentToken = {"type": tokenTypes["Comment"], "data": ""} + self.state = self.commentStartState + return True + elif charStack[-1] in ('d', 'D'): + matched = True + for expected in (('o', 'O'), ('c', 'C'), ('t', 'T'), + ('y', 'Y'), ('p', 'P'), ('e', 'E')): + charStack.append(self.stream.char()) + if charStack[-1] not in expected: + matched = False + break + if matched: + self.currentToken = {"type": tokenTypes["Doctype"], + "name": "", + "publicId": None, "systemId": None, + "correct": True} + self.state = self.doctypeState + return True + elif (charStack[-1] == "[" and + self.parser is not None and + self.parser.tree.openElements and + self.parser.tree.openElements[-1].namespace != self.parser.tree.defaultNamespace): + matched = True + for expected in ["C", "D", "A", "T", "A", "["]: + charStack.append(self.stream.char()) + if charStack[-1] != expected: + matched = False + break + if matched: + self.state = self.cdataSectionState + return True + + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-dashes-or-doctype"}) + + while charStack: + self.stream.unget(charStack.pop()) + self.state = self.bogusCommentState + return True + + def commentStartState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentStartDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + self.state = self.commentState + return True + + def commentStartDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + \ + self.stream.charsUntil(("-", "\u0000")) + return True + + def commentEndDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentEndState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--\uFFFD" + self.state = self.commentState + elif data == "!": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-bang-after-double-dash-in-comment"}) + self.state = self.commentEndBangState + elif data == "-": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-dash-after-double-dash-in-comment"}) + self.currentToken["data"] += data + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-double-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-comment"}) + self.currentToken["data"] += "--" + data + self.state = self.commentState + return True + + def commentEndBangState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "-": + self.currentToken["data"] += "--!" + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--!\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-bang-state"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "--!" + data + self.state = self.commentState + return True + + def doctypeState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "need-space-after-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeNameState + return True + + def beforeDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-right-bracket"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] = "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] = data + self.state = self.doctypeNameState + return True + + def doctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.state = self.afterDoctypeNameState + elif data == ">": + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype-name"}) + self.currentToken["correct"] = False + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] += data + return True + + def afterDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.currentToken["correct"] = False + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + if data in ("p", "P"): + matched = True + for expected in (("u", "U"), ("b", "B"), ("l", "L"), + ("i", "I"), ("c", "C")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypePublicKeywordState + return True + elif data in ("s", "S"): + matched = True + for expected in (("y", "Y"), ("s", "S"), ("t", "T"), + ("e", "E"), ("m", "M")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypeSystemKeywordState + return True + + # All the characters read before the current 'data' will be + # [a-zA-Z], so they're garbage in the bogus doctype and can be + # discarded; only the latest character might be '>' or EOF + # and needs to be ungetted + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-space-or-right-bracket-in-doctype", "datavars": + {"data": data}}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + + return True + + def afterDoctypePublicKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypePublicIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + return True + + def beforeDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypePublicIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def doctypePublicIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def afterDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.betweenDoctypePublicAndSystemIdentifiersState + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def betweenDoctypePublicAndSystemIdentifiersState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def afterDoctypeSystemKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeSystemIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + return True + + def beforeDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypeSystemIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def doctypeSystemIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def afterDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.state = self.bogusDoctypeState + return True + + def bogusDoctypeState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + # XXX EMIT + self.stream.unget(data) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + pass + return True + + def cdataSectionState(self): + data = [] + while True: + data.append(self.stream.charsUntil("]")) + data.append(self.stream.charsUntil(">")) + char = self.stream.char() + if char == EOF: + break + else: + assert char == ">" + if data[-1][-2:] == "]]": + data[-1] = data[-1][:-2] + break + else: + data.append(char) + + data = "".join(data) # pylint:disable=redefined-variable-type + # Deal with null here rather than in the parser + nullCount = data.count("\u0000") + if nullCount > 0: + for _ in range(nullCount): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + data = data.replace("\u0000", "\uFFFD") + if data: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": data}) + self.state = self.dataState + return True diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py new file mode 100644 index 00000000..07bad5d3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py @@ -0,0 +1,5 @@ +from __future__ import absolute_import, division, unicode_literals + +from .py import Trie + +__all__ = ["Trie"] diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py new file mode 100644 index 00000000..6b71975f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py @@ -0,0 +1,40 @@ +from __future__ import absolute_import, division, unicode_literals + +try: + from collections.abc import Mapping +except ImportError: # Python 2.7 + from collections import Mapping + + +class Trie(Mapping): + """Abstract base class for tries""" + + def keys(self, prefix=None): + # pylint:disable=arguments-differ + keys = super(Trie, self).keys() + + if prefix is None: + return set(keys) + + return {x for x in keys if x.startswith(prefix)} + + def has_keys_with_prefix(self, prefix): + for key in self.keys(): + if key.startswith(prefix): + return True + + return False + + def longest_prefix(self, prefix): + if prefix in self: + return prefix + + for i in range(1, len(prefix) + 1): + if prefix[:-i] in self: + return prefix[:-i] + + raise KeyError(prefix) + + def longest_prefix_item(self, prefix): + lprefix = self.longest_prefix(prefix) + return (lprefix, self[lprefix]) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py new file mode 100644 index 00000000..e2e5f866 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py @@ -0,0 +1,44 @@ +from __future__ import absolute_import, division, unicode_literals + +from datrie import Trie as DATrie +from pip._vendor.six import text_type + +from ._base import Trie as ABCTrie + + +class Trie(ABCTrie): + def __init__(self, data): + chars = set() + for key in data.keys(): + if not isinstance(key, text_type): + raise TypeError("All keys must be strings") + for char in key: + chars.add(char) + + self._data = DATrie("".join(chars)) + for key, value in data.items(): + self._data[key] = value + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + raise NotImplementedError() + + def __getitem__(self, key): + return self._data[key] + + def keys(self, prefix=None): + return self._data.keys(prefix) + + def has_keys_with_prefix(self, prefix): + return self._data.has_keys_with_prefix(prefix) + + def longest_prefix(self, prefix): + return self._data.longest_prefix(prefix) + + def longest_prefix_item(self, prefix): + return self._data.longest_prefix_item(prefix) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py new file mode 100644 index 00000000..c178b219 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py @@ -0,0 +1,67 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import text_type + +from bisect import bisect_left + +from ._base import Trie as ABCTrie + + +class Trie(ABCTrie): + def __init__(self, data): + if not all(isinstance(x, text_type) for x in data.keys()): + raise TypeError("All keys must be strings") + + self._data = data + self._keys = sorted(data.keys()) + self._cachestr = "" + self._cachepoints = (0, len(data)) + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, key): + return self._data[key] + + def keys(self, prefix=None): + if prefix is None or prefix == "" or not self._keys: + return set(self._keys) + + if prefix.startswith(self._cachestr): + lo, hi = self._cachepoints + start = i = bisect_left(self._keys, prefix, lo, hi) + else: + start = i = bisect_left(self._keys, prefix) + + keys = set() + if start == len(self._keys): + return keys + + while self._keys[i].startswith(prefix): + keys.add(self._keys[i]) + i += 1 + + self._cachestr = prefix + self._cachepoints = (start, i) + + return keys + + def has_keys_with_prefix(self, prefix): + if prefix in self._data: + return True + + if prefix.startswith(self._cachestr): + lo, hi = self._cachepoints + i = bisect_left(self._keys, prefix, lo, hi) + else: + i = bisect_left(self._keys, prefix) + + if i == len(self._keys): + return False + + return self._keys[i].startswith(prefix) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py b/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py new file mode 100644 index 00000000..d7c4926a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py @@ -0,0 +1,159 @@ +from __future__ import absolute_import, division, unicode_literals + +from types import ModuleType + +try: + from collections.abc import Mapping +except ImportError: + from collections import Mapping + +from pip._vendor.six import text_type, PY3 + +if PY3: + import xml.etree.ElementTree as default_etree +else: + try: + import xml.etree.cElementTree as default_etree + except ImportError: + import xml.etree.ElementTree as default_etree + + +__all__ = ["default_etree", "MethodDispatcher", "isSurrogatePair", + "surrogatePairToCodepoint", "moduleFactoryFactory", + "supports_lone_surrogates"] + + +# Platforms not supporting lone surrogates (\uD800-\uDFFF) should be +# caught by the below test. In general this would be any platform +# using UTF-16 as its encoding of unicode strings, such as +# Jython. This is because UTF-16 itself is based on the use of such +# surrogates, and there is no mechanism to further escape such +# escapes. +try: + _x = eval('"\\uD800"') # pylint:disable=eval-used + if not isinstance(_x, text_type): + # We need this with u"" because of http://bugs.jython.org/issue2039 + _x = eval('u"\\uD800"') # pylint:disable=eval-used + assert isinstance(_x, text_type) +except Exception: + supports_lone_surrogates = False +else: + supports_lone_surrogates = True + + +class MethodDispatcher(dict): + """Dict with 2 special properties: + + On initiation, keys that are lists, sets or tuples are converted to + multiple keys so accessing any one of the items in the original + list-like object returns the matching value + + md = MethodDispatcher({("foo", "bar"):"baz"}) + md["foo"] == "baz" + + A default value which can be set through the default attribute. + """ + + def __init__(self, items=()): + _dictEntries = [] + for name, value in items: + if isinstance(name, (list, tuple, frozenset, set)): + for item in name: + _dictEntries.append((item, value)) + else: + _dictEntries.append((name, value)) + dict.__init__(self, _dictEntries) + assert len(self) == len(_dictEntries) + self.default = None + + def __getitem__(self, key): + return dict.get(self, key, self.default) + + def __get__(self, instance, owner=None): + return BoundMethodDispatcher(instance, self) + + +class BoundMethodDispatcher(Mapping): + """Wraps a MethodDispatcher, binding its return values to `instance`""" + def __init__(self, instance, dispatcher): + self.instance = instance + self.dispatcher = dispatcher + + def __getitem__(self, key): + # see https://docs.python.org/3/reference/datamodel.html#object.__get__ + # on a function, __get__ is used to bind a function to an instance as a bound method + return self.dispatcher[key].__get__(self.instance) + + def get(self, key, default): + if key in self.dispatcher: + return self[key] + else: + return default + + def __iter__(self): + return iter(self.dispatcher) + + def __len__(self): + return len(self.dispatcher) + + def __contains__(self, key): + return key in self.dispatcher + + +# Some utility functions to deal with weirdness around UCS2 vs UCS4 +# python builds + +def isSurrogatePair(data): + return (len(data) == 2 and + ord(data[0]) >= 0xD800 and ord(data[0]) <= 0xDBFF and + ord(data[1]) >= 0xDC00 and ord(data[1]) <= 0xDFFF) + + +def surrogatePairToCodepoint(data): + char_val = (0x10000 + (ord(data[0]) - 0xD800) * 0x400 + + (ord(data[1]) - 0xDC00)) + return char_val + +# Module Factory Factory (no, this isn't Java, I know) +# Here to stop this being duplicated all over the place. + + +def moduleFactoryFactory(factory): + moduleCache = {} + + def moduleFactory(baseModule, *args, **kwargs): + if isinstance(ModuleType.__name__, type("")): + name = "_%s_factory" % baseModule.__name__ + else: + name = b"_%s_factory" % baseModule.__name__ + + kwargs_tuple = tuple(kwargs.items()) + + try: + return moduleCache[name][args][kwargs_tuple] + except KeyError: + mod = ModuleType(name) + objs = factory(baseModule, *args, **kwargs) + mod.__dict__.update(objs) + if "name" not in moduleCache: + moduleCache[name] = {} + if "args" not in moduleCache[name]: + moduleCache[name][args] = {} + if "kwargs" not in moduleCache[name][args]: + moduleCache[name][args][kwargs_tuple] = {} + moduleCache[name][args][kwargs_tuple] = mod + return mod + + return moduleFactory + + +def memoize(func): + cache = {} + + def wrapped(*args, **kwargs): + key = (tuple(args), tuple(kwargs.items())) + if key not in cache: + cache[key] = func(*args, **kwargs) + return cache[key] + + return wrapped diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py b/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py new file mode 100644 index 00000000..fe3e237c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py @@ -0,0 +1,2946 @@ +from __future__ import absolute_import, division, unicode_literals + +import string + +EOF = None + +E = { + "null-character": + "Null character in input stream, replaced with U+FFFD.", + "invalid-codepoint": + "Invalid codepoint in stream.", + "incorrectly-placed-solidus": + "Solidus (/) incorrectly placed in tag.", + "incorrect-cr-newline-entity": + "Incorrect CR newline entity, replaced with LF.", + "illegal-windows-1252-entity": + "Entity used with illegal number (windows-1252 reference).", + "cant-convert-numeric-entity": + "Numeric entity couldn't be converted to character " + "(codepoint U+%(charAsInt)08x).", + "illegal-codepoint-for-numeric-entity": + "Numeric entity represents an illegal codepoint: " + "U+%(charAsInt)08x.", + "numeric-entity-without-semicolon": + "Numeric entity didn't end with ';'.", + "expected-numeric-entity-but-got-eof": + "Numeric entity expected. Got end of file instead.", + "expected-numeric-entity": + "Numeric entity expected but none found.", + "named-entity-without-semicolon": + "Named entity didn't end with ';'.", + "expected-named-entity": + "Named entity expected. Got none.", + "attributes-in-end-tag": + "End tag contains unexpected attributes.", + 'self-closing-flag-on-end-tag': + "End tag contains unexpected self-closing flag.", + "expected-tag-name-but-got-right-bracket": + "Expected tag name. Got '>' instead.", + "expected-tag-name-but-got-question-mark": + "Expected tag name. Got '?' instead. (HTML doesn't " + "support processing instructions.)", + "expected-tag-name": + "Expected tag name. Got something else instead", + "expected-closing-tag-but-got-right-bracket": + "Expected closing tag. Got '>' instead. Ignoring ''.", + "expected-closing-tag-but-got-eof": + "Expected closing tag. Unexpected end of file.", + "expected-closing-tag-but-got-char": + "Expected closing tag. Unexpected character '%(data)s' found.", + "eof-in-tag-name": + "Unexpected end of file in the tag name.", + "expected-attribute-name-but-got-eof": + "Unexpected end of file. Expected attribute name instead.", + "eof-in-attribute-name": + "Unexpected end of file in attribute name.", + "invalid-character-in-attribute-name": + "Invalid character in attribute name", + "duplicate-attribute": + "Dropped duplicate attribute on tag.", + "expected-end-of-tag-name-but-got-eof": + "Unexpected end of file. Expected = or end of tag.", + "expected-attribute-value-but-got-eof": + "Unexpected end of file. Expected attribute value.", + "expected-attribute-value-but-got-right-bracket": + "Expected attribute value. Got '>' instead.", + 'equals-in-unquoted-attribute-value': + "Unexpected = in unquoted attribute", + 'unexpected-character-in-unquoted-attribute-value': + "Unexpected character in unquoted attribute", + "invalid-character-after-attribute-name": + "Unexpected character after attribute name.", + "unexpected-character-after-attribute-value": + "Unexpected character after attribute value.", + "eof-in-attribute-value-double-quote": + "Unexpected end of file in attribute value (\").", + "eof-in-attribute-value-single-quote": + "Unexpected end of file in attribute value (').", + "eof-in-attribute-value-no-quotes": + "Unexpected end of file in attribute value.", + "unexpected-EOF-after-solidus-in-tag": + "Unexpected end of file in tag. Expected >", + "unexpected-character-after-solidus-in-tag": + "Unexpected character after / in tag. Expected >", + "expected-dashes-or-doctype": + "Expected '--' or 'DOCTYPE'. Not found.", + "unexpected-bang-after-double-dash-in-comment": + "Unexpected ! after -- in comment", + "unexpected-space-after-double-dash-in-comment": + "Unexpected space after -- in comment", + "incorrect-comment": + "Incorrect comment.", + "eof-in-comment": + "Unexpected end of file in comment.", + "eof-in-comment-end-dash": + "Unexpected end of file in comment (-)", + "unexpected-dash-after-double-dash-in-comment": + "Unexpected '-' after '--' found in comment.", + "eof-in-comment-double-dash": + "Unexpected end of file in comment (--).", + "eof-in-comment-end-space-state": + "Unexpected end of file in comment.", + "eof-in-comment-end-bang-state": + "Unexpected end of file in comment.", + "unexpected-char-in-comment": + "Unexpected character in comment found.", + "need-space-after-doctype": + "No space after literal string 'DOCTYPE'.", + "expected-doctype-name-but-got-right-bracket": + "Unexpected > character. Expected DOCTYPE name.", + "expected-doctype-name-but-got-eof": + "Unexpected end of file. Expected DOCTYPE name.", + "eof-in-doctype-name": + "Unexpected end of file in DOCTYPE name.", + "eof-in-doctype": + "Unexpected end of file in DOCTYPE.", + "expected-space-or-right-bracket-in-doctype": + "Expected space or '>'. Got '%(data)s'", + "unexpected-end-of-doctype": + "Unexpected end of DOCTYPE.", + "unexpected-char-in-doctype": + "Unexpected character in DOCTYPE.", + "eof-in-innerhtml": + "XXX innerHTML EOF", + "unexpected-doctype": + "Unexpected DOCTYPE. Ignored.", + "non-html-root": + "html needs to be the first start tag.", + "expected-doctype-but-got-eof": + "Unexpected End of file. Expected DOCTYPE.", + "unknown-doctype": + "Erroneous DOCTYPE.", + "expected-doctype-but-got-chars": + "Unexpected non-space characters. Expected DOCTYPE.", + "expected-doctype-but-got-start-tag": + "Unexpected start tag (%(name)s). Expected DOCTYPE.", + "expected-doctype-but-got-end-tag": + "Unexpected end tag (%(name)s). Expected DOCTYPE.", + "end-tag-after-implied-root": + "Unexpected end tag (%(name)s) after the (implied) root element.", + "expected-named-closing-tag-but-got-eof": + "Unexpected end of file. Expected end tag (%(name)s).", + "two-heads-are-not-better-than-one": + "Unexpected start tag head in existing head. Ignored.", + "unexpected-end-tag": + "Unexpected end tag (%(name)s). Ignored.", + "unexpected-start-tag-out-of-my-head": + "Unexpected start tag (%(name)s) that can be in head. Moved.", + "unexpected-start-tag": + "Unexpected start tag (%(name)s).", + "missing-end-tag": + "Missing end tag (%(name)s).", + "missing-end-tags": + "Missing end tags (%(name)s).", + "unexpected-start-tag-implies-end-tag": + "Unexpected start tag (%(startName)s) " + "implies end tag (%(endName)s).", + "unexpected-start-tag-treated-as": + "Unexpected start tag (%(originalName)s). Treated as %(newName)s.", + "deprecated-tag": + "Unexpected start tag %(name)s. Don't use it!", + "unexpected-start-tag-ignored": + "Unexpected start tag %(name)s. Ignored.", + "expected-one-end-tag-but-got-another": + "Unexpected end tag (%(gotName)s). " + "Missing end tag (%(expectedName)s).", + "end-tag-too-early": + "End tag (%(name)s) seen too early. Expected other end tag.", + "end-tag-too-early-named": + "Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).", + "end-tag-too-early-ignored": + "End tag (%(name)s) seen too early. Ignored.", + "adoption-agency-1.1": + "End tag (%(name)s) violates step 1, " + "paragraph 1 of the adoption agency algorithm.", + "adoption-agency-1.2": + "End tag (%(name)s) violates step 1, " + "paragraph 2 of the adoption agency algorithm.", + "adoption-agency-1.3": + "End tag (%(name)s) violates step 1, " + "paragraph 3 of the adoption agency algorithm.", + "adoption-agency-4.4": + "End tag (%(name)s) violates step 4, " + "paragraph 4 of the adoption agency algorithm.", + "unexpected-end-tag-treated-as": + "Unexpected end tag (%(originalName)s). Treated as %(newName)s.", + "no-end-tag": + "This element (%(name)s) has no end tag.", + "unexpected-implied-end-tag-in-table": + "Unexpected implied end tag (%(name)s) in the table phase.", + "unexpected-implied-end-tag-in-table-body": + "Unexpected implied end tag (%(name)s) in the table body phase.", + "unexpected-char-implies-table-voodoo": + "Unexpected non-space characters in " + "table context caused voodoo mode.", + "unexpected-hidden-input-in-table": + "Unexpected input with type hidden in table context.", + "unexpected-form-in-table": + "Unexpected form in table context.", + "unexpected-start-tag-implies-table-voodoo": + "Unexpected start tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-end-tag-implies-table-voodoo": + "Unexpected end tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-cell-in-table-body": + "Unexpected table cell start tag (%(name)s) " + "in the table body phase.", + "unexpected-cell-end-tag": + "Got table cell end tag (%(name)s) " + "while required end tags are missing.", + "unexpected-end-tag-in-table-body": + "Unexpected end tag (%(name)s) in the table body phase. Ignored.", + "unexpected-implied-end-tag-in-table-row": + "Unexpected implied end tag (%(name)s) in the table row phase.", + "unexpected-end-tag-in-table-row": + "Unexpected end tag (%(name)s) in the table row phase. Ignored.", + "unexpected-select-in-select": + "Unexpected select start tag in the select phase " + "treated as select end tag.", + "unexpected-input-in-select": + "Unexpected input start tag in the select phase.", + "unexpected-start-tag-in-select": + "Unexpected start tag token (%(name)s in the select phase. " + "Ignored.", + "unexpected-end-tag-in-select": + "Unexpected end tag (%(name)s) in the select phase. Ignored.", + "unexpected-table-element-start-tag-in-select-in-table": + "Unexpected table element start tag (%(name)s) in the select in table phase.", + "unexpected-table-element-end-tag-in-select-in-table": + "Unexpected table element end tag (%(name)s) in the select in table phase.", + "unexpected-char-after-body": + "Unexpected non-space characters in the after body phase.", + "unexpected-start-tag-after-body": + "Unexpected start tag token (%(name)s)" + " in the after body phase.", + "unexpected-end-tag-after-body": + "Unexpected end tag token (%(name)s)" + " in the after body phase.", + "unexpected-char-in-frameset": + "Unexpected characters in the frameset phase. Characters ignored.", + "unexpected-start-tag-in-frameset": + "Unexpected start tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-frameset-in-frameset-innerhtml": + "Unexpected end tag token (frameset) " + "in the frameset phase (innerHTML).", + "unexpected-end-tag-in-frameset": + "Unexpected end tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-char-after-frameset": + "Unexpected non-space characters in the " + "after frameset phase. Ignored.", + "unexpected-start-tag-after-frameset": + "Unexpected start tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-frameset": + "Unexpected end tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-body-innerhtml": + "Unexpected end tag after body(innerHtml)", + "expected-eof-but-got-char": + "Unexpected non-space characters. Expected end of file.", + "expected-eof-but-got-start-tag": + "Unexpected start tag (%(name)s)" + ". Expected end of file.", + "expected-eof-but-got-end-tag": + "Unexpected end tag (%(name)s)" + ". Expected end of file.", + "eof-in-table": + "Unexpected end of file. Expected table content.", + "eof-in-select": + "Unexpected end of file. Expected select content.", + "eof-in-frameset": + "Unexpected end of file. Expected frameset content.", + "eof-in-script-in-script": + "Unexpected end of file. Expected script content.", + "eof-in-foreign-lands": + "Unexpected end of file. Expected foreign content", + "non-void-element-with-trailing-solidus": + "Trailing solidus not allowed on element %(name)s", + "unexpected-html-element-in-foreign-content": + "Element %(name)s not allowed in a non-html context", + "unexpected-end-tag-before-html": + "Unexpected end tag (%(name)s) before html.", + "unexpected-inhead-noscript-tag": + "Element %(name)s not allowed in a inhead-noscript context", + "eof-in-head-noscript": + "Unexpected end of file. Expected inhead-noscript content", + "char-in-head-noscript": + "Unexpected non-space character. Expected inhead-noscript content", + "XXX-undefined-error": + "Undefined error (this sucks and should be fixed)", +} + +namespaces = { + "html": "http://www.w3.org/1999/xhtml", + "mathml": "http://www.w3.org/1998/Math/MathML", + "svg": "http://www.w3.org/2000/svg", + "xlink": "http://www.w3.org/1999/xlink", + "xml": "http://www.w3.org/XML/1998/namespace", + "xmlns": "http://www.w3.org/2000/xmlns/" +} + +scopingElements = frozenset([ + (namespaces["html"], "applet"), + (namespaces["html"], "caption"), + (namespaces["html"], "html"), + (namespaces["html"], "marquee"), + (namespaces["html"], "object"), + (namespaces["html"], "table"), + (namespaces["html"], "td"), + (namespaces["html"], "th"), + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext"), + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title"), +]) + +formattingElements = frozenset([ + (namespaces["html"], "a"), + (namespaces["html"], "b"), + (namespaces["html"], "big"), + (namespaces["html"], "code"), + (namespaces["html"], "em"), + (namespaces["html"], "font"), + (namespaces["html"], "i"), + (namespaces["html"], "nobr"), + (namespaces["html"], "s"), + (namespaces["html"], "small"), + (namespaces["html"], "strike"), + (namespaces["html"], "strong"), + (namespaces["html"], "tt"), + (namespaces["html"], "u") +]) + +specialElements = frozenset([ + (namespaces["html"], "address"), + (namespaces["html"], "applet"), + (namespaces["html"], "area"), + (namespaces["html"], "article"), + (namespaces["html"], "aside"), + (namespaces["html"], "base"), + (namespaces["html"], "basefont"), + (namespaces["html"], "bgsound"), + (namespaces["html"], "blockquote"), + (namespaces["html"], "body"), + (namespaces["html"], "br"), + (namespaces["html"], "button"), + (namespaces["html"], "caption"), + (namespaces["html"], "center"), + (namespaces["html"], "col"), + (namespaces["html"], "colgroup"), + (namespaces["html"], "command"), + (namespaces["html"], "dd"), + (namespaces["html"], "details"), + (namespaces["html"], "dir"), + (namespaces["html"], "div"), + (namespaces["html"], "dl"), + (namespaces["html"], "dt"), + (namespaces["html"], "embed"), + (namespaces["html"], "fieldset"), + (namespaces["html"], "figure"), + (namespaces["html"], "footer"), + (namespaces["html"], "form"), + (namespaces["html"], "frame"), + (namespaces["html"], "frameset"), + (namespaces["html"], "h1"), + (namespaces["html"], "h2"), + (namespaces["html"], "h3"), + (namespaces["html"], "h4"), + (namespaces["html"], "h5"), + (namespaces["html"], "h6"), + (namespaces["html"], "head"), + (namespaces["html"], "header"), + (namespaces["html"], "hr"), + (namespaces["html"], "html"), + (namespaces["html"], "iframe"), + # Note that image is commented out in the spec as "this isn't an + # element that can end up on the stack, so it doesn't matter," + (namespaces["html"], "image"), + (namespaces["html"], "img"), + (namespaces["html"], "input"), + (namespaces["html"], "isindex"), + (namespaces["html"], "li"), + (namespaces["html"], "link"), + (namespaces["html"], "listing"), + (namespaces["html"], "marquee"), + (namespaces["html"], "menu"), + (namespaces["html"], "meta"), + (namespaces["html"], "nav"), + (namespaces["html"], "noembed"), + (namespaces["html"], "noframes"), + (namespaces["html"], "noscript"), + (namespaces["html"], "object"), + (namespaces["html"], "ol"), + (namespaces["html"], "p"), + (namespaces["html"], "param"), + (namespaces["html"], "plaintext"), + (namespaces["html"], "pre"), + (namespaces["html"], "script"), + (namespaces["html"], "section"), + (namespaces["html"], "select"), + (namespaces["html"], "style"), + (namespaces["html"], "table"), + (namespaces["html"], "tbody"), + (namespaces["html"], "td"), + (namespaces["html"], "textarea"), + (namespaces["html"], "tfoot"), + (namespaces["html"], "th"), + (namespaces["html"], "thead"), + (namespaces["html"], "title"), + (namespaces["html"], "tr"), + (namespaces["html"], "ul"), + (namespaces["html"], "wbr"), + (namespaces["html"], "xmp"), + (namespaces["svg"], "foreignObject") +]) + +htmlIntegrationPointElements = frozenset([ + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title") +]) + +mathmlTextIntegrationPointElements = frozenset([ + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext") +]) + +adjustSVGAttributes = { + "attributename": "attributeName", + "attributetype": "attributeType", + "basefrequency": "baseFrequency", + "baseprofile": "baseProfile", + "calcmode": "calcMode", + "clippathunits": "clipPathUnits", + "contentscripttype": "contentScriptType", + "contentstyletype": "contentStyleType", + "diffuseconstant": "diffuseConstant", + "edgemode": "edgeMode", + "externalresourcesrequired": "externalResourcesRequired", + "filterres": "filterRes", + "filterunits": "filterUnits", + "glyphref": "glyphRef", + "gradienttransform": "gradientTransform", + "gradientunits": "gradientUnits", + "kernelmatrix": "kernelMatrix", + "kernelunitlength": "kernelUnitLength", + "keypoints": "keyPoints", + "keysplines": "keySplines", + "keytimes": "keyTimes", + "lengthadjust": "lengthAdjust", + "limitingconeangle": "limitingConeAngle", + "markerheight": "markerHeight", + "markerunits": "markerUnits", + "markerwidth": "markerWidth", + "maskcontentunits": "maskContentUnits", + "maskunits": "maskUnits", + "numoctaves": "numOctaves", + "pathlength": "pathLength", + "patterncontentunits": "patternContentUnits", + "patterntransform": "patternTransform", + "patternunits": "patternUnits", + "pointsatx": "pointsAtX", + "pointsaty": "pointsAtY", + "pointsatz": "pointsAtZ", + "preservealpha": "preserveAlpha", + "preserveaspectratio": "preserveAspectRatio", + "primitiveunits": "primitiveUnits", + "refx": "refX", + "refy": "refY", + "repeatcount": "repeatCount", + "repeatdur": "repeatDur", + "requiredextensions": "requiredExtensions", + "requiredfeatures": "requiredFeatures", + "specularconstant": "specularConstant", + "specularexponent": "specularExponent", + "spreadmethod": "spreadMethod", + "startoffset": "startOffset", + "stddeviation": "stdDeviation", + "stitchtiles": "stitchTiles", + "surfacescale": "surfaceScale", + "systemlanguage": "systemLanguage", + "tablevalues": "tableValues", + "targetx": "targetX", + "targety": "targetY", + "textlength": "textLength", + "viewbox": "viewBox", + "viewtarget": "viewTarget", + "xchannelselector": "xChannelSelector", + "ychannelselector": "yChannelSelector", + "zoomandpan": "zoomAndPan" +} + +adjustMathMLAttributes = {"definitionurl": "definitionURL"} + +adjustForeignAttributes = { + "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), + "xlink:arcrole": ("xlink", "arcrole", namespaces["xlink"]), + "xlink:href": ("xlink", "href", namespaces["xlink"]), + "xlink:role": ("xlink", "role", namespaces["xlink"]), + "xlink:show": ("xlink", "show", namespaces["xlink"]), + "xlink:title": ("xlink", "title", namespaces["xlink"]), + "xlink:type": ("xlink", "type", namespaces["xlink"]), + "xml:base": ("xml", "base", namespaces["xml"]), + "xml:lang": ("xml", "lang", namespaces["xml"]), + "xml:space": ("xml", "space", namespaces["xml"]), + "xmlns": (None, "xmlns", namespaces["xmlns"]), + "xmlns:xlink": ("xmlns", "xlink", namespaces["xmlns"]) +} + +unadjustForeignAttributes = {(ns, local): qname for qname, (prefix, local, ns) in + adjustForeignAttributes.items()} + +spaceCharacters = frozenset([ + "\t", + "\n", + "\u000C", + " ", + "\r" +]) + +tableInsertModeElements = frozenset([ + "table", + "tbody", + "tfoot", + "thead", + "tr" +]) + +asciiLowercase = frozenset(string.ascii_lowercase) +asciiUppercase = frozenset(string.ascii_uppercase) +asciiLetters = frozenset(string.ascii_letters) +digits = frozenset(string.digits) +hexDigits = frozenset(string.hexdigits) + +asciiUpper2Lower = {ord(c): ord(c.lower()) for c in string.ascii_uppercase} + +# Heading elements need to be ordered +headingElements = ( + "h1", + "h2", + "h3", + "h4", + "h5", + "h6" +) + +voidElements = frozenset([ + "base", + "command", + "event-source", + "link", + "meta", + "hr", + "br", + "img", + "embed", + "param", + "area", + "col", + "input", + "source", + "track" +]) + +cdataElements = frozenset(['title', 'textarea']) + +rcdataElements = frozenset([ + 'style', + 'script', + 'xmp', + 'iframe', + 'noembed', + 'noframes', + 'noscript' +]) + +booleanAttributes = { + "": frozenset(["irrelevant", "itemscope"]), + "style": frozenset(["scoped"]), + "img": frozenset(["ismap"]), + "audio": frozenset(["autoplay", "controls"]), + "video": frozenset(["autoplay", "controls"]), + "script": frozenset(["defer", "async"]), + "details": frozenset(["open"]), + "datagrid": frozenset(["multiple", "disabled"]), + "command": frozenset(["hidden", "disabled", "checked", "default"]), + "hr": frozenset(["noshade"]), + "menu": frozenset(["autosubmit"]), + "fieldset": frozenset(["disabled", "readonly"]), + "option": frozenset(["disabled", "readonly", "selected"]), + "optgroup": frozenset(["disabled", "readonly"]), + "button": frozenset(["disabled", "autofocus"]), + "input": frozenset(["disabled", "readonly", "required", "autofocus", "checked", "ismap"]), + "select": frozenset(["disabled", "readonly", "autofocus", "multiple"]), + "output": frozenset(["disabled", "readonly"]), + "iframe": frozenset(["seamless"]), +} + +# entitiesWindows1252 has to be _ordered_ and needs to have an index. It +# therefore can't be a frozenset. +entitiesWindows1252 = ( + 8364, # 0x80 0x20AC EURO SIGN + 65533, # 0x81 UNDEFINED + 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK + 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK + 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK + 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS + 8224, # 0x86 0x2020 DAGGER + 8225, # 0x87 0x2021 DOUBLE DAGGER + 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT + 8240, # 0x89 0x2030 PER MILLE SIGN + 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON + 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE + 65533, # 0x8D UNDEFINED + 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON + 65533, # 0x8F UNDEFINED + 65533, # 0x90 UNDEFINED + 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK + 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK + 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK + 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK + 8226, # 0x95 0x2022 BULLET + 8211, # 0x96 0x2013 EN DASH + 8212, # 0x97 0x2014 EM DASH + 732, # 0x98 0x02DC SMALL TILDE + 8482, # 0x99 0x2122 TRADE MARK SIGN + 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON + 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE + 65533, # 0x9D UNDEFINED + 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON + 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS +) + +xmlEntities = frozenset(['lt;', 'gt;', 'amp;', 'apos;', 'quot;']) + +entities = { + "AElig": "\xc6", + "AElig;": "\xc6", + "AMP": "&", + "AMP;": "&", + "Aacute": "\xc1", + "Aacute;": "\xc1", + "Abreve;": "\u0102", + "Acirc": "\xc2", + "Acirc;": "\xc2", + "Acy;": "\u0410", + "Afr;": "\U0001d504", + "Agrave": "\xc0", + "Agrave;": "\xc0", + "Alpha;": "\u0391", + "Amacr;": "\u0100", + "And;": "\u2a53", + "Aogon;": "\u0104", + "Aopf;": "\U0001d538", + "ApplyFunction;": "\u2061", + "Aring": "\xc5", + "Aring;": "\xc5", + "Ascr;": "\U0001d49c", + "Assign;": "\u2254", + "Atilde": "\xc3", + "Atilde;": "\xc3", + "Auml": "\xc4", + "Auml;": "\xc4", + "Backslash;": "\u2216", + "Barv;": "\u2ae7", + "Barwed;": "\u2306", + "Bcy;": "\u0411", + "Because;": "\u2235", + "Bernoullis;": "\u212c", + "Beta;": "\u0392", + "Bfr;": "\U0001d505", + "Bopf;": "\U0001d539", + "Breve;": "\u02d8", + "Bscr;": "\u212c", + "Bumpeq;": "\u224e", + "CHcy;": "\u0427", + "COPY": "\xa9", + "COPY;": "\xa9", + "Cacute;": "\u0106", + "Cap;": "\u22d2", + "CapitalDifferentialD;": "\u2145", + "Cayleys;": "\u212d", + "Ccaron;": "\u010c", + "Ccedil": "\xc7", + "Ccedil;": "\xc7", + "Ccirc;": "\u0108", + "Cconint;": "\u2230", + "Cdot;": "\u010a", + "Cedilla;": "\xb8", + "CenterDot;": "\xb7", + "Cfr;": "\u212d", + "Chi;": "\u03a7", + "CircleDot;": "\u2299", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201d", + "CloseCurlyQuote;": "\u2019", + "Colon;": "\u2237", + "Colone;": "\u2a74", + "Congruent;": "\u2261", + "Conint;": "\u222f", + "ContourIntegral;": "\u222e", + "Copf;": "\u2102", + "Coproduct;": "\u2210", + "CounterClockwiseContourIntegral;": "\u2233", + "Cross;": "\u2a2f", + "Cscr;": "\U0001d49e", + "Cup;": "\u22d3", + "CupCap;": "\u224d", + "DD;": "\u2145", + "DDotrahd;": "\u2911", + "DJcy;": "\u0402", + "DScy;": "\u0405", + "DZcy;": "\u040f", + "Dagger;": "\u2021", + "Darr;": "\u21a1", + "Dashv;": "\u2ae4", + "Dcaron;": "\u010e", + "Dcy;": "\u0414", + "Del;": "\u2207", + "Delta;": "\u0394", + "Dfr;": "\U0001d507", + "DiacriticalAcute;": "\xb4", + "DiacriticalDot;": "\u02d9", + "DiacriticalDoubleAcute;": "\u02dd", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "\u02dc", + "Diamond;": "\u22c4", + "DifferentialD;": "\u2146", + "Dopf;": "\U0001d53b", + "Dot;": "\xa8", + "DotDot;": "\u20dc", + "DotEqual;": "\u2250", + "DoubleContourIntegral;": "\u222f", + "DoubleDot;": "\xa8", + "DoubleDownArrow;": "\u21d3", + "DoubleLeftArrow;": "\u21d0", + "DoubleLeftRightArrow;": "\u21d4", + "DoubleLeftTee;": "\u2ae4", + "DoubleLongLeftArrow;": "\u27f8", + "DoubleLongLeftRightArrow;": "\u27fa", + "DoubleLongRightArrow;": "\u27f9", + "DoubleRightArrow;": "\u21d2", + "DoubleRightTee;": "\u22a8", + "DoubleUpArrow;": "\u21d1", + "DoubleUpDownArrow;": "\u21d5", + "DoubleVerticalBar;": "\u2225", + "DownArrow;": "\u2193", + "DownArrowBar;": "\u2913", + "DownArrowUpArrow;": "\u21f5", + "DownBreve;": "\u0311", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295e", + "DownLeftVector;": "\u21bd", + "DownLeftVectorBar;": "\u2956", + "DownRightTeeVector;": "\u295f", + "DownRightVector;": "\u21c1", + "DownRightVectorBar;": "\u2957", + "DownTee;": "\u22a4", + "DownTeeArrow;": "\u21a7", + "Downarrow;": "\u21d3", + "Dscr;": "\U0001d49f", + "Dstrok;": "\u0110", + "ENG;": "\u014a", + "ETH": "\xd0", + "ETH;": "\xd0", + "Eacute": "\xc9", + "Eacute;": "\xc9", + "Ecaron;": "\u011a", + "Ecirc": "\xca", + "Ecirc;": "\xca", + "Ecy;": "\u042d", + "Edot;": "\u0116", + "Efr;": "\U0001d508", + "Egrave": "\xc8", + "Egrave;": "\xc8", + "Element;": "\u2208", + "Emacr;": "\u0112", + "EmptySmallSquare;": "\u25fb", + "EmptyVerySmallSquare;": "\u25ab", + "Eogon;": "\u0118", + "Eopf;": "\U0001d53c", + "Epsilon;": "\u0395", + "Equal;": "\u2a75", + "EqualTilde;": "\u2242", + "Equilibrium;": "\u21cc", + "Escr;": "\u2130", + "Esim;": "\u2a73", + "Eta;": "\u0397", + "Euml": "\xcb", + "Euml;": "\xcb", + "Exists;": "\u2203", + "ExponentialE;": "\u2147", + "Fcy;": "\u0424", + "Ffr;": "\U0001d509", + "FilledSmallSquare;": "\u25fc", + "FilledVerySmallSquare;": "\u25aa", + "Fopf;": "\U0001d53d", + "ForAll;": "\u2200", + "Fouriertrf;": "\u2131", + "Fscr;": "\u2131", + "GJcy;": "\u0403", + "GT": ">", + "GT;": ">", + "Gamma;": "\u0393", + "Gammad;": "\u03dc", + "Gbreve;": "\u011e", + "Gcedil;": "\u0122", + "Gcirc;": "\u011c", + "Gcy;": "\u0413", + "Gdot;": "\u0120", + "Gfr;": "\U0001d50a", + "Gg;": "\u22d9", + "Gopf;": "\U0001d53e", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22db", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2aa2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2a7e", + "GreaterTilde;": "\u2273", + "Gscr;": "\U0001d4a2", + "Gt;": "\u226b", + "HARDcy;": "\u042a", + "Hacek;": "\u02c7", + "Hat;": "^", + "Hcirc;": "\u0124", + "Hfr;": "\u210c", + "HilbertSpace;": "\u210b", + "Hopf;": "\u210d", + "HorizontalLine;": "\u2500", + "Hscr;": "\u210b", + "Hstrok;": "\u0126", + "HumpDownHump;": "\u224e", + "HumpEqual;": "\u224f", + "IEcy;": "\u0415", + "IJlig;": "\u0132", + "IOcy;": "\u0401", + "Iacute": "\xcd", + "Iacute;": "\xcd", + "Icirc": "\xce", + "Icirc;": "\xce", + "Icy;": "\u0418", + "Idot;": "\u0130", + "Ifr;": "\u2111", + "Igrave": "\xcc", + "Igrave;": "\xcc", + "Im;": "\u2111", + "Imacr;": "\u012a", + "ImaginaryI;": "\u2148", + "Implies;": "\u21d2", + "Int;": "\u222c", + "Integral;": "\u222b", + "Intersection;": "\u22c2", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "Iogon;": "\u012e", + "Iopf;": "\U0001d540", + "Iota;": "\u0399", + "Iscr;": "\u2110", + "Itilde;": "\u0128", + "Iukcy;": "\u0406", + "Iuml": "\xcf", + "Iuml;": "\xcf", + "Jcirc;": "\u0134", + "Jcy;": "\u0419", + "Jfr;": "\U0001d50d", + "Jopf;": "\U0001d541", + "Jscr;": "\U0001d4a5", + "Jsercy;": "\u0408", + "Jukcy;": "\u0404", + "KHcy;": "\u0425", + "KJcy;": "\u040c", + "Kappa;": "\u039a", + "Kcedil;": "\u0136", + "Kcy;": "\u041a", + "Kfr;": "\U0001d50e", + "Kopf;": "\U0001d542", + "Kscr;": "\U0001d4a6", + "LJcy;": "\u0409", + "LT": "<", + "LT;": "<", + "Lacute;": "\u0139", + "Lambda;": "\u039b", + "Lang;": "\u27ea", + "Laplacetrf;": "\u2112", + "Larr;": "\u219e", + "Lcaron;": "\u013d", + "Lcedil;": "\u013b", + "Lcy;": "\u041b", + "LeftAngleBracket;": "\u27e8", + "LeftArrow;": "\u2190", + "LeftArrowBar;": "\u21e4", + "LeftArrowRightArrow;": "\u21c6", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27e6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVector;": "\u21c3", + "LeftDownVectorBar;": "\u2959", + "LeftFloor;": "\u230a", + "LeftRightArrow;": "\u2194", + "LeftRightVector;": "\u294e", + "LeftTee;": "\u22a3", + "LeftTeeArrow;": "\u21a4", + "LeftTeeVector;": "\u295a", + "LeftTriangle;": "\u22b2", + "LeftTriangleBar;": "\u29cf", + "LeftTriangleEqual;": "\u22b4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVector;": "\u21bf", + "LeftUpVectorBar;": "\u2958", + "LeftVector;": "\u21bc", + "LeftVectorBar;": "\u2952", + "Leftarrow;": "\u21d0", + "Leftrightarrow;": "\u21d4", + "LessEqualGreater;": "\u22da", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "LessLess;": "\u2aa1", + "LessSlantEqual;": "\u2a7d", + "LessTilde;": "\u2272", + "Lfr;": "\U0001d50f", + "Ll;": "\u22d8", + "Lleftarrow;": "\u21da", + "Lmidot;": "\u013f", + "LongLeftArrow;": "\u27f5", + "LongLeftRightArrow;": "\u27f7", + "LongRightArrow;": "\u27f6", + "Longleftarrow;": "\u27f8", + "Longleftrightarrow;": "\u27fa", + "Longrightarrow;": "\u27f9", + "Lopf;": "\U0001d543", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "Lscr;": "\u2112", + "Lsh;": "\u21b0", + "Lstrok;": "\u0141", + "Lt;": "\u226a", + "Map;": "\u2905", + "Mcy;": "\u041c", + "MediumSpace;": "\u205f", + "Mellintrf;": "\u2133", + "Mfr;": "\U0001d510", + "MinusPlus;": "\u2213", + "Mopf;": "\U0001d544", + "Mscr;": "\u2133", + "Mu;": "\u039c", + "NJcy;": "\u040a", + "Nacute;": "\u0143", + "Ncaron;": "\u0147", + "Ncedil;": "\u0145", + "Ncy;": "\u041d", + "NegativeMediumSpace;": "\u200b", + "NegativeThickSpace;": "\u200b", + "NegativeThinSpace;": "\u200b", + "NegativeVeryThinSpace;": "\u200b", + "NestedGreaterGreater;": "\u226b", + "NestedLessLess;": "\u226a", + "NewLine;": "\n", + "Nfr;": "\U0001d511", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\xa0", + "Nopf;": "\u2115", + "Not;": "\u2aec", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226d", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226f", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226b\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2a7e\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224e\u0338", + "NotHumpEqual;": "\u224f\u0338", + "NotLeftTriangle;": "\u22ea", + "NotLeftTriangleBar;": "\u29cf\u0338", + "NotLeftTriangleEqual;": "\u22ec", + "NotLess;": "\u226e", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226a\u0338", + "NotLessSlantEqual;": "\u2a7d\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2aa2\u0338", + "NotNestedLessLess;": "\u2aa1\u0338", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2aaf\u0338", + "NotPrecedesSlantEqual;": "\u22e0", + "NotReverseElement;": "\u220c", + "NotRightTriangle;": "\u22eb", + "NotRightTriangleBar;": "\u29d0\u0338", + "NotRightTriangleEqual;": "\u22ed", + "NotSquareSubset;": "\u228f\u0338", + "NotSquareSubsetEqual;": "\u22e2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22e3", + "NotSubset;": "\u2282\u20d2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2ab0\u0338", + "NotSucceedsSlantEqual;": "\u22e1", + "NotSucceedsTilde;": "\u227f\u0338", + "NotSuperset;": "\u2283\u20d2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "Nscr;": "\U0001d4a9", + "Ntilde": "\xd1", + "Ntilde;": "\xd1", + "Nu;": "\u039d", + "OElig;": "\u0152", + "Oacute": "\xd3", + "Oacute;": "\xd3", + "Ocirc": "\xd4", + "Ocirc;": "\xd4", + "Ocy;": "\u041e", + "Odblac;": "\u0150", + "Ofr;": "\U0001d512", + "Ograve": "\xd2", + "Ograve;": "\xd2", + "Omacr;": "\u014c", + "Omega;": "\u03a9", + "Omicron;": "\u039f", + "Oopf;": "\U0001d546", + "OpenCurlyDoubleQuote;": "\u201c", + "OpenCurlyQuote;": "\u2018", + "Or;": "\u2a54", + "Oscr;": "\U0001d4aa", + "Oslash": "\xd8", + "Oslash;": "\xd8", + "Otilde": "\xd5", + "Otilde;": "\xd5", + "Otimes;": "\u2a37", + "Ouml": "\xd6", + "Ouml;": "\xd6", + "OverBar;": "\u203e", + "OverBrace;": "\u23de", + "OverBracket;": "\u23b4", + "OverParenthesis;": "\u23dc", + "PartialD;": "\u2202", + "Pcy;": "\u041f", + "Pfr;": "\U0001d513", + "Phi;": "\u03a6", + "Pi;": "\u03a0", + "PlusMinus;": "\xb1", + "Poincareplane;": "\u210c", + "Popf;": "\u2119", + "Pr;": "\u2abb", + "Precedes;": "\u227a", + "PrecedesEqual;": "\u2aaf", + "PrecedesSlantEqual;": "\u227c", + "PrecedesTilde;": "\u227e", + "Prime;": "\u2033", + "Product;": "\u220f", + "Proportion;": "\u2237", + "Proportional;": "\u221d", + "Pscr;": "\U0001d4ab", + "Psi;": "\u03a8", + "QUOT": "\"", + "QUOT;": "\"", + "Qfr;": "\U0001d514", + "Qopf;": "\u211a", + "Qscr;": "\U0001d4ac", + "RBarr;": "\u2910", + "REG": "\xae", + "REG;": "\xae", + "Racute;": "\u0154", + "Rang;": "\u27eb", + "Rarr;": "\u21a0", + "Rarrtl;": "\u2916", + "Rcaron;": "\u0158", + "Rcedil;": "\u0156", + "Rcy;": "\u0420", + "Re;": "\u211c", + "ReverseElement;": "\u220b", + "ReverseEquilibrium;": "\u21cb", + "ReverseUpEquilibrium;": "\u296f", + "Rfr;": "\u211c", + "Rho;": "\u03a1", + "RightAngleBracket;": "\u27e9", + "RightArrow;": "\u2192", + "RightArrowBar;": "\u21e5", + "RightArrowLeftArrow;": "\u21c4", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27e7", + "RightDownTeeVector;": "\u295d", + "RightDownVector;": "\u21c2", + "RightDownVectorBar;": "\u2955", + "RightFloor;": "\u230b", + "RightTee;": "\u22a2", + "RightTeeArrow;": "\u21a6", + "RightTeeVector;": "\u295b", + "RightTriangle;": "\u22b3", + "RightTriangleBar;": "\u29d0", + "RightTriangleEqual;": "\u22b5", + "RightUpDownVector;": "\u294f", + "RightUpTeeVector;": "\u295c", + "RightUpVector;": "\u21be", + "RightUpVectorBar;": "\u2954", + "RightVector;": "\u21c0", + "RightVectorBar;": "\u2953", + "Rightarrow;": "\u21d2", + "Ropf;": "\u211d", + "RoundImplies;": "\u2970", + "Rrightarrow;": "\u21db", + "Rscr;": "\u211b", + "Rsh;": "\u21b1", + "RuleDelayed;": "\u29f4", + "SHCHcy;": "\u0429", + "SHcy;": "\u0428", + "SOFTcy;": "\u042c", + "Sacute;": "\u015a", + "Sc;": "\u2abc", + "Scaron;": "\u0160", + "Scedil;": "\u015e", + "Scirc;": "\u015c", + "Scy;": "\u0421", + "Sfr;": "\U0001d516", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "Sigma;": "\u03a3", + "SmallCircle;": "\u2218", + "Sopf;": "\U0001d54a", + "Sqrt;": "\u221a", + "Square;": "\u25a1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228f", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "Sscr;": "\U0001d4ae", + "Star;": "\u22c6", + "Sub;": "\u22d0", + "Subset;": "\u22d0", + "SubsetEqual;": "\u2286", + "Succeeds;": "\u227b", + "SucceedsEqual;": "\u2ab0", + "SucceedsSlantEqual;": "\u227d", + "SucceedsTilde;": "\u227f", + "SuchThat;": "\u220b", + "Sum;": "\u2211", + "Sup;": "\u22d1", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "Supset;": "\u22d1", + "THORN": "\xde", + "THORN;": "\xde", + "TRADE;": "\u2122", + "TSHcy;": "\u040b", + "TScy;": "\u0426", + "Tab;": "\t", + "Tau;": "\u03a4", + "Tcaron;": "\u0164", + "Tcedil;": "\u0162", + "Tcy;": "\u0422", + "Tfr;": "\U0001d517", + "Therefore;": "\u2234", + "Theta;": "\u0398", + "ThickSpace;": "\u205f\u200a", + "ThinSpace;": "\u2009", + "Tilde;": "\u223c", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "Topf;": "\U0001d54b", + "TripleDot;": "\u20db", + "Tscr;": "\U0001d4af", + "Tstrok;": "\u0166", + "Uacute": "\xda", + "Uacute;": "\xda", + "Uarr;": "\u219f", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040e", + "Ubreve;": "\u016c", + "Ucirc": "\xdb", + "Ucirc;": "\xdb", + "Ucy;": "\u0423", + "Udblac;": "\u0170", + "Ufr;": "\U0001d518", + "Ugrave": "\xd9", + "Ugrave;": "\xd9", + "Umacr;": "\u016a", + "UnderBar;": "_", + "UnderBrace;": "\u23df", + "UnderBracket;": "\u23b5", + "UnderParenthesis;": "\u23dd", + "Union;": "\u22c3", + "UnionPlus;": "\u228e", + "Uogon;": "\u0172", + "Uopf;": "\U0001d54c", + "UpArrow;": "\u2191", + "UpArrowBar;": "\u2912", + "UpArrowDownArrow;": "\u21c5", + "UpDownArrow;": "\u2195", + "UpEquilibrium;": "\u296e", + "UpTee;": "\u22a5", + "UpTeeArrow;": "\u21a5", + "Uparrow;": "\u21d1", + "Updownarrow;": "\u21d5", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "Upsi;": "\u03d2", + "Upsilon;": "\u03a5", + "Uring;": "\u016e", + "Uscr;": "\U0001d4b0", + "Utilde;": "\u0168", + "Uuml": "\xdc", + "Uuml;": "\xdc", + "VDash;": "\u22ab", + "Vbar;": "\u2aeb", + "Vcy;": "\u0412", + "Vdash;": "\u22a9", + "Vdashl;": "\u2ae6", + "Vee;": "\u22c1", + "Verbar;": "\u2016", + "Vert;": "\u2016", + "VerticalBar;": "\u2223", + "VerticalLine;": "|", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200a", + "Vfr;": "\U0001d519", + "Vopf;": "\U0001d54d", + "Vscr;": "\U0001d4b1", + "Vvdash;": "\u22aa", + "Wcirc;": "\u0174", + "Wedge;": "\u22c0", + "Wfr;": "\U0001d51a", + "Wopf;": "\U0001d54e", + "Wscr;": "\U0001d4b2", + "Xfr;": "\U0001d51b", + "Xi;": "\u039e", + "Xopf;": "\U0001d54f", + "Xscr;": "\U0001d4b3", + "YAcy;": "\u042f", + "YIcy;": "\u0407", + "YUcy;": "\u042e", + "Yacute": "\xdd", + "Yacute;": "\xdd", + "Ycirc;": "\u0176", + "Ycy;": "\u042b", + "Yfr;": "\U0001d51c", + "Yopf;": "\U0001d550", + "Yscr;": "\U0001d4b4", + "Yuml;": "\u0178", + "ZHcy;": "\u0416", + "Zacute;": "\u0179", + "Zcaron;": "\u017d", + "Zcy;": "\u0417", + "Zdot;": "\u017b", + "ZeroWidthSpace;": "\u200b", + "Zeta;": "\u0396", + "Zfr;": "\u2128", + "Zopf;": "\u2124", + "Zscr;": "\U0001d4b5", + "aacute": "\xe1", + "aacute;": "\xe1", + "abreve;": "\u0103", + "ac;": "\u223e", + "acE;": "\u223e\u0333", + "acd;": "\u223f", + "acirc": "\xe2", + "acirc;": "\xe2", + "acute": "\xb4", + "acute;": "\xb4", + "acy;": "\u0430", + "aelig": "\xe6", + "aelig;": "\xe6", + "af;": "\u2061", + "afr;": "\U0001d51e", + "agrave": "\xe0", + "agrave;": "\xe0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "alpha;": "\u03b1", + "amacr;": "\u0101", + "amalg;": "\u2a3f", + "amp": "&", + "amp;": "&", + "and;": "\u2227", + "andand;": "\u2a55", + "andd;": "\u2a5c", + "andslope;": "\u2a58", + "andv;": "\u2a5a", + "ang;": "\u2220", + "ange;": "\u29a4", + "angle;": "\u2220", + "angmsd;": "\u2221", + "angmsdaa;": "\u29a8", + "angmsdab;": "\u29a9", + "angmsdac;": "\u29aa", + "angmsdad;": "\u29ab", + "angmsdae;": "\u29ac", + "angmsdaf;": "\u29ad", + "angmsdag;": "\u29ae", + "angmsdah;": "\u29af", + "angrt;": "\u221f", + "angrtvb;": "\u22be", + "angrtvbd;": "\u299d", + "angsph;": "\u2222", + "angst;": "\xc5", + "angzarr;": "\u237c", + "aogon;": "\u0105", + "aopf;": "\U0001d552", + "ap;": "\u2248", + "apE;": "\u2a70", + "apacir;": "\u2a6f", + "ape;": "\u224a", + "apid;": "\u224b", + "apos;": "'", + "approx;": "\u2248", + "approxeq;": "\u224a", + "aring": "\xe5", + "aring;": "\xe5", + "ascr;": "\U0001d4b6", + "ast;": "*", + "asymp;": "\u2248", + "asympeq;": "\u224d", + "atilde": "\xe3", + "atilde;": "\xe3", + "auml": "\xe4", + "auml;": "\xe4", + "awconint;": "\u2233", + "awint;": "\u2a11", + "bNot;": "\u2aed", + "backcong;": "\u224c", + "backepsilon;": "\u03f6", + "backprime;": "\u2035", + "backsim;": "\u223d", + "backsimeq;": "\u22cd", + "barvee;": "\u22bd", + "barwed;": "\u2305", + "barwedge;": "\u2305", + "bbrk;": "\u23b5", + "bbrktbrk;": "\u23b6", + "bcong;": "\u224c", + "bcy;": "\u0431", + "bdquo;": "\u201e", + "becaus;": "\u2235", + "because;": "\u2235", + "bemptyv;": "\u29b0", + "bepsi;": "\u03f6", + "bernou;": "\u212c", + "beta;": "\u03b2", + "beth;": "\u2136", + "between;": "\u226c", + "bfr;": "\U0001d51f", + "bigcap;": "\u22c2", + "bigcirc;": "\u25ef", + "bigcup;": "\u22c3", + "bigodot;": "\u2a00", + "bigoplus;": "\u2a01", + "bigotimes;": "\u2a02", + "bigsqcup;": "\u2a06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25bd", + "bigtriangleup;": "\u25b3", + "biguplus;": "\u2a04", + "bigvee;": "\u22c1", + "bigwedge;": "\u22c0", + "bkarow;": "\u290d", + "blacklozenge;": "\u29eb", + "blacksquare;": "\u25aa", + "blacktriangle;": "\u25b4", + "blacktriangledown;": "\u25be", + "blacktriangleleft;": "\u25c2", + "blacktriangleright;": "\u25b8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "=\u20e5", + "bnequiv;": "\u2261\u20e5", + "bnot;": "\u2310", + "bopf;": "\U0001d553", + "bot;": "\u22a5", + "bottom;": "\u22a5", + "bowtie;": "\u22c8", + "boxDL;": "\u2557", + "boxDR;": "\u2554", + "boxDl;": "\u2556", + "boxDr;": "\u2553", + "boxH;": "\u2550", + "boxHD;": "\u2566", + "boxHU;": "\u2569", + "boxHd;": "\u2564", + "boxHu;": "\u2567", + "boxUL;": "\u255d", + "boxUR;": "\u255a", + "boxUl;": "\u255c", + "boxUr;": "\u2559", + "boxV;": "\u2551", + "boxVH;": "\u256c", + "boxVL;": "\u2563", + "boxVR;": "\u2560", + "boxVh;": "\u256b", + "boxVl;": "\u2562", + "boxVr;": "\u255f", + "boxbox;": "\u29c9", + "boxdL;": "\u2555", + "boxdR;": "\u2552", + "boxdl;": "\u2510", + "boxdr;": "\u250c", + "boxh;": "\u2500", + "boxhD;": "\u2565", + "boxhU;": "\u2568", + "boxhd;": "\u252c", + "boxhu;": "\u2534", + "boxminus;": "\u229f", + "boxplus;": "\u229e", + "boxtimes;": "\u22a0", + "boxuL;": "\u255b", + "boxuR;": "\u2558", + "boxul;": "\u2518", + "boxur;": "\u2514", + "boxv;": "\u2502", + "boxvH;": "\u256a", + "boxvL;": "\u2561", + "boxvR;": "\u255e", + "boxvh;": "\u253c", + "boxvl;": "\u2524", + "boxvr;": "\u251c", + "bprime;": "\u2035", + "breve;": "\u02d8", + "brvbar": "\xa6", + "brvbar;": "\xa6", + "bscr;": "\U0001d4b7", + "bsemi;": "\u204f", + "bsim;": "\u223d", + "bsime;": "\u22cd", + "bsol;": "\\", + "bsolb;": "\u29c5", + "bsolhsub;": "\u27c8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224e", + "bumpE;": "\u2aae", + "bumpe;": "\u224f", + "bumpeq;": "\u224f", + "cacute;": "\u0107", + "cap;": "\u2229", + "capand;": "\u2a44", + "capbrcup;": "\u2a49", + "capcap;": "\u2a4b", + "capcup;": "\u2a47", + "capdot;": "\u2a40", + "caps;": "\u2229\ufe00", + "caret;": "\u2041", + "caron;": "\u02c7", + "ccaps;": "\u2a4d", + "ccaron;": "\u010d", + "ccedil": "\xe7", + "ccedil;": "\xe7", + "ccirc;": "\u0109", + "ccups;": "\u2a4c", + "ccupssm;": "\u2a50", + "cdot;": "\u010b", + "cedil": "\xb8", + "cedil;": "\xb8", + "cemptyv;": "\u29b2", + "cent": "\xa2", + "cent;": "\xa2", + "centerdot;": "\xb7", + "cfr;": "\U0001d520", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "chi;": "\u03c7", + "cir;": "\u25cb", + "cirE;": "\u29c3", + "circ;": "\u02c6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21ba", + "circlearrowright;": "\u21bb", + "circledR;": "\xae", + "circledS;": "\u24c8", + "circledast;": "\u229b", + "circledcirc;": "\u229a", + "circleddash;": "\u229d", + "cire;": "\u2257", + "cirfnint;": "\u2a10", + "cirmid;": "\u2aef", + "cirscir;": "\u29c2", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "colon;": ":", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": ",", + "commat;": "@", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2a6d", + "conint;": "\u222e", + "copf;": "\U0001d554", + "coprod;": "\u2210", + "copy": "\xa9", + "copy;": "\xa9", + "copysr;": "\u2117", + "crarr;": "\u21b5", + "cross;": "\u2717", + "cscr;": "\U0001d4b8", + "csub;": "\u2acf", + "csube;": "\u2ad1", + "csup;": "\u2ad0", + "csupe;": "\u2ad2", + "ctdot;": "\u22ef", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22de", + "cuesc;": "\u22df", + "cularr;": "\u21b6", + "cularrp;": "\u293d", + "cup;": "\u222a", + "cupbrcap;": "\u2a48", + "cupcap;": "\u2a46", + "cupcup;": "\u2a4a", + "cupdot;": "\u228d", + "cupor;": "\u2a45", + "cups;": "\u222a\ufe00", + "curarr;": "\u21b7", + "curarrm;": "\u293c", + "curlyeqprec;": "\u22de", + "curlyeqsucc;": "\u22df", + "curlyvee;": "\u22ce", + "curlywedge;": "\u22cf", + "curren": "\xa4", + "curren;": "\xa4", + "curvearrowleft;": "\u21b6", + "curvearrowright;": "\u21b7", + "cuvee;": "\u22ce", + "cuwed;": "\u22cf", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232d", + "dArr;": "\u21d3", + "dHar;": "\u2965", + "dagger;": "\u2020", + "daleth;": "\u2138", + "darr;": "\u2193", + "dash;": "\u2010", + "dashv;": "\u22a3", + "dbkarow;": "\u290f", + "dblac;": "\u02dd", + "dcaron;": "\u010f", + "dcy;": "\u0434", + "dd;": "\u2146", + "ddagger;": "\u2021", + "ddarr;": "\u21ca", + "ddotseq;": "\u2a77", + "deg": "\xb0", + "deg;": "\xb0", + "delta;": "\u03b4", + "demptyv;": "\u29b1", + "dfisht;": "\u297f", + "dfr;": "\U0001d521", + "dharl;": "\u21c3", + "dharr;": "\u21c2", + "diam;": "\u22c4", + "diamond;": "\u22c4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\xa8", + "digamma;": "\u03dd", + "disin;": "\u22f2", + "div;": "\xf7", + "divide": "\xf7", + "divide;": "\xf7", + "divideontimes;": "\u22c7", + "divonx;": "\u22c7", + "djcy;": "\u0452", + "dlcorn;": "\u231e", + "dlcrop;": "\u230d", + "dollar;": "$", + "dopf;": "\U0001d555", + "dot;": "\u02d9", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22a1", + "doublebarwedge;": "\u2306", + "downarrow;": "\u2193", + "downdownarrows;": "\u21ca", + "downharpoonleft;": "\u21c3", + "downharpoonright;": "\u21c2", + "drbkarow;": "\u2910", + "drcorn;": "\u231f", + "drcrop;": "\u230c", + "dscr;": "\U0001d4b9", + "dscy;": "\u0455", + "dsol;": "\u29f6", + "dstrok;": "\u0111", + "dtdot;": "\u22f1", + "dtri;": "\u25bf", + "dtrif;": "\u25be", + "duarr;": "\u21f5", + "duhar;": "\u296f", + "dwangle;": "\u29a6", + "dzcy;": "\u045f", + "dzigrarr;": "\u27ff", + "eDDot;": "\u2a77", + "eDot;": "\u2251", + "eacute": "\xe9", + "eacute;": "\xe9", + "easter;": "\u2a6e", + "ecaron;": "\u011b", + "ecir;": "\u2256", + "ecirc": "\xea", + "ecirc;": "\xea", + "ecolon;": "\u2255", + "ecy;": "\u044d", + "edot;": "\u0117", + "ee;": "\u2147", + "efDot;": "\u2252", + "efr;": "\U0001d522", + "eg;": "\u2a9a", + "egrave": "\xe8", + "egrave;": "\xe8", + "egs;": "\u2a96", + "egsdot;": "\u2a98", + "el;": "\u2a99", + "elinters;": "\u23e7", + "ell;": "\u2113", + "els;": "\u2a95", + "elsdot;": "\u2a97", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "emptyv;": "\u2205", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "emsp;": "\u2003", + "eng;": "\u014b", + "ensp;": "\u2002", + "eogon;": "\u0119", + "eopf;": "\U0001d556", + "epar;": "\u22d5", + "eparsl;": "\u29e3", + "eplus;": "\u2a71", + "epsi;": "\u03b5", + "epsilon;": "\u03b5", + "epsiv;": "\u03f5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2a96", + "eqslantless;": "\u2a95", + "equals;": "=", + "equest;": "\u225f", + "equiv;": "\u2261", + "equivDD;": "\u2a78", + "eqvparsl;": "\u29e5", + "erDot;": "\u2253", + "erarr;": "\u2971", + "escr;": "\u212f", + "esdot;": "\u2250", + "esim;": "\u2242", + "eta;": "\u03b7", + "eth": "\xf0", + "eth;": "\xf0", + "euml": "\xeb", + "euml;": "\xeb", + "euro;": "\u20ac", + "excl;": "!", + "exist;": "\u2203", + "expectation;": "\u2130", + "exponentiale;": "\u2147", + "fallingdotseq;": "\u2252", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\ufb03", + "fflig;": "\ufb00", + "ffllig;": "\ufb04", + "ffr;": "\U0001d523", + "filig;": "\ufb01", + "fjlig;": "fj", + "flat;": "\u266d", + "fllig;": "\ufb02", + "fltns;": "\u25b1", + "fnof;": "\u0192", + "fopf;": "\U0001d557", + "forall;": "\u2200", + "fork;": "\u22d4", + "forkv;": "\u2ad9", + "fpartint;": "\u2a0d", + "frac12": "\xbd", + "frac12;": "\xbd", + "frac13;": "\u2153", + "frac14": "\xbc", + "frac14;": "\xbc", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215b", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34": "\xbe", + "frac34;": "\xbe", + "frac35;": "\u2157", + "frac38;": "\u215c", + "frac45;": "\u2158", + "frac56;": "\u215a", + "frac58;": "\u215d", + "frac78;": "\u215e", + "frasl;": "\u2044", + "frown;": "\u2322", + "fscr;": "\U0001d4bb", + "gE;": "\u2267", + "gEl;": "\u2a8c", + "gacute;": "\u01f5", + "gamma;": "\u03b3", + "gammad;": "\u03dd", + "gap;": "\u2a86", + "gbreve;": "\u011f", + "gcirc;": "\u011d", + "gcy;": "\u0433", + "gdot;": "\u0121", + "ge;": "\u2265", + "gel;": "\u22db", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2a7e", + "ges;": "\u2a7e", + "gescc;": "\u2aa9", + "gesdot;": "\u2a80", + "gesdoto;": "\u2a82", + "gesdotol;": "\u2a84", + "gesl;": "\u22db\ufe00", + "gesles;": "\u2a94", + "gfr;": "\U0001d524", + "gg;": "\u226b", + "ggg;": "\u22d9", + "gimel;": "\u2137", + "gjcy;": "\u0453", + "gl;": "\u2277", + "glE;": "\u2a92", + "gla;": "\u2aa5", + "glj;": "\u2aa4", + "gnE;": "\u2269", + "gnap;": "\u2a8a", + "gnapprox;": "\u2a8a", + "gne;": "\u2a88", + "gneq;": "\u2a88", + "gneqq;": "\u2269", + "gnsim;": "\u22e7", + "gopf;": "\U0001d558", + "grave;": "`", + "gscr;": "\u210a", + "gsim;": "\u2273", + "gsime;": "\u2a8e", + "gsiml;": "\u2a90", + "gt": ">", + "gt;": ">", + "gtcc;": "\u2aa7", + "gtcir;": "\u2a7a", + "gtdot;": "\u22d7", + "gtlPar;": "\u2995", + "gtquest;": "\u2a7c", + "gtrapprox;": "\u2a86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22d7", + "gtreqless;": "\u22db", + "gtreqqless;": "\u2a8c", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\ufe00", + "gvnE;": "\u2269\ufe00", + "hArr;": "\u21d4", + "hairsp;": "\u200a", + "half;": "\xbd", + "hamilt;": "\u210b", + "hardcy;": "\u044a", + "harr;": "\u2194", + "harrcir;": "\u2948", + "harrw;": "\u21ad", + "hbar;": "\u210f", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22b9", + "hfr;": "\U0001d525", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21ff", + "homtht;": "\u223b", + "hookleftarrow;": "\u21a9", + "hookrightarrow;": "\u21aa", + "hopf;": "\U0001d559", + "horbar;": "\u2015", + "hscr;": "\U0001d4bd", + "hslash;": "\u210f", + "hstrok;": "\u0127", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "iacute": "\xed", + "iacute;": "\xed", + "ic;": "\u2063", + "icirc": "\xee", + "icirc;": "\xee", + "icy;": "\u0438", + "iecy;": "\u0435", + "iexcl": "\xa1", + "iexcl;": "\xa1", + "iff;": "\u21d4", + "ifr;": "\U0001d526", + "igrave": "\xec", + "igrave;": "\xec", + "ii;": "\u2148", + "iiiint;": "\u2a0c", + "iiint;": "\u222d", + "iinfin;": "\u29dc", + "iiota;": "\u2129", + "ijlig;": "\u0133", + "imacr;": "\u012b", + "image;": "\u2111", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "imof;": "\u22b7", + "imped;": "\u01b5", + "in;": "\u2208", + "incare;": "\u2105", + "infin;": "\u221e", + "infintie;": "\u29dd", + "inodot;": "\u0131", + "int;": "\u222b", + "intcal;": "\u22ba", + "integers;": "\u2124", + "intercal;": "\u22ba", + "intlarhk;": "\u2a17", + "intprod;": "\u2a3c", + "iocy;": "\u0451", + "iogon;": "\u012f", + "iopf;": "\U0001d55a", + "iota;": "\u03b9", + "iprod;": "\u2a3c", + "iquest": "\xbf", + "iquest;": "\xbf", + "iscr;": "\U0001d4be", + "isin;": "\u2208", + "isinE;": "\u22f9", + "isindot;": "\u22f5", + "isins;": "\u22f4", + "isinsv;": "\u22f3", + "isinv;": "\u2208", + "it;": "\u2062", + "itilde;": "\u0129", + "iukcy;": "\u0456", + "iuml": "\xef", + "iuml;": "\xef", + "jcirc;": "\u0135", + "jcy;": "\u0439", + "jfr;": "\U0001d527", + "jmath;": "\u0237", + "jopf;": "\U0001d55b", + "jscr;": "\U0001d4bf", + "jsercy;": "\u0458", + "jukcy;": "\u0454", + "kappa;": "\u03ba", + "kappav;": "\u03f0", + "kcedil;": "\u0137", + "kcy;": "\u043a", + "kfr;": "\U0001d528", + "kgreen;": "\u0138", + "khcy;": "\u0445", + "kjcy;": "\u045c", + "kopf;": "\U0001d55c", + "kscr;": "\U0001d4c0", + "lAarr;": "\u21da", + "lArr;": "\u21d0", + "lAtail;": "\u291b", + "lBarr;": "\u290e", + "lE;": "\u2266", + "lEg;": "\u2a8b", + "lHar;": "\u2962", + "lacute;": "\u013a", + "laemptyv;": "\u29b4", + "lagran;": "\u2112", + "lambda;": "\u03bb", + "lang;": "\u27e8", + "langd;": "\u2991", + "langle;": "\u27e8", + "lap;": "\u2a85", + "laquo": "\xab", + "laquo;": "\xab", + "larr;": "\u2190", + "larrb;": "\u21e4", + "larrbfs;": "\u291f", + "larrfs;": "\u291d", + "larrhk;": "\u21a9", + "larrlp;": "\u21ab", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21a2", + "lat;": "\u2aab", + "latail;": "\u2919", + "late;": "\u2aad", + "lates;": "\u2aad\ufe00", + "lbarr;": "\u290c", + "lbbrk;": "\u2772", + "lbrace;": "{", + "lbrack;": "[", + "lbrke;": "\u298b", + "lbrksld;": "\u298f", + "lbrkslu;": "\u298d", + "lcaron;": "\u013e", + "lcedil;": "\u013c", + "lceil;": "\u2308", + "lcub;": "{", + "lcy;": "\u043b", + "ldca;": "\u2936", + "ldquo;": "\u201c", + "ldquor;": "\u201e", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294b", + "ldsh;": "\u21b2", + "le;": "\u2264", + "leftarrow;": "\u2190", + "leftarrowtail;": "\u21a2", + "leftharpoondown;": "\u21bd", + "leftharpoonup;": "\u21bc", + "leftleftarrows;": "\u21c7", + "leftrightarrow;": "\u2194", + "leftrightarrows;": "\u21c6", + "leftrightharpoons;": "\u21cb", + "leftrightsquigarrow;": "\u21ad", + "leftthreetimes;": "\u22cb", + "leg;": "\u22da", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2a7d", + "les;": "\u2a7d", + "lescc;": "\u2aa8", + "lesdot;": "\u2a7f", + "lesdoto;": "\u2a81", + "lesdotor;": "\u2a83", + "lesg;": "\u22da\ufe00", + "lesges;": "\u2a93", + "lessapprox;": "\u2a85", + "lessdot;": "\u22d6", + "lesseqgtr;": "\u22da", + "lesseqqgtr;": "\u2a8b", + "lessgtr;": "\u2276", + "lesssim;": "\u2272", + "lfisht;": "\u297c", + "lfloor;": "\u230a", + "lfr;": "\U0001d529", + "lg;": "\u2276", + "lgE;": "\u2a91", + "lhard;": "\u21bd", + "lharu;": "\u21bc", + "lharul;": "\u296a", + "lhblk;": "\u2584", + "ljcy;": "\u0459", + "ll;": "\u226a", + "llarr;": "\u21c7", + "llcorner;": "\u231e", + "llhard;": "\u296b", + "lltri;": "\u25fa", + "lmidot;": "\u0140", + "lmoust;": "\u23b0", + "lmoustache;": "\u23b0", + "lnE;": "\u2268", + "lnap;": "\u2a89", + "lnapprox;": "\u2a89", + "lne;": "\u2a87", + "lneq;": "\u2a87", + "lneqq;": "\u2268", + "lnsim;": "\u22e6", + "loang;": "\u27ec", + "loarr;": "\u21fd", + "lobrk;": "\u27e6", + "longleftarrow;": "\u27f5", + "longleftrightarrow;": "\u27f7", + "longmapsto;": "\u27fc", + "longrightarrow;": "\u27f6", + "looparrowleft;": "\u21ab", + "looparrowright;": "\u21ac", + "lopar;": "\u2985", + "lopf;": "\U0001d55d", + "loplus;": "\u2a2d", + "lotimes;": "\u2a34", + "lowast;": "\u2217", + "lowbar;": "_", + "loz;": "\u25ca", + "lozenge;": "\u25ca", + "lozf;": "\u29eb", + "lpar;": "(", + "lparlt;": "\u2993", + "lrarr;": "\u21c6", + "lrcorner;": "\u231f", + "lrhar;": "\u21cb", + "lrhard;": "\u296d", + "lrm;": "\u200e", + "lrtri;": "\u22bf", + "lsaquo;": "\u2039", + "lscr;": "\U0001d4c1", + "lsh;": "\u21b0", + "lsim;": "\u2272", + "lsime;": "\u2a8d", + "lsimg;": "\u2a8f", + "lsqb;": "[", + "lsquo;": "\u2018", + "lsquor;": "\u201a", + "lstrok;": "\u0142", + "lt": "<", + "lt;": "<", + "ltcc;": "\u2aa6", + "ltcir;": "\u2a79", + "ltdot;": "\u22d6", + "lthree;": "\u22cb", + "ltimes;": "\u22c9", + "ltlarr;": "\u2976", + "ltquest;": "\u2a7b", + "ltrPar;": "\u2996", + "ltri;": "\u25c3", + "ltrie;": "\u22b4", + "ltrif;": "\u25c2", + "lurdshar;": "\u294a", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\ufe00", + "lvnE;": "\u2268\ufe00", + "mDDot;": "\u223a", + "macr": "\xaf", + "macr;": "\xaf", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "map;": "\u21a6", + "mapsto;": "\u21a6", + "mapstodown;": "\u21a7", + "mapstoleft;": "\u21a4", + "mapstoup;": "\u21a5", + "marker;": "\u25ae", + "mcomma;": "\u2a29", + "mcy;": "\u043c", + "mdash;": "\u2014", + "measuredangle;": "\u2221", + "mfr;": "\U0001d52a", + "mho;": "\u2127", + "micro": "\xb5", + "micro;": "\xb5", + "mid;": "\u2223", + "midast;": "*", + "midcir;": "\u2af0", + "middot": "\xb7", + "middot;": "\xb7", + "minus;": "\u2212", + "minusb;": "\u229f", + "minusd;": "\u2238", + "minusdu;": "\u2a2a", + "mlcp;": "\u2adb", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22a7", + "mopf;": "\U0001d55e", + "mp;": "\u2213", + "mscr;": "\U0001d4c2", + "mstpos;": "\u223e", + "mu;": "\u03bc", + "multimap;": "\u22b8", + "mumap;": "\u22b8", + "nGg;": "\u22d9\u0338", + "nGt;": "\u226b\u20d2", + "nGtv;": "\u226b\u0338", + "nLeftarrow;": "\u21cd", + "nLeftrightarrow;": "\u21ce", + "nLl;": "\u22d8\u0338", + "nLt;": "\u226a\u20d2", + "nLtv;": "\u226a\u0338", + "nRightarrow;": "\u21cf", + "nVDash;": "\u22af", + "nVdash;": "\u22ae", + "nabla;": "\u2207", + "nacute;": "\u0144", + "nang;": "\u2220\u20d2", + "nap;": "\u2249", + "napE;": "\u2a70\u0338", + "napid;": "\u224b\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natur;": "\u266e", + "natural;": "\u266e", + "naturals;": "\u2115", + "nbsp": "\xa0", + "nbsp;": "\xa0", + "nbump;": "\u224e\u0338", + "nbumpe;": "\u224f\u0338", + "ncap;": "\u2a43", + "ncaron;": "\u0148", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2a6d\u0338", + "ncup;": "\u2a42", + "ncy;": "\u043d", + "ndash;": "\u2013", + "ne;": "\u2260", + "neArr;": "\u21d7", + "nearhk;": "\u2924", + "nearr;": "\u2197", + "nearrow;": "\u2197", + "nedot;": "\u2250\u0338", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "nexist;": "\u2204", + "nexists;": "\u2204", + "nfr;": "\U0001d52b", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2a7e\u0338", + "nges;": "\u2a7e\u0338", + "ngsim;": "\u2275", + "ngt;": "\u226f", + "ngtr;": "\u226f", + "nhArr;": "\u21ce", + "nharr;": "\u21ae", + "nhpar;": "\u2af2", + "ni;": "\u220b", + "nis;": "\u22fc", + "nisd;": "\u22fa", + "niv;": "\u220b", + "njcy;": "\u045a", + "nlArr;": "\u21cd", + "nlE;": "\u2266\u0338", + "nlarr;": "\u219a", + "nldr;": "\u2025", + "nle;": "\u2270", + "nleftarrow;": "\u219a", + "nleftrightarrow;": "\u21ae", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2a7d\u0338", + "nles;": "\u2a7d\u0338", + "nless;": "\u226e", + "nlsim;": "\u2274", + "nlt;": "\u226e", + "nltri;": "\u22ea", + "nltrie;": "\u22ec", + "nmid;": "\u2224", + "nopf;": "\U0001d55f", + "not": "\xac", + "not;": "\xac", + "notin;": "\u2209", + "notinE;": "\u22f9\u0338", + "notindot;": "\u22f5\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22f7", + "notinvc;": "\u22f6", + "notni;": "\u220c", + "notniva;": "\u220c", + "notnivb;": "\u22fe", + "notnivc;": "\u22fd", + "npar;": "\u2226", + "nparallel;": "\u2226", + "nparsl;": "\u2afd\u20e5", + "npart;": "\u2202\u0338", + "npolint;": "\u2a14", + "npr;": "\u2280", + "nprcue;": "\u22e0", + "npre;": "\u2aaf\u0338", + "nprec;": "\u2280", + "npreceq;": "\u2aaf\u0338", + "nrArr;": "\u21cf", + "nrarr;": "\u219b", + "nrarrc;": "\u2933\u0338", + "nrarrw;": "\u219d\u0338", + "nrightarrow;": "\u219b", + "nrtri;": "\u22eb", + "nrtrie;": "\u22ed", + "nsc;": "\u2281", + "nsccue;": "\u22e1", + "nsce;": "\u2ab0\u0338", + "nscr;": "\U0001d4c3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22e2", + "nsqsupe;": "\u22e3", + "nsub;": "\u2284", + "nsubE;": "\u2ac5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20d2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2ac5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2ab0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2ac6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20d2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2ac6\u0338", + "ntgl;": "\u2279", + "ntilde": "\xf1", + "ntilde;": "\xf1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22ea", + "ntrianglelefteq;": "\u22ec", + "ntriangleright;": "\u22eb", + "ntrianglerighteq;": "\u22ed", + "nu;": "\u03bd", + "num;": "#", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvDash;": "\u22ad", + "nvHarr;": "\u2904", + "nvap;": "\u224d\u20d2", + "nvdash;": "\u22ac", + "nvge;": "\u2265\u20d2", + "nvgt;": ">\u20d2", + "nvinfin;": "\u29de", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20d2", + "nvlt;": "<\u20d2", + "nvltrie;": "\u22b4\u20d2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22b5\u20d2", + "nvsim;": "\u223c\u20d2", + "nwArr;": "\u21d6", + "nwarhk;": "\u2923", + "nwarr;": "\u2196", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "oS;": "\u24c8", + "oacute": "\xf3", + "oacute;": "\xf3", + "oast;": "\u229b", + "ocir;": "\u229a", + "ocirc": "\xf4", + "ocirc;": "\xf4", + "ocy;": "\u043e", + "odash;": "\u229d", + "odblac;": "\u0151", + "odiv;": "\u2a38", + "odot;": "\u2299", + "odsold;": "\u29bc", + "oelig;": "\u0153", + "ofcir;": "\u29bf", + "ofr;": "\U0001d52c", + "ogon;": "\u02db", + "ograve": "\xf2", + "ograve;": "\xf2", + "ogt;": "\u29c1", + "ohbar;": "\u29b5", + "ohm;": "\u03a9", + "oint;": "\u222e", + "olarr;": "\u21ba", + "olcir;": "\u29be", + "olcross;": "\u29bb", + "oline;": "\u203e", + "olt;": "\u29c0", + "omacr;": "\u014d", + "omega;": "\u03c9", + "omicron;": "\u03bf", + "omid;": "\u29b6", + "ominus;": "\u2296", + "oopf;": "\U0001d560", + "opar;": "\u29b7", + "operp;": "\u29b9", + "oplus;": "\u2295", + "or;": "\u2228", + "orarr;": "\u21bb", + "ord;": "\u2a5d", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf": "\xaa", + "ordf;": "\xaa", + "ordm": "\xba", + "ordm;": "\xba", + "origof;": "\u22b6", + "oror;": "\u2a56", + "orslope;": "\u2a57", + "orv;": "\u2a5b", + "oscr;": "\u2134", + "oslash": "\xf8", + "oslash;": "\xf8", + "osol;": "\u2298", + "otilde": "\xf5", + "otilde;": "\xf5", + "otimes;": "\u2297", + "otimesas;": "\u2a36", + "ouml": "\xf6", + "ouml;": "\xf6", + "ovbar;": "\u233d", + "par;": "\u2225", + "para": "\xb6", + "para;": "\xb6", + "parallel;": "\u2225", + "parsim;": "\u2af3", + "parsl;": "\u2afd", + "part;": "\u2202", + "pcy;": "\u043f", + "percnt;": "%", + "period;": ".", + "permil;": "\u2030", + "perp;": "\u22a5", + "pertenk;": "\u2031", + "pfr;": "\U0001d52d", + "phi;": "\u03c6", + "phiv;": "\u03d5", + "phmmat;": "\u2133", + "phone;": "\u260e", + "pi;": "\u03c0", + "pitchfork;": "\u22d4", + "piv;": "\u03d6", + "planck;": "\u210f", + "planckh;": "\u210e", + "plankv;": "\u210f", + "plus;": "+", + "plusacir;": "\u2a23", + "plusb;": "\u229e", + "pluscir;": "\u2a22", + "plusdo;": "\u2214", + "plusdu;": "\u2a25", + "pluse;": "\u2a72", + "plusmn": "\xb1", + "plusmn;": "\xb1", + "plussim;": "\u2a26", + "plustwo;": "\u2a27", + "pm;": "\xb1", + "pointint;": "\u2a15", + "popf;": "\U0001d561", + "pound": "\xa3", + "pound;": "\xa3", + "pr;": "\u227a", + "prE;": "\u2ab3", + "prap;": "\u2ab7", + "prcue;": "\u227c", + "pre;": "\u2aaf", + "prec;": "\u227a", + "precapprox;": "\u2ab7", + "preccurlyeq;": "\u227c", + "preceq;": "\u2aaf", + "precnapprox;": "\u2ab9", + "precneqq;": "\u2ab5", + "precnsim;": "\u22e8", + "precsim;": "\u227e", + "prime;": "\u2032", + "primes;": "\u2119", + "prnE;": "\u2ab5", + "prnap;": "\u2ab9", + "prnsim;": "\u22e8", + "prod;": "\u220f", + "profalar;": "\u232e", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221d", + "propto;": "\u221d", + "prsim;": "\u227e", + "prurel;": "\u22b0", + "pscr;": "\U0001d4c5", + "psi;": "\u03c8", + "puncsp;": "\u2008", + "qfr;": "\U0001d52e", + "qint;": "\u2a0c", + "qopf;": "\U0001d562", + "qprime;": "\u2057", + "qscr;": "\U0001d4c6", + "quaternions;": "\u210d", + "quatint;": "\u2a16", + "quest;": "?", + "questeq;": "\u225f", + "quot": "\"", + "quot;": "\"", + "rAarr;": "\u21db", + "rArr;": "\u21d2", + "rAtail;": "\u291c", + "rBarr;": "\u290f", + "rHar;": "\u2964", + "race;": "\u223d\u0331", + "racute;": "\u0155", + "radic;": "\u221a", + "raemptyv;": "\u29b3", + "rang;": "\u27e9", + "rangd;": "\u2992", + "range;": "\u29a5", + "rangle;": "\u27e9", + "raquo": "\xbb", + "raquo;": "\xbb", + "rarr;": "\u2192", + "rarrap;": "\u2975", + "rarrb;": "\u21e5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarrfs;": "\u291e", + "rarrhk;": "\u21aa", + "rarrlp;": "\u21ac", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "rarrtl;": "\u21a3", + "rarrw;": "\u219d", + "ratail;": "\u291a", + "ratio;": "\u2236", + "rationals;": "\u211a", + "rbarr;": "\u290d", + "rbbrk;": "\u2773", + "rbrace;": "}", + "rbrack;": "]", + "rbrke;": "\u298c", + "rbrksld;": "\u298e", + "rbrkslu;": "\u2990", + "rcaron;": "\u0159", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "}", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201d", + "rdquor;": "\u201d", + "rdsh;": "\u21b3", + "real;": "\u211c", + "realine;": "\u211b", + "realpart;": "\u211c", + "reals;": "\u211d", + "rect;": "\u25ad", + "reg": "\xae", + "reg;": "\xae", + "rfisht;": "\u297d", + "rfloor;": "\u230b", + "rfr;": "\U0001d52f", + "rhard;": "\u21c1", + "rharu;": "\u21c0", + "rharul;": "\u296c", + "rho;": "\u03c1", + "rhov;": "\u03f1", + "rightarrow;": "\u2192", + "rightarrowtail;": "\u21a3", + "rightharpoondown;": "\u21c1", + "rightharpoonup;": "\u21c0", + "rightleftarrows;": "\u21c4", + "rightleftharpoons;": "\u21cc", + "rightrightarrows;": "\u21c9", + "rightsquigarrow;": "\u219d", + "rightthreetimes;": "\u22cc", + "ring;": "\u02da", + "risingdotseq;": "\u2253", + "rlarr;": "\u21c4", + "rlhar;": "\u21cc", + "rlm;": "\u200f", + "rmoust;": "\u23b1", + "rmoustache;": "\u23b1", + "rnmid;": "\u2aee", + "roang;": "\u27ed", + "roarr;": "\u21fe", + "robrk;": "\u27e7", + "ropar;": "\u2986", + "ropf;": "\U0001d563", + "roplus;": "\u2a2e", + "rotimes;": "\u2a35", + "rpar;": ")", + "rpargt;": "\u2994", + "rppolint;": "\u2a12", + "rrarr;": "\u21c9", + "rsaquo;": "\u203a", + "rscr;": "\U0001d4c7", + "rsh;": "\u21b1", + "rsqb;": "]", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22cc", + "rtimes;": "\u22ca", + "rtri;": "\u25b9", + "rtrie;": "\u22b5", + "rtrif;": "\u25b8", + "rtriltri;": "\u29ce", + "ruluhar;": "\u2968", + "rx;": "\u211e", + "sacute;": "\u015b", + "sbquo;": "\u201a", + "sc;": "\u227b", + "scE;": "\u2ab4", + "scap;": "\u2ab8", + "scaron;": "\u0161", + "sccue;": "\u227d", + "sce;": "\u2ab0", + "scedil;": "\u015f", + "scirc;": "\u015d", + "scnE;": "\u2ab6", + "scnap;": "\u2aba", + "scnsim;": "\u22e9", + "scpolint;": "\u2a13", + "scsim;": "\u227f", + "scy;": "\u0441", + "sdot;": "\u22c5", + "sdotb;": "\u22a1", + "sdote;": "\u2a66", + "seArr;": "\u21d8", + "searhk;": "\u2925", + "searr;": "\u2198", + "searrow;": "\u2198", + "sect": "\xa7", + "sect;": "\xa7", + "semi;": ";", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "sfr;": "\U0001d530", + "sfrown;": "\u2322", + "sharp;": "\u266f", + "shchcy;": "\u0449", + "shcy;": "\u0448", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "shy": "\xad", + "shy;": "\xad", + "sigma;": "\u03c3", + "sigmaf;": "\u03c2", + "sigmav;": "\u03c2", + "sim;": "\u223c", + "simdot;": "\u2a6a", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2a9e", + "simgE;": "\u2aa0", + "siml;": "\u2a9d", + "simlE;": "\u2a9f", + "simne;": "\u2246", + "simplus;": "\u2a24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "smallsetminus;": "\u2216", + "smashp;": "\u2a33", + "smeparsl;": "\u29e4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2aaa", + "smte;": "\u2aac", + "smtes;": "\u2aac\ufe00", + "softcy;": "\u044c", + "sol;": "/", + "solb;": "\u29c4", + "solbar;": "\u233f", + "sopf;": "\U0001d564", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\ufe00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\ufe00", + "sqsub;": "\u228f", + "sqsube;": "\u2291", + "sqsubset;": "\u228f", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "squ;": "\u25a1", + "square;": "\u25a1", + "squarf;": "\u25aa", + "squf;": "\u25aa", + "srarr;": "\u2192", + "sscr;": "\U0001d4c8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22c6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03f5", + "straightphi;": "\u03d5", + "strns;": "\xaf", + "sub;": "\u2282", + "subE;": "\u2ac5", + "subdot;": "\u2abd", + "sube;": "\u2286", + "subedot;": "\u2ac3", + "submult;": "\u2ac1", + "subnE;": "\u2acb", + "subne;": "\u228a", + "subplus;": "\u2abf", + "subrarr;": "\u2979", + "subset;": "\u2282", + "subseteq;": "\u2286", + "subseteqq;": "\u2ac5", + "subsetneq;": "\u228a", + "subsetneqq;": "\u2acb", + "subsim;": "\u2ac7", + "subsub;": "\u2ad5", + "subsup;": "\u2ad3", + "succ;": "\u227b", + "succapprox;": "\u2ab8", + "succcurlyeq;": "\u227d", + "succeq;": "\u2ab0", + "succnapprox;": "\u2aba", + "succneqq;": "\u2ab6", + "succnsim;": "\u22e9", + "succsim;": "\u227f", + "sum;": "\u2211", + "sung;": "\u266a", + "sup1": "\xb9", + "sup1;": "\xb9", + "sup2": "\xb2", + "sup2;": "\xb2", + "sup3": "\xb3", + "sup3;": "\xb3", + "sup;": "\u2283", + "supE;": "\u2ac6", + "supdot;": "\u2abe", + "supdsub;": "\u2ad8", + "supe;": "\u2287", + "supedot;": "\u2ac4", + "suphsol;": "\u27c9", + "suphsub;": "\u2ad7", + "suplarr;": "\u297b", + "supmult;": "\u2ac2", + "supnE;": "\u2acc", + "supne;": "\u228b", + "supplus;": "\u2ac0", + "supset;": "\u2283", + "supseteq;": "\u2287", + "supseteqq;": "\u2ac6", + "supsetneq;": "\u228b", + "supsetneqq;": "\u2acc", + "supsim;": "\u2ac8", + "supsub;": "\u2ad4", + "supsup;": "\u2ad6", + "swArr;": "\u21d9", + "swarhk;": "\u2926", + "swarr;": "\u2199", + "swarrow;": "\u2199", + "swnwar;": "\u292a", + "szlig": "\xdf", + "szlig;": "\xdf", + "target;": "\u2316", + "tau;": "\u03c4", + "tbrk;": "\u23b4", + "tcaron;": "\u0165", + "tcedil;": "\u0163", + "tcy;": "\u0442", + "tdot;": "\u20db", + "telrec;": "\u2315", + "tfr;": "\U0001d531", + "there4;": "\u2234", + "therefore;": "\u2234", + "theta;": "\u03b8", + "thetasym;": "\u03d1", + "thetav;": "\u03d1", + "thickapprox;": "\u2248", + "thicksim;": "\u223c", + "thinsp;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223c", + "thorn": "\xfe", + "thorn;": "\xfe", + "tilde;": "\u02dc", + "times": "\xd7", + "times;": "\xd7", + "timesb;": "\u22a0", + "timesbar;": "\u2a31", + "timesd;": "\u2a30", + "tint;": "\u222d", + "toea;": "\u2928", + "top;": "\u22a4", + "topbot;": "\u2336", + "topcir;": "\u2af1", + "topf;": "\U0001d565", + "topfork;": "\u2ada", + "tosa;": "\u2929", + "tprime;": "\u2034", + "trade;": "\u2122", + "triangle;": "\u25b5", + "triangledown;": "\u25bf", + "triangleleft;": "\u25c3", + "trianglelefteq;": "\u22b4", + "triangleq;": "\u225c", + "triangleright;": "\u25b9", + "trianglerighteq;": "\u22b5", + "tridot;": "\u25ec", + "trie;": "\u225c", + "triminus;": "\u2a3a", + "triplus;": "\u2a39", + "trisb;": "\u29cd", + "tritime;": "\u2a3b", + "trpezium;": "\u23e2", + "tscr;": "\U0001d4c9", + "tscy;": "\u0446", + "tshcy;": "\u045b", + "tstrok;": "\u0167", + "twixt;": "\u226c", + "twoheadleftarrow;": "\u219e", + "twoheadrightarrow;": "\u21a0", + "uArr;": "\u21d1", + "uHar;": "\u2963", + "uacute": "\xfa", + "uacute;": "\xfa", + "uarr;": "\u2191", + "ubrcy;": "\u045e", + "ubreve;": "\u016d", + "ucirc": "\xfb", + "ucirc;": "\xfb", + "ucy;": "\u0443", + "udarr;": "\u21c5", + "udblac;": "\u0171", + "udhar;": "\u296e", + "ufisht;": "\u297e", + "ufr;": "\U0001d532", + "ugrave": "\xf9", + "ugrave;": "\xf9", + "uharl;": "\u21bf", + "uharr;": "\u21be", + "uhblk;": "\u2580", + "ulcorn;": "\u231c", + "ulcorner;": "\u231c", + "ulcrop;": "\u230f", + "ultri;": "\u25f8", + "umacr;": "\u016b", + "uml": "\xa8", + "uml;": "\xa8", + "uogon;": "\u0173", + "uopf;": "\U0001d566", + "uparrow;": "\u2191", + "updownarrow;": "\u2195", + "upharpoonleft;": "\u21bf", + "upharpoonright;": "\u21be", + "uplus;": "\u228e", + "upsi;": "\u03c5", + "upsih;": "\u03d2", + "upsilon;": "\u03c5", + "upuparrows;": "\u21c8", + "urcorn;": "\u231d", + "urcorner;": "\u231d", + "urcrop;": "\u230e", + "uring;": "\u016f", + "urtri;": "\u25f9", + "uscr;": "\U0001d4ca", + "utdot;": "\u22f0", + "utilde;": "\u0169", + "utri;": "\u25b5", + "utrif;": "\u25b4", + "uuarr;": "\u21c8", + "uuml": "\xfc", + "uuml;": "\xfc", + "uwangle;": "\u29a7", + "vArr;": "\u21d5", + "vBar;": "\u2ae8", + "vBarv;": "\u2ae9", + "vDash;": "\u22a8", + "vangrt;": "\u299c", + "varepsilon;": "\u03f5", + "varkappa;": "\u03f0", + "varnothing;": "\u2205", + "varphi;": "\u03d5", + "varpi;": "\u03d6", + "varpropto;": "\u221d", + "varr;": "\u2195", + "varrho;": "\u03f1", + "varsigma;": "\u03c2", + "varsubsetneq;": "\u228a\ufe00", + "varsubsetneqq;": "\u2acb\ufe00", + "varsupsetneq;": "\u228b\ufe00", + "varsupsetneqq;": "\u2acc\ufe00", + "vartheta;": "\u03d1", + "vartriangleleft;": "\u22b2", + "vartriangleright;": "\u22b3", + "vcy;": "\u0432", + "vdash;": "\u22a2", + "vee;": "\u2228", + "veebar;": "\u22bb", + "veeeq;": "\u225a", + "vellip;": "\u22ee", + "verbar;": "|", + "vert;": "|", + "vfr;": "\U0001d533", + "vltri;": "\u22b2", + "vnsub;": "\u2282\u20d2", + "vnsup;": "\u2283\u20d2", + "vopf;": "\U0001d567", + "vprop;": "\u221d", + "vrtri;": "\u22b3", + "vscr;": "\U0001d4cb", + "vsubnE;": "\u2acb\ufe00", + "vsubne;": "\u228a\ufe00", + "vsupnE;": "\u2acc\ufe00", + "vsupne;": "\u228b\ufe00", + "vzigzag;": "\u299a", + "wcirc;": "\u0175", + "wedbar;": "\u2a5f", + "wedge;": "\u2227", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "wfr;": "\U0001d534", + "wopf;": "\U0001d568", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "wscr;": "\U0001d4cc", + "xcap;": "\u22c2", + "xcirc;": "\u25ef", + "xcup;": "\u22c3", + "xdtri;": "\u25bd", + "xfr;": "\U0001d535", + "xhArr;": "\u27fa", + "xharr;": "\u27f7", + "xi;": "\u03be", + "xlArr;": "\u27f8", + "xlarr;": "\u27f5", + "xmap;": "\u27fc", + "xnis;": "\u22fb", + "xodot;": "\u2a00", + "xopf;": "\U0001d569", + "xoplus;": "\u2a01", + "xotime;": "\u2a02", + "xrArr;": "\u27f9", + "xrarr;": "\u27f6", + "xscr;": "\U0001d4cd", + "xsqcup;": "\u2a06", + "xuplus;": "\u2a04", + "xutri;": "\u25b3", + "xvee;": "\u22c1", + "xwedge;": "\u22c0", + "yacute": "\xfd", + "yacute;": "\xfd", + "yacy;": "\u044f", + "ycirc;": "\u0177", + "ycy;": "\u044b", + "yen": "\xa5", + "yen;": "\xa5", + "yfr;": "\U0001d536", + "yicy;": "\u0457", + "yopf;": "\U0001d56a", + "yscr;": "\U0001d4ce", + "yucy;": "\u044e", + "yuml": "\xff", + "yuml;": "\xff", + "zacute;": "\u017a", + "zcaron;": "\u017e", + "zcy;": "\u0437", + "zdot;": "\u017c", + "zeetrf;": "\u2128", + "zeta;": "\u03b6", + "zfr;": "\U0001d537", + "zhcy;": "\u0436", + "zigrarr;": "\u21dd", + "zopf;": "\U0001d56b", + "zscr;": "\U0001d4cf", + "zwj;": "\u200d", + "zwnj;": "\u200c", +} + +replacementCharacters = { + 0x0: "\uFFFD", + 0x0d: "\u000D", + 0x80: "\u20AC", + 0x81: "\u0081", + 0x82: "\u201A", + 0x83: "\u0192", + 0x84: "\u201E", + 0x85: "\u2026", + 0x86: "\u2020", + 0x87: "\u2021", + 0x88: "\u02C6", + 0x89: "\u2030", + 0x8A: "\u0160", + 0x8B: "\u2039", + 0x8C: "\u0152", + 0x8D: "\u008D", + 0x8E: "\u017D", + 0x8F: "\u008F", + 0x90: "\u0090", + 0x91: "\u2018", + 0x92: "\u2019", + 0x93: "\u201C", + 0x94: "\u201D", + 0x95: "\u2022", + 0x96: "\u2013", + 0x97: "\u2014", + 0x98: "\u02DC", + 0x99: "\u2122", + 0x9A: "\u0161", + 0x9B: "\u203A", + 0x9C: "\u0153", + 0x9D: "\u009D", + 0x9E: "\u017E", + 0x9F: "\u0178", +} + +tokenTypes = { + "Doctype": 0, + "Characters": 1, + "SpaceCharacters": 2, + "StartTag": 3, + "EndTag": 4, + "EmptyTag": 5, + "Comment": 6, + "ParseError": 7 +} + +tagTokenTypes = frozenset([tokenTypes["StartTag"], tokenTypes["EndTag"], + tokenTypes["EmptyTag"]]) + + +prefixes = {v: k for k, v in namespaces.items()} +prefixes["http://www.w3.org/1998/Math/MathML"] = "math" + + +class DataLossWarning(UserWarning): + """Raised when the current tree is unable to represent the input data""" + pass + + +class _ReparseException(Exception): + pass diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py new file mode 100644 index 00000000..5ba926e3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py @@ -0,0 +1,29 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + +from collections import OrderedDict + + +def _attr_key(attr): + """Return an appropriate key for an attribute for sorting + + Attributes have a namespace that can be either ``None`` or a string. We + can't compare the two because they're different types, so we convert + ``None`` to an empty string first. + + """ + return (attr[0][0] or ''), attr[0][1] + + +class Filter(base.Filter): + """Alphabetizes attributes for elements""" + def __iter__(self): + for token in base.Filter.__iter__(self): + if token["type"] in ("StartTag", "EmptyTag"): + attrs = OrderedDict() + for name, value in sorted(token["data"].items(), + key=_attr_key): + attrs[name] = value + token["data"] = attrs + yield token diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py new file mode 100644 index 00000000..c7dbaed0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py @@ -0,0 +1,12 @@ +from __future__ import absolute_import, division, unicode_literals + + +class Filter(object): + def __init__(self, source): + self.source = source + + def __iter__(self): + return iter(self.source) + + def __getattr__(self, name): + return getattr(self.source, name) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py new file mode 100644 index 00000000..aefb5c84 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py @@ -0,0 +1,73 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + + +class Filter(base.Filter): + """Injects ```` tag into head of document""" + def __init__(self, source, encoding): + """Creates a Filter + + :arg source: the source token stream + + :arg encoding: the encoding to set + + """ + base.Filter.__init__(self, source) + self.encoding = encoding + + def __iter__(self): + state = "pre_head" + meta_found = (self.encoding is None) + pending = [] + + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag": + if token["name"].lower() == "head": + state = "in_head" + + elif type == "EmptyTag": + if token["name"].lower() == "meta": + # replace charset with actual encoding + has_http_equiv_content_type = False + for (namespace, name), value in token["data"].items(): + if namespace is not None: + continue + elif name.lower() == 'charset': + token["data"][(namespace, name)] = self.encoding + meta_found = True + break + elif name == 'http-equiv' and value.lower() == 'content-type': + has_http_equiv_content_type = True + else: + if has_http_equiv_content_type and (None, "content") in token["data"]: + token["data"][(None, "content")] = 'text/html; charset=%s' % self.encoding + meta_found = True + + elif token["name"].lower() == "head" and not meta_found: + # insert meta into empty head + yield {"type": "StartTag", "name": "head", + "data": token["data"]} + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + yield {"type": "EndTag", "name": "head"} + meta_found = True + continue + + elif type == "EndTag": + if token["name"].lower() == "head" and pending: + # insert meta into head (if necessary) and flush pending queue + yield pending.pop(0) + if not meta_found: + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + while pending: + yield pending.pop(0) + meta_found = True + state = "post_head" + + if state == "in_head": + pending.append(token) + else: + yield token diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py new file mode 100644 index 00000000..fcc07eec --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py @@ -0,0 +1,93 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type + +from . import base +from ..constants import namespaces, voidElements + +from ..constants import spaceCharacters +spaceCharacters = "".join(spaceCharacters) + + +class Filter(base.Filter): + """Lints the token stream for errors + + If it finds any errors, it'll raise an ``AssertionError``. + + """ + def __init__(self, source, require_matching_tags=True): + """Creates a Filter + + :arg source: the source token stream + + :arg require_matching_tags: whether or not to require matching tags + + """ + super(Filter, self).__init__(source) + self.require_matching_tags = require_matching_tags + + def __iter__(self): + open_elements = [] + for token in base.Filter.__iter__(self): + type = token["type"] + if type in ("StartTag", "EmptyTag"): + namespace = token["namespace"] + name = token["name"] + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + assert isinstance(token["data"], dict) + if (not namespace or namespace == namespaces["html"]) and name in voidElements: + assert type == "EmptyTag" + else: + assert type == "StartTag" + if type == "StartTag" and self.require_matching_tags: + open_elements.append((namespace, name)) + for (namespace, name), value in token["data"].items(): + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + assert isinstance(value, text_type) + + elif type == "EndTag": + namespace = token["namespace"] + name = token["name"] + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + if (not namespace or namespace == namespaces["html"]) and name in voidElements: + assert False, "Void element reported as EndTag token: %(tag)s" % {"tag": name} + elif self.require_matching_tags: + start = open_elements.pop() + assert start == (namespace, name) + + elif type == "Comment": + data = token["data"] + assert isinstance(data, text_type) + + elif type in ("Characters", "SpaceCharacters"): + data = token["data"] + assert isinstance(data, text_type) + assert data != "" + if type == "SpaceCharacters": + assert data.strip(spaceCharacters) == "" + + elif type == "Doctype": + name = token["name"] + assert name is None or isinstance(name, text_type) + assert token["publicId"] is None or isinstance(name, text_type) + assert token["systemId"] is None or isinstance(name, text_type) + + elif type == "Entity": + assert isinstance(token["name"], text_type) + + elif type == "SerializerError": + assert isinstance(token["data"], text_type) + + else: + assert False, "Unknown token type: %(type)s" % {"type": type} + + yield token diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py new file mode 100644 index 00000000..4a865012 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py @@ -0,0 +1,207 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + + +class Filter(base.Filter): + """Removes optional tags from the token stream""" + def slider(self): + previous1 = previous2 = None + for token in self.source: + if previous1 is not None: + yield previous2, previous1, token + previous2 = previous1 + previous1 = token + if previous1 is not None: + yield previous2, previous1, None + + def __iter__(self): + for previous, token, next in self.slider(): + type = token["type"] + if type == "StartTag": + if (token["data"] or + not self.is_optional_start(token["name"], previous, next)): + yield token + elif type == "EndTag": + if not self.is_optional_end(token["name"], next): + yield token + else: + yield token + + def is_optional_start(self, tagname, previous, next): + type = next and next["type"] or None + if tagname in 'html': + # An html element's start tag may be omitted if the first thing + # inside the html element is not a space character or a comment. + return type not in ("Comment", "SpaceCharacters") + elif tagname == 'head': + # A head element's start tag may be omitted if the first thing + # inside the head element is an element. + # XXX: we also omit the start tag if the head element is empty + if type in ("StartTag", "EmptyTag"): + return True + elif type == "EndTag": + return next["name"] == "head" + elif tagname == 'body': + # A body element's start tag may be omitted if the first thing + # inside the body element is not a space character or a comment, + # except if the first thing inside the body element is a script + # or style element and the node immediately preceding the body + # element is a head element whose end tag has been omitted. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we do not look at the preceding event, so we never omit + # the body element's start tag if it's followed by a script or + # a style element. + return next["name"] not in ('script', 'style') + else: + return True + elif tagname == 'colgroup': + # A colgroup element's start tag may be omitted if the first thing + # inside the colgroup element is a col element, and if the element + # is not immediately preceded by another colgroup element whose + # end tag has been omitted. + if type in ("StartTag", "EmptyTag"): + # XXX: we do not look at the preceding event, so instead we never + # omit the colgroup element's end tag when it is immediately + # followed by another colgroup element. See is_optional_end. + return next["name"] == "col" + else: + return False + elif tagname == 'tbody': + # A tbody element's start tag may be omitted if the first thing + # inside the tbody element is a tr element, and if the element is + # not immediately preceded by a tbody, thead, or tfoot element + # whose end tag has been omitted. + if type == "StartTag": + # omit the thead and tfoot elements' end tag when they are + # immediately followed by a tbody element. See is_optional_end. + if previous and previous['type'] == 'EndTag' and \ + previous['name'] in ('tbody', 'thead', 'tfoot'): + return False + return next["name"] == 'tr' + else: + return False + return False + + def is_optional_end(self, tagname, next): + type = next and next["type"] or None + if tagname in ('html', 'head', 'body'): + # An html element's end tag may be omitted if the html element + # is not immediately followed by a space character or a comment. + return type not in ("Comment", "SpaceCharacters") + elif tagname in ('li', 'optgroup', 'tr'): + # A li element's end tag may be omitted if the li element is + # immediately followed by another li element or if there is + # no more content in the parent element. + # An optgroup element's end tag may be omitted if the optgroup + # element is immediately followed by another optgroup element, + # or if there is no more content in the parent element. + # A tr element's end tag may be omitted if the tr element is + # immediately followed by another tr element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] == tagname + else: + return type == "EndTag" or type is None + elif tagname in ('dt', 'dd'): + # A dt element's end tag may be omitted if the dt element is + # immediately followed by another dt element or a dd element. + # A dd element's end tag may be omitted if the dd element is + # immediately followed by another dd element or a dt element, + # or if there is no more content in the parent element. + if type == "StartTag": + return next["name"] in ('dt', 'dd') + elif tagname == 'dd': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'p': + # A p element's end tag may be omitted if the p element is + # immediately followed by an address, article, aside, + # blockquote, datagrid, dialog, dir, div, dl, fieldset, + # footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, + # nav, ol, p, pre, section, table, or ul, element, or if + # there is no more content in the parent element. + if type in ("StartTag", "EmptyTag"): + return next["name"] in ('address', 'article', 'aside', + 'blockquote', 'datagrid', 'dialog', + 'dir', 'div', 'dl', 'fieldset', 'footer', + 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', + 'header', 'hr', 'menu', 'nav', 'ol', + 'p', 'pre', 'section', 'table', 'ul') + else: + return type == "EndTag" or type is None + elif tagname == 'option': + # An option element's end tag may be omitted if the option + # element is immediately followed by another option element, + # or if it is immediately followed by an optgroup + # element, or if there is no more content in the parent + # element. + if type == "StartTag": + return next["name"] in ('option', 'optgroup') + else: + return type == "EndTag" or type is None + elif tagname in ('rt', 'rp'): + # An rt element's end tag may be omitted if the rt element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + # An rp element's end tag may be omitted if the rp element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('rt', 'rp') + else: + return type == "EndTag" or type is None + elif tagname == 'colgroup': + # A colgroup element's end tag may be omitted if the colgroup + # element is not immediately followed by a space character or + # a comment. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we also look for an immediately following colgroup + # element. See is_optional_start. + return next["name"] != 'colgroup' + else: + return True + elif tagname in ('thead', 'tbody'): + # A thead element's end tag may be omitted if the thead element + # is immediately followed by a tbody or tfoot element. + # A tbody element's end tag may be omitted if the tbody element + # is immediately followed by a tbody or tfoot element, or if + # there is no more content in the parent element. + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] in ['tbody', 'tfoot'] + elif tagname == 'tbody': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'tfoot': + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] == 'tbody' + else: + return type == "EndTag" or type is None + elif tagname in ('td', 'th'): + # A td element's end tag may be omitted if the td element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + # A th element's end tag may be omitted if the th element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('td', 'th') + else: + return type == "EndTag" or type is None + return False diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py new file mode 100644 index 00000000..aa7431d1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py @@ -0,0 +1,916 @@ +"""Deprecated from html5lib 1.1. + +See `here `_ for +information about its deprecation; `Bleach `_ +is recommended as a replacement. Please let us know in the aforementioned issue +if Bleach is unsuitable for your needs. + +""" +from __future__ import absolute_import, division, unicode_literals + +import re +import warnings +from xml.sax.saxutils import escape, unescape + +from pip._vendor.six.moves import urllib_parse as urlparse + +from . import base +from ..constants import namespaces, prefixes + +__all__ = ["Filter"] + + +_deprecation_msg = ( + "html5lib's sanitizer is deprecated; see " + + "https://github.com/html5lib/html5lib-python/issues/443 and please let " + + "us know if Bleach is unsuitable for your needs" +) + +warnings.warn(_deprecation_msg, DeprecationWarning) + +allowed_elements = frozenset(( + (namespaces['html'], 'a'), + (namespaces['html'], 'abbr'), + (namespaces['html'], 'acronym'), + (namespaces['html'], 'address'), + (namespaces['html'], 'area'), + (namespaces['html'], 'article'), + (namespaces['html'], 'aside'), + (namespaces['html'], 'audio'), + (namespaces['html'], 'b'), + (namespaces['html'], 'big'), + (namespaces['html'], 'blockquote'), + (namespaces['html'], 'br'), + (namespaces['html'], 'button'), + (namespaces['html'], 'canvas'), + (namespaces['html'], 'caption'), + (namespaces['html'], 'center'), + (namespaces['html'], 'cite'), + (namespaces['html'], 'code'), + (namespaces['html'], 'col'), + (namespaces['html'], 'colgroup'), + (namespaces['html'], 'command'), + (namespaces['html'], 'datagrid'), + (namespaces['html'], 'datalist'), + (namespaces['html'], 'dd'), + (namespaces['html'], 'del'), + (namespaces['html'], 'details'), + (namespaces['html'], 'dfn'), + (namespaces['html'], 'dialog'), + (namespaces['html'], 'dir'), + (namespaces['html'], 'div'), + (namespaces['html'], 'dl'), + (namespaces['html'], 'dt'), + (namespaces['html'], 'em'), + (namespaces['html'], 'event-source'), + (namespaces['html'], 'fieldset'), + (namespaces['html'], 'figcaption'), + (namespaces['html'], 'figure'), + (namespaces['html'], 'footer'), + (namespaces['html'], 'font'), + (namespaces['html'], 'form'), + (namespaces['html'], 'header'), + (namespaces['html'], 'h1'), + (namespaces['html'], 'h2'), + (namespaces['html'], 'h3'), + (namespaces['html'], 'h4'), + (namespaces['html'], 'h5'), + (namespaces['html'], 'h6'), + (namespaces['html'], 'hr'), + (namespaces['html'], 'i'), + (namespaces['html'], 'img'), + (namespaces['html'], 'input'), + (namespaces['html'], 'ins'), + (namespaces['html'], 'keygen'), + (namespaces['html'], 'kbd'), + (namespaces['html'], 'label'), + (namespaces['html'], 'legend'), + (namespaces['html'], 'li'), + (namespaces['html'], 'm'), + (namespaces['html'], 'map'), + (namespaces['html'], 'menu'), + (namespaces['html'], 'meter'), + (namespaces['html'], 'multicol'), + (namespaces['html'], 'nav'), + (namespaces['html'], 'nextid'), + (namespaces['html'], 'ol'), + (namespaces['html'], 'output'), + (namespaces['html'], 'optgroup'), + (namespaces['html'], 'option'), + (namespaces['html'], 'p'), + (namespaces['html'], 'pre'), + (namespaces['html'], 'progress'), + (namespaces['html'], 'q'), + (namespaces['html'], 's'), + (namespaces['html'], 'samp'), + (namespaces['html'], 'section'), + (namespaces['html'], 'select'), + (namespaces['html'], 'small'), + (namespaces['html'], 'sound'), + (namespaces['html'], 'source'), + (namespaces['html'], 'spacer'), + (namespaces['html'], 'span'), + (namespaces['html'], 'strike'), + (namespaces['html'], 'strong'), + (namespaces['html'], 'sub'), + (namespaces['html'], 'sup'), + (namespaces['html'], 'table'), + (namespaces['html'], 'tbody'), + (namespaces['html'], 'td'), + (namespaces['html'], 'textarea'), + (namespaces['html'], 'time'), + (namespaces['html'], 'tfoot'), + (namespaces['html'], 'th'), + (namespaces['html'], 'thead'), + (namespaces['html'], 'tr'), + (namespaces['html'], 'tt'), + (namespaces['html'], 'u'), + (namespaces['html'], 'ul'), + (namespaces['html'], 'var'), + (namespaces['html'], 'video'), + (namespaces['mathml'], 'maction'), + (namespaces['mathml'], 'math'), + (namespaces['mathml'], 'merror'), + (namespaces['mathml'], 'mfrac'), + (namespaces['mathml'], 'mi'), + (namespaces['mathml'], 'mmultiscripts'), + (namespaces['mathml'], 'mn'), + (namespaces['mathml'], 'mo'), + (namespaces['mathml'], 'mover'), + (namespaces['mathml'], 'mpadded'), + (namespaces['mathml'], 'mphantom'), + (namespaces['mathml'], 'mprescripts'), + (namespaces['mathml'], 'mroot'), + (namespaces['mathml'], 'mrow'), + (namespaces['mathml'], 'mspace'), + (namespaces['mathml'], 'msqrt'), + (namespaces['mathml'], 'mstyle'), + (namespaces['mathml'], 'msub'), + (namespaces['mathml'], 'msubsup'), + (namespaces['mathml'], 'msup'), + (namespaces['mathml'], 'mtable'), + (namespaces['mathml'], 'mtd'), + (namespaces['mathml'], 'mtext'), + (namespaces['mathml'], 'mtr'), + (namespaces['mathml'], 'munder'), + (namespaces['mathml'], 'munderover'), + (namespaces['mathml'], 'none'), + (namespaces['svg'], 'a'), + (namespaces['svg'], 'animate'), + (namespaces['svg'], 'animateColor'), + (namespaces['svg'], 'animateMotion'), + (namespaces['svg'], 'animateTransform'), + (namespaces['svg'], 'clipPath'), + (namespaces['svg'], 'circle'), + (namespaces['svg'], 'defs'), + (namespaces['svg'], 'desc'), + (namespaces['svg'], 'ellipse'), + (namespaces['svg'], 'font-face'), + (namespaces['svg'], 'font-face-name'), + (namespaces['svg'], 'font-face-src'), + (namespaces['svg'], 'g'), + (namespaces['svg'], 'glyph'), + (namespaces['svg'], 'hkern'), + (namespaces['svg'], 'linearGradient'), + (namespaces['svg'], 'line'), + (namespaces['svg'], 'marker'), + (namespaces['svg'], 'metadata'), + (namespaces['svg'], 'missing-glyph'), + (namespaces['svg'], 'mpath'), + (namespaces['svg'], 'path'), + (namespaces['svg'], 'polygon'), + (namespaces['svg'], 'polyline'), + (namespaces['svg'], 'radialGradient'), + (namespaces['svg'], 'rect'), + (namespaces['svg'], 'set'), + (namespaces['svg'], 'stop'), + (namespaces['svg'], 'svg'), + (namespaces['svg'], 'switch'), + (namespaces['svg'], 'text'), + (namespaces['svg'], 'title'), + (namespaces['svg'], 'tspan'), + (namespaces['svg'], 'use'), +)) + +allowed_attributes = frozenset(( + # HTML attributes + (None, 'abbr'), + (None, 'accept'), + (None, 'accept-charset'), + (None, 'accesskey'), + (None, 'action'), + (None, 'align'), + (None, 'alt'), + (None, 'autocomplete'), + (None, 'autofocus'), + (None, 'axis'), + (None, 'background'), + (None, 'balance'), + (None, 'bgcolor'), + (None, 'bgproperties'), + (None, 'border'), + (None, 'bordercolor'), + (None, 'bordercolordark'), + (None, 'bordercolorlight'), + (None, 'bottompadding'), + (None, 'cellpadding'), + (None, 'cellspacing'), + (None, 'ch'), + (None, 'challenge'), + (None, 'char'), + (None, 'charoff'), + (None, 'choff'), + (None, 'charset'), + (None, 'checked'), + (None, 'cite'), + (None, 'class'), + (None, 'clear'), + (None, 'color'), + (None, 'cols'), + (None, 'colspan'), + (None, 'compact'), + (None, 'contenteditable'), + (None, 'controls'), + (None, 'coords'), + (None, 'data'), + (None, 'datafld'), + (None, 'datapagesize'), + (None, 'datasrc'), + (None, 'datetime'), + (None, 'default'), + (None, 'delay'), + (None, 'dir'), + (None, 'disabled'), + (None, 'draggable'), + (None, 'dynsrc'), + (None, 'enctype'), + (None, 'end'), + (None, 'face'), + (None, 'for'), + (None, 'form'), + (None, 'frame'), + (None, 'galleryimg'), + (None, 'gutter'), + (None, 'headers'), + (None, 'height'), + (None, 'hidefocus'), + (None, 'hidden'), + (None, 'high'), + (None, 'href'), + (None, 'hreflang'), + (None, 'hspace'), + (None, 'icon'), + (None, 'id'), + (None, 'inputmode'), + (None, 'ismap'), + (None, 'keytype'), + (None, 'label'), + (None, 'leftspacing'), + (None, 'lang'), + (None, 'list'), + (None, 'longdesc'), + (None, 'loop'), + (None, 'loopcount'), + (None, 'loopend'), + (None, 'loopstart'), + (None, 'low'), + (None, 'lowsrc'), + (None, 'max'), + (None, 'maxlength'), + (None, 'media'), + (None, 'method'), + (None, 'min'), + (None, 'multiple'), + (None, 'name'), + (None, 'nohref'), + (None, 'noshade'), + (None, 'nowrap'), + (None, 'open'), + (None, 'optimum'), + (None, 'pattern'), + (None, 'ping'), + (None, 'point-size'), + (None, 'poster'), + (None, 'pqg'), + (None, 'preload'), + (None, 'prompt'), + (None, 'radiogroup'), + (None, 'readonly'), + (None, 'rel'), + (None, 'repeat-max'), + (None, 'repeat-min'), + (None, 'replace'), + (None, 'required'), + (None, 'rev'), + (None, 'rightspacing'), + (None, 'rows'), + (None, 'rowspan'), + (None, 'rules'), + (None, 'scope'), + (None, 'selected'), + (None, 'shape'), + (None, 'size'), + (None, 'span'), + (None, 'src'), + (None, 'start'), + (None, 'step'), + (None, 'style'), + (None, 'summary'), + (None, 'suppress'), + (None, 'tabindex'), + (None, 'target'), + (None, 'template'), + (None, 'title'), + (None, 'toppadding'), + (None, 'type'), + (None, 'unselectable'), + (None, 'usemap'), + (None, 'urn'), + (None, 'valign'), + (None, 'value'), + (None, 'variable'), + (None, 'volume'), + (None, 'vspace'), + (None, 'vrml'), + (None, 'width'), + (None, 'wrap'), + (namespaces['xml'], 'lang'), + # MathML attributes + (None, 'actiontype'), + (None, 'align'), + (None, 'columnalign'), + (None, 'columnalign'), + (None, 'columnalign'), + (None, 'columnlines'), + (None, 'columnspacing'), + (None, 'columnspan'), + (None, 'depth'), + (None, 'display'), + (None, 'displaystyle'), + (None, 'equalcolumns'), + (None, 'equalrows'), + (None, 'fence'), + (None, 'fontstyle'), + (None, 'fontweight'), + (None, 'frame'), + (None, 'height'), + (None, 'linethickness'), + (None, 'lspace'), + (None, 'mathbackground'), + (None, 'mathcolor'), + (None, 'mathvariant'), + (None, 'mathvariant'), + (None, 'maxsize'), + (None, 'minsize'), + (None, 'other'), + (None, 'rowalign'), + (None, 'rowalign'), + (None, 'rowalign'), + (None, 'rowlines'), + (None, 'rowspacing'), + (None, 'rowspan'), + (None, 'rspace'), + (None, 'scriptlevel'), + (None, 'selection'), + (None, 'separator'), + (None, 'stretchy'), + (None, 'width'), + (None, 'width'), + (namespaces['xlink'], 'href'), + (namespaces['xlink'], 'show'), + (namespaces['xlink'], 'type'), + # SVG attributes + (None, 'accent-height'), + (None, 'accumulate'), + (None, 'additive'), + (None, 'alphabetic'), + (None, 'arabic-form'), + (None, 'ascent'), + (None, 'attributeName'), + (None, 'attributeType'), + (None, 'baseProfile'), + (None, 'bbox'), + (None, 'begin'), + (None, 'by'), + (None, 'calcMode'), + (None, 'cap-height'), + (None, 'class'), + (None, 'clip-path'), + (None, 'color'), + (None, 'color-rendering'), + (None, 'content'), + (None, 'cx'), + (None, 'cy'), + (None, 'd'), + (None, 'dx'), + (None, 'dy'), + (None, 'descent'), + (None, 'display'), + (None, 'dur'), + (None, 'end'), + (None, 'fill'), + (None, 'fill-opacity'), + (None, 'fill-rule'), + (None, 'font-family'), + (None, 'font-size'), + (None, 'font-stretch'), + (None, 'font-style'), + (None, 'font-variant'), + (None, 'font-weight'), + (None, 'from'), + (None, 'fx'), + (None, 'fy'), + (None, 'g1'), + (None, 'g2'), + (None, 'glyph-name'), + (None, 'gradientUnits'), + (None, 'hanging'), + (None, 'height'), + (None, 'horiz-adv-x'), + (None, 'horiz-origin-x'), + (None, 'id'), + (None, 'ideographic'), + (None, 'k'), + (None, 'keyPoints'), + (None, 'keySplines'), + (None, 'keyTimes'), + (None, 'lang'), + (None, 'marker-end'), + (None, 'marker-mid'), + (None, 'marker-start'), + (None, 'markerHeight'), + (None, 'markerUnits'), + (None, 'markerWidth'), + (None, 'mathematical'), + (None, 'max'), + (None, 'min'), + (None, 'name'), + (None, 'offset'), + (None, 'opacity'), + (None, 'orient'), + (None, 'origin'), + (None, 'overline-position'), + (None, 'overline-thickness'), + (None, 'panose-1'), + (None, 'path'), + (None, 'pathLength'), + (None, 'points'), + (None, 'preserveAspectRatio'), + (None, 'r'), + (None, 'refX'), + (None, 'refY'), + (None, 'repeatCount'), + (None, 'repeatDur'), + (None, 'requiredExtensions'), + (None, 'requiredFeatures'), + (None, 'restart'), + (None, 'rotate'), + (None, 'rx'), + (None, 'ry'), + (None, 'slope'), + (None, 'stemh'), + (None, 'stemv'), + (None, 'stop-color'), + (None, 'stop-opacity'), + (None, 'strikethrough-position'), + (None, 'strikethrough-thickness'), + (None, 'stroke'), + (None, 'stroke-dasharray'), + (None, 'stroke-dashoffset'), + (None, 'stroke-linecap'), + (None, 'stroke-linejoin'), + (None, 'stroke-miterlimit'), + (None, 'stroke-opacity'), + (None, 'stroke-width'), + (None, 'systemLanguage'), + (None, 'target'), + (None, 'text-anchor'), + (None, 'to'), + (None, 'transform'), + (None, 'type'), + (None, 'u1'), + (None, 'u2'), + (None, 'underline-position'), + (None, 'underline-thickness'), + (None, 'unicode'), + (None, 'unicode-range'), + (None, 'units-per-em'), + (None, 'values'), + (None, 'version'), + (None, 'viewBox'), + (None, 'visibility'), + (None, 'width'), + (None, 'widths'), + (None, 'x'), + (None, 'x-height'), + (None, 'x1'), + (None, 'x2'), + (namespaces['xlink'], 'actuate'), + (namespaces['xlink'], 'arcrole'), + (namespaces['xlink'], 'href'), + (namespaces['xlink'], 'role'), + (namespaces['xlink'], 'show'), + (namespaces['xlink'], 'title'), + (namespaces['xlink'], 'type'), + (namespaces['xml'], 'base'), + (namespaces['xml'], 'lang'), + (namespaces['xml'], 'space'), + (None, 'y'), + (None, 'y1'), + (None, 'y2'), + (None, 'zoomAndPan'), +)) + +attr_val_is_uri = frozenset(( + (None, 'href'), + (None, 'src'), + (None, 'cite'), + (None, 'action'), + (None, 'longdesc'), + (None, 'poster'), + (None, 'background'), + (None, 'datasrc'), + (None, 'dynsrc'), + (None, 'lowsrc'), + (None, 'ping'), + (namespaces['xlink'], 'href'), + (namespaces['xml'], 'base'), +)) + +svg_attr_val_allows_ref = frozenset(( + (None, 'clip-path'), + (None, 'color-profile'), + (None, 'cursor'), + (None, 'fill'), + (None, 'filter'), + (None, 'marker'), + (None, 'marker-start'), + (None, 'marker-mid'), + (None, 'marker-end'), + (None, 'mask'), + (None, 'stroke'), +)) + +svg_allow_local_href = frozenset(( + (None, 'altGlyph'), + (None, 'animate'), + (None, 'animateColor'), + (None, 'animateMotion'), + (None, 'animateTransform'), + (None, 'cursor'), + (None, 'feImage'), + (None, 'filter'), + (None, 'linearGradient'), + (None, 'pattern'), + (None, 'radialGradient'), + (None, 'textpath'), + (None, 'tref'), + (None, 'set'), + (None, 'use') +)) + +allowed_css_properties = frozenset(( + 'azimuth', + 'background-color', + 'border-bottom-color', + 'border-collapse', + 'border-color', + 'border-left-color', + 'border-right-color', + 'border-top-color', + 'clear', + 'color', + 'cursor', + 'direction', + 'display', + 'elevation', + 'float', + 'font', + 'font-family', + 'font-size', + 'font-style', + 'font-variant', + 'font-weight', + 'height', + 'letter-spacing', + 'line-height', + 'overflow', + 'pause', + 'pause-after', + 'pause-before', + 'pitch', + 'pitch-range', + 'richness', + 'speak', + 'speak-header', + 'speak-numeral', + 'speak-punctuation', + 'speech-rate', + 'stress', + 'text-align', + 'text-decoration', + 'text-indent', + 'unicode-bidi', + 'vertical-align', + 'voice-family', + 'volume', + 'white-space', + 'width', +)) + +allowed_css_keywords = frozenset(( + 'auto', + 'aqua', + 'black', + 'block', + 'blue', + 'bold', + 'both', + 'bottom', + 'brown', + 'center', + 'collapse', + 'dashed', + 'dotted', + 'fuchsia', + 'gray', + 'green', + '!important', + 'italic', + 'left', + 'lime', + 'maroon', + 'medium', + 'none', + 'navy', + 'normal', + 'nowrap', + 'olive', + 'pointer', + 'purple', + 'red', + 'right', + 'solid', + 'silver', + 'teal', + 'top', + 'transparent', + 'underline', + 'white', + 'yellow', +)) + +allowed_svg_properties = frozenset(( + 'fill', + 'fill-opacity', + 'fill-rule', + 'stroke', + 'stroke-width', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-opacity', +)) + +allowed_protocols = frozenset(( + 'ed2k', + 'ftp', + 'http', + 'https', + 'irc', + 'mailto', + 'news', + 'gopher', + 'nntp', + 'telnet', + 'webcal', + 'xmpp', + 'callto', + 'feed', + 'urn', + 'aim', + 'rsync', + 'tag', + 'ssh', + 'sftp', + 'rtsp', + 'afs', + 'data', +)) + +allowed_content_types = frozenset(( + 'image/png', + 'image/jpeg', + 'image/gif', + 'image/webp', + 'image/bmp', + 'text/plain', +)) + + +data_content_type = re.compile(r''' + ^ + # Match a content type / + (?P[-a-zA-Z0-9.]+/[-a-zA-Z0-9.]+) + # Match any character set and encoding + (?:(?:;charset=(?:[-a-zA-Z0-9]+)(?:;(?:base64))?) + |(?:;(?:base64))?(?:;charset=(?:[-a-zA-Z0-9]+))?) + # Assume the rest is data + ,.* + $ + ''', + re.VERBOSE) + + +class Filter(base.Filter): + """Sanitizes token stream of XHTML+MathML+SVG and of inline style attributes""" + def __init__(self, + source, + allowed_elements=allowed_elements, + allowed_attributes=allowed_attributes, + allowed_css_properties=allowed_css_properties, + allowed_css_keywords=allowed_css_keywords, + allowed_svg_properties=allowed_svg_properties, + allowed_protocols=allowed_protocols, + allowed_content_types=allowed_content_types, + attr_val_is_uri=attr_val_is_uri, + svg_attr_val_allows_ref=svg_attr_val_allows_ref, + svg_allow_local_href=svg_allow_local_href): + """Creates a Filter + + :arg allowed_elements: set of elements to allow--everything else will + be escaped + + :arg allowed_attributes: set of attributes to allow in + elements--everything else will be stripped + + :arg allowed_css_properties: set of CSS properties to allow--everything + else will be stripped + + :arg allowed_css_keywords: set of CSS keywords to allow--everything + else will be stripped + + :arg allowed_svg_properties: set of SVG properties to allow--everything + else will be removed + + :arg allowed_protocols: set of allowed protocols for URIs + + :arg allowed_content_types: set of allowed content types for ``data`` URIs. + + :arg attr_val_is_uri: set of attributes that have URI values--values + that have a scheme not listed in ``allowed_protocols`` are removed + + :arg svg_attr_val_allows_ref: set of SVG attributes that can have + references + + :arg svg_allow_local_href: set of SVG elements that can have local + hrefs--these are removed + + """ + super(Filter, self).__init__(source) + + warnings.warn(_deprecation_msg, DeprecationWarning) + + self.allowed_elements = allowed_elements + self.allowed_attributes = allowed_attributes + self.allowed_css_properties = allowed_css_properties + self.allowed_css_keywords = allowed_css_keywords + self.allowed_svg_properties = allowed_svg_properties + self.allowed_protocols = allowed_protocols + self.allowed_content_types = allowed_content_types + self.attr_val_is_uri = attr_val_is_uri + self.svg_attr_val_allows_ref = svg_attr_val_allows_ref + self.svg_allow_local_href = svg_allow_local_href + + def __iter__(self): + for token in base.Filter.__iter__(self): + token = self.sanitize_token(token) + if token: + yield token + + # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and + # stripping out all attributes not in ALLOWED_ATTRIBUTES. Style attributes + # are parsed, and a restricted set, specified by ALLOWED_CSS_PROPERTIES and + # ALLOWED_CSS_KEYWORDS, are allowed through. attributes in ATTR_VAL_IS_URI + # are scanned, and only URI schemes specified in ALLOWED_PROTOCOLS are + # allowed. + # + # sanitize_html('') + # => <script> do_nasty_stuff() </script> + # sanitize_html('Click here for $100') + # => Click here for $100 + def sanitize_token(self, token): + + # accommodate filters which use token_type differently + token_type = token["type"] + if token_type in ("StartTag", "EndTag", "EmptyTag"): + name = token["name"] + namespace = token["namespace"] + if ((namespace, name) in self.allowed_elements or + (namespace is None and + (namespaces["html"], name) in self.allowed_elements)): + return self.allowed_token(token) + else: + return self.disallowed_token(token) + elif token_type == "Comment": + pass + else: + return token + + def allowed_token(self, token): + if "data" in token: + attrs = token["data"] + attr_names = set(attrs.keys()) + + # Remove forbidden attributes + for to_remove in (attr_names - self.allowed_attributes): + del token["data"][to_remove] + attr_names.remove(to_remove) + + # Remove attributes with disallowed URL values + for attr in (attr_names & self.attr_val_is_uri): + assert attr in attrs + # I don't have a clue where this regexp comes from or why it matches those + # characters, nor why we call unescape. I just know it's always been here. + # Should you be worried by this comment in a sanitizer? Yes. On the other hand, all + # this will do is remove *more* than it otherwise would. + val_unescaped = re.sub("[`\x00-\x20\x7f-\xa0\\s]+", '', + unescape(attrs[attr])).lower() + # remove replacement characters from unescaped characters + val_unescaped = val_unescaped.replace("\ufffd", "") + try: + uri = urlparse.urlparse(val_unescaped) + except ValueError: + uri = None + del attrs[attr] + if uri and uri.scheme: + if uri.scheme not in self.allowed_protocols: + del attrs[attr] + if uri.scheme == 'data': + m = data_content_type.match(uri.path) + if not m: + del attrs[attr] + elif m.group('content_type') not in self.allowed_content_types: + del attrs[attr] + + for attr in self.svg_attr_val_allows_ref: + if attr in attrs: + attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)', + ' ', + unescape(attrs[attr])) + if (token["name"] in self.svg_allow_local_href and + (namespaces['xlink'], 'href') in attrs and re.search(r'^\s*[^#\s].*', + attrs[(namespaces['xlink'], 'href')])): + del attrs[(namespaces['xlink'], 'href')] + if (None, 'style') in attrs: + attrs[(None, 'style')] = self.sanitize_css(attrs[(None, 'style')]) + token["data"] = attrs + return token + + def disallowed_token(self, token): + token_type = token["type"] + if token_type == "EndTag": + token["data"] = "" % token["name"] + elif token["data"]: + assert token_type in ("StartTag", "EmptyTag") + attrs = [] + for (ns, name), v in token["data"].items(): + attrs.append(' %s="%s"' % (name if ns is None else "%s:%s" % (prefixes[ns], name), escape(v))) + token["data"] = "<%s%s>" % (token["name"], ''.join(attrs)) + else: + token["data"] = "<%s>" % token["name"] + if token.get("selfClosing"): + token["data"] = token["data"][:-1] + "/>" + + token["type"] = "Characters" + + del token["name"] + return token + + def sanitize_css(self, style): + # disallow urls + style = re.compile(r'url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style) + + # gauntlet + if not re.match(r"""^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$""", style): + return '' + if not re.match(r"^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style): + return '' + + clean = [] + for prop, value in re.findall(r"([-\w]+)\s*:\s*([^:;]*)", style): + if not value: + continue + if prop.lower() in self.allowed_css_properties: + clean.append(prop + ': ' + value + ';') + elif prop.split('-')[0].lower() in ['background', 'border', 'margin', + 'padding']: + for keyword in value.split(): + if keyword not in self.allowed_css_keywords and \ + not re.match(r"^(#[0-9a-fA-F]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$", keyword): # noqa + break + else: + clean.append(prop + ': ' + value + ';') + elif prop.lower() in self.allowed_svg_properties: + clean.append(prop + ': ' + value + ';') + + return ' '.join(clean) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py new file mode 100644 index 00000000..0d12584b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py @@ -0,0 +1,38 @@ +from __future__ import absolute_import, division, unicode_literals + +import re + +from . import base +from ..constants import rcdataElements, spaceCharacters +spaceCharacters = "".join(spaceCharacters) + +SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) + + +class Filter(base.Filter): + """Collapses whitespace except in pre, textarea, and script elements""" + spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) + + def __iter__(self): + preserve = 0 + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag" \ + and (preserve or token["name"] in self.spacePreserveElements): + preserve += 1 + + elif type == "EndTag" and preserve: + preserve -= 1 + + elif not preserve and type == "SpaceCharacters" and token["data"]: + # Test on token["data"] above to not introduce spaces where there were not + token["data"] = " " + + elif not preserve and type == "Characters": + token["data"] = collapse_spaces(token["data"]) + + yield token + + +def collapse_spaces(text): + return SPACES_REGEX.sub(' ', text) diff --git a/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py b/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py new file mode 100644 index 00000000..d06784f3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py @@ -0,0 +1,2795 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import with_metaclass, viewkeys + +import types + +from . import _inputstream +from . import _tokenizer + +from . import treebuilders +from .treebuilders.base import Marker + +from . import _utils +from .constants import ( + spaceCharacters, asciiUpper2Lower, + specialElements, headingElements, cdataElements, rcdataElements, + tokenTypes, tagTokenTypes, + namespaces, + htmlIntegrationPointElements, mathmlTextIntegrationPointElements, + adjustForeignAttributes as adjustForeignAttributesMap, + adjustMathMLAttributes, adjustSVGAttributes, + E, + _ReparseException +) + + +def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse an HTML document as a string or file-like object into a tree + + :arg doc: the document to parse as a string or file-like object + + :arg treebuilder: the treebuilder to use when parsing + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :returns: parsed tree + + Example: + + >>> from html5lib.html5parser import parse + >>> parse('